Category Archives: programming

あの日見たLambdaの書き方を僕はまだ知らない

Javaだったから、という理由で選んだ本を買ったまでは良かったんだけど、なんか私の知ってるのと違うだ! なんてことになったんで、読んで調べてみると、これラムダという。 Java8になって、関数型インターフェースはラムダ記法で置き換えることができるようになった。 関数型インターフェースとは定義されている抽象メソッドが1つだけあるインターフェースのこと。 だそうだ。 コードで書くとこんな感じ。 普通に実装するばやい、こんな風になるだ。 ラムダ記法にすると、こんな感じになるだ。 短かっ! そして、さらにこう書けた。 いろいろなサイトを見て回って文章とコードを読んでもいまいちわからなかったんだけど、実際に自分の手と頭を使ってコードを書くと頭に入ってくれるだね。 サンプル 実行結果 ナウい言語はこういう書き方に慣れてないと読みづらいので、練習するだよ。

Androidの開発でC++のコードを使うには

最後の更新からずいぶんと日が空いてしまいました。久しぶりの更新です。 英語のアウトプットの方はMy Teacherが別のところでCheckしてくれることになったので、こっちは昔の感じで再構築していこうかと思います。 やっぱり英語+ITの話題となると、ちょっと敷居も高くなっちゃってなかなか手が動かなかなったんですが、ただの英語の日記だとわりとサクサクと書けますね。それに添削もしてくれるのでやりがいもあると。 閑話休題。 再構築の1発目はAndroid。 Androidでググっていると、ネイティブコードとかいう言葉をよく目にすることがあるかもしれません。 C/C++がそれにあたるそうです。 使い方ですが、Android StudioのSDKツールでLLDB、CMake、NDKという3個のコンポーネントを追加してください。 横着な人はプロジェクト作成のときにこの部分 Include C++ Suportにチェックを入れて作業を進めて行くと、〇〇がないからインストールしなよ! って出て来るので、それで入れて進めても大丈夫です。 さて、MinimumSDKとかどうしよかなーとか悩むとこですが、テストなのでそれは置いておいてドンドン進めて行くと、普段見ないファイルが少し増えているぞと。 cppディレクトリにnative-lib.cpp、External Build FilesにCmakeLists.txt というファイルがあるね。 C/C++を使う方法ですが、ndk-build(古い)を使う方法とCMake(新しい)を使う方法があるようで、今回はCMakeを使う方法です。 これらの具体的な仕組みは分かりませんが、これをつかって規則に沿って進めていけばうまくビルドしてくれるようです。 便利なもんだ。 プロジェクトが出来上がって何も手を加えずにビルドしてみてみると、native-lib.cppにあるString設定されている文字列がディスプレイに表示されていることでしょう。 いつものJavaのMainActivityを見ると というところがあります。nativeで宣言して、下の3行でCを呼んでる感じだね。 C++のコードはnative-lib.cppに書くとよさそうです。 では、ここで積み本になっていた技術評論社:C++クラスと継承完全制覇を取り出してC++のコードを書いてみよう。 と、その前にルールをチェックやで。 native-lib.cpp メソッドはこの形式で、第1引数、第2引数はこれで固定らしい。追加は第3から。 あとはDEMO?というか作りたてのコードにあったようにC++内部ではstd::stringで、返す時にはJstring。 これはStringだけども、このような感じのルールらしい。 プロジェクトを生成してできるコードを見るとそのようになっています。 では技術評論社:C++クラスと継承完全制覇のList1-1のコードから抜き出してビルドします。 こんな感じになっています。 ビルドすると 出たけどちょっと寂しい。 ではこの勢いでC++の勉強をしていこうと思います。 せっかく本買ったしなあ、とけっこう貧乏性なんだな。 参考にしたサイト させす技術メモ(自家用)Android Studio 2.2でC++のコードを使う hcreer’s diary Android Studio NDKを使う

Trying to use API of Google Analytics

I use the GUI the page view and the number of hit that we have confirmed, and it can also be checked using the Google’s API. Let’s try to use the API Client Library for Ruby. Well, what would you do? Please look at this web site. Googleアナリティクスのレポートをrubyから取得する http://blog.naberon.jp/post/2013/08/25/google-analytics-api/ ※ translate.google : Get a Google Analytics report from ruby It is roughly like this! you terribly sloppy. more seriously. OK. Please let me add a few information. I will try require. I’ll prepare a client_secrets.json for Librarie. make a Instance. Authenticate. make a requests parameters. ※Parameter Look here https://developers.google.com/apis-explorer/?hl=ja#p/analytics/v3/ something like that… Oops. One more thing. On the GUI, the […]

CUI環境でCapybaraを使うときのあれこれ

04/28ちょこっと追記と数カ所修正しました。 What’s that? Capybaraはウェブシステムのテストを補助するRubyのライブラリです。 Mechanizeでほとんどのサイトはクロールできますが、JavaScriptなサイトに対してはJavaScriptが解釈できるようなものでクロールしないといけません。 とくに真新しい単語が入っている訳でもなく、これを読んだだけだと別に何もピンと来たりはしないかもしれない。 GUI環境なのかCUI環境なのかという問題は、それと同じくらい普段は意識しないことだと思いますが、何も明記していない場合はGUI環境なんだよ〜というのは、もしかすると初めてだったかもしれないくらい。 今回はわりと大きな問題だったようです。 インストール 参考サイト github.com/thoughtbot/capybara-webkit CapybaraとCapybara-webkitというものをインストールします。 Gemでインストール可能ですが、Capybara-webkitのインストールにはQT(キュート)というものが必要なようで、まずはそこから。 Capybara-webkitはCapybaraが利用するドライバーのうちの1つで、他にもRackTest、Poltergeist、Selenium などがあります。 参考書籍だとPoltergeist+PhantomJSが人気らしく、書籍の中でもこの組み合わせでの説明になってます。ウェブの情報もそれなりに多いCapybara-webkitで進めてみたいと思います。 その辺りは置き換えて読んでいく必要がありますが、まぁ何とかなります。 では、参考サイトとCapybara-webkitのインストールに戻りませう。 ザーッとマニュアルと読んでみると、その時に使っていたOSがCentos6だったのでRHELのところが目についた。 ってことで という感じに、あまり深く考えずにRHEL16のところで進めていくと。 っつーか、これだとダメみたい。 Capybara-webkitのインストールは失敗しました。 と出ます。 この件から得る教訓は、急がば回れということらしい。 気を取り直してCent6の手順でインストール RHELのところから下に下がって良く見てみるとCentos6の手順がちゃんと書いてありました。 この辺は参考サイトと同じです。 選択肢の部分は参考サイトから少し変わった様子? さきほどの教訓がぜんぜん活かされていない気がしますが、Yesを選択してみました。 しばらく待っていると以下のメッセージが表示されました。どうやら残りは普通に同じように進められそうですね。 あとはgmakeでフィニッシュ。 なんですが、Gmakeがめちゃ長いので時間がない時は避けておくのをオススメ。 できた〜!と思ったら? 簡単なテストスクリプトを実行してみると ここでようやく参考にしていたサイト全てがGUI環境を前提にしていたことに気づいた。 ・・・なんということでしょう。 CUIの場合はHeadlessとXvfbが必要ということらしい。 本来?という言い方はおかしいですが、本来はウェブサイトのテストに使ってたものらしいので、GUIを前提としていてもおかしくないのかなぁと振り返ってみるとそう思ったりして。 エラー内容が変わる。 どうにもこうにもX環境がない場合は、Xvfbとやらを使えということらしい。 Headlessという単語は以前にも見覚えがあり Vagrant+VirtualBoxとpackerで検証環境を作ろう VirtualBoxのテストでCUIだけで操作したいときはHeadless=Trueというオプションを使っていました。そんな感じということですね。 ではスクリプトを使ってテストしてみます Googleに接続して画面キャプチャを取るだけのスクリプトです。 無事に動作したようです。 ではサイバーダック君を使って、サーバーとSFTPで繋いでDLしてチェックしてみませう。 04/28追記ここから 今回はこれで終わろうと思いましたが、2回に分けようと思っていた事がそれほど大きくなさげなので一緒にしてしまいます。 DSLタイプとインスタンスメソッドタイプ 使えるメソッドは同じなようで少し違っているみたいですが、細かいとこは置いておいて視覚的にはDSLの方が綺麗かな? 参考書籍のAmazonのサンプルを参考にしてCapybara-webkitの場合で、DSLを使ったタイプとインスタンスメソッドを使った2タイプで書いてみました。 最初に両方やってみてDSLの方が良さそうなのでこの後はずっとDSLで進めています。書籍もDSLですしね。こちらはCapybara-webkitで進めているとこもそれほど気にならないで進めれています。 インスタンスメソッドを使ったケース DSLを使ったケース Xpathなんかも使ってスクレイピングできるようなので、Mechanizeで蓄えていたことも使えそうですね。 全く関係ない話ですが 今回からKobitoを使って下書きしてマークダウン式にしてみました。 参考書籍 Rubyによるクローラー開発技法 佐々木拓郎 るびきち 著 ソフトバンククリエイティブ

Ruby関連の記事へのアクセスが少ない件でロジックツリーを作ってみた

新しい事を知ったら使ってみたくなるじゃない? にんげんだもの たけお GPDCAってものもあるらしいけれど、まずはこっちだ。 ロジックツリーのこれはWhyツリーというものの(つもり)です。ギャグ要素も含みつつそれなりにちゃんと考えつつ、Excelで作ってみました。テーマは何でも良かったんだけれど、多少悩んでいたことなので。 Ruby関連の記事へのアクセスが少ない件 です。 8個の問題が出来たので1個ずつ考えてみます。 Ruby力がない Ruby力(ちから)がない。のはまだまだ上げていくつもりなのですが、Ruby力がつけばアクセス数があがるか?というと必ずしもそうではないだろうと思います。ただRuby力っていうとアクセス数ってものに関係なく、これから色々やっていく上で必要なものなので、この辺の事はあまり考えずに次いってみよう〜。 題材が良くない これは大きな問題のような気がします。今までTwitter、メンテナンス情報、Redmine、Zabbixなどなどやってきましたが、どれもサンプルを使って試してみましたってレベルのものばかり。やっとこさ使えるようになりました〜!という報告が評価されないのはそりゃそうだってもんだ。 ただ、何番煎じだ〜と思えるような内容でも、ユニークなものであればそれは評価も高いんだな。 このテーマはなかなか奥が深いのだな。 題材はさておき中身もチラ裏程度なので、その辺を意識した方がいいかもしれない。 書き込みが足りない 書き込み*センス=熟練度 であるからして、こればっかりはひたすら書くしかないんだぜ。ヘイヘイ。 ドキュメントを見て書くことが少ない ドキュメントを見て書くことが少ないと付けましたが、次の問題点の「まずGoogle検索という思考プロセス」と話がかぶっているので、ドキュメントを見る機会が少ない > 慣れない > 余計に見ない > 慣れない。というスパイラルというテーマで考えます。 こればっかりはひたすら読むしかないんだぜ。ヘイヘイ。でまた片付けられてしまいそうですが、流石に私の中の正義というものが許さないです。崖っぷちまで追い込まれてですが。 だってGoogle検索でだいたいの答えが出るんだもん! というのが理由の中の大きな1つではあります。しかし、Google検索で解決しない。または解決までに時間がかかる問題にぶち当たった時に、ドキュメントやマニュアルに慣れていないと解決までの時間がかかってしまいますのです。 趣旨はずれますが、コードリーディングもその辺の問題点を抱えることになります。 個人の遊びレベルを超えたいなら、この辺のスキルは必須だろうなぁ。 まずGoogle検索という思考プロセス。 これは決して悪いことではないと思うものの、あまり良くないと思う気持ちも半分ほど。 何でもかんでもGoogle検索していると、それは昔々の教えて君に限りなく近い存在なんじゃないかと思ったりもする。Google師匠が何でも答えているのと同じに思えるからね。 Googleを使うべき問題と、ドキュメントを読むべき問題、自分で解答を作るべき問題を明確にすると解決できる問題だと思う。 そもそも書いているスクリプトの数が少ない。 うーん。これは記事の数ってことにすると、それだとPythonの記事にはそれなりのアクセス数があるので、サンプルコードの利用が多いという問題に対するWhyになっていない。 書いた数が少ないから、それによりRuby力がないという問題があったとしても、Pythonの件があるのでWhyになっていないですね。これはミステイクです。 Pythonの記事は2・3個くらいしかありませんが、検索上位にくるキーワードもあるので、検索ワードに対して良い内容になっているんでしょう。 日本語環境ではRubyの記事のほうが圧倒的に多いってことも関係しそうだけどね。 SEOを知らない 知らないですが、あまり知りたいという気持ちも少なくて、たまーに関連記事を読む程度。仕事で必要にでもならない限りガッツリ取り組むことはなさそうですが、アクセス数を上げたいんだったら学ぶべき事でもあるんだよね。ぐふぅ。 っていうかSEOの勉強をしてない ええ、していませんよ。 気が向いたらやりますよ〜だ! まとめ 一応は取り組むべき問題は見えたので、それなりの効果を上げることができたと思います。優先順位を付けてガッツリと半期ごとのスケジューリングしてってことまでは流石にやらないですが、伸び伸びと進めていこうかなと。

OAuthでTwitterAPIのSearch、Trend、Postを利用するスクリプト

ちょいと昔話 2次元の話ではなくてリアルな話で、学生時代にプログラミングセンスの塊のような人を見ていたので、自身の成長速度がいまいちな事も納得しているし、多くを求めてはいないのだけれど、やはりなかなか上手くスクリプトが書けないでいると正直しんどかったりする(´ω`)‥トホー こないだの村上さんのところで、文章はとにかく練習です。という話があり、プログラミングも言語だし通じるところはあるよなぁと思ったり。村上春樹さんの作品は本当の戦争の話をしようしか読んだ事がなく、その作品も訳者としてのものなので原作はまだ読んだ事がなかった。積み本がまだ幾らか残っているので次回の周期にでも手を出そうかな。ε-(/・ω・)/ 中田英さんと対談してたよなぁってそれは村上龍さんだったんだね。つい最近まで勘違いしていたのはちょっと内緒の話だ。Σ(・ω・;||| 今回はOAuth 最近はMechanizeばかりだったので、WebAPIを使うのは久しぶり。Mechanizeも認証は可能だけれどTwitterAPIを利用するので認証をOAuthで済ませてメソッドで分けようという魂胆です。 initializeはインスタンスを作ったときに必ず実行される部分になります。ここで認証します。initializeの意味的には初期化ということでした。 昔さくらのクラウドのAPIを題材にしたときに、自分のキーをウェブに吊るすという大チョンボをやらかして若干トラウマなので、ソースコードは最後にまとめて載せますw 即再発行したのでキャッシュがどこかに残っていても大丈夫です。 作成したメソッドは3種類 ・ワード検索のgetword ・トレンド検索のtrend ・ポストのwordpost 機能はそのままで、いろいろ作りこむためのひな形ようにしているつもりです。 mainのメソッドで選択する形をとっているのですが、一人でやっているとこの辺をどうしたらいいのかなかなかうまくまとまらないですね。 参考サイト RubyでTwitterAPIを叩いてみたら彼女が… | Septeni Engineers’ Blog | セプテーニ エンジニアブログ: Trendはほぼそのままになっています…Σ(・ω・;||| ソース ソースです。※なぜかインデントが…(ω・`))(´・ω・`)(( ´・ω) いま実行するとこんな結果に。 getword trend POST は省略して実験でPOSTしたのを。 書き込みテスト — たけけん (@TakekenTw) 2015, 3月 11 まとめ GUIが苦手なので、ひとまずCUIで基本を作ってからGUIに移行させつつ。という戦略をとろうかと思っています。