アゲイン

Pine と Gopher でネットに目覚めたエンジニアの卵が、18年後に再度初心に返るブログ

ハッセルブラッド タイマーの使い方

家族写真を撮るときくらいしかタイマー機能を使わないので、毎回検索しては結局自分が過去に書いたBlog記事に行き着く・・・という状況なので、ここにもメモしてこうと思います。

 

ハッセルブラッドでCレンズを使う際の、セルフタイマーの使い方

  1. ロック解除レバーを引き上げながら、セルフタイマーレバーを「X」から「V」の位置へ移動
  2. タイムレバーを「O」から「T」にスライド
  3. このままシャターボタンを押しても一応写るが、ミラーアップボタンを押してミラーを上げてからシャッターボタンを押すほうが良い

以上で、約10秒経つとシャッターが切れる

撮影後は、タイムレバーを「O」の位置に戻して、巻き上げクランクを回してチャージすると一連の作業の完了

 

Google App Engine でソースコードをダウンロードする方法

先日の Blog で、とりあえず Google App Engine を使うことに決めたのですが、実は App Engine のサービスが始まったばかりの頃に App Engine のアカウントを作っていて、App Engine アプリケーションも作成していました。
ただ。。手元には当時のソースコードが無いことに気づきました。。

昔は、開発者側でコードを管理してなければ(無くしてしまったら)、サーバーからダウンロードする術は無かった記憶があるのですが、今はそういう機能も付いているんですねー。

http://code.google.com/appengine/docs/python/tools/uploadinganapp.html#Downloading_Source_Code

 

appcfg.py download_app -A <your_app_id> -V <your_app_version> <output-dir>

 

と、コマンドから打つだけでした。

 

どんなものを当時アップしていたのかすら記憶に無かったので、若干期待してコードをのぞいてみると。。
超シンプルなウェブサービスが 1 つしかなく、拍子抜けしました。

あと、管理画面からログをのぞいてみると、今でもそのサービスにアクセスしてきている人がいて驚き (@o@;
でももうそのサービスは、使っているAPIのバージョンの関係上ちゃんと動作しないので、 あっさり消して、私の App Engine アプリケーションは晴れて真っ白な状態に戻りました。

 

ウェブサービスのホスト先を検討する

VPS (Virtual Private Server) だとか、Cloud Server だとか、最近のホスティング環境っていろいろあることに、今さらながら気づきました。

 

20年弱前、最初はプロバイダが提供するCGI機能を使ってウェブサービスを作っていましたが、そのうちもっと自由度が欲しくなりホスティング業者をつかうようになりました。

その後、10年ちょっとの間は自宅サーバーで用が済んでしまうようになったので、ホスティング事情に疎くなっていたら、なんだか凄いことになってるんですね。

 

私は無料で使いたい or 限りなく無料で使いたいというニーズがあるのですが、その制限においてどのようなホスティングサービスがあるのか、調べてみました。

 

とりあえず、羅列・・

  • Google App Engine 
    - 無料〜 (負荷が大きくなるようだったら有償にて継続利用可能、割りとリーズナブルな料金設定に感じる)
    - フレームワークタイプ (幾つかの言語で環境が用意されている)
    - コードのアップロードが部分的にできず、毎回一括アップロード
     
  • Amazon EC2 (Elastic Compute Cloud)
    - 初年度無料だが、払うと結構お金がかかる(年数万円〜というイメージ)
    - Xenベースで、基本的に自由にOSが使える
    - Xenベースだけど、うまくロックインされてしまう工夫になっている
     
  • Windows Azure
    - Windows前提っぽいのと、無料で使える条件が旧態然な料金プランなので、早々に調査中断
     
  • お名前.com VPSサーバー
    - 月々 2,457 円〜
     
  • さくらのVPS 
    - 月々 980 円〜
     
  • Osukini Server VPS 
    - 月々 450 円〜
     
  • ServersMan@VPS 
    - 月々 490 円〜

 

App Engine はフレームワークタイプなのを受け入れればコスパは最高だし、イザという時がやってきたとしても有償でスケーラビリティが得られるのが魅力。
EC2 は(私の利用イメージには)高いので、今回は見送り。ただ、高負荷なサービスをホストするには一番自由度も高そう&スケーラビリティありそうで安心かも。
Windows Azure は、なんだか古めかしい雰囲気が漂うのと、サイトが理解しにくすぎて断念。
お名前.com、さくら、Osukini、ServersMan については、どれも魅力的ですが、月々の費用が当初から必要になるので、もしも将来そこまでやってみたくなったら・・と、キープ。でも、そこまでやるなら EC2 にしたくなるかも?

 

とりあえず、今の自分のニーズには Google App Engine が良さげなので、GAE でがんばります。

Gopher クライアントを作りたい(3)

RFPを読んでみて、とりあえず

  • 基本作法 =
    『70番ポートで接続』
    『<CR><LF>送信すると、接続先サーバの持っている情報リストが返ってくる』
    『クライアントからの様々なコマンド送信によって結果が返ってくる』
    『サーバーはドキュメントの最後の行でドット(.) を送信し、コネクションを切断する』

あたりを実装すれば、Gopher の原型ができそうだと思いました。 

試しに、telnet を Gopher クライアント替わりにして Gopher サーバーにアクセスしてみようと思います。

 

 

今でも生きている Gopher サーバー(これを探すのに手こずりました。。検索して見つけました)
gopher.quux.org
に、70番ポートで telnet 接続してみると、当然つながりました。

$ telnet gopher.quux.org 70
Trying 78.47.53.23...

Connected to www.quux.org.
Escape character is '^]'.

 

その後、リターンキーを押すと。。。

iWelcome to gopher at quux.org!    fake	(NULL)	0
i	fake	(NULL)	0
iThis server has a lot of information of historic interest,	fake	(NULL)	0
ifunny, or just plain entertaining -- all presented in Gopher.	fake	(NULL)	0
iThere are many mirrors here of rare or valuable files with the	fake	(NULL)	0
iaim to preserve them in case their host disappears.  PLEASE READ	fake	(NULL)	0
i"About This Server" FOR IMPORTANT NOTES AND LEGAL INFORMATION.	fake	(NULL)	0
i	fake	(NULL)	0
0About This Server	/About This Server.txt	gopher.quux.org	70	+
1Archives	/Archives	gopher.quux.org	70	+
1Books	/Books	gopher.quux.org	70	+
1Communication	/Communication	gopher.quux.org	70	+
iThis directory contains the entire text of the book	fake	(NULL)	0
i"We the Media: Grassroots Journalism by the People, for the People"	fake	(NULL)	0
iby Dan Gillmor in various formats.	fake	(NULL)	0
i	fake	(NULL)	0
iFeel free to download and enjoy.	fake	(NULL)	0
1Computers	/Computers	gopher.quux.org	70	+
1Current Issues and Events (Updated Apr. 23, 2002)	/Current	gopher.quux.org	70	+
1Development Projects	/devel	gopher.quux.org	70	+
0Gopher's 10th Anniversary	/3.0.0.txt	gopher.quux.org	70
1Government, Politics, Law, and Conflict	/Government	gopher.quux.org	70	+
0How To Help	/How To Help.txt	gopher.quux.org	70	+
1Humor and Fun	/Humor and Fun	gopher.quux.org	70	+
1Index to Quux.Org	/Archives/index	gopher.quux.org	70
1Internet	/Internet	gopher.quux.org	70	+
1Other Gopher Servers	/Software/Gopher/servers	gopher.quux.org	70
1People	/People	gopher.quux.org	70	+
1Reference	/Reference	gopher.quux.org	70	+
1Software and Downloads	/Software	gopher.quux.org	70	+
1The Gopher Project	/Software/Gopher	gopher.quux.org	70
0What's New	/whatsnew.txt	gopher.quux.org	70	+
Connection closed by foreign host.
$ 


おぉ!リストが得られました!!

最後に自動でコネクションが切られ、プロンプト『$』表示に戻っているのも確認できました。 

 

このサーバが動いていることが確認できたので、同様の動きをするプログラムを Python で書いてみることにしました。

from socket import *

s = socket(AF_INET, SOCK_STREAM)
s.connect( ('gopher.quux.org', 70) )
s.send('\r\n')

msg = ''
while True:
  chunk = s.recv(8192)
  if not chunk: break
  msg += chunk
#s.close() #サーバがコネクションを切るので不要だった

print msg

として実行してみると

iWelcome to gopher at quux.org!    fake	(NULL)	0
i	fake	(NULL)	0
iThis server has a lot of information of historic interest,	fake	(NULL)	0
ifunny, or just plain entertaining -- all presented in Gopher.	fake	(NULL)	0
iThere are many mirrors here of rare or valuable files with the	fake	(NULL)	0
iaim to preserve them in case their host disappears.  PLEASE READ	fake	(NULL)	0
i"About This Server" FOR IMPORTANT NOTES AND LEGAL INFORMATION.	fake	(NULL)	0
i	fake	(NULL)	0
0About This Server	/About This Server.txt	gopher.quux.org	70	+
1Archives	/Archives	gopher.quux.org	70	+
1Books	/Books	gopher.quux.org	70	+
1Communication	/Communication	gopher.quux.org	70	+
iThis directory contains the entire text of the book	fake	(NULL)	0
i"We the Media: Grassroots Journalism by the People, for the People"	fake	(NULL)	0
iby Dan Gillmor in various formats.	fake	(NULL)	0
i	fake	(NULL)	0
iFeel free to download and enjoy.	fake	(NULL)	0
1Computers	/Computers	gopher.quux.org	70	+
1Current Issues and Events (Updated Apr. 23, 2002)	/Current	gopher.quux.org	70	+
1Development Projects	/devel	gopher.quux.org	70	+
0Gopher's 10th Anniversary	/3.0.0.txt	gopher.quux.org	70
1Government, Politics, Law, and Conflict	/Government	gopher.quux.org	70	+
0How To Help	/How To Help.txt	gopher.quux.org	70	+
1Humor and Fun	/Humor and Fun	gopher.quux.org	70	+
1Index to Quux.Org	/Archives/index	gopher.quux.org	70
1Internet	/Internet	gopher.quux.org	70	+
1Other Gopher Servers	/Software/Gopher/servers	gopher.quux.org	70
1People	/People	gopher.quux.org	70	+
1Reference	/Reference	gopher.quux.org	70	+
1Software and Downloads	/Software	gopher.quux.org	70	+
1The Gopher Project	/Software/Gopher	gopher.quux.org	70
0What's New	/whatsnew.txt	gopher.quux.org	70	+

なんともあっけない。。

 

 

一応 socket を使ってみたのですが、Python には telnet モジュールもあったので使ってみると。。

from telnetlib import *

tlnt = Telnet('gopher.quux.org', 70)
tlnt.write('\r\n')
print tlnt.read_all()

とすることで同じ結果を得られました。

 

Gopher では、いきなり <CR><LF> を送信せずに、検索クエリを入力すると検索結果のリストが得られますし、ドキュメントへのパスを入力するとそのドキュメントの内容が得られます。

なので、あとはサーバーへの接続後に送信する内容を変更することでいろんな操作ができる Gopher クライアントにできそうです。

そこまで本格的なクライアントを作りたい欲求が今はないので、「Gopher クライアントを作りたい」はここで終了。 

 

 

 

 

Hatena Blog で、ブログ内へリンクを貼る方法

はてなブログで日記を書く際、私ははてな記法モードではなく、見たままモードで書いています。

同じブログ内にリンクを貼ろうとすると、ドメイン部分がごっそり抜け、リンクの先頭文字が /(スラッシュ) で始まらないフォーマットに自動的に修正されてしまいました

例えば、 http://amize.hatenablog.com/entry/2012/01/13/230736 という記事中で、http://amize.hatenablog.com/entry/2012/01/12/112212 へのリンクをセットすると、そのリンクのHTMLが

<a href="http://amize.hatenablog.com/entry/2012/01/12/112212">

ではなく

<a href="2012/01/12/112212">

と自動修正されてしまう為に、そのリンクを押すと

 http://amize.hatenablog.com/entry/2012/01/13/230736/2012/01/12/112212

へ飛ぼうとしてしまい、ちゃんとリンクできませんでした。。
HTMLモードで修正しても、元の相対リンクに戻ってしまいます。 

 

その場合、ポート番号も設定してやることで問題が回避できました。

<a href="http://amize.hatenablog.com:80/entry/2012/01/12/112212">

 

 

とりあえず備忘録として