Hatena::ブログ(Diary)

toriimiyukkiの日記 RSSフィード Twitter

2013年10月30日

PHP初級者、中級者に読んでほしいPHPエンジニア養成読本

みなさんお久しぶりです。みゆっきです。

PHPエンジニア養成読本」の執筆者の一人である小山さん(@koyhoge id:koyhoge)からご恵贈いただきました。

f:id:toriimiyukki:20131029122328j:image:w480

せっかくなので章ごとの感想を書いていきます。


巻頭企画 PHP最前線 〜最新動向といまどきの開発技法をチェック!

PHP5.3で追加された名前空間から、PHP5.5で追加されたジェネレータ(yield)まで、ここ最近のPHPの動向がまとめられています。

追加された書く機能に関してもソースコード付きでわかり易く解説がされています。

特集1 [最新]ライブラリフレームワーク活用の基礎知識 Composer+Symfony/FuelPHP/CakePHP/注目株

PHPでの主要フレームワークからマイナーなフレームワークを紹介しています。主要なフレームワークの3つでは、各フレームワークのパターンや構造についてサンプルコードがついた解説がありあます。それぞれ見開き2ページ程なので興味を持ったら調べるといった感じです。

ちなみに、私はFuelPHP推し(でも使わずにオレオレフレームワークで参考にしている)です、皆さん何推しなんでしょうか。

特集2 現場で役立つ PHPエンジニアの開発術 〜テスト/ソースコード管理/開発環境/品質向上

PHPUnitでの自動テスト、GitSubversionでのバージョン管理、エディタなどPHPでの開発を行う上でサポートしてくれるツールなどの紹介や設定方法などが紹介されています。

PHPUnitに関しては結構量が多く参考になります。

特集3 PHPエンジニアのための クラウドサービス活用術 〜AWS,Pagoda Boxを使って学ぶ

IaaSのAWSから、LAMP環境を提供してくれるPaaSなPagoda Boxまで、PHPが動作できる人気クラウドサービスでの設定、環境構築の方法を学ぶことができます。

特別企画

PHPの基本的な文法が紹介されています。基本的なことが多いですが、他の言語を使っていてPHPにも挑戦してみたい!という人はここを読んでみるといいと思います。


読者の対象としては、他言語でプログラミングの知識がある人〜PHPの中級者向けといった感じです。

全体的に、PHPでの開発に関しての情報を浅いけども広い範囲で網羅している一冊だと思います。


PHPを初めてサービスを作ろうと思ってる人、とりあえず作った人に読んでほしい一冊です!


PHPエンジニア養成読本 〔現場で役立つイマドキ開発ノウハウ満載! 〕 (Software Design plus)
新原 雅司 原田 康生 小山 哲志 田中 久輝 保科 一成 大村 創太郎 増永 玲
技術評論社
売り上げランキング: 15,976

2013年05月07日

FILCOの青軸キーボードを水で丸洗いしたけど大丈夫だった件

お久しぶりです。

ブログ、5ヶ月ぶりですね…書きたい記事は山ほどあったんですが時間の都合とかでかけませんでした…


まーそんなわけで昨日、ちょっとキーボードを見たら間にホコリとかゴミが入ってて普通ならエアダスターでシューっとするのですが、さすがに1年も使ってるとそれだけじゃ取れないようなゴミ(ひっついていたり、髪の毛が引っかかってるなど)があるわけです。


f:id:toriimiyukki:20130507090842j:image:left

最近はLogicoolとかから丸洗いできるキーボードが出てますが、やはり自分の打ちやすいキーボードがいいですよね

http://www.logicool.co.jp/ja-jp/product/washable-keyboard-K310





知り合いとかではCPUファンとかマザーボードまで水洗いしている人もいますが、ここで紹介する内容でいかなる損害が発生しても責任はおえませんので気をつけてください…


さっそく

さっそくお掃除するのでキートップを外していきます。おそらくFILCOキーボードを普通に買ったなら泡立て機のようなキーを取り外す器具が付いているのでそれでキーを引っ掛けて垂直に取り外していきます。

(ここで解体まえの写真をとっておくと便利です、以外に記号系とか機能系のキーがどこだかわかんなくなります。)

自分はAmazonで確認しましたけどね

f:id:toriimiyukki:20130506115218j:image:w480

まずは

まずはキートップを洗っていきましょう。自分は真水でかき回すだけでしたがキートップは綺麗に見えて汚い部分なのでなにか洗剤を使っても良かったかもですね。

f:id:toriimiyukki:20130506115838j:image:w480

いよいよ

いよいよ、運命の時です。でも、ここまで来たのだから。。。という思いで一気に行きましょう。

といってもそんなに長くは流さず水をだしてひっついてるものを雑巾とかで拭き取りすぐに止めました。

f:id:toriimiyukki:20130507090846j:image:w480

一応

一応水で丸洗いした後に中の水を全部出した後エタノールをばぁーっと掛けましょう、消毒の意味もありますがそれより水を蒸発させるためです。

消毒用のエタノールですがおよそボトル半分を掛けました。

f:id:toriimiyukki:20130506120429j:image:w480

乾燥タイム

まずは、キーボードを一点で立つような状態で持つと中に入っている水がどばどば出てきます。


その後は一気に乾燥をさせます。といってもドライヤーで入念に風邪を当てていきます。

これでもか…これでもか…というくらいに当てていきます。


これでもいいかなーというくらいにエアダスターでキーの近くの穴っぽいところに風邪を入れると水がちょっと出てきますのでそれをまたドライヤーで吹き飛ばします。

およそ30分くらいドライヤーしてた気がします。

f:id:toriimiyukki:20130507090848j:image:w480

干す

あとは一点に水が集中するように傾けて、どこかに干しておきましょう。

自分の場合は室内でしたがライトを当てて熱を与えるようにしました。

いよいよ

いよいよ運命の時です。と、その前にドライヤーでもう一度乾かしておきましょう。

ドライヤーが終わったらとりあえずUSBをつなげてみて動作を確認します。


ここでホッとした結果がでたらそのままキートップをつけていきます。

f:id:toriimiyukki:20130506230421j:image:w480


そして綺麗な青軸ちゃんに生まれ変わりました!

f:id:toriimiyukki:20130507090849j:image:w480




おしまい

(まだ中にサビが残ってて今後…みたいな可能性はあるんですけどね…)


ちなみに使ってるのはこれです。

http://www.amazon.co.jp/dp/B004X4PEA0?tag=nicocast-22

アソシエイトついてるのでよかったらここから是非)

2012年12月11日

Raspberry Pi(ラズベリーパイ)が届いたよ!

先日、MakerFaireTokyo2012(MFT2012)にて出展していた際、あのRaspberry Piを手にしている人がいたので、いいなぁ〜と話を聞いていたところなななんと10日程度で手に入るという方法があるというのに驚き。


下記のブログを参照とのこと。

2012/10/25 ■ いつまでも届かないRaspberry Piは一手間かけると10日で新型が手に入る

http://blog.mobilehackerz.jp/2012/10/raspberry-pi10.html

自分も、RSうんこンポーネンツさんにて注文しているのですが、

7/20に注文、10/17に発送予定とされ、9/7に12/25に発送予定と変わりました。


クリスマスに予定があるからうけとれないので、一刻も早くRaspberry Piが欲しいので、上記の方法で注文して見ることに。

ModMyPiのサイトで上下ケースの色を選んでポチポチ、Paypalを選択してポチポチして注文完了。

そんなわけで、12/2にModMyPiで注文したRaspberry Piは12/3に発送され、12/9に届きました。


なんと、ちょうど一週間で届きました!すごい!ModMyPiすごい!


\(≧∀≦)/

f:id:toriimiyukki:20121211235611j:image:w360

f:id:toriimiyukki:20121211235612j:image:w360

f:id:toriimiyukki:20121211235613j:image:w360

届いてから昨日、今日といじり倒してるのですが、結構つかえます。すごい!Raspberry Piすごい!

てなわけで、ModMyPiにてRaspberry Piをもう一つ買ってしまったのはナ・イ・ショ。

(あれこれ3つ手持ちになるのでは…)


Raspberry Piでごにょごにょしてるのもまた記事にしますね。

2012年12月02日

Air for AndroidでURIインテント(スキーマ)をするANE(ActionScriptNativeExtensions)を作りました

12月1日、2日と、MakerFaireTokyo2012(MFT2012)に出展していました。

http://jp.makezine.com/blog/2012/12/maker_faire_tokyo_2012.html


そこでこんなものを展示していました。

D


MFTの話はおいておいて、そこでAir for Androidを使いアプリをつくりました。

Google Clound Messeging for Anrdoidを使い、プッシュ受信時に自身の画面を開くアプリを作りたかったのですが、

NativeApplicaton.nativeApplication.active();

とか使うと、最前面に出てきそうな気がするのですが、そうは行きません。

Air for Androidで行うGoogle Clound Messeging for Androidについてはこちらの記事から、ANEの導入の仕方などを説明しています。


どうするかと迷ったもののどうやらActivityが隠れているところから最前面にさせる方法はないそうで…

なので、少し違う方法ですが更にそのActivityを呼ぶ方法を考えました。

Androidスキーマに自身のアプリ用のスキーマを指定する方法です。

https://groups.google.com/forum/#!msg/af4a/B_Br6bOWs-g/ddAlmqffDPMJ


しかし、上のスレッドでも述べられている通り

flash.net.navigateToURL(new URLRequest("testApp://"));

というコードではセキュリティの違反で実行できないようになっています(Adobeめ…)


なので、Uriを実行するだけのANE拡張を作りました。下記にあります。

https://github.com/toriimiyukki/ANE-UriIntenter


わかりやすいよう、AndroidJavaのコードで言うと

Uri uri = Uri.parse(uriString);
Intent i = new Intent(Intent.ACTION_VIEW, uri);
startActivity(i);

という動作だけです。


これを使うにはActionScript側でANEをライブラリに追加した上で

new UriIntenter().open("testApp://").dispose();

とすることによって実行できます。


まぁ、要するに副産物を公開しただけです…

この作品についてはまた別に話出来ればいいなぁと…しかし、いつの間にかFlashBuilder4.6とか出てちょっと…

2012年10月19日

.NETのSystem.Net.Http.HttpClientでCookieを利用するときの要注意点〜Microsoftに騙される〜

Windows8のためにストアアプリの制作に励んでみてますが、その中でHTTPリクエストを飛ばすためのHttpClientを使用する際にCookie周りで困り数時間頭を悩ませたので、書き残しておきます。

問題

まずはじめに、通常のリクエストを飛ばしてみる(同期)。

Dim HttpClient As New System.Net.Http.HttpClient
HttpClient.DefaultRequestHeaders.Add("User-Agent", "TestApp/1.0")

Dim responseMessage As System.Net.Http.HttpResponseMessage = HttpClient.GetAsync("http://example.com/").GetAwaiter.GetResult()
Dim responseString As String = responseMessage.Content.ReadAsStringAsync().GetAwaiter.GetResult()
System.Diagnostics.Debug.WriteLine(responseString)

.NET 4.5 からはAsync/Awaitメソッドが加わり一連のクラスメソッドも全て非同期用に書き換わりました。ここではデバッグしやすいように同期用のコードを書いていますが、非同期をおすすめします。

responseMessageの詳細を見てみる。

f:id:toriimiyukki:20121019225403j:image

どうやら HttpResponseMessage.RequestMessage.Headers にリクエストのヘッダーが入っているようだ。

理想通りの「{User-Agent: TestApp/1.0}」と確認できる。


さて、ここからクッキーを付け加えてみる。

自分が思う普通の発想ではここにUser-Agentと同様にCookieのヘッダーを追加すればいいいのだと。

Dim HttpClient As New System.Net.Http.HttpClient
HttpClient.DefaultRequestHeaders.Add("User-Agent", "TestApp/1.0")
HttpClient.DefaultRequestHeaders.Add("Cookie", "name=value")

Dim responseMessage As System.Net.Http.HttpResponseMessage = HttpClient.GetAsync("http://example.com/").GetAwaiter.GetResult()
Dim responseString As String = responseMessage.Content.ReadAsStringAsync().GetAwaiter.GetResult()
System.Diagnostics.Debug.WriteLine(responseString)

しかし、ここで、接続先のWebの応答がCookieを認識しておらず数時間頭を抱える。

もちろんresponseMessageの詳細には「{User-Agent: TestApp/1.0 Cookie: name=value}」と確認できる。

f:id:toriimiyukki:20121019225402j:image


原因

結論この原因を究明するのに、みんな大好きFiddlerさんを使用した。

上記のリクエストを見たところ下記であった。

f:id:toriimiyukki:20121019225401j:image:w360

あれ…Cookieヘッダがない…


しかし、responseMessageにはCookieが入っている。

確認のためMSDNHttpResponseMessage.RequestMessageページを参照してみると…

このプロパティは、この応答メッセージを引き起こした要求メッセージに設定されます。HttpClient を使用して送信された要求の場合、このプロパティは最終的な応答が発生する実際の要求メッセージをポイントします。 要求を送信した場合は、同じユーザー提供されるメッセージでない可能性があることに注意してください。 これにより、要求のリダイレクトまたは認証が変更されたときに送信する必要がある場合は、通常同じです。 このプロパティは、URL が実際に応答を作成したかを確認するために使用できます (リダイレクトの場合には便利です)。

↑これが、新手の詐欺

このためか上記MSDNのサイトの上部には「この記事は機械翻訳されたものです。」と書かれていてなんとも言えない感じである。


結局のところHttpClientのDefaultRequestHeadersプロパティではCookieが指定できないということ。

解決

この状態を解決するにはHttpClientHandlerを使用すればいい。この解決法を見つけるのにも時間がかかった。

Dim HttpClientHandler As New System.Net.Http.HttpClientHandler
HttpClientHandler.UseCookies = True
Dim CookieContainer As New System.Net.CookieContainer
CookieContainer.SetCookies(New Uri("http://example.com/"), "name=value")
HttpClientHandler.CookieContainer = CookieContainer
Dim HttpClient As System.Net.Http.HttpClient = New System.Net.Http.HttpClient(HttpClientHandler)

これでいいのだが、この方法だと特定のアドレスにしかCookieが使えずかなり不便である。また動的なURLに対応する場合CookieUriを設定するためにアドレスを抜き出してこなきゃいけないのも面倒だ。

以前は柔軟にできたのになぁと思った所存でした。


まぁWebClientクラスを使ってもいいんですけどね。参照追加しないといけないし…