バイドゥ(百度)株式会社で働くR&Dエンジニアとして、世界一楽しい検索エンジンを作っています。情報系大学院生が、腕一本で「世界で一番アツい会社」に就職するまで&してからの記録。
29 11月
研究とか、いろんなデータ処理していると、ワンライナーをさくっと書きたい場面に出くわすことがあります。 自分は sed や awk にあまり慣れてなく、いちいち man 見ながらちまちま打ち込むよりはいつも使い慣れている Ruby の正規表現でさくっとワンライナーでも書けたら便利ですよね。で、ググったら意外にRubyのワンライナー情報がなくてびっくり。まぁ、Perlもあるしあんまり需要が無いのかも知れませんが。
ということでRubyでワンライナー書くときのまとめ。
ちなみにワンライナー自体についてはここを参照してください。
ワンライナーとは - はてなダイアリー
http://d.hatena.ne.jp/keyword/%A5%EF%A5%F3%A5%E9%A5%A4%A5%CA%A1%BC
使うRubyの実行時オプションは以下の2つです。
-e … このオプションのあとにスクリプト片を与えると、ファイルからスクリプトを読み込むのではなくそれをそのまま実行してくれます。(例えば、ruby -e ‘print “Hello World!¥n”‘ とすると画面にHello World!が表示されます。
-p … このオプション(引数なし)を与えると、プログラム全体が
while gets
…
print $_
end
で囲まれているかのように動作します。(…には上のスクリプト片が入る)
詳しい説明については以下のリファレンスを参照してください。
こうすると、例えば
ruby -n -e ‘gsub(/ +/, “¥t”)’
で、ファイル中のスペースの連続をタブに置き換えてくれるワンライナーが書けます。これはデータをExcelに流し込むときに便利。また、
ruby -n -e ‘$_.upcase!’
は、ファイル中のアルファベットをすべて大文字にしてくれるワンライナーになります。
ポイントは、$_から読み込んで$_に出すようなコード片を書くこと。もしくは上のupcase!みたいに破壊的メソッドを使うか。まぁ、このへんはRubyやってる人には朝飯前でしょう。
ちなみに、ワンライナーを非常に頻繁に使いそうなら、シェルの設定で、(zshなら.zshrc, bashなら.bachrcに)
alias -g ROL=’ruby -p -e’
としておくと(ROLはRuby One-Linerの略。別に何でもいい)、上のが
ROL ‘$_.upcase!’
とか書けてとっても幸せです。
おまけ:
ROL ’sub!(/$/, “www”)’
文末に全部「www」を付けて、人を小馬鹿にしたような文章にするワンライナー。くだらねーwww
24 11月
最近Mac OS X 10.5 Leopardを入れました。個人的には、全体的にさくさく動くようになったのと、Spotlightでの検索がすごく早くなったので、これだけで8千円払った価値があったかなと満足してます。(逆に言うと、そのほかの新機能は実は全然活用してなかったりする。)あとは、操作中(具体的にはアプリケーション切り替え時)に突然フリーズしなくなったのも大助かりです。
一点気づいたのは、TeXの日本語まわりに問題が生じたこと。僕はTeXには、以下の「pLaTeX Quick」を使っているのですが、
具体的には、dviを表示しようとすると、「フォントが無い」と怒られ、日本語フォントが全く表示されなくなるという症状です。
検索してみたら、同様の問題が生じてる人が何人かいる模様。どうやら、Leopardになってフォントの場所が微妙に変わったのが原因のようで、以下のようにシンボリックリンクを張り替えると「とりあえず」解決します。
【テックス】 ¥title{¥TeX on MacOS} 【ではない】
http://pc11.2ch.net/test/read.cgi/mac/1076890025/
713 :名称未設定:2007/10/27(土) 15:42:14 ID:ZJqvl+mV0
>711
たぶんヒラギノがインストールされているパスが変わっているのが原因。
/usr/local/share/texmf/fonts/opentype/
にあるヒラギノへのシンボリックリンクを張り替えるといい。
今までのヒラギノ6書体は/Library/Fonts/に移動して、
/System/Library/Fonts/には代わりに新しい4書体が入った。
ヒラギノ明朝 ProN W3.otf
ヒラギノ明朝 ProN W6.otf
ヒラギノ角ゴ ProN W3.otf
ヒラギノ角ゴ ProN W6.otf
ターミナルから次のコマンドを実行して
リンクの張り替えたらとりあえず動いた。
sudo rm /usr/local/share/texmf/fonts/opentype/HiraMinPro-W3.otf
sudo rm /usr/local/share/texmf/fonts/opentype/HiraMinPro-W6.otf
sudo rm /usr/local/share/texmf/fonts/opentype/HiraKakuPro-W3.otf
sudo rm /usr/local/share/texmf/fonts/opentype/HiraKakuPro-W6.otf
sudo rm /usr/local/share/texmf/fonts/opentype/HiraKakuStd-W8.otf
sudo rm /usr/local/share/texmf/fonts/opentype/HiraMaruPro-W4.otf
sudo ln -s /Library/Fonts/ヒラギノ明朝¥ Pro¥ W3.otf /usr/local/share/texmf/fonts/opentype/HiraMinPro-W3.otf
sudo ln -s /Library/Fonts/ヒラギノ明朝¥ Pro¥ W6.otf /usr/local/share/texmf/fonts/opentype/HiraMinPro-W6.otf
sudo ln -s /Library/Fonts/ヒラギノ角ゴ¥ Pro¥ W3.otf /usr/local/share/texmf/fonts/opentype/HiraKakuPro-W3.otf
sudo ln -s /Library/Fonts/ヒラギノ角ゴ¥ Pro¥ W6.otf /usr/local/share/texmf/fonts/opentype/HiraKakuPro-W6.otf
sudo ln -s /Library/Fonts/ヒラギノ角ゴ¥ Pro¥ W8.otf /usr/local/share/texmf/fonts/opentype/HiraKakuStd-W8.otf
sudo ln -s /Library/Fonts/ヒラギノ丸ゴ¥ Pro¥ W4.otf /usr/local/share/texmf/fonts/opentype/HiraMaruPro-W4.otf
ただし、PDFに変換するときにwarningが出たりで、ちょっと完治とまではいかない様子です。
とりあえずさらに深刻な問題が出るまで様子見ですね。
21 11月
[WP:Plugin] 被ブックマーク数表示+ランキング生成プラグイン | AOINA.COM
http://aoina.com/archives/18
を入れてみました。
「記事の被ブックマーク数」は、その記事の「有用さ」としてはかなり信頼に足る指標だと思っています。なので、例えばあるブログを初めて訪れた時には、そのブログの「ホットエントリ」(被ブックマーク数の多い記事)を見ればそのブログの特徴や個性がかなり的確に分かりますよね。ブログによっては、サイドバーに「人気の記事」なんてリストがあったりして、これをぜひ付けてみたい、でも自分で作るのは面倒、と思っていたところでした。
上のプラグインを入れると、各記事に対するブクマ数の表示、ブクマページまでのリンクの自動生成、そして「ホットエントリ・リスト」の自動生成まで、一行書くだけでやってくれます。
こう見てみると、定番のはてブ以外にもぽつぽつブクマがついていたりして新たな発見です。訪問者のみならずブログの管理者側から見ても役立つプラグインですね。
ちなみに、プラグインのコードを書くときにちょっととまどったので、これを期にWordPressも少しずつ覚えていきたいっす。
19 11月
突然ですが、しばらく「テレビを見ない生活」をしてみようと思い立ちました。
個人的なポリシーなんだけど、何かをやめたい時は、「ガマンする」のではなく、自然と「やりづらくなる」方法を探るべき、というのがあります。ガマンするとストレスにもなるし、最終的にリバウンドした時が恐いですから。IDEA*IDEAの以下の記事にも通ずるものがあります。
何かをやめたいときにはそれをするのがより困難になるように仕込むべし | IDEA*IDEA
http://www.ideaxidea.com/archives/2006/03/post_65.html
テレビをだらだら見てしまう、のは、テレビをだらだら見ることが快感になっているから、その快感を知っているからで、「こんなことしてるよりも、あれをしなきゃ」と罪悪感に苛まれるのなら、むしろ最初から「見られないのならしょうがないや」という状況を作り出してしまえば楽にやめられるのです。
自分はテレビっ子では無いのですけど、やはりテレビを切り捨てるのはかなり勇気が必要です。周りにも「自分はテレビを見ない」と公言している人が何人かいるのですが、そういう人に限って、「自分はテレビを見ない」というのを、世間の話題について行けない言い訳にしているような感じがしたり、世間と(悪い意味で)ちょっとずれてたりして、「頼むからテレビぐらい見てくれ」と思ったりもします(苦笑)。それで仕事とかで人並み外れたパフォーマンスを発揮しているならまだ良いのですが、必ずしもそういうわけではないんですよね。
でも、今の自分は就職や卒業に臨む大事な時期にあるわけだし、常に「自分はテレビを見ない」と公言までしなくても、数ヶ月〜1年ぐらいの期間、「しばらくテレビは見ない」という選択もアリだな、と考え、しばらくテレビを見ないようにしてみました。方法は簡単。「テレビからアンテナ線を外す」だけです。これで、「わざわざアンテナ線を繋ぐコスト > テレビを見たい欲求」になるので、自然とテレビを見るのをやめることができました。これでうちのテレビは晴れてDVDプレイヤーの専用モニターと化しました。
世間の話題から遅れる、というリスクはあるものの、これまでダラダラとテレビを見ていた時間を他の有意義なことに回すことによって、人生全体の「充実度」がアップすると思っているので(というかそうでなければテレビやめたりしない)、そこはトレードオフの関係だなと思ったりします。
ちなみに、主にニュースネタについて、これまでテレビから仕入れていた情報を他のところから仕入れる必要が生ずるわけですが、これについても手を打ってあります。詳しくはまたエントリを改めて。
9 11月
最近、某案件でJavaScriptをガリガリと書く必要があって、これまでprototype.jsを使っていたのを改め、今さらながらライブラリとしてjQueryを使っています。
これはまた良いライブラリですね。
一言で言うと、「汚いけど書いてて気持ちいい」。略して「キタナ気持ちイイ」JavaScriptライブラリです。
例えば、id=elemの要素の前にある要素の幅とフォントを設定して表示してから内容を設定して選択・・・というような一連の処理を、以下のようにドット演算子でドンドン繋げて書けるのがすばらしい。
$(”#elem’).prev().width(100).css({fontSize: “12px”}).show().val(”hoge”).select();
あとは、例えば要素をグリグリ移動したりする系のWebアプリだと、自分でこんな拡張↓を書いてやると
さらに幸せになります。これは、要素のY座標を一発で取得(もしくは設定)してやる関数です。
jQuery.prototype.top = function(val) {
if (val == undefined)
return this.offset().top;
else
return this.css(”top”, val + “px”);
};
しかし、このjQueryの「キタナ気持ちイイ」感じ、どこかで見たことあると思ったら、まさしくRubyの「キタナ気持ちよさ」じゃないですか。eachとかそもそも「$」とか、人間の理解上自然な範囲でメソッドを濫用(オーバーロード)してるところとか、上のように処理の順にドット演算子でずらずらつなげられるところとかそのまんま。
前にまつもとゆきひろさんが講演で、言語の設計において多くの人が「シンプルにしすぎてしまう」という過ちを犯す、ということを話しておられました。プログラミング言語において、シンプルさイコール書きやすさ、ではないことはRubyの非シンプルさが証明しています。
考えてみればWebサービスなんかもそうですね。自分らエンジニアって、ついつい設計を美しくシンプルにしてしまう傾向があるのだけれども、それが必ずユーザーの気持ちよさに繋がっているかどうかを常に自問自答する必要がありますね。
8 11月
「応募先の数だけ、レジメがある」
と最近読んだ就活本に書いてありました(引用元失念。そのうちレビューします)。応募先によってアピールポイントも見方も変わるので、それに対応させて、重要な点を絞り強調したレジメを書くべきだ、と。
結局、様々な応募先に対応させて最小公倍数的なレジメを書こうとしても、何がポイントか分からなくなって
最大公約数的なものになってしまうんですよね。
とはいっても、応募先を決めてからはじめてレジメ作りに取りかかっているようでは、就活において潜在(?)雇用主を逃すおそれがあるので、やはり最低、最大公約数的なレジメもほしいもの。
ということで、本ブログのResume(履歴書)を最近の情報も入れつつ更新してみました。実は前に某大手検索エンジン会社からオファーらしきものが来たときに提出したものと同じだったりします。果たしてこれで良かったのだろうか・・・。内容は、研究内容がよく分かるように、少しアカデミック寄りです。
ちなみに、レジメを書くときに以下のサイトを参考にさせてもらいました:
Tech Resumes: Get the IT Job You Want
http://itmanagement.earthweb.com/career/article.php/3676341
Nobuyuki Shimizu
http://www.cs.albany.edu/~shimizu/
特に後者のS水さんのレジメは、分野および境遇(?)が似ていることから大変参考になりました。この場を借りてお礼申し上げます。