NKF.guess はもう古い。国際化時代のコードセット(エンコーディング)推測法

柄にもなく釣りっぽいタイトルですが、本文中には特にそんな派手なものはありません。 はじめに Rubyの多言語化に関してまず読むべき、るびま記事である「Ruby M17N の設計と実装」が2009年の記事ですから四捨五入すればもう、ひと昔前のことですが、それで…

「James Clark 記法」に関するメモ

備考1 XML の James Clark 記法の件なんですけど生前に直接聞いてみた.結論から言うと James Clark 記法という表記は存在しない.渕さんがページを書く際に,そういえば James Clark がこういう記法使ってたなのを書いただけだった.— Koichiro Eto (@eto) …

X Window System の Meta キーを設定した話

Macのキーボードにはコマンド(Cmd)キーがあり、シフト・コントロール・オルト(Alt)と同様の修飾(モディファイヤ)キーとして使えます。Linux等ではメタ(Meta)キーが相当するキーとして扱える場合がありますが(たとえば、Mozilla の JavaScript のド…

Antec P182マシン、大改修・完結篇?

というわけで、その後以下のように手を加えました。 大騒ぎの原因の一つだったグラフィックカードですが、結局ロープロファイルでショートサイズのカードに変更 PCIスロットの空きスロットの蓋を、空気穴が無いタイプに総取替 上面排気ファンは、中段前面で…

Antec P182マシン、大改修

前に書いた通り、電源とマザーボードを新調したわけですが、この際ということで大幅な改修を行うことにしました(画像は改修後)。 大型のグラフィックボードとの干渉で難儀していたHDDを下段に移動、中段ケージを撤去 同様に、張り出していて、パラレルATA…

PCの電源を買った

無理な延命等が祟ったようでもあり、PCの電源が、2代目か3代目となるマザーボードと一緒に(原因がどちらの側かは不明瞭)壊れたため、現行のCPUとDIMMとの組合せでは多分最後となるマザーボードと、電源を買った。というわけで以下検討過程などのメモ。 せ…

SICPと、6.001の話

調べていたところ、「弱LisperがMITでSICP(シクピー)を受講した結果」( http://qiita.com/kaz-yos/items/d1ecd4bfe9989c290e99 )というQiita記事を見つけたのでリンクしておきます。噂の(?)SICPを懐かしむチューターたちによって実施されている特別授業に…

ARMの設計(デザイン)

Oral History of Sophie Wilson( http://www.computerhistory.org/collections/catalog/102746190 )から、ARMの設計(デザイン)に関することのメモ(主に、6502との関係について) ARM以前のほとんどのマシンで6502を使用しており、6502での経験はあった …

Rubyスクリプト中からアセンブラを呼んでアセンブルして .so 作って動的ロードして実行するサンプル

Rubyスクリプト中からアセンブラを呼んでアセンブルして .so 作って動的ロードして実行するサンプル

Macr055発表の反省

プロシンでいただいたコメントとかに対するメモ 再帰的なマクロの例が欲しい (言い訳: 「マクロに展開されるマクロ」がちゃんと再帰的に扱えれば、あとはそのマクロが自分自身でも同じことだ、と思っていたのですが)質疑応答のかなり最後のほうで、「再帰…

簡易回転計算

その昔、高校の先輩が8ビットマシンで背景が回転するゲームを作るにあたり、sinθ=1/8、cosθ=127/128として、Z80の機械語でいとも簡単に回転行列の計算をしてしまっていたのを見て、この人には追い着けないなあ、と感じたものです。どうやったらこんなの思…

process reaperの実験

procctlという、プロセスの属性の一部を制御するAPIはFreeBSD 10で追加されたものですが、10.2 でそれに reaper facility と呼ばれている機能が追加されました。基本的な機能性はLinuxを参考に(Linuxでは prctl(2) というAPIです)、APIの設計はDragonflyBS…

総和の計算は、なぜどのように難しいのか

プログラミング入門で、forループを使う例題としてよく出てきたりするように、総和計算は一見簡単そうですが、実はどのように難しいのか、という点を書いてみます。まず、対象が整数であれば、大きな問題はありません。昔のようにintが16ビットの場合は、160…

Ruby 2.4 の新機能, Array#sum

Ruby 2.4 で追加されている新機能のひとつに Array#sum があります。(参: ドキュメントは http://ruby-doc.org/core-2.4.0_rc1/Array.html#method-i-sum )共立『アルゴリズム辞典』でも「総和計算」を立項しているように、情報落ち*1*2による「積み残し」…

拡張ライブラリでキーワード引数を処理する定番プラクティス(ベストじゃないかも)

ruby 2.4 リリースおめでとうございます。つい先日まで「拡張モジュール」と「拡張ライブラリ」の、どちらの呼称がobsoletedなのかいまいちはっきり認識していなかったきしもとです(ClassクラスのスーパークラスであるModuleのほうのモジュールがあるので、…

移植性が(ほとんど)あり性能問題が無い(かもしれない)、負の値に対応した算術右シフトのCコード

普通は、自分のマシンでどのようなコードが生成されるかを確認して、うまくいっていればそれで良しとする所ですが、右シフトは凝ったコードを書こうとするCプログラマにとって悩みの種です。しかし、手元の環境( FreeBSD clang version 3.4.1 )で、次のよ…

SICP的な状態を共有する複数のクロージャをJavaScriptでどう書くか

某展示会の学術系ブースで、このようなSICP的な状態を共有する複数のクロージャをJavaScriptで書きたいわけだが、"use strict" var [getVal, setVal] = (function () { var v return [function () { return v }, function (new_v) { v = new_v }] })() setVa…

「Trusting Trust」攻撃に対抗する

シュナイアーさんによるblogエントリ( https://www.schneier.com/blog/archives/2006/01/countering_trus.html )は、もう10年も前ですので、その世界では特に新しい話題というわけではないようですが、私が知ったのは今年のはじめのことでしたので*1、この…

POSIXとのつきあいかた

コンピュータ関係の技術的なものや技術的でないもの(標準規格とかいったようなものの半分は技術仕様ですが、もう半分は業界政治で出来ていると言えるでしょう)との「つきあいかた」にはいろいろあります。私のこれまでの経験などから、POSIXとのつきあいか…

numo-lapack というブロジェクトを作りました(始めました)

numo-lapack というブロジェクトを作りました(始めました)。 https://github.com/metanest/numo-lapack Numo::Linalg( https://github.com/ruby-numo/linalg )からのフォークをベースに、column-major ←→ row-major 相互の変換をライブラリ側では行わな…

同名だが(違う場所にあって)異なるダイナミックリンク(共有)ライブラリの問題(適切な解決法を求む)

FreeBSDにおいて、プログラムの起動時に次のようなエラーで起動に失敗することがあります。/lib/libgcc_s.so.1: version GCC_4.6.0 required by /usr/local/lib/gcc48/libgfortran.so.3 not found(GCC に gcc-4.8 を使っている場合)原因は、libgcc_s.so.1 …

「ISLISPを使うべきでないたった1つの理由」に関して

「ISLISPを使うべきでないたった1つの理由」( http://d.hatena.ne.jp/Isuzu_T/20130623/1372003378 )が誤解している点について、簡単にまとめておこうと思います。 要点 上記はてなダイアリーから引用しますが、 マクロは,実行準備時に展開される,いかな…

crubyのFloatにFast inverse square rootを(モンキーパッチで)追加する話

Fast inverse square root自体については「30のプログラミング言語でFast inverse square rootを実装してみました!」( http://itchyny.hatenablog.com/entry/2016/07/25/100000 )を参照してください。せっかくの高速な手法ですから、高速な実装を考えてみ…

4004のブートストラップキャパシタ

この記事で言及する「ブートストラップ」は、電気(電子)回路の技法のそれであり、コンピュータの電源投入時やリセット時などの起動シーケンスのことではありません。 (回路技法の)ブートストラップとは 既にご存じの方は飛ばしてください。以下の2つの回…

情報処理学会発足の頃の話

これはハードコピーを見せたほうがインパクトがある、だろうと判断して持っていったところ、興味を持っていただけたのですが、.@ksmakoto さんからこんな文献を見せていただきました。情報処理のvol1, no.1、つまり創刊号に載ってる論文。著者は、工業技術院…

Gauche の util.stream の stream-delay はなぜあるのか、どういう場合にどのように使うものなのか?

All problems in computer science can be solved by another level of indirection. (David John Wheeler)But that usually will create another problem. これは、デビッド・ホイーラーさん*1(wikipedia:デビッド・ホイーラー)による格言ですが、遅延デ…

Macr055で順列の生成

続き。 http://parametron.blogspot.jp/2015/04/christopher-stracheygpm_27.html にある、順列の生成。{m55_define|p2|$1$2$3 }{m55_dnl} {m55_define|p3|`{p2|$1|$2|$3}{p2|$1|$3|$2}'}{m55_dnl} {m55_define|p4|`{p3|$1$2|$3|$4}{p3|$1$3|$2|$4}{p3|$1$4|…

Macr055でNクイーン

前回の4クイーンを元に一般化して「マクロを生成するマクロ」によるNクイーン問題( http://parametron.blogspot.jp/2015/04/christopher-stracheygpm.html )。エスケープが妖しいことになってて、もしかしたら無駄な展開とか起きてるかもしれませんが、一…

Macr055で4クイーン

カレンダーは面倒そうな割にマクロ内で完結しなくてあまり面白くなさそうだったので、その次の http://parametron.blogspot.jp/2015/04/4.html 4クイーンから。{m55_define|1+|`{1|2|3|4|5|6|7|8|9|10| {m55_define|1|$$$1}}'}{m55_dnl} {m55_define|1-|`{-1…

Macr055でクリスマスの詩

次の http://parametron.blogspot.jp/2015/03/christopher-stracheygpm.html の記事に移って、クリスマスの詩。 "$:" が10番目の引数に置換されるようにM55を改造。文字と文字コードの相互変換は chr と ord という名前の関数とするのが定番ですが、GNU awk …