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

ownCloudで画像ファイルへの直接アクセスを禁止する

最近導入したownCloudで1つ気になっていたことがある。それは、ファイルのフルパスをURLに入力すると、ログインしていなくても画像が表示されてしまうということである。これはセキュリティ的に非常にまずい。ownCloudはディレクトリ構成が大体決まっている…

楽しい自宅サーバ構築

私が大学院生の頃だったか、一台の安いサーバ機を買ったことがある。当時は勉強のためという名目で買ったが、ちょろっとVMを立ててみたところで飽きてしまった。最近そのサーバを引っ張り出してまた遊びはじめた。というのも、クラウドアプリケーションがは…

幸せな配属問題 その3

今回で3回目となる幸せな配属問題であるが、最近さらなる最適化の余地を見出した。それは、処理をする人の順番である。この工夫をするのとしないのとで実行時間が大きく変わってくる。どういう順番で人を処理すると速くなりそうだろうか?これは、DPのステ…

幸せな配属問題 その2

前回に引き続き幸せな配属問題について書こうと思う。今日は枝刈りについてだ。これは特別頭のいいことをしているわけではないのでさくっと説明しよう。このアルゴリズムは幅優先探索がベースであり、その各ノードはそこまでの幸福度の情報を持っている。そ…

幸せな配属問題

突然私事で恐縮なのだが、少し前に会社の配属が決まった。そんなわけで現在は配属先の部署で元気に働いているわけだが、私はこの配属で希望通りの部署に配属されなかった。これは大変残念なことだ。しかし周りを見渡すと、どうも私一人が不幸になったわけで…

D言語のデータ構造

最近気づいたことがある。D言語には基本的なデータ構造がまったく揃っていない。queue, stack, set, priority queue, unordered_set, unordered_mapなど、C++に用意されている極めて重要かつ基本的なデータ構造がないのだ。これは困った。どうしてこんなこと…

テンプレートと型の制約

関数の基本的なスタイルはシンプルだ。関数には名前があり、引数があり、そして戻り値がある。それだけだ。 しかし、人は時に強欲で、これよりもさらに高級なことがしたいと思うことがある。その最たるものがテンプレートである。テンプレート自体は今や極め…

foreachでインデックスが取得できる喜び

昔ながらのfor文が煩わしい場合があるというのはよく言われることである。for文を使いたいよくあるシチュエーションとして、配列等のデータ構造の要素に順にアクセスしたい場合が挙げられる。この場合、後でデータ構造を変更する度に要素へのアクセス方法が…

契約プログラミングとエラー処理

関数のシグネチャは、その関数がどのように使われるべきものかを規定する。これはその関数を使うユーザとの間の取り決めのようなものである。しかし、シグネチャだけでは表現の幅に限界がある。例えば以下の関数を考えてみる。 double sqrt(double num); こ…

unittestのすすめ

unit testは数あるテストのうち、最初に行われるテスト工程である。これをきちっと行うのはソフトウェア工学的にはとても重要なことだと思うのだが、私はどうにもこれがめんどくさくて仕方がない。大学院時代にコードを書いていたときには、単体テストモドキ…

D言語の動的配列

私は大学院時代にずっとC++で開発をしていたのだが、その時に一番重宝したのはstd::vectorである。要素の追加・削除が簡単であるのに加え、at()関数を使えばメモリ境界のチェックもしてくれる。境界チェックに時間を割きたくなければ[]演算子で高速にアクセ…

dmdとgdcのあれこれ

さて、D言語を書こうと思った時にまず必要なのはコンパイラだ。私の知る限り、D言語のコンパイラは3つある。 dmd : 公式 gdc : gccのD言語フロントエンド ldc : LLVMがなんちゃら(よく知らない) 私はgccやg++に慣れ親しんでいたので、まずgdcを使ってみる…

良いエンジニアがすなるブログといふものを私もしてみむとすなり

この度、はてなブログを始める事にしたのには、いくつか理由がある。まず根底にあるモチベーションとして、私が日々趣味で学んでいる様々なことを、多くの人々にも理解してもらい、喜びを共有したかったというのがある。そうした場合、形式はいくつか考えら…