2009/03 | 2009/04 | 2009/05
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

2009年4月 2日

Python2.5 on さくら は too slow (3)

さくらの方が気づいてくれて、このサーバーの負荷許容量を上げてくれたのか、それとも、全サーバーのメンテナンスのために一時的に負荷が偏っていて、メンテナンスが終わったからその状態が解消されていたのか、全く中が見えない自分にとっては推測することすら難しいのですが、

Pylonsの反応が以前の状態に戻ったっぽい。

ということを書いておきます。それでもやっぱり1~3秒はかかるんやけどね、CGIやからどうしても。ま、戻ったので良しとしましょう。

▲top

投稿者 ただ : 23:01 | トラックバック (0) カテゴリー ; プログラミングとか

2009年4月 4日

4月も端から忙しい

いつもこの時期ってこんな忙しかったっけ…??

と思うくらい、先月からずっと忙しいのが止まない。気がする。まぁ、先月忙しいのがずっと引きずってるってのがあるからそうなんやろう…。去年は3月で終わってたし。いや今年の効率が悪い、ってわけじゃなくて進行中3つの事案が3月跨ぎの案件だからなんですがね、誰かに言い訳してるわけでもないですよ。

うち1つ、なんか急に降って沸いた話で申請書を書けってことになったんですが。書いた経験がない人間にどこまで書かせるんですか、いつ申請するって決まったんですか、書きかけの状態でファイル渡されてもどこをどう弄る必要があるのか全くわかりません。…とまぁグチもこのくらいにしておいておこう。おまけに市場調査を全く知らん人間に…知りませんよ、どうなっても。

それのお陰で進めるはずの他2件がほとんど進まず。

まぁ、申請書書きの経験が出来たから良しとしますか(学振書かんかったからなぁ…書いてたらもっと書きやすかったんやろうけど)。

休める日は動かないで目を休めるに限る。

ん…イズミヤで靴が安かったなぁ…。ぁぁ…。

▲top

投稿者 ただ : 11:22 | トラックバック (0) カテゴリー ; 仕事関係

2009年4月 6日

Pylons, CGI driven and logging

Undocumented Windowsならぬ、Undocumented pasteです。

paster server なら、フツーにloggingでログの出力を操作するのにdevelopment.iniで変更できるんでしょうけど、plain CGIで動かしていると、デフォルトで設定されているerror.log以外はまったくログが出てこない。apacheのログにでも出てるのかと思って開いてみるも、やっぱり出てこず。

代わりに、"No handlers could be found for logger "module.name""なんて出てるんですケド。これって、一体どういうことなんですかね、ハンドラがないって。

logging.basicConfigをindex.cgiで実行したら、ようやくapacheのログにテキストが出力されるようになった。そして、さらにインターネットの大海原を捜しまくった挙句にたどり着いたのが以下。これで、console以外のハンドラとしてFileHandlerで作ったログの出力先を指定して、tail -f debug.logなんてことができるようになる(CGI駆動で)。

import os
os.chdir('/home/path/to/project')
from paste.script.util.logging_config import fileConfig
fileConfig('/home/path/to/project/development.ini')

from paste.deploy import loadapp
wsgi_app = loadapp('config:/home/path/to/project/development.ini')
import wsgiref.handlers
wsgiref.handlers.CGIHandler().run(wsgi_app)

logging.config.fileConfig で読み込ませることができる設定ファイルと、development.iniで書いている設定ファイルは微妙に形式が異なり、しかもlogging.config.fileConfig用の形式に準拠していないらしく、logging.config.fileConfigでdevelopment.iniを読み込ませてもエラーが出てくる。paste.script.util.logging_config.fileConfigでないとダメらしい。ビミョーすぎですこの仕様。

というか、もっとビミョーやと思うのは、どこにも書いてないloggingの挙動やねんけどナ。debug=falseならLoggerが準備されないなんて、そんなこと当たり前なんやろうか。

▲top

投稿者 ただ : 23:50 | トラックバック (0) カテゴリー ; プログラミングとか

2009年4月 7日

Pylons, CGI driven AuthKit Basic Auth

まったくと言っていいほど情報のない状態で始めたAuthKitのBasic認証、ようやくできた。loggingを自由に扱えるようにしたりいろいろ寄り道したけど、お陰でトレースがとても楽になって進めやすくなったんですよ。

で、AuthKitでBasic認証するのに、何が分からんかったかというと、仕組みそのもの(もちろんBasic認証の仕組みではなく)。Basic認証以外にも対応するのに共通する処理を基底クラスに書いてたりしてるのもあって、どこを参照すればいいんか追跡が大変。

@authorize decoratorで認証処理を通すのはまず良しとして、最初はそれでやってたんやけど、実際の認証はどこでするんだ? ということに。

認証ユーザーはREMOTE_USERで判断するんやろうから、REMOTE_USERが環境変数にくるんやろうな、と思って環境変数(wsgi.environ)を表示させてても一向に出てくる気配がない。なんでだ、と検索すると、

[apache][rails] リバースプロキシでの環境変数REMOTE_USER渡し(ref. komamitsu.log)

で、REMOTE_USERがmod_rewriteを通すと消えてしまうのかと思ったので、書かれていた対応策を書いたけど、全く解消せず(CGIで動かすにはmod_rewrite必須…ではないけど、index.cgiってのが入らないようにするには使わないと)。

そこでヘッダーを見ていて気がつく、「Authorization」がない。

あ、そうやな、WWW-Authenticateを送ったら、Authorizationが返ってくるもんな…。でもAuthorizationがないのもあるらしいけど。IEは付くはずなのに、表示してるヘッダーにない。端末からwgetで試すも、やはりAuthorizationがないがために認証に失敗する…。ひょっとして、これもmod_rewrite?

ApacheZopeSIG(ref. wiki.zope.jp)

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^/Zope(.*) /usr/local/apache/cgi-bin/Zope.cgi/$1 ?
[e=HTTP_CGI_AUTHORIZATION:%1,t=application/x-httpd-cgi,l]

はぁ、そうですか、やっぱりmod_rewriteでしたか。…Authorizationを、X-Authorizationかなんかに変換して、index.cgiで元のAuthenticationに戻してやればいいのか、とやってみるも、うまく行かず。

$ grep -R AUTHO /usr/lib/python2.4/site-packages/
/usr/lib/python2.4/site-packages/urlgrabber/grabber.py: SUGGESTED AUTHOR IMPLEMENTATION (THROTTLING)
/usr/lib/python2.4/site-packages/Pylons-0.9.7rc2-py2.4.egg/tests/test_webapps/filestotest/messages.ja.po:#FIRST AUTHOR , YEAR.
/usr/lib/python2.4/site-packages/Pylons-0.9.7rc2-py2.4.egg/tests/test_webapps/filestotest/messages.pot:#FIRST AUTHOR , YEAR.
/usr/lib/python2.4/site-packages/AuthKit-0.4.3-py2.4.egg/authkit/authenticate/basic.py: authorization = AUTHORIZATION(environ)
/usr/lib/python2.4/site-packages/AuthKit-0.4.3-py2.4.egg/authkit/authenticate/digest.py: 1. If the HTTP_AUTHORIZATION header was not provided or specifies
/usr/lib/python2.4/site-packages/AuthKit-0.4.3-py2.4.egg/authkit/authenticate/digest.py: authorization = AUTHORIZATION(environ)

AUTHORIZATION()が何なのかbasic.pyに書いてなくて探し回った挙句、grepしたらdigest.pyに書いてあった…。paste.httpheadersに書いてないんやけどなぁ…一体どこに書いてあるのか、AUTHORIZATIONなんて関数。で、AuthorizationヘッダーをHTTP_AUTHORIZATIONに変換すればよいことが分かったので、RewriteRuleにそれを書く。

DirectoryIndex index.cgi

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP:Authorization} (.+)
RewriteRule . - [E=HTTP_AUTHORIZATION:%1]
#RequestHeader set X-Authorization %{RU}e <-- 必要なかった

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)$ index.cgi/$1 [QSA,L]

これで、やっとBasic認証が通った!! …認証した後のWSGI環境変数(一部)。

<EnvironVariable AUTH_TYPE>: 'basic',
...
'HTTP_AUTHORIZATION': 'Basic dGVzdDp0ZXN0',
...
'REDIRECT_HTTP_AUTHORIZATION': 'Basic dGVzdDp0ZXN0',
...
<EnvironVariable REMOTE_USER>: 'test',
...
'authkit.authenticate': True,
'authkit.config': {'basic.authenticate.function': 'xxxx.lib.authkit.helper:validate',
'basic.realm': 'admin',
'cookie.params': 'expires: 10',
'cookie.secret': 'secret_string',
'setup.enable': True,
'setup.method': 'basic'},
'authkit.intercept': ['401'],
'authkit.users': None,
...

authkitの設定をdevelopment.iniでやって、下のコードで呼び出します。

from authkit.authorize.pylons_adaptors import authorize, authorize_request, authorized
from authkit.permissions import RemoteUser, ValidAuthKitUser, UserIn
from xxxxxx.lib.authkit.helper import httpExceptionCatcher

log = logging.getLogger(__name__)

class BController(BaseController):

  @httpExceptionCatcher()
  def index(self):
    # Return a rendered template
    # return render('/template.mako')
    # or, Return a response

    import pprint
    log.warning(pprint.pformat(request.environ))

    if not authorized(RemoteUser()):
      authorize_request(RemoteUser())

    return ''

▲top

投稿者 ただ : 23:28 | トラックバック (1) カテゴリー ; PinMarch Samples , プログラミングとか

2009年4月 8日

ライセンス更新完了

ライセンスと言えば、いろいろありますが。

今年は運転免許に引き続き、個人情報保護士のライセンス更新しました。

▲top

投稿者 ただ : 22:23 | トラックバック (0) カテゴリー ; 仕事関係

2009年4月10日

れっつ夜桜 五月山

院生時にバイトしてたとこの子達(当時高校生)に呼ばれて、花見してきた。てか、五月山に行くことになるとは思わんかった。ポーアイから。しかも五月山の夜桜ライトアップを見るのは初めてやねんけど…。もう遅いかと思ってたら、全然そんなことはなくちょうど風に煽られて桜吹雪が映える、絶好のタイミングやった。10時過ぎたくらいから急に寒くなったけど。

もう5年か6年は経とうかと思うんですが、よう集まりますね。大学とか、高校の同級生とかならともかく。

▲top

投稿者 ただ : 23:07 | トラックバック (0) カテゴリー ; お出かけ

2009年4月12日

Rails 2.3が動かず苦悩

実験的にいろいろ触っているRailsプロジェクトは、VirtualHostではなくサブディレクトリ下で動かしているのでmongrel_clusterで起動させてるんやけど、このほどRails2.3にバージョンアップさせたところさっぱり起動しなくなった。同じサーバーで動かしてるRedmineは、2.2系を使うように指定してあったお陰か問題なく起動するんだが。

** Mounting Rails at /prefix...
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:440:in `load_missing_constant': uninitialized constant ActionController::AbstractRequest (NameError)
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:80:in `const_missing'
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/rails.rb:151:in `rails'
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:113:in `cloaker_'
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:149:in `call'
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:149:in `listener'
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:99:in `cloaker_'
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:50:in `call'
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:50:in `initialize'
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:84:in `new'
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:84:in `run'
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/command.rb:212:in `run'
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:281
from /usr/bin/mongrel_rails:16:in `load'
from /usr/bin/mongrel_rails:16

ActionController::AbstractRequestがどうやらない、ということでGoogle先生に聞いてみたところ、2.3では存在していないことは分かったものの、代わりにどう書けばいいのかが出てこない。そこ肝心なんですけど。

Metal(Rack)+Lighttpd+FCGI でいろいろハマる -- 落とし穴3 relative_url_root のこと (ref. みじんこ日記)

config/environments/production.rb にActionController::Base.relative_url_rootにprefixの中身を書いて、代わりにmongrel_cluster.ymlのprefixをなくせばいいのね。無事解決おめでとう。

$ vi config/environments/production.rb

# Settings specified here will take precedence over those in config/environment.rb

ActionController::Base.relative_url_root = '/prefix'

▲top

投稿者 ただ : 23:38 | トラックバック (2) カテゴリー ; PinMarch Samples , プログラミングとか

2009年4月14日

Rails 2.3から知恵を拝借

Rails2.2まではto_jsonでエンコードされた日本語が化けるというので、2.3で使われてるデコードするコードを強制的に持ってきた(2.3では直したらしいので)。Rubyって対象を限定したときのコードの書き方が分かりやすくてええねー。ブロックの力って素晴らしい。VB.NETでWith句があるけど、あれに近い感じで書けて、なおかつWith句よりもすっきりしてるように見えるのがある意味恐ろしい。

json.gsub(/\\([\\\/]|u[[:xdigit:]]{4})/) do
  ustr = $1
  if ustr.starts_with?('u')
    [ustr[1..-1].to_i(16)].pack("U")
  elsif ustr == '\\'
    '\\\\'
  else
    ustr
  end
end

Perlでもこれくらいきれいに書けたらなぁ。TWikiの最近のバージョンは、WYSIWYGで編集するとto_jsonと同じように変にエンコードされて日本語が読めんくなるから困ったもんだ。自分で触る分には、Raw Editでマークアップそのまま使えばええだけなので大して問題じゃないんやけど。

▲top

投稿者 ただ : 22:32 | トラックバック (0) カテゴリー ; PinMarch Samples , プログラミングとか

2009年4月18日

おくたまってきた

東京への出張がてら、ちょいと遠出。

ちゅうか、朝5時起きっていうのは拘束時間長いね。実質就寝時刻から計算せなあかんわけやし…。結局熟睡できずに3時くらいからずっと起きてたわけやねんけどね(だから拘束時間長いねんって)。で、新幹線で東京へ、朝10時からのミーティングのために。

そんで、12時に終わったミーティングの後3時間弱かけてやってきたのは奥多摩。山奥とは聞いていたけどここまでとは。もうちょい先に行ったら山梨やし。
乗る電車間違って、30分遅れての到着。気付かないうちに快速に追い抜かれてるなんて、知るかいな。立川←→青梅に30分、青梅←→奥多摩に30分、そして青梅で30分待ち。しかもこの日の東京は寒いときた。

こんなつり橋まであった。こんなつり橋、奈良にもあったような。
というわけで、このつり橋の近くにある温泉に入って、ゆっくりしようと思ったけど、30分遅れて来てしまったので30分しか堪能できず。うーん残念。
…そして、温泉に浸かって帰りの電車で爆睡。本当は四ツ谷で降りるはずやったのに、新宿で降りて(改札通って)しまった。お陰で赤坂に行くのに1駅分ロスした。新宿から丸ノ内線に乗り換えればよかっただけやのに…。爆睡してたせいで完全に寝ぼけてた。18時半から始まる新人歓迎会には遅れて到着、えらくスタッフに手厚く案内されてなんか気が引ける。

今回の発見は、

青梅の発車ベルは
「ひみつひみつひみつひみつ ひみつのアッコちゃん」

奥多摩の発車ベルは
「どんぐりころころどんぐりこ ぼっちゃんいっしょにあそびましょ」

そして、青梅駅からの風景がすごく見慣れなかったので落ち着かなかった。山側には学校があって、反対(街)側には色褪せた建物の看板が。うーん…なんか独特。あと、奥多摩に行く電車はきれいやったけど、学研都市線と同じく寒冷地仕様(ボタンを押して開閉する方式)。周りはまさに能勢やった。

▲top

投稿者 ただ : 08:09 | トラックバック (0) カテゴリー ; お出かけ

2009年4月19日

たけのこ

なぜか「たけのこ掘って」と言われて、たけのこ掘ってた。

商品でたけのこを採ってるところとかって、ちゃんと管理して育てるんで地面柔らかいんですが、そんなんじゃないんでご覧のとおりコケ生えてる上に地中には瓦礫が埋まってて掘りにくい掘りにくい。途中で割ることだけは避けられたけども、たけのこ掘ったんなんて多分10年以上ぶりやから…疲れた。それどころか運動するのも久しぶりという有様やからね。

▲top

投稿者 ただ : 22:57 | トラックバック (0) カテゴリー ; お出かけ

2009年4月22日

SEになるには

なりたい職業の一つにシステムエンジニアがあります。
まず、はじめの一歩として何からはじめればいよいでしょう?*

なぜそんな質問になったのか、がとても不思議。

急に就職難になったりしたもんだから、無理に仕事を選ぼうとしてるんやろうかね…。基本的に勉強が好き(または趣味の延長上)でないと、この仕事を続けて行くのは難しいと思うというのが個人的感想。企画系の仕事が望みであれば、SEである必要はない、というかむしろSE(というこんな意味が多岐にわたる仕事)は止めとけ、と言いたい。「最終的にこれしか」という選択で残ったのがSEなら、同じくやってて面白くないと思うので止めとけ、と言いたい。まぁ、実際やり始めて面白みを感じる人もいないことはないから、やってみるのも悪くはないやろうけど…少なくとも、なりたいと思うのならばバイトなりインターンなりするべきではなかろうか。「就業体験」なんてのが大学生でもあれば活用すればいいけど…それって実質インターンやからなぁ。
就活のための質問ならば、説明会に行ってその質問してみればいいです。そしたらきっと答えてくれるでしょう。

もし、質問をしてるのがもっと若い時点ならば、授業でやって面白そうだと思った、というのが理由だろうか…。それなら、SEが何なのかを知るのにある程度大きな本屋に行けば雑誌があったり本があるからそれを立ち読みしてみたりするのでもいいと思うんですがね。SEってあまりに漠然としてるから、そこから絞り込んでいけばいいんではないかと。絞り込んだ結果、大学で専門的に勉強する必要があるかどうかも判断できるやろうし。

▲top

投稿者 ただ : 22:31 | トラックバック (0) カテゴリー ; 仕事関係

2009年4月24日

しつこい電話

今日、めちゃくちゃ強引な電話が会社にかかってきてびっくりした。

マンション投資せんか、と東京の会社から、しかもこっちに来るから何時やったらいい、とか言い出して断る隙を与えようとしない。切ったらまたかかってくるし。

異動した上長宛にもかかってくるところを見ると数年前の名刺ってのが一番疑わしいんですが。個人情報云々ではないにしても、配った名刺(記名代わり)の目的外使用があまりに酷すぎる。個人情報といえば最近流出事件とかもあったけど、こういう電話とかって、直後だけじゃなくて数年経ってもじわじわとやってくるから嫌なんよね…。

▲top

投稿者 ただ : 22:39 | トラックバック (0) カテゴリー ; mein Erbe

2009年4月25日

EMBOSSを試す

EMBOSSはバイオインフォマティクス系のツールがたくさん詰まったパッケージなのですが、これまで使ったことなかったのでやってみることにした。とりあえずダウンロード。

ftp://emboss.open-bio.org/pub/EMBOSS/

インストール先は--prefixでユーザーディレクトリにしておいてmakeしてinstallしたものの、果てこれからどうするか。あちこち見てたらshowdbしたら配列にアクセスするときに使うデータベースを一覧で出せる、らしいのでやってみたところ、なんかCD-ROM indexばっかりでネット上の公開リソースにはアクセスでき(て)ないっぽい…。

情報を探し回ってたら、emboss.defaultを書き換えるとよいらしい。

http://itoshi.tv/emboss.default

からデータを指定する記述を戴く。share/EMBOSS/emboss.defaultに貼り付けて、

SET emboss_tempdata /home/biouser/share/EMBOSS/test

を指定しておいて、もう一回showdb。

…できた。

$ showdb
Displays information on configured databases
# Name Type ID Qry All Comment
# ============ ==== == === === =======
SpTrEMBL P OK - - Contains the translations of all coding sequences present in the EMBL sequence database not yet integrated in SWISS-PROT
pir P OK - - Protein Identification Resource.
refseqp P OK - - Database of protein information from REFSEQ
swall P OK - - A combined database of Swiss-Prot, SPTREMBL and TREMBLNEW. Does not contain REMTREMBL.
swissprot P OK - - Database of protein sequences produced collaboratively by the Swiss Institute for Bioinformatics (SIB) and the European Bioinformatics Institute (EBI).
tpir P OK OK OK PIR using NBRF access for 4 files
tsw P OK OK OK Swissprot native format with EMBL CD-ROM index
tswnew P OK OK OK Swissnew as 3 files in native format with EMBL CD-ROM index
twp P OK OK OK EMBL new in native format with EMBL CD-ROM index
DDBJNEW N OK - - DDBJNEW IDs
DDBJRELEASE N OK - - DDBJRELEASE IDs
GENBANK N OK - - NCBI IDs
embl N OK - - The EMBL nucleotide sequence database constitutes Europes primary nucleotide sequence resource. The database is produced in an international collaboration with GenBank (USA) and the DNA Database of Japan (DDBJ).
refseq N OK - - Database providing non-redundant curated data representing knowledge of known genes
tembl N OK OK OK EMBL in native format with EMBL CD-ROM index
tgb N OK - - Genbank IDs
tgenbank N OK OK OK GenBank in native format with EMBL CD-ROM index

またこれから何をするかは考えとこう。

▲top

投稿者 ただ : 15:37 | トラックバック (0) カテゴリー ; 生命科学 , プログラミングとか

2009年4月27日

sakai さかい …?

日本に「さかい市」が2つあります。

もうおわかりですね?

ローマ字にしたらどっちのさかい市か分からねーよ。というのが今日の仕事の成果。はぁ…。

てか、「酒井市」で検索したら「坂井市」がヒットするのってgoogle先生のお節介なのは致し方ないんですかね。…ここで「堺市」が出てこないのもgoogle先生のお気遣い? しかも「酒井市」から「酒田市」も間違いとして認識されるのかと思いきや、そうでもない。意外と「酒井市」の変換間違い多いな。「大阪府酒井市」って何かのネタですか。

「境町」まで含めると、「sakai」で想定される行政区名は両手では数え切れない…と思う。

▲top

投稿者 ただ : 23:55 | トラックバック (0) カテゴリー ; 仕事関係

2009年4月29日

北海道 @6000

GWやし、久しぶりに大学時代の友人Sと飲んでみた。
誘ってはみたものの、今日やったらいい、ということらしい。前半ばっかり予定が詰まっていく気がするんですが。

18時半に梅田で落ち合って、ふらふらと梅田界隈を歩き回って 北海道料理 弁天別館 という店に入ってみた。食べた、という感じはしなかった、というかまぁ2人で1年以上も会ってなかったんでいろいろと近況を晒しあってたら2時間以上経ってたとかそんな状態やった。結局22時を回っても同じ店で喋り続けて、一緒に暮らしてる人まで合流してデザートまで食べて。

けど、2人で代金12,000円ってどういうことか。飲み放題じゃない、っていってもそんなに飲んでないと思うんだが…謎だ。

▲top

投稿者 ただ : 23:21 | トラックバック (0) カテゴリー ; お出かけ

2009/03 | 2009/04 | 2009/05