今すぐやることがいくつもあるとどうもどれにも手がつかない……プライオリティが一番高いタスクには着手しているけど、時間待ちがあるタスクなので途中に他のタスクがはいれる。でもうまくいかない。
時間待ちタスクが終了したらできるだけはやく連絡を取る系のタスクを処理したい。ただ、処理中のやつの終了ステータスがまずいとタスク自体が先延ばしになるかもしれない。でもどっちにしろ絶対やらないといけないのだから早めにやらないと……
眠いよほんとにさいきんずっとねむい
今すぐやることがいくつもあるとどうもどれにも手がつかない……プライオリティが一番高いタスクには着手しているけど、時間待ちがあるタスクなので途中に他のタスクがはいれる。でもうまくいかない。
時間待ちタスクが終了したらできるだけはやく連絡を取る系のタスクを処理したい。ただ、処理中のやつの終了ステータスがまずいとタスク自体が先延ばしになるかもしれない。でもどっちにしろ絶対やらないといけないのだから早めにやらないと……
眠いよほんとにさいきんずっとねむい
家に帰れてないのでそのへんのオープンネットワークから (Now in カラオケボックス)。
成人式自体はすぐに終わってしまって(二部とかあったけどどうもいいので帰ってきた)、なんか途中家に ssh しようと思ったら繋がらなくておかしいと思いつつ一度帰宅したら停電していた。立ち上げ直してから同窓会へ。
懐かしい顔ぶれでちょっと頭の中にいるようだった。いろいろ考えていろいろな人に話しかけてみた。だいたい就職している人がいたり、進路はっきり考えてたりすげぇなと思った。
聞いていたなかで一フレーズのみ印象に残っていて途中からどうもうまく気持ちが乗らなくなってしまった (別に悪い話ではない)。なんか俺がこれやって楽しんでる場合じゃねぇなとか、なんとか。ならこのクソ日記を更新するのではなく行動に移せという、はなしだ、が。
楽しいとか楽しくないとか、それ以前の人がいっぱいるけれども、やはり悩めるだけの余裕がある自分はその価値がないほど幸せなのだろう。極めて、幸せな境遇にあるのだ。
もっと相手の事を考えなければならない。矛盾しているけどそういうこともあるだろう。プライオリティのもっと高いことがある。
変更があったとき「j と k で移動できるだけなんでしょー?」とか思って内容をよく読まなかったのを激しく後悔するとともに、使いこなせていなかったことを深くお詫び申し上げたいと思う所存であります。謎
o を押すと新しくタブ開いて、なおかつアンテナは次のサイトにフォーカス移動してくれるので、 o で開いてみて、見終わったら閉じてまた o を押すというちょーこうそく個人サイトリーディングが可能。やばい。(「アンテナ設定」で「ボタンを表示する 常にオン」にしとくといいみたい)
あと自分がアンテナに登録しているのはイラストサイトばっかりなのですが、スクリーンショットを表示させるようにすると想像以上に便利な感じになりました。あーいままでなんでやらなかったんだろう。
一昨日と昨日やったことのまとめ。rubyclr (なんか rubyclr のサイトって title 要素の内容がないんだけど) について。
rubyclr 自体は .NET Framework があれば動くので VS.NET はいらないのですが、UI 開発などの行程で VS.NET が激しく便利なので少なくとも C# Express ぐらいはインストールしといたほうがいいと思います。(rubyclr の開発言語は C++ なので C++ のほうがいいかも)
わかったこと
とりあえず VS.NET で作ったファイルを読み込むには
require 'rubyclr'
reference_file "CompiledAssembly.exe"
とかやると、CompiledAssembly.exe に定義されたクラスが全てインポートされる。(もちろん public なものしかアクセスできない。フォームに配置したコントールはデフォルトで private なので Ruby から参照したいときは書き換える必要あり)
namespace Hogehoge 以下の Unco クラスは Ruby では Hogehoge::Unco で参照できる。
.exe にしてありますが、プロジェクトのプロパティで、出力の形式(デフォルトは Windows アプリケーション) をクラスライブラリにすれば dll になって単体で実行できなくなるみたいです。けど IDE で実行できなくなるのでデバッグし辛い。
Ruby のスレッドスイッチが起きないのは致命的というか、DRb 使えない Ruby とか Ruby で書く意味があんまりない、とまでは言わないけれど結構そんな残念な感じになってしまったので解決法考えた。というかトイレいったら思いついた。
# threadTimer という名前で配置。Interval は 10 で、最初から Enabled を true にしてある。
form.threadTimer.Tick do |sender, arg|
Thread.pass
end
フォームに Timer を配置して、.NET 側から Ruby に定期的に割り込み入れるようにする。
ただし、この Thread.pass されたスレッドでフォーム内のコントロールを参照すると、参照した時点で謎のエラー (簡素なダイアログ) で落ちてしまう。(Thread.pass する前、つまりタイマー割り込みのイベント内では大丈夫です。)
subtech - MisuzillaSubtechImpl - Windows Forms とスレッド によると安全性のために落ちているらしい。Ruby のスレッドと .NET のスレッドとの関係性がいまいちわからないけれど、おまじない書くと一応大丈夫になる。
reference 'System.Windows.Forms'
System::Windows::Forms::Form.CheckForIllegalCrossThreadCalls = false
true にしといて別の方法で同期とったほうがいいかもしれない。(今回書いていたコードではこのおまじないを使わないで Timer 割り込みで UI を更新するようなコードにした)
あとは rubyclr のサンプルを見ながらやれば特に困ったことにはならなかった。でも exerb でまとめるとどうしてもセグフォるので誰かうまくいったら教えて欲しいです。
どうでもいいけど Ruby でスクリプト書くときも VS.NET を立ち上げっぱなしにしておけばどんなプロパティがあるかわかって便利だった。というか MSDN はどうも読みにくい……MSDN 見てから developer.apple.com 見ると癒される。
そういえば、もともと VB6 を触った事があったのでメソッド名とかはだいたい想像がついて .NET の浅い部分ではそんなに悩んだりはしなかった。
セキュリティシステムあたりがまだ理解できてない。
そんな感じの .NET プログラミング初体験☆でした。別にエロくない。
なんかすんごい何度も書いてる気がするけど、モチベーションの維持が一番難しいのだ。だから自分はモチベーションがあるときは失わないように必死だし、モチベーションがないときはどうすればモチベーションがでるか考えている。ただこれは実際「自分の中で完結する解決方法」でしかない。外部的要因によって強制的にスイッチが切られたら終わりなのだ。そう都合良くいかない。解ってる。解ってる。
表現だけを考えている。伝えるのに一番いい方法があるはずだ。まんぞくして自信がついたら終わりだ。それを持ってなおかつ相反する何かを持ち続けられるほどメモリをつんでいない。
例えばコンピュータは、こちらの表現を正確に受け取る。コンピュータは誤解はしない。でもコンピュータはソースコードの美しさを評価しない。
相手の望んでいることを考えるのが心底嫌いだ。
友人 (方向が違うのだけど、その方向をおれは取り入れていきたい) と文章がどうとかいう話をした。よくわからない。必要以上に導きたくない。想像のためのきっかけを作りたいと思う。後に残らないものを作りたいとは思わない。でも入り込みやすい要素は必要だと思う。バランスが掴めない。あるいは距離感なのかな。必要最低限でいい。特に論理的に導きだせるなら答えを言う必要はない。みんな俺より頭いいんだから、それぐらいできるはずだ。自分はそれをする気になるまでの導入を作れるようにならないといけない。
何周して戻ってくる。二週目? 眠い。
今まで「眠い」で終わる日記を何回かいたんだろう。
なんか ntp の設定してたら年が明けてた。iptables の設定わからない。別に普通の日だなぁ。当たり前か。
今年は
最後のがもちろん最もプライオリティが高いものであるが、実現可能性が著しく低いので、まず先に時間移動の方法を見つけたい。
あー日記を最初から読み直してメモしてたけど、途中で Fx 固まって消えたのでもういいや。でも年に一度ぐらいは日記を読み直したほうが絶対いいなぁと思った。こんなことあったのか、とか気付いたり、あれって今年のできごとだったんだ、と気付いたり面白い。
現在位置の確認をするのに、過去の日記はたいへんつかえるのかもしれないなぁと思いました。
今年は前年にも増していろいろなことがあり、いろいろな人のお世話になりました。おかげさまで二年ぐらいたったように感じられます。ありがとうございます。
だんだん書ける事が少なくなっていくのが不安ですが、できるだけ何も考えないで書いていけるようにするために緩やかな変化をつけていこうと思います。
なんか GUI のクライアント使うのさえ面倒くさくなってきてミラーリングツールを使って更新することにした。
#!/usr/bin/ruby
require 'optparse'
require 'pathname'
require 'open-uri'
ROOT = '/srv/www/virtual/userid/public_html'
SERV = '/virtual/userid/public_html'
HOST = 's63.xrea.com'
USER = 'userid'
PASS = 'hogehoge'
open("http://www.#{HOST}/jp/admin.xcg?id=#{USER}&pass=#{PASS}&telnet=t") do |f|
data = f.read
ip = data[/NAME="remote_host" VALUE="([¥d.]+)"/, 1]
raise "can't get IP" unless ip
open("http://www.#{HOST}/jp/admin.xcg?id=#{USER}&pass=#{PASS}&remote_host=#{ip}&ssh2=SSH%93o%98%5E") do |f|
end
end
host = nil
dry = false
OptionParser.new do |opts|
opts.on('-n', '--dry-run') { dry = true }
opts.parse!
host = ARGV[0]
unless host
puts opts
exit 1
end
end
def sync(host, dry=false)
dir = Pathname.new(ROOT) + host
raise "#{host} is not exists." unless dir.exist?
system(<<-EOC.gsub(/^¥t+/, ''))
rsync #{dry ? '--dry-run' : ''} -vptr #{dir}/ #{USER}@#{HOST}:#{SERV}/#{host}
EOC
end
unless sync(host, dry)
puts "rsync failed. retry after 5min."
(5 * 60).downto(0) do |i|
print i, "¥r"
$stdout.flush
sleep 1
end
sync(host, dry)
end
こんなスクリプト書いて実行させてる。ホストごとに rsync できるようにしてる。
最初は lftp でやってたのだけど、こいつはなぜかファイルサイズを見るらしく困ったうえに、ファイルリストとるのが劇遅くてやる気がなくなるので結局 rsync にした。ssh 登録がめんどいけどそれも自動化した。
キーボードの U.S. Extended を選ぶと、Alt-6 (サーカムフレックス) Alt-b (ブリーブ) が入力できるようになるみたいだ。あとは続けて c, g, h, j, s / u をうてばいい。
Wikipedia の Esperanto の項に書いてあった
sonĝi (うたう不定形)
しかし全然語彙を覚えてない件
こう定期的にモニタの色を気にしたりして、結局デフォルトに戻したりを繰り替えているけれど、何にあわせればいいのかわからない。
今日はなんとなく NVIDIA Contorol Panel からのキャリブレーションを実行してみた(マルチモニタの接続先を変えたので)のだけど、かなり今まで見てた色と違って怖い(ホントに恐ろしさを感じる)
ウェブ関連の画像を作るときは、むしろ積極的にキャリブレーションすべきじゃない気がするけど(世の中の人の殆どはキャリブレーションをしないし、そして安い液晶を使っている)、そういう考えも相まってどこにあわせるか悩む。
そしてついでに MacBook のキャリブレーションもしてみたけど、結構青い方向に補正された。うううううん。
うーん。結局入力/出力であってればいいんだから自分の使う範囲で色があってればいいんだよなぁ……
ウェブの画像作る時ってどうすればいいんだ。
あと疑うべきが多すぎる。モニタ自体(ハードウェア)、モニタプロファイル、モニタの設定、OS のドライバ設定、自分の眼。