takaaki.infotakaaki.infoソフトウエアデベロッパー兼技術系ライター水野貴明のサイト。開発・執筆関係のお仕事依頼お待ちしております。Safari)にはReader機能というのがあって、ブログなどでコンテンツ部分だけを抜き出して表示してくれます。iOSにはあるのは知っていて、PC向けのページを読みやすくしてくれて便利なのでたまに活用していたのですが、PC版でもあるんですね。似た機能はPocketやReadabilityにもあります。このリーダー機能、ボタンが出る時と出ない時があります。コンテンツ抽出ができない時は出ないんだろうなっていう推測はできるのですが、どのようにコンテンツ抽出しているのかなと。PerlのモジュールでHTML::ExtractContentというのがあるのですが、似たようなことやっているんだろうなって思っていましたが、しらべるとh1~h6の含まれるブロック要素で文字数が多いものが取られているっぽいとかブロックのサイズが云々とか色々観測結果が書かれていました。調べていくと、新事実が。ReaderはJavaScriptで実装されており、以下の手順を踏めばコードが読める。Inspectorを開き、停止ボタンを一度だけ押すリーダーボタンを押すおお、よめた!ということで、JavaScriptで書かれたコードを読むことができます。中を読むと要素のIDやClassに”article”、”body”、”content”、”entry”とか入っていたら可能性が高く、”comment”とか”advertisement”、”breadcrumb”、”disqus”とか入っていたら可能性が低いとか、縦横の表示サイズやエリア面積などなど様々なチェックを行っているようです。ローカルで構築すると、ネットワークのない環境でも開発ができるので非常に便利です。昨年は飛行機に乗る機会がとても多く、僕の乗っていた便はまだ機内インターネット接続サービスの恩恵は受けられない便ばかりだったので、飛行機の中でも開発を続けるためには、開発環境とドキュメントをローカルに入れておくのはとても重要でした。VagrantとDashにはとてもお世話になりました。最近DynamoDBを使ってサービス作っています。AWSのサービスは非常に便利でよいですが、DynamoDBはElastiCacheやRDSみたいにローカルにMemcachedやRedis、MySQL、PostgreSQLなど入れておけば代用できるわけでもないので、どうすんだろ、と思いました。1点DynamoDBの問題として、DynamoDBの課金体系は保存容量以外に毎秒何回読み込みと書き込みができるかに対してお金を支払いますが、無料枠は、合計書き込み5回/秒、読み込み10回/秒までです。DynamoDBではグローバルセカンダリインデックスを用意すると、それぞれにつき少なくとも書き込み、読み込み1ずつ割り当てなければならないので、1つのテーブルが1回/秒で済まないケースもあって、本当にお試しでもない限り、無料枠をすぐ使い切っちゃいます。いっても、月数百円とかですむのですが、油断してて料金発生するのも怖い。Localなるものを公開していて、これを使ったらものすごく簡単にそれができてしまいました。紹介記事は2013年9月ですがリンクは最新版を指すようになっていてダウンロードされたのは2014年1月8日版でした。2013年12月に発表されたグローバルセカンダリインデックスにも対応。Javaで書かれているのでjarファイルを実行すればサービスが起動してしまう。ポート番号はデフォルトが8000ですが、8000なんてなにか他のものと容易に衝突しそうなんでそこはは変えました。8088それで、次はアクセスをしてみるのですが、開発はPythonを使うことが多いのでbotoを使いました。botoってconnectionの際にhostとportを指定できるようになってるんですね。res['time']実際のDynamoDBのようにコンソールが用意されていてテーブル作成できるわけではありませんが、そもそもきちんとテーブル定義はコードとして残しておいたほうがいいですね。AWSのブログ記事に以下の様なことが書かれています。スループットの指定は無視される。スループット以上にアクセスすることはできてしまう。アクセスキーとリージョンはDBファイル名を生成するときにだけ関係あるシークレットキーは無視されるテスト用なので、プロダクション作らないほうがいいよということで、これでとりあえずお金の心配も、ネットワークの心配もせずにDynamoDBで開発ができるようになりました。