Archive for category プログラミング
TwitterのOAuthアカウント作成ではまったこと
こんなことではまったのは僕だけかもしれませんが・・・(実際ぐぐっても事例がでてこず、一人孤独にはまってました)
Twitterのアプリケーション登録画面で何度保存しても駄目なあなた!
CAPTCHAは単語と単語の間に半角スペースが必要です。以上!
Plack Advent Calendar Day 4
4日目「アプリケーションのリロード」
http://advent.plackperl.org/2009/12/day-4-reloading-applications.html
4日目は開発中のファイルの再読み込み関連です。
Plack Advent Calendar Day 3
3日目:「plackupの使い方」
http://advent.plackperl.org/2009/12/day-3-using-plackup.html
> plackup hello.psgi
シンプルな起動ですね。
> plackup -s Starman hello.psgi
-s もしくは–serverで文字通りサーバを指定するようです。
StarmanとはPerlで書かれたサーバらしく、かなり高速なようです。
じゃあStarman以外はどう指定するんだろうと思いましたが、そのうち出てきそうなのでとりあえず次にすすむことにしました。
> plackup -E production -s Starman hello.psgi
plackupを起動してリクエストを送ると、標準でアクセスログとスタックフレームが出力されてるようなのですが、-E もしくは–environmentでこれを無効にできますよと。
-E はデフォルトで-E development と等価らしいので、それ以外ならとりあえずなんでもよさげです。
そのほか–host 127.0.0.1 –port 8080(ホストポートの指定)やソケットでFCGIなど紹介されています。が、流します。
Day4へ!
Plack Advent Calendar Day 2
2日目:「世界の国からこんにちは」
http://advent.plackperl.org/2009/12/day-2-hello-world.html
さてチュートリアル序盤といえばhello Worldです。
その前に注意書きがあります。
Note: today’s code is written in a raw PSGI interface to understand what’s going on, but in reality you should never have to do this unless you’re a web application framework developer.
今日紹介するコードはPSGIを理解するためのわざとっぽいコードなので、実際はフレームワーク使うから、こんなことはしないんだぜ!
と、書いてある気がします。
Plack Advent Calendar Day 1
2006~7年時にCatalystを超がんばって使ってみてなんとか形になった程度の自分ですが、その後ちょっとPerlの技術を磨く行為から遠ざかってしまっていました。
そんな中、軽くウェブアプリを作ることになり、Catalystについて再び調べていると、どうやら最近はPlackという技術が流行っているらしく「その程度ならPlackで※○△しちゃえばいいんじゃないですか?」(※○△は現時点で理解できず)とアドバイスをいただいたのでPlackを勉強してみることにします。
調べていると、まずはPlack Advent Calendarを一通り学べ!という記事が多かったのでここからやってみます。
TortoiseSVNをバージョンアップしたら、リポジトリが利用できなくなった
開発物から資料に至るまであらゆるファイルをTortoiseSVN(Subversion)を利用して管理してるのですが、この手の重要なツールってバージョンアップが怖くてずっと古いまま使いがちです。
今日思い切ってバージョンアップしてみたら、案の定トラブルになりました。
正確には記録がないのですが、 「ra_localなんちゃらエラー:BDB読めません」みたいなエラーで、コミットもできなければリポジトリブラウザすらつかえない始末。
BDBとはBerkeley DBのことで、SubversionではFSFSとBDBのどちらかのファイルシステムでデータを保存することができます。
ところが、file:// プロトコルにおいては互換性の理由から、これが今後FSFSのみの推奨にかわったらしく、今回アップグレードしたTortoiseSVN1.6ではfile:// プロトコルでのBDB利用をサポートしない仕様にかわってしまっていたようです。(参考)
HTML::Elementの罠
HTML::TreeBuilderなんかを使うと帰ってくるHTML::Element。
なんかメモリーリークしてる・・・と前から思ってたんだけど、やっとわかりました。
このオブジェクトは、内部で循環参照してるので、Destroy時に明示的に$obj->deleteしないとリークの原因になるみたいです。
なんてことはPerldocにしっかりかいてあるわけで・・・ほんと英語が出来ないと不利だなぁ・・・;
http://search.cpan.org/~petek/HTML-Tree-3.23/lib/HTML/Element.pm#%24h-%3Edelete()
CGIなら気にもならないけど、mod_perlや大型クロールプログラムだと致命的。
気をつけないとっ。
Perlちょいメモ
コマンドラインからPerlライブラリパスを調べる
perl -e ‘use Config; print $Config{sitearchexp};’
CPANショートカットURI
http://search.cpan.org/perldoc?モジュール名
http://search.cpan.org/perldoc?DBIx::Class
MT3.3にアップグレード
※以下のエントリーを投稿後、再構築で悪戦苦闘したので、一度3.2に戻してDBをSQLiteにConvertしてきました。ロリポップ+BerkeleyDB+MT3.3は使い物にならないんじゃないかと思います。(多分MTのメモリ消費量とロリポップのCGIメモリ利用制限のせい)
DBのコンバートにはOgawa::Memorandaさんのmt-db-convert.cgiを利用させてもらいました。
mt.cgiと同じディレクトリにアップして実行するだけ、すごく簡単です!すばらしい。
========================
MT3.3が正式リリースされたので、さっそくアップグレードしてみました。
作業概要は以下の通り。
基本的な流れはMilano::Monologさんを参考にさせて頂きました。
◆バックアップる
◆mt-config.cgiを書く
◆MT3.3のファイルアップロード
◆パーミッションの設定
◆とりあえず完了
◆TagwireのタグをMTのタグに変換
◆タグクラウドを作る
◆月別アーカイブが生成できない件