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

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

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

Re:VIEWでドキュメントを書いた

XP祭り2014で、Re:VIEWを使った書物の作成について話を聞きました。 Re:VIEWとその周辺とツールを使うことで、markdownでマークアップしたテキストをPDFやePubにできるとのこと。今回、仕事の納品物のドキュメントを作成するにあって、ツールに何を使ってもO…

型システム入門

型システム入門 −プログラミング言語と型の理論−作者: Benjamin C. Pierce,住井英二郎,遠藤侑介,酒井政裕,今井敬吾,黒木裕介,今井宜洋,才川隆文,今井健男出版社/メーカー: オーム社発売日: 2013/03/26メディア: 単行本(ソフトカバー) クリック: 68回この商…

remoute: true で post する

Rails で remote: true を指定した任意のリンクでPOSTしたい時の話。 必要に迫られて探した結果、こんな感じになりました。 POSTしたとき、data-paramsの値がパラメータとして送られるようです。 そしてdata-paramsは、CoffeeScript を使い .data('params', …

型システムの学習に手を出します

今月は、3年ぶりになるXP祭りに参加してきました。さらに初めてとなるRubyKaigiに参加してきました。外の、「ちょっとした身内の集まり」の規模を超えたイベントに参加したのは、2年ぶりぐらいになります。 このところ、体力低下、気力低下、意識低下、等々…

いかにして表計算の列名をつくるか・特別篇

Haskellでたわむれていると。 id:nobsun さんが実に軽快な解法をコメントに残してくださいました。 colns = concat cns where cns'@(_:cns) = [""] : [[c:ns | c <- ['A'..'Z'], ns <- nss] | nss <- cns' ] Qiita では、さらにエレガントな解を展開されてい…

いかにして表計算の列名をつくるか・補遺・その補遺

おさらい。 いかにして表計算の列名をつくるか - エンジニアのソフトウェア的愛情 いかにして表計算の列名をつくるか・補遺 - エンジニアのソフトウェア的愛情 最終形態 先日、Haskellで無限長配列を生成する例を挙げました。再掲。 import Data.List(group)…

いかにして表計算の列名をつくるか・補遺

先日Rubyで書いたものをRuby以外のメジャーどころの言語でも実装してみます。 桁上がりで1文字戻す Ruby 再掲。 def column_names(n) result = '' begin result = (n % 26 + 65).chr + result n = n / 26 - 1 end while n >= 0 result end C++ #include <string> st</string>…

いかにして表計算の列名をつくるか

「列名って、なに?」これです。このA, B, ..., Z, AA, AB, ... という文字列です。仕事でちょっとゴルフネタ的ななにかになったので、記録しておきます。 みんな大好き、直積 列名は最初は1桁の A〜Z の26個、次に2桁の AA〜ZZ の676個、次に3桁の AAA〜ZZZ…

Lispを作ってみる、ただしC++テンプレートで

なんか、こじらせた。 これだけではLispになりませんが、もだった材料はそろうみたいなので、できそうな気がします。たぶん。 #include <iostream> // 等値 template<typename T, typename U> struct Eq { static const bool condition = false; }; template<typename T> struct Eq<T, T> { static const bool con</t,></typename></typename></iostream>…

文字列をリンクトリストにする、ただしC++テンプレートで

C++でテンプレートを使っていると、ときどき、文字列をテンプレートに渡したくなるときがあります。 ですが残念なことに、文字列をテンプレート引数にすることはできません。 // こういうことをやってみたい! (けど、できない) template<const char* S> struct Str { // </const>…

畳み込み、ただしC++テンプレートで

// リンクの終端 struct Nil {}; // 左畳み込みテンプレート template<template<typename, typename> class Operator, typename N, typename Sequence> struct Foldl { static const int value = Foldl< Operator, Operator<N, typename Sequence::head>, typename Sequence::tail >::value; }; // 左畳み込みテンプレ</n,></template<typename,>…

遅延評価if

C++のテンプレートで。 Haskellのばあい 基本に立ち返って、まずはHaskellのばあい。 Haskellは基本的に遅延評価なので、不適切な式が含まれていても評価されないのであれば全体としては正しく評価してくれます。 ここでinfinityを評価してしまうと無限再帰…

練習をしないで試合に臨むアスリートはいない

はてなダイアリーにポストしているにもかかわらず、完全にマンスリーと化しています。自らの横着が成せる技。 それはそれとして。 目減りする技能 以前に「稼働率を100%にしてはいけない、と思う」というエントリを書きました(検索してみたら、ちょうど4年…

進歩がないのか、それとも、ぐるっと回って同じ問題に再会したのか

Mac内のファイルがまた乱雑になってきたので整理をしていたのですが。2010年ぐらいの日付のファイルに書かれている内容が、このところのわたしの振舞いから生じている問題について書かれたもののように思えて、「この4年間、なにも進歩しなかったんだろうか…

会議の時間

c++

第20回 先日、「オフラインリアルタイムどう書く」が開催されました。今回で20回目でした。コンスタントに優良なお題と、みんなで集まって解くという場を提供され続けていることに尊敬と感謝の念を抱くばかりです。…。とはいえ、いまだにオフラインリアルタ…

プログラミングで稼いでみたい

Twitterで、そのアカウントでの最初のtweetを検索するサービスが話題に出ていますが。わたしも検索してみました。プログラミングで稼いでみたい— MATSUMOTO Eiji (@emattsan) 2009, 7月 31 感慨深い。 当時の自分に言ってやりたい。 プログラミングで稼ぐの…

Steinhaus–Johnson–Trotter algorithm の実装

Steinhaus–Johnson–Trotter algorithm - Wikipedia, the free encyclopedia Permutation.h #ifndef PERMUTATION_H #define PERMUTATION_H #include <vector> class Permutation { public: Permutation(int* begin, int* end); bool isIdentity() const; Permutation&</vector>…

それはおかしいと思います。

public class Shift { public static void main(String[] args) { for(int i = 0; i < Integer.SIZE + 2; ++i) { System.out.printf("%08x%n", 1 << i); } } } 実行。 $ javac Shift.java $ java Shift 00000001 00000002 (中略) 40000000 80000000 000000…

グラフの木分解〜グラフ理論とわたし

グラフを木分解します。…。木分解。わたしもひと月前まで聞いたこともありませんでした。 木分解とは。おおざっぱに言うと、グラフからルールに従って部分グラフの集合を取り出し、その部分グラフを木構造のノードとする木を作ること。くわしいことはここと…