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に移行させつつ。という戦略をとろうかと思っています。

Mechanizeでスクレイピング!JSONデータを出力!

ワックスかける!ワックスとる! ベストキッドという映画をご存知でしょうか。 有名な映画なのでご存知の方も多いでしょう。主人公の男の子が、ミヤギから空手を教わる時にいろいろな修行をするのですが、その中でも有名なのが ワックスかける!ワックスとる! というものがあります。このフレーズだけ知ってる!という人も居るかもしれませんね。 ひたすらこのワックスかける!ワックスとる!という動作を繰り返す修行(だったと思う)なのですが、この動作を繰り返しているうちに気づいたら空手が強くなってる!という話でした。 プログラムもある程度のレベルまではひたすら書いていると上達すると思うので、ベストキッドのように反復練習もいいのではないかな?と思ってこのタイトルにしてみました。 スクレイピングする! JSONで出す! Mechanizeを使わない方法やループの方法も色々とありますので、いろんな方法で繰り返しているうちに色々と上達するでしょう。たぶん。 ではやってみよう Mechanizeを使ってスクレイピングをするところまでは以前やりましたので、今回はJSONに出すところをやろうかと。 前回のネタ Mechanize+Rubyを使ってみるテスト さくらのメンテ・障害情報を拾ってくる 今回はロリポップもやってみようと思います。 視覚的にもスクレイピングとデータ取得は別にした方が分かりやすいので、情報を取得するクラスと、利用して何かを出力するクラスという形がいいのではないかと思います。 今回は情報を取得するクラスということで。 先に言っておくと内容は意味がないよう〜なもので、お題がメンテナンスや障害情報なので、各ホスティング会社のWebを見たほうがあきらかに良いです。 ガッツリ作りこめばもっとJSONのデータも細かくできそうですが、それなりに手を抜いていますのでその辺はご了承くださし。 これはあくまで練習です。 もう1度繰り返します、これはあくまで練習です。 さくらバージョン 実行結果 ロリポップバージョン コメント欄にも書いていますが、一応それぞれのデータがとれているのですが、改行がされていないのでループでとれているのかどうか謎です。 実行結果 おわりに そもそも反復練習は、Sinatraでのウェブアプリケーションを繰り返していたんですが、データをとるところは別にやってもいいかなと思ってこの部分だけでアップすることにしました。 VPSの環境に近い環境をやっとこさローカル環境にも作って、Windows+Ubuntuで作っていた環境からMacへの移行もようやく終わったので、新しくVPSやOpenstackの作成にもとりかかれるようになりました。出来上がったらまた日記のネタにしようかと思いますのでよろしく。 宣伝 Qiitaに登録したはいいけれど、どう使おうかなぁと悩んでいたところ、プログラム関連で日記に書くには難しいようなネタや、スニペット置き場的に使うのがちょうど良いかなと。 同じ内容で別の言語で書くというのも多分はじめてですが、載せてみたらレスも頂いて、個人的には濃い内容になりました。やっぱりコミュニティは他の方の目につくのが多い分レスもいただけますね。良いことです。 と言っても、このブログとはやはり別物扱いにしていきたいので宣伝だけ!ってことで。 良かったら覗いてみてください。 Ruby – ベンチマークの簡易スクリプト – Qiita: takekentw