感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Java SE

Javaでファイルが作成されるのを待って、作成を検知してから次の処理を行う

Javaでファイルが作成されたことを検知して、そのファイルが作成された後に次の処理を開始したい、なんてことがあるかもしれない。 たとえば、外部からファイルが連携されるプロセスがあって、そのファイルができるかどうかをずーーーっと待って、ファイルが…

外部コマンドを実行する

引数にコマンド名を指定すると、外部コマンドを実行することができます。 このサンプルでは、以下のhoge.batというバッチファイル(DOS)を実行してみます。 echo "hoge" type nul > "C:\tmp\emptyfile.txt"type nul > ~ というのは、DOSでファイルを作成する…

SnakeYamlを使ってYAMLファイルからオブジェクトを作る

SnakeYamlというのは、JavaでYAMLをパースしたり、出力する機能を持ったツールです。 以下のWebサイトからjarをダウンロードすることができます。 https://code.google.com/p/snakeyaml/サンプルは以下を見ればたくさんあります。 https://code.google.com/p…

実行環境が変わってもファイルを読み込めるように工夫してみる

Javaでファイルを読み込もうとすると、IOExceptionが出て、ファイルが開けない。 LinuxやWindowsで環境が変わると、ファイルのセパレータが変わるからまたファイルが見つからない。環境が変わると、ファイルの場所も変わってしまう。結果、ファイルが見つか…

数値の変換と比較

■変換についてJavaには数値基本型に対応する数値クラスが用意されている。 基本型 数値クラス java.lang.Boolean boolean java.lang.Character char java.lang.Byte byte java.lang.Short short java.lang.Integer int java.lang.Long long java.lang.Float …

wait()とnotifyAll()を使ってみる。

wait(),notify(),notifyAll()メソッドはObjectクラスに実装されています。 Objectクラスに実装されているわけではありません。それぞれのメソッドの意味は以下のとおりです。 メソッド 意味 wait() 通知があるまでスレッドを待たせる notify() 待ち状態の1…

スレッドのライフサイクルとjoin()メソッドの使い方。

Javaのスレッドにはライフサイクルがあって、そのライフサイクルを押さえることが、Javaのマルチスレッドプログラミングを理解する基本となります。start()メソッドが呼び出されると、スレッドはまず実行可能状態に遷移します。 スレッドはスケジューラによ…

マルチスレッドプログラミングの入門。

最初にプログラミングを学ぶとき、ほぼすべてのサンプルで、そのプログラムはシングルスレッドで動いています。 シングルスレッドというのは、その名の通り、一つだけの処理が順番に実行されています。スレッドとは、本来は英語で「糸」という意味があります…

Javaのdouble型、float型。浮動小数点数とは。

前回の記事では整数について扱ったが、今回は浮動小数点数について。Javaは実数を表す型として、floatとdoubleを提供している。 実数とは、プラスマイナス・0・整数・分数・小数、有理数やルートや円周率などの無理数全てのこと。整数はlongとかint型で表現…

Javaで整数を使う。intとlong

Javaの基礎を復習。 パーフェクトJavaの「数値(1)」の章を参考にさせていただきました。整数の型と取りうる値の範囲は以下のとおりだが、longとかになるとわけわからない数になるので、順番だけ覚えておけばいいと思う。 整数の型 値の範囲 ビット長 byte -1…

httpclient-4.3.1を使って、プロキシ越えでHTTPリクエストするサンプル。HTTPS(443ポート)でリクエストを飛ばすサンプルも。

今日は年末の飲みの影響で、若干酔っているので、サンプルだけ(読んでくれてる人には関係ないと思うけど、ごめんなさい) サンプルはちゃんと動きます。まずは、プロキシなしでリクエストする場合のサンプル。 package sample.http; import java.io.InputStre…

Javaでマルチスレッド。スレッドの状態のまとめとjoin()メソッドを使ってみるサンプル。

昨日の勉強の続き。 スレッドのライフサイクルについて。Javaのスレッドには様々な状態がある。 一つ一つの状態を見てみよう。 新規(New) インスタンス化された直後の状態で、まだ開始されていない状態のこと。 準備完了/実行可能(Ready/Runnable) Threadオ…

Javaでマルチスレッドプログラミングの基本の復習。extends Threadとimplements Runnable。

スレッドって何? プログラムにはアプリケーションの命令を最初から1つずつ順番に実行するための実行制御がある。 この実行制御の流れを実行スレッドと呼ぶ。で、複数のスレッドを同時に実行させることをマルチスレッドプログラミングという。マルチスレッド…

Javaでシリアライズ、デシリアライズするサンプル

シリアライズとは、オブジェクトをどこかに書き込む処理のことをいう。 シリアライズされたオブジェクトを読み取ってプログラム中に戻す処理をデシリアライズという。シリアライズの目的は、オブジェクトの状態を保存すること。そして、後でその状態を復元す…

Java Commons Codecを使って、MD5でハッシュ化してみる。

タイトルが不自然な日本語だけど、要はJavaでMD5を使って文字列をハッシュ化してみようという話。その背景としては、はてなAPIのページに関心を持ったため、ちょっとずつ色々試そうかと思ったこと。自分はあまりネットサービスを使いまくったりはしないんだ…

はてブでコメントをいただいたので、さっそくSpring Frameworkでリフレクションを使ってる部分を読んでみた。

昨日リフレクションを勉強して記事を書いたら、 id:nemobaさんがアドバイスをしてくださった。 SeasarとかSpringのコードも見ると、利用方法とかもわかってさらに便利。まずは利用してみれば、見ることになるから。 ありがとうございます!早速、Spring Fram…

使っているJDKのバージョンを取得するサンプル

Spring Frameworkのソースを読んでいて勉強になったので、抜粋して使ってみる。 「org.springframweork.core」パッケージの、JdkVersionクラス。Authorは俺の中で教科書の太字的な人物であるRad Johnson様。JavaのバージョンをSystem.getProperty("java.vers…

Javaのリフレクションを使ってクラスオブジェクトを生成したり、メソッドを呼び出すためのサンプル

※追記 追加記事を書きました。 はてブでコメントをいただいたので、さっそくSpring Frameworkでリフレクションを使ってる部分を読んでみた。 ※追記ここまでリフレクションとは、実行中に型情報を取得でき、方そのものを操作対象にできる仕組みのことである。…

Javaのセットは集合の概念をプログラミングに持ち込んだもの。サンプルを書いてみる。

セットとは、重複のない要素の集まりのこと。 データは順不同で管理していて、重複オブジェクトの保持はできない。せっかく「CANSAY NUboard」 を買ったので図を書いてみると、こんな感じ。 Setインターフェースを実装しているクラスは以下の通り。 Setイン…

Javaの拡張for文の書き方とイテレータの書き方のサンプル

拡張for構文って何? リスト、配列や他の任意のコレクションの各要素を取り出して処理したいときに使う。 要素オブジェクトを先頭から1つずつループ変数に代入して、繰り返し処理を行うことができる。拡張for構文は、Java5から導入された。 これによって、定…

JavaのSVNKitで、Subversionのリポジトリを操作して、昨日から今日までのログを取得する。

SVN Kit for Javaのダウンロード 以下のURLからSVN Kitをダウンロードする。 http://svnkit.com/download.php 今回は「org.tmatesoft.svn_1.7.11.standalone.zip」をダウンロードした。ダウンロードした「svnkit-1.7.11\lib」以下のjarをプロジェクトのlibデ…

Twitter4jで特定のユーザのツイートのリツイート数、お気に入られ数を一気に取得する

好きなユーザーのツイートの過去分を取得したいというときがある。 そして、できれば膨大な過去のツイートから、お気に入られ数やリツイート数の多いものから並べてみたいということもあるだろう。 そんなときに使えるサンプルを作ってみた。Javaでツイッタ…

Mapにputしたkeyや値(value)を順番に取得して表示するサンプル

Mapをイテレータで回すサンプル Mapにputしたkeyや値(value)を順番に取得したいときは、Iteratorを使う。 Mapをイテレータでグルグル回すサンプルは以下の通り。 package mapcheck; import java.util.HashMap; import java.util.Iterator; import java.util.…

JSONICを使ってJavaオブジェクトをJSONに変換(JSON encode)したり、JSONをJavaオブジェクトに変換する(decode)サンプル

JSONICのダウンロード 以下のURL先からjsonicのjarをダウンロードして、ビルドパスに追加する。 http://sourceforge.jp/projects/jsonic/ 「jsonic-1.2.11.zip 」 net.arnx.jsonic.JSONは、JSON形式のエンコードやデコードを行うためのstaticメソッドを提供…

文字列の連結にStringBufferクラスを使うワケ(内部仕様編)

2003年に出版された化石のような本にいいことが書いてあったのでメモ。 文字列の連結にStringBufferクラスを使うワケ StringとStrigBufferでパフォーマンスに違いが出ることは、以前の記事にも書いたけれど、内部でどのように処理をしているのかはちゃんと理…

なぜ文字列の連結は+演算子を使うより、StringBuilderのappend()メソッドを使った方がいいのか

Stringを「+」で結合するのが望ましくない理由。 以下のブログで「Javaプログラマであるかを見分ける10の質問」という記事があった。 http://d.hatena.ne.jp/shuji_w6e/20110305/1299288660その中で、「文字列の連結は原則として+演算子を使ってはならない理…

dom4jやXPathを使って、JavaでXML文書を読み込むサンプル

JavaでXMLを扱うためのライブラリ dom4jはJavaでXMLを扱うためのライブラリ。 dom4jは以下からダウンロードできる。 http://sourceforge.net/projects/dom4j/files/dom4j/1.6.1/上記のURLからjarをダウンロードして、適当にパスを通す。 自分の場合は、Eclip…

dom4jを使って、JavaでXMLファイルを出力してみる。その他、XPathの詳細表記について。

前回のブログからの続き。 http://d.hatena.ne.jp/sho322/20130710/1373465211 XPathで詳細にノードを記述する 以下の2つは同じ意味である。 詳細表記 child::cars/child::car[position()=2]簡易表記 cars/car[2]軸(axis)は基準となるノードとの関係を示す。…

JavaでMySQLに接続して、値を取得して表示するサンプル。

JavaでDBのConnectionを取得するサンプル まずはMySQLのコネクションを取得するサンプルを作ってみる。 このMySQLのJDBCドライバーを指定するときの引数(ドライバのクラス名)がわからない人がいるかもしれない。 Class.forName(引数) そういうときは、参照ラ…

スレッドのライフサイクルの話。ついでに凝集度と結合度のメモ。

凝集度と結合度って何? オブジェクト指向プログラミングをする上でよく話に出てくるのが、凝集度と結合度という概念である。 凝集度というのは、クラスの機能と属性の関連性の強さを表す。 関連する機能(メソッド)や属性(変数)をあちこちに分散させずに、適…