RSS2.0

Hadoop を Pseudo-Distributed Mode で試してみた

大量データの分析で威力を発揮するものの、癖が強すぎて適応分野の選定が難しいと一部で話題になっているらしい Hadoop ですが、これまでなかなか触る機会がなかったため、少し触ってみることにしました。実際にうまく使いこなせている人達は企業でさえも 10 〜 20 社あるかないかとか言われてるらしいですが、個人的に何も知見がないため、何を言われていても「へ〜そうなんだ〜」と返すしかありません。エンジニアとしてそんな状況もどうなんだと思ったので、ちょっと遊んでみることにしました。

ちなみに、Hadoop には大きく分けて Standalone Mode、Pseudo-Distributed Mode、Fully-Distributed Mode の 3 つの構築方法があるそうで、公式ドキュメントちょっと遊んでみるなら単一ノード構成がいいよと書かれていたので Pseudo-Distributed Mode で遊んでみることにしました。ざっとドキュメントを読んだ感じ、Standalone Mode は分析用のロジックを動かしてみるだけで、Hadoop の特徴らしい HDFS なんかにまったく触らず終わりそうだったので、やめておきます。分析ロジックが jar なので、自分で書いた jar を試しに動かしてみるには Standalone Mode が良さそうです。

なお、今回はらしいらしいという記述が多くなっていますが、分散処理は奥が深そうで、現時点では断言できることが少ないためです。ブログにはなるべくしっかりとした情報を書きたいのですが、これに関しては仕方ないかなと思います。ご了承ください。
続きを読む WEB 技術Hadoop  コメント (0)  2017/03/29 18:42:18

sqlite3 で SELECT 結果の行番号を取得する

SQL を使っていると、SELECT した結果セットの各行について、結果セット中での行番号を知りたい、という場面にたまに遭遇します。こういうやつです。
SELECT * FROM books ORDER BY price;
id          title           price     
----------  --------------  ----------
3           Art with Basis  600    #行番号: 1
4           Book List       990    #行番号: 2
1           Civilizations   1000   #行番号: 3
2           Dream Post      1200   #行番号: 4
5           El sant magina  1500   #行番号: 5
一般的な一覧系の処理では先頭から N 件とりだすことが多いので、OFFSET で取り出した件数を指定すれば行番号を意識せずに続きをとることができます。

ただ、ID からその行の結果セット中での位置を知ろうとすると、やはり行番号が欲しくなってくるのです。結果セットがソートされていたり、ソートされているカラムがユニークでなかったりするとかなり面倒なことになります。特定の ID の行の前後 3 行ずつを取りたい、というような時に困ってしまうわけです。

結果セット中での行番号を取得するために、Oracle では ROWNUM 擬似列や ROW_NUMBER() 関数が用意されているそうです。
また、MySQL ではユーザ定義変数を使うことで、SELECT 時に行番号を計算し、出力することができます。
SET @rownum := 0; SELECT *, (@rownum := @rownum + 1) FROM books;

しかし sqlite3 では ROW_NUMBER() 的な機能もユーザー定義変数的な機能も実装されていないので、これらの方針をとることはできません。ネットを見てみると以下のようなクエリで計算している例がありますが、境界値として WHERE 句で使っているカラム(ここでは id カラム)がユニークでない場合、境界値として機能しないため、厳密な行番号はとれません。
SELECT id, title, price, (SELECT COUNT(*) FROM books b2 WHERE b1.id >= b2.id) AS rownum FROM books b1 ORDER BY rownum;
id          title           price       rownum    
----------  --------------  ----------  ----------
3           Art with Basis  600         1         
4           Book List       990         2         
1           Civilizations   1000        3         
2           Dream Post      1200        4         
5           El sant magina  1500        5         
※ ORDER BY rownum は見やすさ重視のためにつけたもので、必須ではありません。

もう 1 点、この方法では 1 行毎にサブクエリで行番号をカウントするため、参照性能に問題があります。MySQL では悪名高き DEPENDENT SUBQUERY にあたるためです。
続きを読む WEB 技術  コメント (0)  2017/02/01 19:45:13

Ionic 2 を試してみた

あけましておめでとうございます。
年の瀬に Maven Resources Plugin の記事 を書き、お正月だからとだらだらしていたら 3 年経ってしまいました。

それはともかく、少し時間ができたのでスマホアプリの技術でも触ってみようかと思い、Ionic 2で遊んでみました。今回は Ionic 2 のインストールから空のプロジェクトを作ってブラウザから動作確認をし、独自の新ページを追加するところまでです。

スマホアプリというと Android や iPhone の実機をつないで都度ビルドしながらデバッグする、というイメージが強いですが、Ionic 2 などの最近のフレームワークは WEB ベースの技術が組み合わさっているため、実機がなくてもブラウザから動かすことができます。簡単なページは JavaScript や CSS を使って WEB アプリ的に実装し、それで実現できない部分は端末固有の実装として Java や Swift で書いたプラグインに任せよう、という設計思想だそうです。確かに、ゲーム系でないスマホアプリは、突き詰めてしまえばボタンを押しながら画面遷移していくだけの事が多いので、WEB アプリに似せた開発ができるというのは効率的なのだと思います。

Ionic 2 は Cordova というマルチプラットフォーム向けのフレームワークに覆いかぶさる形で作られています。なので Cordova 同様、Ionic 2 で書いたアプリも Android や iOS 用にビルドすることができます。また Ionic 2 の特徴として、AngularJS と切っても切れないほと密接に連携していて、その特徴を色濃く受け継いでいます。データとデータを取り扱うロジック部分をビューから切り離し、そのデータをビューに対して自動的に埋め込ませることができます。このあたりの考え方は、WEB アプリを作ったことのある人には、馴染みの深い MVC モデルの応用のように聞こえますが、MVC モデル自体がデスクトップアプリケーションに端を発しているものなので実際は逆輸入なのかもしれません。

さて、今回の目標としては、似非商品検索アプリを作ってみようと思います。トップ画面から検索画面に遷移し、そこで入力したキーワードから、キーワードを商品名に含む商品の一覧を表示する、という感じの動きです。ただし、今回は実際に DB や WEB サービスから検索するわけではなく、キーワードを商品名っぽく加工して表示するだけとします。
こんな感じの仕上がりを目指していこうと思います。
続きを読む WEB 技術Ionic 2  コメント (0)  2017/01/24 19:19:22

Pushy Grandma ver 0.3 を公開しました

一度中毒症状から抜け出しても、ふとしたきっかけで再びクッキーを焼きたくて焼きたくて仕方なくなってしまうという恐怖のクリックゲーム Cookie Clicker にて、せめてプレイヤーの身体だけは守ろうというコンセプト(嘘)で去年公開したPushy Grandma をバージョンアップしました。
Pushy Grandma は Cookkie Clicker のクッキーを自動でクリックし続ける Grease monkey スクリプトです。
pushyGrandmaVer0.3.png

今回のアップデートでは通常のノーマルクッキー、ゴールデンクッキーに加えてクリスマスのトナカイが自動クリックされるようになりました。
おばあちゃんがトナカイを屠るようになりますので、ぜひぜひご利用の方はアップデートしてみてください。

ダウンロード

Greasemonkey 用 Cookie Clicker 自動クリックスクリプト
Pushy Grandma ver 0.3

インストール手順は前回と同様になります。
そのまま ver 0.3 のリンクを開いてもらえればバージョンアップできるかと思いますが、もしうまくインストールできないようでしたら、一度 Pushy Grandma を削除してから再度インストールしてみてください。

続きを読む WEB 技術  コメント (7)  2014/04/26 13:55:39

Pushy Grandma ver 0.23 を公開しました

高確率でクッキー中毒(もしくは Grandma の虜)になってしまうという Cookie Clicker プレイヤーの手の健康を守るべく(言い訳)、昨日作成したPushy Grandma をバージョンアップしました。

これまでは画面内のノーマルクッキーと金のクッキーを音もなく自動クリックし続けていましたが、あまりに BOT 的で味気ないので、クッキークリック時の画面エフェクトを追加してみました。(画面エフェクトがあろうとなかろうと BOT っぽいですが……)

皆さん考えることは同じのようで、世の中にはもう結構な数の自動クリックツールが出回っているようです。なので Pushy Grandma では視覚的な面白さも加えてみようということで(完全趣味の方向に)手を入れています。

pushyGrandma01.png

画面効果以外の機能はほとんど変わっていませんが、細かいバグを直したりしているので、できれば最新版へのバージョンアップをお勧めします。

ダウンロード

Greasemonkey 用 Cookie Clicker 自動クリックスクリプト
Pushy Grandma ver 0.23
※ 2014/04/26 ver0.3 を公開しました

なお、インストール手順は前回と同様になります。
バージョンアップには、そのまま ver 0.23 のリンクを開いてもらえればいいと思いますが、もしうまくインストールできないようでしたら、一度 Pushy Grandma を削除してから再度インストールしてみてください。

続きを読む WEB 技術  コメント (6)  2013/09/18 22:44:29

Cookie Clicker で自動クリックする Greasemonkey スクリプトを書いてみた

『気づいたら朝になっていた』『腱鞘炎患者製造機』と一部で人気のブラウザゲーム Cookie Clicker をはじめてみました。

cookieClicker00.png
このゲームの目的はただひたすらにクッキーを作ることです。
画面左の大きなチョコチップクッキーをクリックすることで、おいしそうなクッキーが1枚手に入ります。
作ったクッキーとひきかえにアイテムを買うことでクッキーの生産効率がアップし、さらに多くのクッキーを作れるようになります。
クッキーを何個作ったら何かが起こるとか、そういうのはありません。(PS3 的な実績はありますが。)本当にそれだけ。

……なぜそうまでして人はクッキーを作り続けるのか……。
……このクッキーにいったいどれだけの意味があるというのか……。
しかしあなたに悩むための時間はありません。
「おい新入りィ!!手が止まってんぞォッ!!」
どこからか親方の声が聞こえてきます。
そう、考える暇があるのなら、ひたすらクッキーをクリックし続けるのです。
この宇宙をクッキーで埋め尽くすために……。

―――以上クッキー中毒者の脳内ストーリーより。


という感じで怪しいくらいにはまってしまう Cookie Clicker ですが、いい加減マウスが壊れそうになってきたので、自動でクリックしてくれるグリモンスクリプトを書いてみました。(ようやく本題)
画面左に表示されるクッキーだけでなく、稀に出現するボーナスアイテム: 金のクッキーも自動でクリックしてくれます。

注意
このスクリプトによって Cookie Clicker のゲームバランスを壊したとしても、当方は一切責任を負いません。
ご自身で心ゆくまで手作りクッキーを焼いた上で、自己責任のもとご利用ください。


Cookie Clicker からクリックをとったらただの Cookie ですからね…。

ただ、クリックで作れるクッキーの数は、自動生産されるクッキーのだいたい 3 % くらいのようなので、クリックを自動でまわしても極端に有利になるということもなさそうです。1 秒間に 33 回クリックしてやっと自動生産量と同じになる感じ。


続きを読む WEB 技術  コメント (2)  2013/09/17 12:30:35

Html5 Outliner Extended

HTML5 で追加された article, aside, nav, section タグはセクショニング・コンテンツと呼ばれています。これらのタグは WEB ページのデータ的な構造を表すために使用されます。ただ、これらのセクショニング・コンテンツによって表されるページ構造のアウトラインは、デザイン(CSS など)をあてるためのタグ構造と必ずしも一致している必要がなく、視覚的にも確認しづらいものです。

ページのアウトラインを確認するツールとして、HTML5 Outliner  という Chrome 拡張があります。
これは表示しているページの HTML を読み込んで section や article などのタグからページのアウトラインをツリー構造で表示してくれるものです。

わたし自身もこれにだいぶお世話になっているのですが、使っているうちにもう少し使いやすくできたらと思うようになり、ちょっとした機能ではあるのですが拡張バージョンを作ってみました。
Html5OutlinerExt.png
HTML5 Outliner のオリジナルバージョンは MIT License でソースコードも公開されています。作者は dymonaz ( Dominykas Blyžė ) さんという方です。

本来ならオープンソースのプロジェクトらしくパッチを送って取り込んでもらえばいいのでしょうが、チキンなのでなかなかそこまでは踏み出せず、fork した形で公開することにしました。ここに置いてあるものは、オリジナルの HTML5 Outliner を独自に機能拡張した野良バージョンとなります。

 最新バージョン

ダウンロードはこちらからどうぞ。
html5outlinerExt.0.5.1.crx
HTML5 Outliner ver 0.5.1 相当です。

続きを読む WEB 技術  コメント (0)  2013/08/13 00:28:16
プロフィール HN: ももかん
ゲーム作ったり雑談書いたり・・・していた時期が私にもありました。
カレンダー
<<2018, 1>>
31123456
78910111213
14151617181920
21222324252627
28293031123