ワケありで購入した。色は、オレの好みじゃないんだけど『ちょっとセレブを気取って持ち歩ける「Glitter Gold」』になった。
最初に見た感想は「薄いなー」ってこと。いま常用している SO905i に比べてかなり薄い。表面がアルミらしく、金属の質感が高級感を出している気がするね。
いろんなニュースサイトでも取り上げられていたけど、このケータイ、至る所にこだわりがあって、特にディズニーに思い入れのないオレでも感心してしまう。毎回使うであろうメインのボタンにもシルエットが。
電波の強度計やメールの送信先アイコンとかにも彼がいる。
普段は見ることのない SIM カードにまでいる。
で、これだけこだわった上で、ケータイの機能として他機種と遜色がないところもスゴイ。カメラ(200万画素)やミュージックプレーヤは当たり前として、ワンセグ・フルブラウザ・おサイフケータイも装備。更には Bluetooth が搭載されているのがイイね!
MacBook とペアリンクさせてみたら、DM001SH の中身を Bluetooth 越しにブラウズできた。
メニューの操作感も SO905i よりサクサクしてるし、これをメイン機にしちゃおかなとか思っちゃうよ(笑)
ちなみに、この DM001SH、オレが買ったお店の店員さんによると、今日時点では全国で6万台しか出荷されていないそうだ。そのうち首都圏に出回ったのが、ソフトバンクの直販店と量販店を含めて1万5千台だそうだ。そのうちのほとんどが予約で売れてしまって、フリーな在庫はあまり残っていないとか。見つけたらオークション用に買っておくのも良いかもよ?(笑)
このところ(いつも?) PC に向かってばっかりだなと思って、「今日は日差しもあるし、緑の中で読書でもすっか!」と思い立って出かけようとしたら、プントのエンジンがかからんかった。見事にバッテリ切れ。。。
3週間くらい乗ってなかったので、そろそろヤバイかな?でもバッテリは新品のはずだから、まだ大丈夫だよね?と思ってはいたのだが、キュルルル、、、キュル、キュ、、、と、全然セルモータが回らなくなってしまって、さぁ大変。更には時計までリセットされる始末で、もう全然電力がない状態。仕方ないので保険屋に連絡を取ってレスキューを依頼した。
連絡を取ってから、20分ほどで担当者が来てくれて復活。しばらくアイドリングした後、ようやく出発することができた。こまめなケータイや PDA に限らず、クルマもこまめな充電が必須だなと感じた日曜日であった。
ということで、本日の目的地は小金井公園。ナビの NV-U2 に指示されたところからは駐車場に入れずにウロウロしたあと、なんとか到着した。で、緑いっぱいの中ですがすがしい気持ちになってやる!と思ったら、結構な勢いで緑がなかった(笑)
あれ?計画と違うぞ!と思って、トボトボと歩いていたら美味しそうな香りが漂ってきて、フラフラと近づいたら秋葉原名物ケバブのお店が。看板を良く見ると「トルコ風牛丼 ケバブライス」なんてメニューがあったので買ってみたよ。
写真だと良く分からないけど、ご飯はサフランライス。その上にケバブの具材が乗っかっていた。それなりに美味しかったけど、ケバブはご飯よりもピタの方が合うんじゃないかなぁ。
その後、読書する場所を探しつつ公園内を歩いていたら、歩道横の茂みからネコが凄い勢いで飛び出してきたと思ったら、続いてリードが付いた柴犬も飛び出してきた。どうやら、柴犬(後に飼い主からヤマトという名前だと聞いた)がネコを追いかけて遊んで(?)いたみたい。
ヤバイと思ったのか、追いかけられたネコは木の上に逃げてしまった。
近づいても逃げなかったので、公園に住み着いている人慣れたネコなんだろうな。
ネコと定番の遊び*1をした後、公園内をちょっと散策して空いているベンチを見つけて、計画通り読書開始、、、したのだが、寒くてある程度のところで中止。日差しがあっても風が冷たくてダメだった。。。
あとは、もうひとつの目的である梅林を覗いてきた。かなり咲いている木と、まだまだつぼみだらけの木があって、合わせると7〜8分咲きといったところかな。次の週末とかでも楽しめそうな感じだった。
梅林のすぐ近くで、団子を売っているお店があったので、「おぉ、『花より団子』的な写真が撮れるじゃね?」と思って買いに行ったら、目の前で売り切れてしまった。残念。
*1 ノドをゴロゴロ。肉球をムニムニ
tDiary の trunk が UTF-8 化するということで、いろいろマージやらなんやらが行われているのだが、いつの間にかオレの日記も貢献していたようだ。データ提供も貢献っちゅーことで良いよね(笑)
あー、でも、もしかして、これは「さっさと UTF-8 化しろよ」というプレッシャーなのかしらん?(笑)
moyashi さんのツブヤキにより知った Emacs for maemo をインストール中。
サーバが重いのか、なかなかダウンロードが終わらないなー。このまま放置して寝よか。。。
Emacs のダウンロードはできたのだが、パッケージの依存関係が解消できなくてインストールが完了していない。ncurses-base は見つかったんだが、libxaw7 を発見できない。どこにあるんじゃー!
Application manager 上では、libxaw7 を見つけられなかったのだが、apt-get でインストールできた。easyroot パッケージをインストールした後で、
$ sudo gainroot # apt-get install libxaw7
とすると「ホントにインストールしちゃっていいのかしら?」みたいな事を聞かれるので、自己責任で yes と答えてインストールすれば OK。
その後、Emacs for maemo をインストールして、コマンドラインから Emacs を起動してやると見慣れた画面が出てきてくれた。
select-input-method で、japanese-hiragana とかも選択できるんだけど、フォントは入っていないらしく豆腐表示になってしまった。この辺はちょっと玩んでやらないといけないなぁ。
Drk7jp の「迷惑メール対策 OP25B(Outbound Port25 Blocking)についてお勉強」の中で、
そもそもポートが 25 → 587 に変わっただけで結局はスパム行為防げないんじゃないかという疑問です。専用サーバとか自宅サーバ立てて 587 ポート対応のメールサーバ立てれば同じじゃないか?あれ?やっぱり理解が間違ってるのかな??各プロバイダが立てている 587 ポートのメールサーバを使えってことなのかな?
と書かれていたので、ちょっと何か書いてみる。
迷惑メールの配信を防げるか否かとで言うと、OP25B(Outbound Port 25 Blocking) だけで完全に防げるものではない。OP25B が目指しているのは「迷惑メール配信元の IP アドレスを特定しやすくし、受信側 MTA で制限をしやすくする」ことである。
OP25B の導入以前は、各 ISP の動的 IP アドレス範囲から迷惑メールを配信している場合があった*1。このため、動的 IP から外部サーバへの SMTP(ポート 25)への接続をできないようにブロックしてしまえば、迷惑メール配信を防ぐひとつの方法になるだろうという考えが出てきた。これが OP25B 。
また、OP25B では、配信業者が「固定 IP アドレス」で専用サーバなり自宅サーバなりを立てた上で迷惑メールを送るという行為は防げない。しかし、この場合は受信側で、その「固定 IP アドレス」の評価を落としてしまうフィルタを書けばば良い。
OP25B の導入と一緒に、各 ISP が自社ユーザが使っている MUA(いわゆるメーラー) の接続先を MTA(ポート25)から MSA(ポート587)へ移行したのだが、これは MTA(転送)と MSA(投稿)の役割を明確に分けるため。また、MSA(投稿)には SMTP Auth を使ったユーザ認証を取り入れることにより、ウイルスや bot がポート 587 へ接続しに来ても、認証で蹴ってしまえば*2「ISP 内部から迷惑メールを送信させない」ことが可能であろうという考えられている。
従って、一般ユーザに関して言えば「各プロバイダが立てている 587 ポートのメールサーバを使えってことなのかな?」という考えは、その通りだと思う。どうしても MTA サーバが必要な人たちは固定 IP を使って欲しいというのが ISP 側の考えになると思う。
最後に、各社が OP25B を導入するに至った背景と現状を理解する為の資料を紹介。
まず、2005年に行われた「(第1回)迷惑メール対策カンファレンス」での発表資料である「迷惑メールに対する包括的な技術対策(PDF)」や「Outbound Port25 Blocking 導入の背景(PDF)」に導入に至る背景が書かれている。
この時点では、国内 ISP のほとんどがまだ OP25B を導入していなかったが、2006年に発表された「Outbound Port25 Blocking についてのJEAG recommendation(PDF)」により各社の導入が進み、現在に至るというところ。
で、OP25B は迷惑メール対策として成果があったのかどうか?というところは「JEAG Update 迷惑メールの現状とその対策について 〜JEAG OP25B の軌跡〜(PDF)」に詳しい。国内に関しては、動的 IP からの迷惑メールは壊滅した状態にある。
だいぶ前にアシストオンで買った「Knirps "Fiber T1 Duomatic"」が壊れてしまった。本来、グリップ部のボタンを押す事により、柄が伸びて、更に傘が自動で開くというギミックになっているのだが、柄が伸びるだけで開かなくなってしまった。
自動ではなく手動で開いて利用出来ればまだマシなのだが、どうもロック機構のようなものが壊れてしまったらしく、開いた状態で固定できないという状況だった。
この傘、それなりのお値段なので、できれば買い替えではなく修理ができないものか?とアシストオンへ連絡してみた。すると、修理可能かどうかを判断するので、輸入代理店まで直接送って欲しいとの指示を貰った。送料着払いで良いとも言われたので、着払いで送ってみたのが数日前。
で、今日、その代理店の方から連絡が入った。「修理できません」と。
えぇ〜っ、んじゃ買い替えかぁと思ったので、その後に続いた言葉を一瞬理解できなかった。「修理はできないので、良品と交換させて頂きたいのですが」と言ってきたのだ。
「え、だって、これ、買ったのは1年以上前ですよ?」と聞くと「当社では2年の保証をしていますので」と。「でも、買った日付を証明できるものはないんですけど。。。」と答えたのだが、それでも良品交換をしてくれるというので、お言葉に甘えて交換してもらう事にした。
たまたまなのかも知れないけど、こういう対応は消費者としては嬉しいね。
『ソフトバンク、「823SH」と「821T」を8日発売』という記事を見て思い出したことがある。
ディズニーモバイルの「DM001SH」には、ディズニーモバイルとしての充電台も充電ケーブルも用意されていなくて、お店の人に「充電台は、823SH用のものを流用することになります。ただし、ディズニーではなくソフトバンク製となります」みたいなことを言われたのだった。
端末はすげー細かいところまでこだわっているのに、この辺のツメが甘くて、ちょっとイマイチな気がした。ミッキー柄の充電台とか作れば、ちょっと高くても売れると思うのにね。
あまり情報を持っていないまま観に行った作品。というか、「ジャンパー」上映時間までの繋ぎとして時間がちょうど良かったから選んだだけ。。。
ところが、「物語の舞台は、この世界と似ているが違う世界。この世界では、人間の奥底にある魂が動物の形をして、いつも近くに付き添っている」という設定を最初に聞かされてクラクラきて、物語に引き込まれてしまった。この動物達は「ダイモン」と呼ばれているのだが、その綴りは「daemon」。ある種のヒト達には馴染み深い単語だったりして(笑)
この映画を観ていて思ったのは、「なにこの RPG ?」とか「ちょっとスター・ウォーズっぽくない?」とかかな。前者は、「○○が仲間になった!」みたいなシーンからの印象かな。そうは思ったものの、観ている最中は「でも RPG がこっちの影響を受けてるんだろうなぁ」と考えていた。でも、いま調べたら、原作は1995年発表とのことなので、この作品がゲームから影響を受けてる可能性もあるなぁ。
あと「スター・ウォーズっぽいな」と感じたのは、ドゥークー伯爵(クリストファー・リー)が出てきたから、、、じゃなくて、メカデザインがエピソード1のナブーで登場したレトロフューチャー的デザインに近いなぁと感じたからかな。後はストーリーの展開がエピソード4とか5に近いと思った。まぁ、スター・ウォーズは「むかし、むかし、あるところで…」で始まるおとぎ話だから、こういうファンタジー系の話とは近いところがあるんだけど。
で、トータル的な評価としては、結構好きな映画だな。次回作も観てみたい。
ということで、初日初回で「ジャンパー」を観たのだが、ガラガラだったよ>としまえん
ま、それはともかく、映像のスピード感が凄い映画だった。特に戦いのシーンは、スピード感があり過ぎて、何が起きているのか把握しきれないほど。
ところがストーリーの方は、なんというか、、、んー、イマイチだったなぁ。単純明快は嫌いじゃないけど、もう少し深みがあっても良かったんじゃなかろうか。
ところで、この作品、東京でのロケも話題になっていたけど、主人公達が地下鉄銀座駅から地上に出て来て、歩き始めたと思ったら渋谷駅前にいたりしてたよ。良く知っている場所が出てきて楽しいのもあるけど、知り過ぎてるとアレな場合もあるね(笑)
「良品と交換します」と言われた「Knirps "Fiber T1 Duomatic"」が届いた。修理の時に送ったのは傘本体だけだったのだが、送られてきたのはケース入りの新品。
すげー!と一瞬思ったのだが、よく考えてみればメーカー(代理店)としては、この方が発送が楽な上にお客さんからは喜ばれるので、当然の処理だろうね。
そうと理解はしても、この扱いは嬉しいな。もともと気に入っていた傘だったし。
どなたかの blog の書評で気になって購入したものの、しばらく放置したままだった本をやっと読んだ。
いきなり「トレーニング不足のビジネスパーソン」と説明されているのだが、「もう確かにその通りでございます。。。」みたいな気持ちになった。他に書かれているところも、かなり参考になったのだが、ひとつ面白いことに気がついた。
「レバレッジ・シンキング」の中では「ビジネス書の多読」を勧めている。そして、その読書方法として次のように書かれていた。
読書中はまず、読みながら重要だと思ったところに線を引きます。そして、より重要だと思ったところには☆印をつける。
【中略】
読み終わったら、線を引いたり、印をつけた部分をパソコンに入力します。
一方、つい最近読んだ「効率が10倍アップする新・知的生産術」も同じようにビジネス書の多読を勧めているのだが、こちらは次のように書かれている。
本を読む時は速読スキルを含め、スピード最優先。線引きやまとめ書きなど面倒なことはしない
同じように「多読の勧め」をしているものの、ここまで見事に真逆な主張になったのが面白い。まぁ、実践方法は読者次第なので、どちらを選ぼうとも良い訳なのだが、オレとしては、本に何かを書き込むのが嫌いなので、その点では「効率が10倍〜」の方法が良いかなと思っている。
ただ、「効率が10倍〜」では「読んだ本はどんどん売ってしまいましょう」的な理論になっており、その点はちょっと賛同できなかったりするわけなのだが。。。
ま、オレ理論で良いと思うので、とりあえず実践してみようかと>多読
いつのまにか Amazon にetranger di costarica のショップ(?)がオープンしていた。
「包み込む手帳」のリフィルとして使っている、etranger di costarica の5ミリ方眼メモが切れかけているので、どこぞの通販で買えないものか?探していて発見した。
買えるのは良いのだが、商品のカテゴリからの絞り込みができないのは不便だな。今回は、発売元の Web にあるカタログから型番を探してから検索した。
Bluetooth を使って、MacBook から N810 へのファイル転送はうまく行くのだが、N810 から MacBook への転送が失敗してしまう状態がずっと続いていた。もちろん、ペアリンクはしており、Mac OS X の「Bluetooth 環境設定」も問題ないように見えていたので、謎の状態だった。
今日、ダメ元で N810 から会社の iMac へファイル転送を試みてみたら、、、転送できた。あれ?なんで?と調べてみたら、どうやら Bluetooth のファイル転送には共有設定が必要なのが分かった。
MacBook から N810 へのファイル転送は「Bluetooth 環境設定」だけで良いのだが、N810 から MacBook へのファイル転送の場合は「共有の環境設定」で「Bluetooth 共有」を稼働させないとダメなようだ。
Bluetooth の設定は「Bluetooth 環境設定」だけにしかないと思い込んでいたのが敗因だったな。
今までは、スクリーンショットを撮ったら、USB ケーブルを接続して取り込んでいたんだけど、今度からは Bluetooth で楽々転送って感じだな。
製品の型番ってどうなるのだろう?と。
ナショナル製品の多くは「N」で始まる型番である。例えば冷蔵庫は「NR-xxx」、洗濯機なら「NA-xxx」、電子レンジなら「NE-xxx」といった具合に。これが「パナソニック」になった場合に「P」を頭に付けたりするのかな?と一瞬考えたものの、、、特に変えないよな、きっと。
ところで、型番に関する豆知識をひとつ。
ナショナルの冷蔵庫の場合、型番で製品情報が分かりやすくなっている。例えば「NR-F530XV」なら「530リッタークラスの6ドア」、「NR-C376M」なら「376リッタークラスの3ドア」というのが型番から読み取れる。
「NR」が「ナショナル・冷蔵庫(もしくはRefrigerator)」の意味だと思われ、その次のアルファベットがドアの数を表している。「A、B、C…F」が「1、2、3…6」という訳だ。次の数字は容量を表す。最後のアルファベットの意味はいまひとつ把握しきれていないのだが、世代番号だった気がする。
ちなみに、世の中には沢山の家電製品がある訳だが、製品の型番というのは、ほとんどかぶらない。日本メーカーの場合は「アルファベット2〜3文字、ハイフン、その後いろいろ」(正規表現で言えば、/[A-Z]{2,3}\-.+/ かな)という形式になっており、最初のアルファベット群を見るだけで、どのメーカーのどんな製品かがだいたい分かる。
ま、こんなの分かって便利なのは、家電屋の中の人くらいなので、豆知識というよりは無駄知識なんだけどね(笑)
第2回 CakePHP 勉強会での発表の動画が koyhoge さんのところで公開された。
そういえば、この時報告したバグのうち「SMTP を使った場合に行頭の「.」が無くなってしまうよ」は無事に fix された。もうひとつの「SMTP の改行コードが<LF>だけじゃね?」は却下されてしまった。どこにも<LF>から<CR><LF>へ置換しているコードが無かったような気がするんだけど。。。
他にもいくつかの修正が入ったようなので、近いうちにもう一度ソースを眺めてみよう。致命的なバグが無くなったようなら、次は日本語でのメール送信について要望を上げてみようかな。
今年の4月29日に「15周年 フィアット・フェスタ2008」というイベントが開催されるそうだ。
基本的にはフィアットとその仲間達でタイムアタック等を行うようなのだが、さすがにレースは無理だけど、見に行くだけでも面白いもんかなー。
ある方の日記で「中野の逸品グランプリ2008」というイベントを知った。要するに中野区内で販売しているウマイものを決めたろやないけ!という話。
既に一次予選を通過したメニューが公開されている。割と近い店もあるので、近々行ってみたいなー。
天気が良かったので、フラフラとディーラーまで歩いていって Fiat500 を見てきた。
ちっちゃいけど「すげー狭い」って感じは無く、2シーターとして乗るならアリじゃないかなぁ。さすがに後部座席は狭そうだったが。
内装もこだわって作ってあって、乗ってて楽しそうなクルマだね。
このサイズで、オレのプントと同じ1.2リッターエンジンを積んでいるんだよなぁ。プントでさえ、結構パワーがあるように思えるので、この Fiat500 ならもっとキビキビ動いてくれそうな気配だなぁ。
、、、といった発言をするとは、1年前のオレだったら考えられない。人間、変わるもんだ(笑)
PVの存在は知っていたのだが、ライブ版の映像は初めて見た!!!!!
「POP HILL」というイベントは石川県で行われていた野外ロックフェスだとのこと。残念ながら最近は開催されていないらしい。
この映像の最後のところで、次の曲(あ゛〜、タイトルが出てこない。歌えるのに)へのイントロが入っているんだけど、続きの映像はないのだろうか!? 観てみたいなぁ。
本日開催された「第2回PHP懇親会」へ参加してきた。会場は新宿三丁目の「ファンデリ」。参加者全員が5分の持ち時間でライトニングトークするという構成だったので、オレも発表してきた。
今回は(また?)PHP本体じゃなく、その周辺の話。
おととい「yasnippetがすごい!!!!1112345!」というエントリを見て、「なにー!それは見てみなければ!」と思って見てみたものの、php-mode用の snippet が無かったので勢いで作ってみたのだが、それをネタとして発表した。
php-mode 用の snippet を作るにあたって、HowtoDefineSnippetを読んでいたのだが、英語だとなかなか頭に入らない人なのでチマチマと意訳していった。それをちょっと整形してここにさらしてみる。
翻訳でなく意訳なので、正確なニュアンスの表現はできていないし、間違っている箇所は沢山あると思われるので、怪しいな?と思ったら原文の参照を推奨。
HowtoDefineSnippet snippet の定義のやり方 snippet は yas/define 関数を通して定義します。または、 yas/load-directory 以下にファイルを置いて使う事も可能です。ご自身で作成 したカスタム snippet も yas/compile-bundle を使って stand-alone bundle としてコンパイルすることが可能です。stand-alone bundle は、ライブラリの ロードが楽(require するだけ!)ですし、毎回ディレクトリ階層をパースす るよりも高速です。 関数 yas/define 基本的な yas/define のシンタックスは次の通りです。 (yas/define MODE KEY TEMPLATE &optional NAME) パラメータは次の通りです。 MODE: snippet を定義するモードの名称 KEY: snippet のトリガーとなるキー TEMPLATE: snippet を展開するテンプレート NAME: snippet の簡単な説明。これはメニューに表示されます。この部分を省 略すると、KEY の部分が NAME として利用されます。 例: (yas/define 'c-mode "if" "if (${condition}) { $0 }" "if (...) { ... }") TEMPLATE の書式については、この後のセクションを見てください。 同じキーで複数の snippet を定義する事が可能です。 例: (yas/define 'c-mode "if.one-stmt" "if (${condition}) $0" "if (...) ...") snippet を定義する際のトリックですが、KEY はファイル名のように扱われま すが拡張子は取り除かれます。この例で言えば「.one-stmt」は取り除かれます。 もし、本当に同じ KEY で定義した場合は、後から定義した方が以前の定義を上 書きします。しかし、最初の定義とは違うサフィックス(または拡張子)を追 加した場合は、同じ KEY に複数の snippet を割り当てられます。 ある KEY に複数の snippet が割り当てられている場合、ポップアップメニュー が表示されます。メニューには snippet の NAME が表示されます。これは、 NAME を表示させておく良いアイデアとなっています。 yas/define-snippets yas/define-snippets を使って、沢山の snippet を定義することができます。 基本的なシンタックスは次の通りです。 (yas/define-snippets MODE SNIPPETS &optional parent) 例: (yas/define-snippets 'text-mode '(("email" "`user-mail-address`" "User's email address") ("time" "`(current-time-string)`" "Current Time") ("foo" "blablablabla"))) 例を見てください。 SNIPPETS は snippet 定義のリストになります。それぞれ の定義のシンタックスは yas/define に identical です。最後にあるオプショ ンパラメータである PARENT は、特定の親モードの時に利用する事ができます。 snippet の検索構造は、まず、現在のモードの snippet テーブル、次に親モー ドの snippet テーブルを再帰的に検索します。 yas/load-directory yas/load-directory の基本的なシンタックスは次の通り: (yas/load-directory DIRECTORY) 使い方は簡単です。 (yas/load-directory "~/.emacs.d/snippets/") M-x yas/load-directory と入力し、どのディレクトリを読み込むかをインタラ クティブに指定することも可能です。指定されたディレクトリ以下にある一致 したモード名のサブディレクトリを contains します。そして、それらのサブ ディレクトリ以下は、それぞれのモードの snippet の定義となります。典型的 なディレクトリ構造はこのようになります。 snippets/ +-- c-mode | +-- if | +-- for | `-- main +-- java-mode | +-- if | `-- class `-- ruby-mode +-- each `-- select snippet のファイル名は snippet の KEY となります。TEMPLATE と NAME は、 ファイルの中身からパースされます。典型的な snippet ファイルの中身はこの ようになります。 #name : select { |...| ... } # -- select { |${1:element}| $0 } 「# --」の行があるとき、この行の前まではコメントとして扱われます。そし て、その行以降の全てのコンテンツが、TEMPLATE として扱われます。 コメントセクションには特定の変数を利用することができます。現在サポート されている変数のリストは次の通りです(現在はひとつしかありません)。 name: snippet の NAME 変数のシンタックスは次の通りです: #variable-name : variable-value もし「# --」の行が無かった場合、ファイル内容の全体が TEMPLATE として扱 われます。 ファイル末尾の改行もテンプレートのコンテンツになることに注意してくださ い。snippet の最後に改行を含めたくない場合は、ファイル末尾に改行を加え ないようにしてください。また、あなたの利用しているエディタが自動的に挿 入しないようにしてください。 バージョン 0.2.0 から、ディレクトリ構造は再帰的なサブディレクトリを使え るようになりました。次のようにです(ディレクトリのみを表示しています) snippets/ +-- cc-mode/ | +-- c-mode/ | +-- c++-mode/ | +-- java-mode/ `-- text-mode/ この場合、cc-mode は自動的に c-mode、c++-mode、java-mode の親モードとし て扱われます。 yas/compile-bundle yas/compile-bundle の基本的なシンタックスは次の通りです。 (yas/compile-bundle YASNIPPET YASNIPPET-BUNDLE SNIPPET-ROOTS) パラメータは次の通り: YASNIPPET: yasnippet.el のパス(path) YASNIPPET-BUNDLE: 出力するバンドルのパス(path) SNIPPET-ROOTS: snippet のディレクトリ(ディレクトリのリスト) 例: (yas/compile-bundle "~/.emacs.d/plugins/yasnippet/yasnippet.el" "~/.emacs.d/plugins/yasnippet-bundle.el" '("~/.emacs.d/plugins/yasnippet/snippets")) snippet のルートディレクトリがひとつの場合、最後のパラメータは次のよう なシンプルな書き方も可能です。 (yas/compile-bundle "~/.emacs.d/plugins/yasnippet/yasnippet.el" "~/.emacs.d/plugins/yasnippet-bundle.el" "~/.emacs.d/plugins/yasnippet/snippets") これはなにをするのか? yasnippet.el を yasnippet-bundle.el としてコピーする。 いくつかの初期化コードを追加する(実際は (yas/initialize) のみ) ディレクトリ内の snippet 定義をパースし、それらの snippet の適切な yas/define を yasnippet-bundle.el へ追加する。 この結果、 yasnippet-bundle.el は単独で利用できる .el ファイルとなりま す。あとは、作成されたファイルを load-path へ置き、、あなたの ~/.emacs ファイルへ (require 'yasnippet-bundle) と書くだけです。するとシステムが 自動的に snippet の読み込みと初期化を実行してくれます。 シンタックス snippet TEMPLATE のシンタックスを説明します。 プレインテキスト snippet が展開されるとき。キーはテンプレートと置き換えられます。テンプ レートは任意のテキストを含むことができます。例外は $ と ` です。これら は特別なキャラクタとして扱われますので、直前に \ を加えてエスケープをす る必要があります。perl-mode を例は次のようになります。 eval { ${1:# do something risky...} }; if (\$@) { ${2:# handle failure...} } if (\$@) { の行に注意してください。$ がエスケープされています。 時折は \ 自身をエスケープする必要がでてきます。例えば、\$ を記述したい 時には \\$ と書く必要があります。 組み込みの elisp コード テンプレートの中で elisp コードが使えます。この場合は、バッククォート (`)内に記述します。 `some elisp arbitrary code` このコードは snippet が展開されるときに評価されます。snippet が展開され るバッファ内での評価となります。c-mode の場合の例です。 #ifndef ${1:_`(upcase (file-name-nondirectory (file-name-sans-extension (buffer-file-name))))`_H_} #define $1 $0 #endif /* $1 */ これは、現在の buffer-file-name を取得し、ディレクトリ部分と拡張子部分 を削除し、大文字にした上でヘッダファイルのガードマクロ定義として利用し ます。 タブストップ タブストップは、TAB キーと Shift + TAB キーを使って、前後へ移動できる フィールドのことです。これは、$ に続いて数字を記述します。 $N $0 は snippet の脱出場所という特別な意味を持ちます。全てのフィールドを 行き来し追えたときに行く最後の場所です。代表的な例は次の通りです。 <div$1> $0 </div> snippet が展開されたとき、最初に移動するポイントは $1 の部分になります。 この部分にテキストを入力をした後(入力しなくても良い)、TAB キーを押す と $0 のポイントへ移動します。 プレイスホルダ タブストップはデフォルト値(プレイスホルダとして知られています)を持つ ことができます。シンタックスの例はこのようになります: ${N:default value} これらはタブストップのデフォルト値として振る舞います。しかし、タブストッ プで何かを入力したら、デフォルト値は入力した値に入れ替わります。 ミラー プレイスホルダ付きのタブストップをフィールドとして参照することができま す(?)。フィールドは、ミラーを持つ事ができます。フィールドのテキスト を変更すると共にミラーのテキストも変更されます。次の例を見てください: \begin{${1:enumerate}} $0 \end{$1} あなたが ${1:enumerate} の部分で「document」と入力したとき、「document」 は \end{$1} の部分にも挿入されます。動画(YouTube もしくは avi ビデオ) を見てもらえばもっと良く分かると思います。 同じ番号を持つタブストップは、ミラーとして扱われます。タブストップが初 期値を持っていない場合、最初に選択されたフィールドがその他のミラーとし て扱われます。 数字が入っていないフィールドの例です: if (${condition}) { $0 } この例は同じ番号を持つタブストップがないため、ミラーを持てません。ふた つの番号がないフィールドは違う番号を持つものとみなされます。 トランスフォーメーション $ で始まるフィールドのデフォルト値がある場合、それはデフォルト値のトラ ンスフォーメーションコードとして扱われます。トランスフォーメーションは、 フィールドに入力されたテキストに応じて評価される任意の elisp コードです (訳注:この部分、非常に怪しい翻訳。。。) Objective-C のコード例です。 - (${1:id})${2:foo} { return $2; } - (void)set${2:$(capitalize text)}:($1)aValue { [$2 autorelease]; $2 = [aValue retain]; } $0 ${2:$(capitalize text)} を見てください。これはプレイスホルダからトラン スフォーメーションするものです。実際のプレイスホルダは、最初の行の ${2:foo} です。${2:foo} にテキストを入力した時に評価が行われ、トランス フォーメーションされたテキストが挿入されます。この例だと、フィールドに baz と入力すると、トランスフォームされたテキストは Baz となります。この 例についても動画に動作が収録されています。 rst-mode 用の例です。reStructuredText では、ドキュメントのタイトルは 「===」で括られます。「===」はテキストと同じ長さにすべきです。 ===== Title ===== この場合は正しいタイトルとなりますが、 === Title === こちらは違います。 rst のタイトル用の snippet は、次のようになります。 ${1:$(make-string (string-width text) ?\=)} ${1:Title} ${1:$(make-string (string-width text) ?\=)} $0 入力したタイトルの長さに合わせた「=」が自動的に挿入されます。
「yasnippetのスニペットをCodeReposで共有しよう!」という話に乗っかって、php-mode 用の snippet を CodeRepos に commit すべく、yappo さんへアカウント登録のお願いをしていた。
で、今日、そのアカウントを登録して頂いたのだが、肝心の php-mode 用の snippet は、既に 大量に作成済みの方がいらっしゃったようで、ちょっと萎え気味。。。
せっかく commit 権を貰ったのに何もしないのもアレなので、いまさらだけど tDiary 用の recent_amazon プラグインでも commit しようかしら?
オレの周りでは、一般(?)的に「デフォルト」と言えば、「初期設定」だの「標準」だのというニュアンスで利用されている言葉だと思うのだが、ふと読んだニュースの中の使われ方に驚いた。
「新銀行東京:開業直前に上限アップ 過剰融資誘発か(毎日新聞)」という記事の中で、
融資先に半年以内にデフォルト(債務不履行)が生じなければ満額支給していた。
と書かれていたのだ。
で、Wikipedia で「デフォルト」を調べてみると、、、英語では「債務不履行」とかの意味で使われることが一般的らしい。さらにテニス業界(?)だと、「棄権」という意味でも使われるらしい。
なんだか「デフォルト」と言う言葉の意味のデフォルトを知った気がする。
いや、これは面白かった。
軌道エレベータのある島「リンガ」。そこで働く女性達のオムニバスストーリーとかなんとか言う説明はアチコチで書かれていると思うので適当に割愛。
この作品に出てくる女性達は、迷いながらも自分の進む道をはっきりさせて行くのだが、そのストレートさが気持ち良い。それだけだったなら、あまり楽しめなかったと思うのだが、そこにSF風味が加わっていることによって、「おぉぉぉぉ!」と思う事が散りばめられており、かなり楽しめた。
それにしても「リンガ」、舞台設定としてはかなり面白い都市なので、今後もココを舞台とした作品を書いて欲しいものだなぁ。
最初に注意。
CentOS 5 標準の PostgreSQL は 8.1 系なので、8.3 へアップグレードする場合には、ダンプ&リストアが必要になる。既に 8.1 系でデータベースを構築している場合は、pg_dump などを使って、事前にバックアップをしておくことを推奨する。
yum を使ったアップグレード方法は、「Yum Repository Howto」としてまとまっている。これを元に実際に実行してみた記録兼解説をしてみる。
まず yum.postgresql.org に用意されている、CentOS 用の yum リポジトリ設定の RPM パッケージをダウンロードする。
# wget http://yum.pgsqlrpms.org/reporpms/8.3/pgdg-centos-8.3-2.noarch.rpm
ダウンロードした RPM パッケージをインストールする。
# rpm -ivh pgdg-centos-8.3-2.noarch.rpm
CentOS 標準の PostgreSQL パッケージと混在しないように、base と update の定義に除外設定を追記する。
[base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5 exclude=postgresql* [updates] name=CentOS-$releasever - Updates mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5 exclude=postgresql*
これで yum update する準備が整ったので、実行する。さっきオレが実行したときの表示ではこのようになった。インストールされている内容によって、update 対象として出てくるパッケージは変わるので、必ずしも全く同じにはならない。
Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Installing: postgresql-plperl i686 8.3.1-1PGDG.rhel5 pgdg83 34 k replacing postgresql-pl.i386 8.1.11-1.el5_1.1 postgresql-plpython i686 8.3.1-1PGDG.rhel5 pgdg83 25 k replacing postgresql-pl.i386 8.1.11-1.el5_1.1 postgresql-pltcl i686 8.3.1-1PGDG.rhel5 pgdg83 24 k replacing postgresql-pl.i386 8.1.11-1.el5_1.1 Updating: postgresql i686 8.3.1-1PGDG.rhel5 pgdg83 1.7 M postgresql-contrib i686 8.3.1-1PGDG.rhel5 pgdg83 389 k postgresql-devel i686 8.3.1-1PGDG.rhel5 pgdg83 1.3 M postgresql-docs i686 8.3.1-1PGDG.rhel5 pgdg83 10 M postgresql-jdbc i686 8.3.603-1PGDG.rhel5 pgdg83 924 k postgresql-libs i686 8.3.1-1PGDG.rhel5 pgdg83 201 k postgresql-odbc i686 08.03.0100-1PGDG.rhel5 pgdg83 242 k postgresql-server i686 8.3.1-1PGDG.rhel5 pgdg83 4.6 M postgresql-test i686 8.3.1-1PGDG.rhel5 pgdg83 1.2 M Installing for dependencies: compat-postgresql-libs i686 4-1PGDG.rhel5 pgdg83 63 k Transaction Summary ============================================================================= Install 4 Package(s) Update 9 Package(s) Remove 0 Package(s) Total download size: 21 M Is this ok [y/N]:
ここで y を押せば、8.3 系へアップグレードできる。無事にアップグレードができたら、早速実行したい訳だが、一度でも 8.1 系を起動したことがあるなら、次のように表示されるはず。
# /etc/rc.d/init.d/postgresql start 古いバージョンのデータベースフォーマットが見付かりました。 PostgreSQL を使う前にデータのフォーマットをアップグレードする必要があります。 より詳細な情報は /usr/share/doc/postgresql-8.3.1/README.rpm-dist を見てください。
この時は、慌てず騒がず旧データ領域ディレクトリをリネームしてしまえば良い。旧データを残しておく必要がないなら削除してしまっても良い。
# mv /var/lib/pgsql/data /var/lib/pgsql/data.old
で、今度こそ 8.3 をスタートする。ただし、データ領域の初期化を先に実行しなければならない。
# /etc/rc.d/init.d/postgresql initdb データベースを初期化中: [ OK ] # /etc/rc.d/init.d/postgresql start postgresql サービスを開始中: [ OK ]
これで起動が完了したので、psql コマンドで PostgreSQL サーバへアクセスできるかどうかを試してみる。
# su - postgres -bash-3.1$ psql template1 Welcome to psql 8.3.1, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit template1=# SELECT version(); version -------------------------------------------------------------------------------------------------------- PostgreSQL 8.3.1 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20070626 (Red Hat 4.1.2-14) (1 row) template1=#
ということで、CentOS 5 で PostgreSQL 8.3.1 が稼働した。yum で入れたので、8.3.2 とか出てもラクチン update ができるはず。
CakePHP 1.2.0.6311-beta で PostgreSQL を使おうとすると、UPDATE / DELETE ができないみたいだ。
Trac を眺めていると、Changeset 6491 あたりで修正が入っていたようなので、最新版を check out することにした。
trac.cakephp.org には、
$ svn co https://svn.cakephp.org/repo/trunk/cake/1.2.x.x /path/to/save
と書いてあるので、その通りにやってみたものの、どうもソースの内容が違う。はて?と思って調べてみたら、trunk ではなく branches で開発が進んでいるようだ。
従って、本当の(?)最新版を得るには次のようにする。
$ svn co https://svn.cakephp.org/repo/branches/1.2.x.x/ /path/to/save
これで取得したバージョン(リビジョン 6598)では、PostgreSQL でも UPDATE はできた。DELETE は、まだ実装してないので試していない。6311-beta の dbo_source.php やら dbo_postgres.php だのを眺めていて時間を取られてしまったので。。。
「SplashID 4 の Mac OS X 版はホントに出るんだろうか?」と嘆いていた訳だが、おととい
「SplashID 4 for Mac OS released」というエントリが上がって、製品がリリースされていた。
で、早速ダウンロードしてみたのだが、SplashID for Mac OS X では、フツーに日本語入力ができるようになっていた。まぁ、フツーに UTF-8 化されてるって事なんだろう。
これなら!と思って、現在利用してる 3 系からバージョンアップしようかといろいろ読んでみると、どうやら 3 と 4 ではデータの互換性がないので、3 でエクスポートして 4 でインポートする必要があるようだ。
3 でのエクスポートはすぐにできたのだが、4 でのインポートができない。読み込ませようとしたところで、アプリが落ちてしまう。3 のデータがおかしいのかと思って、4 でエクスポートして 4 でインポートしても落ちる。
なんだろ、これ。日本語環境だとダメとかかな?
ログインが必要な処理で、なおかつ、特定のユーザだけに管理者権限を与えたい場合、ACL を使うんだろうなぁと思いつつ、CAKE_ADMIN なんて設定もあるしどうすればいいんだよもー!と混乱していたのだが、「CakePHP 管理画面を作成する方法」でなんとなく納得。
細かなアクセス制限を行う必要がなければ、CAKE_ADMIN を設定して、Admin Routing でのコントロールで充分実現ができそうな気がしてきた。
そこに辿り着くまでに ACL を試そうとして、CakePHP 1.2 β のバグを発見。1.2 では、ACL 用のテーブルをデータベースに作る場合には、次のコマンドを実行せよとあったので、実行してみた。
$ cd cake/console $ ./cake acl initdb
ところが、これ、バックエンドに PostgreSQL を使っていると、PHP Warning が出てテーブルの作成に失敗してしまう。発行されていた SQL を見てみたら、
"id" integer serial NOT NULL,
なんて表現があった。これが SQL 標準なのかどうか良く知らないのだけど、少なくとも PostgreSQL では「integer serial」といった表現は使えない。dbo_postgres.php ないで、それっぽい変換ルーチンはあるのだけど、ACL のテーブル作成部分では利用されていないのかも知れない。
放置するのもアレなので、とりあえず CakePHP の Trac へチケットを登録してみた。ニセ英語で(笑)。
いろいろと教えて頂き、沼津へやってきた。
当初、昨日の夜に出発しようかと思っていたのだが、いろいろあって中止した。今日の早朝に出発しようと思っていたものの起きられずにグダグダしていて気づいたらもう8時、支度をして駐車場へ来てみれば、すげー汚れていたので、フクピカで拭きながら「あぁ、これでキレイになったね、プントちゃん」なんて思っていたら、既に9時近く。
「ま、順調に行けば11時すぎくらいにはつくだろ?」と思って出発してみると、いきなり山手通りが渋滞でなかなか進まない。やっと大橋近辺まで辿り着いて、池尻から首都高→東名高速へ、、、乗ったのはいいんだけど、秦野中井で事故があったそうで、渋滞30キロにいきなりハマった。
まだ数少ない高速経験なのだが、ここまで長々と渋滞にハマり込んだのは初めて。普段は「もうそんなに道路作らなくても良くね?」とか思ってたオレだけど、渋滞に入ってると「まだまだ道路は必要だな」とか思ってしまうから、人って面白い(?)
ということで、沼津 IC を降り、曲がるところを間違えたり、カーナビ(NV-U2)にはまだ掲載されていない道を行ってみたりしながら、沼津港へ到着。結局、12時ちょい前くらいだった。
行く前にちょっと調べて、ココが良いかも!と探しておいた「魚河岸 丸天」へ行ってみた。
店頭は人だかりになっていて、かなり待たされるのかなぁ?と不安になりながら、待っている人リストに追記。。。で、待つこと10分ほどで、おばちゃんに名前を呼ばれた。1回目で返事をしなかったら「呼ばれたらすぐ来てよね」と怒られてしまったよ(笑)
「生しらす丼」 が無かったので、単品の「生しらす」(350円)と、「今日のおすすめ」になっていた「金目中トロ刺身定食」(2100円)を頼んでみた。
「生しらす」は、普通の盛りつけだったけど、金目はお頭付きが出てきてビックリ。周囲からも注目を浴びてしまって、見ず知らずの人と「スゴイね、これ」とかって話で盛り上がってしまった(笑)
生しらすや刺身はもちろんのこと、定食に付いてきた味噌汁もうまかった。いやー、満足した。
で、周辺をウロウロしていたら、ネコを発見。近づいても逃げなかったどころか、すり寄って来たので、ここらのお店の人からエサを貰ってるんじゃないかな。
シャイなのか、カメラ目線はくれなかった。
沼津からちょっと三島寄りに行ったところにあるホテル・エルムリージェンシーに宿を取った。「ツーリングへお出かけのお客様へのお得な宿泊プラン」ってヤツで。ツーリングじゃないけど(笑)。駐車場が広くて無料ってのが、決めてのひとつ。
さて、夕食はどうしよう?と思ってたら、このホテルの近くに丸天があったので、昼に続いて行って来た。昼は刺身だったので、夜はコレ。海鮮かき揚げ丼(945円)。
さらにお店のおばちゃんに「今日はね、イワシの唐揚げがオススメなの。美味しいわよ」と勧められたので頼んでみた。これは315円。
揚げ物に揚げ物を重ねたのもあって、超満腹状態になってしまった。うげー、食い過ぎ。うまかったけど。特にイワシの唐揚げは絶品だったよ。
で、ホテルへの帰りがけ、赤いプントとすれ違った。やー、なんかすげー幸せ。
昨日、ホテルで mixi へアクセスしてたら、マイミクさんの日記に「ロマンスカーに乗って、箱根に着いた。明日帰る。」という書き込みがあった。「箱根って、方面的には近いよなぁ」と思って、プントから外して部屋に持ち込んでいた NV-U2 で地図を見てみると、、、えらく近い。ルート計算させてみると、箱根新道を使うと、箱根湯本駅まで1時間ちょいで到着するらしかった。
そこでちょっと思いついて連絡を取ったら OK だとのことなので、箱根でマイミクさんと合流して帰ることにした。待ち合わせは箱根湯本駅、お昼過ぎ。
どうせ箱根に行くなら、温泉に入りたいと思って調べてみると、日帰り温泉を楽しめるところが結構あるのが分かった。その中から、箱根湯本駅に近いところで「花紋」を選んでみた。
箱根湯本へは国道1号から箱根新道を使った訳だが、ペーパー卒業後、まともな(?)山道は今回が初めて。キツいカーブの連続と後ろからのプレッシャーに負け、途中で登坂車線に移ったり、下り坂の連続では初めて L レンジを使ったエンジンブレーキを体験。エンジンが普段より音を出してたけど、あんなもんなんかな?
と、まぁ、苦労しつつもなんとか着いたところ、この「花紋」、なんと豊臣秀吉の茶の湯の席に、その名前の由来があると言うことだ。
モーニングで「へうげもの」を読んでいるので、なんだかちょっと嬉しくなった。「花紋」の目の前の公園(あとで駐車場と分かった)で、お祭りみたいなのをやってたので、フラフラ寄ってみると、さらにその近くに早雲寺があったので境内に入ってみたところ、見事な桜があったので撮ってみた。
天気が良かったら、もうちょっと色合いが良かったんじゃないかなぁ。
ところで、お風呂の方は、設備もキレイでなかなか良かった。源泉を引いているとのことだけど、結構ライトで、すっきりとした感じだった。
知っている人は知っていると思うのだが、オレは片付けが苦手だ。気合いを入れて片付けたときにはそれなりにキレイになるのだが、すぐにまたそこらにモノを置いてしまって、結局また同じように雑然とした部屋になってしまう。
いつも「時間を取って掃除しないと」と思っていて、「週末にやろう!」と気分を盛り上げてはいるものの、ついうっかり沼津とかへ行ってしまうので、なかなか掃除ができない。
ということで、「1日15分、掃除をする」を日課にしてみよう!と思って、やってみたよ。
使ったのはキッチンタイマー。時間を15分にセットして、スタート!
カウントダウンされる時間を時々見ながら掃除していると、「あと4分しかない、急いで紐で縛らないと!」とか、ちょっとスリリング(?)な感じがして、楽しかった。これなら続くかな?
明日以降もやってみたい。
▽ スズキシゲヲ [小金井公園まで行きなさったならそのままお風呂の王様まで行けばよろしかったのに。あそこは天然温泉ありますよ。]
▽ すずき [公園行く時に「あー、そういえば近いのかな?」と思ったんですけど、そのまま調べませんでした。いま地図を見たら激近ですね..]