2011-01-01から1年間の記事一覧
私はみずほ銀行に口座を持っていて、Webで明細確認や振込ができるみずほダイレクトを使っています。みずほダイレクトは割と使いやすいのですが、入出金明細をコピペして取り扱いにくい難点があります。そこで、取り扱いやすいようにテーブルに変換するツール…
SSHクライアントたくさん並べてペーストしまくるのが許されるのは小学生までだよねと言ってみたかっただけです。こんにちは。Capistranoでサーバ構築を省力化する方法を紹介します。サーバ構築の自動化といえばChefやPuppetが有名ですが、Capistranoはサーバ…
Eclipseのプロジェクトをgithubなどで公開するとき、非公開にしたいファイルが出てくると思います。非公開にしたいファイルを別のリポジトリに分けて管理する方法を説明します。 .gitignoreに書く .gitignoreファイルにフォルダやファイルを書くと、リポジト…
ある案件でTeam Foundation Server(TFS)を使った時の雑感をまとめてみました。昨日のワンクリックデプロイ勉強会にインスパイヤされて書きました。参考になりましたら幸いです。アンチパターンも含まれていますので反面教師にして頂ければと思います。ああ…
Webアプリの公開にあたっては、データ転送量や実行効率の点からJavaScriptを圧縮(minify)して配信することが推奨されています。ここでは実行時に圧縮する方法を説明します。JavaScriptの圧縮にはGoogle Closure Compilerを利用します。Maven pom.xmlに以下…
開発環境ではうまく動くのになぜか本番環境で動かないとか、本番環境での挙動が分からんといったとき、いちいち本番環境にテストコードをデプロイして確認するのは面倒ではありませんか?Rhinoを利用して動的にコードを実行するツールを使うと、本番環境での…
Google Tasks APIにはJavaのクライアントライブラリが用意されています。クライアントライブラリ(google-api-services-tasks)のバージョンを1.2.2から1.3.0に上げたときの変更点をまとめておきます。基本的には一部のメソッドが非推奨になっただけで、後方…
12/8あたりからGoogle APIのOAuth 2.0の挙動が変わりました。Google Groupsのポストをたどると、12/7に仕様変更が行われたようです。変更点について説明している記事を見つけたので、日本語に訳してみました。変なところがあったらご指摘頂けると助かります…
Tasks APIの挙動が変わったみたい。と思って書いていましたが、12/9 12:30現在、仕様通りに戻っています。メモとして残しておきます。Tasks APIでタスクを取得する場合の仕様は以下のように書かれています。 Retrieving tasksResponse: HTTP/1.1 200 OK { it…
完了したタスクを未完了に戻すにはステータスをcompletedからneedsActionに変更します。このとき、ステータスの変更と同時に完了日付をクリアする必要があります。具体的には、以下のJSONをリクエストボディに入れてPATCHメソッドを投げます。 { id: "taskID…
Google Tasks APIはタスクにアクセスするためのAPIです。GoogleカレンダーにTo Doリストが付いていますよね、あれです。WebアプリからGoogle Tasks APIにアクセスするにはクライアントサイド(JavaScript)とサーバサイドの2つの方法がありますが、今回はサ…
google-api-java-clientでモデルをJSON化するとマルチバイト文字が化ける件について、google-http-java-clientプロジェクトにバグレポートを出していましたが、10/31に修正されました。レポートした JsonFactory#toString() 以外でもエンコーディングに依存…
AMQP実装の一つであるApache Qpidのインストールについて残しておきます。ドキュメント斜め読みで作業してるので、不足等ありましたらご指摘いただけると嬉しいです。使用してるもの: Amazon Linux 2011.09 (x86_64) Apache Qpid 0.12 Broker (C++) メッセ…
Amazon LinuxとZabbixで始める監視サーバ - GeekFactoryのリメイクです。Amazon Linux 2011.09に合わせて書き直しました。 必要なもの Amazon EC2 Instance Amazon Linux 2011.09 Amazon Linux 2011.09からFedora EPEL(Extra Packages for Enterprise Linux…
ソフトウェアアーキテクチャやシステムアーキテクチャにパターンがあるように、SIerの多重下請構造多層アーキテクチャにもパターンがあると考えられます。本稿では、プログラマ35歳定年説等を考察するにあたって基礎となるパターンを提案します。筆者が提案…
Google Tasks APIでタスクの期限を設定するとき、タイムゾーンに注意する必要があります。Google Tasks上ではタスクの期限は日付(タイムゾーンはUTC固定、時刻は00:00:00固定)で扱うのが無難です。 注意すべき仕様 Taskモデルのdueプロパティはタイムゾー…
Picasa Web Albums APIのクライアントライブラリを利用するコードのユニットテストをどう実現するか考えてみました。結論としてはモックを使った普通のテストになりました。 テスト対象はドメインロジックとする。Picasaクライアントライブラリの実装にテス…
Google Tasks APIにアクセスするコードを書いているのですが、App EngineのProduction環境で文字化けするパターンがあったのでまとめておきます。ちょっと変わった使い方をしていたので見つけました。Tasks APIへのアクセスには google-api-java-client とい…
6月に書いた記事のコードを書き直しました。新しいコードはgithubに上げています。Picasaのアルバムにある写真を撮影日ごとに仕分けするバッチです。図に描くとこんな感じです。PicasaにアクセスするにはGData APIを使います。Java向けにクライアントライブ…
Hyper-Vクラスタを運用する上で、ノードの負荷状況やメモリ使用量などは重要な監視項目になります。特に、仮想デスクトップを運用している場合は一部の利用者が全体のパフォーマンスを落とすことがあるため、原因調査と改善のために記録を残すことが重要です…
App Engineで日次バッチを動かす場合はCronかTask Queueを選択することになります。重複起動したくない、ジョブ失敗時はリトライしたい*1という要件があるならTask Queueを使います。Cronの場合は WEB-INF/cron.xml を編集するだけですが、Task Queueの場合…
スマートフォンで使えるテキスト比較ツールを作ってみました。利用シーンはともかく、JavaScriptだけで動作するのでどこでも使えます。 テキスト比較ツール Text Diff Tool UIライブラリは jQuery Mobile 、テキスト比較エンジンには google-diff-match-patc…
Google Picasaは写真を保存しておくのに便利です。年間$5で20GBのスペースが手に入るのも魅力的です。Picasaでは、特定のメールアドレスに写真を添付して送ると「ドロップボックス」というアルバムに入るようになっています。この「ドロップボックス」の写真…
Google Picasaのウェブアルバムに画像をアップロードするバッチを書いています。Javaのコードはとても簡単ですが、クライアントライブラリを揃えるのに一手間掛かったのでメモします。Eclipseで新しいJava Projectを作成します。必要なライブラリを入手しま…
motionとZabbixによる監視カメラシステム - GeekFactory では、監視カメラの動きを検出した時にZabbixにトラップを送信する仕組みを紹介しました。動き検出にmotionというデーモンを利用しています。motionは動きを検出した場合に任意のスクリプトを実行でき…
監視カメラというと高価な専用システムを連想しますが、PCサーバとUSBカメラを使うと安価に実現できます。自宅サーバに取り組んでいる人は一度は経験しているかもしれませんね。プライバシーや検出精度の問題など、まともに運用していくのは非常に難しいシス…
クラウドから自宅サーバを監視するのがマイブームです。ここではAmazon EC2にZabbixをインストールする方法を紹介します。 前提条件 EC2上でLinuxインスタンスを起動します。今回は Micro instance, Amazon Linux x86_64 を使用しました。以下が正常に動作す…
「組織は過度に人を囲い込まない方がいい。先輩は外に放り出して、後輩が成長するチャンスを生み出すべき。外に放り出された方も新しい気づきを得て成長するだろう。」先週の飲み会で昔の上司と面談して、そんな話をしました。かつての先輩はみんな違う組織…
NEC IX2015とAmazon EC2インスタンスをIPsecトンネルモードで接続してみました。ほぼ自分用の備忘録なんですが、不備などご指摘いただけると嬉しいです。IX2015は動的IPのPPPoEに接続されています。EC2側のみ固定IPを確保できるため、IX2015からEC2に向かっ…
appengine ja night#14にて、AppEngine MapReduceと大量データ処理についてお話しさせて頂きました。speakerdeck.comTask ChainやQuery Chainの基礎的な話、AppEngine Mapperの仕組みについて解説しました。事例紹介などの派手なお話はできませんでしたが、…