今まで Windows ではそれほど Unison を使わなかったのと、自分では日本語ファイル名をつけないということで気がつかなかったんだけれど、Unison は Windows 上では日本語ファイル名処理に問題があるらしい。
Unison 2.27.57 で日本語ファイル名のファイルを同期しようとすると `The name of this Unix file is not allowed in Windows' というエラーメッセージが表示されることがある。 チェックは正規表現 "\\.*|aux|con|lpt1|prn|(.*[\000-\031\\/<>:\"|].*)" でしているらしい。 マルチバイト文字だとこれで誤認識されることがあるようだ。
パッチあててもいいけれど、Windows 上で Ocaml ビルド環境入れてとかちょっと面倒。 他のファイル同期ツール探すか、Linux 上で同期するかどちらかだな。
株式会社ミクシィ主催のエンジニア向けセミナー「mixi Engineers' Seminar #2」に参加してきた。
スマートフォンがメインテーマで、発表は次の3つ。
赤松洋介氏(サイドフィード株式会社) | 開発者のためのiPhone⇔Androidアプリ移植のポイント |
高橋忍氏(日本マイクロソフト株式会社) | Windows Phone 7 アプリケーション開発概要 |
藤崎友樹氏(株式会社ミクシィ) | mixi x Androidの深イイ話 |
赤松氏の移植話では正規表現20パターンぐらいで Objective-C コードから Java コードに変換しちゃいましたとか。マジ?
藤崎氏の発表では Android 特有のアプリケーション開発事情や勘所が語られて、Android 開発者だといろいろ気づきとか得られるのではという内容であった。
そして注目だったのは Windows Phone 7。 プレゼンテーションが上手かったというのもあるんだけれど、発表の中で Visual Studio や Expression Blend でささっとデモアプリケーションを書いて、その場でエミュレータ(これが速い)でささっと動いちゃっているのを見ると、ああなんか簡単に面白いのが書けそうと思えてきちゃって、これはスゴいなと。
Windows Phone 7 端末は iPhone みたいに単一メーカーじゃないんだけれど、比較的統一が求められていて、開発者に優しいらしい。 ただ端末毎の特徴が無くなって、買う側もつまらないし売る側も差別化しにくいんじゃないかなとも思われるところ。 個人的には Android のカオスは好きなんだよね(ただし開発者じゃない立ち位置で)。
懇親会でお話させていただいた方、ありがとうございました。
ロゴはmixi Engineers' Blogより引用。
こんにちは。皆さん「せいき」が好きですね。
株式会社ミクシィのセミナールームで開催された「Shibuya Perl Mongersテクニカルトーク#16」に参加してきた。 今回のテーマは正規表現。 Perl 使いにとっては、ドメインによらず大好きなテーマ。
計算機科学屋に面白かったのは、 @sinya8282 氏による形式言語的な香りのする発表「正規表現の限界」。 やっぱり正規表現の話では、DFA・NFA・状態遷移図あたりが出てこないとね。
Perl Mongers らしいノリとトークの楽しい集りだった。 結局おいしいところは gfx 氏の正規表現のイントネーションに全部もっていかれたね。
欲求不満な皆は「正則表現」って言うといいよ。
プログラミング言語の仕様・振る舞いを確認するために小さいプログラムを書く。 「この式を評価すると値は何になるの?」とか「この2つの書き方どっちが速いの?」とか「この正規表現にどうパターンマッチングするの?」とかを確認したい時。
当たり前の進め方だと思っていたんだけれど、そうすることを勧めたらスルー気味だったので。
特にスクリプト言語なら 「a.ほげほげ 」(Perl なら a.pl)なファイル作って実行してみればいいじゃんと思うのだけれど手間に感じるのかな。本丸のプログラムのソースコードを書き換えて試す(Apache 再起動して Web ブラウザでアクセスしてデバッグプリント読むとか)よりよっぽどはやいよ。あと、単体テストファイルでやっちゃうのもアリ。
それに適当に記事としてまとめておけば、今度は自分が他人に説明する時にそれを示せば済むようになるしね。
Git でファイル中の特定の範囲の変更履歴を見る -L オプションで、その範囲を正規表現で指定できる。例えば Perl モジュールだと
git log -L '/sub func_name/',/^}/:lib/Foo/Bar.pm
で lib/Foo/Bar.pm の中の func_name サブルーチン(/関数/メソッド)の変更履歴(sub func_name のある行から、行頭が } の行までの変更履歴)を出力できる。
各行が JSON になっているログファイルのチェックにコマンドライン JSON プロセッサの jq 使ってみた。
とりあえず | オペレータが肝なのと、フィルタリングには select 関数を使えば良いということを理解した。あと関数はパイプライン的に受け取るデータと、引き数とで受けとるデータとの2種類があるのでちょっと慣れが必要。普段からレシピを作っておく方が良さそげ。気がついたら https://www.naney.org/diki/dk/jq.html の方にメモっておくことにする。
ワンライナーで書けるのは便利だけれど、大量の JSON データでかつきちんと parse しないで正規表現で抜けるようなデータの場合は Perl でチャキチャキっとやった方が当然だけれど圧倒的に高速なのでうまく使い分けだね。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。