トップ 最新 追記

十日日記


2010-09-01

Link paxでつまずいたこと

さくらのマネージドサーバーを借りたので速度を測ってみると、scpでだいたい3.5MB/sほど出る。容量も500GBと余裕があるため、他のウェブサイト群のバックアップ用サーバーとしても利用することにした。

スクリプトはPythonで作る。Pythonに触るのは1年ぶりだ。さくらのOSはFreeBSD 7.3と新しく、Python 2.6.5が載っている。前回触ったときは2.4系だった。標準ライブラリのリファレンスを眺めると、かつて私が使っていたモジュールも古びているのに気がつかされる。今回はgetoptをやめてoptparseにしたけれど、それもVersion 2.7からはargparseに取って代わられるようだ。commandsのかわりにsubprocessがあるのか。

Python ポケットリファレンス ところで、Pythonに関する和書を1冊を選ぶなら、柏野雄太『Python ポケットリファレンス』(技術評論社、2009年)を挙げたい。B6という判型でコンパクトな割に、内容は幅広く取り上げられている。ことPythonに関しては、オライリーの書籍はどれも冗長で私はあまり高く評価しない。むしろアジソンウェスレイからいいものが出ている。

話を元に戻す。基本的には、sshとrsyncとmysqldumpとpaxとをPythonで糊付けしたようなものだ。別のサーバーにあるデータをrsync+sshでさくらに同期させ、それをpaxでアーカイブ化している。あえてtarではなくpaxを使ってみた。本当はdarが使いたかったのだが、入っていなかったので仕方がない。バックアップ元がSuExec+SuPHP環境なので、ファイルのパーミッションに関しては神経質にならなくて済む。

rsyncで持ってきたファイルはctimeが更新されるので、ctimeの新しいものだけをアーカイブすると増分がとれる。たとえば、カレントディレクトリ以下のファイルで8月31日0時以降に属性変更もしくは更新されたファイルをアーカイブ化するときには、

%pax -x cpio -wf /path/to/archive.pax -T 1008310000/cm .

のようにする。

最初、私は「/cm」を付け忘れていた。何も付けずに「-T 1008310000」とすると、mtimeだけで判定する。tarの--newerオプションがctimeで判定するので、paxもデフォルトでctimeを使うものと勘違いしていたのだ。

Tags: Admin

2010-09-04

Link tdiary 3.0.0とtdiarysearch修正

先日、tdiaryを2.2系列から3.0系列へとバージョンアップした。EUC-JPからUTF-8へと文字コードが変わるのだが、過去ログも自動的に変換してくれる。すばらしい。(ただし、tdiary.confは自分で文字コードを変換する必要がある。)

さて、contribに収録されている全文検索モジュールtdiarysearchは、私の環境では手を入れないと動かないのが常になっている。今回もそうだった。エラーは毎回「undefined method `strip' for nil:NilClass」である。

def load_tdiary_textdb(path)
  File.open(path) {|f|
    ver = line.strip
    raise "unkwnown format: #{ver}" unless ver == 'TDIARY2.00.00' or ver == 'TDIARY2.01.00'
    f.each('') do |header|
      h = {}
      header.untaint.strip.each do |line|
        n, v = *line.split(':', 2)
        h[n.strip] = v.strip
      end
      yield h, f.gets("\n.\n").chomp(".\n").untaint
    end
  }
end

私はRubyがまったくわからないのだが、上はログからヘッダーを読む関数らしい。とりあえずstrip関連だけに着目して、バージョン判定はなくてもいいのでコメントアウト。vがnilになるかもしれないので、条件文を入れる。

def load_tdiary_textdb(path)
  File.open(path) {|f|
    # ver = line.strip
    # raise "unkwnown format: #{ver}" unless ver == 'TDIARY2.00.00' or ver == 'TDIARY2.01.00'
    f.each('') do |header|
      h = {}
      header.untaint.strip.each do |line|
        n, v = *line.split(':', 2)
        unless v.nil?
            h[n.strip] = v.strip
        end
      end
      yield h, f.gets("\n.\n").chomp(".\n").untaint
    end
  }
end

ひとまず上で動いたので、よしとする。このほかYahoo! Search BOSSを利用するプラグインも使ってみたのだが、漢字の単語をうまく拾ってくれないので不採用となった。

Tags:
本日のツッコミ(全2件) [ツッコミを入れる]

Link social workers [Nice site, nice and easy on the eyes and great content too..]

Link nursing assistant [this post is very usefull thx!]


2010-09-06

Link ソフトウェアエンジニアリング文化

ソフトウェア開発の持つべき文化 カール・E・ウィーガーズ『ソフトウェア開発の持つべき文化』(翔泳社、2005年、原著1996年)を読んだ。著者は当時イーストマン・コダック社のソフトウェアグループに所属しており、主に社内向けのソフトウェア開発に当たっていたようだ。

本書からの最大の収穫は、教科書で学んだ事項に一定の肉付けができたことである。特に第3部でそれが言える。たとえばプロセス成熟度モデルCMM(CMMI)がLv.1からLv.5まである(のちにLv.0が追加)といった基本的な内容は憶えていた。しかし、開発現場の実態については無知だ。同書によれば、ほとんどの組織はLv1.であり、Lv.5を達成したプロジェクトはスペースシャトル用のソフトウェアなど数件しかないという。Lv.1からLv.2への以降には2~3年、そこから先もレベルアップには1年半ほどかかるようだ。また、特にPCソフトウェア業界からはCMMに対する批判も根強くあるという。このほか設計・テストなど他の段階においても具体的な事例が豊富で、ためになる。

第2部もよかった。ユーザー側の代表窓口として「プロダクトチャンピオン」を設定する方法は参考になった。米国ではIEEE 830の要求仕様書(SRS)が標準的であるようだ。Use Case図やDFD図、対話マップの利用方法も学べた。ちなみにp.97の対話マップからはIBM製ホストコンピューターに接続された端末上での操作を前提としていることが見て取れ、著者が製造業に属していることと合わせて親近感を抱いてしまう。米国でソフトウェア開発というとパッケージソフトウェアが思い浮かぶのだが、社内用アプリケーションを作っている部署もあるのだなあ。

第1部は概論で、ソフトウェア開発をローマ風VSギリシア風と分けたのには疑問の余地があるのたが、機能・要因・スケシュール・費用・品質という5つの次元でソフトウェアに対する要求を整理し、推進役・制約・自由度という3つの観点から要求を落とし込むところは勉強になる。

Tags:

2010-09-08

Link Ubuntu 10.04 LTS ServerでSuPHP

ホスティングサービスであるCPI(KDDIウェブコミュニケーションズ株式会社)のPHP環境はSuPHPなので、ファイル権限まわりのミスを起こさずに済む。テスト用のローカルサーバーはUbuntu 10.04 LTS Serverで動かしているのだが、WordPressを3.0.1に更新するのに合わせてSuPHP環境を導入した。

UbuntuにはSuPHPのパッケージがある。ただし、

  • /home/*/public_html以下で動作させたい。
  • .htaccessにsuPHP_ConfigPathを書きたい。

となると、若干の修正が必要となる。以下はメモだが、LAMP環境は導入済みで、それまでモジュール版でPHPを使ってきたと仮定しよう。

$ sudo apt-get install libapache2-mod-suphp
$ sudo apt-get install phpmyadmin
$ sudo a2dismod php5
$ sudo a2enmod action
$ sudo a2enmod userdir
$ sudo a2enmod suphp

SuPHPはCGI版のPHPで動くので、モジュール版のPHPをアンロードする。CGI版のPHPを動かすためにはactionを入れる。userdirは、「/home/*/public_html」で動作させるために導入する。(私の場合、すでに入れていた。)

phpMyAdminは特に必要ないし、LAMP環境を導入しているなら設置済みだろう。ここでは、CGI版PHPとSuPHPとの共存を試験するためにインストールする。

まずはCGI版のPHPが正しく動くように設定を行なっておこう。「Run PHP Applications under CGI with Apache on Ubuntu 10.04 LTS」あたりが参考になるが、要はPHP用のAddHandlerやActionを書き加えなくてはならない。

$ sudo nano /etc/apache2/conf.d/php-cgi.conf

でファイルを作成し、

ScriptAlias /local-bin /usr/bin
Action application/x-httpd-php5 /local-bin/php-cgi

<Directory /var/www>
	AddHandler application/x-httpd-php5 .php
</Directory>

<Directory /usr/share/phpmyadmin>
	AddHandler application/x-httpd-php5 .php
</Directory>

とする。ここで、AddHandlerをDirectoryディレクティブの中に書いていることに注意してほしい。外側に書いてしまうと、SuPHPの設定が生かされない。SuPHPを使わない部分にだけ個別にAddHandlerを記述してやる必要がある。今回、/var/wwwとphpMyAdminにはSuPHPを使わないので、上記のように設定した。

次に、ユーザーディレクトリでSuPHPが動作するように設定を行なう。SuPHPの設定ファイルを編集する。

$ sudo nano /etc/suphp/suphp.conf

などとして

;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true

となっている部分を

;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=false

に変更する。UbuntuのApacheではDocument Rootが標準で/var/wwwとなっている(/etc/apache2/sites-available/defaultに設定がある)ので、/home/*/public_html化でSuPHPすると/var/log/suphp/suphp.confで次のように怒られてしまう。

File "/home/hoge/public_html/dailyrecord/index.php" is not in document root of Vhost "/var/www"

最後に、ユーザーディレクトリの中で任意のphp.iniを指定できるようにしておく。このためには

$ sudo nano /etc/apache2/mods-available/userdir.conf

して

<Directory /home/*/public_html>
	AllowOverride FileInfo AuthConfig Limit Indexes

のAllowOverrideに「Options」を加えて

<Directory /home/*/public_html>
	AllowOverride FileInfo AuthConfig Limit Indexes Options

とする。さもなくば、ユーザーディレクトリ内の.htaccessでphp.iniの保存先を指定すると、Apacheのエラーログ(/var/log/apache2/error.log)に次のような警告が書き込まれる。

[Mon Sep 06 16:10:02 2010] [alert] [client 192.168.x.x] /home/hoge/public_html/.htaccess: suPHP_ConfigPath not allowed here

あとは

$ sudo /etc/init.d/apache2 restart

とすれば、SuPHPが使えるようになっているはずだ。(参考:「suPHP + Userdir on Ubuntu」。ここではリンク先の設定には従っていないが、min_uidやmin_gidを33にする点は採用してもよいかもしれない。)

Tags: Linux Admin
本日のツッコミ(全99件) [ツッコミを入れる]

Before...

Link outletkchqr [ukaPa-O ? %-JxJot ? iFmw - 0H ? %o'dSlj ? !EC`[wu ..]

Link outletrlbhe [rbZbq_! ? tnf97q< ? QK.*ANG ? pu;E27> ? SI62y - K ..]

Link outletpyvah [Ua'XXST ? 9U4eQ@J ? 1S:ws1& ? km+lFR0 ? 8?%938k ?..]


2010-09-13

Link jQuery、架空請求、HTA

Web制作の現場で使う jQueryデザイン入門 鈍な話だが、先月ごろからjQueryに興味を持ちだした。JavaScriptに関しては、付き合わずに済むのならそれに越したことはないと思っていた。ところが、ウェブアプリを対象としたテストツールSeleniumなどを使うとなると、もはやJavaScriptとは縁が切れない。それなら前向きに習得したほうがよさそうだと判断した。

そんな折り、あるところから相談を受けた。家庭で使用しているPCを起動してログオンした直後に、「有料会員登録ありがとうございました」というようなメッセージが収録されたアダルトサイトのウィンドウがデスクトップの最前面に表示され、終了させることができないという。ちょうど「アダルト画面表示続ける 新手の架空請求急増 都が注意呼び掛け」と同じ話だ。

セーフモードで起動すると当該ウィンドウは表示されなかったのでレジストリに目を向けると、HKCU\Software\Microsoft\Windows\CurrentVersion\RunにHTAアプリケーションが登録されているのを見つけた。ユーザーディレクトリに不可視フォルダーが作られ、そこにファイルが置かれていた。レジストリとファイルとを削除する。

HTAアプリケーション自体はとても単純なもので、IEコンポーネントを利用してJPEG画像とリンクとを表しさせているだけだ。そのPCにはウィルスバスターの最新版が入っているのだが、ウィルスとしては検出されなかったという。確かに、データの破壊などの害をなすわけではない。むしろ詐欺ソフトと呼んだほうが適切だ。

巧妙な手口を思いつくものだなあと考えているうちに思い至ったのが、HTAアプリケーションでjQueryなどのJavaScriptライブラリを利用することである。ウェブ界隈を当たってみると、それほど珍しくもないようだ。たとえば「HTAを利用したウインドウ付きアプリケーション」が参考になる。

Tags: Dev PC

2010-09-16

Link はじめての大学病院

私は下側の親知らずが左右とも横向きに生えていて、その一部が歯茎から顔を出している。それらは虫歯になっているのだが、10年以上放置してきた。このまえ右下の親知らずの詰め物が取れ、近くの歯科医院に足を運んだ。その際にも抜歯を強く勧められ、ついに抜く決心をする。手間のかかる手術になるそうで歯科医院では実施できないとのことで、東京医科歯科大学附属歯学部病院の紹介状をもらった。

大学病院は初めてなので、完全にお上りさん気分である。初診は予約ができないため待たされる可能性を考え、受付開始時刻(8:30)の10分前に病院に着くようにした。8時半になって窓口のシャッターが開くと受付の女性がずらりと並んでおり、そのうちの1人が代表して「これより受付を開始いたします。よろしくお願いします」、そして皆が「お願いします」と一斉に挨拶をする。まるで百貨店のようだ。

運がよかったのか常からそうなのか、待ち時間は1時間弱で済んだ。紹介状とともにレントゲン写真を持って行ったのだが、予想どおり大学病院の放射線科で撮り直しとなる。しかし、放射線科で取られたレントゲン写真の鮮明さには息をのんだ。この差は機械によるものなのか、技師の腕によるものなのか。ともあれ、私の埋伏智歯は神経とは比較的離れているので、手術後の知覚鈍麻の可能性はあまりないそうだ。そんなわけで、来週右の上下の親知らずを抜くこととなった。

Tags:

2010-09-19

Link 筆記体で年がばれる

私が手書きするときのローマ字は、筆記体とブロック体とが中途半端に混ざったものだ。ノートを見ても、たとえば小文字のエルは「l」と「ℓ」との両方を書いているが、後者のほうが頻度が高い。

cnetの記事に、「フォトレポート:世代で異なる筆記体の流儀」(2007-04-27)というものがある。米国人の文字の筆跡は、24歳未満と45歳以上とで大幅に違うのだそうだ。b、d、h、l、v、xの6文字だけで、82%の精度で判定できるという。

記事に掲載されている写真を眺めると、私の文字は完全に45歳以上の群に属す。日本の中学校で筆記体を教わった経験のある人は、おそらくそうなるのだろう。

Tags:

2010-09-24

Link PDF→Word変換サービスを試す

PDFファイルをWordファイルに変換したいという相談を受けた。無理だろうと思いつつ当たってみると、ウェブ上で同サービスを提供しているところが見つかる。

上は結果を即時に変換してダウンロードする形式、下は添付ファイルで送信してくるというもの。サンプルとして、日本語文で段組を使い、一部に表を使用したPDFファイル(2ページ)を用意する。

まず、どちらもWordファイルとして十分に読める結果が得られた。表組まで正しく出力できたのには驚く。

両者の違いもある。上は、文字列をテキストボックスに入れてくる。たしかにこのほうが、レイアウトの再現性は高くなるだろう。その半面で、編集はしにくくなる。また、テキストボックスの高さが足りないので、そのままだと文字列の上部が少し欠けてしまう。下は逆に、段組を認識して素直な文字列として出力するので、編集重視と言えるだろう。今回のサンプルでは下のほうが実用的だった。

Tags: web

2010-09-28

Link 夜学に通う

PMBOKガイド 先週・今週と、品川シーサイドにある産業技術大学院大学の夜間講義「PMBOK入門」を受講した。2日間・4コマの講義で『PMBOKガイド』を通して読むというものだ。この講義は「プロジェクトマネジメント入門編」と題した教育プログラムの一部で、このほか講義を2つ受講している。

夜学に通学する動機はいくつかある。「時間を金で買う」というのも、その1つだ。A4判で500ページ近いうえ百科事典のごとく無味乾燥な翻訳調の書籍を1人で読もうとすると、下手をすると1カ月以上かかりかねない。それが2日間の講義で読み通せるのだから、ずいぶんと時間の節約になる。

30歳を過ぎたあたりから、自分の持ち時間を意識するようになった。教育を集中的に受けられる気力・体力・金銭・時間の余裕は、あと数年間しかないだろう。今が人生で最後の機会かもしれない。もちろん仕事を続けるのが前提だから、夜学の専門職大学院が候補になる。先の教育プログラムは、そうやって学校探しをしている過程で見つけたものだ。

何校かの候補から、同大学院に入学することにした。合格者は先行して科目履修生になることができる(受講した受講料は授業料から控除される)ので、この秋から数単位履修している。こうしたことができるのも職場の環境がよいからで、この点は本当に恵まれている。

Tags:
本日のツッコミ(全1件) [ツッコミを入れる]

Link Shad [personal loans nc payday loans toledo ohio direct payda..]



プロフィール

渡辺 慎太郎(na@10days.org)

分野別表示

Admin | Client | Dev | Excel | Linux | PC | PDA | Web | iPad | web | 家電 | 文具 | | 英語 | 言語 | | 音楽

月別表示

1999|07|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|

最近の記事

雨量情報 dictionary.com Yahoo google Yahoo! 路線情報 東京アメッシュ l-mura l-aka l-momo 目次 r-mura r-aka r-daidai r-kiiro asahi.com nogulabo r-sora r-midori r-midori r-momo