JavaScript でコマンドラインアプリを書く時もイベントループを無視したらダメ(なことがある)という話

先日書いた電卓に関して、そのための十進演算ライブラリのテストを書いていてはまった、という話。一般に JavaScript によるブラウザアプリはイベントドリブン型で書かないといけないわけだが、総当たりチェックのコマンドラインアプリを作り Node.js で実行…

電卓考(draft)

世界で最もポピュラーなディジタルガジェットと思われる電卓であるが、いろいろと考えてみるに、歴史的な理由による制限や互換性を保つために不自然な設計になっている部分があるように思う。特にコンピュータ上のGUIアプリでは、たとえばコストを気にせず表…

chainl の正体

山本さんの「chainl と左再帰」( d:id:kazu-yamamoto:20110127:1296098875 )を読んでいて(ほんの)少々混乱したのと、Parsec の chainl は、結局どうやって使ったらいいのよ、というのを簡単にまとめておく。背景説明はどうでもいい人は最後のサンプルま…

『教養としてのプログラミング講座』と『入門 コンピュータ科学』と『はじめてUNIXで仕事をする人が読む本』

なんとなく相補的な関係にありそうな本がまとまって出た気がするのでちょっと書いてみる。 「ケンカ剣法」なる剣法がある。ちばてつやさんの漫画『おれは鉄兵』の主人公、上杉鉄兵の剣法で、正統じゃないんだけれども滅法強い、という。正統派というのは極め…

数値計算や事務処理以外にも、黎明期(1960年代)からコンピュータの応用はあった、という話

コンピュータ史ってどうしても情報屋さんか計算屋さんからの視点になりやすいけど、生産プロセス管理とかフライトシミュレータとかの応用も黎明期からある2014-04-10 14:58:19 via mikutterこんなツイートをしたわけですが、実例とかを挙げてもうちょっと書…

LSI C-86 の最適化

ちょっと前にうろおぼえでこんなツイートをしていたのですが、 末尾再帰の最適化は、トイ問題な例だけど、階乗の関数をLSI C-86試食版コンパイラにループにさせるのが面白かったな。引数の順序とかをいじると、かなり人間が書くようなコードに近づく。2014-0…

M4の定義混在モデルにより可能なこと

M4入門( http://metanest.jp/m4intro/ )のサプリメンタリーのような内容です。 M4は基本設計がシンプルイズベスト、という感じのところがあり(ストレイチーさんによるGPMはたった250語で実装されていたそうです)、いろいろと「現代風に作り直したら?」…

いくつか思っていること

(メーヴェを実物化したOpenSkyプロジェクトの機体を設計した)オリンポス飛行機のレポート『ソーラープレーン』( http://www.ac-olympos.com/report/report05.html )を見て、日頃思っていることといくつか一致したのでメモ。 『鳥人間コンテスト』の人気…

サンストリート浜北への交通機関

自家用車等 よーするに完全なロードサイドの(超)大型ショッピングモールですので。 遠鉄浜北駅まで輪行、駅から自転車 歩けない距離でもなくもなくもない、ぐらい。自転車(たぶん A-bike でも)ならたいした距離ではない。 集団で行って浜北駅からタクシー …

unexpand.awk の解説

Gist https://gist.github.com/metanest/8747791 なんでこんなものを作ったのか きちんとインデント付けされたソースコードであれば、少々の微妙な点もありますが、expand(1) と unexpand(1) を適切に組み合わせて、任意のインデントスタイルに変更できます…

'80s Raleighレストア日記(ものすごく不定期)BBが届いた

JavaScript と Scheme について

清水さんの「これがプログラミングの神髄だ! ファイナルファンタジーのプログラマーが明かす秘密とLispトークバトル!」( http://d.hatena.ne.jp/shi3z/20140123/1390429115 )にある、 もともとJavaScriptはLispの方言であるschemeをベースとして開発された…

'80s Raleighレストア日記(ものすごく不定期)ペダルが今も生産されていた、の巻

OEMによる生産元が判明したわけですが、もうちょっと追っかけてみたところ、驚きの事実が発見されました。 こちらのペダルがクランクから外した30年もののペダル。 そして、こちらが現行で生産されているペダル。 ほ ぼ 一 致 !! (アスペクト比が少し違う、…

'80s Raleighレストア日記(ものすごく不定期)

1980年頃のRaleighの自転車(ロードスターの系列ですが、スタッガーフレーム・シングルスピード)をレストアするつもりで解体したものの放置していたのですが、なんとなくなんとかなりそうなので不定期日記にしてみようかと。 ボトムブラケットが往年のコッ…

エレガントにじゃんけんを書く

プログラムのテーマとしてじゃんけんかー。グー・チョキ・パーを 0, 1, 2 であらわして「(3 + Aの手 ー Bの手) % 3」が 2 なら A の勝ち、みたいなテクニックに気づくかどうか、という側面もあって、そしてそういったタイプのテクニックに対する賛否まで含…

同期通信プリミティブを作った

微妙に純粋な興味以外の必要性もあって、CSP(Communicating Sequential Processes)をこの本 並行システムの検証と実装: 形式手法CSPに基づく高信頼並行システム開発入門 (トップエスイーシリーズ 実践講座)作者: 磯部祥尚,東野輝夫出版社/メーカー: 近代科…

サンハヤトの接点関係ケミカルの簡単なまとめ

玄関の呼鈴スイッチ(ちなみにチャイム音はパナソニックのあの「ファミマ入店音」)が長年(20年以上か?)の劣化で全然ダメになったので、その補修作業中なんですが、サンハトヤサンハヤトの接点関係ケミカルがちょっとたくさんあって、どれを使ったらいい…

「ろくろを回す」のは間違いとして、では「ろくろをひく」というのはどうなのか?

いろいろ長文を書いていたのですが、書くために検索しまくっているうちにかなりあっさり結論らしきものが見えましたので、簡単にまとめます。 「ろくろ挽き」の「挽き」という語は、「鋸で丸太を挽く」「コーヒー豆を挽く」「挽き肉」など、木材などを刃物な…

SFLのstageとNSLのseqを攻略する

SFL(NSL)の基本は簡単です。要はネットリスト記述やVerilog HDLのassignのような同時並列の信号の転送を「クロックごとに区切られたものとして」記述するだけです。端子への転送では値はすぐさま変化し、レジスタに転送されている値はハザードがおちついた後…

(閉店する)ラジオストアーは、アキハバラデパート側の続き部分の「ガード下」の何パーセントか?

あのガード下の内訳を知っている人なら、秋葉原ラジオストアーをガード下の\(\frac{1}{3}\)、とするのは納得できないだろう。 そこで、では実際どれくらいなのかを、店舗数ベースで簡単に計算してみよう。事務所やグランヴァニア(元・古炉奈)はカウントし…

1970年のひふみん発言とコンピュータ詰将棋について少し

1970年に加藤一二三九段(当時八段)が将棋とコンピュータについて語った文章が2chに書き込まれ、保存サイトに転載されるなどして少し話題になってますが( http://2chcopipe.com/archives/51911853.html , なお元スレは http://toro.2ch.net/test/read.cgi/…

ハーロック感想(ネタバレ有り)

ネタバレ有りのため続きを読む記法で

Rubyist が Python のコードを書くと、はまりそうな所(不定期)

sample1.xml <elem1> <elem2_1> <elem3/> </elem2_1> <elem2_2/> </elem1> sample1.py import xml.etree.ElementTree as ET def is_true_or_false(it): if it: print('True') else: print('False') et = ET.parse('sample1.xml') elem1 = et.getroot() elem2_1 = elem1.find('elem2…

dangling else と、関連事項について

C言語のif文が関係する部分の構文規則を抜粋すると、次のようになっている。 = | | | = "if" "(" ")" ["else" ] = "{" ... "}" = ";" = ";" = | etc(略)この規則で、一番大きな問題だと一般にされがちなのは「dangling else 問題」である(この dangling は…

Ruby でオブジェクトのメソッド呼び出しをフックする方法

Ruby エキスパートな人には特に新しい話は無いですが、何か抜けている所などありましたらツッコミいただけたら幸いです。 オブジェクトをすりかえる方法 Ruby でオブジェクトのメソッド呼び出しをフックする方法としてまず考えられるのは、method_missing を…

メモ

undefinedも(ECMA-262によれば)値のひとつなので、原文から少し離れますが、 値を返すためには、返す値を指定する return 文が関数内になくてはなりません (new キーワードとともに constructor が呼び出される特別なケースを除きます)。値を返さない関数…

Goto は必要か? 「再帰をループに展開」篇

Twitter でのちょっとしたやりとりが元で、ちょっと Ruby で再帰フィボナッチと、それをそのままループに展開したものを書いてみたわけですが( https://gist.github.com/metanest/6145168 )、スタックに入れて、すぐ出して、を繰り返しているので、それを…

聖書配布協力会の広報車に遭遇した

けさがた、聖書配布協力会の広報車に遭遇した。 徐行で移動しながら例のテープを流していた。豊橋ナンバーだったので黒影氏が遭遇されたもの http://blackshadow.seesaa.net/article/95683744.html と同じか同系統のものと思われる。

tan(355/226)

(追記: 「正確さ」と書くべき場所の多くで「精度」となっていたのを修正しました) ウェブサイト『関数電卓マニアの部屋』( http://teamcoil.sp.u-tokai.ac.jp/calculator/index.html )を見ていて知ったのだが、torture test という関数電卓の限界的なス…

浮動小数点数の(より)正確な mod (その2)

桁落ちと情報落ち ここで今更(前回の説明で盛大に使っている)ではありますが「桁落ち」と「情報落ち」について確認します。 桁落ち 有効数字に制限のある計算において、たとえば、 141.4214 - 141.4213 = 0.0001 のように、値が何桁も一致する数の減算を行…