GeekFactory

int128.hatenablog.com

2010-01-01から1年間の記事一覧

レインボーブリッジの下で

最高でした。

App Engineで動く並列処理フレームワーク ElShard

App Engineで大量のデータを並列処理するフレームワーク ElShard を作っています。batch addとdeleteのサンプルができたので、とりあえずまとめてみます。ElShardは、入力リストを分割して処理して集約する考え方に基づいています。並列処理はApp EngineのTa…

変わらない世界と変わりゆく世界

最近読んでいいなと思ったエントリ。 一方、日本のSIerの考え方では基本的に契約したシステムの機能を期限内に実装できれば良いというのが基本的な考え方です。 実際は顧客のビジネスは変化しますし、要件が変わらないということはないはずなのですが、そこ…

タスクチェーンのフレームワーク

App Engineでは実行時間に制限があるため、長時間にわたる処理を行う場合は複数のタスクに分割する必要があります。この手法は一般にタスクチェーンと呼ばれています(たぶん)。タスクチェーンを抽象化してフレームワークにできるか考えてみました。タスク…

AppEngineで大量のエンティティを処理するパターン

App Engine上で大量のエンティティを処理するパターンをまとめてみました。 Concurrent Pattern 対象のエンティティをシャードに分割し、それぞれを並列に処理するパターンです。シャーディングを行うSplitterとエンティティを処理するMapperが並行して動き…

47,000件のbatch putを16秒で処理

以前に 大量のエンティティを処理するデザインパターン - GeekFactory を紹介しましたが、シングルスレッドのバッチ処理なのでスループットが頭打ちになる問題がありました。コンカレントに処理する方法を思いついたので実装してみました。シングルスレッド…

2010年度下期の自宅サーバ投資計画

Linux KVMのLive MigrationやDirect attachment to physical interfaceを使ってみたいため、自宅サーバの設備投資を計画しています。VMゲストに十分なメモリを割り当てたいというのもあります。開発環境はメモリ大食いですね。というか、メンテナンスでサー…

Linux KVMにWindows Server 2008 R2をインストールする

Linux KVMにWindows Server 2008 R2をインストールする際のポイントを紹介します。 virtioドライバを準備する QEMUはe1000などの各種のデバイスをエミュレートしてくれますが、余分なオーバーヘッドが発生します。virtioは仮想I/Oデバイスのフレームワークで…

appengine-mapreduce-javaにおけるShardingの制限事項

appengine-mapreduce-javaで並列度が上がらないから変だと思っていたら、ユーザガイドに以下の記述がありました。 Sharding is currently done by splitting the space of keys lexicographically. For instance, suppose you have the keys 'a', 'ab', 'ac'…

security-constraintによる認証と認可について

web.xml で security-constraint を記述すると、指定したURLパターンについてOpenID Providerによる認証が有効になります。認可の設定は role-name で指定します。 role-name=* すべてのユーザに対してアクセスを許可します。アプリケーションでは User#getF…

Webサーバ勉強会で発表しました

Webサーバ勉強会に参加しました。speakerdeck.com渋谷マークシティにあるきれいなオフィスにお邪魔しました。夜景がきれいでした。懇親会楽しかったです!皆様ありがとうございました。

11.6インチの新型Mac Book Airをゲットしました

Mac

11.6インチ SSD 64GBモデル、88,800円なり。有楽町ビックカメラで購入しました。なお、銀座Apple Storeではこのモデルは売り切れてました。キタ━━━━━━━━━(゚∀゚)━━━━━━━━━!!!!す、すごく小さいです。Eclipseでgit+java+appengineな環境ができたところで、今日は…

appengine ja night #11 に参加しました

念願の初参加でした!ビールとピザを頂きました。#MA6 Mashup Camp - Collabo Day with appengine ja night #11 : ATND興味深かったセッションを3つ紹介します。 GAEで全文検索(@kissrobberさん) 転置インデックスを使った全文検索について。分かち書きにG…

自宅サーバのインフラ設計書を公開します

自宅サーバのインフラ設計書を公開します。Design paper of the home server(抜粋)昨夜にTwitterで公開したら予想外に反響があったので、ちゃんとエントリに残すことにしました。クラックされるおそれがあるので、細かい部分は公開できないことをご了承く…

バリデーション、読み込み中表示、通知メッセージ機能を備えたAjaxフォームの実装

Webアプリでは、フォームに入力された値をチェックしてAjaxでサーバに送信するパターンがよく使われます。ここでは、下記のプラグインを組み合わせてAjaxフォームを実装する方法を紹介します。 jQuery Form Plugin - Ajaxフォーム jQuery Validation Plugin …

インフラエンジニア勉強会 qpstudy03 に参加しました

キユーピー3分インフラクッキング -初心者にも優しいインフラ勉強会- #qpstudy に参加しました。ATNDで補欠でしたが、会場に余裕がありそうとのことで参加させて頂きました。ありがとうございました!>@iara さん会場は大森ベルポートのNiftyさん。雨が降っ…

Gentoo Linuxでvirt-topを使う

いわゆるtopのlibvirt版です。Gentooではebuildが用意されていないので、ソースからビルドします。さくっと入るかと思ったら予想外に手こずりました。 dev-lang/ocaml dev-ml/findlib dev-ml/extlib ocaml-libvirt-0.6.1.0 - ocaml-libvirt OCaml bindings f…

社内転職から1ヶ月が経ちました

伝説のジャズギタリスト、Pat Methenyが若いミュージシャンたちにアドバイスするときの決まり文句。「どんなバンドで演るときも、一番下手なプレイヤーでいろ」情熱プログラマー ソフトウェア開発者の幸せな生き方 より 今、私はチームで一番下手なプレイヤ…

自分の仕事を愛せる世界に行こう

私も流行のムーヴメントに乗ってみます。 ソフトウェア業界(特に受託開発業界)は、基本的に正直者が馬鹿を見る世界である。顧客(あるいは経営者)が、保守性というソフトウェアの最も重要な品質を正しく評価できないという、情報の非対称性が存在するからだ…

プロパティの一部をkindに含める設計について

データストアで時系列データをカレンダー表示したい場合、どのような設計が最適でしょうか。下記のモデル(Event)を考えます。 プロパティ 型 説明 key com.google.appengine.api.datastore.Key キー(userId/time) userId java.lang.String ユーザID time…

アジと玉ねぎのオーブン焼き

手探りで作ってみたら美味しかったので書いてみます。 材料(2人分) 材料 量 アジ(開き) 5〜6切れ 玉ねぎ 半玉 茄子 半分〜1本 にんにく 2片 オリーブオイル 適量 白ワイン 適量 パルメザンチーズ 適量 塩、ブラックペッパー、バジル 適量 アジはスーパー…

システム開発においてその場で確認しながら進められることの重要性

受託開発という一品モノを作るプロセスは本質的に非効率であり、その非効率性をどうやって改善するかを議論したい、というのが昨日のエントリの主張です。外注 vs 内製というワイドショーはナンセンス。タイトルの付け方がかなり恣意的だったかもしれません…

受託開発が抱える本質的な非効率性に関する考察

受託開発が抱える本質的な非効率性について考えました。ここで挙げたことはどの開発プロセスでも発生しうる問題と思います。 外注のオーバーヘッド 契約に係るコスト。 限られた場所や時間で質疑応答を行うことによる損失 情報の伝達コストは「機会」により…

AjaxによるFederated Loginの待ち時間の短縮

App Engine上のアプリでは利用者の体感待ち時間を短くするため、JSPを使わずにAjaxで実装することがあります。この方法はOpenID認証(Federated Login)でも有効です。web.xmlのsecurity-constraintで認証をチェックする方法を以前紹介しましたが、この方法…

IT企業の決算書を読む

決算書の読み方を学ぶ機会がありました。製造業や小売業は仕入れ→(加工)→在庫→販売→回収という流れがあるので、数字を読み解く上で想像しやすいポイントがありますが、IT業界は様々な業態の集合なのでお金の流れが分かりにくいと思います。決算書は EDINET…

固定席における本の役割に関する考察

ずっとフリーアドレスで仕事をしてきたせいか、固定席の文化にまだ慣れません。自分の席があることが不思議で、帰るときについ物を片付けそうになります。どんな物を机の上に置けばよいかまわりを観察しています。フリーアドレスを知らない人に補足しておく…

自ら手を動かして問題解決に臨む文化を形成したい

異動を決意した原点を振り返ってみようと思います。私には「直営社員にもプログラミング能力が必要であり、自ら問題解決に臨む文化を形成していきたい」という一貫した想いがあります。現場で正しい判断が行われず、後になってコストがかさんで炎上する場面…

社内異動しました

9/1付で別の部署に異動になりました。今まではインフラアーキテクトの仕事が多かったのですが、これからはソフトウェアアーキテクトの仕事を中心に担当していくことになります。社内とはいえ本部が変われば別の会社のですね。新しい環境に慣れるまで大変です…

Jsonizer 0.9

Google App Engineに最適化したJSONライブラリ Jsonizer のバージョン0.9をリリースしました。以前のエントリで開発中と書きましたが、仕様が安定してきたので公開します。Slim3と組み合わせて使う場合は以下のようになります。タイプセーフなプロパティマッ…

Windows 7/VistaでWinamp Enhancerを使う

Windows 7/VistaでWinamp Enhancer 017を使うと、 "Error: can't access registry information..." というエラーメッセージが出ます。このままでは設定が保存されませんが、レジストリのアクセス権を付与するとfixできます。 レジストリエディタを開く。 以…