Program
あなたが学ぶべき10の現代実用プログラミング言語 (1/4):CodeZineこの記事自体で挙げられている言語については他の方も色々と言及されているのですが、SQLのこともたまには思い出してあげてください。 SQLもJavaScriptやC++同様、勘違いされている言語だ…
最近++に関する話題が多いので、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が嫌いで嫌いでたまらなかった。 p "Hoge, World!" if a > 0 なんて書けてしまえるくせにbegin-endだったりするところが嫌いだった。 10.times {|i| p i } なんて書けてしまえるのに++がないのが嫌いだった。 nullじゃなくてnilなのが嫌いだっ…
がいつの間にか2.002になってた。1.00はずっと出なかったのに、1が出たと思ったらもう2ですか・・・
そういえばパソコン甲子園ってハード的要素何も無いのに何で「パソコン」甲子園なんだろう?素直にプログラム甲子園でいいよな。 まぁ、そんなどうでもいいことは置いといて、今日も2006年のパソコン甲子園の本選の問題(PDF)を解いてみる。今日は7問目。 問…
今日は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でJavaをダイナミックに分析する (1) JavaDoc、バイナリファイル、ソースコードからクラス図を生成 | エンタープライズ | マイナビニュース 便利そう。暇があったらいろいろいじりたいな。
アノテーションの構文は結構独特で、触ったことのない人はソースをみると困惑すると思う。 まず、手始めにこんなアノテーション public @interface Hoge { int value() default 0; } ・・・これはJavaなのか?いや、Javaですよ? アノテーションは@interface…
Jakarta Commons クックブックに以下のような記述が。 Transformerは変換ロジックを分離し、カプセル化します。ドメインモデル間で、あるいはオブジェクトタイプ間で変換が必要な場合は、その変換ロジックをTransformer内にカプセル化すべきです。 これはTra…
ちょうど今悩んでた最中の話題が! カプセル化と情報隠蔽 - 人類みんなごくつぶし カプセル化と情報の隠蔽が別物で、カプセル化=クラスそのもの? - 神様なんて信じない僕らのために 続 カプセル化と情報隠蔽 - 人類みんなごくつぶし カプセル化と情報隠蔽…
Javaで文字列の連結の方法にはいくつかある。まずはそれらの方法をまとめ、最後に新しい方法を考えてみる。 +演算子 一番直感的なのは、+演算子による連結だろう。しかし、これはコンパイル時定数同士の連結でない限り最も効率が悪いので、使うべきではない…
Swingのコマンドプロンプト風のペインを探しているんだけど、見つからない・・・ ということで、ちょっと作ってみようかと思う。 まずは何を継承するかだけど、普通に考えてJTextComponent系列だと思う。今回はJTextAreaをスーパークラスとして作ってみよう…
C++にはfinallyがない。 昔は不便だなぁ、と思っていたものだけど、Javaにおけるfinallyの使い方を見ると、C++にはそんなに必要ない機能だということがわかる。なぜか。それはもちろん、C++にはデストラクタがあるから。 Javaでのfinallyブロックは、「何が…
題名そのまんま、メソッドがどこからどうやって呼び出されたかを見るユーティリティーを作ってみた。簡単なデバッグには結構使えるかも。 public final class LineInfomation { private LineInfomation() {} public static void dispLineNumber(PrintStream …
C++テンプレートでLispに触発されて作成。 lisp.h #pragma once // nil ====================================== struct nil { typedef nil eval; }; #define nil nil::eval // t ======================================== struct T { typedef T eval; }; #…
そう言えば、10月21日*1に第14回オープンソースソフトウェアセミナーに行きました。10月21日のほうに書ければよかったんですが、ちょっと間があいてしまったのでこちらに書きます。 内容としてはRuby on Railsの素晴らしさを布教するようなものでした。講師…
命名規約で命名規約について書いたけど、GUIに関しては少し状況が違うので、書くことに。 何が違うかというと、GUI部品があること。GUI部品といってもただの変数だけど、部品ごとにボタンであったり、テキストボックスであったり、リストであったり、ほかのG…
Page Not Found - Apple Developer Objective-CはObjective-Cのままでいいのに・・・ ま、使わないからどうでもいいけど。
日本で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には文字型はない。 文字列から一字取り出すにはcharAtメソッドを使用する。このメソッドは文字列を返…
今回はJavaScriptの演算子の中でCやJavaと比べて特殊な演算子について。 JavaScriptの演算子は基本的にはJavaと同じものが使えるが、一つだけ大きく違う点がある。それが、===演算子と!==演算子である。 JavaScriptでは==演算子と!=演算子を使用して文字列と…
今回はJavaScriptの構文の話をする。 JavaScriptにはif-else文、switch-case文、for文、while文、do-while文と、C系列の言語と同等の制御構文を備えている。さらに、Javaでの拡張for文、C#でのforeach-in文であるfor-in文や、ラベルつきのbreak文、ラベルつ…
これからしばらく備忘録もかねて、JavaScript関連の話題でも書いてみようかと*1 *2。まずはJavaScriptの型とスコープについて*3。 まず、JavaScriptの予約語にも書いたとおり、予約語としてintやdoubleといった、C系列の言語を知っている人には馴染み深い型…
まずは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なら物理的に落としてしまう可能性もないわけでもないけど・・・