タグ

ブックマーク / dayflower.hatenablog.com (19)

  • DBICで本当に困ったら SCALAR REFERNCE を使え - daily dayflower

    追記 2006/12/06 下記で IS NOT NULL を実現するのにスカラーリファレンスを使用していますが,IS NULL / IS NOT NULL を出すためには必ずしもスカラーリファレンスを利用する必要はありません。ということで訂正を入れようと思ったんですがちょっと長いので「フォローアップ記事」を書きました。 題 typester さんに以前教えて頂いたんですが,似たようなことに今日遭遇したのでメモ。 WHERE field1 IS NOT NULL な検索をしようと思って, $resultset->search({ field1 => 'IS NOT NULL' });と書くと,内部的には SELECT ... WHERE field1 = ?と展開されて,プレースホルダに「IS NOT NULL」が渡されるので,バツ。 $resultset->search({ field

    DBICで本当に困ったら SCALAR REFERNCE を使え - daily dayflower
    IMAKADO
    IMAKADO 2009/06/08
    has_one might_have の違い
  • UTF8 フラグあれこれ - daily dayflower

    UTF8 フラグについてわかってるつもりだったんですが,utf8::is_utf8 considered harmful - Bulknews::Subtech - subtech を読んで混乱したので,自分なりにまとめてみました。間違いがありましたらご指摘よろしく。 まとめ スカラー変数の内部表象の状態を示すものとして UTF8 フラグというものがある スカラー変数は(リファレンス等は別として)下記のものを格納できる (A) 文字列(内部表象: UTF-8) (B) 文字列(内部表象: ISO-8859-1) (C) バイナリ列 純粋なバイナリストリーム(画像ファイル等)かもしれないし, UTF-8 octet stream かもしれないし, CP932 octet stream かもしれないし,etc, etc ... Perl は(後方互換性確保などの理由から)ISO-8859-1

    UTF8 フラグあれこれ - daily dayflower
    IMAKADO
    IMAKADO 2009/02/15
    既存モジュールの戻り値例 Web アプリケーションの開発者として 入出力時にエンコーディングを変換する
  • JavaScript の「本気」な勉強 - daily dayflower

    まだひっぱるのもなんですけど。たぶん,言葉の指す対象にいろいろブレがあると思うんですよね。 勉強する人 まったくの初学者 さわりの文法などは知っているが,現実になにをどう書けばいいかわからない 勉強のスタイル 気で勉強したい 気で深く勉強したい 気でひととおり使えるようになりたい 勉強する対象 ブラウザで使う JavaScript HTML JavaScript (ECMAScript) Core DOM ともかく,もやもやと思ったことをとりとめもなく羅列してみます ライブラリの功罪 ライブラリは流行り廃りが激しいから、特定のライブラリに依存した「おまじない」ばかり覚えているのはどうかと思うなあ やっぱり、 DOM を直接書けたほうが、知識としては幅広く使えると思いますよ。 onclick 属性問題について - IT戦記 僕自身はなんだかんだで仕様原理主義者な所が今も強いわけで、その

    JavaScript の「本気」な勉強 - daily dayflower
  • Ubuntu 8.04 を LVM 有効にしてインストールする - daily dayflower

    Ubuntu の Desktop 版インストーラではデフォルトで LVM を使ってインストールすることができません。 Alternate 版を使えば LVM を使ってインストールできるんですが,テキストモードでインストールするのは嫌だとか,日語ローカライズド版でインストールしたい,ということであれば下記の手順でやることになります。 Live CD として立ち上げる Live CD 環境に lvm2 をインストールする Live CD 環境で LVM を切る Live CD 環境で LVM 上にファイルシステムを作成する Live CD 環境からインストーラを立ち上げてインストールする インストールされた環境に chroot して lvm2 をインストールする 結果的に http://www.debuntu.org/how-to-install-ubuntu-over-lvm-filesy

    Ubuntu 8.04 を LVM 有効にしてインストールする - daily dayflower
  • JavaScript で遅延実行 - daily dayflower

    遅延実行っていうのかな? たとえば jQuery Interface の Sortable とかで,item を Drag'n Drop する都度 Ajax すると,サーバに負荷がかかるしモッサリしそうだし,と思いました。 なので, 遅延実行してほしいメソッドを登録する timeout 内に別のメソッドが追加登録された場合は,timeout を設定しなおす 最終的に timeout に到達するとそこまで登録されたメソッドを実行する 最後に指定されたメソッドのみ実行モード,もアリ みたいな機能(メソッドキュー?)がほしくなって書いてみました。 var MethodQueue = function () { this.ctor.apply(this, arguments); }; MethodQueue.prototype = { ctor: function () { if (typeof

    JavaScript で遅延実行 - daily dayflower
  • 多段 ssh / rsync するために ProxyCommand を使ってみる - daily dayflower

    以前 2.(gatewaynetcat を ssh 経由で実行することによる転送)はよくわからないけど失敗 多段 rsync がめんどくさい - daily dayflower と書きましたが,なんとなく仕組みがわかってきたので書きます。 2年前くらいに流行ってたネタなので今更感満点。 まとめ 単純に到達できない場所に ssh でつなぐために ProxyCommand という [http://www.openbsd.org/cgi-bin/man.cgi?query=ssh_config:title=ssh_config] の設定子が使える ProxyCommand とは ssh クライアントと標準入出力でやりとりする 多段 ssh をする際に ProxyCommand で指定すると有用なものとして下記のものがある nc (netcat) OpenBSD や RedHat 系には(お

    多段 ssh / rsync するために ProxyCommand を使ってみる - daily dayflower
  • Ubuntu 8.04 に system-config-lvm をインストール - daily dayflower

    Ubuntu には LVM を管理するための GUI ツールが備わっていません。CentOS で使っていた LVM 管理ツールは(ほんのちょっぴりダサいものの)なかなか便利だったので,あれをそのまま Ubuntu でも使えるようにしよう,というのが今回のお話です。 HOWTO : LVM gui (Not EVMS) に沿って作業を行いました。 変換・インストール [http://packages.ubuntu.com/hardy/alien:title=alien] なるものを使うと RPM(RedHat のパッケージ)形式から deb(Ubuntu でも使われている Debian のパッケージ)形式に変換することができるそうです。なので [http://packages.ubuntu.com/hardy/alien:title=alien] をインストール。 $ sudo apt-ge

    Ubuntu 8.04 に system-config-lvm をインストール - daily dayflower
    IMAKADO
    IMAKADO 2008/05/06
    system-config-lvm
  • SQL::Translator を使って,DBIC からテーブル生成 - daily dayflower

    反対に,DBIC スキーマクラスから SQL 文等を生成するには, % sqlt -f DBIx-Class -t SQLite --DBIx::Schema MySchemaClass.pmとやればよい…はずなのですが,sqlt コマンドがオプション等ってくれないので,SQL::Translator クラスをごりごり触るしかいまのところなさそうです。 #!/usr/bin/perl use strict; use SQL::Translator; my $t = SQL::Translator->new( # debug => 1, no_comments => 0, parser => 'SQL::Translator::Parser::DBIx::Class', parser_args => { package => 'MySchemaClass', }, producer =>

    SQL::Translator を使って,DBIC からテーブル生成 - daily dayflower
  • Perl プログラマをしていて知らないと恥ずかしいモジュール 1000 - daily dayflower

    ⇒MFPM ごめんなさいネタです。誰も書かないんで*1書いてみました。 なにげに元ネタ*2(YappoLogs: ウェブエンジニアをしていて知らないと恥ずかしい日人プログラマ300)の id:yappo さん作というのを今日知った。 個人的には使ってませんすいません。「登録数が多いモジュール」のトップが Data::Dumper とか趣き深い。 追記 ネタだけ書いてうしろめたいのでやや自分でマジレス。 知らないと恥ずかしいものはないかも。知ってると便利というのはありますが。すでに CPAN にあるのに明確な意図なしに車輪の再発明をするほうが恥ずかしいかなぁ。 で,しいて挙げると cpan strict Carp base Test::Simple, Test::More Scalar::Util libwww-perl, URI Encode 次点として warnings overloa

    Perl プログラマをしていて知らないと恥ずかしいモジュール 1000 - daily dayflower
  • svk の shell が欲しい - daily dayflower

    と思って探したら,ありました。 svk使ってると「svk st」→「svk di」→「svk ci ファイル名 -m ほげほげ」とかよくやるんですが、「svk」の部分がDRYじゃないと思ったので超簡易SVKシェルを作ってみましたよ。 いちいち「svk なんちゃら」って打つのが面倒な人のためのSVKシェル - Greenbear Diary Ruby 使って readline と system を利用してます。のでびっくりするほどシンプル。 2008/01/25 追記: yhara さんがさらに発展させた Reposh というシェルをリリースなさってます。 んで,svk はせっかく Perl で書かれていますし,モジュールもあるので,Perl で書いてみました。まるでシンプルじゃなくなってしまった罠。 Term::ShellUI は神! でも,このスクリプトのままだとファイル名補完とか使えな

    svk の shell が欲しい - daily dayflower
    IMAKADO
    IMAKADO 2008/04/18
    [Term::ShellUI][perl][cpan][svk][shell]
  • Perl (5.8) での文字列の内部表象について返信 - daily dayflower

    UTF8 フラグあれこれ - daily dayflower について nobuoka さんよりツッコミをいただきました。 nobuoka 2008/03/11 21:15 こんにちは。”[Perl] Perl の Unicode 対応について” のエントリでトラックバックさせて頂きました nobuoka です。 内部表象 (内部形式: internal format) について気になる点があったのでいろいろ調べていたのですが、「内部形式は UTF-8 ではなく Unicode コードポイントをバイナリ化したものである」という結論に達しました。たとえば「é」という文字は内部形式では ¥xE9 というバイナリデータとして保持されているという結論に達しました。それは utf8 フラグが付いていても付いていなくても同様です。 つまり、このエントリで述べられている (A) 文字列(内部表象: UT

    Perl (5.8) での文字列の内部表象について返信 - daily dayflower
  • JavaScript の圧縮 - daily dayflower

    2007/11/14 追記:より包括的な「JavaScript ファイルの圧縮・再訪 - daily dayflower」も書きました。 亜細亜ノ蛾さんの報告にもある通り,gzip 圧縮した JavaScript ファイルをおいとけばブラウザがきちんと読み込んでくれる。odz さんのところの議論によると Safari でも Content-Type を適切に定義すればオッケーぽい。 …………あたりのことを知らなかったゆえ JavaScript 圧縮機について調べてました。 Huffman JavaScript Compression 方式: 文字単位のハフマン符号化(推定) 符号表の格納とバイナリデータの文字列化(4/3倍)があるため,たいていの JavaScript が元サイズより大きくなってしまう(笑) ということで非実用/実験向き? packer 方式: 静的辞書+可読文字符号化 c

    JavaScript の圧縮 - daily dayflower
  • Fedora 7 に zsh 4.3.4 をインスコした - daily dayflower

    Fedora では zsh のバージョンが 4.2 系列で日語(マルチバイト)がコンソールでうまくハンドリングできなかったんですが,様々な方の努力が実り(⇒Bug 183557 – Current zsh in Fedora doesn't have Unicode support),development tree に入りました。 つまり Fedora 8 では zsh は 4.3 系列以降*1になります。 で Fedora 7 の場合。 これまではソースからインストールするしかなかったんですが(⇒fedora6にzsh 4.3.4インストール - ボクノス, zsh のインストールメモ - tsakaの日記),development repository*2 から入れることができます。 でも yum で development repository を enable にしたら,えらい

    Fedora 7 に zsh 4.3.4 をインスコした - daily dayflower
  • cpan で古いバージョンのモジュールをインストールする方法 - daily dayflower

    m コマンドでモジュールの情報を調べます。 $ cpan ... snip ... cpan[1]> m DBIx::DBSchema Module id = DBIx::DBSchema DESCRIPTION Database-independent schema objects CPAN_USERID IVAN (Ivan Kohler <ivan-pause@420.am>) CPAN_VERSION 0.33 CPAN_FILE I/IV/IVAN/DBIx-DBSchema-0.33.tar.gz UPLOAD_DATE 2007-06-29 DSLIP_STATUS bmpOp (beta,mailing-list,perl,object-oriented,Standard-Perl) INST_FILE (not installed) 現在のメンテナの PAUSE ID が

    cpan で古いバージョンのモジュールをインストールする方法 - daily dayflower
  • jQuery の $(document).ready(fn) と IE - daily dayflower

    IE 6 と jQuery 1.1.4 ですが,$(document).ready(fn) イベントが,ページを表示するたびに実行されるような気がします。 単純に, $(document).ready(function () { alert('hoge'); });みたいなコードを読み込む html 1 があったとして,そこからリンク等で html 2 に遷移させます。 で,html 2 からブラウザの「戻る」ボタン等で html 1 に戻ると,再度 alert が表示されます。 Firefox / Opera / Safari では,html 1 に戻っても ready イベントは再度実行はされません(すでに ready イベントが発生した後の DOM ツリーになっていますので問題はありません)。 jQuery 自体を JavaScript で遅延ロードさせているからかなぁ。もうちょっと

    jQuery の $(document).ready(fn) と IE - daily dayflower
    IMAKADO
    IMAKADO 2007/10/01
    ready IEだと戻るでalert
  • daily dayflower - ssh 自動運転用制限シェルってないのかな

    ssh の話題がプチ盛り上がりしてたのにのっかるわけじゃないんですが,自動運転用に実行できるコマンドを制限できるシェルってないものですかね。 候補として考えられるのは rssh scp, sftp, rsync, rdist, cvs 等に制限できる chroot jail ができる やりたいことに対してできることがちょっと多すぎ でも上記以外のコマンドは実行できない といいつつ重宝してます ibsh ユーザのやれることを色々制限できるシェル 今回やりたいことのわりには巨大すぎ(っぽくてあんまり調べてない) authorized_keys の command オプション 参考 1: ssh scp sftp の正しい自動実行方法 参考 2: ぴろ日記 - expect 実行したいコマンドごとに鍵ペアを生成しなきゃいけないのでめんどい 何を考えているかというと, 自動運転してやりたいことなん

    daily dayflower - ssh 自動運転用制限シェルってないのかな
    IMAKADO
    IMAKADO 2007/10/01
    ssh でのリモートコマンド実行はどのように呼ばれるか
  • jQuery の $.getJSON() と IE ではまった

    今つくっているサイトでは,html のエンコーディングを Shift_JIS にしてるんで,合わせるために JavaScript のエンコーディングも Shift_JIS にしてます(jQuery だけは念のため UTF-8 指定してますけど)。 で,そこで JSON データをやりとりしているんですが,全部 Shift_JIS に統一していたんで, Content-Type: text/javascript; charset=Shift_JIS な JSON を吐くようにしていたんですが,どうも IE 6 で挙動が安定しない。 初回の Ajax ネゴのときにはうまくいっても,そこからブラウザで「進む」「戻る」してもう一度 Ajax ネゴると文字化けしたり,初回の Ajax ネゴから文字化けどころかまったくやりとりできなかったり。 うーむ,と思ってネットをいろいろあさっていたら, はてなブッ

    jQuery の $.getJSON() と IE ではまった
  • JavaScript ファイルの圧縮・再訪 - daily dayflower

    JavaScript ファイルの圧縮と一口にいってもおおまかに次の3種類があります。 コンテンツの圧縮(gzip);ブラウザ機能による伸長 コンテンツの圧縮(compress);JavaScript による伸長 コンテンツの縮小(minify) それぞれについて説明します。 コンテンツの圧縮;ブラウザ機能による伸長 ブラウザが圧縮コンテンツをサポートしている場合,リクエストヘッダの Accept-Encoding に gzip(や deflate)という値を渡します。この場合,サーバは圧縮されたコンテンツを渡すことができます。 一番簡単で安全なのは mod_deflate を使うことです*1。基動作として*2リクエストヘッダの Accept-Encoding に gzip が指定されている場合のみ,モジュールが圧縮して伝送してくれます。 フィルタモジュールなので,CGI(PHP)等による

    JavaScript ファイルの圧縮・再訪 - daily dayflower
  • もう CPANPLUS は使わなくてもいいのかも - daily dayflower

    今まで CPANPLUS を使っていた理由は root 以外のユーザが使った場合,インストール時に sudo してくれる インストール済みのモジュールで cpan にさらにあたらしいものがあるかどうか調べることができる モジュールのアンインストールできる モジュールの古いバージョンを検索してインストールしたりできる だったんですが,最近の CPAN.pm って 1, 2 あたりはできるようになってるんですね(がんばれば 3 もできます⇒cpan で古いバージョンのモジュールをインストールする方法 - daily dayflower)。あと force だけじゃなくて fforce や notest とかコマンド指定できるようになってます。 なので, root で最新の CPAN(Bundle::CPAN じゃなくて)をインストール 一般ユーザでインストール時に sudo を使うように設定

    もう CPANPLUS は使わなくてもいいのかも - daily dayflower
    IMAKADO
    IMAKADO 2007/09/11
    cpanplus つかわなくてもよいのかも
  • 1