L565 は気持ち悪いくらい評判いいですね。 最近出た 17" 液晶の L557 と比べても、 反応速度は遅いけど画質はまだ高いという話です。 あとは視野角も上なんだっけか。 動画中心なら L557 がお買い得、 画質重視なら L565 逝っとけ、というとこかな。 しかしそろそろ L567 が出そうだという噂もあるので油断できません。
19" の L767 もなかなかよさげですね。 なぜか 18.1" の L665 より安いですし。
買ってきたー。
表紙がかっこいいですね。いいないいなー (一言目がそれかよ)。
読んでたら自然と Perl を覚えたりしないかなー という黒い目論見のもとに購入。
4 章の「落とし穴」の後半は落し穴と言うより Tip 集っぽい。
ちょうど極貧のころに出たもんで買い損ねてたのでした。 ヤボ用で CGI が書きたくなったんで参考にします。
あーあ、ついに買っちゃったよ。 どうせ vol.2 と 3 も買うんだろうな。
いま思い出したんだけども、 このシリーズの Scheme 版が大学の図書館にありました。 購入して以来誰も借りてなかったらしく、 押してある貸し出しスタンプがぼくのだけと言う……。
こないだ SICP 読書会で教えてもらった本。 装丁がとても怪しい。
net/http.rb, pop.rb, smtp.rb を大改修しました。 protocol.rb が一気に半分くらいになってます。
昨日から日記のタイトルが変わっていることに いったい何人が気付いたことであろうか。
■
たかはし [title要素にあるタイトルは変わっていないような。
私は心の中で「あおきにっき つっこみすぎ」とか「あおきにっき つっこまれすぎ」と呼んでいます :-)]
■ kog [ああ、錯覚じゃなくて現実になってる!...(すいません)]
■
さかい [以前にどこかで見た、
「湯けむり温泉Scheme殺人事件
Lambda式と末尾再帰に隠された謎
カッコの付け忘れに刻まれた32年前の悲劇」
ってのを少し連想してしまいました。> 湯煙温泉殺人事件]
■ はら [っていうか、誰かがつっこんでくれるまで待てずにバラしてしまうところなぞまだまだ修行が足りません。:-)]
■ あおき [うっ……まったくその通り > 修行不足]
■
すぎむし [みっきー ≫ みっき ≫ みつき ?
:-)]
例外対応 cat
module Main where import System import System.IO import System.IO.Error main = do args <- getArgs case args of [a] -> catch (do cs <- readFile a putStr cs) (\e -> do hPutStrLn stderr ("read fail: " ++ ioeGetErrorString e)) _ -> do hPutStrLn stderr "1 arg must be given" exitWith (ExitFailure 1)
でもこういうことをやるなら明らかに Ruby のほうが短いわけだ。
unless ARGV.size == 1 $stderr.puts "Just 1 arg needed" exit 1 end begin print File.read(ARGV[0]) rescue => err $stderr.puts "read fail: #{err.message}" exit 1 end
■
nobsun [そんなにHaskellのコードが長いとは思わないけど。。。
main 以下なら(ってそんなのありか?)9行で一行短い。^^;]
■
あおき [いや、実は Haskell 版のは exit(1) が一つ少ないですし、
main より下だけ見ても wc で見ると分量が倍くらい違います。
Haskell
10 46 384 t
Ruby
10 25 173 tt]
■
あおき [インデントを数えるのは卑怯か。消しましょう。
~/c/test/haskell % sed 's/ *//g' t | wc
10 10 212
~/c/test/haskell % sed 's/ *//g' tt | wc
10 10 148
でもやっぱり 50% 増しですね。]
■
笹川 賢一 [Haskellで一番関心したのはラマヌジャンの
タクシーナンバーを求めるやつ。
1729=1^3+12^3=10^3+9^3
こういうのをエレガントに書けるのはHaskellだけ
だと思う。Schemeじゃこうはいかない。
SICPの2章に出てくるエイトクイーンもHaskell強し!
と思っちゃいます。]
最近の自転車の電池式ライトってスイッチがないんですよ。 自転車が動いていて、かつ暗くなると勝手に電気がつき、 自転車が止まるか明るくなると消える。 これが非常に不便なんです。
というのは、家はすぐ横が大通りなので、 常時大型トラックが走りまわっているのです。 深夜にガタガタ揺れることも多くなります。 そうすると夜、駐輪場に置いておくだけで、 振動を感知してライトがついてしまうわけですよ。 ライトがついてれば電池が消耗するわけで、 放っておくと二週間も保ちません。
単二 3 本が二週間で消滅されたんじゃ洒落になりませんから、 使わないときは電池を外しておくことにしてます。明らかに本末転倒です。
あー腹立つ! 俺は機械が半端な知恵を働かすのが大嫌いなんだ! 余計なことをするくらいなら黙って命令に従え! つーかスイッチ付けとけ!
そういえばワインバーグの本で『ライト、付いてますか』ってのがあったなあ、 と自転車のライトの続きで考えてみたら、
夜中、自転車のライトに話しかけているワインバーグの姿が 思い浮かんでしまった。
まつもとさんがッ!
tDiary をッ!
始めているッ!
(意味もなくジョジョ風の「ッ感嘆符」区切り)
どどどどうするんですか?
どどどどうもしません。
あっ、Link available にも入ってる!
楽しいRubyが重刷かあ。 数の掃けそうな初心者向け本とは言え、 やはり 1 年くらいはかかるものなんですね。
なぜか 10 分で X の画面が真っ黒になる。 DPMS (Energy Star) の設定は 40 分でスタンバイにしといたのに変だなあ……
と思ったら単にスクリーンセーバー (blank) が動いてただけでした☆ xset s off でオケー。
(2004-09-28 追記) これはRubyの正規表現に限った話です。
正規表現で「文字列の先頭」のつもりで「^」を使うのは間違いです。 バグです。誤りです。「^」は行頭であって文字列先頭ではありません。 いますぐ「\A」に直してください。
% ruby -e 'p /^a/ === "b\na\n"' true % ruby -e 'p /\Aa/ === "b\na\n"' false
「$」も同様です。 文字列末尾を表すのは「\z」です。 「\Z」でもありません。
% ruby -e 'p /a$/s === "b\na\n"' true % ruby -e 'p /a\Z/s === "b\na\n"' true % ruby -e 'p /a\z/s === "b\na\n"' false
「リファラ」を「リファ」って略しても一文字しか減ってないじゃん。
"Haskell: The Craft of Functional Programming" second edition, Simon Thompson, Addison-Wesley 1999
また買っちゃった……。
このまえ買った "Introduction to Functional Programming using Haskell" も内容は悪くないんですが、結局 Introduction to FUNCTIONAL PROGRAMMING であり Introduction to Haskell でないということを悟りました。 「/=」を「≠」と書いたりしてくれるのがそこはかとなくウザいし。
[ruby-list:37655] で str =~ re よりも re =~ str が正しいと言ったのは、 Ruby 言語とライブラリの設計者であるまつもとさんが 「そっちのほうが正しい (推奨する)」という旨の発言をしているからです。 であるからして Ruby においては正規表現を左にするのが正義なのです。 例によって Ruby の正義は予告なく変わる可能性がありますが、 変化の可能性は現在の正義を否定するものではありません。
ま、正義なんてのは所詮その程度でしょ。
■ ささだ [たしかruby本で見たような話(=~)だと思ったんですが(注意点として書いてありましたね)、その根拠はなんだろうな? と再考してみたという話でした。]
■ akr [prettyprint.rb みたいなのは Haskell のほうが楽だと思うなぁ。]
■
あおき [prettyprint が、と言うよりも、akr さんの考えかたが
(比較的) Haskell と親和性があるってことはありません?]
■
あおき [あっ、ちなみに、Haskellで解きやすい問題があるってのは
もちろん否定しません。というか、それは当然として、
ヘロヘロっとした問題を Haskell で解けたらいいなあ〜、
というのがぼくのスタンスってことです。]
■ nobsun [Haskell では toy program でも、いろいろ遊べてしまうので、そこまで止まりのことが多かったりして。。。:)]
■
笹川 賢一 [お騒がせしていてすみません。私は役に立つプログラムはほとんど書いたことがないものですから、、、(^^;;;;;
思考を表現する言語ってとらえるとまた別の面白い部分もあるのかもしれません。「知の限界」チャイティン著 のLispの話を読むと実行するためのものというよりも表現するための言語という感じがします。]
■ はら ["The Craft .." って7月に新版が出るみたい。]
■
nobsun [shiroさんが燃えたようです。:-)
http://shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Scheme%3aTaxiNumber&l=jp]
■
笹川 賢一 [Shiroさんのコード昨日見ました。もう一回
Schemeでの遅延評価について勉強してから
顔を洗って出直します。(^^;;;;;
ちなみに、元ネタです。知っている人も多い
と思いますが。
ラマヌジャンの話はホフスタッターのゲーデル
、エッシャー、バッハで読みました。
Haskellのコードは武市先生の関数プログラミングの論文集
の本で見ました。遅延評価がうまくいく例だと思った
記憶があります。いずれも、本は人にあげたり、図書館
から借りたものなので手元にはありません。]
■
はら [発見:
#!/usr/bin/env runhugs
-- Ramanujan Numbers:
-- c.f. http://www.ipl.t.u-tokyo.ac.jp/~onoue/pub/jssst01.pdf
module Main where
main = print (take 3 (ramanujan (\(a,b) -> a^3 + b^3)))
ramanujan f = [(x,y) | (x,y)<- zip s (tail s), f x == f y]
where s = fsort f 1
fsort f k = (k,k) : fmerge f [(k,b) | b<-[k+1..]] (fsort f (k+1))
fmerge f (x:xs) (y:ys)
| f x <= f y = x : fmerge f xs (y:ys)
| otherwise = y : fmerge f (x:xs) ys]
■
はら [[ruby-math:00852]でチャレンジ!
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-math/852
ふるって応募下さい。:-)]
■
はら [ごめん、[ruby-math:00851]でした。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-math/851]
あーあ、徹夜しちゃった。
という話とは全然かんけいないんですが、Subversion どうなんですかね。 CVS じゃ絶対だめということはないので無理に移行する気は起きないし、 原稿を預けるのはまだ恐いし……ということで当分は CVS かなーと思ってます。
……なんだ、結論は出てるんじゃないか。
ついに残ってしまった。 4/23 生産 4/26 賞味期限のもやし。食えるでしょうか? あ、食えるのは当然か。食ってどうなるかが問題だ。うむ。
うわああああああ! カビ! カビクラスタがああああ!
なんで味噌汁作り継続してるんだろう〜。
卵……ふたつあるから二つ入れようかな……賞味期限 4/21
味噌……これで最後だな……賞味期限 3/17
うわぁ〜。これは死ぬかも……。
うっ……。なんかアルコールっぽい匂いがする…… (発酵してる?)。
味噌の残りが少なすぎた。味が薄くてごまかせない。
そして卵が……。入れないほうがまだよかった……。 温泉のにおいとでも言いましょうか、えー、ようするにダメですこれ。 まじ終わってます。
とか言いつつ完食〜。ああ、本当にやめればよかった。 このまま三日くらい日記が途絶えたら間違いなくこれのせいですので。
5/7 ツッコミから再掲。
> たしかruby本で見たような話(=~)だと思ったんですが > (注意点として書いてありましたね)、その根拠はなんだろうな? > と再考してみたという話でした。
まあ本当のとこはまつもとさんにしか言えないわけですが。 強いていくつか根拠らしきものを挙げるなら、
とかですかね。
無事に目覚めることができました。 ありがとう、お天道様ありがとう。
■ ささだ [最近のVisualStudio(.Net)はモヤシの栽培にも対応したのかと思ってしまいました。]
■ なかだ [今度からrhg-tokyoには、賞味期限切れのものを持ち寄ってあおきさんにプレゼントするとか。]
■ ogino. [生ゴミ用のコンポストをプレゼントしたくなりますな。]
■ ただただし [ゴミにするのは、あおきさんの本意ではないのでは?]
■ ogino. [大人になるために形態を変えて水に流すだけではなく、土に還してあげることもおぼえるのです :-p]
■
あおき [やっぱり VisualStudio に見えますか。
昔「VisualStudio.福神漬」っていうネタがあったな……
(この日記で。)]
そういえば予告を書いたことはないような気がする。 明日土曜日に第 5 回ですよー。範囲は 12 章から。 特に混んでるわけではないので飛び入りでも余裕でいけます。
そういえば場所を書いたページって RWiki くらいしかないんですね。 新宿・曙橋の(株)タイムインターメディアの会議室を借していただいてます。 場所は以下のウェブサイトの地図を見てください。
ここ数日の成果。
% href Control.Exception Control.Monad Data.Char Data.List System.Directory System.Environment System.IO Text.Regex % href fold Data.List.foldl Data.List.foldl1 Data.List.foldr Data.List.foldr1 % href foldr Data.List.foldr foldr (f init xs) :: (a -> b -> b) -> b -> [a] -> b PRELUDE xs の最後の要素と init から始めて、 xs の後ろから二番目の要素と最初の返り値、 (以下略) % href Dat Data.Char Data.List % href Data.List ---- module Data.List !! ++ \\ all and any break concat concatMap cycle delete deleteBy deleteFirstsBy drop dropWhile elem elemIndex elemIndices filter find findIndex findIndices foldl foldl1 foldr foldr1 genericDrop genericIndex genericLength genericReplicate genericSplitAt genericTake group groupBy head init inits insert insertBy intersect intersectBy intersperse isPrefixOf isSuffixOf iterate last length lines lookup map mapAccumL mapAccumR maximum maximumBy minimum minimumBy notElem nub nubBy null or partition product repeat replicate reverse scanl scanl1 scanr scanr1 sort sortBy span splitAt sum tail tails take takeWhile transpose unfoldr union unionBy unlines unwords unzip unzip3 unzip4 unzip5 unzip6 unzip7 words zip zip3 zip4 zip5 zip6 zip7 zipWith zipWith3 zipWith4 zipWith5 zipWith6 zipWith7 % href Data.L cyc Data.List.cycle cycle (xs) :: [a] -> [a] PRELUDE リスト xs の最初と最後をつなげ環状にしたリストを返す。 (以下略)
とまあ、見ての通り Haskell 版の ReFe です。
プログラム書くのもかなり苦労しましたが、 リファレンスマニュアルを書くのも結構苦労しました (笑)
つーわけで、欲しい人はもってってください。
ぼくは別に賞味期限切れのものばっかり食べてるわけじゃないんです。 しかし賞味期限切れのときだけここに書いていると あたかも賞味期限切れのものばかり食べていると思われてしまいがちです。 そこで賞味期限切れでないもので何か作ったときもここに書こうと思います。
さっそくですが、今日の朝ごはんを作ります。 至ってノーマルな「白米 + 味噌汁 + あじ」という組み合わせです。 もちろん賞味期限は切れてなんか
……ああっ! (悲痛な叫び)
Amazon で『入門Emacs』を「興味がありません」にしたら vi の本を勧められた。
さらにフィードバックしてやったら、今度は RHG を勧められた。
RHG のワーキングコピーを整頓していたらこんなものを見付けた。
Rubyに対する他の言語の影響 Perl 哲学 変数名 メソッド名 next,redo Smalltalk オブジェクト指向 selfという予約語 Lisp ほとんどが式 lambda CLOS 特異メソッド mixin Sather class C<S include Flavor mixin Eiffel rescue retry CLU イテレータ Scheme xxx! xxx? Common Lisp :sym Emacs Lisp ?c "\C-c" Python def 例外名 awk sub gsub C 演算子 Icon === Java スレッド仕様 C++ ::演算子 Actor NilClass
こんなものどこから持ってきたんだろう。 ruby-list の古いほうかもしれない。
36 時間ほど寝てました。
いや別に寝込んだわけじゃなくてですね。 何もないのに 36 時間寝てたんです。 なんて罰当たりな。
でもそんなに寝るとさすがに寝るのが苦痛になってきて 「頼むからもう起きさせてください」っていう気分になれます。
ああ、なんと言うか、すげえ損した気分。
山下さんの指摘に加えて、既存のテキストから型指定を 持ってくるのが楽なほうが望ましいということに気付いたので、 リファレンスのフォーマットを微妙に変えることにしました。 どう変えるかはまだ考え中です。 とりあえずパースが楽で、シンタックスレベルで閉じてるやつ。
なぜ「早く福岡に帰りたい」を検索する?!
やっとのことで TMail 0.10.7 をリリースしました。
バグフィクスが中心です。
流れで setup.rb も改良したんですが、 そっちのリリースまではいけませんでした。 明日か明後日に。
今週も流量が少ないですね。 まあいいや、さすがに二週空くのはよくない。 明日 (日曜) やります。
これまでずっとローカルの CVS レポジトリでやってたんですが、 マシンが増えて面倒になってきたので家庭内サーバをたててそっちに 移しました。快適です〜。小さなユーティリティなんかを cvs update で全部一気に同期できるのでめちゃくちゃ便利ですね。 もっと早く導入すればよかった。
サーバは Sun の Ultra30 (UltraSPARC-II 250MHz) なんですが、 結構速いですね。やはり腐っても SCSI か。 目下の問題はどうやって夏を越えるかです。
気付かなかったけど前回のリリースから半年近くたってるのね。 まずい傾向だ……。1.0 はいつ出るんだろ。 というかなんで 1.0 じゃないんだったかな。
ああそうか、RFC2231 エンコーディングをちゃんと サポートしたら 1.0 にしようと思ってたんだ。 今はデコードはできるけどエンコードはできないからな。
何を思ったか、いきなり
# rm -rf /usr/local/bin/ruby /usr/local/lib/ruby
してしまいました。あせった。 lib まで消しちゃったもので uconv とか nora とか全部コンパイルしなおしです。 ちゃんと動いてるかな。
ありゃ、次の日になっちゃった。
ぬああ、5 月の日記が消えた!
しかもミスオペではないようだ (コマンドラインヒストリで確認した)。 いったい何が起こったんだ。 迂闊に ruby をバージョンアップしたのがいけなかったのか。 いやそりゃ実はちょっと eval.c 書きかえたんだけど、 いきなりそんなことになるか?
やばいな、もしかして動かしてるだけでどんどん消えていくんじゃないだろうな。 いや違うか、少なくともアップデートしないと変更は起こらないな。 update.rb まわりが変なんだろうか。 あるいは独自の SMTP → HTTP ブリッジのせいかも。
あ、データ自体はメールでコピーが残ってるんで復活できます。 これで安心して破壊テストがやれるってもんだ。うむ。
うーん、ruby の warning が出てるな。 split で文字列が使えなくなったやつか。 問題はないはずだけどとりあえず潰しておこう。
ちなみに eval.c は 1.430 に戻してあります。 なので、イテレータ絡みで変になってるわけではない、はず。
これが関係あるかもしれません。
% ruby -v -e 'p "aaa\n\naaa".split("\n\n",2)' ruby 1.8.0 (2003-05-17) [i686-linux] -e:1: warning: string pattern instead of regexp; metacharacters no longer effective ["aaa\n\naaa"] % ruby -ve 'p "aaa\n\naaa".split(/\n\n/, 2)' ruby 1.8.0 (2003-05-17) [i686-linux] ["aaa", "aaa"]
この影響で CSS 設定が変になったりしてました。
しかし表示のほうは動いてるので、 ウェブ経由で更新するとかの条件が加わると破壊されるのかもしれません。 ファイルが消えたときはかなり連続で「編集」してたので たぶんその影響があります。
ちなみになんで編集してたかと言うと、パーサがうまく働かなかったからです。 キャプションになるはずのところがどうしても段落になってしまう。 これもたぶん split が影響してるんじゃないかと思うんですが。
ruby 1.8.0 がインストールされているとして、 以下のプログラムをコンパイル・実行するとどうなるか答えなさい (5 点)
#include <stdio.h> #include <stdlib.h> #include "ruby.h" int main(int argc, char **argv) { #if RUBY_VERSION_CODE < 180 puts("Hello, World!"); #endif exit(0); }
~/tmp % gcc -I/usr/local/lib/ruby/1.8/i686-linux t.c -o t ~/tmp % ./t Hello, World! ~/tmp %
「#include "version.h"」を入れないとだめなんだよもん。
いま明かされる衝撃の事実!
~/s/src/ruby % grep -l RUBY_VERSION_CODE *.[cy] class.c hash.c string.c ~/s/src/ruby % fgrep -l version.h *.[cy] error.c version.c
直ったかな。
直ったようだ。結論。
やれやれ。
ところで全然関係ないけどこんな言葉を思い付きました。
……嘘つき。
完全復旧しました。 やっぱし開発版は開発版ですね。 気をつけましょう。
sh の
cat file | head -10
と Haskell の
head :: [String] -> [String] head xs = take 10 xs
はかなり似てる。
ム板のぬるぽスレにこれを張った人は潔く名乗り出なさい!
597 名前:デフォルトの名無しさん 投稿日:03/05/02 0025 raise 1442118444.to_s(36)
「……でも、そんなスクリプト、誰にでも書けるんじゃないの……? そんなものは何の証拠にならないわ」
(ざわ……ざわ……ざわ……)
「そ、そうだ! こんなもの誰にだって書ける! Ruby を知っていれば誰にだって……!」
「ところがそうじゃないんだ……」
「なにっ?」
「このスクリプトだけはそうじゃない…… 長さや複雑さは関係ないんだ」
「な、なにを負け惜しみを……」
「ふ……これを見ろ!」
(ざわ……ざわ……ざわ……)
「こっ、これは?!」
% ruby-1.8.0 -e 'raise 1442118444.to_s(36)' -e:1: nullpo (RuntimeError) % ruby-1.6.8 -e 'raise 1442118444.to_s(36)' -e:1:in `to_s': wrong # of arguments(1 for 0) (ArgumentError) from -e:1
「そうだ…… Fixnum#to_s に引数が導入されたのは 1.8 からなのさ! しかも cvs log によれば 36 を基数にできるようになったのは…… 2003 年の 4 月 14 日なんだ」
(?!)
「そ、そんな……変更からぬるぽスレの書き込みまで…… 二週間くらいしかないってことじゃない!」
「ああ。犯人は相当 ruby の変更に通じているに違いない。 だから間違いなく……犯人はこの中にいる! (どーん)」
我ながらアホなものを書いてしまった。
別マシンの Windows と Linux で クリップボードを共有できないもんだろか。
ぜんぜん深くない事情により三徹中です。そのため明日のSICP読書会は欠席します。
ちなみに原稿の締め切りとかですらないです。ただ勢いがついてしまって眠れないんす。
あー、馬鹿と呼ぶなら呼んでくれっ!
クリップボード共有デーモン。 Java で書くと言ったものの、 なぜか Java で書いたもの以外のアプリケーションと 同期してくれないので仕方なく Ruby で書くことにした。 Windows 側も最初の目論見通り C# でいってみよう。
とか言ってると結局全部の言語で書くことになったりする。
Ruby の TCPSocket と X イベントを同時に待つために
rb_thread_wait_fd(ConnectionNumber(display));
としてみたが、一瞬で終わってしまう。なぜだ……。
とりあえず諦めた (早っ)。
むがー! なんで生の select ではうまくいくんだあーっ!
あー! わかたー! シングルスレッドだからだ! シングルスレッドだから rb_thread_schedule がすぐ戻るんだ! くそう、そういえばこれは自分で RHG に書いたような気がする……
肝心のデーモン作りに着手した。 即座に謎の同期バグに遭遇。
プログラムの最初で stdout をフラッシュしとくと動く。 消すとブロックする。 print しても動いてしまうのでデバッグできない。
ちなみに肝心の内容はこれだけっす。
def main .... require 'clipshare/xclipboard' x_main end def x_main $defout.flush # I don't know why this statement is needed. content = ClipShare::XClipboard.get_string while true ClipShare::XClipboard.put_string content content = ClipShare::XClipboard.get_string puts "owner changed; content=#{content.inspect}" end end main
put_string は selection オーナーでなくなるまでブロックするので、 put_string が終わったら別のアプリケーションがオーナーになったということ。 そうしたら即座にクリップボードの中身をそっくり奪って自分がオーナーに復帰する。 puts してるとこで TCPSocket 使ってオーナー宣言してやれば完成〜。
とりあえず動いているようだ。
甘かった。クリップボードインターフェイスなんかより、 複数ホスト間で同期をとるほうがずっと難しいじゃないか。 かなり慎重に伝達経路をチェックしないとあっさり無限ループになるな。
とりあえず Linux(Ruby) → Windows(Ruby+C#) の push 実験は成功した。
To do
Windows 側は完全 C# 化した。 あとはクリップボードの内容変更を検出することだけど、 これはポーリングしてみるしかないのかな。 COM に触るとできたりするんだろうか。 ま、とりあえずはポーリングでいいか。 富豪で行こう。
そういえばプログラム初心者のころ、 polling と言われるとどうしても 温泉を掘るボーリングを思い浮かべてしまって困りました。 今でも poll(2) を見ると地盤に杭を打ちこんで ファイルディスクリプタを調べている様がありありと脳内に投射されます。
いや、DoA 写真集は買ってませんよ? (笑) Amazon にお勧めされた記憶はありますけど。
ただ、原因は GC の本じゃなかったと思います。なんだっけ。 中田育男の『コンパイラの構成と最適化』だったかな…… (ああ、やっぱマニアックだ)。
あと指輪物語の DVD とかハリーポッターとか、Matrix も何度か出ました。 スラドとかマ板で話題になるような奴が高確率で登場してくるんでしょうか。 早い話が、オタク層とみなされている、と。
別に否定はしないけどな。けっ!
メイド喫茶で思い出しました。 マシンが複数になってきてメール読むのが大変になってきたので、 簡単なウェブメールシステムみたいのを書いてるんですよ。 TMail のいい使用例にもなるしね。 するとやっぱまずは名前を決めないといけないじゃないですか! いい名前こそはプログラムの命じゃないですか! そこで、メール……ウェブメール……mail の付く言葉……と考えて
mai:lish
という単語が一瞬頭をよぎったんですが、 さすがにそれをやるとシャレ・ギャグの領域を遥か那由多の世界にぶっちぎり 危ない世界に足を踏み入れてしまいそうなんで全精神力をかけて思い留まりました。 ふー、危ない危ない。 (関連終わり)
参考:秋葉原におけるメイド喫茶・コスプレ喫茶の歴史
http://sotokanda.net/his_cafe.html
(from 俺ニュース)
んで結局名前は何になったのかと言うと。
秘密です。
※ それよか手前ちゃんとリリースするのかよ、あぁん? というツッコミは謹んで御遠慮いたします。
tDiary でツッコミを省略されないようにするには…… skel/*.rhtml の shorten を消すだけです。
ちなみに家の日記では単に shorten をやめるのではなく、 桁と行の両方で少しゆるめの制限をかけてます。
Win32 クリップボードにアクセスするにはどうしたらいいんだろう。 Win32OLE 使えばいいのかな? なんとなくそんな気がするな。 うー、でも Win32API 調べるの面倒だなー。とりあえず Google 検索してみよ。
「ruby windows クリップボード」でこの日記が一番上に来るのはいかがなものか。
お、そのものズバリがあるじゃん。nyasu さんの Ruby on Windows 経由で a.nakata さんの http://homepage1.nifty.com/a_nakata/ruby/。 クリップボード操作モジュールがある。これをもらって使うことにしよう。
わーい動いた〜。
おかしいぞ、Cygwin で動いてなぜ mswin32 で動かない!
うわあ、拡張モジュールが全然コンパイルされてない。やだなあ。
srcdir でやったらプラットフォーム独立なやつはコンパイルできた。 が、やっぱり win32ole その他肝心なやつができてない。
まあ、VisualStudio 6.0 と .NET Framework 1.0 と 1.1 が 一緒に入ってるうえに Cygwin の zsh からコンパイルしてるから、 混乱する要素はいくらでもあるな。 怪しげな要素をできるだけ省いてやってみよう。
なぜか msvcrt 7.0 とリンクしようとしてるな。
mkmf.log にこんなログがっ!
MSVCRT.lib(sehprolg.obj): fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください
困った……。
理由は不明だが -Zi (デバッグ情報を含める) を取ったら通った。
甘かった。ビルドは通ってもインストールが通らない。
% nmake DESTDIR="C:\Program Files\ruby" install : : : NMAKE : fatal error U1071: ターゲット 'C:\Program' の依存ツリーに循環定義があります。
らしい。 C:\Program ってことは Program Files がスペースで切れちゃってるんだろうな。 本質的に解決するのはあっさりあきらめて、 DESTDIR=/ruby でインストールしたあと Program Files\ に mv することにする。
Java 版は Windows 上のほうがうまく動いたりする。
X でも xclipboard を使うと内容を取得できることが判明した。 どうやら、使ってるプロパティが XA_PRIMARY ではないようだ。
ふふふ、クロスプラットフォーム・クロス言語な クリップボード共有サーバが見えてきたぜ! (こうして最初の目的を忘れていくのであった、まる)
うわあ、検索一発じゃん。
http://kt.zork.net/wine/wn19990718_4.html
CLIPBOARD アトムも同時にチェックすればいいのか。 面倒くさいなあ。
■
arton [nmakeはコマンドプロンプト上でデフォルトだと.NET Framework付属のやつが動きます。VC6のほうを生かしたい場合には、vcvars32.bat(VC6のどっかに入ってるし、多分PATHも通ってる)を実行してください。
#僕もこれで、変なASR作ってしまったことがあった……]
■
あおき [おおっ、ありがとうございます。
別srcdirまで含めてばっちりでした。
# RHGにも書いてあった…
# 自分ではまらないと覚えられないらしい。]
■
なかだ [たしかに、パスとかにスペース含めるとヘンな動きするかも知れませんねぇ。
Makefileとかはそういう可能性を伝統的に排除してた部分もあるので、チェックが行き届いてません。]
■ 笹川 賢一 [Scheme版て、湯浅先生の本ですかぁ?
誰も借りてないとは、、、。裕福なのかな?それとも。]
■ あおき [いやだって文系学部だけだから。]