2012年03月01日

あるエンジニアの決意表明

私事ですが、1月末に12年弱勤めた会社を退職しました。

中堅SIerの、名もなき一社員の退職なので「退職しました」的エントリーを書くのもおこがましいのですが、退職を決断するまでに色々な事を考え、自分なりに期すところがあったので、決意表明としてここに書き残しておきたいと思います。

よろしければお付き合い下さい。

続きを読む
posted by 月水和尚 (とも) at 17:57 | Comment(4) | TrackBack(0) | その他もろもろ

2010年08月24日

DevQuiz2010のOAuthをtelnetで倒す

意外にも私以外にtelnetで倒したという話を聞かないので、何となく書いてみる。
Try and Errorでがちゃがちゃとやっていたので、内容的には少し順不同です。
(出来るだけ分かりやすい順序で書いてみました)

問題文は…転載していいのか分からないので省略。
このエントリ見てる方は皆さんご存じですよね、きっと。

まずはOAuthって何ぞ…と思って調べてたどり着いたのがこちらのページ。
(そんな奴がGDDに行こうとするなよ、と言うツッコミは置いといてw)

OAuthプロトコルの中身をざっくり解説してみるよ - ゆろよろ日記
http://d.hatena.ne.jp/yuroyoro/20100506/1273137673

Yahoo!デベロッパーネットワーク - OAuth - OAuthを用いたAPIリクエスト
http://developer.yahoo.co.jp/other/oauth/api.html

なるほど、どうやらAuthorizationヘッダとやらを送りつければいいようです。

各種パラメータについて、とりあえず問題文に以下の4つは指定がありました。

・認証のrealm:devquiz
・Consumer key: 7fded0d291561d16a4b8a651
・Consumer secret: a828fa17fdb32c3cf0956cb3
・署名方式:HMAC-SHA1

これでrealmoauth_consumer_keyoauth_signature_methodの3つは設定値が分かりました。

で、あとは分からない物を潰していく。

まずはoauth_nonce。これは何でもいいみたいだったので、上記のYahoo!で使っているサンプル値そのままにしてしまいました。

続いてoauth_timestamp。これは所謂UNIX時間を設定するようなのですが、求め方がよく分かりません。んで、ぐぐるさんに調べてもらったら以下のページを見つけました。

エポック秒(UNIX時間)変換マシーン
http://egg-in-oven.hp.infoseek.co.jp/epochsec.html

ボタン一発で計算終了。ありがたい事です。
ただ、ここで指定した時間と現在時刻が600秒以上ずれると認証が通らなくなってしまうようなので、作業はサクサクと進める必要がありました。

最後に残ったのがoauth_signature。これがものすごく複雑なんですが、以下のページに詳細な解説があったのと、間違えた時にDevQuizのサーバが「署名するのはこの文字列のはずだぜ」とご丁寧にも教えてくれたので、署名の方法自体は何とかなりました。

Yahoo!デベロッパーネットワーク - OAuth - リクエストの署名
http://developer.yahoo.co.jp/other/oauth/signinrequest.html

ただ「HMAC-SHA1アルゴリズムを利用して16進のダイジェスト値の生成→Base64エンコード→URLエンコード」という仕組みは分かっても、実際にどうやったら値が求められるのかさっぱり分かりません。前述のエポック秒(UNIX時間)変換マシーンのような一発変換のページを探してみたんですが、残念ながら見つけられず。

ここでうぬぬーと頭を抱えていたのですが、以下のページでPythonで実装されたOAuthのサンプルコードを発見しました。

Twitter API を OAuth で認証するスクリプトを 0 から書いてみた - trial and error
http://techno-st.net/2009/11/26/twitter-api-oauth-0.html

うん、どうやらPythonを使えば何とか出来そう。
とは言えPythonで全てを実装出来るほどのスキルはないので、署名の部分だけ対話型で打ち込んで何とかしてしまいました。
import time, random
import urllib, urllib2
import hmac, hashlib
hmac.new("a828fa17fdb32c3cf0956cb3&", "POST&http%3A%2F%2Fgdd-2010-quiz-japan.appspot.com%2Foauth%2F7fded0d291561d16a4b8a651&hello%3Dworld%26oauth_consumer_key%3D7fded0d291561d16a4b8a651%26oauth_nonce%3D24829.2331%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1281716837", hashlib.sha1).digest().encode("base64").strip()

これで最難関の署名が完成。

あとはPOSTメソッドでhello=worldというパラメータを送信するという指定なので、最終的には以下のようなデータを送る事になりました。

telnet gdd-2010-quiz-japan.appspot.com 80

POST /oauth/7fded0d291561d16a4b8a651 HTTP/1.0
Host: gdd-2010-quiz-japan.appspot.com
Authorization: OAuth realm="devquiz", oauth_consumer_key="7fded0d291561d16a4b8a651", oauth_signature_method="HMAC-SHA1", oauth_nonce="24829.2331",oauth_timestamp="1281716837",oauth_signature="Guti8N50so36JFGLtKIpC9XmdnI="
Content-length: 11

hello=world

これで「200 OK」。

問題の趣旨とはだいぶ解答方法が異なるような気がするのですが、うまく行ったので良しとします。直前にソースコード提出が必須になるという話があった時は正直ビビりまくりでしたw

個人的には、この問題のおかげでOAuthの仕組みをちょっとだけ理解出来たのが一番の収穫でした。今はOAuthを使ったGmail送信用のAndroidアプリを作成中。(いや、まだ一行もコード書けてないんですけど) それが完成したら頑張ってtwitterクライアントを書きたいなと妄想中。twiccaみたいなすごい奴じゃなくて、投稿/Reply専用の俺得クライアントになる予定ですが。

たまに自分を奮い立たせてくれるような宿題とかイベントがあるのはいいですね。
GDDに行けるかどうかは置いといて、おいらもっともっと頑張らないとな。
posted by 月水和尚 (とも) at 15:06 | Comment(0) | TrackBack(0) | その他もろもろ

2009年05月02日

DebugHacks&Tシャツ欲しい

『Debug Hacks』の書籍とTシャツがもらえると聞いてすっ飛んできました。

『Debug Hacks』とTシャツが当たるプレゼント
http://d.hatena.ne.jp/hyoshiok/20090430#p1

Debug Hacks Nightは5/28ですか。
6/5まで地獄のスケジュールだから行けそうにないなぁ…残念。
posted by 月水和尚 (とも) at 16:46 | Comment(0) | TrackBack(0) | その他もろもろ

2008年01月28日

【お知らせ】seesaa絶不調

当blogの設置先であるseesaaがここ数日絶不調です。
記事がうまく書けなかったり、頂いたコメントが表示されなかったり…。
障害レポートが出てないので、認識してるんだかしてないんだか。

そんなわけで、しばし不調モードでお送りします。
よろしくお願いします。

−追記−
お昼にやっと障害レポートが出ました。

障害報告: 障害報告(2008.1.28)
http://trouble.seesaa.net/article/81048449.html
posted by 月水和尚 (とも) at 13:02 | Comment(4) | TrackBack(0) | その他もろもろ

2006年12月28日

【こぼれ話】インク切れ

え〜と、どうでもいい話を一つ。

NICを2枚差ししたCentOSが物語の主人公。
その時使っていたNICはeth1だけでeth0は何もケーブルを刺していない状態。
この状態でネットワークサービスを再起動してみたところ…。
# service network restart
インターフェース eth1 を終了中: [ OK ]
ループバックインターフェースを終了中 [ OK ]
ネットワークパラメーターを設定中: [ OK ]
ループバックインターフェイスを呼び込み中 [ OK ]
インターフェース eth0 を活性化中:
eth0 のIP情報を検出中...失敗しました; インクがありません。ケーブルを確認?
[失敗]
インターフェース eth1 を活性化中: [ OK ]


インクがありません??(汗)


プリンタを使っているわけでもないのに何故…ちょっくら悩みましたが、しばらくして『リンクがありません』の誤訳だと言うことに気付きました。(英語のメッセージを確認してないんですがたぶん当たってるでしょう)

年賀状シーズンでちょっとプリンタと戯れる機会が多かったゆえに何だかツボに入るメッセージでした。


2006年ももうすぐお終いですね。
今年も一年『鳥』にお付き合い下さいましてありがとうございました。
来年もぼちぼちやっていきますので、また遊びに来てやってください。

それでは、良いお年を!
posted by 月水和尚 (とも) at 10:28 | Comment(3) | TrackBack(0) | その他もろもろ

2006年06月14日

100万円、と言えば・・・

クイズハンター!と答えたくなる私は既におじさん…。orz

それはさておき。
exciteで100万円の当たるキャンペーンを実施中。
blogに名刺を張るという、ちょっと面白い試み。
せっかくblogを持っているので応募してみました。
右下の方に名刺を貼り付けてありますので、興味のある方は見てみてください。

ゴールデンハンマーは持ち合わせていませんが、頑張ってみます。

毎週100万円の旅行、プレゼントキャンペーン | ネームカード(namecard):Excite エキサイト
http://media.excite.co.jp/namecard/camp/
posted by 月水和尚 (とも) at 23:37 | Comment(0) | TrackBack(0) | その他もろもろ

2006年01月17日

発見される男

ひょんな事から、一緒に仕事をしている方がここの読者であることが判明。
いやはや、世の中狭いですね〜。r(^ ^;
なんか恥ずかしくて顔から火が出るかと思いました。
Hさ〜ん、脅かしっこなしですよ!

これからは仕事サボってここを更新するのは自粛しなければ。(汗)
posted by 月水和尚 (とも) at 18:43 | Comment(0) | TrackBack(0) | その他もろもろ

2005年12月06日

面白がって

こんなサービスに登録してみました。

ランキングオンライン
ランキングオンライン

さて、何か変化があるかな?
posted by 月水和尚 (とも) at 07:33 | Comment(0) | TrackBack(0) | その他もろもろ

2005年01月25日

ここのデザイン変更

CSSをいじってここの表示フォントを変更。
linuxのコマンドとかプロポーショナルだと見にくくってさ〜。

  font-familyを全てmonospaceへ

非常に見やすくなりました。満足。

こちらを参考にさせていただきました。

Let's begin CSS -- 1.11
http://www.tg.rim.or.jp/~hexane/ach/lbcs/lbcs1-11.htm
posted by 月水和尚 (とも) at 17:42 | Comment(0) | TrackBack(0) | その他もろもろ