トップ 最新 追記

日々の破片

著作一覧

2015-01-02

_ Ruby-2.2.0 (x86) パッケージ

ActiveScriptRubyの2.2対応(というよりも、Rubyのグリーンスレッド時代の対応やIE用のセキュリティ処理などの削除、64ビットWindowsへの対応、Win32OLEの機能利用などを行ったバージョン)がとりあえず動作するようになったので、Ruby-2.2.0 (x86版)をリリースします。

ダウンロード

x64版も追ってリリースします。

RScript22(ActiveScriptRuby-2.2)では、多くの修正が行われています。

・現時点での機能ダウン

-IActiveScriptErrorの未サポート(Rubyの例外で実行が中止されます)

-ISupportErrorInfoの未サポート(Rubyの例外で実行が中止されます)

・修正点

-独自のシングルスレッドアパートメントへRubyを閉じ込めるのを中止(RubyがWin32ネイティブスレッドを使うようになっているため、意味を失っている)

-IObjectSafetyやIServiceProvidorを利用したIEとのセキュリティ昇格/降格への対応を完全に排除(IEへの組み込み自身を不可能とした)。HTAを使ってください。

-独自のWIN32OLEEX(< WIN32OLE)の削除。上記のセキュリティネゴシエーションを排除したため不要となった

-Rubyizeの独自実装をWin32OLEのコールバック用オブジェクトを利用するように修正(ちょっと無理くり)

-Win32OLEが新しいRubyの型付きDATAを利用するようになったので、オブジェクトの確保方法をData_Make_Structからrb_obj_allocへ変更。

-一部機能のスクリプト化(vendor_ruby/2.2.0/activescript.rbへ外出し)

などです。

例によって、winpathやsudorubyなどのおまけや、DXRubyの同梱は行っています。

_ Ruby-2.2.0への対応

・DLの削除へ対応

require 'dl/*' をrequire 'fiddle/*'へ修正

DLをFiddleへ置換

例)winpath.rb

・rbconfigからConfigの削除

ConfigをRbConfigへ置換

例)setup.rb

大体、この程度。


2015-01-03

_ Ruby-2.2.0(x64)パッケージ

x86版に引き続きx64版のMSIをリリースします。

ダウンロード

僕の環境には64ビット版のDirectXのライブラリが欠けているためDXRubyは作成できないので、x86版からDXRubyを抜いたパッケージとなります。

ただし、こちらはriドキュメントを完全に含みます。

-現在わかっているRScript22のバグ(x86版も同じ)

・Rubyizeはインスタンス化不可能

(1.0以外のバージョンのTypeLibを利用する場合、IDispatchImplテンプレートにバージョン番号を明示する必要があるのだが、完全に忘れていた。もっともそれ以外にもオブジェクト変換にバグがあるのでいずれにしても動作しない)

なお、x86版とx64版の両方をインストールした場合、mshta.exeはx86版を優先するため(Windows\syswow64\mshta.exeの起動を優先)x64版のOLE Viewer(HTA)は実行されずにx86版が実行されます(右下のRUBY_PLATFORMの表示で確認可能)。

64ビット版のHTAの動作を確認したい場合は、明示的にc:\windows\system32\mshta.exe (フルパス).htaと、x64版Rubyコンソールから実行してみてください。


2015-01-04

_ Rubyize

Ruby-2.2.msiRuby-2.2-x64.msiをそれぞれ1.0.1に更新しました。

修正点は、RScript22のRubyizeを動作可能にしたことです(Ruby本体には関係ない)。

Rubyizeというのは、以下のVBScriptの例を見るとわかるように、他のCOM呼び出し可能なプログラミング言語に対してActiveScriptRubyを介在させて、Rubyのクラスライブラリを利用可能とする機能です。

' VBS uses ruby Regex
'
Set r = CreateObject("ruby.object.2.2")
WSH.echo r.RubyVersion  '=>2.2.0-p0 (x64-mswin64_100)
Set reg = r.erubyize("/\Azb(\d+)(a?)C/")
Set m = reg.match("zb321aC")
If Not m Is Nothing Then
  group = m.to_a
  WSH.echo "match:" & group(0)      '=>zb321aC
  WSH.echo "1st group:" & group(1)  '=>321
  WSH.echo "2nd group:" & group(2)  '=>a
End If

注)RScript22.dllのFile Veresionを更新していなかったため、既にインストールしている場合、アンインストールせずにインストールすると、RScript22.dllが更新されません。
(やっと、MSIのバージョンとインストールされるファイルのバージョンの関連付けがわかった。MSIは既存のファイルと同じバージョンであれば置き換えしないように作られているのだ。それでファイルの内部バージョンを変えていないと、バージョンを更新したMSIをインストールしても古いファイルが残る)

本日のツッコミ(全1件) [ツッコミを入れる]

_ 通りすがり。 [はじめまして、 xpにてActiveScriptRuby2.2をinstallし、gem listと打ったら こちら..]


2015-01-17

_ 魔界都市東京その1(高田馬場1丁目-諏訪町)

先日、妻がぐるなびかなにかで見つけて来た高田馬場の鰻屋へ行ったのだが、どえらくおもしろかったので記録。

鰻屋そのものは、関西風とかで蒸さずに炙っただけの鰻重を出すのが特徴とかで、それを頼んだら、なるほどかりかり香ばしくとてもうまかった(妻は普通のやつだったが、こちらも美味しい)のだが、それは本題ではない。

車で行って、適当にTimesとか見つけて止めるつもりだったのだが、これまで何千回も早稲田通りや理工学部通り(じゃないかな? 地図見ると理工学部から離れているから違うかも)や明治通りを走って(正確には当然、ビッグボックス脇の戸山公園へ抜ける道も通りまくっている)いるわけだが、四角で囲まれたその中、つまり高田馬場一丁目や諏訪町には足を踏み入れたことはなかった。

(これも正確ではない。諏訪神社と裏の公園(鎖で作ったでっかなジャングルジムみたいなのがある)には、子供が子供だった頃、時々連れて行っていた)

高田馬場一丁目と諏訪町の四角

が、車で入ったらびっくり仰天。とてつもなく、山あり谷あり、まるで人生みたいだ。しかも地図の通り、そこら中に空白がある。駅のすぐそばの超一等地なのに。

そんなことになっているとは知らず、鰻食いたさに車を進める。

本来早稲田通りから菱川ビルのところで内部に入れば良いはずが、つい通り過ぎて(というか一方通行かどうかわからないからだ)、最後のチャンスの戸塚第二小学校のところも抜けてしまったために、ビッグボックス側のヴァイオリン店のところで入り込んだ。おそらく19番地のところにTimesかそのタイプの駐車場があったので一度止めて歩き出したらはるかに安い大き目のやつを発見(竹見Corpの手前だと思う)。妻を残して、車に引き返したのだが、一方通行じゃん。

それで一方通行が導くままに一度理工学部通り(ではない気がますますして来たけど)に出て、今度はセザール高田馬場を越えたところで内側に入った。

で、どこかで左に曲がらないと内側へは行けないわけで、昭和の香り以外のなにものもしない下宿屋形式の建物の角を左に曲がってびっくり仰天した。

とにかく長い長い一本道で見晴し最高なのだが、細い。見晴最高なのは、まっすぐ谷底に下りてまた山を登っているからだ。が、こんな内陸に驚くほど高低差があるのがまず信じがたい。

ナビで道路の存在を見て車で入り込んだおれがバカだった。

だが、行けないわけではなさそうだ。事実、向うから軽トラックがやって来る。というかすれ違えるわけがない。無理矢理脇の店の手前のくぼんだ場所に入れてやり過ごしてから進み始めたが、暗雲たちこめまくる。

結局、数ブロック進んでから、延々とバックで戻ることになった。もしかすれば通り抜けできたかも知れないが、そんな蛮勇は振いたくはない。

で、結局、明治通りに出て早稲田通りから、正しく入り直して、Times(の一種)に車を停めたのだが妻がいない。待ちくたびれた妻は間違った方向へ進んでいたのだった。というか、なぜ店とは逆方向へ進んでいたのか。

といろいろあったが、無事に到着。

愛川

が、まともな鰻屋なので待ち時間がかかるのは当然で、キャパを完全に見積もり損なった。というわでけで店はすさまじく混んでいて予約なしの二人連れは、さくっと店主に断られたが、「出るよ」と若い2人連れが勘定に行ってくれたので助かった(ありがとう!)。というわけでこちらも食い終ったらさっさと会計済ませて出たのだった。

鰻はうまかったし、町はおもしろかったので実に楽しめた。


2015-01-18

_ ぼくらのよあけ

病院の待合時間を利用してぼくらのよあけを読了。

良い作品だった。相当気分が良い(気分が悪い分もあるのだが、それも作品の良さの範疇だ)。

元々、誰かがアフィリエイト経由で購入したのでつられて購入したのだがなかなか読む気になれずに放置していたのを、先日1巻を読んでえらくおもしろかったのだが、なかなかまとまった時間が取れず(つまりぐいぐい先を読んだほうが楽しめる作品となっていて細切れな読み方には向かない)2巻はさらに放置していたのを、病院の待合時間があったので読了した。

(それにしてもWindows RT+Kindle Cloud Reader+LTE(時々3G)テザリングで2巻の読了に2時間以上かかるとは思わなかった。内容が濃いというのもあるが、先読みはしているように見えるがそれにしてもページめくりが重い。というのを除けば、Surface RTというのはFlash(だと思うのだが)も文句なく使える点で実は相当良い端末だと思う)

舞台は2030年代中頃、ちょっと先走った家庭にはオートボットが導入されていてスケジュール管理から家族間コミュニケーションまでいろいろやってくれることになっている。

唐突に思い出したが、数年前、子供に「大学に入ったらアンドロイドを買ってやる」と当然スマホのつもりで言ったら「早過ぎない?」と返されて、「大学生なんだから早過ぎるってこたないだろう」と言ってお互い「?」となったのを思い出した(結局iPhoneになったけどな)。どうも、アンドロイドが後ろからついて来る様子を想像したらしい。ぼくらのよあけが2030年代だから確かにその想像だと早過ぎる。

舞台は団地。小学高学年の男子3人組が主要な登場人物。親(この視線がうまく書けているのでおれが読んでも子供だまし感が無いとも言える)や地域社会、1人の子供の姉とその同級生たちなどもからみながら、1万年かけて地球まで来て不時着した宇宙船を帰還させるための日常的冒険を描いた作品。1万年と親の世代からの20数年、家にオートボットがやってきた1年くらい、さらに未来へ40年といった時間感覚を、たかだか10年ちょっとしか生きていない子供たちが実感しながら、コミュニケーションとは何か(LINEいじめの2030年版とかを含めて)を経験していく様子を2冊分の作品に凝縮している。

と、要約すると、まさに物語は王道。

ちょっとテーマ負けしていたり(最後に数ページで語ってしまうのは唐突過ぎるが、しかし悪くなく、むしろ感動的だ)、どうも物語の回収にしくじっているようなところもないわけではないが(もちろん、そこは読者に考える余地を与えたのだという言い方もできる)、実に良い作品だった。

ぼくらのよあけ(1) (アフタヌーンコミックス)(今井哲也)

ぼくらのよあけ(2) (アフタヌーンコミックス)(今井哲也)

(実体本のほうは2巻が品切れでひどいことになっている。電子化されているのは素晴らしい)

さて、思うに、このての作品が成立するには「中流家庭」というのが不可欠だ。それなりにリベラルな考えを持つ親、それなりに先進的な技術の導入が好きな家庭(超富裕層だと別の物語になるのは、集合住宅や地域社会という舞台設定がきかなくなる可能性があるからだ)、2030年代予測として一番危ういのが、実はその部分だったり(しないようにできるかなぁ?)。


2015-01-20

_ 丸に十字は薩摩芋

天麩羅屋で天丼食いながら何気なく壁にかかった本日の一品みたいなのを眺めてた。

めごちってのは確かきすみたいな江戸前のやつだよな、とか、ほお雲丹を天麩羅にするのかどんな味になるのだろうか、とか。

で、順番に見て行ったらどうにも不可思議なものがある。

田? 田造りの天麩羅なんてありえないし、それに田ほど四角くない。

達筆? いや、他の品書きからそれはない。

結局降参して店の人にあれは何かと尋ねた。

ああ、あれは丸に十字で島津の家紋なんですよ。

なるほど薩摩か。

なんでもここらがお江戸だった頃からこう書くみたいですね。そう言えば島津製作所のマークも丸に十字だそうですよ。

なるほど、一つ賢くなった。

野菜は野菜各種でまとめてるのかと思ったら薩摩芋は文字通り別格なのか。確かに薩摩芋の天麩羅はうまいからなぁ。


2015-01-23

_ CodeZineで記事公開

『Ruby開発者・まつもとゆきひろ氏の新言語「Streem」のソースコードを読んでみよう! ~ 文法と構造を規定する「lex.l」と「parse.y」』というタイトルで、CodeZineにlexとyaccのソースの読み方の導入記事を掲載していただきました。

・反省点:JavaでEclipseのような開発者を想定してMakefileの説明などもしているのに、Cは自明のネイティブ言語みたいな書き方になっていますね……

lexの部分が長くなってしまった(4ページのうち2ページ近く。これはいきなりlexに入らずに、まず自然言語で字句解析するところから始めようと考えたので設計通りではあるのだけど、その結果、FizzBazzではなくcatを例にしたのが運の尽き)ので、yaccの縮退していくおもしろいところがえらく短いのがちょっと残念。

とはいえ、せっかくstreemがあるのに、srcの下に.lと.yがぽつんと置かれているとっつきの悪さにそのまま引き返してしまうのはもったいない(この長さなら読めるでしょ)ので、こういうのもありかなぁとは思います。(日経リナックスのまつもとさんの記事を読むと、きっちり字句解析と構文解析の説明もしているのでそれは予想外だったけど)

それにしても、BNFを見ていると、バッカスはきっと、FORTRAN→BNF→ALGOL→これじゃない→FL(名前しか知らないけど)と考えを進めたのかなぁとか想像できていろいろ楽しいですね。プログラミング言語は関数型の夢を見るか?


2015-01-25

_ 新国立劇場のさまよえるオランダ人

飯守泰次郎自身の指揮によるさまよえるオランダ人。

始まるとテンポの速さに驚いた。が、全体が速いわけではない。とにかくメリハリの付け方のうまさはいつもながら舌を巻く。

ゼンダのバラードの間、おばさんはどこか(多分糸車の裏)に隠れている。

カーテンコール。親父がプロンプターに握手(あまり見ないのでちょっと目立った。何か助けてもらったのだろう)。はじめて見たが、合唱指揮の三浦(名前忘れた)に飯守が握手して最前列で手をつなぐ輪に加えた。いつも合唱はすばらしいのだが、これも初めて見た。

終演後、来季の説明会も見る。リングはベルリンの演出を使うらしい。さすがにゼロから作るわけではないのか。全部自分で振ることにすると任期と合わなくなるので2016年は最初にワルキューレで初夏にジークフリートを予定するとか。グールドにローゲ、ジークムント、ジークフリートを歌わせるテノールセントリックでやるとのことだ(なんか新国立はエレールを良く呼ぶのでローゲに期待していたのだが、その点は残念)。


2015-01-27

_ ASRのrubygems

新年会のじゃんけん合戦でServerspecを勝ち取ったので読み始めた。

Serverspec(宮下 剛輔)

書籍としてはなんか妙なところはあるのだが(たとえば、「なぜそうではないか」「なぜそうしないか」の説明がしつこい)、どう読んでもserverspecを利用するのは正しい。世の中、良いものがどんどん出てきて実に良いことだ。

妙なユースケースだが、サーバーを手作業でセットアップすることが前提だとして(セットアップ台数/年が非常に小さくて、かつ作業者にCIという概念もなければ使うつもりもないとして)、そういうサーバーに介入できるのが障害時だとしたら、とりあえず調査を手っ取り早くするためにspecをきっておけば具合が良さそうだ。

では試してみるかと、Windows Server 2012の仮想マシンを用意して(ディスクが空いていたのでLMDEにOracle VirtualBoxをaptitudeしてから)試そうとした。

で、Ruby-2.2-x64.msiを導入して、おもむろにgem install serverspecとしたら、

C:\Users\arton>gem install serverspec
ERROR:  Could not find a valid gem 'serverspec' (>= 0), here is why:
          Unable to download data from https://rubygems.org/ - SSL_connect retur
ned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (
https://api.rubygems.org/specs.4.8.gz)

??

で、いろいろ調べるとすぐに見つかるのはRubyInstallerはWindowsネイティブコンパイル時のパス設定のバグでRubyGems2.4系を入れていないからRubyGemsのpemが古いというイッシューだ。

でも、おれのパッケージはVC++バイナリインストール用だからそれはまったく関係ない。つまり、RubyGemsは最新を同梱しているからpemが古いということはない(はず)。

でも待てよ? そもそものcacert.pemはどこにあるんだ?(というか、Windowsマシンでgem installを使ったことは一度もなかったから気にもしていなかった)

まずそこからだというわけでhttp://curl.haxx.se/ca/cacert.pemをダウンロードして環境変数SSL_CERT_FILEでポイント。

set SSL_CERT_FILE=C:\users\arton\Downloads\cacert.pem

で無事gem installに成功。cacert.pemの格納先と環境変数の設定は後でちゃんとやる。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|

ジェズイットを見習え