class hoge { public: hoge() { memset(this,0,sizeof(*this)); } virtual void foo(){} }; 使い方ヒント: 「これは臭う」という行を見付けたら、各行のをクリックしてマーキングしておきましょう(要Twitter OAuth認証)
[Java] 内部的にunicodeだから日本語つかえるけど・・・いくら英語苦手だからって・・・ 投稿者からのアピールポイント これを書いた先輩に「英語で書きましょうよ!」と言ったら、「頭が固い」と一蹴された。そういうことじゃない。 ちなみに先輩はこれをコードアシストの無いただのテキストエディタで、日本語入力を巧みにon/offしてコーディングしているから、ある意味すごい。 class 会員 { private int 会員番号; private String 名前; public int get会員番号 () { return this.会員番号; } public String get名前() { return this.名前; } public void 入会する() { .... } public boolean 会員状態をチェックする() { .... } .... } 使い方ヒ
HSTRING ハンドルを処理するためのサポートを提供します。 class HString; 解説 Windows ランタイム は HSTRING のハンドルで文字列へのアクセスを提供します。HString のクラスは HSTRING ハンドルを使用して簡単にするために利便性の関数と演算子が用意されています。 メンバー パブリック コンストラクター 名前 Description
java-jaで例外処理の話をしてきました - 西尾泰和のはてなダイアリー を読んで。 Maybe は値があるかないかを型で表すことができます!そう、直和型なんです!とか言われてもイミフだと思うのです(リンク先のエントリがそう説明してるわけではないですが)。 Java の語彙で Maybe の説明をできたら嬉しい人もいるんじゃないかなぁ、とかなんとか。 ただし、書いてたら結構長くなりました。時間がある人はどうぞ。 Maybe? null より安全に「値がないこと」が扱えるものだよ スタート地点としてはこれでいいでしょう。 以降で、「なんで安全なの?」という全うな疑問に答えてみたいと思います。 問題点 int で説明すると煙に巻いてしまうような気がしたので、User クラスを見てみます。 import java.util.*; class User { final String name;
昨日書いた Java の語彙で Maybe を説明してみる - ぐるぐる〜 に予想以上の反響があってびっくりです。 色々反応もらったので、ちょっと補足を。上のエントリを読んでない人は読んでからどうぞ。 @CheckForNull でいいのでは? はい、確かに FindBugs の CheckForNull アノテーションは便利です。 でも、これが提供してくれるのは null チェックの強制です。 先のエントリは、「null より安全な Maybe」という説明でした。 ですので、それだけを達成するのであれば CheckForNull アノテーションでもいい*1のですが、後半でちょっと見たように「null より便利な Maybe」という側面もあります。 先のエントリでは bind と or だけ追加しましたが、他にも色々と追加してみましょう。 // Java8だよ! package maybe
共変戻り値型(covariant return type) 共変ってあんまり聞かない言葉だけど。 メソッドをオーバーライドした際、戻り値の型が(JDK1.4までは一致している必要があったが、JDK1.5から)サブクラスに出来るようになった。 ちなみに、共変の反対は「反変(contravariant)」と言うらしい…が、それはJavaとは無関係^^; 具体例(インターフェース) interface Interface { public Number getValue(); } class Implement implements Interface { public Integer getValue() { //戻り値の型にサブクラスを指定 return 123; //自動ボクシング } } この例では、インターフェースでは戻り値をNumberで宣言しているが、その実装ではNumberのサブ
C++にはクラス内で自分の型を取得する直接的な方法がないという問題があり、そのためにtypedef X this_type;のようなことが行われていました。 C++11にはdecltypeがあるので、decltype(*this);で自分の型を取得できます。 ただし、decltype(*this)で導出される型はXではなくX&のため、std::remove_referenceしないといけないのであまり便利ではないのでした。 #include <iostream> #include <type_traits> struct X { void foo() { // decltype(*this)::bar(); // エラー!X&::bar()はできない std::remove_reference<decltype(*this)>::type::bar(); } static void bar
node.js を代表とする JavaScript を用いた非同期プログラミング環境においては、コーディングパターンのベストプラクティスが共有されておらず、結果として品質の低いコードが多くなるという問題があるように思います。そこで、特にエラー処理をどう書くべきか、既存のライブラリを使う方法を紹介してみることにしました。 いきなりですが、ファイルの文字数を返す関数を作ることを考えてみます。Java だと以下のような感じになるでしょうか。countChars メソッドに注目すると、エラーを例外として扱っていて、モジュラーかつ簡潔になっていることがわかります。 class FileCounter { static long countChars(String filename) throws IOException { FileInputStream is = new FileInputStre
Javaのクラス宣言には5種類ある。 トップレベルクラス・ネストしたクラス・内部クラス・ローカル内部クラス・匿名クラス(無名クラスとも言われる)の5種類だ。 今回はこの5種類のクラス宣言のおさらい。 トップレベルクラス これは普段使っているクラス。拡張子が.javaのファイルを作り、そのファイル名とクラス名を合致させなくてはいけない。そのjavaファイルのトップレベルに位置する。 ネストしたクラス 「ネストしたクラス」(Nested class)とはクラスの中にクラスがネストしている状態。トップレベルクラスの内側にstaticキーワードをつけてクラス宣言を行う。 public class Outer { public static class Nested { } } このネストしたクラスは、トップレベルクラスと同等の機能性を持つ。 クラス名はOuter.Nestedという名前で扱われるが
OracleブログにJavaプログラミングに関するちょっとしたティップが「Tip #13 java.io.File Surprises (Byron Nevins)」として掲載されている。java.io.Fileの絶対パスに関する扱いが勘違いしやすいものだから注意するように、といった内容になっている。 掲載されているサンプルソールコードを若干アレンジしたものを次に掲載する。 import java.io.*; public class Demo { public static void main(String[] args) { try { String path = "/tmp/../tmp/../tmp/../"; File abspath = new File(path).getAbsoluteFile(); File canpath = new File(path).getCano
文字列を返すメソッドひとつのみの単純な書き方。 EJBの書き方 スコープとしてシングルトンが追加されてローカルインターフェースが省略可能に。 @Singleton public class EjbBean { public String message() { return "EJBだよ!"; } } JSFの書き方 リクエストスコープのManagedBean。 @ManagedBean(name="jsf") @RequestScoped public class JsfBean { public String message() { return "JSFだよ!" ; } } それを表示する方法。ELはゲッターセッターのみならずメソッドが使えるようになっている。 <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC
ここ最近,Percy Liang の Brown クラスタリングの実装を使って単語クラスタリングしていたのだけど,感覚的に実行速度が遅いと感じたので,これぐらい簡単なアルゴリズムなら再実装しても良いかと思って,以下の原著を見ながら C++ で実装してみた. Class-based n-gram models of natural language (Computational Linguistics, 1992) 単純なだけに300行ぐらいで実装できたが,相互情報量の損失の計算をサボるところが少し面倒で,既存実装と結果が一致するまでに丸一日かかった*1. 自分の実装と既存実装の処理速度を比べたところ 5-10 倍ぐらい速くなっており(大規模データを扱う場合には実行速度が 2 倍違うだけでも致命的なので)再実装して良かったと一瞬ぬか喜びしたのだけど,同じ C++ で同じアルゴリズムを実装して
Java5以降では総称型(generics)がJava言語に導入されています。総称型自体は、最近の静的な型付けのプログラミング言語で珍しいことではなく、現在の最新版では.NETのC#やVisual Basicにも導入されています。一般的には総称型をサポートするクラスライブラリを自分で正しく定義することは非常にスキルがいるが、事前に定義されたクラスを使うだけであれば、それほど難しくないとされています。しかし、Java言語の総称型は本エントリで説明するように特殊なところがあり、単に利用するだけでも他の言語に比べて遥かに難しいところがあるというのも事実です。特に総称型をパラメータ化する際に指定するワイルドカード型(List<? extends Serializable>など)の意味を正しく理解して使いこなすことは簡単なことではありません。その結果、昔のJDK1.4までのように型パラメーターのない
これは, C++プログラマであるかを見分ける10の質問 - Life like a clown の 「overload と override と hiding の違いについて説明せよ」と言う質問に対する回答的な記事です.これらの差については,本の虫: C++におけるoverloadとoverrideとhiding 辺りでうまく纏まっているので引用して終わります. 同じ名前で、他のシグネチャの違う関数セットのことを、関数のオーバーロード(overload)という。 void f(int); void f(double); Derived classがBase classと同じvirtual関数を宣言しているとき、Derived classのvirtual関数は、Base classの同virtual関数を、オーバーライド(override)しているという。 struct Base { vir
今回は統一アクセス(プロパティ構文)がなかなかイカしてる件について。C#とかRuby,Pythonやってる人からすると何を今頃という感じなのですが。 Scalaで統一アクセス(プロパティ構文)を使う Scalaでフィールドを宣言する場合は以下のような書き方になります。 class Employee(name_ : String) { var name = name_ } クライアント側のコードは以下。 val e = new Employee("Kato") e.name = "Kato" println(e.name) // Kato 追記: 上記のようなコードは以下と同じ意味なので、こちらのほうが短くてわかりやすいので適切。 class Employee(var name : String) Employeeのnameはpublicなフィールドですね。*1 nameフィールドには大文字
Vaadinによるボタンのイベント処理 前回では、Java用のWebアプリケーションフレームワーク「Vaadin」を用いて入力フォームをレイアウトする例を紹介した。今回は、それに対してボタンがクリックされた場合のイベント処理を追加してみる。 Vaadinのイベント処理は、AWT/Swingと同様に、コンポーネントオブジェクトに対してaddListener()メソッドを用いてリスナを登録することで行う。ボタンがクリックされた際に発生するイベントはButton.ClickEventであり、これを受け取るリスナはButton.ClickListenerインタフェースとして定義されている。したがって、まずはButton.ClickListenerをimplementsしたクラスを作成し、そのインスタンスをaddListener()でButtonオブジェクトに登録すればいいということだ。 Butto
Scalaのクラスをちょっと解剖して、なぜそうなっているか読み取ってみようと思います。 ScalaのクラスをJavaのクラスに変換してみる まず、こんなScalaのクラスを作ってみた。コンストラクタに氏と名のフィールドを二つ取る単純な人名クラスです。 class PersonName以降のカッコのところは、コンストラクタの引数を表しています。また、その引数そのものがフィールド定義となります。 package test class PersonName(val firstName:String, val lastName:String) これをscalacでクラスファイルにした後、jadでデコンパイルしてJavaのソースファイルにしてみました。以下のJavaコードで読みとくと簡単に理解できると思います。*1 package test; import scala.ScalaObject; pu
追記: 指摘の通りで、現実的な連結回数での計測でもないですし、統計手法を用いた分析をしていないので、このエントリの計測値は当てにしないでください。なので以下のブログを参考にしてください。 currentTimeMillis()で計測しておいて plusTime:14780, concatTime:7053, sbuilderTime:7, sbufferTime:13 とか、その7とか13の有効数字はいくつだっての。 激しく今更感があるタイトルですが(;・∀・) 昔に取り上げたのですが、 文字列の結合をやるからといって、すぐにStringの+をつかってはいけない - じゅんいち☆かとうの技術日誌 Stringの+演算子は間違った使い方するとパフォーマンスが低下しますよっていう話題。若干ネタ成分ありますが、ご容赦ください。 これ系の話題は自分的にはオワコンなんですが、最近、また話題を見つけた
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く