argius note

プログラミング関連

Java

Javaでゲーム: スクロールの表現

Javaを使った2Dゲームの、スクロールに挑戦しました。 スクロールを表現するにあたって、題材は「迷路ゲーム」にしました。 なぜ迷路なのかというと、まず、ごく小規模で完結したゲームを作ろうと思ったからです。そして、昔の2Dゲームの方式で作ろうとして…

Firefoxの履歴をHTMLで書き出す簡易ツール (Java)

Firefoxの履歴を書き出すツールをJavaで書いてみました。

重み付き乱数列の生成 (Java)

個人的なコードを書いている中で、重みを付けた乱数列が必要になりました。 具体的には、数が大きいほど発生頻度が高くなるような乱数の生成です。これについて、どうするのが一般的なのか知らなかったので、調べてみました。 (結論から言うと、一般的な方…

Spring Web MVC をすぐに使いたい人のためのメモ

すぐに使いたかったのは私です。これは主にリンク集で構成されている短めの記事です。 この際Spring Bootに入門してしまいたい方は、最後の方のリンクを参照してください。

とりあえずStruts2+Spring4+MyBatis3の開発環境を作ってみた(2016年初夏バージョン)

きっかけは、Q&Aの対応と、下記の記事です。 3つのフレームワークで学ぶエンタープライズJava開発入門(1):Strutsを使い続けることの問題点&現在有力なJava EE、Spring、Play Frameworkの基礎知識とアーキテクチャ - @IT http://www.atmarkit.co.jp/ait/…

Javaでゲームパッドの入力をJInputを使って実現する

突然、ゲームを作ってみたくなりました。ミニゲーム的なものは過去に何度も作ったことはありましたが、アクションとかRPGのような本格的なゲームは作ったことがありません。 それで、欲張りなことに、UnityやAndroidやSwift、つまりゲームエンジンやスマホア…

ネットワークが切断されたことをアラームで知らせるツールを作る(解説付き)

我が家のパソコンのうちWindows8.1のノートパソコンだけ、ルーターとの相性が悪いのか、2日に1回程度はネットワークが切断されてしまいます。 そのため、2クリックでネットワーク接続を再起動するスクリプトを書いて対応しています。 Windows ネットワーク接…

Swingで矩形選択範囲の表現

下記の投稿を見て、良いサンプルが見つからないので自分で書いてみました。 Graphicsクラスの透明色設定について(22654)|teratail https://teratail.com/questions/22654

サンプルコード:コマンドラインのQuizゲーム

色々ありまして... リハビリのために、ごく簡単なゲームを作ってみました。 コマンドラインのQuizゲーム (Java 7 and later) - Gist 下記ページを参考にしています。クイズを作りたいのだがうまくいかない。(21547)|teratail 選択肢数が1~10まで設定できる…

System.in, System.out, System.errを再初期化する

またかなり間が空いてしまいましてすみません。今さら感あふれるネタですが、知らなかったのでメモ。 結論を先に書きます。下記ページで知りました。 java - Resetting Standard output Stream - Stack Overflow http://stackoverflow.com/questions/5339499…

Maven Siteプラグインの参考になるかも...? Minestra 1.0.0 beta1

下記エントリーで書いたライブラリーのバージョン 1.0.0 beta1 です。Mavenリポジトリーにはまだ登録してません。いずれ登録します。 習作:Minestra - Java8以降対応のユーティリティーライブラリー #java8 Release v1.0.0 beta1 - argius/minestra Maven S…

Mavenコンパイラープラグインでcompactプロファイルを指定する

また前回から1ヶ月空いてしまったので、つなぎとして超短いエントリーを書きます。 compactプロファイルを指定してコンパイルするには、こうします。 $ javac -profile compact1 *.java Mavenのコンパイラープラグインで指定するには、こうします。コマンド…

習作:Minestra - Java8以降対応のユーティリティーライブラリー #java8

Java8未満を切り捨てて色々と作ってみるシリーズ。 Releases · argius/minestra - GitHub Java8以降向けのユーティリティー集ライブラリーです。 名前は "Minestra" 。イタリア語でスープの意味です。名前には特に意味はありません。

Spoon(INRIA)を使ってプログラミング可能な静的コード解析を試す #java

Spoonは、プログラミング可能な静的コード解析&ソースコード変換ライブラリーです。Spoon - Source Code Analysis and Transformation for Java

Javaで1行ずつテキストデータを読み込むイディオムの変遷

テキストデータを読み込む場合、言語にかかわらず1行ずつ読み込んで処理します。ここではこのイディオムを"read-lines"と呼ぶことにします。 スクリプト言語なんかだと大抵、最初からforeachで済んでしまっていたりしますが、初期のJavaではちょっと面倒な手…

Apache POIでExcelの図形の(拡張?)書式設定を変更する

Apache POIを使ってExcelの図形(シェイプ)を作って 図形の書式設定を変えることは、一部の書式は変更することはできますが、それ以外の書式設定を変えるにはどうすれば良いのか、ちょっと調べてみました。今回の結論はリフレクションを使ったものになりま…

Concurrency Utilitiesの「再」まとめ - Java8対応版

以前、このような記事を書きました。 Concurrency Utilitiesを使った並列処理・マルチスレッドのおさらい (2013-12-26) 前回の内容は、Concurrency UtilitiesだけでなくJavaのマルチスレッドの話も一部含んでいましたが、今回は、Concurrency Utilitiesだけ…

メモ:ReentrantReadWriteLock で Read-Write Lock

Read-Write LockのおさらいとReentrantReadWriteLockの実例をまとめました。短めです。

匿名クラスとラムダ式で作られるクラスファイルの違い

短いエントリーです。

メモ:java.util.concurrent.RecursiveTaskのFibonacci

Java7で導入されたFork/Joinフレームワークの中に、java.util.concurrent.RecursiveTaskというクラスがあります。これは、再帰を使用して計算を行った結果を生成するためのForkJoinTaskの実装です。 このクラスのAPIドキュメントのページを見ると、例として…

Eclipse Project Generator - JavaFX 8でツールを作ってみた

JavaFXの練習の続きです。今度はちょっとしたツールを作ってみました。GitHub => https://github.com/argius/eclipse-proj-gen

JavaFX8で電卓を作ってみた

題名の通り。今回は短編です。 要約すると、「VB感覚でGUIアプリが作れるようになってスゴイ!」です。コードだけ見たい方は、Gistに登録したのでそちらをどうぞ。 Calculator written in Java 8 with JavaFX 8 + SceneBuilder 2.0

Javaのシステムスレッドについて調べてみた (Java8)

システムスレッドについて、あまり知らなかったので、調べてみました。 それ以外にも、APIで生成されるスレッドや、スレッドグループについても、少し触れています。 参考リンク HotSpot Runtime Overview - OpenJDK JVM Internals (JamesDBloom - Blog) Jav…

Eclipse4.4JavaEE + Tomcat7 でJavaEE6開発環境を構築

Eclipse JavaEE 4.4 (Eclipse IDE for Java EE Developers Luna) とTomcat7を使って、JavaEE6の開発環境を1から構築します。 JavaEE6入門ではなく、JavaEE6入門のためのEclipse環境を作るのが目的です。 今回はスクリーンショット多めにしてみました。 pom.…

Java8のStreamとDateTime APIで日付のストリームを作る

今回は小ネタです。前回の続編と言えなくもないかもです。 Java8のStreamとDateTime APIを使って、Stream的に日付の順列を処理する方法です。

架空の拡張-filter,mapをStreamを使わずに組み込むとしたら

Java8では、Stream APIにより、コレクションの関数型ライクな操作ができるようになりました。 mapのような処理が1行で書けるようになってうれしい反面、もうちょっとすっきりしたのが良かったな、という不満もあります。 ただ不満を言っているだけの人になる…

ツールAPI(javax.tools)でJavadoc出力 #java8

ちょうど1ヶ月前に、カスタムDocletでJavadoc情報をCSV出力というエントリーを書きました。 今回は、Java8から使えるようになった、javax.tools.DocumentationToolを使ってJavadocを実行するプログラムを試します。

Java SE 8 (5) - プラットフォーム、セキュリティー、他

最後に、API改良の残りのセキュリティー関連と、プラットフォームの変更、etc、について、説明します。 (2014-03-21追記)APIドキュメントのリンクを差し替えました。 目次 モジュール化の準備 コンパクトプロファイル セキュリティー関連 Javadoc APIのjavax…

Java SE 8 (4) - 新しいAPIと改良されたAPI

このエントリーでは、これまでに紹介した機能以外の、新しいAPIと改良されたAPIについてまとめています。 (2014-03-21追記)APIドキュメントのリンクを差し替えました。 目次 ラムダに伴うコアライブラリーの拡張 内部イテレーターとIterable#forEach Compara…

Java SE 8 (3) - 新しい言語機能

このエントリーでは、(2)で触れた「ラムダ式」「メソッド参照」以外の新しい言語機能についてまとめています。「ラムダ式」「メソッド参照」については、(2)を参照してください。(2014-03-21追記)APIドキュメントのリンクを差し替えました。 目次 仮想拡張メ…

Java SE 8 (2) - ラムダ式、メソッド参照、ストリーム

このエントリーでは、Java8の新機能のうち、最も大きな変更であるラムダ式と、それに関連するメソッド参照、およびストリームについてまとめています。 目次 ラムダ式とメソッド参照 関数型インターフェイス ラムダ式の内部表現 ラムダ式のキャプチャー スト…

Java SE 8 (1) - 概要と一覧

このシリーズは、2014-03-18に正式リリースが予定されている、Java SE 8の新機能と拡張機能についてまとめたものです。 (2014-03-21追記)予定通り、2014-03-18(現地時間)にリリースされました。APIドキュメントも公開されたので、そちらに差し替えました。…

カスタムDocletでJavadoc情報をCSV出力

Javadocの情報を、リスト形式で取得したい、具体的には、CSVで出力して、スプレッドシートとして閲覧したいと思いました。 独自でパーサーを作って、ソースコード直接orHTML形式をパースする? さすがにそれより簡単なやり方があるでしょうと思って調べてみ…

Concurrency Utilitiesを使った並列処理・マルチスレッドのおさらい

この記事は、個人的なおさらいのための、Java Concurrency Utilitiesの一部を使ったサンプルとメモです。 目新しいものは特にありません。 記事内のサンプルとAPIドキュメント参照はJava7(Java SE 7)を基準にしていますが、Java Concurrency Utilities自体は…

JUnitでテスト後にディレクトリを自動削除する機能を使う(Rules)

比較的新しいJUnitでは、TemporaryFolder(org.junit.rules.TemporaryFolder)というRuleクラスが使用できます。 テストで使った一時ディレクトリを、テストが終わった後に自動で消すことができます。 Rulesの機能は、2009-08-04にリリースされたJUnit4.7で追…

Java 8 の現状をチェック - 2013年5月下旬 (b91)

前回(2013-02-19)から3か月ほど経過しましたが、また少し状況が変わったようです。 今回は、EarlyAccess版ビルドをインストールしてみました。

Java 8 の現状をチェック - 2013年2月時点

最近は、ここで扱っている情報をリアルタイムに収集することはほとんどなくなっています。 久しぶりにJava関連の情報を集めに行ってみると...どうやら今年の秋ごろにJava8がリリースされる見込みとか。 Java7ではまとめたことですし、今回もちょっとだけ追い…

internの話

元ネタはブクマ参照。 少なくとも、Java6でコンパイラしたものをJava7で動かしても同様なので、コンパイラの話ではないと思います。internのpool実装がJava7で変わったらしく、これまではPermGenだったのが、Java7では普通のheapに置くようになったとか。 で…

AssertionのAssertion(未公開)

こっち方面から離れ気味です。 最近はアンチパターンについて主にネットで調べておりました。 そして、下記リンクのページを見つけてインスパイアされたのが今回のネタです。 (2004年のエントリなので新鮮ではないです。) Martin Fowler's Bliki in Japane…

EPWINGを使って辞書操作

EPWINGという辞書フォーマットがあるんですね。 この辺の分野は疎いので知りませんでした。 辞書データはEPWINGフォーマットのものを適当に。ライブラリは、これを使いました。 EB4J (SF.jp) final String word = "..."; Book book = new Book("..."); // EP…

RhinoでJavaAPIを使う

ついに、私の使っているほぼすべての環境がJava1.6以上を使えるようになりました。 それと合わせて、Java SE 6で導入された"JSR-223 Scripting for the Java Platform"の機能を使う機会があったので、少しまとめてみました。

JavaでUUIDを生成する

主キーの話に関連して、UUIDについても――実際は初めてのことばかりでしたが――おさらいをしてみました。

非同期でイテレーションを可能にするリスト

リストの生成を行うスレッドAと、リストのイテレーションを行うスレッドBがあって、リストListはそれぞれのスレッドの処理が始まる前にスレッドAからスレッドBに渡しておかなければなりません。 スレッドBは、Listが並列処理かどうかを知らないものとします…

JavaFX版Stew?

JavaFX2はGUIライブラリになったとの話を耳にしたので、ちょっと試してみました。

OracleJDBCのsetObjectでDATE型にjava.sql.Timestampを設定

そういえば、以前のエントリで11gではmapDateToTimestampというプロパティがデフォルトtrueで、DATE型の列がTimestampで取得できるという話がありました。 これは実際に11gで確認できました。すなわち、DATE型の列において、getObjectでjava.sql.Timestampが…

JavaでJVM言語を作ってみる - 目次

断片的な知識と想像に任せて、行き当たりばったりでプログラミング言語の作り方に挑戦しています。(2012-02-11〜2011-02-27) JavaでJVM言語を作ってみる(1) - 環境を準備する JavaでJVM言語を作ってみる(2) - バイトコード解析 JavaでJVM言語を作ってみる(…

JavaでJVM言語を作ってみる(6) - 処理系の実装

これまでの実験のまとめとして、最後に処理系を作ってみました。

JavaでJVM言語を作ってみる(5) - JavaCCとJJTreeの導入

今回は解析器ジェネレータについて見ていきます。

JavaでJVM言語を作ってみる(4) - 四則演算式をコンパイル

前回までは、JVMのコード生成について実験してきました。 今回は、ちょっとだけ解析器の方へ進んでみます。

JavaでJVM言語を作ってみる(3) - BCELでclassファイルを作る

今回は、javacを使わずにclassファイルを作ってみます。