Boostのビルド、あるいは共有ライブラリの悲劇(終)

【結論そのいち】Boostのビルドなんか、しなくたって生きていけるさ。 【結論そのに】Boostのライブラリをリンクするときは静的ライブラリをリンクしよう。 にもかかわらず、あなたがBoostの共有ライブラリをリンクしたいと考えるならば、あなたは茨の道を往…

エクストリームテキストプロセシング

C++0xをdisってる人をdisる闇のC++軍団たち - Togetterに吹いた。 だがちょっと待ってほしい。C++0xは変態過ぎはしないか。たとえば増田からは「正規表現使いたければそれこそ、Perl使え」と主張するような声もある。このような声に闇のC++軍団たちは謙虚に…

Boostのビルド、あるいは共有ライブラリの悲劇 (2)

Boostをふつうにビルドすると、たぶん静的ライブラリと共有ライブラリが生成される。静的ライブラリはオブジェクトファイルを寄せ集めただけなので、問題はない。すくなくとも共有ライブラリほど問題はない。共有ライブラリはおおいに問題である。Mac OS X (…

Boostのビルド、あるいは共有ライブラリの悲劇 (1)

Boostをビルドするのは、かなりの難行である。ビルドシステムは意味不明だし、長い時間をかけてビルドしたライブラリは半分も使えば良いほうなのではないか。正直、ぼくが使うのは、せいぜいBoost.GraphとBoost.IostreamsとBoost.TestとBoost.Threadあたりく…

random_deviceの実装

もしあなたがセンシティヴだとしたら、random_deviceは自分で実装するべきかもしれない。この場合のセンシティヴは、熟練者 (expert) とか古強者 (veteran) とか芸術家 (artist) とほとんど同義かもしれない。 さて、C++0xで導入される乱数ライブラリについ…

SSH経由でNFSv3を使う

おおむねdarwin(MacBook ProのうえのSnow Leopard)のうえで仕事したり遊んだり、仮想機械またはネットワーク(あるいはその両方)のうえのUNIXもしくはUNIXみたいなシステムにSSHでログインして暮らしている。リモートからローカルのファイルにアクセスし…

Non-modern Shell Programing (4)

2.6.3 コマンド置換 コマンド置換は、コマンドの出力がコマンド名自体の代わりとして置換されることを許す。コマンド置換はコマンドが下記によって囲まれている時に起こるものとする。 $(コマンド)または(バッククォートされたバージョン): `コマンド`シェ…

Non-modern Shell Programing (3)

2.3 トークン認識 シェルはファイルから、対話シェルの場合は端末から、sh -cあるいはsystem()の場合は文字列から、行として入力を読む。入力行は無制限の長さを持ちうる。入力行は2つのメジャーモードを用いて構文解析される。2つのメジャーモードとは、通…

Non-modern Shell Programing (2)

書く気力が失せたので、SUSv4のShell Command Languageの翻訳でお茶を濁すことにする。基本的に直訳なので翻訳の質についてはご容赦。 2.2 クォート クォートは、ある文字群や単語のシェルにとって特別な意味を除去するために用いる。クォートは、次の段落に…

Non-modern Shell Programing (1)

Heirloom Bourne ShellとSingle Unix Specificationを教科書に、現代的でないシェルプログラミングについて話す。 #! /bin/sh set -eu p() { printf '[ %s ]' "$@" printf '\n' } x=foo y=bar p "`p \"\`p \\\"\\\\\\\\$x \\\\\\\\$y\\\"\`\"`" ぼくたちがシ…

ほんやくコンニャク

英辞郎第四版に同梱されたPDIC形式の辞書ファイルをStarDict形式の辞書ファイルに変換する方法について、いくつかの落とし穴に関するメモ。 PDIC1行テキスト形式に変換する。 UTF-16LEからUTF-8に変換する。 stardict-editorで読めるようなタブ区切りテキス…

シェルのクォート

ダブルクォート内のバックスラッシュによるクォートのルールは、C由来のクォート規則と異なる。\\newlineの箇所は原文が誤っているように思う。 The following characters have a special meaning to the shell and cause termination of a word unless quot…

シェルの関数内関数

シェルスクリプトは古き良きBourne Shellで書くものであり、Manual Page - sh(1)を参照するのが良い。SUSv4のShell Command Languageでは高機能すぎる。ふと気づいたが、古き良きBourne Shellであっても関数内関数が使える。 foo() { f() { echo foo; } } ba…

C++0xのPOD

id:faith_and_braveさんが解説されている。 POD's Revisited C++0x POD再考 - Faith and Brave - C++で遊ぼう PODには、最適化を促進する場合と阻害する場合がある。memcpyやmemmoveが使えるために高速化される場合もあれば、コンパイラによるレイアウトの最…

C++03のPOD

Fermilab | Homeによれば、C++03規格においてC互換型がPODである(と規格の脚注に書いてあると書いてある)。勉強のために、JIS X 3014:2003を拾い読みする。集成体は初期化子節が使えるので初期化が簡単。 次のいずれももたない配列またはクラスを、集成体…

gcc最適化

Mac OS X 10.5.8上で下記のgccを使用した。早いところ、Snow Leopardを入れよう。 gcc version 4.0.1 (Apple Inc. build 5488) gcc version 4.2.1 (Based on Apple Inc. build 5636) (LLVM build 2.5) どちらもApple版なので-fastオプションを持っている。 O…

Self-Reference-Reference ENGINE

ぼくのなかのぼくのことを、ぼくは話そうと思う。C++は参照の参照を許さないから、ぼくのなかのぼくのなかのぼくは定義されない。この日記をそのように始めようと、ぼくは決意したのだ。 This page is a page of pages that refer to self-reference, though…