セマンティックデザインというズボンとかカットソーを買ってきた。意味論的デザインという訳でいいのでしょうか。
三連休丸ごと使って、gnomeやらapacheやらmozilla-firefoxをemerge完了。inetdの負担を減らす為にもアンテナはローカルのcolinuxサーバーに持ってこようかな。
日本語環境はuim-primeを使いたかったが、PRIMEを起動するとシステムコンソールでうげほが言われて固まって落ちてしまう。そんなわけでuim+AnthyをVNC経由で利用。
今更過ぎて今更感があるけど、colinux凄い脳。
旅行に行くまで、残り10日。頑張るかねー。
HTMLやCSSに関して美術的な創作物としての著作権を主張しようにも、IE、Geckoエンジン、opera等で微妙に見栄えが変わってしまうこともあるので無理なんじゃないかなあ。(もちろんプログラムやデータとしての著作権は発生するけど)
実際裁判になった時に「IEでは美術的に優れたデザインであっても、firefoxやoperaで表示させたらテーブルもポップアップも崩れて表示されるので美術性も何もあったもんじゃない。」という時にはどうなるんだろう。まあ、結局はIEのシェアをもってきて、事実上の標準であるから…うんぬんという判断になりそうだな。
知的財産権と文字コードの話には深く首を突っ込むなと言われているので、この辺で。
関連URL
これまではこちらが指示した内容でプログラムを作成していたが、今日からは自分たちで設計を行っていたプログラムの作成を開始する。まず最初にこれまでに作成したHTMLファイルをJSPに変更しつつ、処理に必要なServletを作成する作業。
HTMLをFrontpageで作成していた学生が多かったので、FORM周りのタグがめためたな学生が多かった。あとはエンコーディング周りの処理が不十分で文字化けしていたりとか。
rast-2.0ではBSDに対応したとのことなのでwww.hsbt.orgでも入れてみようと作業開始。apr-configとBerkleyDB-4.2.52は$HOME以下に野良インストールしてある。
まずは何も考えずに公式ページのインストール方法を参考にしながらinetdのレンタルサーバー仕様でconfigureを
./configure --prefix=$HOME \ --with-rubylibdir=$HOME/lib \ --with-rubyarchdir=$HOME/lib \ --with-apr-config=apr-1-config \ --with-db-includes="-I$HOME/include/" \ --with-db-libs="-L$HOME/lib/ -ldb-4.2"
と実行。
すると、munedaさんの場合と同じようにconfigureで怒られる。
using -L/home/44/hsh0700/lib/ -ldb-4.2 to link Berkekeley DB checking Berkeley DB version... configure: error: 4.2.52 is required
なんでやねん。と色々調べているうちに、「そういえばlinuxではライブラリをインストールした後はld-configとかしないと駄目だったっけー。」と思い出す。BSDのそれはどうなっているのかよくわからないので、google先生に聞いて出てきたFreeBSD における共有ライブラリについてのメモに書いてあるようにLD_LIBRARY_PATHを設定してから再度configureを実行。
ビンゴだったらしく、今度はmakeを開始。すると
sed -e 's!%RUBY%!/usr/local/bin/ruby!g' > rast-db-convert
の部分で固まっている。そりゃ、処理対象のファイルが指定されてないもの、止まるよね。script/Makefileを調べると
sed -e 's!%RUBY%!$(RUBY)!g' \ $< > $@
とだけ書いてあった。他の部分のsedの処理は動いているのに、これが動かない理由はさっぱりわからないので、該当の部分を下のようにごりっと書き換え。
sed -e 's!%RUBY%!$(RUBY)!g' ruby-db-convert.in > $@
通ったっぽい。と思ったらexample/ruby/配下に存在するcreate.rb,register.rb,search.rbについても同じようにsedで固まってしまったので同じようにMakefileをごりっと書き換え。
ここまでやってようやくmakeが完了。make installも終了してtdiary-plugin付属のrast-register.rbを使ってインデックスの作成。
ruby rast-register.rb -p $HOME/hsbt.que.ne.jp/diary/ -c $HOME/hsbt.que.ne.jp/diary /usr/local/lib/ruby/site_ruby/1.8/i386-freebsd4/iconv.so: warning: defining Iconv.allocate is deprecated; use rb_define_alloc_func() Invalid argument rast-register.rb:114:in `initialize' rast-register.rb:114:in `open' rast-register.rb:114:in `transaction' rast-register.rb:198:in `initialize' rast-register.rb:249:in `new' rast-register.rb:249 rast-register.rb:255: [BUG] Segmentation fault ruby 1.8.2 (2004-12-25) [i386-freebsd4]
…[BUG]って、なんでやねん。深追いするのも疲れたので今日はここまで。
yamkさんの日記でDNSBLを使うリファラフィルタが原因で日記の表示が遅くなっているとの報告を見かけたので、リファラフィルタにtimeoutを利用するようにしてみた。
Exceptionを拾うときにResolvTimeoutとTimeoutErrorとでかぶってしまうような気がしたので、ResolvTimeoutで行っているDNSBL問い合わせの再試行処理の方をばっさり削除。これで少しは早くなるかな?
spamフィルタを改造するついでに
22:34 sho > Threadつかって同時問い合わせするともっとカッコいいぞ(笑)
と隊長から牙指令を受けたのでping.rbを眺めながら挑戦してみるも、上手くいかず。ソースはこんな感じね。
def black_domain?( domain ) threads = [] @spamlookup_domain_list.split(/\n/).each do |dnsbl| threads << Thread.start( dnsbl ) do |dnsbl| begin timeout(5) do address = Resolv.getaddress( "#{domain}.#{dnsbl}" ) return true end rescue ResolvError rescue TimeoutError rescue Exception end end end threads.each {|t| t.join } return false end
どの時点でreturn trueをすべきかってことが問題なんだけど、さっぱりわからず。ぬーん、Threadはもう少し修行しないとだめだなー。
この辺は次回に続く。
コミットする時に同じディレクトリにあるゴミファイルまでコミットしてしまった。すぐにcvs removeしたけど、こんなポカミスをするなんて、やっぱ疲れてるのかなー。
って、どこかにあったりしないかな。
今って、KaMailV3を使っているんだけど、いろんなメールアーカイブをインポートしているうちに重複メールが大量発生してしまって嫌な感じ。
Message-IDとかで判別して削除するスクリプトとかを自作するのが早いのかなあ。
とか書いてるうちに該当の Ruby スクリプトを見つけた → [net] ruby-talk溢れまくり - A Strolling Programmer (2004-02-10)
会社で探していた時には見つからなかったのになあ。明日適用しよう。
この三連休は去年に一度行ってセグウェイを満喫した十勝千年の森にもう一度行くことにした。このセグウェイツアーは草原コースと森コースの二つがあって森コースは草原コースを体験してからじゃないと参加できない仕組み。
オレはレンタカー派なんでこの日はプリウスを借りて札幌から十勝へ爆走。プリウスははじめて乗ったんだけど、カーナビや各種車載システムといい、ハイブリットカーの仕組みといい、色々すごいねえ。
移動自体は朝の8:00くらいに出発して12:30くらいに到着。夕張付近まではご機嫌に進んでいたのに、日勝峠に差し掛かったあたりで濃霧に遭遇してしまって、十勝に下る道路は鈍行になってしまった。
到着後はさくさく手続き*1を進めてから、セグウェイとご対面。今回のガイドは草原コースでお世話になった方ではなく、自称 No.2 の福井さんという女性の方だった。まず最初の10分くらいで起動方法や簡単な操作の思い出し運転をこなした後に森へ突入。どんな感じかはニコニコ動画を見てね。
草原コースは淡々とセグウェイの乗り方中心だったんだけど、森コースは山のガイド中心だった。次の日の小学生向けクワガタ教室の仕込み(蜜を塗った場所)を確認したついでにクワガタを発見したり、モズやキツツキを見つけたり、生キャラメルとカシワ茶のおやつタイムがあったり、花や木の説明をしてもらったりしつつ、最後に白樺の植樹体験をしてからガイドツアー終了。前回も楽しかったけど、今回もホントに楽しかった。2時間があっという間だし。
ガイドの福井さんによると、セグウェイツアーは好評で昨年から始まって森コースを体験した人も増えてきたのでそろそろ新しいコースを検討中とのこと。ただ、あまり人が増えすぎてもガイドの人手が足りなくなってしまったり、肝心の森の維持管理が大変になってしまうのが悩みどころっぽい。千年の森のような啓蒙施設の場合この辺は難しいね。
*1 傷害保険とかその辺
十勝千年の森ではしゃいだあとは帯広市に向かって、駅前にあるぱんちょうで豚丼をリベンジ。前回は入ろうと思ったらすごい行列であきらめたんだけど、この日は17:00前に行ったのですんなり入ることができた。
ぱんちょうの豚丼は炭火の香りが実に香ばしくて大変おいしゅうございました。
この日の宿泊場所は昨年と同様に十勝川温泉。ただし、ホテルは富士ホテルではなく近くにある笹井ホテル。笹井ホテルは悪くはなかったけど、良いところも特筆するほど無く、ふつーのホテル。
なんだろうなー、昨年の富士ホテルの方が結構良い感じの家族風呂があったり、布団が羽毛でふかふかだったりと印象が強かったのが原因だろうか。
毎度おなじみ、箇条書きメモ
最後にたださん、角谷さん、喜多さん、鈴木さん、かずひこさんに挨拶をして帰ってきた。
思えば RubyKaigi2009 に参加しようと思ったのは、昨年の SapporoRubyKaigi01 に島田さんから誘われて参加して Ruby 1.9 の対応の話を RubyKaigi2009 ですると宣言したのがきっかけでした。
おそらく島田さんからの誘いが無ければ、SapporoRubyKaigi も RubyKaigi2009 も家でustで満足という生活を送っていたと思います。
RubyKaigi2009 というすばらしい"場"を作ったスタッフの方、発表を聞きに来てくれた方、そして tDiary に携わっている皆さんに感謝します。ありがとうございました。
二日目は大分に向かうことにした。まずは博多から高速道路を利用して八幡神社の総本山という宇佐神宮までドライブ。宇佐まで高速道路が続いているので特に迷うことなく到着することができた。
宇佐神宮はノーマークだったんだけど、太宰府天満宮よりだいぶよかった。やっぱり参道がよくできている神社は雰囲気も良いね。ここでは二礼四拍手という特殊なお参りを勧めているらしくその流儀にしたがって参拝するなど。
宇佐神宮の後は阿蘇方面に移動して日本一の高さと長さという九重"夢"大吊橋に行ってきた。ここに行く途中の山道の狭さと勾配がだいぶひどくて、到着するまでに疲れてしまった。
橋そのものは特筆することはないんだけど、橋を渡った先にあった白鳥神社の方がよかったなあ。白鳥神社は無人の神社なんだけど、拝殿の彫刻を守るために屋根がもうけられていたり、ちゃんと清掃もされていて雰囲気もよかった。ここに行く機会があったら白鳥神社まで足を伸ばしてみた方が良いと思います。
つり橋の後はひたすら峠道を走って黒川温泉へ。ここは混浴と女湯という分類なのが伝統というか決まりっぽいんだけど、結局混浴には男しかいないんだよね。
ここでは1200円で3件の温泉に入ることができる手形を買って入浴してきた。温泉自体はガイドブックに書いてあるようなものよりは、ちょっとがっかり感が高いかなあ。ふつうの温泉という感じであった。
温泉街全体としての雰囲気はとても良いけど、運転していくにはだいぶ大変なのでその辺も考慮してのルートになっちゃうかなー。
RubyKaigi2011 4日目。114回目のmeetupはRuby会議では話さなかったRubyの深い話をしてもらってコミッタに絡んでもらうというのコンセプトに開催した。場所は笹田さんの研究室をお借りできたので40人くらい参加することができたかな?
発表内容は asakusa.rb のサイトを見てもらうとして、今回一番良かったのは JRuby の Tom と浅里さんが CRuby のコミッタと性能やスレッドセーフについて話していたことだなあ。これだけでも開催した価値があった。他にもRuby会議では時間切れで話す機会が無かった人やコミッタ、海外ゲスト同士が沢山しゃべっていたようなので良かったんじゃないかな。
ピザとビールをけっこう用意したんだけど、参加者の多くが参加費を置いていってくれたおかげでasakusa.rbメンバーが自費を使うということはなかったのも良かった。ありがとうございました!
来週からはいつも通りの asakusa.rb シフトだと思います。
JRuby ユーザー会が開かれるというので、JRuby を使って Ruby のコードを書くときになれている人はどうやって Java 側のクラスを調べたりメソッドを使っているのかということを聞きに行ってきた。結局、集まっているのは Java で JRuby を作っている人が多かったというオチで中々困った結果になったんだけど、それでも jirb を使えばそれなりに情報を引っ張ってこれるということがわかったので良かった。
ユーザー会では他にも @yokolet さんが RailsConf や JRubyConf で何をしてきたかというのを聞いたり、札幌 Ruby 会議に向けて色々話をしたり。@muga_nishizawa さんから TD 社の話を聞いたり。
中々楽しい会だったので次回も参加したいと思います。
しばらく討鬼伝をやっていてお休みしていたけど再開。逆さヒルズをクリアして市ヶ谷に行くところ。だいぶクエストを放置状態だったのでちまちま消化したりしているところ。
Lv は 52 まで上がってしまったけど、悪魔がイマイチレベル低いままごり押しというのを続けているので、そろそろクーフーリンくらい作ろうかなあ。
毎年何処かに行っているヨーロッパ旅行は、オランダ、スペイン、トルコと悩んだ結果スペインにした.
スペインへは羽田からミュンヘン経由のマドリードという空路で、所要時間は18時間くらいという中々ヘビーな移動だった. ただ、今回は何故か羽田からミュンヘン行きの便がビジネスクラスにアップグレードされたので、大半の時間は楽に過ごすことが出来た。ビジネスクラスはほんと凄いなあ。
ビジネスクラスは横になって眠れるくらい広くて、機内放送用のディスプレイもかなりでかい.
ご飯はこんな感じ.エコノミーの機内食って、良いから早く食べて片付ける、みたいなものだったけど、ビジネスクラスはだらだらゲームしたり、コード書いたり、映画見ながら、テーブルに食事を持って来てくれるというスタイルだった.これは凄い UX だ.
とあるサービスの Rails 3.2.x を 4.1.4 にしたり、Software Design 8 月号を読んでいるうちにミュンヘンに着いたので、ルフトハンザのラウンジで休憩。この時点でJSTでは 0:00 を超えていたので、かなりぐったりしてきたけど気力を振り絞ってマドリード行きへ乗り換え。
マドリードへはミュンヘンから 3 時間弱というところ、baggage claim がバルセロナ着という全然違うところから出てきていきなりずっこけた。空港から宿泊するアパルタメントまでタクシーで移動してからも、ホテルの自動チェックインの機械がぶっ壊れていて結局レセプションで待っていてくれた人にお願いしたりと初日からやれやれな状態が続いたけど、無事到着。
部屋はこんな感じ。電気もインターネットも快適で大変便利。
旅行最終日(になる予定だったのだけど、顛末は最後で)は荷物のパッキングは全て終わらせてから漫画博物館とブリュッセル東部にあるサンカントネール公園と博物館周辺へ行ってきた。
漫画博物館はオランダのキャラクターの紹介中心で、なるほどわからん、という内容が多かったのだけど、これは絵画に比べてストリート吹き出しによるセリフのコンテキストが多分に含まれていることからよくわからない感が高いのかもしれない。
この後はトラムに乗ってサンカントネール公園へ。ここはEUの本部の裏にある公園で、門はベルリンにあるブランデンブルク門に似たような作り。まずは右にある自動車博物館に行って、100年前から10年ごとのヨーロッパの車を見たり。
次は逆側にある軍事博物館へ。ここではベルギーの中でもワーテルローの戦い中心の軍事に関する展示が行われていた。ここを見学途中にふと Nexus をみてみたら、Google Now が今日乗るルフトハンザ便が欠航、という表示をしてきて「あれ、これに乗れないということはミュンヘンの乗り継ぎにも乗ることができないし、日本に帰れないのでは???」ということに気がついた。
妻と一緒に ANA のドイツ窓口に電話したけど、一向につながらないのでしょうがなくホテルのロビー戻ってから、WiFi を入手してから対策を開始。結局、ANA の窓口で聞いても、この日の羽田便に間に合わせるようなミュンヘン行きの便はもうなく、ANA としては何もできないので振替え便についてはルフトハンザに交渉してくれということらしい。とほほ。
もうこの日に帰るのは諦めて、ブリュッセルのエアポートホテルを手配してから、空港でルフトハンザのカウンターで振替え便について問い合わせしたところ、翌日の昼に出発することはできるというところまでは確保して終わり。
こういう時にコンシェルジュサービスでもあると便利なのかなあ。その日の数時間前にいきなり欠航が決定とか辛いよう。
今日は六本木にある Pivotal さんのオフィスで開催。今日は大きなトピックは特になく、積み上げている issue をひたすら見ては Matz がコメントを書いたり、あれこれハンドリングするというもくもくした日だった。
RubyKaigi まで残り1ヵ月とちょっとという感じなので、何かを仕込むなら残り一か月くらいでやらないとね。
Unable to install Ruby on Fedora 26 · Issue #1115 · rbenv/ruby-build という issue が来たので vm 作って調べてみたら確かにビルドできなかった。
Fedora ではないけど gcc7 で問題が起こるというのは 2.4/trunk では解決済みだったので関連コミットをコネコネして 2.3 向けのパッチを作っておいた
次の 2.3 のリリースでバックポートされるだろうけど、それを待てない人は ruby-build の issue にある通り
rbenv install -p 2.3.4 < <(curl -sSL https://bugs.ruby-lang.org/attachments/download/6655/ruby_2_3_gcc7.patch)
みたいにやればビルドできると思うのでそれで頑張ってください。
読みながら、「これどこかで読んだことあるよなあ...」と思い出したら、はてなブックマークにたまに出てくるコミックDAYSの無料で読める1話みたいな感じだった。読んだことある話がコミックで出てくるとすごくがっかりするのはなんだろう。
あと、アニメもなんか違うんだよなあ...というのも最近のもやもやポイント。
読んだのは今年台湾に行く前だけど記録を忘れていた。
台湾といえばマンゴーをはじめとする果物やかき氷だったり、豆腐や豆を用いた甘味が中心だけど、この本を読むとローカルなお菓子や食べ歩きできるものを多数知ることができるので、台湾に行ったときの散歩が楽しくなる感じでよかった。このシリーズ3冊を読んで食の幅を広げておくとまず大丈夫っぽい。
休暇の時に、相手に休みだよ、って伝えるのに slack ステータス変更とか、カスタムレスポンスより display_name を変更した方が効果的だと思ったのでスクリプト書いてシュッと変更したり戻したりできるようにした。
#!/usr/bin/env ruby
require "slack-ruby-client"
Slack.configure {|config| config.token = ENV["SLACK_API_TOKEN"] }
client = Slack::Web::Client.new
client.auth_test
uid = "your_user_id"
display_name = "hsbt"
if ARGV[0] == "on"
display_name += "-#{Time.now.strftime("%m%d")}休暇"
end
client.users_profile_set({:user => uid, :profile => {:display_name => display_name}.to_json})
非常に雑なのだけど、 script.rb on
とかやると slack の display_name が hsbt-0719休暇
などに変わるので at メンションしようとしたらこの文字列が出て「休暇なんだな」ということが相手に伝わる。表示に休暇と出ても重要なことならメンションするし、必要なら反応するのでこんな感じで。
東博特別展の三国志の賛助会員向けの夜間展示が開催されていたので見てきた。オーディオガイドが何故か吉川晃司で、吉川英治の小説の一節の朗読とか入ってて渋くて良かった。展覧会の挨拶にあるように、イメージで作られた三国志の世界について、歴史的な資料をもとに2-3世紀の人たちの暮らしや文化を見ていくという内容でなるほど感が高かったかなあ。
特別展の後は本館に移動して、常設展をふむふむ眺めてから帰宅。
Echo を Bluetooth スピーカーとして使っているのだけど、再生するたびに「iPhone XS Max で再生します」というような声が気に入らないので、Google Home(Nest) の方に変えたついでにステレオ再生にするスピーカーグループという機能を使ってみた。
常にステレオモードにするには、一度接続した後に iOS などの Google Home アプリなどからスピーカーグループに切り替える必要があるけど使いたいときだけ有効にするという用途なのでまあまあいいかな。Echo のデバイス名を宣言する機能を無効にする方法を知ってる人がいたら教えてください。
一度接続した後に iOS などの Google Home アプリなどからスピーカーグループに切り替える必要がある
上記について znz さんから、「デバイスの設定からデフォルトのスピーカーをスピーカーグループにすれば切り替える必要ないよ」というのを教えてもらったので設定したらだいぶ快適になった。ありがとうございます。
いつ買ったかも覚えてないくらい前の SANYO が存在していた頃のeneloopが充電も何もできなくなったので、全部捨ててしまって EBL の充電池に置き換えてしまった。
最近は単四がほとんどでたまーに単三があるかな、という感じになってきたので時代も変わったなと思う。子供の時は単一を使うようなものは結構あったのになあ。
EBL 単4形充電池 充電式ニッケル水素電池 高容量1100mAh 8本入り 約1200回使用可能 ケース2個付き 単四充電池
EBL
¥1,131
1m くらいの LAN ケーブルが必要になったので Prime Day で Cable Matters の 1m LAN ケーブルを買った。ケーブルなんてどれも同じ〜ではあるけど、最近は値段も機能性もケーブルといえば Cable Matters ということにしているので、なにか不都合がでるまではこれで。
Cable Matters 5本セット Cat6 LANケーブル ウルトラスリム 短いLANケーブル 0.9m 最大550 MHz
Cable Matters
¥1,299
昨年行った瀬戸内国際芸術祭2022の総括としての図録が発売していたので買って読んだ。
大地の芸術祭の本とほぼ同じ構成で、芸術祭の対象となっているエリアの展示物と作家のステートメントや作品のコンテキストを網羅しつつ、芸術祭全体の総括や統計情報を掲載するという内容だった。
自分は直島と香川しか行けなかったけど、他の島の展示全体を眺めるとまだまだ行く場所は多いなあと感じる。次回はもう少し余裕を持ってあちこち行けるといいのだけど。
7月の開発者会議で URI ライブラリのパーサーを RFC2396 から RFC3986 にしたいというのがあり、とりあえずやってみるか、ということでやってみた。
提案者は build
メソッドだけ変えるという話をしていたけど、それはだいぶチグハグな挙動になると感じたので、DEFAULT_PARSER
として定義され使われている箇所全てを RFC3986 に対応させた上で、RFC2396 な挙動を使いたい人は
URI.parser = `URI::RFC2396_PARSER
として戻せるような機構も入れておいた。なお、RFC3986 は _
を含む URI をパースできるというのが大きい違いらしい。
このコードを書いている途中に、2つのパーサーの中で微妙に非互換がある箇所を見つけたのでそこをどれくらい、どのライブラリが踏むか次第だなあ。なお、ruby/ruby
にマージ後に Bundler のテストが失敗するので深追いしていたら Mock サーバーを起動する箇所で Sinatra の依存である mustermann というライブラリが見事にその非互換を踏み抜いていたので pull-request を投げておいた。
https://github.com/sinatra/mustermann/pull/138
ま、リリースまでに見つけたらぼちぼちとやっていく感じで。なお、URI に関する RFC 的なものは今は https://url.spec.whatwg.org/ で定義されているらしく、これはインクリメンタルにアップグレードするもののように見える。これに追従するパーサーを用意するのは大変な気もするけど、誰かやってくれたら URI ライブラリのデフォルトにしても良いと思うので興味がある人はよろしくお願いします。
数時間を超えるドライブをするときに、クーラーボックスという名の発泡スチロールの箱の中に佐藤水産などの冷凍食品のギフトを買ったときについてきた保冷剤を再利用して詰め込んで、お茶などを冷やすのに使っていたのだけど、お金を出して専用の用途のものを買ったほうがいいのでは?となったので、Amazon のセールの時に一番売れているっぽいブランドのやつを買ってみた。
まずは冷やしてから、ということで説明を読むと完全に冷凍させるのに 18時間を要するという時点で驚いたけど、完全に凍らせた状態になってから素手でで触ると冷たいというよりも痛いというレベルで冷えてて感心した。ちゃんと説明には、熱冷ましなどに使うと凍傷になるから絶対に禁止、というようなことが書いてあってなるほどね、となった。
バッテリー付きのミニクーラーなども検討していたけど、ひとまずはこれで十分そう。
【amazon.co.jp限定】ロゴス(LOGOS) 保冷剤 倍速凍結・氷点下パックL・2個パック 長時間 防災 日本製
ロゴス(LOGOS)
¥3,034
# Daisy-web [>firefoxやoperaで表示させたらテーブルもポップアップも崩れて表示されるので いくらなんでも、それは回避し..]