10日でおぼえる Ruby on Rails入門教室(arton)読了。あとはsvnかgitかhgの使いかたを覚えれば大体大丈夫なんじゃないかな。ふつうの10日間本ではない感じ、というか、Railsが10日間本の対象から若干外れている気もするけど。誤植を一箇所発見したけど、どこか忘れた。
ヒラメ釣りにいってきた。ライトタックルのやつ。詳しくは解説を読んでください。
にしても、とにかく合わせが難しい。生き餌(イワシ)の口に針を刺して泳がせるんだけど、ヒラメは大概、尻尾のほうから何度かに分けて噛み付いてくるので、最初のアタリの直後に合わせ(引っぱ)ると、ヒラメがびっくりしてエサを吐き出してしまう。なので、ちょっと待たなきゃいけないんだけど、待ちすぎても針と糸に気づいて逃げちゃう。そこのタイミングがすごいシビア(腕次第とも言う)。
まあその点も、ライトタックルだとシェイクを入れることである程度カバーできたりするので、いいですよ、ライトタックル、という話らしい。
先日お世話になったのは、やまきゅう龍神丸と、上州屋盛岡上堂店の方と、釣りクラブの方々と、あと釣具はダイワの提供だそうです。
貸してもらったロッドは極鋭、リーディング、アナリスター(たぶん)。リールはミリオネアICVとCV-Z。個人的にはロッドはアナリスターがよさげな気がした。リールはドラグ(引きが強いときに自動的に糸を伸ばして切れないようにしてくれるやつ)性能が素晴しいのはわかったけど、ハンドルがそれぞれカスタマイズされてたので、そこはちょっとよくわかんないというか、各自カスタマイズせよという話かもしれず。僕は早朝にしか釣れなかったので、続けるなら誘いのアクションから勉強しなきゃなんないなと強く思いました。あと、もうちょっと睡眠時間を確保しないといかんと思う次第。
以下妄想紙芝居。
機械的なワークフローって重要だなあ、とつくづく思う。Eメールが飛んでいるが状態が把握できねかねるというか、メッセージ同士が関連づいてないので無理。Outlookの「並べ替え→テーマ」は使えなさすぎ。RFCとかインターネットの慣習ってやっぱ結構まともだよね。コンプライアンスのせいで内部レビュー→実際にメール送信とかになってるのをメールでやるせいでさらにこれはひどい的雰囲気。Eメールはそんな分岐には対応してないわけで。あとプレーンテキストってシリアルデータなんだなーと思った。「-----ここから-----」「-----ここまで-----」とか何度も出てくるのは生理的に無理。まあMicrosoft的にはSharePoint買えっていう話のような気もするけど。MAPIだからインターネットメールとは非互換ですとか何年言ってるんだよ的な?特技=仕様変更ってみんな思ってるんだし、早めに手を打っておけば今頃なんとかなってたんじゃないの的な。
WindowsXPで英語配列を使えるようにレジストリを書き換えて、そこでVMWareを起動してその中のWindowsで_を入力すると=になってガッカリした(スキャンコードをそのまま送ってるらしい)ので、左Ctrlに109日本語キーボードの「\_」を割り当ててやった。特に反省はしていないが、\の入力がすごく辛くてびっくり。
クリップボードは、一度だけダイアログが出るけどIE経由でアクセス可能らしい。(以下エスケープ抜けてたらごめんなさい)
function Clipboard() {
throw new Error('Clipboard: new 演算子を使用は禁止されています');
}
(function () {
var $ = Clipboard.prototype;
//window is initialized in fake-ie.js
//var window;
$.initialize = function () {
//var e = new ActiveXObject('InternetExplorer.Application');
//e.navigate('about:blank');
//while (e.busy || e.readyState !=4)
// WScript.sleep(100);
//window = e.document.parentWindow;
return this;
}
$.clear = function () {
window.clipboardData.clearData();
}
$.get = function () {
return window.clipboardData.getData('TEXT');
}
$.set = function (anObject) {
return window.clipboardData.setData('TEXT', anObject.toString());
}
// Note that the object reference e.document.parentWindow.clibboardData changes each time
// the value of the clipboard changes. Assume the local variable c where the reference
// e.document.parentWindow.clibboardData is bound. $.get (closure) closes the binding
// for c and always returns the value of the clipboard at which the $get is created.
// Hence $.get has to refresh the reference each time an access is needed. (2004/09/23)
})();
(function () {
var $ = Clipboard;
// $.defaultClipboard = function () { // <- its verbose
$.get = function () {
var proto = Clipboard.prototype;
if (proto.DefaultClipboard)
return proto.DefaultClipboard;
else {
var TemporaryConstructor = new Function();
TemporaryConstructor.prototype = Clipboard.prototype;
var clipboardObject = new TemporaryConstructor();
clipboardObject.initialize();
proto.DefaultClipboard = clipboardObject;
return clipboardObject;
}
}
})();あとIOが使いづらい(APIはあるが生理的に無理)ので、RubyのFileを真似しようと中途半端にでっち上げたり
/*
*
*
*/
var Dir = function() {
this.initialize.apply(this, arguments);
}
Dir.prototype = {
name: null,
dir: null,
initialize: function(name) {
this.name = name;
this.open();
},
open: function(){
this.dir = File.fso().GetFolder(this.name);
},
close: function(){
this.dir.close();
},
reopen:function(){
this.close();
this.open();
},
each: function(itr){
(new Enumerator(this.dir.Files)).each(itr);
}
}
Dir.glob = function(dir, re, itr) {
var e = new Enumerator(File.fso().GetFolder(dir).Files);
e.each(function(f) {
if (re.test(f.Name)) {
itr(f);
}
});
}
var File = function() {
this.initialize.apply(this, arguments);
}
File.prototype = {
imode: 1,
stream: null,
name: '',
fso: null,
initialize: function(name, mode) {
this.name = name;
this.fso = WScript.CreateObject('Scripting.FileSystemObject');
if (/\+/.test(mode)) {
this.imode = 8;
} else if (/r/.test(mode) && /w/.test(mode)) {
this.imode = 0;
} else if (/w/.test(mode)) {
this.imode = 2;
}
this.open();
var a = $A(arguments);
if (typeof a.last() == 'function') {
try {
(a.last())(this);
} catch (ex) {
throw(ex);
} finally {
this.close();
}
}
},
open: function() {
var s;
if (this.imode != 1 && !this.fso.FileExists(this.name)) {
s = this.fso.CreateTextFile(this.name, false);
} else {
s = this.fso.OpenTextFile(this.name, this.imode);
}
this.stream = s;
},
print: function(str) {
return this.stream.Write(str);
},
puts: function(str) {
return this.stream.WriteLine(str);
},
read: function(i) {
return this.stream.Read(i);
},
gets: function() {
return this.stream.ReadLine();
},
each_line: function(fn) {
while (!this.stream.AtEndOfStream) {
fn(this.gets());
}
this.reopen();
},
close: function() {
return this.stream.Close();
},
reopen: function() {
this.close();
this.open();
}
};
File.fso = function(fn) {
var x = WScript.CreateObject('Scripting.FileSystemObject');
//File.fso = function(){return x};
return x;
}
File.atime = function(fn) {
return this.fso().GetFile(fn).DateLastAccessed;
}
File.basename = function(fn) {
return this.fso().GetFileName(fn);
}
File.ctime = function(fn) {
return this.fso().GetFile(fn).DateCreated;
}
File.unlink = function(fn) { //delete is statement
return this.fso().DeleteFile(fn);
}
File.dirname = function(fn) {
return this.fso().GetParentFolderName(fn);
}
File.extname = function(fn) {
return this.fso().GetExtensionName(fn);
}
File.mtime = function(fn) {
return this.fso().GetFile(fn).DateLastModified;
}
File.rename = function(from, to) {
return this.fso().MoveFile(from, to);
}
File.expand_path = function(path) {
return this.fso().GetAbsolutePathName(path);
}
new File('hoge/fuga.txt', 'r', function(fd){var i = 0;fd.each_line(function(l){print((++i) + '. ' + l)})})とかできる(ファイル読んで番号付けて出力の意)。しかしJavaScriptはfunctionとClassの関係とかprototypeまわりとか全然理解できないな。
追記。eachを一度実行してしまうと再利用できなかったバグを修正した記憶があるので差し替え。Dirのほうはなんかよろしくない。インタラクティブ環境はdata-jさんのやつのほうが、複数行編集できるようになってるので嬉しいかもしれず。
読了。ストーリーは進まないけど、なんか村山由佳っぽさがあってよかった。客観的な評価はできないが。
そういえば、寒いとこの人はコーヒーを熱いお湯で入れたがるからうまいコーヒーになんねえんだ、とかいわれたのを思い出した。まあ、そうなんだけど、寒いところでは「コーヒーが熱いこと」が味より価値が高いので、しょうがない。
水出しがうまいって言う人もいるけど、抽出時間が長いこと自体が致命的な気もするし、どうなんかね。
すげーうまいコーヒーの価値と、そこでコーヒーを飲む時間の価値はまた別だな。前者は前者で好みがあるし、後者も同じなわけだが。
同じゴールに行くんですっていったって、理想の形は結局別かもしんないじゃん。うん、まあそれはそれで、いいのか。
タウ・ゼロ (創元SF文庫)(ポール アンダースン/Poul Anderson/浅倉 久志)読了。さすがに古いので、現代人的には目新しさはないが、実直でよい。あとは人間関係の書き方の妙かな。しかしまあ、海外ドラマみたいな恋愛感(それを超えた関係性もあるけど)が許せないと辛いかも。もっと小難しいほうが最近の俺の好みではあるな、とちょっと思った。でなきゃもっと耽美なやつか、アドベンチャー的なのが読みたい。
宇宙の死と再生の話だと、平谷美樹の
レスレクティオ(平谷 美樹)と
銀の弦(平谷 美樹)を思い出したりする。いちおう地元作家なので…と言っても宣伝と言うわけでもなく、なんとなく思い出す。前者は
エリ・エリ (ハルキ文庫)(平谷 美樹)を先に読んだほうがいいと思うけど、まあ、宇宙自体の死と再生よりは、もっとミクロな死と再生の書き方が良かった気がする。後者は多次元世界の描写がちょっと物足りないけど、オカルト的な部分の書き方が好きではある。
言っとくけどそれほど読書家じゃないので、有名な本とか意外と読んでない。あと個人的なメモ。
ヴァンパイア―真紅の鏡像(平谷 美樹)と
百物語 第7夜―実録怪談集 (ハルキ・ホラー文庫 ひ 2-7)(平谷 美樹/岡本 美月)を買う。
ビッグバンといえば、そういえばEDENのラストのほうにもあったなあ。
メグとセロン〈1〉三三〇五年の夏休み(上) (電撃文庫)(時雨沢 恵一/黒星 紅白)どうでもいいけど、MS-IMEと英語キーボードに慣れすぎてUbuntuのSKKを日本語キーボードで使うのが辛い。
閑話休題。読了。まあ正直、有閑倶楽部だな。面白いけど。
そういえばアリソンとリリトレって、主人公のポジションがアリソン=リリアで、ヴィル=トレイズと同じなので、物語構造が似ざるをえなかったんだよな。
しかし物語構造で考えると不毛な気がしてきた。
つーかラノベ読むには歳とりすぎた希ガス。というか機微とか興味ないんだな最早。普通の人間の思考・行動は考えりゃわかるし、考えてわかんねえ機微なんか読んでもわかんねえし。というか、わかってやる気力がもうない。
そういえばポニョ始まった初まったけどどうなんすかね。dashboardには早速、「死を連想させられすぎて微妙な感じ」というreblogがあるし、散々CMされてるわりに試写の感想も流さないしストーリーに関わることは何も放送されないんで、アレな内容なんだなーというのは想像できる。見るのかな。
宇宙消失 (創元SF文庫)(グレッグ イーガン/Greg Egan/山岸 真)読了。時代のせいか、長編としては初期の作品だからか、どこかサイバーパンク的で、なんとなく青臭い。忠誠モッドの登場から俄然面白くなるが、結末はなんだか、畳み掛けようとして勢いが余ってしまった感じがする。というか、最近翻訳された作品と比べると、共感度が違うと言うか。
などと、なんか俺としては珍しく辛辣な書き方をしてしまうが、量子論のこねくり回し方は秀逸だし、人物とそれぞれの関係もやや荒削りとはいえイーガン的で良い。しかし、やはり量子論自体まだアレなのでアレな感じなのではないか。
なんとなく気づいてたけど今気づいたことにした。直すか。直そう。リポジトリにあるやつだと直ってるんじゃないかとか思わんでもないが。
安直にplugin/00default.rb:522をif @diaries[@date.strftime('%Y%m%d')] && @diaries[@date.strftime('%Y%m%d')].count_comments( true ) >= @conf.comment_limit_per_day thenにした。
<< arton [おお、どうもありがとう。誤植(多分、タイポだけど)は、もし思い出したら教えてください。]
<< acn [まじ剣舞練習とか週末がいいとかwあれは時間の無駄よね〜]
<< kuwa1 [人が集まらないのはどうしようもないね。 週末だから集まれるってわけでもないし。 うちらも練習場所には行ったけど練習し..]