GeekFactory

int128.hatenablog.com

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

みずほダイレクト入出金明細の変換ツール

私はみずほ銀行に口座を持っていて、Webで明細確認や振込ができるみずほダイレクトを使っています。みずほダイレクトは割と使いやすいのですが、入出金明細をコピペして取り扱いにくい難点があります。そこで、取り扱いやすいようにテーブルに変換するツール…

今日から始めるサーバ構築の省力化

SSHクライアントたくさん並べてペーストしまくるのが許されるのは小学生までだよねと言ってみたかっただけです。こんにちは。Capistranoでサーバ構築を省力化する方法を紹介します。サーバ構築の自動化といえばChefやPuppetが有名ですが、Capistranoはサーバ…

Eclipse + Gitで公開リポジトリとプライベートリポジトリを使い分ける

Eclipseのプロジェクトをgithubなどで公開するとき、非公開にしたいファイルが出てくると思います。非公開にしたいファイルを別のリポジトリに分けて管理する方法を説明します。 .gitignoreに書く .gitignoreファイルにフォルダやファイルを書くと、リポジト…

Team Foundation Serverの運用事例と雑感

tfs

ある案件でTeam Foundation Server(TFS)を使った時の雑感をまとめてみました。昨日のワンクリックデプロイ勉強会にインスパイヤされて書きました。参考になりましたら幸いです。アンチパターンも含まれていますので反面教師にして頂ければと思います。ああ…

Webアプリの実行時にJavaScriptを圧縮する

Webアプリの公開にあたっては、データ転送量や実行効率の点からJavaScriptを圧縮(minify)して配信することが推奨されています。ここでは実行時に圧縮する方法を説明します。JavaScriptの圧縮にはGoogle Closure Compilerを利用します。Maven pom.xmlに以下…

Rhinoを使って簡単に本番環境の挙動を確認する

開発環境ではうまく動くのになぜか本番環境で動かないとか、本番環境での挙動が分からんといったとき、いちいち本番環境にテストコードをデプロイして確認するのは面倒ではありませんか?Rhinoを利用して動的にコードを実行するツールを使うと、本番環境での…

Google Tasks API Client Libraryを1.3.0にバージョンアップした場合の変更点

Google Tasks APIにはJavaのクライアントライブラリが用意されています。クライアントライブラリ(google-api-services-tasks)のバージョンを1.2.2から1.3.0に上げたときの変更点をまとめておきます。基本的には一部のメソッドが非推奨になっただけで、後方…

12/7に行われたGoogle API OAuth 2.0の仕様変更について

12/8あたりからGoogle APIのOAuth 2.0の挙動が変わりました。Google Groupsのポストをたどると、12/7に仕様変更が行われたようです。変更点について説明している記事を見つけたので、日本語に訳してみました。変なところがあったらご指摘頂けると助かります…

Tasks APIが返すタスクのselfLinkプロパティ

Tasks APIの挙動が変わったみたい。と思って書いていましたが、12/9 12:30現在、仕様通りに戻っています。メモとして残しておきます。Tasks APIでタスクを取得する場合の仕様は以下のように書かれています。 Retrieving tasksResponse: HTTP/1.1 200 OK { it…

完了したタスクのステータスを未完了に戻すには

完了したタスクを未完了に戻すにはステータスをcompletedからneedsActionに変更します。このとき、ステータスの変更と同時に完了日付をクリアする必要があります。具体的には、以下のJSONをリクエストボディに入れてPATCHメソッドを投げます。 { id: "taskID…

WebアプリからGoogle Tasks APIにアクセスする

Google Tasks APIはタスクにアクセスするためのAPIです。GoogleカレンダーにTo Doリストが付いていますよね、あれです。WebアプリからGoogle Tasks APIにアクセスするにはクライアントサイド(JavaScript)とサーバサイドの2つの方法がありますが、今回はサ…

google-http-java-client bug #28 fixed

google-api-java-clientでモデルをJSON化するとマルチバイト文字が化ける件について、google-http-java-clientプロジェクトにバグレポートを出していましたが、10/31に修正されました。レポートした JsonFactory#toString() 以外でもエンコーディングに依存…

Apache Qpidのインストール

AMQP実装の一つであるApache Qpidのインストールについて残しておきます。ドキュメント斜め読みで作業してるので、不足等ありましたらご指摘いただけると嬉しいです。使用してるもの: Amazon Linux 2011.09 (x86_64) Apache Qpid 0.12 Broker (C++) メッセ…

Amazon LinuxとZabbixで始める運用監視

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における多層アーキテクチャパターンの一考察

ソフトウェアアーキテクチャやシステムアーキテクチャにパターンがあるように、SIerの多重下請構造多層アーキテクチャにもパターンがあると考えられます。本稿では、プログラマ35歳定年説等を考察するにあたって基礎となるパターンを提案します。筆者が提案…

Google Tasks APIでタスクの期限を設定する

Google Tasks APIでタスクの期限を設定するとき、タイムゾーンに注意する必要があります。Google Tasks上ではタスクの期限は日付(タイムゾーンはUTC固定、時刻は00:00:00固定)で扱うのが無難です。 注意すべき仕様 Taskモデルのdueプロパティはタイムゾー…

Picasa APIを利用するコードのユニットテスト

Picasa Web Albums APIのクライアントライブラリを利用するコードのユニットテストをどう実現するか考えてみました。結論としてはモックを使った普通のテストになりました。 テスト対象はドメインロジックとする。Picasaクライアントライブラリの実装にテス…

google-api-java-clientの文字化けと対処法

Google Tasks APIにアクセスするコードを書いているのですが、App EngineのProduction環境で文字化けするパターンがあったのでまとめておきます。ちょっと変わった使い方をしていたので見つけました。Tasks APIへのアクセスには google-api-java-client とい…

Picasaアルバムを撮影日ごとに仕分けする

6月に書いた記事のコードを書き直しました。新しいコードはgithubに上げています。Picasaのアルバムにある写真を撮影日ごとに仕分けするバッチです。図に描くとこんな感じです。PicasaにアクセスするにはGData APIを使います。Java向けにクライアントライブ…

ZabbixでHyper-Vの統計情報を取得する

Hyper-Vクラスタを運用する上で、ノードの負荷状況やメモリ使用量などは重要な監視項目になります。特に、仮想デスクトップを運用している場合は一部の利用者が全体のパフォーマンスを落とすことがあるため、原因調査と改善のために記録を残すことが重要です…

Task Queue用のジョブスケジューラを設計する

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アルバムを撮影日ごとに整理してくれるバッチ

Google Picasaは写真を保存しておくのに便利です。年間$5で20GBのスペースが手に入るのも魅力的です。Picasaでは、特定のメールアドレスに写真を添付して送ると「ドロップボックス」というアルバムに入るようになっています。この「ドロップボックス」の写真…

Picasaアルバムに画像をアップロードするコード

Google Picasaのウェブアルバムに画像をアップロードするバッチを書いています。Javaのコードはとても簡単ですが、クライアントライブラリを揃えるのに一手間掛かったのでメモします。Eclipseで新しいJava Projectを作成します。必要なライブラリを入手しま…

motionイベントのトラップ送信スクリプト

motionとZabbixによる監視カメラシステム - GeekFactory では、監視カメラの動きを検出した時にZabbixにトラップを送信する仕組みを紹介しました。動き検出にmotionというデーモンを利用しています。motionは動きを検出した場合に任意のスクリプトを実行でき…

motionとZabbixによる監視カメラシステム

監視カメラというと高価な専用システムを連想しますが、PCサーバとUSBカメラを使うと安価に実現できます。自宅サーバに取り組んでいる人は一度は経験しているかもしれませんね。プライバシーや検出精度の問題など、まともに運用していくのは非常に難しいシス…

Amazon LinuxとZabbixで始める監視サーバ

クラウドから自宅サーバを監視するのがマイブームです。ここではAmazon EC2にZabbixをインストールする方法を紹介します。 前提条件 EC2上でLinuxインスタンスを起動します。今回は Micro instance, Amazon Linux x86_64 を使用しました。以下が正常に動作す…

飲み屋で昔の上司と面談した話

「組織は過度に人を囲い込まない方がいい。先輩は外に放り出して、後輩が成長するチャンスを生み出すべき。外に放り出された方も新しい気づきを得て成長するだろう。」先週の飲み会で昔の上司と面談して、そんな話をしました。かつての先輩はみんな違う組織…

IX2015とOpenswanでIPsecトンネル

NEC IX2015とAmazon EC2インスタンスをIPsecトンネルモードで接続してみました。ほぼ自分用の備忘録なんですが、不備などご指摘いただけると嬉しいです。IX2015は動的IPのPPPoEに接続されています。EC2側のみ固定IPを確保できるため、IX2015からEC2に向かっ…

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

appengine ja night#14にて、AppEngine MapReduceと大量データ処理についてお話しさせて頂きました。speakerdeck.comTask ChainやQuery Chainの基礎的な話、AppEngine Mapperの仕組みについて解説しました。事例紹介などの派手なお話はできませんでしたが、…