で、改めて『パニックルーム』のCMを見る。あれ、どうみてもホラーのCMだよなぁ。。。
ファミリーマートで『パニックルーム』の前売り売ってた。。。1300円。『スパイダーマン』と一緒に買えば良かった。。。
音楽に合わせて歩くんじゃなくて、歩くリズムと同じ音楽に出会うと心地良い。いま聞きまくっているSUPERCARのニューアルバム「HIVISION」の5曲目『OTOGI NATION』が、僕の歩くリズムとぴったり。歩いている最中、この曲だけリピートしようかな。
相手にとっては何気ないヒトコトなんだろうけど、自分にとっては衝撃のヒトコトというのは存在するよね。言われた後にその言葉だけが頭の中をグルグル回ってしまって、他のことが考えられなくなったり。
結局、グルグルしてたのは、自分に問題があったことに気付く。案外壊れやすい自分をなんとかせねば。
また案件が増えそうな予感。しかも、またケータイ。社内では既に『ケータイ案件 = すずき作業』の図式ができあがっている。これ以外にある今月分のメイン作業は、まだ1行もコーディングしていない。まぁ、こっちは自社案件なので、アップ日を6月にずらすようにしてもらったけど。でも、やっぱり今週末は仕事しないとダメそうだな。
今日は未読処理あきらめた。やけに疲れた。
ノドに小骨が刺さってる気がする。
前歯がうずうずしている気がする。
おがさんの日記で、Safari のアップデートを知って、僕も追従。SSL 関係のセキュリティホールを埋めただけって感じか?
Mac を持っていない某同居人が妬むのでほどほどにしたいところだけど。iPod 2.0 と iTunes4 の Tips が! iPod 2.0 をマウントして、Notes フォルダにテキストファイルをコピーすると、iPod 上でそのテキストが読めるようになる(まだ試してない)けど、そのテキスト内に HTML ライクなタグを埋め込めるらしい。
<a href="ipod:music?artist=moritakachisato">森高</a>
なんてやると、そのアーティストのアルバム一覧画面に行けたりするみたい。面白い仕組みだけど、はて、どういう用途に使えるだろう?
キーボード付き Linux Zaurus の CPU / RAM 強化版が発表された。これも候補か? ところで、Linux Zaurus と Mac OS X の Sync 系はどうなっているんだろう。iSync に対応してくれると楽でいいんだけどなぁ。
▽ ルキチ [喉に小骨が刺さった場合、ご飯のまるのみが良いと言うけれど、逆に深く刺さって大変なこともあるらしい。病院で取ってくれる..]
第1回から欠かさず行ってる(つーても3回目だが)迷惑メール対策カンファレンスに行ってきた。ISPの方ではOutbound Port 25 Blocking(OP25B)がフツーのことになってきており、さらに世の中、SPFやDomainKeysを利用するところも増えてきているようだ。昨年、第1回が開催された頃より迷惑メール対策は確実に進歩している、そんな感じを得たカンファレンスだった。 そんな中、一番「おぉっ」と思ったのは、迷惑メール対策系で良く出てくるSPFやらSender IDやらがRFC化されたということを知ったとき。
読んどかなきゃなぁ。日本語訳はどこかにないものか?
カンファレンス終了後、会社へ戻り仕事をしていた。ちょっと、もよおしてトイレの個室に入ってリキんだら、、、鼻血。それももうかなりのイキオイで流血。
慌ててトイレットペーパーをカラカラ取り出して鼻を押さえたものの、どんどん吸収してあっという間に血だらけに。うわーっと思って、左手でそのペーパーを押さえつつ、右手でまたカラカラ取り出して、今度は丸めて鼻に詰めた。
やべーなと思って上を向いたら、鼻から喉に液体がドクドクと流れ込むのを感じた。うげぇ。
丸めたペーパーを変えること数回。時間にして十分くらいか?。ようやく治まったようなので退出した。
それにしても思ったよりサラサラで良い色だったので、オレもまだまだ捨てたもんじゃないな(?)とか思ったよ(笑) しかし、まぁ、オレが死ぬ時はトイレで脳出血ということになるような気にさせてもらった。
とある会社へ行ったら、「冷凍食品の自動販売機」が置いてあった。こんな自販機もあるんだねぇ。
「CakePHP1.2の簡単国際化」や「CakePHPで国際化の方法を試してみました」を参考にさせて頂き、CakePHP 1.2.x.x 先端で国際化っぽいことをしている。
オレがコーディングしている時にも、「〜試してみました」の記事と同じように View のテンプレート内で、
<?php __('Hello World'); ?>
のように記載していたんだけど、実運用でこの記述方法をそのまま使うとよろしく無いかもしれないと気が付いた。
上記の場合、po ファイル内では次のような記述になる。
msgid "Hello World" msgstr "こんにちは、世界"
__() 関数で指定した文字列が msgid となり、msgstr の部分に翻訳した文字列を入れる形式のファイルだ。
では、msgstr 部分に次のような文字列を入れたらどうなるだろう?
msgid "Hello World" msgstr "こんにちは、世界<script>alert('オレは新世界の神になる!');</script>"
結果としては、アラートウインドウが開いて「オレは新世界の神になる!」と宣言されてしまう。
まぁ、実際のメッセージ内容に JavaScript を入れることはないだろうし、「<」やら「>」が出現するケースもそれほど高くないとは思う。
でも、こうやって翻訳用のファイルを別分けしている場合、開発者と翻訳者が同一人物とは限らない訳で、どういった文字列を入力されるかも分からない訳だ。したがって、開発者としては、どんな文字列が入力されたとしても正しく表示されるような気遣いをしておいたほうが良いのではないかと思う。
ということで、View のテンプレート内でメッセージ出力する場合は、
<?php echo h(__('Hello World',true)); ?>
とするのが正しい、、、のかな?
最初の形に比べると、ちょっと美しくない書き方のようにも見えてしまうけど。。。ちなみに h() は、CakePHP の中で定義されている htmlspecialchars() 関数のエイリアス。
MySQL ベースにいつの間にかなっていた CandyCane を PostgreSQL で動くようにしてみている。元々が MySQL と PostgreSQL に両対応している Redmine (Rails) のデータ構造であり、同じく両対応している CakePHP で使うことを前提としているので、そんなに特殊なものじゃないという前置き。
MySQL でダンプされたデータには「5.1.30」とあったので、たぶんこのバージョンの MySQL を利用。移植先は PostgreSQL は 9.1.3 を利用している。
# | MySQL | PostgreSQL | 備考 |
---|---|---|---|
1 | CREATE TABLE IF NOT EXISTS `attachments` ( 略 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; | CREATE TABLE attachments ( 略 ); | PostgreSQL 9.1 以降なら IF NOT EXISTS 入りでも OK。ENGINE などはガッツリ削除。テーブル名のバッククォートも削除。 |
2 | `id` int(11) NOT NULL AUTO_INCREMENT | id SERIAL NOT NULL | AUTO_INCREMENT は SERIAL で代替。カラム名のバッククォートは削除。以降の行はカラム名省略。 |
3 | int(11) NOT NULL DEFAULT '0' | INTEGER NOT NULL DEFAULT 0 | 数値のゼロなのであえて '0' にはしない |
4 | varchar(30) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' | VARCHAR(30) NOT NULL DEFAULT '' | COLLATE は無視。VARCHAR の数値はそのまま。 |
5 | datetime DEFAULT NULL | TIMESTAMP DEFAULT NULL | TIMESTAMP 型に変更 |
6 | tinyint(1) NOT NULL DEFAULT '0' | INTEGER NOT NULL DEFAULT 0 | Rails 的には tinyint(1) を BOOLEAN 的に使っているとか?(要出展)。今は INTEGER にしてしまっているが、PostgreSQL 的には BOOLEAN が正しい? |
7 | CREATE TABLE IF NOT EXISTS `boards` ( 略 KEY `boards_project_id` (`project_id`)) 略 | CREATE TABLE boards ( 略 ); CREATE INDEX boards_project_id ON boards (project_id); | CREATE TABLE 内の KEY は、外出しして CREATE INDEX へ変換。 |
8 | text COLLATE utf8_unicode_ci | TEXT | COLLATE は無視 |
9 | CREATE TABLE IF EXISTS `sample` ( `id` int(11) NOT NULL AUTO_INCREMENT); INSERT INTO `sample` VALUES (1); | CREATE TABLE sample (id SERIAL NOT NULL); INSERT INTO sample VALUES (nextval(`sample_id_seq`)); | INSERT時にSERIAL用のシーケンスを利用する必要がある。 |
10 | INSERT INTO `roles` ( permissions ) VALUES ('--- \n- :add_issues\n'); | INSERT INTO roles ( permissions ) VALUES ('--- - :add_issues '); | PostgreSQLでは '\n' は改行ではなく \n という文字なので、本当の改行を入れてやる。 |
11 | date | DATE | そのまま |
今回やってみたのはだいたいこんなところ。
ORM 経由での DB アクセスなので、テーブル構造だけ移植すれば修正すればいいかなと思ってたけど、うまく動かない箇所もあった。そこは CakePHP の ORM ではうまく表現できないところみたいで、生 SQL が書かれていた。その辺のアプリケーション部分の修正をしたところ、なんとなく CandyCane を PostgreSQL 9.1.3 で動かせたんじゃないかと思ってる。まだ全然詳細まで動作確認していないので、残りものが多数ありそうだけど(笑)
ちょっとしたのソースコードを Keynote に貼り付けたら、まー、まっ黒で見にくい。数行のコードでも内容の把握に時間がかかってしまう。手動でシンタックスハイライト的な色付けしていけば、分かりやすくはなるけど、1ページならともかく何ページもあると、それも現実的ではない。
Emacs でコードを読みこめばシンタックスハイライトされるので、そいつのスクリーンショットを取れば良いかな?と思ったけど、やっぱりコードはテキストにしておきたい気分もあった。
この悩み、オレだけじゃないはず!と思ってググったら、「Code highlighting for Keynote presentations」という Gist を見つけた。
Gist の内容そのままだけど、次のステップで「色付けされたソースコードをテキスト形式のまま Keynote へ貼り付け」することができた。
highlight
コマンドをインストールhighlight
コマンドにソースコードを食わせて RTF (Rich Text Format) で出力OS X のクリップボードを操作するコマンド「pbcopy / pbpaste」を組み合わせることによって、「出力結果をマウスで選択してコピー」みたいなことは不要になる。
これ、便利だわー。
北海道系のネタだということで LOCAL Community Summit 2015 へ参加してきた。
各地域各言語のコミュニティのごった煮感があるイベントだった。そういう傾向だと、OSC や LL が近いと思うけど、それらとは違う雰囲気だったのはなんなんでだろうなぁ。技術そのものよりも、コミュニティにフォーカスが当たってたからなのかな。
このところあまりコミュニティ活動をしていなかったんだけど、なんかまた参加したい気分になってくる良いイベントだった。
▽ すずき [はじめまして。私も tdiary.net にお世話になっている すずき です。]
▽ すずき [はじめまして。紛らわしくてすみません。。。。]
▽ よしい [紛らわしいよぅ]
▽ すずき [慣れましょう...]
▽ すずき [慣れだよね。。。]