GeekFactory

int128.hatenablog.com

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

Jsonizer

Google App Engineに最適化したJSONライブラリを作っています。依存クラスが少なく、リフレクションを使わないので、高いパフォーマンスが期待できます。使い方はこんな感じ。 public class EventlogController extends Controller { @Override public Navig…

流れるようなインタフェースでJSONを返す

いわゆる流れるインタフェースでJSONレスポンスを返す仕組みを実装してみました。Slim3じゃなくても使えそうです。 public class EventlogController extends Controller { private final EventService eventService = new EventService(); @Override public…

Google Picasa ウェブアルバムの写真をスライドショーで表示する

旅先の写真をWebサイトで公開してみました。Google Picasa ウェブアルバムにアップロードした写真を Galleria でスライドショー表示しています。こちらを参考にさせていただきました。 Galleria – Responsive JavaScript Image Gallery GData API のJSONP出…

App Engineで利用可能なタイムゾーンの一覧

調べてみました。App Engineで利用可能なタイムゾーン よく調べてみるとApp EngineとSun JDKでタイムゾーンが微妙に異なるようです。 アルゼンチン時間 App Engine = GMT-03:00 Sun JDK = GMT-03:00, GMT-04:00 アルゼンチン時間は GMT-03:00 が正しいはず。…

大量のエンティティを処理するデザインパターン

データストアにある大量のエンティティを処理したい場合、クエリ結果を複数のタスクに分散して処理する必要があります。クエリ結果のカーソルを次のタスクに引き継ぐパターンをテンプレート化してみました。基本的な流れはこんな感じ。 タスクが実行される。…

githubをHTTPSで利用する

git

gitはgit over sshプロトコルを使うのが一般的ですが、githubではgit over httpsも使えます。プロキシなど諸事情で外に自由にアクセスできない場合は強い味方になります。ここではmsysgitを前提とします。msysgitで https://github.com/ にアクセスすると証…

Agile Day 3に行ってきた

Microsoftのセミナーという名目でAgile Day 3に行ってきました。スクラムについて非常に勉強になりました。チームマネジメントは面白いですね。朝会、ホワイトボードのタスクリスト、タスクまとめメールはすでに実践しているので、ポストイット、バーンダウ…

エンティティ変換タスクのRespawnパターン

長時間にわたる処理は、App Engineの最大実行時間である30秒ごとに分割する必要があります。大量のエンティティを変換する処理もその一つです。いろいろ試してみた結果、Respawnパターン*1が使いやすいと思います。Respawnパターンは、Task QueueがDeadlineE…

OpenID SSOの認証シーケンス

App EngineでOpenIDシングルサインオンを利用した場合のシーケンス図を書いてみました。OpenID Providerが「はてな」の例です。開発者が用意するページは黄色の部分に示したログインページだけです。設定内容は OpenID認証によるシングルサインオン - GeekFa…

App Engineの信頼性は95%程度?

最近、App Engineで下記のようなエラーをよく見かける気がします。 500 10871ms 0cpu_ms 0kb AppEngine-Google; (+http://code.google.com/appengine)Request was aborted after waiting too long to attempt to service your request. This may happen spor…

OpenID認証によるアクセス制御フィルタ

2010-06-05 お詫び:ソースコードに間違いがありましたので修正しました。OpenIDのIdentifierを取得するには getUserId() ではなく getFederatedIdentity() を使用してください。データ変換タスクをTaskQueueに投入するページなど、開発者のみアクセスを許可…

受託開発のコスト意識

システム開発では、開発を担当する会社と運用を担当する会社は異なることが多く、場合によってはユーザ企業内でも部門が違ったりします。一般に、開発コストをケチると運用コストは増加する傾向にあります。例えば、リファクタリングによりソースコードの保…

インドのSIerは何に投資をしているのか?

http://www.tcs.com/SiteCollectionDocuments/Investors/Presentations/TCS_Consolidated_IndianGAAP_FY_10.pdfTCSの財務諸表*1によると、 売上は約5,957億円(円換算) 営業利益率は約27% 売上に対する人件費は約36% 売上に対する販売管理費は約35% と読み…

OpenID認証によるシングルサインオン

App Engine 1.3.4でOpenID認証に対応しました。調べてみると意外と普通にシングルサインオンできたので、使い方と仕組みを説明します。まず、OpenID認証を要求するURLパターンをweb.xmlに書きます。 <security-constraint> <web-resource-collection> <web-resource-name>Authentication required url</web-resource-name> <url-pattern>/user/*</url-pattern> </web-resource-collection> </security-constraint>

直営社員にプログラミング能力が必要なたった一つの理由

大きなSIerでは社員はプロジェクト管理だけを行い、実作業の大半を外部に委託するところがほとんどです。直営比率が低いところは管理作業しか行わないため、入社してから設計書もプログラムも書いたことがない人は割といます。感覚的には、直営比率が1/3を超…

syslog-ngによるログ監視とメール通知

ログ監視はシステムの異常を検知する重要な方法です。外部にサービスを公開すると侵入される可能性がありますし、サービス障害に気づかない可能性もあります。syslog-ngではログに特定のパターンが出現したらメールで通知することが可能です。destinationのp…

TCPカーネルパラメータによる障害復旧時間の短縮

クラスタ構成のサーバでは、障害発生後にクライアントがすぐに復旧しない場合があります。サーバ側がフェイルオーバした後にクライアント側が再接続するまでの時間を短くする方法を紹介します。クライアントからサーバに接続するとソケットはESTABLISHEDにな…

携帯からのアクセスをリダイレクトする

User-Agentに応じてコンテンツの内容を変えるにはmod_rewriteが便利です。ただし、書き方を気を付けないと可読性が低くメンテしにくい設定になってしまいます。普通に書くとこんな感じです。User-Agentパターンは実際はかなりあります。 RewriteCond %{HTTP_…

公開SSHサーバの安全性を高める5つの設計

出先からサーバをメンテナンスするには、SSHサーバをインターネットに公開する必要があります。SSHはデフォルトではIDとパスワードだけでログインできてしまうため、狙われやすい侵入経路の一つです。ここではSSHサーバの安全性を高める設計を挙げてみます。…

OpenSocial OAuth Filter バージョン0.7をリリースしました

OpenSocialアプリの開発に役立つライブラリです。バージョン0.7ではパラメータチェックを一部省略できるようになり、柔軟性が向上しました。詳しくはこちらから。http://code.google.com/p/opensocial-oauth-filter/気付いたら1ヶ月もブログを書いていません…

OpenSocial OAuth Filter バージョン0.6をリリースしました

OpenSocialアプリの開発に役立つライブラリです。バージョン0.6ではGoogle App Engine向けの最適化を行いました。このライブラリと並行してmixiアプリも開発中です。詳しくはこちらから。http://code.google.com/p/opensocial-oauth-filter/

iPhoneに足りないもの

2月から既存のWILLCOMを解約してiPhoneに一本化する計画でしたが、なかなか難しいところです。 赤外線通信がない 連絡先の交換に手間が掛かるので困ります。 携帯アドレス宛のメールを転送保管できない gmailに転送して保管したりできません。これはSoftbank…

JSONICとSlim3 DatastoreによるREST APIサービス

JSONベースのRESTサーバにJerseyを使っているのですが、App Engineの実環境ではspin-up timeが長いので困っていました。mixiアプリの表示に10秒もかかると見る気が失せてしまいます。そこで、JSONICのWeb Service Servletを使ってみました。POJOをJSONで返す…

システム開発とプロダクト開発の違い

今日は事あってid:higayasuoさんの奥様とお会いすることができました。お忙しい中本当にありがとうございました。豊洲駅の温野菜で、普段の仕事内容から知られざる(?)夫婦生活まで聞かせて頂きました。すみません。おわびにカピバラさんの写真を貼ります…

試験工数の無闇な削減は総工数の増加につながる

というのを実証してしまったわけです。先日、opensocial-oauth-filter-0.5をリリースしたわけですが、時間がない言い訳をいいことに試験をサボっていたらバグ報告を受けました。ぬるぽが出るとか恥ずかしいです。穴があったら入りたい。帰ったらfixします。…

opensocial-oauth-filter-0.5.1をリリース

NullPointerExceptionが発生するバグを修正しました。OpenSocialコンテナからのリクエストを検証するサーブレットフィルタを作っています。Javaでmixiアプリを作るのが少し楽になるライブラリです。opensocial-oauth-filter - Signature validation filter f…

opensocial-oauth-filter-0.5をリリースしました

OpenSocialコンテナからのリクエストを検証するサーブレットフィルタを作っています。Javaでmixiアプリを作るのが少し楽になるライブラリです。バージョン0.4からの変更点は以下です。 XMLファイルに設定を書くようにしました。 jarファイルが1つになりまし…

会計制度がソフトウェアの変化を困難にしているのか?

納品する立場では意識することが少ないですが、システムは機械設備と同様に固定資産となります。私は社内システムの開発に一時期関わっていましたが、システムを勝手に作ることはできず、投資計画に基づいて資産化する手続きが必要になります。システムを勝…

生姜と長ねぎの鶏ガラスープ

相方が風邪を引いたので、食べやすいスープを作ってみました。 材料(2人分) 材料 数量 たまねぎ 半玉 ベーコン 2枚 しめじ 適量(15本ぐらい) しょうが 適量(薄く3枚) 長ねぎ たっぷり 水 150ml 調味料 ごま油 鶏ガラスープの素 砂糖 塩 こしょう 作り…

ブログは伝えたい人に自分を伝える場

今日はid:AWAWAさんとお会いしました。とても有り難いお話をありがとうございました!ブログやタイムラインは自分を表現する看板になります。今年は激動の一年になると思いますが、表現することを忘れずに頑張っていきたいと思います。なるべく多くの人と会…