July 2007 Archives

技術系の人間にとって作業履歴を適切に保存することは超重要なことである。
にもかかわらず、shellのコマンド履歴すら/dev/null行きですか、おめでてーな。
「セキュリティ上の都合により...」
とか言う人は何かもう考え変えた方がいいよ。


さて、そういうことで(??)、ブラウザの履歴管理である。
通常、ブラウザで閲覧したページの履歴は、ブラウザ側で組み込まれているシステムで管理されている。
けれども、そういうのはテキストベースで、
「URL + <TITLE>タグ」の組み合わせくらいでしか保存されていなくて、もうダメぽ。
表示したページのサムネイルくらい出力されてもいいものだろうに。


とか思っていたら、そういうExtensionがやはり既に存在していて、
先日インストールしたら、すごく快適だったわけですよ。
その名はThumbStrips
閲覧したページが次の画像のように、サムネイル付きで保存される。


ThumbString


これで、
「いつか見たあのページ」
も超速攻で探し出せること間違いないよね。
エロサイトばっかり見てる人は要注意ですね。


さて、
「"いつか見たあのページ"を見たいのに、今ちょっとオフライン」
とかいうことは結構ありがちですよね。
「世の中いつでもどこでもオンライン」
とかそういう世界はまだまだ遠い未来の話で泣けてくるよね。


そしたらさ、
ブクマするような感覚で、ページをローカルに保存すればいいじゃない。
そう思うよ、俺は。


ScrapBookを使えば、ページをローカルに保存することなんて、超簡単。


ScrapBook


ここから「ページの取り込み」をすればローカル環境にページが保存されていい感じ。
これで、オフラインでもオンライン気分に。


錯覚以外の何者でもないけどね。

副社長と俺の共同出資。
たくさん食べて大きくなってください。

ワイドにワイルドに。

社長のベストオーダー

| | Comments (0) | TrackBacks (0)

「お前のブログに載せれ」と言われたのでアップ。


パワハラっすよ。

Emacs歴3年を越えた人の80%くらいは使っているんじゃないかと脳内統計が出ているMigemo
みんなも日本人ならMigemoを使おうよ!


Migemo はローマ字のまま日本語をインクリメンタル検索するためのツールです。かな漢字変換をすることなく日本語のインクリメンタル検索を快適に行うことができます。


というわけで、日本語を母語とする我々に必須なツールなわけですよね、Migemo。


でもって、こないだlifehackerを読んでいたら、
変な風にFirefoxのMigemoエクステンションが紹介されていて吹いた。


Windows/Mac/Linux (Firefox): Ever since I saw Safari's superior inline search highlighting, I've been desperate to get the same functionality in Firefox. The XUL/Migemo Firefox extension—which is primarily intended to search Japanese text using Roman letters—adds Safari-like highlighting to Firefox inline search.
(Safariのインラインの検索語ハイライトを見て以来、Firefoxに同等の機能がないことを残念に思っていたよ。でもね、[元は日本語をローマ字検索するために作られた]XUL/Migemoを使えばSafariみたいなインラインの検索語ハイライトの機能をFirefoxで使えるんだ)


ちょw
Migemoの機能はハイライティングじゃねーwww


けど、実はFirefoxでMigemoを使えることを知らなくて、
これを機会にしてインストールしてみた。
↓みたいな感じ。


migemo


"key"という検索語で"キー"がマッチしている、と。
まさにMigemo。
超便利。


ハイライティングはおまけ。
あくまで。

やはりVISTAはダメですね、というのと、
やはり富士通はダメですね、というのをARAC大先生に聞かされた。
以下は「FUJITSU LX70W」を購入したばかりのARAC大先生との、MSNメッセンジャでの会話ログ。

0:24:29 ARAC: ヴィスタ使いにくい。

0:24:44 mahata: おぉ、そうですか。

0:25:02 ARAC: つうか明らかに選択ミスした。
0:25:13 ARAC: 家電的な色が強いのね。
0:25:23 ARAC: キーボードとかおまけな感じ。

0:25:38 mahata: キーボードがオマケてw

0:25:38 ARAC: リモコンでテレビも地上波デジタルもインターネットもできるよ。
0:25:40 ARAC: みたいな。

0:26:02 mahata: ほぅ。
0:26:09 mahata: だからmacにしとけと。

0:26:52 ARAC: すげえうすっぺらで打ちにくいのこのキーボード。本体に収納できるし。
0:27:12 ARAC: いろんなことができるテレビって感じ。

0:27:16 mahata: まじか。
0:27:21 mahata: ちなみに富士通だよね?
0:27:24 mahata: 型番なんだっけ?

0:27:39 ARAC: LX70W/D
0:27:57 ARAC: なぜかCPUが3Gのもあるのに1.8Gの方を選んでしまった。
0:28:00 ARAC: おかしいな。

0:29:24 mahata: えっと、こいつか。
0:29:25 mahata: http://www.fujitsu-webmart.com/pc/ui016?WEB_STYLE=FMVLX70WD&SERIES_CODE=304&ONLY=0
0:29:43 mahata: たけー。

0:29:48 ARAC: うむ。
0:30:01 ARAC: どう考えても職業エンジニアの買う機種じゃないね。
0:30:12 ARAC: 衝動買いの最高記録を更新してしまった。

0:30:37 mahata: やはりMacBookPro + でかめのディスプレイでデュアルディスプレイ構成、が良かったのではないかね。

0:30:55 ARAC: マックはなあ。
0:31:17 ARAC: そういえばディスプレイの端子がないのよねこれ。

0:31:34 mahata: え、何それ。

0:31:53 ARAC: 一体型なわけでしょ。
0:32:20 ARAC: 前のノートにつないでいた予備のモニタを接続して2枚ディスプレイにしたかったんだけど。
0:32:25 ARAC: つなげない。

0:32:34 mahata: まじか...くさってるなぁ。

0:32:44 ARAC: なんでそんなことも確認しなかったんでしょうか僕は。
0:32:55 ARAC: 相当にテンパってたんだなあ。

0:33:15 mahata: 高い学習材料ですな。
0:33:43 mahata: あと、面白いから、このメッセンジャのログをブログに載せていい?

0:34:00 ARAC: おもしろくはないと思うけど別にいいよ。
0:34:06 ARAC: ARAC/vista? が送信したウインクを再生するには、最新バージョンの Windows Live Messenger が必要です。最新バージョンの Windows Live Messenger をダウンロードするには、http://g.msn.com/5meja_jp/122 にアクセスしてください。
0:34:10 ARAC: ぐ。

0:34:18 mahata: 笑
0:34:28 mahata: ちなみに、ARACの名前はそのまま出していいの?

0:34:34 ARAC: シェイクはいけるのか。
0:34:50 ARAC: みくしにも出してるし別にいいよ。

0:34:57 mahata: よーし、了解。

0:35:16 ARAC: でー先のページにあるように家電としての機能は充実しているから。
0:35:41 ARAC: テレビとかも見れないか気が向いたら検討してみるお。

0:35:50 mahata: なるほどー。
0:35:58 mahata: ちなみに、vista的な要素で魅力的なものはないの?

0:36:02 ARAC: 前のノートPCもできることなら修理に出そうと思う。
0:36:04 ARAC: ああ。
0:36:16 ARAC: ウィンドウがうにょーんってなるね。
0:36:34 ARAC: ビスタであることのめりっとがいまのところなにひとつとして解らない。

0:36:44 mahata: まじか。

0:36:54 ARAC: できるだけ設定をいじって旧OSに近付けているけど。これはよろしくないよなあ。

0:37:21 mahata: 「できるだけいじって、旧OSに近づけたくなる」というのがもうダメぽな感じですね。

0:37:34 ARAC: 対応しているソフトが少ないのがなにより痛い。

0:37:50 mahata: なるほどー。

0:37:56 ARAC: 愛用していたテキストエディタが使えなくなった。


というわけで、みんなVISTA自重汁。

TrackBack機能を自前で実装していて、
ブログサービス各社に「TrackBack Ping」を打ちまくっていたのだけど、
ちょっとスパマー対策に各社の色が出ていて面白かった。


「TrackBack Ping」は単なるデータのPOSTであり、
所定のデータをPingの受け口となるURLに投げてしまえばそれで終了である。
でもって、返り値はXML形式である。


成功の場合は:


<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<error>0</error>
</response>


失敗した場合は:


<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<error>1</error>
<message>The error message </response>


のように返る(トラックバック技術使用仕様書より)。


で、だ。
前述の通り、TrackBackは単なるデータのPOSTだから、
ナイーブな作りだとスパマーの格好の標的となってしまうわけである。
そこでブログサービスプロバイダ各社は凌ぎを削って、
スパム対策に励んでいる...んだと思う。


「TrackBack Ping」のテストをしていた俺も、いわばスパマーの仲間みたいなもので。
「TrackBack Ping」でPOSTするデータをそれぞれ:


# title : "foo"
# excerpt : "bar"
# url "(各社の任意のURL)"
# blog_name : "aaa"


みたいに投げていたら、案の定、いくつかのブログサービスでスパム認定された。
具体的に言うと、「はてな」「FC2」「livedoor Blog」から次のようなエラーメッセージが返った。


- はてな "http://d.hatena.ne.jp/mahata/20070625 was not found in your page."
- FC2 "Error:Not contains URL."
- livedoor Blog : "Your TrackBack Cannot Be Received"


エラーメッセージから判断するに、
「はてな」「FC2」は、ポスト先のURLがexcerptに含まれていない場合はエラーになるようである。
「livedoor Blog」はイマイチ釈然としないメッセージだけれど、
たぶん同じなんじゃないかと思う。
こういうスパム避けの処理で正当なエラーメッセージを返すとスパマーに食われかねないので、
曖昧な書き方をしてしまうっつー気持ちはわからなくもない。


また、「Yahoo!ブログ」「アメーバブログ」「ヤプログ」は
ノーチェックでTrackBackに成功してしまい、
なんだかやるせない気持ちになった。


以上。

2chのweb制作板で見つけた。


<strong>俺</strong>


その発想はなかった。

先日のエントリに対して、ku大先生が次のようなツッコミを入れてくれた。
「マニュアルに警告でているけど、読んだ?」
マニュアルに出ている警告とは、下記のようなものである。


現在、strip_tags()はHTMLの検証を行わないため、 不完全または壊れたタグにより予想以上に多くのテキスト/データが削除される可能性があります。


この関数は、allowable_tagsで許可した全てのタグの属性を修整しません。これには、style および onmouseover属性が含まれており、悪意のあるユーザが他のユーザに見せるようなテキストを投稿する際に危険な行為を行う可能性があります。


これを放置することは脆弱性を許容することで、
ちょっとイヤなんだけど、先日のSmartyの拡張は暫定的なコードということで勘弁してください。
というかさ、これに手を入れようとすると、
"strip_tags関数そのもの"の実装に手を入れる必要があるわけで、
Smartyのプラグインを書く以上に面倒。
ただ、タグの属性値をパスするという仕様はわからなくもないっつーか、
勝手に落とされても困るし、まぁーしょうがないかとも思う。


でも、オプションくらい用意してくれよな。

あなただけ見つめてる

| | Comments (1) | TrackBacks (0)

先輩が歌ってくれている。
感動するわ〜。

今日の社長の名言

| | Comments (4) | TrackBacks (0)

「声に出して読みたいソースコード」
を書け。


感動した。

Smarty用の拡張プラグインを作成する手順を示す。


目的:PHPのstrip_tagsに相当する修飾子を作成すること


Smartyのデフォルトの修飾子に、「strip_tags」というものがある。
文字列から、マークアップタグを取り除く修飾子であり、
タグ付きの不正な出力を避けるにはこれを利用するのが通例である。
けれども、これでは"ある特定のタグを許可したい"という要求に応えられない。
PHPのstrip_tags関数では第2引数で指定したタグを許可できるので、
これを利用して、Smartyのプラグインとして実現することにした。


実装方法:Smartyのマニュアルが秀逸(超平易な説明!!)


まず、プラグインファイルの命名規則に従い、
ファイル名を決定する。



type.name.php

  • type は次のプラグインタイプのうちのいずれか1つです。


    • function

    • modifier

    • block

    • compiler

    • prefilter

    • postfilter

    • outputfilter

    • resource

    • insert


  • name には英数字とアンダースコアのみ使用できます。 PHP の変数 を参照してください。



とのことであり、ここで作成するのは修飾子(=modifier)であるので、typeは"modifier"。
また、strip_tagsの拡張なので、nameはextended_strip_tagsとしておく。
すなわち、今回作成するファイル名はmodifier.extended_strip_tags.phpとする。


また、プラグイン関数の命名規則は、



ファイル内で定義する プラグイン関数 は次のように指定します。
  • smarty_type_name()


とのことなので、この場合はtypeとnameがそれぞれ"modifier"と"extended_strip_tags"なので、
プラグイン関数はsmarty_modifier_extended_strip_tags()となる。
繰返すと、modifier.extended_strip_tags.phpにsmarty_modifier_extended_strip_tags()を定義して、
プラグインとするわけである。


実装内容:やはりSmartyマニュアルを読みながら


今回のケースではこんな感じ。



$ cat /usr/share/Smarty/plugins/modifier.extended_strip_tags.php
<?php

/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*/

/**
* Smarty strip_tags modifier plugin
*
* Type: modifier

* Name: extended_strip_tags

* Purpose: strip html tags from text except limited tags
* @link http://mahata.net
* @author Yasunori Mahata
* @param string
* @return string
*/

function smarty_modifier_extended_strip_tags($string)
{
return strip_tags($string, "<a><b><em><strong><param><embed><object>");
}
?>


objectとかembedとか許可していいの??
つーのはまた別な話。
普通、そういうタグは設定に逃がすべきだろ??
つーのもまた別な話。


プラグインファイルの配置


PHPソースの中で動的に呼び出せる



<?php
require_once $smarty->_get_plugin_filepath('function', 'html_options');
?>


ただし、毎回これを呼び出すのは面倒臭いので、
一般にSmartyのpluginsディレクトリに配置する方がラクチン。
俺のところの環境(FedoraCore5でyumによるインストール)だと
"/usr/share/Smarty/plugins"にある。
なお、同ディレクトリにデフォルトプラグインのソースファイルが沢山あるので、
実装の際に参考にすると良い。


プラグインの適用


こんな感じ!!



{$long_long_strings|extended_strip_tags}


Enjoy MVC Modeling with Smarty Hacking!!

新ジャンル

| | Comments (5) | TrackBacks (0)

ちょwww
「ビックリマン プロ野球チョコ」て…。


やべ。
散財!散財!!

社長とトレード

| | Comments (0) | TrackBacks (0)

俺のカード(石井)と社長のカード(藤川)をトレード。


さようなら、石井。ようこそ藤川。

Yahoo!のイマイチ冴えないSNSサービスで某大先輩が、


「紙に日記書くときにタイトルつけないだろ。いつからタイトルをつける文化が定着したんだ」



とか書いていて、なるほどなぁー、と思った。
確かにブログは毎回毎回タイトルをつけてから投稿するけど、
日記はタイトルなんか付けないよね。
せいぜい、「YYYY/MM/DD」くらいかな。


というわけで、下記の等式が成り立つわけだ。


- 日記 = 日々の記録
- ウェブ日記 = 日記 + タイトル
- ブログ = ウェブ日記 + コメント + トラックバック


ブログに何かを足すと次世代ウェブサービスの予感(←適当)。


そんなことよりも、今日はプロ野球チップスで楽天の山崎をひきあてたわけで、
そちらの方が俺に取って肝要な事実であるわけですが何か。

マスクメロンktkr

| | Comments (0) | TrackBacks (0)

オカンからマスクメロンが送られてきた。
一人暮らし独身男性はまず購入を避ける贅沢品である。
ラッキー。


一緒に入ってきたさくらんぼがカビていて、
「ちょっと、生鮮食品は送る前に連絡してよ(荷物受取りのため)〜」
と抗議したら、
「だって、保冷剤入れたんだよ…」
とか返されて、
保冷剤がいつまでも冷たいと思っているあたり、さすが我が母親だと思った。


ありがとうございます。

Tech総研の『人事が不採用ボタンを押す「面接NG回答ランキング」』が秀逸過ぎてワロタ。



いやいや。
「あなたは何色ですか?」と聞かれたら、
「白です。御社の色に染まります」と答えなさい。
つーマニュアルなんてねーだろ。


俺だったら、
「質問の意図がわかりかねます」
とか言って落とされるな。

最近は社長と副社長がプロ野球チップスを買い与えてくれる。


えーっと。

高橋由伸との遭遇

| | Comments (0) | TrackBacks (0)

高橋キラカードktkr。
川上並べて、同期勝負っぽい感じを演出してみた。


軽く興奮している。

金本との遭遇

| | Comments (2) | TrackBacks (0)

ついに出会えた。

「アタシと仕事、どっちが大切なの!!」
とか聞かれて、
「型が違うから比較できない」
とか答えるから。


そこは無理矢理キャストするんだよ。

ホワイトへアードデビル

| | Comments (0) | TrackBacks (0)

「"プロマネいらね" とか言う奴をマネージするためにプロマネがいるんだよ」
という言葉を何度か反芻するように読み返してみたら、
「お前のためにチームがあるんじゃねえ、チームのためにお前がいるんだ」
っつー往年の名ゼリフが脳内に沸き上がってきて(語呂が似ているだけだが)、
やはりスラムダンクは現代社会の縮図をうまーく表現していたんだなーとか思うとともにバスケがしたいです。

何だよこのブログ

| | Comments (0) | TrackBacks (0)

twitterかよ。

だって古い友だちは、
「マハタの発言に本意は3%も含まれない」
って理解してくれてるんだぜ?

SNSとかでさ、
「友だちにまで公開」とか、
「友だちの友だちにまで公開」とか設定してる奴は何様なの。


そんなに恥ずかしい生き方してるのかよ。


とかって、人の生き方に口出す奴が一番ウザいよね。
だが反省はしていない。


でもあれかな。
「○○までにしか公開していません」つーシチュエーションで、
「俺、○○の範疇に入ってるわー」みたいなことを感じさせることで、妙な優越感を刺激してやってるのかな。
いやらしいわー。

現役エンジニア座談会

| | Comments (1) | TrackBacks (0)

昨日、高専OBで現役エンジニアな連中とお酒を飲んだけど、
「エンジニアに対してキモいっつー表現をするのは最高の褒め言葉だよね」
みたいなことを話してきた。



あと、
「プロマネいらね」
って主張したら、
「"プロマネいらね" とか言う奴をマネージするためにプロマネがいるんだよ」
とか言われた。

よくわからない

| | Comments (0) | TrackBacks (0)

「何かを表現したい」というのは割と人間の根源的欲求だと思うけど、そうでもないのかな。

About this Archive

This page is an archive of entries from July 2007 listed from newest to oldest.

June 2007 is the previous archive.

August 2007 is the next archive.

Find recent content on the main index or look in the archives to find all content.