エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

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

Singleton Template

C++

http://d.hatena.ne.jp/nagoya313/20090930/1254321172を拝見して。これは「『奇妙に再帰したテンプレートパターン』を使うと簡単にできなかったっけ?」と、記憶をたどりながらコードを書いてみた。 #include <iostream> template<typename T> class Singleton { public: static T</typename></iostream>…

表紙「数学ガール/ゲーデルの不完全性定理」

『数学ガール/ゲーデルの不完全性定理』表紙画像到着。公開可能。宣伝推奨。 結城浩 on Twitter: "#mathgirl 『数学ガール/ゲーデルの不完全性定理』表紙画像到着。公開可能。宣伝推奨。 http://bit.ly/3bVccX" ということなので。 幾人が見ているかわから…

boost::dynamic_bitset

C++

ちょっと触れる機会があったので、わかったことを整理&記録。 #include <iostream> #include <boost/dynamic_bitset.hpp> int main(int, char* []) { boost::dynamic_bitset<> n; n.append(85); n.append(255); std::cout << n << std::endl; return 0; } 実行結果 0000000000000000000000001111</boost/dynamic_bitset.hpp></iostream>…

Big Brother

〈ビッグ・ブラザー〉率いる党が支配する超全体主義的近未来。ウィンストン・スミスは真理省記録局に勤務する党員で、歴史の改竄が仕事だった。しかし彼は、以前より完璧な屈従を強いる体制に不満を抱いていた。ある時、奔放な美女ジュリアと出会ったことを…

ソフトウェア開発の請負と内製と

それから...メーカー側に「良い商品を作ろう」っていうモチベーションが低下したのもあるのかもしれない。開発は下請けに投げて、メーカーのプロパーは下請けの管理をやるのがメインで、自分が技術に関わる機会が減るというケース。 機能仕様は押さえている…

std::listに要素をまとめて追加する方法

C++

daiki41ti 【急募】std::listに要素をまとめて追加する方法 望んでいる解決法ではないかもしれないけれど。 #include <iostream> #include <list> #define numberof(array) (sizeof(array)/sizeof(*array)) int main(int, char* []) { int array[] = { 1, 2, 3, 4, 5 }; // </list></iostream>…

UMTP認定試験を受けてきた Level2

3月のLevel1に続き、Level2を受験。玉砕しました。 モデリングは悪くないのだけれど、周辺の知識が不足している模様。慌てずに勉強しなおそう。しかし…。このばらつき様はなんだろう。 セクションタイトル 得点 全般 0 ビジネスモデリング 100 要求分析モデ…

電話は「もの」か「しくみ」か

「電話」っていう言葉がさすのは「もの」か「しくみ」かというと、意外と曖昧な気がします。個人的には、どっちかというと遠隔地の話者の通話を可能にする「しくみ」という印象。「もの」として見る場合は「電話機」というのが適当かもしれない。 これが「携…

携帯電話を修理に出した

現在使用中の、スライド式の携帯電話の、本体側と液晶側を繋ぐフレキシブルケーブルが断線。開くと画面が表示されない状況に。一週間ほど前から予兆があってだましだまし使っていたんですが、さすがに真っ黒な画面を見て諦めました。 で、ショップでのやり取…

システムエンジニアは和製英語らしい

気になっても調べるまではしていなかったんですが、「システムエンジニア」という言葉が奇妙に感じてきてとまらなくなったので調べてみたら。 システムエンジニア - Wikipediaより システムエンジニア(SE) とは、情報システムの職域をあらわす和製英語である…

プログラミングについて討論したいとき

ふと思ったことを記録。プログラムとかプログラミングについて討論したいけれど、近くにそういった人がいないとき、みんなどうしてるんでしょう? そういった集まりとかって、わたしが知らないだけで普通に行われているんでしょうかね? …とか言っていても、 P…

永和さんが引っ越しされたようです

オブジェクト倶楽部の母体、永和システムマネジメントさんの東京支社が引っ越されたようです。以前の芝浦は学生時代に通ったこともあり親近感があったんですが、微妙に距離があってなかなかイベントに参加できなかったんですが、上野なら参加しやすくなりそ…

会社勤め

いままでよく会社勤めを続けることができたと思う(いまにも会社を辞めそうなセリフになってしまった…そういうわけではないです)。 学生の時分から、会社勤めができるような気がしなくて。協調性がないというか、自分の領分と他人の領分が重なることに居心地…

コミックス「数学ガール(下)」

今日は発売日。購入しました。 今回も冒頭から気持ちいいぐらいバリバリ数式がでてきます。数学ガール 下 (MFコミックス フラッパーシリーズ)作者: 日坂水柯,結城浩出版社/メーカー: メディアファクトリー発売日: 2009/07/23メディア: コミック購入: 18人 ク…

Cygwin/GLUTが使えない

昨日のコードをWindows/Cygwinでも動かそうとしてみた。が、リンクエラーになる。OpenGLやGLUTのライブラリのインストールに失敗したかと、インストールを何度もやり直すが解決せず。 どうにもわからないのでネットで検索をかけたら、id:mokeheheさんのブロ…

ポイントフリースタイル

投稿してしばらく経ってから、これは、 turnRight :: Direction -> Direction turnRight d = toEnum (((fromEnum d) + 1) `mod` 4) turnLeft :: Direction -> Direction turnLeft d = toEnum (((fromEnum d) + 3) `mod` 4) こう書けることに気がついた。 tur…

HaskellでOpenGL(再放送)

どう書く?orgに投稿したものにちょっと手を加えたものを、備忘録代わりにこちらにも投稿。 「event handlers」以下が、OpenGL/GLUTを使って時間経過とともに状況(表示)が変わるものを表示するプログラムを書くときのテンプレートになると思います。draw関数…

文字列の前後の空白文字の削除

C++

#include <string> #include <algorithm> #include <functional> #include <cctype> std::string trim(const std::string& s) { std::string::const_iterator left = std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun(std::isspace))); std::string::const_reverse_iterator right = std::f</cctype></functional></algorithm></string>…

もしかしてメーカというものは…

開発を請負へと発注して製品を作っていては、技術の空洞化が起こるんじゃないかと考えていたのだけれど。 もしかしてメーカというものは、製品を作れれば、技術がなくてもいいということなんだろうか。 怖い考えになってしまった。

リストにおけるdo式

コメント欄で教えて頂きました(ありがとうございました)。コメント頂いた内容の繰り返しになりますが、理解した内容をなぞっておさらいしたいと思います。 まず、つまずいたのがこの部分。 k m m' = do { x <- m; xs <- m'; return (x:xs) } do式の理解が不…

「リストのリストにsequenceを適用すると直積が得られる」のはなぜか考える

教えてくれることを期待して思考停止しているようではダメダメなので、理解できるところまで考えてみる。基本に立ち返ると、sequenceのソースは次のようになっているのがここからわかる。 sequence ms = foldr k (return []) ms where k m m' = do { x <- m;…

リストのリストにsequenceを適用すると直積が得られる

どう書く?orgのお題より。リストのリストにsequenceを適用すると直積が得られる。 $ ghci Prelude> sequence [[1,2,3], [4,5,6]] [[1,4],[1,5],[1,6],[2,4],[2,5],[2,6],[3,4],[3,5],[3,6]] Prelude> sequence ["abc", "def"] ["ad","ae","af","bd","be","b…

C/C++スタイルのコメントの除去

C++

以前、ストリームから入力を得て、コメントを除去した結果をストリームに出力するを書いたことがあるんですが、いざ使ってみようと思うと使い勝手が悪い。ストリームが悪いわけではないけれど、読み込んだ文字列に対してコメント除去を施そうとするときとか…

あたらしい言語を学ぶ

ErlangとLuaをぼちぼちと学習中。 同時進行させると、案の定、言語仕様がゴッチャになります。ErlangもLuaも何ヶ月か前に初めて知った言語ですが、最初に見たときは何となく言語仕様がスッキリしない感じがあったので深入りしなかった(できなかった?)んです…

初期化リストの途中で例外が発生したときの振る舞い

C++

コンストラクタの初期化リストの途中で例外が発生した場合、どんな振る舞いになるのか気になったのでためしてみました。 #include <iostream> #include <stdexcept> class Foo { public: explicit Foo(int id, bool bad = false) : id(id) { std::cout << "Foo::Foo(" << id << ")</stdexcept></iostream>…

情報に手を伸ばす距離

Leopardはじめました。それから一週間が経ちました。もうすぐ次期バージョンがでるというときにレビューもないので、Leopardを使って感じたことを。 Tigerからアップグレードした直後はこれといって代わり映えしない感じがしたんですが、触っているうちに今…

定数マップに関する考察

C++

QuickSortから始まってここまできましたが、なにをしたかったかというと、ダブルディスパッチのエントリで書いたように、「ローコストのスタティックなしくみ」を実現するための試みでした。C++はライブラリでどうにかするタイプの言語なので、モダンな言語…

定数マップ

C++

昨日のエントリの続き。 ソート済み配列が手に入るとマップが作れます。ソートされていなくても線形検索すればいいんですが、それはそれ、効率よく検索したいじゃないですか。ソート済みなら二分探索ができるので、二分探索で実装した定数マップです。 以下…

ソート済みの定数配列

C++

後から拡張もせず、参照するだけなので定数配列で充分なんだけど、要素はソートされていてほしい…というときのために。 本当はコンパイル時に要素がソートされるといいんですが、思いつかなかったので次善の策として。 2009/06/16 訂正:operator []がconstに…

コンストラクタ/デストラクタ内での仮想関数の振る舞い

C++

デストラクタからオーバーライドされた仮想関数が呼べない - imHoリンク先のページにもあるように、C++ではでは構築時には先に派生元が構築され、破棄時には派生元が後に破棄されます。つまり、派生元のコンストラクタ/デストラクタが動いているときは派生先…