“2010/11”な記事

JavaScriptでStringBuffer。link

 Web アプリケーションのパフォーマンスを改善する

 上記の記事を読んでいたら実装例が紹介されていて、なるほど、面白い、ボクにもできそうと思ったので導入してみた。多分うちくらいの規模だと大した恩恵は無いと思うけどね。


var StringBuffer = function(string) {
    this.buffer = [];

    this.append = function(string) {
        this.buffer.push(string);
        return this;
    };

    this.toString = function() {
        return this.buffer.join('');
    };

    if (string) {
        this.append(string);
    }
};


 内部に配列を作って保持しておいて、出力する時に一気に繋げる感じっすね。


var foo = "ham";
var aString = new StringBuffer("Spam").append(foo).append("eggs").toString();

> aString
"Spamhameggs"

 こんな風に使う。

 こういうちょっとした事で最適化されたり使いやすくなったりするネタ大好き!

MacPortsでClojureとか入れてみた。link

 なんとなくClojureでも入れてみっかって事でやってみましたよ。どうでもいいけど、clojureとかcatalystとか同じ名前のヤツがいくつかあって紛らわしいよねー。少しは気を使って欲しいよねー。

 とりあえずPortsにあるのかチェーック。


risa:local tac$ port search clojure
clojure @1.2.0 (lang, java)
    The Clojure programming language

clojure-contrib @1.2.0 (lang, java)
    The Clojure programming language - Contrib

clojure-contrib-devel @git-20100220 (lang, java)
    The Clojure programming language (development) - Contrib

clojure-devel @1.1.0-rc2 (lang, java)
    The Clojure programming language (development version)

leiningen @1.3.1 (devel, java)
    A build tool for Clojure designed to not set your hair on fire.

Found 5 ports.


 そらあります、そらありますわ。なかったらおかしい。てことで、次はオプション的なヤツをチェック。


risa:local tac$ port variants clojure
clojure has the variants:
   rlwrap: Use rlwrap support for tab completion, parenthesis matching


 rlwrapってのがあるみたいですね。先にバラしちゃいますけど、これ有効にしたら補完の他に↑でhisotryが辿れたりとか、^hとかも利くようになったのでMustだと思いますよ。


sudo port install clojure +rlwrap

 これで問題なく入ってー、cljとかコマンド叩くとREPLというなのコンソール的なのが上がってきますよ。

 気分を良くしたので、次にこれもMustと噂のclojure-contribをインストールします。こちらは特にオプションの類いも見つからなかったので普通にport install clojure-contribしてください。
 問題なくインストールが完了したみたいなので試してみると、


risa:bin tac$ clj
Clojure 1.2.0
user=> (require 'clojure.contrib.str-utils)
java.io.FileNotFoundException: Could not locate clojure/contrib/str_utils__init.class or clojure/contrib/str_utils.clj on classpath:  (NO_SOURCE_FILE:0)
user=> 


 なんだってー! が、しかし、いくら何でもこのくらいのエラーメッセージはわかりますよ。classpathって書いてあるじゃん。ぷぷぷ
 と、~/.profile辺りに


export CLASSPATH=/opt/local/share/java/clojure/lib/clojure-contrib.jar


 を追記してやってみますが変わらず。んー

 軽く調べてみましたら、どうやらPortsでインストールされる/opt/local/share/java/clojure/bin/cljという起動スクリプト(/opt/local/bin/cljからシンボリックリンクが張られています)がCLASSPATHを参照していないらしいです。そのかわりに.clojureというファイルにパスを記述していると、それを組み込んでくれるらしいです。
 ところが、その.clojureファイルってのがカレントディレクトリにないとだめらしく、例えばホームディレクトリに.clojureファイルを作成したとして、他のディレクトリへ移ってcljを実行しても有効にならないのですよね。それはそれで使い方もあろうが面倒くせー。

 まぁ、こんな本質ではないところであまり道草していても良くないので、アップデートの度に面倒くさいだろうと覚悟しつつ起動スクリプトを編集してホームディレクトリの.clojureファイルを読むようにし、そして更に気が変わってCLASSPATHを参照するように変更して使っていたら、普通に既にCLASSPATHを読むようにするpatchがあったって言うね……。

 #22889 (clojure-contrib with erring CLASSPATH) – MacPorts

 そらあります、そらありますわ。なかったらおかしい。

SugarSyncを始めてみた。link

 News |写真も動画も簡単同期&共有。オンラインストレージ|SugarSync

 つい先日日本語でのサポートを開始したSugarSyncさんが今度は無料ストレージの容量を5Gまで拡張するという大盤振る舞いを見せております。その他にも、同期可能マシンの制限を撤廃、データ世代管理を拡大など非常に便利になる良い改良(重複表現)。
 この手のサービスにはDropboxという偉大な先輩がおりますが、無料ストレージの容量という部分においては勝った格好です。

 正直なところ、クライアントアプリやローカライズの部分などからの印象で洗練されているのはDropboxさんの方だと思います、シャレオツ感もあるし。ただ、この容量は魅力。前述のように洗練されていないですけど、日本語に翻訳されているのも嬉しい。その意気や良しと応援したいですよ!
 て事で、下記に無料登録で今なら500MBの容量ボーナスが取得できるリンクを張っておくので宜しければー、ボクの容量も増えますしーというあさましいネタでありました……。

 SugarSync
 Dropbox

 あさましついでにDropboxのも。とか

Kinectさんが想像以上に凄過ぎた。link

 Kinect - Xbox.com

 なんか凄いこと言っているけどさ、どうせ大したこと無いんでしょ。誤認識バリバリで使い物にならないんでしょ。そもそもXbox 360とか持ってないし。

 とか全力スルーしてましたけども、まさかの3D認識で精度も本当に高そうな感じ。むくちゃくちゃ面白そう。もの凄く興味深い。自宅でモーションキャプチャーできる勢いよ、これ。
 本当に購入を検討したい。Xbox 360は持っていないけれど、Macでもごにょごにょできるようになるみたい(Kinect running on OS X)だからいいよねー。

 ちなみに、こちらも全力でスルーするつもりのPS3のWiiリモートさんも実は凄かったりするのかな。するといいなぁ。

“かまど茶屋”さんに行ってみた。link

 思案橋にある“かまど茶屋”さんに行ってみましたよ。なんだか昔からある老舗な居酒屋さんらしいのですけど、当たり前のように初めてでしたよ、ボク。


 こんな風な路地っぽい通路を通って進んで行きますとー、


 こんな風なたたずまいのお店が登場。ばーん


 肉団子と里芋煮ですね。お芋さん関係は今が旬ですね、美味しいですよね、たくさん食べたいですよね、あまり食べると怒られる人ですけど。


 田楽風の味噌おでん。これも名物みたいですよ、素朴な味わい。是非。


 こちらも人気でおすすめだと言うなんとかというメニュー。なんとか……、名前忘れてまった……。


 こうやって盛って、パキっと二つに折ってからいただきます。かぶりつきましょう。


 こちらはガッツリ名物だというオランダ鍋。牛乳仕立てだけども、味わいはしっかり和風鍋。まろやかーでありました。この後はもちろんご飯を入れてリゾット風なおじやで頂きましたよ。
 この辺になると、例によって撮る前に食べるになってます。


 お芋マニアはお芋料理を追加するのです。てことで里芋のフライ的なヤツ。ほっこりほっこり。


 こちらも和風な感じの生春巻き。海老やお魚が巻いてあります。カジキだとか言ってたかな。違いがわからない残念な舌であります……。

 お店の中を撮り忘れたので説得力がありませんけど、基本和風でお座敷で古民家みたいな作りで雰囲気たっぷりのいい感じでしたよ。店員さんの対応も親切で凄く良かったし、気持ちよく食事して帰れました。また行きたい!

わざわざlinebreaksを無にする不毛なfilter、Djangoさんの話です。link

 Django | Built-in template tags and filters | Django documentation
 Django | Custom template tags and filters | Django documentation

 つい先日beautyOfCodeを導入したという記事を書きましたが(例のあれ(仮題)・beautyOfCodeを導入してみた。)、その際に少しだけblogアプリの方にも手を入れなければなりませんでした。

 beautyOfCode(と言うかSytaxHighlighterさん)ではpreタグ内などの特定の条件の改行やスペース入りの文字列をそれっぽく表示するのですけど、このページではデータベースから引っ張りだしたテキストデータをDjangoの標準フィルターであるlinebreaksを通して表示しているので、preタグ内であろうがなかろうが強制的に空行があればpタグを、改行があればbrタグを挟み込んで出力してくれます。ほとんどの場合、そちらの方が都合がいいわけですけど、今回のように中にタグが混ざるような場合には邪魔になる場合もあって、表示が乱れてしまったのですよね。
 こんな風にタグを混ぜるのならデータベースへ保存する時点でかっちりとしたHTMLなどの体をしていなければならないのですけど、今更言うなよ、だってずっと改行コードを変換して出力でやってきたんだもの。です。

 というわけで、せっかくlinebreaksを適用したのに、それらを後から除外するという不毛なfilterを拵えてみましたよ。


import re

from django import template
from django.template.defaultfilters import stringfilter

register = template.Library()

@register.filter(name='remove_linebreaks')
@stringfilter
def remove_linebreaks_using_regex(value, regex):
    for mo in re.finditer(regex, value, re.S):
        tmp = mo.group().replace('<br />', '\n')
        tmp = tmp.replace('<p>', '')
        tmp = tmp.replace('</p>', '')
        value = value.replace(mo.group(), tmp)
    return value

 元の文字列と除外対象部分を抜き出す事ができる正規表現を渡すと、対象部分のみlinebreaksとは逆の処理をして返してくれます。beautyOfCodeさん向けには、“<pre.*?</pre>”みたいな正規表現を渡して対応していますよ。今のところは問題なく。

 んー、それにしてももうちょっと格好良く書きたいところだが、だが、だが。

最近のたくぅさん。'10/11/24link

 この題名で文章を書くのは久しぶり、本当に久しぶり。あえて書かないようにしていたのだけど、まぁ、ここらで一回くらいはいいかなと思ったり思わなかったりしたわけですよ。

 リストラされましたよ。ダメ人間は本当に役立たずですね。要りません、こんな人。

 でもって実は夏前の話だっていうね。吃驚やわ。

 でも、いろいろ有り難い対応をして頂けたりしてなんとかここまでこれましたよ。実は救われた感もあります。感謝です。

 去年の今頃某ご友人床屋様に切られてしまって後悔してから来年の冬を目指して髪を伸ばす方向でやっておりますけども、来年まで生きていけているか怪しいですし、自分で伸ばしておいてなんですけども長くてうざいです。しかしまぁ、結構薄くなってきたし、これからは薄くなる一方だろうし、ラストチャンス的な、的な、的な。
 これ来年辺りに読み直して、「あー、予兆があったんだぁ」とかなったりするかな。うぐぐ

 この夏くらいからおっさんのtwitter疲れが激しかったり定期的に訪れたりしてー。

 そんな関係でもないのに上からエラそうに言っちゃう男の人って……。

 茶化しちゃいけないところを上からエラ(ry

 夏の終わりくらいからかなりダイナミックな行動をとってしまって、先日の血液検査でエラい事になってしまって、久しぶりに優しい主治医の先生に怒られてしまって有り難いやら申し訳ないやら。
 「なんかもうボロボロだったんすよぉ」とか言い訳しますけども、反省しております。もう少しストイックに振り戻したいと思います。心も大事だけど、体も大事。わかっとります、一応。

 あ、いろいろもありましたし、内科じゃない方の病院も復活してケイゾク中。またお世話になるとはなぁと思ったけども、いろいろもろもろであります。

 とはいえ、お酒ですなぁ、お酒大好きですなぁ。味も好きだし、何より酔っぱらうのがねぇ、たまらんすなぁ。酔っぱらうと気が大きくなって食べちゃうすなぁ。あっ! あ、じゃねーよ。

 某人と9週連続で呑んだりとかしちゃってもう何が何だか。もう途中からは呑まないといけないんじゃないかっていう錯覚さえ覚えましたね。実際、7週連続呑んだ数日後に9週目フラグ立っちゃったんで、8週目二人で呑んじゃったもんなー、ちょっと無理して。
 これは凄く凄いことだと思う。感動した。嬉しい。もうないだろうなぁ、こんなことはさー。ありがとうありがとう。大好きだー、私おっさんだけど。

 これからどうするかは例によってノープランなんですけども、例によって前向きっぽい感情はこれっぽっちも湧いてこないのですけども、私は周りに恵まれているから、恵まれていたからこれまで何とかやってこれたから。
 とか思ってると何とかなるのかな。ならないですよ。ですよねー。

 とかありまして、まぁ、元気です。病んでるけど。どないやねん。

パソコンサンデーという番組の動画。link

 [小倉さん司会」 昭和のパソコン情報番組、パソコンサンデーの動画 経由

 遥か昔、四半世紀も前にこんな番組があったんだねぇ。流石はテレビ大阪やで。長崎なんて未だにテレ東系ネットされてないもん、見れてたわけないよ。

 X68000が発売される前の1986年だと言うことですが、年代からいって私は当時中学生。既にゲーム好きでしたからグラディウスは遊んでましたし、アーケードは無理だったのでファミコン版を頑張ってクリアとかしていましたから、X68000版の超絶移植は憶えていますよ。もちろんパソコンだのマイコンだのは買えるはずもなかったから、街の電気屋さんとかで何度か目にしてました。
 私らの世代はこれの少し前のマイコンブームというのを経験していますから、一応この辺りの文化にも馴染みがあるのですけど、今の若い子からみると異次元なんだろうなぁ。

 まったりと番組が進行していきますが、中盤辺りで「副音声でプログラムをお送りします」という謎のテロップが表示されます。この頃になるとフロッピーディスク(5インチ)も普及してたみたいですが、カセットテープでデータをロードするのが主流の時期がありまして、カセットテープにセーブするわけですから音なんですよ、録音。実際にはピーガー言ってるのですけど。なので、テレビとかラジオとかでその音を放送すればプログラムを配信できたわけですね。つまり普通にコピーしてしまえばそれで良かったわけですね。時代やわぁ。
 パソコン用のデータレコーダとかも販売されていたのですけど、普通のカセットプレーヤとかでも代用できてましたね、接続ケーブルさえ用意できれば。

 それにしても80年代とか90年代は本当にダサい。そんなあの頃が大好きで10代を過ごした私ももちろんダサい。懐かしい、何もかもが懐かしい。