2014-01-01から1年間の記事一覧

W3Cの文書を読もう

ツイッターでは前にも書いたけど、W3Cの文書は面白いのでみんな読んだほうがいいですよ。 カレー CSS Fonts Module Level 3 自然 Use Cases & Exploratory Approaches for Ruby Markupなんか他にも面白いのあったら教えて

Go, Rust, Haxeによる正規表現エンジン実装の読み比べ

この記事はRust Language Advent Calendar 2014の20日目であると同時に、Haxe Advent Calendar 2014の20日目でもあります。 正規表現エンジン 正規表現エンジンのGoによる実装sre2、Rustによる実装libregex、そしてはHaxeによる実装HxREを読み比べます。sre2…

RustでFizzBuzz

何回目なのか分からない 前回 Rust 0.10でFizzBuzz - M59のブログ Rust 0.10でFizzBuzz - M59のブログ 使ったバージョン rustc 0.13.0-dev (b497f0500 2014-12-16 01:32:33 +0000) コード fn main() { let n = 100u; let (tx, rx) = channel(); for i in ran…

Tao3Dでインタラクティブな3Dアニメーションをつくろう (1) 使い方の基本

Tao3Dは、インタラクティブなスライドやアニメーションが作成できるプログラミング言語および開発プラットフォーム。Windows版, OS X版, Linux版のパッケージが用意されている。Tao3D Libre EditionはGPLv3でライセンスされている*1。Tao3Dを起動すると、Wel…

こわくない Idris (6) 補足

こわくない Idris (6) - M59のブログ こわくない Idris (6) - M59のブログ 1年前に書いた記事を読み返していたら、証明がすぐには理解できなかった。証明の内容を言葉で分かるように書いておきたいと思う。次のコードのMyHead.headは、全域函数だ。 %default…

メモ

Postel's law Natural Language Principles in Perl Programming By Contract HTML Meta programming

Source Han Sans の入手方法について

2014年9月12日追記: Source Han Sans バージョン 1.001がGitHubで公開されました。ここに書いてある内容は過去の内容です。にわかに話題となった、汎CJKフォントであるSource Han Sans(日本語名:源ノ角ゴシック)ですけれども、入手方法が分かりづらいと思…

書き難き我が意を得たるプログラム

を読んで、思ったことを書く。「プログラムは思った通りに動かない。書いた通りに動く。」いったい誰が言ったのかは分からないこの箴言だが、ただ当たり前のことを言っただけでは箴言にはならなくて、ここには意外性がある。つまり、この箴言に出会う前の人…

価値

価値とは何なのか。一般的な通念から言えば、価値が等しい物は、互いに交換ができるものだといえるだろう。交換可能といっても、それは状況によって変わるはずだ。豚に真珠猫に小判と言うが、猫にとって小判の価値はそこらの石ころと変わらないかもしれない…

帰責性

最近知った固有名という概念に何か釈然としない物を感じているので、固有名を検索したところ、こんな記事が出てきた。 固有名 - ised@glocom 読んでみると、固有名と帰責性なる概念とを結びつける、なかなか怪しげなことが書いてある。どういう意味だかよく…

C++にdo記法入れる話

本の虫: 2014-05-pre-Rapperswil mailingのレビュー N4015でHaskellのdo記法風っぽいdo式を入れる提案があるわけなのだけれども、そもそも手続き型の記法でプログラミングができるC++の上にさらにモナドを使って手続き型風記法でプログラミングするためのdo…

論理の話

「原発は絶対安全なのか?」とゼロリスクを求めた結果、架空の安全神話を原発に生みだしてしまった構造と似てるなあと思いますよ。非論理的な極論は、議論を成立させない。結果として強行突破や架空のゼロリスク論を生み出してしまう。 https://twitter.com/…

𫙹(魚嵐; ブリザード)

魚と嵐でブリザード? - M59の記録で取り上げたブリザードが出てくる書籍『漢字と遊ぶ 現代漢字考現学』を入手した。11ページには「𫙹」が活字で出てくる。𫙹が活字で出てくる箇所 「この「𩹢」にしても、前に紹介した暴走族のグループ名「𫙹」(ブリザード…

酷い翻訳

javac 1.8.0_05を使っていたところ、意味不明なwarningが出た。 Test3a.java:9: 警告: [unchecked] raw型Listのメンバーとしてのadd(E)への無検査呼出しです ln.add(10); ^ Eが型変数の場合: インタフェース Listで宣言されているEはObjectを拡張します原文…

HaxeでUnicode文字列をどう取り扱うか

Haxeには複数のターゲットがあり、文字列のAPIは共通だが、それぞれで文字列の内部表現が異なっている。普通にプログラムを書いても、ターゲットによって結果が変わってくる。 class Main { public static function main() { var s = "\u{20000}𩸽あëa"; tra…

Idris JavaScript FFI

IdrisからJavaScriptのAPIを叩いてみる。 module Main getElementById : String -> IO Ptr getElementById s = mkForeign (FFun "document.getElementById(%0)" [FString] FPtr) s setInnerHTML : String -> Ptr -> IO String setInnerHTML s e = mkForeign …

小瑠璃フォント生成用スクリプト書いた

小瑠璃フォント生成用スクリプト書きました。 参考にしたツイート ちなみに小瑠璃フォントの生成手順は簡単に言うと ・FontForgeを使いOpen Sansに含まれるグリフをM+ 1pから手作業で探しだして消す ・EMの大きさを2048に設定する ・Open Sansを統合する ・…

RustにおけるOptionの最適化

ネタ元: performance - What is the overhead of Rust's Option type? - Stack OverflowRustにはnull値がなく、代わりにOptionを使う。このOptionは、ポインタ型に対しては最適化されるそうだ。確認してみる。(rustc 0.10を使った。) use std::mem::size_of;…

将棋はゼロサムゲームか?

メタゲームについて思いついたことのメモ。たぶんおんなじようなことを考えたことがある人はすでにいっぱいいると思う。僕はよく知らないので、知っていたら教えて欲しい。現実のゲームというものは、ある思惑の下で執り行われている。たとえば勝てば賞金が…

Rustのランタイムライブラリー

現状Rustにはランタイムライブラリーが2つ実装されていて、ネイティブスレッドを使うlibnativeとグリーンスレッドを使うlibgreenがある。詳細はA Guide to the Rust Runtimeにある。実際にそれぞれのランタイムライブラリーを使ったFizzBuzzを作って試してみ…

Apple絵文字は間違ってる?

Apple絵文字の問題 iPhone 3Gが絵文字に対応したのが2008年11月、Unicodeに絵文字(Emoticons)が入ったのが2010年10月でした。それから時がたって2014年、今では世界中で絵文字が使われています。英語圏で「ホットドッグの絵文字がない!」「黒人がいないのは…

Rust 0.10でFizzBuzz

毎度おなじみFizzBuzzでRustの変更点を確認しよう。 fn main() { let (tx, rx) = channel::<(int, std::str::MaybeOwned<'static>)>(); for i in range(0, 100) { let tx = tx.clone(); spawn(proc() { let i = i + 1; let b = match (i % 3, i % 5) { (0, 0…

RustのSendStr

RustにはEnum std::send_str::SendStrがあって、これは送信可能な文字列型である~strか&'static strのどちらかを保持する。Trait std::send_str::IntoSendStrのメソッド fn into_send_str(self) -> SendStr を使って、それらをSendStrに変換できる。例のFizz…

プログラミング言語の語順

自然言語を主語(S)・目的語(O)・動詞(V)の語順で分類するように、プログラミング言語もオブジェクト(O)・実引数(A)・メソッド(M)の語順で分類できる。(Smalltalk, C++など)よくある語順オブジェクト指向言語風の語順はOMA型だ。一方で、(GObject/C, CLOS/…

Rust 0.9

例のごとくFizzBuzz // for Rust 0.9 fn main() { let (port, chan) = SharedChan::new(); for i in range(0, 100) { let chan = chan.clone(); do spawn { let i = i + 1; let b = match (i % 3, i % 5) { (0, 0) => ~"FizzBuzz", (0, _) => ~"Fizz", (_, 0…