Program

SQL・・・

あなたが学ぶべき10の現代実用プログラミング言語 (1/4):CodeZineこの記事自体で挙げられている言語については他の方も色々と言及されているのですが、SQLのこともたまには思い出してあげてください。 SQLもJavaScriptやC++同様、勘違いされている言語だ…

Javaでtimes

最近++に関する話題が多いので、Javaで++の隠ぺいを試みる。 public class CountUtils { public static abstract class InnerProc<E> { public abstract proc(int i); protected E getResult() { return null; } } public static <E> E times(int times, InnerProc<E></e></e></e>…

Rubyが嫌いだった理由

学生の頃はRubyが嫌いで嫌いでたまらなかった。 p "Hoge, World!" if a > 0 なんて書けてしまえるくせにbegin-endだったりするところが嫌いだった。 10.times {|i| p i } なんて書けてしまえるのに++がないのが嫌いだった。 nullじゃなくてnilなのが嫌いだっ…

D言語

がいつの間にか2.002になってた。1.00はずっと出なかったのに、1が出たと思ったらもう2ですか・・・

パソコン甲子園3

そういえばパソコン甲子園ってハード的要素何も無いのに何で「パソコン」甲子園なんだろう?素直にプログラム甲子園でいいよな。 まぁ、そんなどうでもいいことは置いといて、今日も2006年のパソコン甲子園の本選の問題(PDF)を解いてみる。今日は7問目。 問…

パソコン甲子園2

今日は2006年のパソコン甲子園の本選の問題(PDF)の9問目。9でぐるぐるという、なにか作為的なものを感じるけど*1、そうだとしたら記号は#じゃなくて@じゃないと*2。 問題の概略は、 「与えられた大きさのぐるぐるを表示するプログラムをつくれ」 というもの…

パソコン甲子園

2006年のパソコン甲子園の本選の問題(PDF)の3問目に違和感を感じると思ったら、2:15の場合の判定がおかしい。 問題の概略は、 「時計の長針と短針が重なったときにいたずらが発生するから、警戒するために長針と短針が近ければ"alert"、遠ければ"safe"、その…

イテレータの変数名

Hoge[] hoges = hogeService.getAllHoge(); TreeMap<String, Hoge> tmap = new TreeMap<String, Hoge>(); for (Hoge hoge : hoges) { tmap.put(hoge.getValue(), hoge); } int i = 0; for (Iterator<Entry<String, Hoge>> ite = tmap.entrySet().iterator(); ite.hasNext();) { hoges[i] = ite.next().getValu</entry<string,></string,></string,>…

ひとつの言語が使えるなら、言語の勉強は不要なのか

昨日飲み会で出てきた話題なんだけど、「ひとつの言語が使えるようになれば、他の言語は簡単にマスターできるから言語なんてずっと勉強するものじゃないよ」について。この人 (達) は、言語「だけ」じゃなくてほかの勉強もしなさいよ、ということが言いたか…

絶対値を求める

高専時代の友人から聞かれた問題がなかなか面白かった。たまにはこういうのもいいね、たまには。 問題1 擬似命令「abs a, b」は、bの絶対値をaに格納するものである。これを、分岐命令を使わずに3命令で実現せよ。ただし、CPUはRISC系、負数は2の補数を使用…

UDoc

【ハウツー】クラス構造がまる見えに! UDocでJavaをダイナミックに分析する (1) JavaDoc、バイナリファイル、ソースコードからクラス図を生成 | エンタープライズ | マイナビニュース 便利そう。暇があったらいろいろいじりたいな。

アノテーション

アノテーションの構文は結構独特で、触ったことのない人はソースをみると困惑すると思う。 まず、手始めにこんなアノテーション public @interface Hoge { int value() default 0; } ・・・これはJavaなのか?いや、Javaですよ? アノテーションは@interface…

カプセル化と情報隠蔽と(追記)

Jakarta Commons クックブックに以下のような記述が。 Transformerは変換ロジックを分離し、カプセル化します。ドメインモデル間で、あるいはオブジェクトタイプ間で変換が必要な場合は、その変換ロジックをTransformer内にカプセル化すべきです。 これはTra…

カプセル化と情報隠蔽と

ちょうど今悩んでた最中の話題が! カプセル化と情報隠蔽 - 人類みんなごくつぶし カプセル化と情報の隠蔽が別物で、カプセル化=クラスそのもの? - 神様なんて信じない僕らのために 続 カプセル化と情報隠蔽 - 人類みんなごくつぶし カプセル化と情報隠蔽…

文字列の連結

Javaで文字列の連結の方法にはいくつかある。まずはそれらの方法をまとめ、最後に新しい方法を考えてみる。 +演算子 一番直感的なのは、+演算子による連結だろう。しかし、これはコンパイル時定数同士の連結でない限り最も効率が悪いので、使うべきではない…

プロンプト風ペイン(1)

Swingのコマンドプロンプト風のペインを探しているんだけど、見つからない・・・ ということで、ちょっと作ってみようかと思う。 まずは何を継承するかだけど、普通に考えてJTextComponent系列だと思う。今回はJTextAreaをスーパークラスとして作ってみよう…

finally

C++にはfinallyがない。 昔は不便だなぁ、と思っていたものだけど、Javaにおけるfinallyの使い方を見ると、C++にはそんなに必要ない機能だということがわかる。なぜか。それはもちろん、C++にはデストラクタがあるから。 Javaでのfinallyブロックは、「何が…

メソッドの呼び出し履歴を見る

題名そのまんま、メソッドがどこからどうやって呼び出されたかを見るユーティリティーを作ってみた。簡単なデバッグには結構使えるかも。 public final class LineInfomation { private LineInfomation() {} public static void dispLineNumber(PrintStream …

C++テンプレートとマクロでLisp

C++テンプレートでLispに触発されて作成。 lisp.h #pragma once // nil ====================================== struct nil { typedef nil eval; }; #define nil nil::eval // t ======================================== struct T { typedef T eval; }; #…

第14回オープンソースソフトウェアセミナー

そう言えば、10月21日*1に第14回オープンソースソフトウェアセミナーに行きました。10月21日のほうに書ければよかったんですが、ちょっと間があいてしまったのでこちらに書きます。 内容としてはRuby on Railsの素晴らしさを布教するようなものでした。講師…

GUIの命名規約

命名規約で命名規約について書いたけど、GUIに関しては少し状況が違うので、書くことに。 何が違うかというと、GUI部品があること。GUI部品といってもただの変数だけど、部品ごとにボタンであったり、テキストボックスであったり、リストであったり、ほかのG…

Objective-C++

Page Not Found - Apple Developer Objective-CはObjective-Cのままでいいのに・・・ ま、使わないからどうでもいいけど。

HSP

日本でHSPといえばHot Soup Processorだけど、海外ではHaskell Server Pagesってのもある。どちらが先かといえば、Hot Soup Processorが96年公開、Haskell Server Pagesが00年公開ってことで、なんと日本のHSPの方が先。 いや、だからなんだということではな…

命名規約

Sugarプロジェクトの掲示板*1で命名規約についての議論をしているんだけど、興味、意見等あるなら書き込んで欲しいな*2。 C++の規約としては C++ Coding Standard C++ コーディング標準 が有名どころかな?いや、知らんけど。 C++ コーディング標準のほうはJ…

JavaScriptでの文字列

今日は文字列について。 JavaScriptでは"(ダブルコーテーション)、もしくは'(シングルコーテーション)で囲んだ部分が文字列となる。ちなみに、JavaScriptには文字型はない。 文字列から一字取り出すにはcharAtメソッドを使用する。このメソッドは文字列を返…

JavaScriptの演算子

今回はJavaScriptの演算子の中でCやJavaと比べて特殊な演算子について。 JavaScriptの演算子は基本的にはJavaと同じものが使えるが、一つだけ大きく違う点がある。それが、===演算子と!==演算子である。 JavaScriptでは==演算子と!=演算子を使用して文字列と…

JavaScriptの構文

今回はJavaScriptの構文の話をする。 JavaScriptにはif-else文、switch-case文、for文、while文、do-while文と、C系列の言語と同等の制御構文を備えている。さらに、Javaでの拡張for文、C#でのforeach-in文であるfor-in文や、ラベルつきのbreak文、ラベルつ…

JavaScriptの型とスコープ

これからしばらく備忘録もかねて、JavaScript関連の話題でも書いてみようかと*1 *2。まずはJavaScriptの型とスコープについて*3。 まず、JavaScriptの予約語にも書いたとおり、予約語としてintやdoubleといった、C系列の言語を知っている人には馴染み深い型…

JavaScriptの予約語

まずはJavaScript*1の予約語がこんな感じ。 abstract boolean break byte case catch char class const continue default delete do double else extends false final finally float for function goto if implements import in instanceof int interface lo…

落とす・・・

がんばれ!アドミンくん 第33話 − @IT 落とすって一般人にはわからないのか?まぁPCなら物理的に落としてしまう可能性もないわけでもないけど・・・