headに1個でもjsをインクルードするのが心苦しいkomagataです。

インラインでJSでメアド隠せないかなと思ってシーザー暗号にしてみました。歴史・暗号好きにはニヤッっとしてしまうやつですが本家そのまま3文字ずらすだけです。むしろそこらじゅうに普通に書きまくちゃってる俺のアドレスを解読してニヤッとして欲しいぐらいです。

というかこの種の奴はクローラーがJS解釈できたら終了で(Googleは簡単なメニュー展開ぐらいだったらできるそうですね)、そうで無い場合は単純な話メアドがコード内にそのままなきゃいいぐらいでいいのではないかと。(人間がコードみたらばれるし)

下記のフォームにメアドを入れて暗号化した文字列を取得します。

メアドを入力: => 暗号化文字列:

ブログとかメアドを表示したい場所に太字の部分にさっきの暗号化文字列を入れます。

&lt;script&gt;(function(s){r='';for(i=0;i&lt;s.length;i++){r+=String.fromCharCode(s.charCodeAt(i)-3)};document.write(r)})('<strong>暗号化文字列</strong>')&lt;/script&gt;

入れた結果。

JavaScriptで出したメアド → 

コピペに慣れきってしまって、画像のメアドを登録した覚えがありません。CAPTCHAも嫌いです。

これが駄目だったら次の暗号にしようかしら。暗号化の歴史をなぞってみると楽しいかも。

MUGENでキャラ増やすにはcharsフォルダに突っ込んでそのフォルダ名を設定ファイルに書く必要がある。

スト2みたいにキャラが11人とかならいいんですが、MUGENではパクリからオリジナルまであらゆるキャラが有志によって作られてるので数百人とかあっという間。

手作業で登録してると中国に作業委託したくなってくるのでフォルダ名一覧をクリップボードにコピーするJScriptを書いてみました。

listing_folder.js

これをダウンロードしてきてWクリック。

listing_chars.js(1)

listing_chars.js(2)

listing_chars.js(3)

まず、JScriptではpromptが無いのでVBScript経由でInputBoxを使う。

更にクリップボードはIEを経由する必要がある。

function prompt(text, title, defaultText) {
  var code = 'Function fn(text, title, defaultText)\n'
    + 'fn = InputBox(text, title, defaultText)\n'
    + 'End Function'
  var sc = new ActiveXObject("ScriptControl");
  sc.Language = "VBScript";
  sc.AddCode(code);
  return sc.Run("fn", text, title, defaultText);
} 

function Clipboard() {
    this.ie = new ActiveXObject( 'InternetExplorer.Application' );
    this.ie.Navigate( 'about:blank' );
    while ( this.ie.Busy ) {
        WScript.Sleep( 10 );
    }
    this.clipboard = this.ie.Document.parentWindow.clipboardData;
    this.getText = function () {
        return this.clipboard.getData( 'text' );
    }
    this.setText = function ( s ) {
        this.clipboard.setData( 'text', s );
        return true;
    }
    this.release = function () {
        this.ie.Quit();
        return true;
    }
    return this;
}

var path = prompt("charsフォルダのパスを入力してください。", "キャラリスト", "c:\\Program Files\\mugen\\chars")

var shell = new ActiveXObject("Shell.Application")
var folder = shell.NameSpace(path.replace(/\\/gi, '\\'))
var folders = folder.Items()
var names = []

for (var i=0; i&lt;folders.Count; i++) {
  var item = folders.Item(i)
  if (item.IsFolder == true) names.push(item.Name)
}

var clip = new Clipboard
clip.setText(names.join("\n"))
WScript.echo("フォルダ名一覧をクリップボードにコピーしました。")

Rubyで書いてexeにする方法を取れば良かったかな。

だってはじめる前は

「JScriptで書けばWindowsに何もインストールしなくても、WSH経由でWクリックで動くらしい。JavaScriptと殆ど同じだから楽だろう。これはいいぞ!」

って思ってたんですよ。

まあRubyをexeにする時にまた色々起きるんだろうな。yak shavingからは逃れられない・・・。

参考: WSH よりクリップボードを使う 参考: JScript小ネタ

yak shaving で人生の問題の80%が説明できる問題 – bkブログ

yak shaving は、ようするに「ある問題を解こうと思ったら別の問題が出てきて、それを解こうと思ったらさらに別の問題が出てきて…」ということが延々と続く状況を表しています。ちなみに、ヤクとは毛が長い、牛の一種です。

yak shaving は、以前に覚えた bikeshed と同じくらい便利そうな表現です。というもの、プログラムを書いていると yak shaving 的な状況がすぐに発生するためです。

身に染みて同意です。

「そもそもタスクの優先度を決める必要がる」「あのツールが使えそうだ、どうつかうんだろう」「なんか使い辛いな、携帯からも見れないし」「よし自作してしまおう」「いや、そんなことしている間に一つも仕事が進まないではないか」

その間に漫画やニコニコ動画やRSSリーダーを何度も見ている。

自分がyak shavingに費やした時間の浪費、それを同じプログラマーの皆さんに少しでも味わってほしくなくてTips的なことを書いてるのかもしれません。ブログを見てて嬉しい瞬間って結構それだったりします。

実家にプチ帰省しました。

hatake

畑で、

potato

芋をDiggしたり、

boiled-potato

with バター & ソルトで食ったりしました。

本当の目的は道の駅八王子というところで八王子系ラーメンとやらを食べることでした。

しかし、俺が食べたのは八王子ラーメンで、八王子系ラーメンじゃなかったっっっ・・・・!? しょうがなく売ってたやけに高いやつを買いました。

hachioji ramen

両親は氏照買ってた。

Ujiteru

このSakeは皆さんご存知の通り、八王子、いや関東が誇る名将、北条氏照の勇猛果敢さや小田原陥落後の切腹時の切なさをイメージして作られた銘酒です。

まあシャンパンで言えばドンペリですな。 両方飲んだことねーけど。

redmineの0.7.2がリリースされたとのことでドリホにインストールしました。(複数人プロジェクトでRemember The Milkでは手に負えなくなってきたので)

0.6.5のときからプロジェクトのトップでエラーが出てて、今回も出たので今度はちゃんと探ってみました。

After 0.6.3—0.7.1 upgrade, project views fail with SQL error about ””tracker_id”” column

This is all very mysterious, and my suspicion is that it’s something to do with the old versions of Ruby and sqlite that Dreamhost is using. Unfortunately they do this because that’s what comes with the 2006-era release of Debian they’re using on all their servers; they said they’ll be upgrading to a newer Debian, but I don’t know how long that will take.

ドリホ(っつーかDebian?)のsqliteでで駄目みたいすね。マイシーコーにしたらちゃんと動いた。Passengerで動くのでインストールホント楽です。

使い勝手も想像以上に快適ですねredmine。もうTracいやーんって感じです。

MTOS4.1にバージョンアップした。

それにに伴って、こんな感じの.htaccessを書いて安心していた。

Redirect permanent /mt/archives/2008/05/post-702.html http://p0t.jp/archives/2008/05/post-702.html

ところが、リダイレクトできない。よく見ると・・・

(略)/post-702.html

ハイフンが

(略)/post_702.html

アンスコに変わっている。

word replace

ちょっと意味がわからないんだが、Word特有の文字を置き換える対応するASCII文字 (””、’、…、-、—)の「-」がいけないのか?

そして、置き換えるフィールドの中に無いが、暗黙的に出力ファイル名も含まれるということなのか?

ジーザス!

Redirectでアンスコの方に変えてやるという方法もあるが、負けた気がするので下記のSQLをマイシーコーで実行して事なきを得た。(既に遅いが)

UPDATE mt_entry SET entry_basename = REPLACE(entry_basename, 'post_', 'post-' )

ついでに、ころころ引っ越すために画像はFlickrに置くことに統一した。(ついでだが、flickr and WEBIMAGERは便利なツールだ)

ソフト毎の流儀やバッドノウハウを覚えるのは嫌いな方じゃないが、最近のWordPressの好印象とMovableTypeの悪印象が鮮明過ぎる。SEO的なプラグインもWordPressにそろっている。ぼちぼち変え時かもしれない・・・

大東亜戦争従軍記こっちに移行完了しました。

リアルタイムウォー世代(高齢の方)向けに文字大きくしてあります。

怪しいプラグインとかも多いけど、WordPress使い易っ!って感じです。

で、この糞ブログ(p0t)なんぞよりよっぽどあっちの方が多くの方に見ていただきたいんですけが、基本的にもう更新が無い訳ですよね。そういうサイトをSEO的にどう上げていったらいいのか悩みます。

まあ主目的が保存なので、変わらず、長く置いておくことで多くの目に留まれば良いなあと思います。

MTOS4.1を使ってみて、もはやカスタマイズ方法を勉強するコストが俺のモチベーションを遥かに上まわる程、テンプレートが細かく構造化されており、ウェブページ(ブログ記事以外)を含めたテーマ(StyleCatcherを使ったStyle?)も殆ど見つからない状態。(だから今、このブログはデフォルトの鶏なんです・・・)

あと、今記事1580個なんですが、再構築はホント萎えます・・・。

フリーとして小さい要望をちゃっちゃと終わらせるためにはWordPressも知っとかなきゃなあということもあって大東亜戦争従軍記をWordPress2.5.1に移行始めました。(もっと和風っぽくする予定です・・・)

これが、何かわかりやすい!テンプレというかテーマもPHPまんまだし。

結構お馴染みっぽいvicunaというところのテーマを使わせてもらってます。ただ、おじいちゃん達が読むサイトなのでフォントでかくしたり、激しく日本語表記をわかり易くしたりカスタマイズしています。

多言語化にはgettextを使っているようで、

__(msgid, domain);

こんな感じの記述がテンプレ中に見られます。あー書き方ちょっと面倒いけどわかりやすいっすねー。

wp-content/themes/wp.vicuna/languages/ja.po

をちょっと弄ってって、

% msgfmt -o ja.mo ja.po

で完成。でも”“トラックバック”“とかいってもわかんないよなあ。

RailsのTipsを動画で紹介し続けてるRailsCasts

前々から、id:dandasoさんにも、

「見ると自分のコード直したくなる。」

と言われて、見なきゃなぁ・・・と思ってたんですが、動画見れるiPod nanoを購入したのを切欠に全部見てやろうと意気揚々と100話以上ある動画を全部iPod nanoに入れました。(podcastまんまだと見れないとかいわれるから携帯動画変換君でわざわざ.M4Vに変換)

携帯電波も使えなくて暇な地下鉄でさあ見るぞと颯爽と取り出すと・・・

railscasts.gif

・・・・・・・・・読めねえんだよ。

くらぁ、ボケェ!

Composite Primary Keys

Ruby on Rails does not support composite primary keys. This free software is an extension to the database layer of Rails – ActiveRecords – to support composite primary keys as transparently as possible.

Any Ruby script using ActiveRecords can use Composite Primary Keys with this library.

ActiveRecordで複合プライマリキーを使えるようにするgemだそうです。ポスグレとかOracleではパフォーマンス出るのかも。

has_many :throughやhabtmと相反する思想な気がして俺は嫌かも。