UNIXエンジニアを募集してる会社の採用面接を受けた時の話。あくまでネタであって、宗教論争のつもりじゃないのであしからず。
転職エージェントに作れと言われて作ったシートに、「使っているテキストエディタ」という欄があったんです。
nanoとか秀丸とか色々書いたけど、一応WindowsでもUNIXでも使えて操作感が好きだったるので、
Vimと書いておいたのですが、それを見た仙人染みた長髪の面接官のリアクションが酷かった。
面接官「Vim・・・ふははっ!Vim!」
面接官「Vim使ってるんですか?wwwww」
俺「(唖然)は、はい・・まだVimscriptを理解したぐらいですが。。」
面接官「Vim・・・ニヤニヤ」
その人はEmacs信者と呼ばれていて、当然Vimくらい知っている人だったので、
Emacsが「テキストエディタではなく環境」と呼ばれている事を知らないワケが無いだろうと思っていた。
つまり、このリアクションは"理不尽な状況に直面した時にどう対応するか"を見ているんだろうと判断し、あえて突っ込みは入れずに対処した。
しかし最後の質問で「何故Ctrlキーを多用する様な操作を採用したんですか?」と聞くと、
気まずそうに理由を話し、最後に「・・・と、聞いてます」と答えた。
つまりこの人は神からEmacsを使えと言われたから使っているのであって、
特別Emacsに思い入れとか無いおっさんエンジニアなんだなあと分かった。
オムニ補完とかもVim発のテクニックだし、Emacsやってるなら補完に興味を持つのは普通だと思うんだけどなあ。
多分ガチで知らなかったんだろう。
2010/02/09
興味のあるテキストエディタにVimと書いておいたら面接で爆笑された
Inspired by http://d.hatena.ne.jp/moriyoshi/20100204/1265242273(興味のある言語にPHPと書いておいたら面接で爆笑された)
2010/02/05
darcsでFirewallを超える
github流行ってますね。オープンソース開発者にとってgitは必須アイテムでもあり登竜門的な技術要素になってきました。しばらくはgitが一般的なVCS(version control system)になっていくんだろうなと思います。まぁLinus氏が飽きればまた次のが流行るのかな。ちょっと前からgoのgtkバインディングを開発していますが、先日とある方がforkしてpull requestしてくれました。
David Roundy氏。知っている人は知っている、darcsのauthorです。ちょっと久しくdarcsを触って無かったので思い立ってバージョンを上げ、試してみました。
commitじゃなくてrecordだったり、logじゃなくchangesだったりと少しgitやsvnと違和感があったりもしますが、とても単一モジュールで動いているとは思えない程の機能を持ち合わせています。
昨日iratqqさんがmpc(Music Player Client: Client for Music Player Daemon)のhttpd版をHaskellで書いてたので試そうと思い、リポジトリを見たらpatch-tag.comというSCMサイトでした。これまたサービス自体もHaskellで書かれているとの事で、Haskellなんかまともに書けない私が参加して良いものだろうかとか考えながら登録してみました。
さて、darcsも内部では(デフォルトは)ssh通信を行うので、使うにはgitの時と同じ様に
Big Sky :: SSHポートが通らなくてもgithub.comにpushする方法
pushはsshを使うのでport 22が開いてないとpush出来ない物と信じ込んでいました。が、今日解決しました。
http://mattn.kaoriya.net/software/20081029172540.htm
Big Sky :: SSH/Gitの設定を修正しなくてもファイアウォール内からgithub.comにpushする方法こんな手順を踏まなきゃ駄目なのは分かってたんですが、なんとなしに「ssh.patch-tag.com」というキーワードでググってたら...見つけました!
Gitはトランスポート層が選択出来るのは知っていたけど、まさかこんな書き方出来るとは思ってなかった。
http://mattn.kaoriya.net/software/20090624103050.htm
How to get around firewalls using Patch-Tag « the Patch-Tag bloggithub.comがssh.github.com:443を開けているのと同じ様にpatch-tag.comもssh.patch-tag.com:443でsshを開けているとの事。ここに書かれている手順通りでも良いのですが、リポジトリ名を修正しなくても使える方法を今日はご紹介。
We have been tweaking the retrieval parameters for repository access via SSH. Did you know you can get around firewalls that block port 22? Thats right, we have now added support for this.
http://blog.patch-tag.com/2009/02/25/how-to-get-around-firewalls-using-patch-tag/
gitの時の手順と同じ様に、ssh/configファイルを使い、patch-tag.comへのsshアクセスをssh.patch-tag.comの443ポートへと繋ぎ変えます。
Host patch-tag.com
Hostname ssh.patch-tag.com
Port 443
IdentityFile c:/docume~1/mattn/.ssh/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes
ProxyCommand c:/docume~1/mattn/.ssh/connect -h ssh.patch-tag.com 443
proxyでFirewallを越えるのでProxyCommandを使います。connectはここにある物をコンパイルして使います。さて、これでokと思ったのですが1点問題が発生しました。何度やってもsshのログインプロンプトが表示されません。おかしいなと思い色々調べていたら
Wiki - WindowsConfigurationおーまいがっ!
If you want to use darcs over ssh you need to set up passwordless ssh login (password-based authentification is currently broken on windows).
http://wiki.darcs.net/WindowsConfiguration
Windows版は現状壊れてるのでパスワード無しでないと駄目らしい。それは痛い。puttyを使いたくない派には残酷なお知らせ。
諦めかけたその時思い出した。
Big Sky :: Windowsでもssh-agentとssh-addを使ってパスフレーズ入力を省略する。ちなみに手元の最新版ssh-env.batは以下の様になってます。
開発を始める前にコマンドプロンプトで1回これを動かすとパスフレーズを聞かれ、1回入力すれば以降は聞かれない様になる。
http://mattn.kaoriya.net/software/20081106192615.htm
@echo off
if "%1" == "-f" goto force
if not "%SSH_AGENT_PID%" == "" goto end
:force
for /f "eol=; tokens=1,2 delims==;" %%1 in ('ssh-agent.exe') do (
if "%%1" == "SSH_AUTH_SOCK" set SSH_AUTH_SOCK=%%2
if "%%1" == "SSH_AGENT_PID" set SSH_AGENT_PID=%%2
)
ssh-add
:end
強制フラグ付けただけですが...。これをコマンドプロンプトで1回実行した後にdarcsを実行します。
C:¥TEMP>ssh-env
Enter passphrase for /c/docume~1/mattn/.ssh/id_rsa:
Identity added: /c/docume~1/mattn/.ssh/id_rsa (/c/docume~1/mattn/.ssh/id_rsa)
C:¥temp>darcs get mattn@patch-tag.com:/r/mattn/mattn-testproject
Copying patches, to get lazy repository hit ctrl-C...
Finished getting.
C:¥temp>
うぉーーー!でけた。ちなみにチェックアウトしたファイルに変更を加えてdarcs pushもうまく動いています。これでdarcsライフも満喫出来そうです。gitとは少し違ったVCS味わってみませんか。
Google Chrome拡張がクラッシュして治らない時は...
なんでか分かんないけど、今日突然Google Chromeがクラッシュして落ちた。まぁdevチャネルつかってるからしょうがないかとは思ったんだけど、再起動したら1秒で「はてなブックマーク拡張」が落ちる様になった。いろいろ調べてもダメで、どうやら拡張が使ってるストレージが壊れた様子。
調べた結果
「はてなブックマーク拡張」はローカルストレージ自身に重要性は無かったので
見事復活出来ました。
ちなみにUNIX系だと
調べた結果
C:¥Documents and Settings¥ユーザ名¥Local Settings¥Application Data¥Google¥Chrome¥User Data¥Default¥Local Storage
には「chrome-extension_拡張ID」から始まるsqlite3のファイルがあり、どうやらこれが書き込まれている最中にクラッシュした為、読み込み出来なくなったみたい。「はてなブックマーク拡張」はローカルストレージ自身に重要性は無かったので
chrome-extension_dnlfpnhinnjdgmjfpccajboogcjocdla_0.localstorage
をためらい無しに削除、そして再起動。見事復活出来ました。
ちなみにUNIX系だと
$HOME/.config/google-chrome/Default/Local Storage
にあります。

