5月 2008

  • はてな匿名ダイアリ用user.js

    By mattz, 2008/05/30

    増田用のuser.js2種

    エントリに返信(トラックバック)用のボタンを表示する。
    コメントになってる返信ボタンを表に出すだけなので、仕様が変わったら使えなくなるかもよ。
    最新版のanondLDRize.jsには組み込んであるよ。
    一覧表示に無理矢理メニューを表示する。
    便利かどうかは今一分からない。ウィンドウをでっかくして使ってる人じゃないと辛いかもね。自分用なので、いろんな環境までは考慮してないよ。あと、oAutoPagerizeとか使ってる人は使わない方がいいかもね。
    上位互換なanondLDRize.jsっつーのを書いたので、リンク外します。
  • Opera9.5での設定

    By mattz, 2008/05/30

    久々のクリーンインストールでもあることだし、デフォルトから変更した設定についてメモっておく。

    メール関係
    opera:config#Mail|Mail Root Directoryだけはフォルダをコピーしたり、エクスポート/インポートしたりするのは大変なので、値を元々使っていた ものに変更した。
    メール用のツールバーをテキストのみ表示に変更。
    迷惑メールボタンを削除。
    削除ボタンをクイック検索欄の右に移動。どちらも間違えて押すのがいやなので。
    ツールバー関係
    パーソナルバーを表示に。
    アドレスバーに表示されている戻るだの進むだのは全て削除。マウスジェスチャあるからこんなボタン要らん。
    パネルツールバーを上に表示。
    パネル関係
    ネットサーチとチャット以外のパネルは全て表示に。
    Opera Link関係
    Opera Linkで同期できるものは全て同期。どういう訳かパーソナルバーの同期だけがうまく行かなかったので手動で設定。
    Speed Dial
    opera:config#User Prefs|Speed Dial Search Typeを「1」(Google)に変更。
    speeddial.iniに
    [Size]
    Rows=4
    Columns=4
    

    を追記(というか、以前のspeeddial.iniの内容を全てコピペ。再起動。

    設定(Alt+PとかCtrl+F12で出るやつ)
    一般設定タブ
    起動時の動作を空白のページを表示するに変更。
    ホームページ欄を空に。
    ウェブページタブ
    フォントをクリアタイプフォントに変更。
    詳細設定タブ
    タブ
    追加のタブオプション...タブ無しウィンドウを許可するにチェック
    ブラウジング
    描画のタイミングをすぐに描画するに変更。
    コンテンツ
    JavaScriptオプションを全てオフに変更。
    フォント
    フォント片っ端からをクリアタイプフォントに変更。
    ショートカット
    キーボード設定を9.2コンパチに変更。
    シングルキーショートカットを有効に変更。
    その他の設定
    search.ini、override.ini、urlfilter.iniなどはとりあえずデフォルトのまま。
    wand.datも移行しない。
    user js、user cssもとりあえずは無しで。気になって仕方ない時に少しずつ移行するつもり。だったけど、この行間が詰まるのだけはcssで何とかす るか。

    タグ

  • Who’s Bad?

    By mattz, 2008/05/30

    そう言えば、こんなものも買いました。ヒストリー・オン・フィルム VOLUME IIとどちらにするかカミさんとあーだこーだ言ってたわけですが、「BAD」が入ってなきゃヤだ、と強行に訴えこちらを購入。なんで「BAD」に拘ったかというと、youtubeで「とんねるず BAD」あたりで検索してみると分かるかもしれない。カミさんは昔かなりとんねるず好きだったし、「みなさんのおかげです」とか観てたはずなので当然知ってると思ったが、見せたら初めて観たと言 っていた。分からんもんだ。

  • build 10024について

    By mattz, 2008/05/29

    フレーム使ったページの挙動がおかしいね。今時フレーム使ったページってのもそんなに多くもないんだけど、ちょっとこれは俺は困る。とりあえず、10014に 戻すわ。

    追記

    自分で書いといてなんだが、自宅のパソコンでは問題がないな。またproxyが悪いのか、それ以外の何かが原因なのか。とりあえずオフィスの方はクリーンイン ストールしてみるかなぁ。設定やら何やらの移行が大変なんであんまりやりたくないんだが。

    さらに追記

    クリーンインストールしてみたらおかしくない。ただし[設定>詳細設定タブ>ブラウジング>描画のタイミングをすぐに描画する]の設定は必須のようだ。

    タグ

  • お偉いさんてのはみんなこうなのかねぇ

    By mattz, 2008/05/29

    引用は抜粋です。

    西垣氏は伊藤忠商事の取締役会長 丹羽宇一郎氏の「入社して最初の10年は泥のように働いてもらい、次の10年は徹底的に勉強してもらう」という言葉を引用し 、「仕事をするときには時間軸を考えてほしい。プログラマからエンジニア、プロジェクトマネージャになっていく中で、仕事というのは少しずつ見えてくるもの だ」と説明。これを受けて、田口氏が学生に「10年は泥のように働けます、という人は」と挙手を求めたところ、手を挙げた学生は1人もいなかった。

    馬鹿。10年経ったら何がどうなってるか分からんのに?10年も泥のように(ってよく意味が分かんないけど)働いてたら、10年後に出来上がるのは役立たずだよ。大体、プログラマからエンジニア、プロジェクトマネージャなんていう双六はみんなに適用できるもんじゃないのよ。僕は「10年は泥のように働けます」なんて言うようなやつは部下には要らない。「5年であなたを抜かします」くらいは言って欲しい。

    企業側が欲しい人材について、向氏は「貪欲(どんよく)に学ぶ気持ちを持っていて、環境適応力が高い人」と回答。自らの若いころは、いかに楽をするかを考えていたが、「それではいけないと自戒を込めたアドバイス」(向氏)だという。また、「日本の大学を卒業して日本企業に入ってくる海外の学生たちは、みんな ハングリー精神がある。日本の学生は頼りない」とこぼした。

    いかに楽するを考えないようなやつは、プログラマにもSEにもなっちゃいかん。仕事の内容もそうだし、そもそもITが何のためにあるかって、めんどくさい事をいかに楽に楽しくやれるようにできるか、じゃねーの?。手紙書いてポストに入れて郵便局の集配車が集めて局で仕分けして配達先の局に運んで配達員が配達する 、ってのが、メールで済むことはメールで済ませられるようになったんだぜ?いかに楽するか考えた結果だろうがよ、これは。

    日本企業に入ってくる海外の学生たちは、みんなハングリー精神があるって当たり前だろうがよ。あるやつが日本に留学しに来るんだから。逆だっつー の。

    もうこういうイベントやめない?つか企業側の呼ぶ人材が間違ってるよ。こんな馬鹿がIT企業の重鎮面してのさばってるのが日本のIT企業の最大の問題 点なんじゃねーの?

    タグ

  • build 10024

    By mattz, 2008/05/29

    Busy busy busy

    Change Logもろくに読んでないけどインストールだけした。って言いながら読んだ。個人的に気になったのはこの辺↓。

    • Fixed the missing tag list on del.icio.us
    • Fixed display of Japanese file names in Mail

    少しは日本語環境にも目を向けてくれたらしい。早いとこ./でのページ内検索で日本語が使えるように復活させて欲しいものです。

    タグ

  • greeも退会しました

    By mattz, 2008/05/28

    なんだか今更ですけど。いや、だって何ヶ月もログインしてなかったりした訳だし。SNSのコミュニケーションって面白くないんですよ、僕には。twitterですらほとんど他人と絡まないような性格ですし、基本的に馴れ合いが苦手なんですよ。殺伐とした空気の中にいたほうが落ち着く、というと変かもしれ ませんが、2ちゃんねるくらいがちょうどいいです。
    あ、ついでにフレパもやめてます。orkutもアカウント削除しました。多分これで登録済みのSNSって……あ、まだあった。けどあれSNS自体がなくなってるような気がするし、ほっとこう。絶対パスワード分かんないし。

    タグ

  • phpしか知らないプログラマってさ

    By mattz, 2008/05/28

    以前にとあるperlスクリプトをphpで書き直すってのをやってもらった訳です。ちょっとそのまんま転載するのは憚られるので、少し変えて掲載します。

    if( $str =~ /ABC/ ){
      $flag = 1;
    }elsif( $str =~ /DEF/ ){
      $flag = 2;
    }elsif( $str =~ /GHI/ ){
      $flag = 3;
    }else{
      $flag = 1;
    }

    要するに、変数$strに"ABC"を含んでたら$flagに1、変数$strに"DEF"を含んでたら$flagに2、変数$strに"GHI"を含んでたら$flagに3、どれでもなかった場合も$flagに1を代入しろ、っつーことです。これをphpに翻訳したA君(仮名)はこういうコードを書いた。

    if( strpos( $str, "ABC" )){
      $flag = 1;
    }elsif( strpos( $str, "DEF" )){
      $flag = 2;
    }elsif( strpos( $str, "GHI" )){
      $flag = 3;
    }else{
      $flag = 1;
    }

    んで、その書き直された方のphpの方のどれでもなかった場合に$flagに代入する値を1じゃなくて0にするねっていう改修を僕がやったんですが、このphpのコードの問題点に気付いてなくてへへぇ簡単簡単とかいって単純にこうやっちゃったもんですから、

    }else{
      $flag = 0;
    }

    バグ作っちゃいましてね。死ね。俺。ちなみに改修前のソースでなぜ問題が起きなかったかというと、$strには"DEF"や"GHI"で始まる文字列が入ってく ることはないんですね。故に、"ABC"で始まる文字列が入ってきたとしてもelseブロックに処理が流れるもんですから結果として$flagには期待通りに1が入 っていたという。

    てゆーかなんでpreg_match使わない訳?

    てゆーかstrposのオンラインマニュアルにも

    警告

    この関数は論理値 FALSE を返す可能性がありますが、FALSE として評価される 0 や "" といった値を返す可能性もあります。 詳細については 論理値 の セクションを参照してください。この関数の返り値を調べるには ===演算子 を 使用してください。

    て書いてあんだろうがよ、気付けよ、馬鹿。

    てゆーかstrposなんか使ったことねーよ。使うなよ。

    タグ

  • build 10014のバグ

    By mattz, 2008/05/28

    随分前のビルドでも同じようなのが出てたような記憶があるけど、history backした時に、CSSが適用されないことがあるよね?先祖帰り?

    タグ

  • カテゴリ別のRSSを配信したい

    By mattz, 2008/05/28

    2009/10/16 追記

    思うところあって、こちらで公開したpipeは削除しました。

    もしも、このブログのカテゴリ毎のRSSを取得したくなったなら、まずはそのカテゴリのページを表示して(サイドバーのタグクラウドから探すとか、そのタグがつけられたエントリを表示してタグ一覧から探すとかすればよいです)そのページをRSSリーダに放り込めばよかろうかと思います。

    元の文は以下に残しておきますが、現在は内容的には無意味です。


    そんなにニーズがあるとも思えないんですけど、まぁ中にはOpera関係のエントリだけでいいのにお前が何の漫画読んでるかなんて興味ねーんだよ、的な人もいるかも知れないので、このブログのRSSをカテゴリ別に配信できるようにしてみたい、と思った。

    最初はMT4のテンプレートをカスタマイズしてやる方法というのを模索していたのですが、Movable Typeのテンプレートって、よく分かんないんですよね、 私。よく分からないまま、言われるがままにコピペで設定してみて言われた通りにならないと対処のしようがない、というか実際そうだった訳なんですが、結局のところうまくいかなかった。

    じゃぁどうしようかってんで、Yahoo!Pipesに頼ってみることにしました。

    で、出来上がったのがこれ(試行錯誤の末にえらい間抜けなことをしているので、View Sourceとかは是非して、もっといいやり方を教えて下さい。実 はカテゴリじゃない、comicタグとかでも抽出できたりするタグつけるのやめた。いいやカテゴリだけで。)。「取得したいFeedのカテゴ リ」ってところに左の方に並んでる、カテゴリをコピーして入力して、[Run Pipe]を押してもらえれば結果が表示されるんで、More Options→Get as RRSとかしてもらえればいいのですが、それも面倒なので、サイドバーのカテゴリ一覧の右か左かにボタンをつける、くらいのことはテンプレートいじりできそうなので、その内やりますった

    2009/05/15 追記

    Pipe自体は今も有効ではありますが、旧ブログの方を更新していないものですから、ここに書いてあることはほぼ無意味です。

    というか、サイドバーに表示されている「タグクラウド」ってやつ(Drupalのtaxonomyモジュール)がその辺のことはよきにはからってくれるので、無用になりました。

    タグ

  • ADAMAS

    By mattz, 2008/05/27

    PEACE MAKERに続いて、こちらも皆川ブランド買い。一応「宝石使い」とかいうキーワードだけは知ってましたが 、詳細は全く知らずに買いました。

    多分皆川作品では初じゃないかな、という女性主人公の流崎麗華というお蝶婦人を髣髴とさせる名前の若い女性。宝石を通じて尋常ではないパワーやさ まざまな人間離れした能力を発揮するという、いかにも漫画の主人公な人物。

    皆川亮二ってエログロは似合わないし、基本的に少年漫画向けの人だと思うんだけど、なんで青年誌に描くんだろうか。少年誌だと女性主人公って描け ないのかなぁ。小学館となんかあったのかね?まぁ、どっから出版されても面白ければそれでいいんだけど。という訳で、ADAMASは僕のような皆川好きには当たり前に面白いです。

  • 河童のクウと夏休み

    By mattz, 2008/05/27

    僕は河童は居た、あるいは居る、と思ってます。でなきゃ日本中に河童や河童に類する物の怪に関する伝承がある理由が説明できない。日本中どころか 似たような話は海外にもあるそうですから、絶対河童は居たはずです。水木しげるも荒俣宏もそう言ってる[要出典]。

    まぁ、それはともかく「河童のクゥと夏休み」です。昨年のロードショーの時に観てますが 、なかなかの秀作です。買えとは申しません(買っても損はしないと思いますけど)が、レンタルででも一度観てみてください。かなり涙腺を刺激しますよ。まぁそういうの嫌いな人もいるでしょうけど。

    有名な話ですから今更ここに書くこともないでしょうが、この作品を監督した原恵一という人は、「クレヨンしんちゃん」の映画版なんかもいくつか手 がけている人です。「クレヨンしんちゃん」のしんちゃん、誤解している人も多いですが、映画だけでなくTVアニメの方でも実にいい子なんですよ。いたずらしたり粗相したりはしますけど、なんだかんだ言いながら家族は大事にしてますしね。

    だいぶ話がそれました。ともかく、「河童のクゥ」は秀作です。内容だの受賞歴だのは、リンク先をご覧下さい。なお映像ソフトとしてはご紹介した「 ぬいぐるみ同梱版」の他にコレクターズBOX【通常版】てのがございます。よろしければどうぞ。

    タグ

  • PEACE MAKER (1)を購入した

    By mattz, 2008/05/26

    まったく内容を知らないまま、作:皆川亮二というだけでのブランド買い。

    ガンマンとしては天才だけど、それ以外はちょっと抜けたところがあり、生活能力の希薄そうなホープ・エマーソンという名の主人公、こう言ってはなんだがほぼD-LIVE!!の斑鳩悟。そういや亡き父も天才ってところも一緒だな。(敵役も含めた)キャラクタ、ストーリーや設定にも大きな驚きは感じないが、アクションシーンのカッコよさは健在。

    驚きは感じないと言いましたが、魅力がないわけでは決してなく、今後の展開には大いに期待できそうです。

  • やっと2回目行けました、BPUMP

    By mattz, 2008/05/25

    なかなか2回目が行けないままに、3ヶ月近く経ってしまいました。久しぶりですし、大して 上達とかしてませんけど、楽しく遊んできました。

    でも指が痛い。プログラマ向きのスポーツじゃないかもしれない。いや、走ったりするような激しいものじゃないし結構頭も使いますので、向いてるっ ちゃ向いてるんですが、如何せん指にダメージが残る。今も打ちにくいったらありゃしない。

  • build 10014

    By mattz, 2008/05/24

    A lighter EV

    EVがなんだか知らないけど、ファイル選択ダイアログで表示されないバグが直ったって言うからありがたい。早速入れよう。しかし、今週は早いね。

    タグ

  • 2ログビューア(7)-そろそろちゃんとした形にする、その前に

    By mattz, 2008/05/23

    ちょっとずつ形にするべくコードは書いているのだが、今のところ断片的なものしかできていないので、今回はコードを晒すんじゃなくていくつかメモ を。

    リスト
    perlでいうarray。
    配列に順にアクセスするには
    for attr in list:
      print attr
    添え字
    first_attr = list[0]
    辞書(dictionary)
    いわゆる連想配列
    キーと値をセットで取り出して処理するには
    for k, v in dict.iteritems():
      print "%s = %s" % ( k, v )
    キーから値を取得
    value = dict['key']
    printf的なもの
    pythonでなんていうのかは知らないけど。要するに
    print "%s = %s" % ( k, v )

    他にもやり方は色々あるようだけど、とりあえずはこれで。+で繋ぐよりはスマートだし。

    正規表現
    なんつーか、perlやphpと随分と作法が違うのでとっつきにくく感じるが、さっさと慣れてしまおう。
    正規表現 HOWTO
    osモジュール
    環境変数の取得はos.getenv(key)ってな感じで。

    タグ

  • sshでログインした時のpromptを変更する

    By mattz, 2008/05/23

    さくらインターネットさんは、スタンダードプラン以上だとsshログインも可能になるんですが、デフォルトのpromptが

    %
    

    なので、見づらかった。ので「プロンプト表示の変更」を参考にして~/.cshrcに以下の記述を追加した。

    $vi ~/.cshrc

    if ($?prompt) thenの後に

    set prompt = "[$USER@`hostname -s` %/]$ "

    保存して↓を実行。

    $source ~/.cshrc

    実行後のprompt表示。

    [mattz@www1486 /home/mattz/www/w]$
    

    非常に見易くなった。

  • 2ログビューア(6)-Class化の続き

    By mattz, 2008/05/23

    続き

    poptotype3.pyの中身

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    '''
    read.cgi
    '''
    import sys
    sys.path.append('/home/mattz/lib/python')
    from read2ch import read2ch
    
    import codecs
    fout = codecs.getwriter('shift_jisx0213')(sys.stdout)
    
    thread = read2ch( 'handygame', '1211373877' )
    title  = thread.getThreadTitle()
    count  = thread.getResCount()
    
    print 'Content-Type: text/html;charset;Shift_JIS'
    print
    fout.write('''<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html lang="ja">
    <head>
    <meta http-equiv="Content-Type" content='text/html; charset="Shift_JIS"'>
    <title>%s</title>
    </head>
    <body><h1>%s</h1><dl>
    %s
    </dl></body></html>
    ''' % (title, title, thread.getFormatedReses( range(count))))
    

    んでもって、read2ch.pyの中身

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    '''
    2ちゃんねるの.datファイルを扱うクラス
      0.0.1 prototype版
    '''
    import codecs,re
    line_end_br = re.compile( '((<br>)?\s*)+$' )
    normal_br   = re.compile( '\s*<br>' )
    '''
    1行分のログとレス番号からdt要素とdd要素を生成する
      TODO:
        本文中のURLと思われる文字列をリンクする処理
        アンカーと思われる文字列に対する処理
        IDの有無/強制/任意などの対応
        日付関係の処理
    '''
    def formatRes( rstr, rnum ):
            ar = re.split( '<>', rstr )
            resFormat  = u"<dt id='t-%d'>%d : 名前:%s %s</dt><dd id='d-%d'>%s<br><br></dd>\n"
            name = '<b>%s</b>' % ( ar[0] )
            if ar[1]:
                    name = '<a href="mailto:%s">%s</a>' % ( ar[1], name )
    
            return resFormat % ( rnum, rnum, name, ar[2], rnum, normal_br.sub( '<br>', line_end_br.sub( "", ar[3])) )
    
    class read2ch:
            base_dir = '/home/mattz/data/2channel/'
            resAll   = []
    
            def __init__( self, board, thread ):
                    self.board  = board
                    self.thread = thread
                    self.dat    = "%s%s/%s.dat" % ( self.base_dir, board, thread )
                    self.idx    = "%s%s/%s.idx" % ( self.base_dir, board, thread )
                    fres = codecs.open( self.dat, 'r', 'shift_jisx0213', 'strict' )
                    for line in fres:
                            self.resAll.append( line )
                    fres.close()
                    fres = codecs.open( self.idx, 'r', 'shift_jisx0213', 'strict' )
                    lines = re.split( '>', fres.readline() );
                    self.title     = lines[0]
                    self.standDate = lines[4]
                    self.resCount  = lines[5]
                    fres.close()
            def getDataFilename( self ):
                    return self.dat
    
            def getThreadTitle( self ):
                    return self.title
    
            def getFormatedReses( self, num ):
                    ret = ''
                    for n in num:
                            ret += formatRes( self.resAll[n], n + 1 )
                    return ret
    
            def getResCount( self ):
                    return int( self.resCount )
    

    細かい中身のことは書かない。

    タグ

  • build 10005が非常に重い件

    By mattz, 2008/05/22

    メモリの余裕があり、非proxy環境で、メールがIMAP4な自宅環境では非常に軽快。しかしながら、メモリ半分、proxy接続、メールはPOP3というオフィス環境に来ると、頻繁にプチフリーズする。もっとも、Operaに限った話ではなくて、マイコンピュータのアイコンをダブルクリックして、Explorerが開くま でに10秒近くかかると言う、微妙なPC環境であり、基本的にメモリが足りないのは明白なのだが、にしても、ちょっと困る。

    POP3サーバに問合せに行っているとき、Opera linkにSyncしに行っているとき、イントラなサーバのRSSフィードを取りに行っているとき。それぞれにOperaが固まる。結構泣ける。仕方がないのでメールとSyncは手動でやっているのだが、なんだかなぁ。

    タグ

  • 2ログビューア(5)-Class化する

    By mattz, 2008/05/22

    いきなり級が上がる感じがするが、一応僕もperlやphpはそれなりにやってきてるし、今更分岐だループだを細かく勉強する必要もないので、これまでに書いたコードを元に、ログビューア関係のロジックをClass化してしまう作戦。

    まずは「さくらのレンタルサーバ」で Python 外部モジュールを使う 改訂版 の記述を元に、ここまで書く。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    '''
    read.cgi
    '''
    import sys,codecs
    sys.path.append('/home/mattz/lib/python')
    from read2ch import read2ch
    

    それとは別に/home/mattz/lib/python/read2ch.pyというファイルを用意。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    '''
    2ちゃんねるの.datファイルを扱うクラス
    '''
    class read2ch:
    

    ホントは中身の方も結構書いてあって、スレ固定だし、htmlの体も為してなくて、かつ付加機能も一切ないけど、一応表示だけできるようになってる。と言ってもそんな簡単でもなかったので、その辺のことをこの後のエントリに書いていきます。今日のところはこの辺で。

    タグ

  • 2ログビューア(4)-「㌧問題」に対応する

    By mattz, 2008/05/22

    細かい原理はよく分からない(要はshift_jisには「㌧」だの「㍉」だのは含まれてないってことなんだろうけど)のだが、ログファイル自体は「shift_jisx0213」で読み込み、出力は「utf-8」で行うようにすることで、エラーも起きず、「㌧」も表示されるようになった。前回との相違点については強調にしてあるが、要するに↑に書いたようなことだ。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    '''
    ㌧を含むsjisファイルを読み込んで整形して出力する
    '''
    import re
    import sys
    import codecs
    def parseRes( res, n ):
            # 特に変更はないので省略
    print 'Content-Type: text/html;charset;utf-8'
    print
    print '''
    <html>
    <head><title>prototype2</title>
    <meta http-equiv="Content-Type" content='text/html; charset="utf-8"' />
    </head>
    <body>
    <dl>
    '''
    fout = codecs.getwriter('utf-8')(sys.stdout)
    fres = codecs.open( './sjis.txt', 'r', 'shift_jisx0213', 'strict' )
    # 以降も変更はないので省略
    

    →実行結果がかつてはリンクされていました。

    追記

    冷静になって考えてみたら、shift_jisx0213で読み込んでshift_jisx0213で出力するってので、ぱっと見の出力はShift_JISになるな。ケータイのこと考えるとその方がいい気がした。

    タグ

  • 2ちゃんねるログビューアを作成する(3)

    By mattz, 2008/05/22

    「㌧」のことは置いといて、(1)と(2)を組み合わせてみた。細かいことは後から考えよう。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    '''
    2ちゃんねるログを読み込んで整形してhtmlとして出力する
    '''
    import re
    import sys
    import codecs
    def parseRes( res, n ):
            ar = re.split( '<>', res )
            num = str(n)
            ret = '<dt id=\'dt' + num + '\'>' + num + u': 名前:<span class="name">'
            if ar[1]:
                    ret += '<a href="mailto:' + ar[1] + '">'
            ret += ar[0]
            if ar[1]:
                    ret += '</a>'
            ret += '</span> ' + ar[2]
            ret += '</dt>\n<dd id=\'dd' + num + '\'>'
            ret += ar[3] + '</dd>\n'
            return ret
    
    print 'Content-Type: text/html;charset;Shift_JIS'
    print
    print '''
    <html>
    <head><title>prototype</title>
    <meta http-equiv="Content-Type" content='text/html; charset="Shift_JIS"' />
    </head>
    <body>
    <dl>
    '''
    fout = codecs.getwriter('shift_jis')(sys.stdout)
    log = codecs.open('1111198050.dat', 'r', 'shift_jis', 'ignore' )
    res = 1;
    for line in log:
            fout.write( parseRes( line, res ) )
            res += 1
    
    print '

    タグ

  • 2ちゃんねるログビューアを作成する(2)

    By mattz, 2008/05/22

    今日は先に書いたコードから。「Pythonで日本語を使う」を参考に、Shift_JISで保存されている.datファイルを読み込んで、そのまま標準出力に出す。つもりだった。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    '''
    Shift_JISのファイルを読み込んで出力する。
    '''
    import sys
    import codecs
    fout = codecs.getwriter('shift_jis')(sys.stdout)
    log = codecs.open('1111198050.dat', 'r', 'shift_jis') # 実際にはフルパス
    for line in log:
            fout.write( line )
    

    とりあえず、コンソールから実行してみたところ、途中までは問題なく出力されるのだが、ある行を処理するところで、エラーメッセージ。が出て中断 してしまう。

    UnicodeDecodeError: 'shift_jis' codec can't decode bytes in position 158-159: illegal multibyte sequence

    引っかかっている文字は「㌧」。この手の文字は2ちゃんねるでは頻繁に使われるしなぁ。どうしたらいいんだろ?とりあずここ読んで勉強するわ。

    追記

    codecs.open()のところで、'ignore'オプションをつけてやれば、ファイルの最後までは処理されるようにはなった。けど、解決にはなってない。なってはいないけどここまでの経過として修正版

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    '''
    Shift_JISのファイルを読み込んで出力する。
    '''
    import sys
    import codecs
    fout = codecs.getwriter('shift_jis')(sys.stdout)
    log = codecs.open('1111198050.dat', 'r', 'shift_jis', 'ignore' )
    print 'Content-Type: text/plain;charset;shift_jis'
    print
    for line in log:
            fout.write( line )
    

    →実行結果がかつてはリンクされていました。

    タグ

  • 2ちゃんねるログビューアを作成する(1)

    By mattz, 2008/05/21

    とりあえずの目標である、CHPログビューアの移植に向けての第一歩。

    まずは1行分のログをparseして整形して返す関数を作ってみる。

    • とりあえず文字コードのことは忘れるために全部asciiにしてしまえ。
    • jsでレスポップアップとか入れるためにも、各要素にidだけは振っておく。とはいいながらもその辺の処理は後回しだ。pythonでの正規表現の使い方とかさっぱり分からんし(splitだけは使ったが)。

    今日学んだこと。

    1. 関数は先に定義するもののようだ。
    2. 文字列の連結は"+"。
    3. int型の変数はいきなり連結は出来ないみたいだ。まぁ、いずれsprintfに相当するものが出てくるだろうから、コレについてはほっとく。
    4. 今日書いたコード。
      #!/usr/bin/env python
      # -*- coding: utf-8 -*-
      '''
      2ちゃんねるログ形式の1行をparseして整形する。
      '''
      import re
      def parseRes( res, n ):
              ar = re.split( '<>', res )
              num = str(n)
              ret = '<dt id=\'dt' + num + '\'>' + num + ': 名前:<span class="name">'
              if ar[1]:
                      ret += '<a href="mailto:' + ar[1] + '">'
              ret += ar[0]
              if ar[1]:
                      ret += '</a>'
              ret += '</span> ' + ar[2]
              ret += '</dt>\n<dd id=\'dd' + num + '\'>'
              ret += ar[3] + '</dd>\n'
              return ret
      
      print 'Content-Type: text/html;charset;utf-8'
      print
      res1 = 'name<>sage<>05/03/19 11:07:30 ID:???<> body1 <>thread title'
      res2 = 'no name<>sage<>05/03/19 11:15:37 ID:???<> <a href="../test/read.cgi/board/0000000000/1"'
      res2 += ' target="_blank">&gt;&gt;1</a> <br> body 2 <>'
      
      print parseRes( res1, 1 )
      print parseRes( res2, 2 )
      

      実行結果がかつてはリンクされていました。

    次はテキストファイルを読み込む辺り。の前にShift_JIS問題を何とかしよう。後ではまるかもしれないし。

    タグ

  • pythonに挑戦してみる

    By mattz, 2008/05/21

    以前からやってみたいとは思っていたのだが、なかなかまともに動く環境がなくやらないままにしていたpythonに挑戦してみる。

    とりあえずの目標は、CHPログビューアの移植と、某所で運営している連絡用の掲示板の移植である。

    お勉強用のドメイン→http://w-mattz.xii.jp/は今はもうありません。

    今日学んだこと。

    1. さくらインターネットでは「AddHandler cgi-script .py」とか書いてあげないといけないらしい。最初はソースがべろんと表示されてたけどここに.htaccess作ったって書いてあったから真似したら動いた。
    2. 今日書いたコード。コピペだけどね。
      #!/usr/bin/env python
      # -*- coding: utf-8 -*-
      '''
      環境変数を表示。
      '''
      import cgi
      print 'Content-Type: text/html'
      print
      cgi.print_environ()
      

      実行結果がかつてはリンクされていました。

    3. 当面のお手本。↑のコードもここから頂いた。

    タグ

  • build 10005来ました

    By mattz, 2008/05/21

    Stability is this week's word

    国際版インストーラの不具合は直ってるらしいです。僕はClassicでいれようと思ってますが。その他にも9981からの修正は色々。詳しくは記事参照のこと。

    インストールしてみた。

    なんだこれ?描画が早いぞ。

    追記(2008-05-21)

    M2(Opera Mail)を使っている環境だからなのかProxy環境だからなのかは知らないが、やたらと引っかかる。説明しづらいけど、コン マ何秒単位で固まる感じ。メモリ使用量も100MB超えてるなぁ。すごく微妙。

    タグ

  • サーバ借りてみた

    By mattz, 2008/05/20

    さくらインターネットのスタンダード。とりあえずMT4設置してみる。デザインなんかは最初からついてたデザインセットから選んだ。多分いじることないと思う。

    追記

    めんどくさいからいじるつもりなかったんだけど、940px以上の横幅を要求するというのがどうにも耐えられない。どうにかする。