88171.net

email2blosxom

いくらコマンドライン教徒といえども、 毎度毎度サーバにログインして書くのも面倒なので、 例によってメールでpostするためのスクリプト email2blosxom を書いてみた。

まぁ全体的に自分向けに書き捨てた感じなので、 もし使う場合はうまいこといじくり回してください。

以下、perldoc email2blosxom から。

NAME
       email2blosxom - A MIME message to individual file(s) converter

SYNOPSIS
       email2blosxom < mailfile

DESCRIPTION
       email2blosxom parses MIME message and splits into individual file(s).  As its name
       suggests, it's been intended to post new article for blosxom
       <http://blosxom.sourceforge.net/>.  However, it simplly behaves as, to say, MIME splitter.

CONFIGURATION
   DATA
       This script contains text template in itself, after the "__DATA__" token, in Template
       Toolkit format.  Substitutable variables are:

       title
           title text (expanded from e-mail subject)

       body
           body text (expanded from e-mail body)

       picts
           array of pictures (may be empty if no picture attached)

       pict.name
           file name of a picture

       pict.alt
           file name of a picture (identical with "pict.name", but you can overwrite by
           $cleanup_text, if you want)

   $output_file
       Points where to put text file into.  If you want some complex naming (i.e. include current
       date in file name), you can set this variable calling anonymous subroutine.

           our $output_file = &{sub{
               ... do something ...
               return $filename;
           }};

       If the file (or something) already exists, incremental number (like
       /some/path/basename-N.suffix) is automatically added.

   $picture_directory
       Points where to put attached picture(s) into.

       The original file name (included in MIME header) will be respected, but when the file
       already exists, will be treated in the same way as $output_file.

   $cleanup_text
       Reference to subroutine to be called just before writing new text file, to cleanup (i.e.
       escaping) text.

       This subroutine will be passed a hash reference.

           $ref = {
               'title' => title text,
               'body'  => body text,
               'picts' => [
                           {
                            name => file name of 1st picture,
                            alt  => identical with name,
                           },
                           .....
               ],
           };

   umask(XXXX)
       You may want set umask, especially when directories to put files into are shared by other
       users.

KNOWN BUGS
       ·   This script itself doesn't have any authentication mechanism (and I have no plan to
           implement.)

           You MUST filter e-mails using other programs, like procmail, before passing to this
           script.

       ·   This script sees 1st MIME part as text, and other parts (if exist) as attachments.  I
           know thant fixing this wouldn't be a hard work.  But because this behaviour seems to
           be OK in practical use, I won't fix it ;-)

AUTHOR
       ohkawa <http://88171.net/>

LICENSE
       This software is distributed under CC BY 3.0 license.

       <https://creativecommons.org/licenses/by/3.0/>

TokyoPromenadeとblosxomの性能比較

Muninのグラフを眺めてたら、なかなか興味深い事実に気づいた。 http_loadtime プラグインの出力から各フェーズ任意の5日間を選び、 期間中の平均値を調べた結果、

  1. Tokyo Promenade CGI版: 31.24 ms/req
  2. FastCGI化: 26.27 ms/req
  3. Google Code Prettifyをローカルに: 11.13ms/req
  4. blosxomに入れ替え後: 319.68 ms/req

笑えるくらいにTokyoPromenadeが爆速。 ちなみに http_loadtime プラグインは wget -p を叩いているので、 外部リソースのレスポンスも絡んでくる。その点で3と4はほぼ同一条件なので、 Tokyo Promenade (FastCGI版) はblosxomの28.7倍速い という結論になる。

体感で速い速いとは思ってたけど、これほどだったとはなぁ。

blosxom Disqusプラグイン

探してはみたものの(主にspam対策的な意味で) 良さげなコメントプラグインが見つからず、 でも一応コメント欄くらいは付けとくかなと思って、 Disqus用のプラグインを 書いたFacebookのComments Box も考えたんだけど、あんまりFacebookにロックインされるのもどうかなぁ、と。

いや、でもコメント欄を外出しにするなんて、 昔は考えてもみなかったけどね。 時代は変わりますわ。

なぜ今 blosxom なのか

別のVirtualHostで夜な夜なこっそり移行作業を進めて、やっと Tokyo Promenadeから blosxomに乗り換えたわけだけど、

なんでまたそんな古いCMSをわざわざ使い始めたの?懐古主義なの? ドMなの?

と詰問される可能性があるので(ないよ)、あらかじめ防衛線を 張っておこうかな、なんて。

宗教上の理由

今のところこんな宗教たちを信仰しているわけですが、

Tokyo PromenadeだとCのソースコードに抜本的に手を入れないといけなくて 泣く泣く見て見ぬふりをしてきたこれら宗教の戒律(?)たちが、プラグイン かき集め(てちょろっと手を入れ)るだけでぜーんぶ満足できる。 そう、blosxomならね。 あれ?これ、blosxom使わない理由なくね?

あ、ちなみにTokyo Promenadeさんをdisってるわけじゃないです。 堅くて爆速のCMSがチョー簡単に動かせるというのは他を圧倒してるし、 細かいところをいじりたいと思ったときにハードルが高いというのは もはや思想レイヤーの話なので、あーだこーだ言ってもしゃーない。

拡張性

拡張性最強。というかminimalな本体と徹底したプラグイン至上主義が めっちゃ素敵。API自体は質素な印象だけど、その気になればプラグインから 本体をガシガシいじれちゃうあたりも「自己責任で好きにしな!」 って感じでとっても好印象。

こんなことできたらいいのになぁっていうことはだいたい誰かが プラグイン化してくれてるし、ほとんどのプラグインがsnippetレベルなので 読むのもいじるのもラクラク。ただみんな自分の環境用にほとんど 書き捨ててるっぽくて、たまにえっと思うようなトラップが仕込んで あったりするけど、それもまた微笑ましい。同じはずのプラグインでも 派生物がわらわら見つかったりして、そういう文化なんだなぁと思う。 blosxomはMovable TypeやWordPressには太刀打ちできなかった (と思ってる)けど、そもそも土俵が違ったんだと。

将来性

現時点の最新版の2.1.2がリリースされたのがSourceForgeによれば 2008年10月2日とほぼ5年前なので、ある意味将来性なんて皆無。 しかーし逆に考えるんだ、こいつはとっくに枯れきってる! アップデートの手間もなければ仕様変更に振り回されることもない! しかも全体でこの程度の規模なら、自力でどうにでもできるぞ!!

おまけ

とまぁそんなことを考えつつblosxomに乗り換えたわけですが、 嬉しい誤算が一つ。 カテゴリごとにRSSが出力できる!

つまりリア充な皆様がたむろしていらっしゃるSNS界隈には 当たり障りのない日記だけ上げて、こういうヲタ話は気を遣わずに 書き散らせる、ということ。これ、地味に嬉しい。

SCHWINN Lavin 25

Factory Spec

Frame TJ Lavin inspired Cr-Mo HT/DT/ ST dirt jumping, w/ TT and DT gussets, integrated rotor tabs, SS mounted U-brake pivots, new 6mm plate dropout with 14mm axle slots.
Fork Hi-Ten Unicrown 31.8 blades, w/ Cr-mo 1 1/8" steer tube, new dropouts for 14mm axle
Crankset/Chainwheel Hollow forged steel 3pc 175mm w/ black ED finish w/ steel chainwheel 39T screen printed.
Bottom Bracket 8 spline 145mm axle w/ loose ball BB
Pedals Die cast alloy w/ Cr-Mo spindle, fixed pins.
Freewheel Lida, 1/2 X 1/8 X 14T
Chain KMC Z410 1/2 X 1/8 silver / black
Rims Jalco BX-316 black anodized 48H
Tyres Front 20x1.9 XS Gripper, Rear 20 X 1.95 XS Hucker
Front Hub Steel low flange 48H 14mm axle
Rear Hub Steel low flange 48H 14mm axle
Spokes 14G steel w/ UCP finish
Nipples CP Brass
Rear Brake Tektro 907A U-Brake w/ coil springs and Tektro power booster
Brake Levers Tektro 289A cast aluminum
Handlebar Schwinn 2.0mm thick Hi-ten, 610mm x 95mm x 155mm w/ knurling
Stem XS 4-bolt front load cap alloy 1 1/8 threadless
Grips XS 2-1 Grip black Kraton
Headset VP w /gyro, spring loaded adjuster cap, 5mm spacer
Saddle XS Padded Dirt Jump w/ 8mm rails
Seat Post 25.4 x 300 steel with alloy sleeve clamp
Seat Clamp Alloy w/ XS logo
Extras 1 set of pegs and chain tensioners

thanks to: http://mrdodgy.blogspot.jp/2005/06/schwinn-lavin-25-2005.html

自宅にうっかりYAMAHA RTX810を導入しちゃった話

NASを買い換えようかなぁと思い立ったものの、よくよく考えると特に不便してるわけでもないことに気づき、行き場のなくなった物欲が暴走した結果、

買っちゃった。YAMAHA RTX810。性能的にもお値段的にも我が家には完全にオーバースペックだけど、知ったことかそんなこと。

で、二日酔いでクラクラしながら

        [the Internet]
              |
      [VDSL回線終端装置]
              |
  [WHR-G301N (DD-WRT Router)]  )))  [クライアント達]
              |
       [ReadyNAS Duo v1]

これを

        [the Internet]
              |
      [VDSL回線終端装置]
              |
          [RTX810]----[WHR-G301N (DD-WRT AP)]  )))  [クライアント達]
              |
      [ReadyNAS Duo v1]

こうしたった。DD-WRTを無線AP(ブリッジ)で動かす方法はこのへん参照。

で、気になるその性能はというと、有線で

これが

こんな感じ。Bフレッツ マンションタイプの理論値が100Mbpsなので、かなり頑張ってるんじゃないでしょーか。

ただどっちかってーと性能よりも安定性に期待してるので、その期待にはまず間違いなく応えてくれるでしょう。DD-WRTはちょいちょい外に出れなくなったり、いつまでもβ版だったりするので…。

最後にReadyNAS Duo v1のベンチ結果を貼ってサヨウナラ。MTUを調整したものの無線がボトルネックなので、残念ながらリプレース前後で特に変化はなし。

路地裏

帰り道でとても心惹かれる路地裏に出会ったのだけども、その雰囲気を写し込む技量がないのが残念。

転職しました

知ってる人は、何を今更、って感じでしょうが。

先月、転職しました。で、丸7年過ごした名古屋を離れて藤沢に移り住みました。

いろいろ書こうかと思ったけど、ビール飲んだらめんどくさくなったのでこのへんで。

とにかく、元気でやってますよー。

テスト

先日豊浜で食らった海鮮丼。

SE BIKES Lager (2010)

Latest

Handlebars BAZOOKA Fun Ride 60cm (9+9cm cut off)
Stem GRUNGE Tough-X 58mm, 1-1/8", 25 Degree Drop
Grips GIZA PRODUCTS VLG-609A
Brake Lever DIA-COMPE TECH99D DIRT HARRY F&R
Seat BROOKS B15 Swallow
Pedal SHIMANO PD-A530
Tires MICHELIN Pro4 Service Course 700 X 23c
Extras ARESBIKES Chain Adjuster

~Oct 2012

Handlebars Deda Elementi RHM01 36cm (c-c)
Stem TRUVATIV Stylo 60mm, 5 Degree Drop
Grips SILVA Cobra
Brake Lever PROMAX 160A Top Mount Lever
Seat SELLE SMP Extra
Pedal SHIMANO PD-M520
Cog DICTA Free Wheel 16T / SHIMANO DURA-ACE SS-7600 15T
Front Tire BONTRAGER R2 700 X 23c

Factory Spec

Frame SE BIKES Lager 2010, 54cm, Midnight-Black, Urban Single Speed Design, 100% Cr-Mo, Water Bottle & Fender Mounts, All Sizes Can Barspin
Fork Cr-Mo Straight Leg w/ Fender Mounts
Headset Tange Alloy DX4, 1-1/8" Threadless
Handlebars Alloy Bullhorn, 400mm Wide
Stem SE 3D Forged Alloy, 0 Degree Drop
Grips SE Logo Cushion Wrap Foam
Brake Lever Tektro RL-570, Alloy, F&R
Brake(s) Tektro 316 Dual Pivot Caliper F&R
Seat SE Super Classic w/ Bottle Opener
Seat Post SE Micro Adjust Alloy 27.2mm
Crankset FSA Vero3-pc Alloy, Euro Sealed Bearing, 46T Alloy
Chain KMC Z410
Pedal Wellgo Alloy w/ Cage & Toe Clips
Rim Alex R500, 32H, Double Wall w/ CNC Sidewalls, Stainless Spokes
Front Hub SE High Flange Alloy, 32H, 3/8" Hollow Axle, Sealed Bearing, Nutted
Rear Hub SE High Flange Fixed/Free Alloy, 32H, 3/8" Hollow Axle, Sealed Bearing, Nutted, 17T Freewheel & 17T Cog
Tires Kenda Kwick Roller Sport 700 X 28c
Extras Zipper Top Tube Pad, Alloy Axle Nuts, Removable SE Brake Cable Clips, SE Plastic Grip End Caps
Weight 9.8kg (56cm)

cf. SE BIKES 10 LAGER 700C