2009 年 11 月 11 日 by tumf — C++, lang
たかはらです。
Googleが新しいプログラム言語を発表しました。早速プログラムされている方(1 2)とか尊敬します。最近はご無沙汰ですが、C++最強説を今だに唱え続ける自分としてはGo For C++ Programmersのようなドキュメントをみるとうれしくなってしまいまして、Go For C++ Programmersの最初の”Conceptual Differences”部分を勝手に和訳しました。権利的に問題があれば削除します。
適当に訳したので致命的な誤訳はありそうです。コメント欄で指摘頂けるとありがたいです。
以下、訳となります。
この投稿の続きを読む »
2009 年 7 月 17 日 by hnw — お知らせ
株式会社ディノでは技術者の中途採用を随時行っています。いま現在も一緒に仕事する仲間を募集しています。本記事では、採用の方針や採用フローのご紹介をさせて頂きます。
募集するエンジニアについて
ディノではプログラミング・データベース・サーバ管理などの分野について一家言あるようなエンジニアを募集しています。ディノは社長が技術者ということもあり、技術指向の強いメンバーが集まっている会社だと思います。これは本ブログの内容からも見て取れるのではないでしょうか。
弊社ではプログラミング言語としてPHPを採用していますが、プログラミング言語の知識はそれほど重視していません。Webで複数人での開発を経験されている方なら、言語の知識は大して重要ではないと考えています。また、多少経験が足りなくても熱意のある方なら大歓迎です。入社後にはsymfonyを利用してWeb+DBシステム構築のプロジェクトに参加して頂くことになります。
サーバ・ネットワークまわりに特化したエンジニアも募集しています。サーバ周りでは仮想化技術に特に注力していますので、面白そうな会社だと思った方はぜひ一度面接にいらしてください。
この投稿の続きを読む »
2009 年 7 月 14 日 by hnw — PHP
PHP 4.4.0以降およびPHP 5.0.5以降では、最大の整数が定数PHP_INT_MAXとして定義されています。
$ php -r 'var_dump(PHP_INT_MAX);'
int(2147483647)
64bit環境では次のような結果になります。
$ php -r 'var_dump(PHP_INT_MAX);'
int(9223372036854775807)
ところで、最小の整数が必要な場合はどうすればいいのでしょうか。実は最小の整数は定数定義されていないのですが、次のようにすれば取得できます。
この投稿の続きを読む »
2009 年 7 月 13 日 by hnw — Firefox
Firefoxのアドオンの中でもFirebugは便利ですよね。無いと死ぬって人も多いかと思います。ところで、このFirebugの機能の中でも「要素を調査」ボタンが便利すぎるのでご紹介します。
ここで言っている「要素を調査」ボタンというのは、下記のキャプチャ画像にある、ナビゲーションツールバーの眼鏡のアイコンのことです。

この眼鏡ボタンを押すとFirebugの「要素を調査」の機能が働きます。要するに、Firebugの「調査」ボタンと同じです。Firebugをインストールしたままの状態だと、ステータスバーのFirebugのアイコンを押してから「調査」を押して、と2回クリックするところが、1回クリックするだけで実行できるというのが違いです。こうして説明すると小さな差ですけど、このおかげで私の「調査」をする頻度が格段に上がった気がします。JavaScriptやCSSを触る人は「調査」する機会が多いと思いますので、この差は大きいのではないでしょうか。
この投稿の続きを読む »
2009 年 6 月 30 日 by hnw — workshop
「正規表現入門 (3)実習&ツール紹介」というタイトルで、経験2〜3年目の人をターゲットに社内勉強会を開催しました。正規表現に対して苦手意識を持っている人は多いようなので、実習を交えた形のプレゼンを試してみました。実験的な試みでしたが、おおむね好評だったようです。
まとめ
- 次の機能が使いこなせれば正規表現は怖くない!(たぶん)
- 正規表現作成のコツ
- 構造を日本語で説明できれば、正規表現が書けたも同然
- 例:「ドットの後に英数字2文字以上」の1回以上繰り返し
- 「ナントカのN回繰り返し」の組み合わせを作っていく
- Perlは便利!
この投稿の続きを読む »
2009 年 5 月 28 日 by hnw — Linux, UNIX, ssh
以前の記事「$HOME/.ssh/configを活用していますか?」では、設定ファイルを少し頑張って書けば普段のSSHライフが随分変わりますよ、と紹介しました。今日はその続編です。前回よりマニアックな設定を紹介します。
この投稿の続きを読む »
2009 年 5 月 18 日 by hnw — Linux, Mac OS X, UNIX, 文字エンコーディング
lgrepコマンドをご存知でしょうか。日本語対応ページャlvの付属品で、対象ファイルの文字コードを推定して日本語文字列をうまく見つけてくれるという、優れもののgrepです。
古いプロジェクトだと、プログラムはEUCだけど静的ファイルはSJIS、なんてことがあると思います。そんなときに大活躍です。
grepした結果の文字コード変換も勝手にやってくれるので、grep結果をnkfする必要もありません。至れり尽くせりですね。
そんなlgrepコマンドにも弱点があります。grepで言う-r(再帰的にファイルを検索)オプションが無いのです。どこに書いてあるかわからないエラーメッセージを探す、なんてときに-rは必須ですよね。無いなら作ってしまえ、ということで作ってみました。
alias lgrep-r="find . -type d -name .svn -prune -o -type f -print | xargs lgrep"
上記を.bashrcなり.zshrcなりに書けばlgrep-rコマンド(というかエイリアス)の出来上がりです。私は普段の便利さのために.svnディレクトリを無視するようにしてみましたが、環境に合わせて工夫してみてください。
思いつきで作ったんですが、これは便利!最近UTF-8のプロジェクトオンリーの恵まれた人はともかく、そうでない人にはオススメですよ。
2009 年 5 月 13 日 by tumf — Emacs, Subversion
たかはらです、いつもながら小ネタですいません。
以前、arashoが紹介してくれたdsvn.elを便利に使っていたのですが、先日Subversionを1.6.1にバージョンアップしたらステータスバッファのファイル名の認識を誤るようになり、先頭に空白が一つ入るようになりました。
dsvn.elが古いのか?と思い以下の最新版を試したのですが結果は同じでした。
wget http://svn.collab.net/repos/svn/trunk/contrib/client-side/emacs/dsvn.el
svn statusの出力の解釈に失敗しているようだったので、dsvn.elのファイルの中身を以下のように書き換えたところ動作するようになりました。
--- dsvn.el.orig 2008-12-02 23:46:43.000000000 +0900
+++ dsvn.el 2009-05-13 17:08:30.000000000 +0900
@@ -1041,7 +1041,7 @@
(insert str)
(goto-char svn-output-marker)
(while (cond ((looking-at
- "\\([ ACDGIMRX?!~][ CM][ L][ +][ S][ KOTB]\\) \\(.*\\)\n")
+ "\\([ ACDGIMRX?!~][ CM][ L][ +][ S][ KOTB]\\) +\\(.*\\)\n")
(let ((status (match-string 1))
(filename (match-string 2)))
他に困っている方はどうぞ。
2009 年 4 月 21 日 by hnw — workshop, 文字エンコーディング
「文字集合と文字エンコーディング」というタイトルで、経験2〜3年目の人をターゲットに社内勉強会を開催しました。文字集合という単語を知っている必要はないですけど、少なくともUTF-8とShift_JISとでは扱える文字の種類数が違うことだけは伝えたかったので、その意味では目標が達成できたと思っています。
まとめ
- 文字集合とは、扱える文字の集合
- JIS X 0208なら6000文字くらいの日本語の文字
- UCS-2なら60000文字くらいの世界中の主要な文字
- 文字エンコーディングとは、文字の集合をバイト列に直す方式
- Shift_JISはJIS X 0208(など)を1〜2バイトにする
- UTF-8はUCS-2を1〜3バイトにする
- 文字エンコーディング関連のツールを使いこなそう
- nkfやlvを使いこなそう
- 日本語を探すならlgrep
- 最終兵器:hexjaで16進ダンプ
この投稿の続きを読む »
2009 年 4 月 7 日 by hnw — Linux, UNIX, cron
社内の技術メモに「cronでは第1月曜日に実行などはできないので、実行されるスクリプト側で条件判定しないとダメ」というような記述がありました。一体どういうことでしょうか。
crontabの書式は「分 時 日 月 曜日 コマンド」です。また、数字はハイフンで範囲指定ができます。下記のように指定すれば毎月第1月曜日の午前3時にコマンドを実行できそうな気がします。
0 3 1-7 * 1 /path/to/command/execute-only-1st-monday
しかし、これは期待通りには動きません。「1日から7日までの期間の唯一の月曜日」を指定したつもりが、実際には「1日から7日のすべて、または日付に関係なく月曜日」と解釈されます。マニュアルにも書いてあるのですが、「日」と「曜日」が両方指定された場合、OR条件になるのです。
ネット上を探すと、これでハマって試行錯誤した人が複数いるようです。testコマンドとdateコマンドを使ってcrontabのコマンド指定部分で条件判定している人を見つけましたが、それは頑張り過ぎな気がします。趣味の問題ですけど、crontabはシンプルに保って呼び出される側で条件判定した方がいいんじゃないでしょうか。