サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
holidays-l.hatenadiary.org
jQueryではDOM生成にjQuery(html, props)という構文が使えます。↓のように簡潔に書けます。 -$('<div class="bar">foo</div>'); ↓ +$('<div/>', {'class': 'bar', 'text': foo'}); ただしinput要素に限っては問題があるので注意しないといけません。 これは昔ハマったことがある(ブログ記事も書いた)のですが、input要素のtype属性は上書きできません。type="password"がtype="text"に変更されないようにしているのだと思います。 そのため、http://api.jquery.com/jQuery/#creating-new-elements title:Creating New ElementsのUnsupported IEの項目では -$('<input />', {
tiarraの普通の使い方は「(自分 → tiarra)同マシン → IRCサーバー」なのだと思いますが、主に社内IRCサーバーのログ取り用に「皆 → (IRCサーバー ← tiarra)同マシン」の構成になっており、Log::Channelでログを記録しています。 ところが(上記構成が原因なのかどうかはハッキリ分かりませんが、)ControlPortを使ってSystem::SendMessageでしゃべらせると、Log::Channelがそれを記録してくれません。(実はずっと前から困ってた) System::SendMessage->control_requestedの引数をDumperで眺めてみたら何とかLog::Channelを呼べそうだったので、無理やりLog::Channel->message_arrivedを呼んでみました。senderとか超適当(IrcIO::*をnewしたり
たった一つとか嘘です。 ググッても中々出てこなくて、ちょっといじってたらできちゃったので書き残しておきます。 GNU makeでは1行毎に1つのシェルで実行されるので、 foo:: if true ; then echo "make love" ; fi は foo:: $(SHELL) -c 'if true ; then echo "make love" ; fi' と同じような挙動になります。 よってシェルスクリプトが複数行に渡る場合、 foo:: if true then echo "make love" fi なんて書いてしまうと、 foo:: $(SHELL) -c 'if true' $(SHELL) -c 'then' $(SHELL) -c ' echo "make love"' $(SHELL) -c 'fi' という感じで実行されることになるので当然エラーになります。
phpに独自の設定をしたいんだけど、その方法が分からなくて困っていた。 いくつか方法はあるんだけど、どれも使い物にならない。 /etc/php.iniを編集するのは論外。他に影響が出ちゃう。 コマンドラインで直接設定してみたり、 $ /usr/bin/php -d a=1 -d b=2 foo.php 自分用設定ファイルを作っておいて読み込ませたり $ echo -e "a=1\nb=2" > ~/.php/php.ini $ /usr/bin/php -c ~/.php foo.php 動くには動くけど、毎回オプション付きで/usr/bin/phpを実行しなきゃいけない(=透過的じゃない)。 aliasしとけばいいじゃんって、aliasでは#! /usr/bin/phpなファイル(実行PHPファイル)を実行できない。 # ↓こうしておけば $ alias php='php -c ~/.p
replace-matchのfixedcaseをtにしました org-mode自体の説明は面倒なので割愛。 GTDへの応用についても面倒なので気が向いたら書きます。 今回は、処理が気に入らない部分に対応したものをちょこっと公開してみます。 ※Emacs23.3.1、org-mode7.6、MobileOrg1.5.2です ※元ファイルをいじるのは嫌でアドバイスしまくりなので冗長になっている部分もあるかも。 MobileOrgのOutlinesでファイル名の代わりにカテゴリ名を表示する 各ファイルの#+CATEGORYを見てindex.orgに反映するようにしてみました。※1ファイル1カテゴリにしてます (defadvice org-mobile-create-index-file (after org-mobile-create-index-file-apply-category acti
; windows ショートカットを有効にする ; http://www.emacswiki.org/emacs/w32-symlinks.el ; ntemacs だと使えないぽい ;(setq w32-symlinks-handle-shortcuts t) ;(require 'w32-symlinks) 同じように悩んでいてとりあえず無理やり解決したので載せておく。 ショートカットかどうかを判断するために、ショートカットファイル内の 「L^@^@^@^A^T^B^@^@^@^@^@\300^@^@^@^@^@^@F」と 「"L\0\0\0\ \x01\x14\x02\0\0\0\0\0\xC0\0\0\0\0\0\0\x46"」を string=してるんだけども、何故か\300の部分が\xC0がマッチしないのが原因。 ただ、(string= (buffer-substring 13
<![CDATA[(ここ)]]> (ここ)は確かにHTMLエスケープしなくてもいいんだけど、(ここ)に予期せぬ"]]>"が現れるとそこでCDATAセクションが終わってしまう。 だから(ここ)に"]]>"という字面が現れないようにしないといけないので、 全ての ]]> を ]]]]><![CDATA[> に置き換える。 分断の仕方によって他にも書き方があって、パターンは以下の通りになる。 ]]]]><![CDATA[> ]] ]]> <![CDATA[ > ↑"]]" ↑CDATA終了 ↑CDATA開始 ↑">" ]]]>]<![CDATA[> ] ]]> ] <![CDATA[ > ↑"]" ↑CDATA終了 ↑"]" ↑CDATA開始 ↑">" ]]]><![CDATA[]> ] ]]> <![CDATA[ ]> ↑"]" ↑CDATA終了 ↑CDATA開始 ↑"]>" ]]>]]<![
.emacs分割のすゝめ - KAYAC engineers' blog init-loader使うのもいいんだろうけど、もっと手軽に ;; 環境毎のファイルは1個で十分 (load (locate-user-emacs-file (prin1-to-string window-system))) ;; 分割ファイル読み込み(~/.emacs.d/init.d/*.elに置いておく) (let* ((dir (locate-user-emacs-file "init.d/")) (el-suffix "\\.el\\'") (files (mapcar (lambda (path) (replace-regexp-in-string el-suffix "" path)) (directory-files dir t el-suffix)))) (while files (load (ca
こんにちわ!今日も元気に折り畳んでますか? 設定系のファイルはこんな感じになっていることが多いですよね。 # コメント abc def # コメント2 # コメント2−1 foo bar これをvimで元気に折り畳みたいけど、いちいち{{{とか}}}とか書くほどの元気は無いので、以下のコードをファイル冒頭に書いてみたら # vim:set foldmethod=expr foldexpr=getline(v\:lnum-1)!~'^#'&&getline(v\:lnum)=~'^#'?1\:getline(v\:lnum+1)=~'^\\s*$'?'<1'\:'=' : こんな感じになって +-- 3 行:# コメント---------------------------------------------------------------------------------------
Time::Piece::MySQL とタイムゾーン (訂正あり) - Yet Another Hackadelic Unix timeにタイムゾーンの概念を持ち込むのは気持ち悪いです。 得られたUnix timeに対してタイムゾーンに対応する目的で数値を加算減算してはいけないと思います。 何故ならUnix timeは「UTCにおける1970/1/1からの経過秒数」だからです。 タイムゾーンがJSTになっていて、NOW()はJSTにおける時刻を返しているという前提で話を進めますが、 (当然のことながら、UNIX_TIMESTAMP()はUTCにおける時間を返している) 何が話をややこしくしているかというと、 $ perl -MTime::Piece -MTime::Piece::MySQL -e 'my $t = Time::Piece->from_mysql_datetime("2010
diffに色付けしたかったけど、colordiffみたいな行単位じゃなくて、文字単位で色付けしたい。 id:yappoのString::Diff - Simple diff to String - metacpan.org使ってccdiff(charactor color diff)というのをでっちあげた。 ってか後から単語単位の方がいいかなと思った。 でwdiffとcolordiffの組み合わせとか試してみたけど、 % cat foo.patch | wdiff -d | colordiff だと、日本語の扱いもおかしくて何か出力が微妙で…。 Text::WordDiff - Track changes between documents - metacpan.orgも軽く試したけど「行単位で単語単位(説明難しい…)」ができないっぽくてやめた。 String::Diffより最適なモジュー
iframeを更新させるためにこんな処理が書いてあって、 <iframe id="foo" name="foo" src="/bar.html"></iframe> <a target="foo">更新</a> 一応動くには動くんだけど、a要素の使い方がなんだかなーと。 軽く調べても出てこなかったので、ちょいと試してみたら document.getElementById("foo").contentWindow.location.reload(); でいけたっぽい。JavaScriptだけど。(ちなみにreload(true)とすればスーパーリロードになるよ) "contentWindow.location.reload()"で調べ直したら色々出てきた。
(cond ((eq window-system 'w32) (load "~/.emacs.d/init-windows")) ((or (eq window-system 'ns) (eq window-system 'mac)) (load "~/.emacs.d/init-macos"))) こういうのは何となく嫌なので (load (concat "~/.emacs.d/init-" (prin1-to-string window-system))) ;; 実際にはこんな風にしてる ;; (unless (boundp 'user-emacs-directory) ;; (defvar user-emacs-directory (expand-file-name "~/.emacs.d/"))) ;; (load (concat user-emacs-directory (pri
(NTEmacs 23.2.1 と付属の tramp 2.1.18-23.2にて) Meadowのときからtrampがたまに固まることがあって、そもそもそれがきっかけでNTEmacsに乗り換えたんだけど、NTEmacsでもやっぱり固まった。 どうもファイルが存在する階層が深い場合に起きるっぽいので、 (setq tramp-debug-buffer t tramp-verbose 10) として色々調べてたら、階層が深くなるほどvcの処理が増えていって、それが重過ぎて固まってるように見えるっぽい。 そこでtrampとvcのソース読んで、vc-handled-backendsを試しに空にしてみたら、階層が深いファイルもすんなり開けるようになった。なので (defadvice tramp-handle-vc-registered (around tramp-handle-vc-register
どんなページでも http://ic.edge.jp/page2feed/ でRSSに変換。全文じゃなければ更に http://mrss.dokoda.jp/ で全文RSSにして、LDRに登録。ネ申..._〆(゚▽゚*)
しばらくGoogle Chromeを既定のブラウザとして使っていたけど、やたらメモリを食うので止めた。 結局Firefoxに戻ったわけだけど、Firefoxの方が落ちやすい&落ちた時に全てのタブが読み込み直しになってしまうのが嫌だった。 ところが https://addons.mozilla.org/ja/firefox/addon/67651 というのを見つけたのでインスコしてみた。 前回終了時のタブを復元する際、実際には読み込みを行なわず、タブを選択した時に初めて読み込んでくれる。 すると、再起動が*全く*気にならなくなった。BarTapいいよBarTap。絶対入れとけ。 LDRでピンを開いた時に(ソース見てないけどwindow.open?)読み込みされてしまうので、そこを対応してくれれば完璧なんだけどな〜。 「タブをしばらく見なかった場合」っていう設定が追加された。「時間が経ったら用
エントリーを書いてる途中に解決しましたがメモっておきます。 use XML::Simple; use Data::Dumper; my $xml = <<'XML'; <a> <b> <c> <d> </d> </c> </b> </a> XML $\ = "\n"; print $xml; my $obj = XMLin($xml); # XMLを入力して print Dumper($obj); # 中身を確認し、 print XMLout( $obj, NoAttr => 1, RootName => 'a' ); # XMLとして出力してみる を実行してみると、 <a> <b> <c> <d> </d> </c> </b> </a> $VAR1 = { 'b' => { 'c' => { 'd' => {} } } }; <a> <b> <name>c</name> <d></d>
まあ、PP のモジュールが void context であることを判定につかってるケースってほとんどないんですけどね。 ないですねぇ。自分もそんなの書かないし。 ちなみにClass-MOPではlib/Class/MOP/Method/Wrapped.pmでvoidコンテキスト関連の処理が書かれてますね。(前のエントリの最後に書いたのと同じ用途) ラップ系はvoidコンテキストの面倒を見ないといけないですからね。 これまでの流れだと「そもそもvoidコンテキストって何に使うねん」って思ってる人もいそうなので例を挙げておきます。 voidコンテキストの実用例としては、例えばPod::Simple::RTF(Perl5.9.3以降ならコアモジュール)にあって、lib/Pod/Simple/RTF.pmのsub rtf_escで出現します。コメントも付いてて処理も平易なので、何やってるかは見れば分
言語的に云々という話ではなくて、複数人で開発するときにハマりそうなので(というかハマったので) 動的にパッチを当てるには # gotoするよ版 BEGIN { use UNIVERSAL::require (); if ( Foo->require ) { my $orig = Foo->can('func'); no warnings qw(redefine); *Foo::func = sub { my ($foo) = @_; # shiftしない方が楽なことが多い # pre-process... goto &{$orig}; # post-processが必要な場合は記事の最後で }; } } とするのが定石(Hook::LexWrap使えっていう話もあるけど本筋とは違うので割愛)だと思いますが、これをどこでやるかという話。 とあるCatalystControllerで変なデバッ
色々書きたいもの溜まってるけど、さっきやったExtUtilsに関する修正を書いてみる。 自前のMANIFEST.SKIPが無い場合、ExtUtils-Manifestに同梱されているものが使われる。で、自前のMANIFEST.SKIPを普通に作ってしまうと、ExtUtils-Manifestの方で更新されても追従できなくなってしまう。 そこで、MYの仕組みを使ってこういうの↓をMakefile.PLに書いた。 use File::Basename qw(dirname); sub MY::dist_basics { my ( $self, @args ) = @_; my $dist_basics = $self->MM::dist_basics(@args); $dist_basics =~ s{^(manifest\s*:.*?)$}{$1 MANIFEST.SKIP}msx; ( m
Catalyst::Helperが出力するMyApp.pmに、 use Catalyst::Runtime '5.70'; ってあるじゃないですか。 あまりHelper使わないから気付かなかったけど、良く見たら文字列になってるんですよね。ってことは、Catalyst::Runtimeバージョン5.70以上を要求してるわけじゃなくて、sub importに'5.70'という引数を渡してるだけなんですよ。 これを use Catalyst::Runtime 5.70; このように書くとバージョンチェックが働いて、Catalyst::Runtimeのバージョンが5.70未満だとコンパイルエラーになります。 $ perl -e "use Catalyst::Runtime '5.70';"; $ perl -e "use Catalyst::Runtime 5.70;"; Catalyst::Ru
Module-Install-0.87が出ました。この件直ってます。 Diff from Module-Install-0.86 to Module-Install-0.87 Module-Install-0.86 - Standalone, extensible Perl module installer - metacpan.org perl Makefile.PLしたときに、 *** Module::AutoInstall version 1.03 *** Checking for Perl dependencies... *** Since we're running under CPAN, I'll just let it take care of the dependency's installation later.と警告が出て、普通はmissingなモジュールがあったら =
最近Perlから外部コマンドを実行する場合は、openやsystemなどを使わずにIPC::Cmdを良く使っている。 特に深い理由はないんだけど、 IPC::Cmdは5.009005からコアモジュールに入っている それなりに綺麗に書ける $IPC::Cmd::VERBOSEを真にしておけば、実行するコマンドの内容を出力してくれる 戻り値も「標準出力,標準エラー出力,その両方」が、改行区切りで配列になって戻ってくるのも地味に便利 (『かえりち』だと『返り血』に変換されるので、昔から『もどりち』って言うようにしてる>id:amachang) とかかなあ。多分1番目の理由が大きい。コアモジュールに凝ってるのかもしれない。 ログ吐きにはLog::Message::Simple使うようになったし。 まあLog::Message::Simpleは、daemontools付属のmultilogと相性が良
全国のActionScripterの皆様こんにちは!id:holidays-lです! 今回訳あって、AS3だけでFlexアプリケーションを作れるのかを試してみました。 こんなミニマムコードを MyApp.as package { import mx.core.Application; public class MyApp extends Application { } } ビルドして $ mxmlc MyApp.as MyApp.swfを実行してみたところ TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at mx.core::UIComponent/getStyle() at mx.core::UIComponent/createInFontContext() at mx.controls::Butt
bitlbee-1.2.7はパッチ無しでCygwinビルドできました。 普通に./configure && make install すればOK。 - BitlBee - Home bitlbee-0.92-setup.exeというWindowsバイナリもあるけど、cygwin1.dllが同梱されててバージョンの異なるcygwin1.dllが混ざってしまう不具合が起きるのでいやんな感じ。 あと0.92というバージョンも古くていやんなので自前でビルドすることにしました。 普通にビルドできなかったので、色々調べたところ#364 (compilation under cygwin missing getaddrinfo) – BitlBeeを発見。 でもこのパッチはこのままじゃ使えなくて修正を加えたので、そいつをPublic Dropboxに置いておきます(下記でcurlしてるやつ) % tar
Catalystのバージョンを5.71にしたらこんなメッセージが出るようになりました。 [warn] Used regexp fallback for $c->model('View::TT'), which found 'MyApp::Web::View::TT=HASH(0x21d44d0)'. Relying on regexp fallback behavior for component resolution is unreliable and unsafe. You probably meant $c->model('MyApp::Web::View::TT=HASH(0x21d44d0)') instead of $c->model{'View::TT'}, but if you really wanted to search, pass in a regexp as the
ギークなお姉さんに初めてのトラックバック。 DTIブログ サービス終了のお知らせ の最後にあるfubaさんのnegative wordsを見て猛烈に最適化してみたくなった。 use utf8; use Regexp::Assemble; binmode STDOUT=>'utf8'; @words = split /\|/, 'ヘルプ|へるぷ|help|諦め|苦しい|つらい|希望がない|だめ|ダメ|死|しぬ|しにたい|自殺|たすけて|助けて|働きたくない|やだ|むり|やめたい'; print Regexp::Assemble->new->add(@words)->re; (?-xism:(?:(?:(?:働きたく|希望が)な|つら|苦し)い|(?:たす|助)けて|し(?:にたい|ぬ)|や(?:めたい|だ)|[だ諦]め|help|へるぷ|ヘルプ|むり|ダメ|自殺|死)) Regexp::As
普通wantarrayは「arrayコンテキストか否か」を判定するために使われるが、voidコンテキストの判定にも使える。 イマイチ使い方がピンと来ていなかったが、HTML::Entitiesのソースを見ていてなるほどと思った。 sub encode_entities { my $ref; if (defined wantarray) { my $x = $_[0]; $ref = \$x; # copy } else { $ref = \$_[0]; # modify in-place }wantarrayは subroutine() # voidコンテキスト undef $scalar = subroutine() # scalarコンテキスト @array = subroutine() # arrayコンテキスト 1 になる。 よって、defined wantarrayを調べることに
プロセスを。 SIGSTOP や SIGTSTP(^Z) で停止された process は、 基本的には SIGCONT を送って再開させてやらない限りは止まったままです。 死ぬことすらままなりません。 なので、一般には kill -TERM && kill -CONT で終了させます。 この順番にするのは、再開してから死ぬまでの時間的猶予を与えないための常套手段ですね。 あー、常套手段なのか。知らなかった。
次のページ
このページを最初にブックマークしてみませんか?
『ヒルズで働く@robarioの技ログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く