大人買い
今日は日中はほとんど寝ていた。
日も傾いてからバイクでらくだ書店へ。
いろいろ本を買ってきました。
積読にならないようにせねば。
そしてコンピュータ関係の書籍については、必ずアウトプットすることを、自らに課す。
そうそう、『まるごとPerl! Vol.1』が無かった・・・。『博士の異常な健康』も・・・。
id:kopugさんは既に読破とのこと。
読んでみて解らないことはどんどん訊くことにしよう、そうしよう。
Perl::Criticをちょっとだけ - ほぼ30歳からはじめるWEBプログラム
でも触れたものの邦訳版。
やっぱり英語版よりも頭に入ってきますよ、当たり前だが。
ちょっとした記述法や、ビジネスロジック以外のことに時間と脳を浪費しそうなヤバイ雰囲気になったときには利用しよう、そうしよう。
「Javaの10倍の生産性を体感せよ」というRuby特集の触れ込みに思わず手にしてしまった。
Rubyも少し覚えよう、そうしよう。
「LAMPシステム再強化計画」「CentOS徹底活用」など、
弱いところを強化したい。
眠っちゃってるFedora入りのサーバマシンをCentOSで復活させよう、そうしよう。
最新LLフレームワークエクスプローラ Ruby on Rails, Maple/Ethna(PHP),Catalyst(Perl),TurboGears(Python) 5大フレームワーク徹底攻略
- 作者: Software Design編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2006/07/07
- メディア: 大型本
久しぶりにどっぷり本屋に長居して、
つくづく感じたのはいわゆるライトウェイト言語を特集した雑誌の多さ。
昨今はRuby On Railsの登場によりRubyを初めとしたライトウェイト言語が隆盛してきているのだな、と。
せっかく業務でPerlを利用している身としては、この期を逃さず、吸収できるものはどんどん吸収しよう、そうしよう。
以下は趣味本。
芥川賞候補にもなった本作。
松尾スズキの小説は『宗教が往く』以来か。
精神病院の閉鎖病棟という松尾スズキの得意そうなフィールドが舞台。
楽しみです。
クイックジャパン買うなんて何年ぶりだか・・・。
森達也が責任編集する政治特集に興味を持って。
森達也の『A』や『A2』を扱ってるレンタル屋さんがあったら教えてください!
大好きな「ピタゴラスイッチ」を初めとするNHK教育の特集や筒井康隆と菊地成孔の対談が読みたくて。
筒井作品がまた読みたいな〜。LAへの飛行機の中で読もうかな・・・。
菊地成孔が名古屋ブルーノートでDUBを!!
行きたい!
漏洩には気をつけろ!
Subversion がファイルのテキストかバイナリかを判断する際のバグ(?)に遭遇。
漏洩には気をつけろ!
以上を記述しただけのファイルを仮に leak.txt として任意リポジトリのワーキングコピー配下に保存。
該当リポジトリに追加する。
$ svn add leak.txt A (bin) leak.txt
ちょwwwおまwwww
なんでバイナリなの?
文脈マージが可能かどうかを決めるのに、Subversion は svn:mime-type属性を調べます。もしファイルが svn:mime-type属性を持たないか、テキストを示すような内容であれば(たとえば、text/*)、Subversion はそれをテキストであると判断します。それ以外の場合、ファイルはバイナリであるとみなされます。Subversion はsvn import とsvn add 実行時に、バイナリ検出アルゴリズムを実行することでユーザを助けます。これらのコマンドは、良い推測を行い、(可能なら)バイナリのsvn:mime-type 属性を追加されるファイルに設定します。(もし Subversion の推測が間違っていた場合は、ユーザはいつでも手でその属性を削除することができます)
上述の内容から、
leak.txt のsvn:mime-type属性を調べてみる。
$ svn propget svn:mime-type leak.txt application/octet-stream
・・・とにかく Subversion が leak.txt をバイナリデータとしてみなしていることは明白。
理由はわからんが、このままでは気持ち悪い。
こう、
なんか、
バイト中、小学生に
「あのヒト髪型変!!」
と大声で言われてもなお、
笑顔でいたあの頃の自分くらい気持ち悪い。
svn diffも取れないし。
で、
ひとまず対処療法。
「Subversion によるバージョン管理::バイナリファイルと変換」の内容にあるとおり
この svn:mime-type 属性を手で変えてやりましょう。
$ svn propset svn:mime-type text/plain leak.txt property 'svn:mime-type' set on 'leak.txt' $ svn propget svn:mime-type leak.txt text/plain
これで悲劇の leak.txt のテキスト化が高らかに宣言されました。
もしくは、
$ svn propdel svn:mime-type leak.txt $ svn propget svn:mime-type leak.txt $
これで svn:mime-type 属性を消しちゃっても svn diff を取ることができるようになります。
ちなみに、
洩に
だけで Subversionがバイナリと判断することが判明。
なぜか?
その理由はあなたが解き明かしてください!
htmlファイルにおけるインデント
業務では専らLinux上でvimを使って慣れているため、
Windowsでもgvimを落としてきて使っています。
たまに。
で、Windows上でコーディングってあまりしないんだけど、
gvimはhtmlファイルをごにょごにょするときに使うことが一番多い。
でもそんなときに、
^^^^function hoge() {alert()}【Enter】
とすると(「^^^^」部分は半角4文字分のインデント、【Enter】はここでEnterキーを押したことを意味します。)、
function hoge() {alert()}
って、勝手にインデントが消えちゃったり、
^^^^^^^^function hoge() {alert()}
って、勝手にインデントが増えちゃったりする。
自分で意図的にインデントして書き終わった行を、改行しようとするたびにコードが動かされてストレスがたまっちゃいます。
どーしてかなー、といろいろインデントの設定変えてみても、動作に変化なし。
どうやら増減は前後の文脈によって変わってるっぽい。
試しにPerlのコード書いてみると、ストレスなし!つまり上記の動作は起きない。
で、
たどり着いたのがこれ、
C:\Program Files\vim\runtime\indent\html.vim
どうやら「.html」拡張子のついてるファイルのインデントの動作を設定しているファイルらしい。
中をチラッと見たところ前後のhtmlのタグのネストの関係を割り出して自動的にインデントしてるんじゃないかと結論。
こんなファイル、僕の手ではとても触れないし、何も拡張子によってインデント具合を変えて欲しいとも思わなかったので、
にリネーム。
ようやくストレスなしのhtmlおよびJavaScriptコーディングができるようになりそうです。
ま、htmlファイルの話なのにコードがJavaScriptなのはご愛嬌☆
WEB+DB PRESS Vol.31
でAjax&prototype.jsの特集記事とのこと!
買わなきゃ。
それよりid:naoyaさんがPerlの連載をされるということが一番熱いニュースだ!
待ち遠しい。
にしても、
「WEB+DB PRESS」の表紙はダサくなったと思うがどうでしょう?
【追記】
買って来ました。
id:naoyaさんの文章はやっぱ解りやすいなー。
ただ、typoが多かった。
perlだと、配列やハッシュの要素の後ろにカンマを付けても問題ないのですが、JavaScriptだと、そこでコケるようです。
となるJavaScriptコードが多数。
Perl::Criticをちょっとだけ
まだまだ初心者な僕はコーディング規約的なことをしっかりしたい。
ので、はてな技術発表会日記で拝見しましたるPerl::CriticをCPANより落としてきて早速試す。
ちょっとだけ。
まず、以下のコードをtest.plとして作成。
#!/usr/bin/perl -w use strict; use lib qw(../myperl/lib); use Readonly; Readonly my $BIRTH_YEAR => 1975; Readonly my $BIRTH_MONTH => 10; MAIN : { &main; exit; } sub main { print $BIRTH_YEAR. "\n"; print $BIRTH_MONTH. "\n"; } __END__
引き続き、
以下のコードをcritique.plとして作成
#!/usr/bin/perl -w use strict; use lib qw(../myperl/lib); use Perl::Critic; MAIN : { &main; exit; } sub main { my $critic = Perl::Critic->new; my $source = './test.pl'; print $critic->critique($source); } __END__
で、critique.plを実行すると・・・
Code before warnings are enabled at line 7, column 1. See page 431 of PBP. Code not contained in explicit package at line 3, column 1. Violates encapsulation. No 'VERSION' variable found at line 0, column 0. See page 404 of PBP. Hard tabs used at line 7, column 24. See page 20 of PBP. Hard tabs used at line 8, column 25. See page 20 of PBP.
って。
Perl::Criticによると
ってことなんで、
Most Policies are based on Damian Conway's book Perl Best Practices.
Perl Best Practices: Standards and Styles for Developing Maintainable Code
- 作者: Damian Conway
- 出版社/メーカー: O'Reilly Media
- 発売日: 2005/07/22
- メディア: ペーパーバック
- クリック: 65回
- この商品を含むブログ (27件) を見る
クラスメソッドとインスタンスメソッド
っちゅうことで。
てなときには、
package Hoge;sub new {
my $class = shift;
my $self = {};
return bless $self,$class;
}sub name {
my $self = shift;
my $name = shift;
if(defined($name)){
$self->{"name"} = $name;
} else {
return $self->{"name"};
}
}sub say_hello {
print "Hello!!";
}1;
でよいのでしょうか?
use Hoge;# new()はクラスメソッド
my $obj = Hoge->new();# name()はインスタンスメソッド
my $name = $obj->name('summersoldier');# say_hello()はクラスメソッド的
Hoge->say_hello();
.cshrcの編集
プロンプト表示が
%だけで寂しい。
ターミナルの全画面表示したときも入力しづらい。
また、lsしたときにディレクトリとファイルの違いがわかりづらいので色づけもしたい。
よって$HOME/.cshrcを以下のように編集。
# lsの色付き表示
alias ls ls -G# プロンプトの表示
set prompt = '%n@%m:%~$ '
編集内容を適用するには
%source .cshrc
これでプロンプトは
username@hostname:~$
てな感じになりました。http://iris.homeunix.net/yayoi/freebsd.asp
この辺参考にしました。