Dancer(http://perldancer.org)でのCookie、ヘッダの扱いについて

最近「体系的に学ぶ 安全なWebアプリケーションの作り方」という本を読んでいて、「Dancerではどうするのだろう?」と気になった3点についてのメモです。 1. JavaScriptからアクセスしないCookieにはHttpOnly属性をつける。 Dancerでは、デフォルトでHttpOnl…

NetBSDのDom0上で、DomUを複数起動する場合のvndの不足について

NetBSD 5はインストール直後の状態ではvndはvnd0〜vnd3の4つしか使えず、例えば「ディスクイメージを2つ使うXen DomUを2つ起動」するとvndを使い切ってしまいます。/dev の下にデバイスファイルを作ればもっと多くの vnd を使うことができるようになるので、…

NetBSD Xen Dom0でのルートパーティションの選択について

NetBSDをXenのDomain 0で使うとき、boot.cfgの項目を以下のように作成します。 menu=Xen dom0:load /netbsd-XEN3_DOM0 console=pc;multiboot /xen.gz dom0_mem=512M マシンのディスク構成が マシンにはwd0とsd0が接続されている / はwd0aに作成している とな…

pkgsrcでruby 1.8とruby 1.9を共存させる

このマシンでは pkgsrc のソースを /home/pkgsrc に展開しています。インストール先は /usr/pkg です。 まず、pkg_alternativesコマンドをインストールします。 # cd /home/pkgsrc/pkgtools/pkg_alternatives # make install 次にruby 1.8とruby 1.9をそれぞ…

Net::Twitter::Role::OAuth のサンプルコードが少し違うかも

http://search.cpan.org/~mmims/Net-Twitter-3.11004/lib/Net/Twitter/Role/OAuth.pm 中にWebアプリケーションの例がありますが、2010年2月13日の時点ではこの通り実行してもtwitter_auth_callback の request_access_tokenで失敗します。成功させるには、ca…

SproutCoreを使ったプログラムで、ソースの変更が開発用HTTPサーバに反映されていない気がするとき

例えばsc-initで作ったディレクトリの名前がtestspだとします。この時SproutCoreの開発用HTTPサーバ「sc-server」はtestsp/tmp以下に一旦ファイルを静的に出力して、これをブラウザに送信しているらしいです。SproutCoreを使ったプログラムを書いているとき…

Plaggerの出力に「はてなブックマークコメント一覧へのリンク」を追加する。

assets/plugins/Widget-Simple/hatena_bookmark_comments.yaml というファイルを作る。appendでは以下の処理をしている。 permalink先頭の「http://」を削除 livedoor_clip_users.yaml を真似して#を%23に置き換え link: http://b.hatena.ne.jp/entry/ appen…

Mojolicious::LiteのスクリプトをCGIで動かす

以下のスクリプトをtest.plという名前で保存します。 #!/usr/pkg/bin/perl use lib '../lib'; use Mojolicious::Lite; get '/' => 'index'; get '/info' => sub { my $self = shift; $self->render(text => 'info page.'); }; shagadelic('cgi'); __DATA__ @…

アイドルマスター続編への要望

キャプチャが面倒なので、 ダンスシーンをQuicktime形式で保存し、Macに転送できる。 ようにして欲しいです。現状のXbox 360ではそもそも無理かもしれないので、あまり熱望はしないですが。

Adobe Bridge Home が終了してた

Adobe Bridge Homeというサービスがありましたが、今日何気なく開いてみたら終わってました。私もあまり用がないサービスだと思っていましたが。

ブラウザ検出とOpera

10 is the oneの話が面白いです。WebアプリケーションではJavaScriptを使ったりサーバ側のプログラムで、WebブラウザのUser-Agentを見て動作を切り替える場合があります。この前Opera バージョン10 のアルファ版がリリースされましたが、User-Agent中のバー…

最近見てる videopodcast

CSS-Tricksのvideo screencast(http://css-tricks.com/videos/) CSSの書き方の説明やWebサービスの紹介等、Webデザイナー向けのトピックが色々です。内容は本当に「色々」なので、必要と思われるところを適当に拾って見て下さい。 WiredのGadget Lab(http://…

HTML5で導入予定のvideo要素について

HTML4ではimg要素で画像ファイル(pngやjpg)を埋め込むことができますが、これと同じように動画(movやmp4)をHTMLに埋め込めるようになります。 動画を表現する要素をHTMLが直接サポートすることで動画を調節するパラメータをHTML中に書いたりJavaScriptから操…

DropboxとEmacs

Dropbox上のテキストファイルをEmacsで直接編集してしまうと バックアップファイル(ファイル名の最後に~が付いたもの) 自動保存ファイル(ファイル名の前後に#が付いたもの) がDropboxに作られてしまうので、これを避ける設定を探してみました。Mac OS XのCar…

Perlの感想へのコメント

http://d.hatena.ne.jp/technohippy/20080903 で、Perlの文法に対する不満が述べられています。実は不満がある人ばかりだったようで、いつリリースされるか分かりませんが一応Perl6で変更が入ります。 関数定義 Perl6では以下のように書けるようになる予定で…

SproutCoreで勘違いしていた点について

SproutCoreのドキュメントを読み始めた時にしばらく混乱していた点についてメモ。 1. 運用サーバにはRubyは必須ではない テンプレートの生成ツールや開発用WebサーバがRubyで書かれているので開発に使うマシンにはRubyがあった方がよいですが、SproutCore自…

Webで公開する画像ファイルのサイズ削減

YDN Theater: Yahoo! Performance Presents: After YSlow "A"によると、機械的な画像ファイルのサイズ削減が結構効果があるらしい。ムービー中では以下の方法が紹介されていた。 1. gif形式のファイルをpng形式に変換する。 同じ画像をgifとpngで保存した場…

dovecot 1.1.1 とNetBSD 4.0

NetBSD 4.0_STABLE に dovecot 1.1.1 をインストールしたが、Maildirフォルダの間でメールの移動ができない。このとき、syslogに以下のメッセージが出力されている。 rhine dovecot: IMAP(hiramatsu): fdatasync_path(/home/hiramatsu/Maildir/.INBOX.FF/new…

GaucheでTwitterのtimelineを取得する

Gaucheを使ってTwitterのpublic timelineを取得し、名前と発言を順番に表示。 (use rfc.http) (use sxml.ssax) (use sxml.sxpath) (use srfi-1) (define-syntax tweet-item (syntax-rules() ((_ x) (print (second (first x)))))) (define (main args) (rece…

「日記モード」のはてなダイアリーを、1日1エントリとして読む

はてなダイアリーのRSS出力だと1段落1エントリになるのですが、それだと読みにくい場合があったので。 plugins: - module: Subscription::Config config: feed: - url: http://d.hatena.ne.jp/はてなID/ meta: follow_xpath: //div[@class="day"]/h2/a - mod…

Plagger::Plugin::Widget::LivedoorClip

クリックするとLivedoorクリップにpermalinkを追加するボタンを作る。 http://subtech.g.hatena.ne.jp/otsune/20060814/WidgetLivedoorClip をコピーしているが、html関数の中身を少し変えて使っている。 package Plagger::Plugin::Widget::LivedoorClip; us…

らばQ用のEntryFullText

PlaggerでらばQをEntryFullTextするyaml。 #upgrade http://labaq.com/ author: Hiramatsu Yoshifumi handle_force: http://labaq\.com/ extract: <div class="main">(.*?)<div class="amazlet-box" style="margin-bottom:0px;"></div></div>

エキサイトブログ用のEntryFullText

Plaggerでエキサイトブログで書いているブログをEntryFullTextするyaml。「ネタ休(ネタヤス)ブログ」でしか確認してない。 # upgrade exblog.jp author: Hiramatsu Yoshifumi handle_force: http://.*\.exblog\.jp/ extract: <div class="story">(.*?)</div> extract_capture: body

はてなダイアリー用のEntryFullText

Plagger の assets/plugins/Filter-EntryFullText/hatena_diary.plがエントリの終わりの場所が上手く見つけられず、本文の途中までしか取得できないことがある。今のはてなダイアリーのHTMLでは、以下のYAMLの方が簡単で実用的(?)かもしれない。 #upgrade…

ExtのTooltip

マウスポインタが重なったときにTooltipを表示したいDOM要素のIDを指定する。Tooltipで表示する内容にはHTMLも指定できる。 <html> <head> <script type="text/javascript" src="ext-2.0/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="ext-2.0/ext-all.js"></script> <script type="text/javascript"> Ext.onReady(function(){ new Ext.ToolTip…</head></html>

Apache::Session::Wrapperの保存先をPostgreSQLにする

mod_perlハンドラでセッションを使 ではApacheが動いているマシンに1セッション1ファイルで情報を保存しましたが、保存先をPostgreSQLのデータベースに変更してみます。 最初にセッション情報を保存するデータベースにテーブルを作ります。アプリケーション…

mod_perlハンドラでセッションを使う

mod_perlのアプリケーションで、いわゆる「セッション」を使いたいときは Apache::Session::Wrapper モジュールを使うことができる。 以下のプログラムでは1セッション1ファイルに保存するように設定しているが、保存先はPostgreSQL、MySQL、dbmなどを選ぶこ…

DojoのTooltip

DojoのTooltipは独立したウィジェットとして実装されている。 dojoType="dijit.Tooltip" を指定した要素がツールチップとして表示され、中身のテキストはHTMLのfontタグなどやCSSを使った装飾ができる。 どこにマウスポインタが入ったらツールチップを表示す…

FlexのMXMLタグの調べ方

例えば以下のmxmlを見て、WindowedApplication に書ける属性は何か?layoutに設定できる値は何があるのか?などが調べたくなったとき。 <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal" backgroundGradientColors="[0xFFFFFF, 0x66AA66]" title="Test App"> </mx:WindowedApplication> 要素はクラスに対応しているので、WindowedApplicationの場合はリファレ…

Extのイベントの設定とログ出力

イベント Ext.Elementの on() メソッドを使う。 loadイベントは Ext.onReady() を使う。 ログ ext-all.js の代わりに ext-all-debug.js を読み込んでおく。 Ext.log() で出力する。 <html> <head> <script type="text/javascript" src="ext-2.0/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="ext-2.0/ext-all-debug.js"></script> </head></html>