読者です 読者をやめる 読者になる 読者になる

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

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

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(引数) そういうときは、参照ラ…

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

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

Javaでマルチスレッドプログラミング。基礎の基礎サンプル。

マルチスレッドって何? まず、スレッドとは1つの計算処理の単位である。 実行スレッドとはアプリケーションの命令を最初から1つずつ順番に実行するための実行の制御のことである、 マルチスレッドプログラミングとは、複数のスレッドを同時に実行させるこ…

Eclipseでタブをスペースに表示を切り替える方法と、改行文字を非表示にする方法。

Eclipseでタブをスペースにする方法 右上の「ウィンドウ」→「設定」→「Java」→「コード・スタイル」→「フォーマッター」→Eclipse[ビルトイン]の横にある「編集」をクリック 「一般設定」の下のタブ・ポリシーを「スペースのみ」にする。 プロファイル名は「E…

Java 仮引数と実引数の違い

ことば 暗黙の決まりは、いつか必ず忘れる。たとえば、initという名前のメソッドが初期化を意味することはコードを見れば自明だと思うかもしれない。しかし、それは未来の誰かにとっては自明ではない。暗黙の規則は、言語機能やプログラミングの技法で強制す…

ソフトウェアテストに関する用語を1問1答形式でまとめた。

JUnit実践入門を読んだのでまとめる。 1ページ1ページ手抜きなし、解説が非常に詳しい良書である。 個人的に、ちゃんと用語が定義してある本は信頼できると思っている。 この本は信頼できる本だ。・良いプログラマがユニットテストを実践する理由とは? 自分…

LinuxにJDKをインストールする。

■Javaがインストールされていないことを確認する [sysmgr@localhost tmpdir]$ java -version bash: java: command not found■ルートユーザに変更 $ su -■インストールパッケージが転送されていることを確認する [root@localhost tmpdir]# ll total 137516 -r…

XML 要素を取り出す

JavaでXMLファイルの要素を取り出して、新たなファイルに書きだしてみる。他の本を読んでもわかりづらかったものが、やさしいXMLを読んだらだいぶ理解が進んだ。 さすがは高橋麻奈さんである。 初心者に優しい。ご本人もきっとお優しい人であるに違いない。…

ネットワークプログラマはPrintStreamを避けるべき

Javaネットワークプログラミングを勉強したため、内容のまとめ。 Javaでネットワークプログラミングを行う際の、各APIの中身を詳しく説明してくれているため、本質を追求する勉強ができる。Javaネットワークプログラミング 第2版作者: エリオット・ラスティ…

【プログラミング 114.5時間目】JUnitの勉強の続き。

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)作者: 渡辺修司出版社/メーカー: 技術評論社発売日: 2012/11/21メディア: 単行本(ソフトカバー)購入: 14人 クリック: 273回この商品を含むブログ (61件) を見る 「JUnit実践入門」 テ…

【プログラミング 109.5時間目】Javaで文字列を特定の文字数で区切って、配列に入れるなど

例えばツイッターでbotなんかを作る時、文字数を確認しないとツイートする文字がはみ出てしまうかもしれない。 140文字で区切って、(続く)と表示して次のツイートを表示させたいときもあると思う。そのためには文字列を編集しなければいけない。 300文字のツ…

【プログラミング 105.5時間目】JUnitを使ってみた。

JUnitの本が出ていたので迷わず購入した。これは超期待と思って勉強すると、期待通りの詳しい解説だった。 JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)作者: 渡辺修司出版社/メーカー: 技術評論社発売日: 2012/11/21メディア: 単…

【プログラミング 104.5時間目】Java コレクションのまとめ

■マップ ・マップの抽象的な意味はキーと値の対応の集まりを管理するモノ ・マップのキーと値にはそれぞれ任意の参照型オブジェクトが使えるMapインターフェースの代表的なメソッド containsKey:指定したキーの存在チェック containsValue:指定した値の存在…

Listの整理・まとめ

パーフェクトJavaで最も素晴らしいのは「コレクションと配列」の章だと思う。 コレクションがまるで意味不明だった時に、これを読んで目の前がパーッと開けたような気持ちになれた。パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)作者: アリエル・ネ…

数値型

名著「パーフェクトJava」を復習したので、まとめ。パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)作者: アリエル・ネットワーク株式会社,井上誠一郎,永井雅人,松山智大出版社/メーカー: 技術評論社発売日: 2009/09/24メディア: 大型本購入: 26人 ク…

Java GUIのことはじめ。

Java Swingの由来は、スウィングダンスである。 長い間明かされていなかったが、Sharon Zakhourの好奇心により解明された。Javaの考え方の基本として、Write Once, Run AnyWhereというものがある。 一度書いたらどこでも動く、という素晴らしい理想である。 …

日本語のツイートを全検索する

なんかpublicTimelineがうまく取得できないと思って、JavaDocを見てみたら、 twitter4jの2.1.X以降は getPublicTimeline() メソッドがサポートされていないっぽい。 http://twitter4j.org/ja/javadoc.htmlなので、とりあえずは以下のサイトで2.0.8のバージョ…

フォロワー数やリツイートされた数を表示する

・あるツイートがリツイートされた数を取得する。 package twitter.framework.util; import java.util.List; import twitter4j.Status; import twitter4j.Tweet; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFac…

Twitter4jで遊んでみた(特定ユーザーのツイート取得など)

・Twitterで特定のキーワードの話題を検索するサンプル(Twitter4j) package twitter.framework.util; import java.util.List; import twitter4j.Query; import twitter4j.QueryResult; import twitter4j.Tweet; import twitter4j.Twitter; import twitter4j.…

XML-RPCについての基礎知識のまとめ

・XML-RPCとは、リモートプロシージャコールの略であるRPCに特別な味付けを施したもの。・RMI(Remote Method Invocation)とは、リモートメソッド呼び出しともいう。・RMIはJava世界における分散コンピューティングの心臓部であり、EJBの他、多くのエンタープ…

【プログラミング 48.5時間目】Javaでマルチスレッドの基礎

Java言語プログラミングレッスン 第3版(下)作者: 結城浩出版社/メーカー: ソフトバンククリエイティブ発売日: 2012/11/16メディア: 大型本 クリック: 4回この商品を含むブログ (9件) を見る結城浩さんの信頼のわかりやすさ。 マルチスレッドの説明もとてもわ…

【プログラミング 45時間目】結城浩さんのJavaプログラミングレッスンを使って、Javaの基礎の振り返り。

Java言語プログラミングレッスン 第3版(下)作者: 結城浩出版社/メーカー: ソフトバンククリエイティブ発売日: 2012/11/16メディア: 大型本 クリック: 4回この商品を含むブログ (9件) を見るある程度理解が進んだと思っていましたが、ここで一旦基礎の振り返…