2011/05/11


僕にとってデカいニュースが飛び込んできた。
Goの開発プロジェクトに関わってて良かった。今日はそう思える日になりそうだ。
まだGoogle App Engine Blogにもエントリされてないが、Google App EngineにGo言語が仲間入りした。
Downloads - Google App Engine - Google Code

Google App Engine SDK for Go

http://code.google.com/intl/en/appengine/downloads.html#Google_App_Engine_SDK_for_Go
Go言語は元々Google社員が開発している言語で、コンパイル型言語とは言えDuckTypingを前面に押し出した、スクリプト言語に近い仕様になっています。またWebに関するAPIは豊富で短いコードで簡単にWebアプリケーションを書く事が出来る様になっています。
例えば、先日書いたコマンドライン向けTwitter Clientであれば、OAuthライブラリこそ他に頼っているがメインのコードは350行だ。

さて今回公開されたGoogle App Engine for Goだが仕組みはGoが元々持っているWebサーバ機能を使っている。ソースはコンパイルせずに配置しapp.yamlファイルは以下の様に書く。 application: helloworld
vesion: 1
runtime: go
api_version: 1

handlers:
url: .*
  script: _go_app
この _go_app は固定。実行すると内部でコンパイルされ、applicationで指定したパッケージのinit関数が呼び出される。アプリケーションはあくまでパッケージとして提供し、main関数は書かない。なのでinitでハンドラを登録する。
極端に簡単なアプリケーションを書くとすると、以下の様になる。 package helloworld

import "http"

func init() {
    http.HandleFunc("/"func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type""text/plain")
        w.Write([]byte("Hello, World"))
    })
}
まぁ簡単。もちろんGoogle App Engine上で動く言語 Python や Java と同様に appspot.com でホストする場合はローカルディスクにはアクセス出来ない。ただし既に
  • blobstore
  • datastore
  • mail
  • memcache
  • taskque
  • urlfetch
  • user
という他の言語と同じだけのAPIは既に用意されている。Goにはポインタやアドレスという概念がある為にメモリに直接アクセスする様な事も出来るが、Goはその全てをランタイムを介して行っているのでそれらを例外として扱う事が出来る。
なお、appengine向けのGoランタイム上で動作する為、appspot.com でホストする場合にはコンパイル済みのモジュールを配置する事が出来ない。こちらは python で pyd が置けないのと同じですね。

まさかPerlよりも先にGoogle App Engine向け言語として採用されるとは思ってませんでした。ようやく日の目を浴びる事になりますね。

Go言語はじまったな

Posted at by



2011/05/10


こんにちは、ホストクラブ「今夜もvim vim」でホストをしていますmattnです。私は補完も使わないしバッファセレクタも使いませんが、ネタプログラミングについてはプロフェッショナル。今回は、モテるvim女子力を磨くための4つの心得を皆さんにお教えしたいと思います。

1. 「終了出来なーい」と言っておく

あえてインサートモードのままにしておき、visualbellを鳴らす様に設定しておきましょう。

そして飲み会の場で好みの男がいたら話しかけ、わざとらしくvimを起動し「あ~ん! このテキストエディタマジでチョームカつくんですけどぉぉお~!」と言って、男に「どうしたの?」と言わせましょう。言わせたらもう大成功。「終了できない~!:wqってなにぃ~!ピーピーって音がなるだけ~!ぷんぷん(怒)」と言いましょう。

だいたいの男は自分の専門性をアピールしたがる習性があるので、横からESCキーを押しに来るはずです。

そこで男が設定を見て「visualbellの設定になってるじゃないか」と言ってくるはず(言ってこない空気が読めない男はその時点でガン無視OK)。そう言われたらあなたは「なんかなんかぁ~! 最近UniteとかVimshellが話題なんでしょー!? あれってどうなんですかぁ? 新しいvimscript作りたいんだけどわかんなぁぁああい!! 私かわいそーなコ★」と返します。すると男は「Uniteプラギンとかでしょ? 非同期でアクションも書けるよ。本当に良くわからないみたいだね。どんなプラギンを作りたいの?」という話になって、次の休みの日にふたりきりでペアプログラミングができるというわけです。あなたの女子力が高ければ、男がたまっていたタスクも片付けてくれるかも!?


2. 「>」のキーマップに「<」を設定しておくとモテる

「キャー!」とか「悲しい!」などを表現する「><」をvimで入力する際に少しでもタイプを少なくする為に

:iabbr > ><

と設定しましょう。 男性プログラマーは「なんかこの子カワイイなぁ」や「支えてあげたいかも」や「この子タイプはえぇな」と思ってくれます。ただしプログラミング時に適用すると不等号が正しく入力出来ないので

:iabbr > ><

と全角で設定しても良いですが、それほどタイプ数は減りません。また、これごときに入力補完を使うのはやめましょう。「コイツ、玄人だ」と思われてしまいます。


3. とりあえず男には「えー!ネオコン?なにそれ!? 知りたい知りたーい♪」と言っておく

vim勉強会などで男が女性に話すことといえば入力補完やUniteプラギンの話ばかり。よって、女性にとってどうでもいい話ばかりです。でもそこで適当に「へぇーUniteってマクドナルドのドリンクも補完出来るんですか~?」とか「zencodingって全然コーディング出来ないの略なんですか?」と返してしまうと、さすがの男も「この女ダメvimmerだな」と気がついてしまいます。ダメvimmerだとバレたら終わりです。そこは無意味にテンションをあげて、「えー!Uniteプラギン?なにそれ!? 知りたい知りたーい♪」と言っておくのが正解。たとえ興味がない話題でも、テンションと積極性でその場を乗り切りましょう。積極的に話を聞いてくれる女性に男は弱いのです。

いろいろと話を聞いたあと、「fuzzyfinderはvimの入力補完を使っていて、Uniteは使ってないんですね! 覚えたぞぉ! メモメモ!」とコメントすればパーフェクト。続けて頭に指をさしてくるくる回しつつ「zinbu zinbu! またMacVimか!」と言って、「どうしたの?」と男に言わせるのもアリ。そこで「Bramの作る物はなんでも凄いでありますっ☆」と言えば女子力アップ! そこでまた男は「この子おもしろくてキモカワイイかも!?」と思ってくれます。vimスキルなくてブスだとしても、こういうテクニックを使えば知識がないvim女のほうがモテたりするのです。男は優越感に浸りたいですからね。


 

4. テキスト編集では入力補完が使えない女をアピールせよ

男とペアプロ状態に入ったら、とりあえず沢山タイプして「あーん! タイプミスばっかり~(悲)」と言いましょう。するとほぼ100パーセント「どうしたの? 何か変なの?」と聞かれるので、「いっぱい間違えちゃうんですっ><」と返答しましょう。ここでまた100パーセント「どうして?そんなに難しい?」と聞かれるので、うつむいて3~5秒ほど間をおいてからボソッとこう言います。「……だって、……だって、vimっていっぱいタイプさせて全然便利じゃないじゃないですかぁっ! キーボードがかわいそうですぅ! きっとキーボードさん痛い痛いって言ってますぅ……」と身を震わせて言うのです。

その瞬間、あなたの女子力がアップします。きっと男は「なんて優しい天使のようなコなんだろう! 絶対にゲットしてやるぞ! コイツは俺の女だ!」と心のなかで誓い、あなたに惚れ込むはずです。意中の男と付き合うことになったら、そんなことは忘れて好きなだけneocomplcacheを使って大丈夫です。どんなコードも一瞬で補完してみせてあげましょう。


(文=闇のvimmer mattn)

Inspired By
モテる女子力を磨くための4つの心得「オムライスを食べられない女をアピールせよ」等 – Be Wise Be Happy Pouch[ポーチ]
モテるプログラマー女子力を磨くための4つの心得
Posted at by



2011/05/02


普段からvimでtwitterしてますが、どっちかっていうとtwitter見たりボヤいたりするのにもコンソールのままでいたい派です。

ページャとか、自分で拾うのでコンソールにまま出力されてくれればいい...そんなtwitterクライアントが欲しかったので自分で書いた。

mattn/twty - GitHub

twty: command-line twitter client

https://github.com/mattn/twty

Go言語で書いたのは一度ビルドすればexeだけでランタイムが要らないから。あとGoだと簡単に書けるのよね。僕は。

ただ残念ながらどうしてもWindowsのコマンドプロンプトをサポートから外す訳にいかなかったのでGoのiconv拡張だけはライブラリとして入れる必要があります。

なお、この場合出来上がったexeとiconv.dllだけあれば動作します。USBかなんかで持ち歩けばどこでもtwitter出来ます。

go-iconv には依存しなくなりました。

実行すると初回は自動でブラウザが起動して、PINコードの入力を求められるので、ブラウザに出てる番号をコピペして下さい。使い方は

# twty -h

で分かる内容のままですが、だいたいこんな動きになります。

# twty -h
Usage of twty:
  -f ID: specify favorite ID
  -i ID: specify in-reply ID, if not specify text, it will be RT.
  -l USER/LIST: show list's timeline (ex: mattn_jp/subtech)
  -u USER: show user's timeline
  -r: show replies
  -v: detail display

# twty
mattn_jp: あーあー
☃☃☃☃☃☃☃☃☃: いーいー
...

こんな感じ

# twty -r
☃☃☃☃☃☃☃☃: @mattn_jp こちらこそです。ドキュメント直したり、ソースに手を入れて pull したりという程の腕も頭もないです。この程度のお手伝いでしたら、喜んでヤリマッセw
☃☃☃☃☃☃☃☃: ハァハァwww RT @mattn_jp: うし。コマンドラインで使えるtwitter clientでけた。goで書いたからランタイム要らない。USBに入れとけばいつでもどこでも... もちろんwin32も対応。
...

こんな感じ

# twty -u mattn_jp
mattn_jp: うし。コマンドラインで使えるtwitter clientでけた。goで書いたからランタイム要らない。URLに入れとけばいつでもどこでも... もちろんwin32も対応。
mattn_jp: URLってなんだ。USBねw
...

こんな感じ

# twty -l mattn_jp/subtech
☃☃☃☃☃☃☃☃☃: java-ja からきました、っていえば下品なこともいい放題ですし。
☃☃☃☃☃: 懇談会どこ? #perlcasual
...

こんな感じ

# twty -v
☃☃☃☃☃: ☃☃☃☃☃☃☃
  懇談会どこ? #perlcasual
  XXXXXXXXXXXXXXXXX
  Thu Apr 28 10:11:08 +0000 2011

☃☃☃☃☃☃☃☃☃: ☃☃ ☃☃
  朝までのんでればいいんじゃ RT @☃☃☃☃☃: &gt;&lt; RT @☃☃☃☃☃☃☃☃: 俺明日早いんすよねー RT @☃☃☃☃☃: @☃☃☃☃☃☃☃☃ 見せ決まったらおしえて///  #perlcasual
  YYYYYYYYYYYYYYYYY
  Thu Apr 28 10:14:34 +0000 2011

設定ファイルはWindowだと

%APPDATA¥&twty¥settings.json

に格納されます。

Posted at by