JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
今月で今やってる仕事の契約が切れるので,ここで培ったノウハウなどをメモしておこうと思う。 しかし,今後この手の開発系の仕事ができるとは限らないってのが悲しいところ。 プロジェクトポータルまわり とりあえず,Subversion(SCM), Trac(ITS/Wiki), Hudson(CI)は必須。この3セットがないプロジェクトなんてうんこ。 とにかくTrac-Subversionの連携が強力なので,Subversion以外のSCMは無視していい。HudsonはCIつうよりプロジェクトダッシュボードとして使うのが吉(数あるプラグインを有効利用しよう)。 marsのメモ - Trac marsのメモ - MacroBazaar - The Trac Project marsのメモ - 角谷HTML化計画(2006-04-25) marsのメモ - trac-post-commit-hookが
http://d.hatena.ne.jp/tokuhirom/20100716/perlenv モダンなPHPの開発環境の構築方法 - 肉とビールとパンケーキ by @sotarok モダンなPythonの開発環境の構築方法 | TRIVIAL TECHNOLOGIES 4 @ats のイクメン日記 まだJava版を書いてる人がいないみたいなので、一応書いてみるよ。--); 前提はWindows環境です。Linuxでもそうは変わらないと思うけど、Macだと違うかも。 Macの場合はMac OS X にJavaの開発環境を設定する - やさしいデスマーチを見ると良いかも。 インストール OracleからJDKをダウンロードしてインストール。Macは最初から入ってますね。 ダウンロード先はここね。 Oracle Technology Network for Java Developers |
We’re getting things ready Loading your experience… This won’t take long.
JSONとJSONIC JSONはJavaScript Object Notationの略で、JavaScriptでのハッシュとリストの記述法を利用したテキストベースのデータフォーマットだ。JavaScriptではeval()関数でオブジェクトに変換できるなど取り扱いが容易であるため、Ajaxでのデータ交換フォーマットとして利用されることが多い(セキュリティ面の問題から実際にはeval()関数で評価せず、JSONパーサを利用するほうが望ましい)。 JSONICとはJavaオブジェクトとJSONを相互変換するためのオープンソースのライブラリだ。JSONIC以外にもJavaで利用可能なJSONライブラリにはJSON-libなどがあるが、JSONICは使い方が簡単で依存ライブラリもなく、XMLからJSONへの変換や高度な拡張性など、機能面でも優れている。 JSONというとAjaxでのデータのやり
こんなコードを書いてみる。 public class Test { public E method1() { Object o = new Object(); return (E) o; } public E method2() { E obj = method1(); return obj; } }で、これがEclipseのコンパイラだと通るけど、 javacだとコンパイルエラーになる。 コンパイルエラーの内容はこんな感じ。 Test.java:8: 型パラメータ E を判別できません; 型変数 E (上限 E,java.lang.Object) の固有の最大インスタンスが存在しません。 E obj = method1(); ^正直、エラーのメッセージの意味がまったくわからん。 うーん、、、 ちょっと探してみたけど、これと同じことなのかなぁ。 https://bugs.eclipse.o
はじめに 皆さんは、JavaでCSVを扱うときに苦労した経験はないでしょうか。 CSV(Comma-Separated Values/Character-Separated Values)はデータをカンマ(,)やタブなどで区切って並べたテキスト形式のデータで、表計算ソフトやデータベースなどとのデータ交換のしやすさや可読性のよさなどから、古くから広く使われているデータ形式です。 このCSVのデータ形式には、さまざまな「方言」があり、データの中にカンマ(,)が入っている場合や、データをダブルクォーテーション(")で囲む場合、データの中にダブルクォーテーションがありそれがエスケープされている場合、データの中に改行がある場合などが存在します。また、CSVのデータ構成にもさまざまな種類があり、データの先頭行をヘッダとする場合や、コメント行や集計行がある場合、日時データを日付と時刻それぞれ別々の列とす
バグ修正はプログラマの仕事の一つですが、このうちのかなりの時間は問題を再現することに費やされます。 症状からバグの全容が推察できる時もあるのですが、多くの場合には、手元で問題を再現し、更なるデータを集めることによって始めてバグが理解されるからです。しかし、環境に依存する問題などは再現が難しい場合もあります。どうしたらよいでしょうか。 ロギングというのがよく行われる解決・予防策ですが、「デバッガを走らせて変数xの値を教えてくれればいいのに!」と思った事があるのは私だけではないと思います。ロギングと異なり、デバッガは予めプログラムに障害発生を予期するコードを埋め込んでおく必要はありません。また、呼び出し元のローカル変数をアクセスしたり、任意の式を評価したり、あるいは変数の値を変更することもできてしまいます。当たり前ですが、障害分析ツールとしてはデバッガはずっと強力だからです。 ではなぜユーザー
_ コネクションプール いつもはだらだらと最大5クライアントくらいからのアクセスがあるとすると、コネクションプールは5つ用意しておけば良いわけだが、ある日、突然アクセスが集中して同時に40クライアントをさばく必要が出る。当然、その時点で40コネクションが作られる。 この40コネクションがプールに残った状態で、またアクセスが平常に戻るとする。賢いコネクションプールであれば、プールされたコネクションを順に回すから40コネクションはまんべんなく利用できる。LIFOというかキューで管理しているような場合だ。ここで、FIFOを利用されるとつまりスタックだが、底から35コネクション分はまったく利用されない。 そして1週間くらい経過したところで、また40とか50とかの嵐が吹く。 1週間何もしなければそのコネクションは無応答非活性(non acitivity)タイムアウトとかしているだろう。しかし、余分な
イマドキの Java には enum があるんですよ実は、という話。 知ってるよそんなこと!な人は読むまでもないかも。 enum って? 列挙型のこと。C とか C++ とか C# とかでおなじみのアレ。 単純な enum は Java でもこれらの言語の enum と同じような記述になるけど、これらの言語の enum が整数型をベースにしているのに対して、Java ではオブジェクトをベースにしている点が異なる。 まぁその話は後ほど・・・ 単純な enum ただ列挙するだけの enum なら、本当に C や C++ や C# とほとんど変わらない。 // 信号機の色 enum SignalColor { RED, BLUE, YELLOW } ただこれだけ。末尾には、余分なカンマがあってもいい。 enum SignalColor { RED, BLUE, YELLOW, } 更に、末尾にセ
GC周りでトラブルシューティングした際の経験や、Web等で調べたことをまとめてみる。 前提 ・JVMは、Sun Javaを想定。(他は使ったことないです。。。) ・Sun Java 1.5-1.6を想定。 目標 マイナーGC、Full GCそれぞれが頻発することなく、かつそれぞれの実行時間を1秒未満に抑えること。 マイナーGCは1秒未満どころではなく、もっと短くなるべき。どれくらいが理想かは?(0.1秒未満ぐらいを目指したい?) 連続した負荷状態(想定されるピークアクセス)でもOutOfMemoryErrorが発生しないこと。 理想的な状態は、上記に加えて、Full GCの発生が低頻度であること。 具体的には、できるだけマイナーGCで短命オブジェクト(1回使ったらもう使わないようなオブジェクト。逆にセッションオブジェクト等は長命オブジェクトとなる)を破棄させて、短命オブジェクトが、Tenu
WebDriverを使ってみよう WebDriverを使ってGoogle検索を行うコードは以下のようになる。ここではFirefoxDriverを使用しているが、他のブラウザを使用する場合でもドライバのインスタンス生成部分を修正するだけで同じように動作する。 WebDriver driver = new FirefoxDriver(); driver.get("http://www.google.co.jp/"); // 検索を実行 WebElement searchBox = driver.findElement(By.name("q")); searchBox.sendKeys("マイコミジャーナル"); searchBox.submit(); // 検索画面のタイトルを取得 System.out.println(driver.getTitle()); // 検索結果のURLを取得 We
日本企業の皆様におかれましては、エクセルが大好きかと、存じます。 いや、僕も大好きなのだけどもさ、表計算かわいいよ、表計算。 ウルトラハイパフォーマンスで、データストアとしても超一流。 コードの自動生成してもいいし、まかり間違ったりすると、方眼紙としても使えちゃったり…とか。 と、まぁ、色々使い道が多いので、ついJavaでもエクセルを読書きしたくなったりとかするヨネ。 で、そこでApache POIでつよ、となる訳だけど、POIのHSSFは普通に使うと、 ちょっと大きいエクセルファイルを読もうとしただけで、アフォ程メモリを食ってしまうのですな。 例えば、こんなコードで読み込むのが、まぁ普通ダヨネ。 @Override protected void readExcel(File excel) { BufferedInputStream bi = null; try { bi = new Bu
slf4jとlogbackに、魂を売り渡す勢いであります。 と言うのは冗談としても、何だか使い方が分からないけど、 Loggerのメソッドには、引数として存在しているorg.slf4j.Markerについて、考えてみたり。 現段階では、slf4jとlogbackを使ってる大きめのOSSプロダクトにおいて、 どんな使われ方をしてるかちゃんと見てないので、妥当な使い方なのかは、微妙。 まぁ、僕なら、こんな風に使ってみるよ、と言う感じのエントリ。 slf4j使おうって人達が、使い方を考える時のとっかかりになればいいかな…とか。 まず、org.slf4j.Loggerの、Markerを引数に取るメソッドの宣言と、org.slf4j.Markerの宣言を抜粋してみるよ。 public interface Logger { public void debug(Marker marker, String
うちの母親でも知っているJavaにおけるオープンソースを活用した開発環境・Test環境について調査及び評価する必要があり意外と労力を要したので これからJavaでの開発において開発環境・Test環境を構築する際の参考になればとメモしておきます。 開発環境、ビルドツール、Test、Web Testing、負荷テストに重点を置いてあります。 インストールせずに使用出来るIDEのtIDEや、jythonでWebテストを記述するMaxQ、パフォーマンステストをjythonで記述するGrinder3、 Flexの負荷テストも可能なWebLOAD、Swingのテスト用のUISpec4j等、新しい発見もあったのでJava開発者の人にも参考になると嬉しいです。 それぞれライセンス、最新バージョン、個人的なお薦め度(5点満点)を合わせて明記してあります。 IDE name URL Ver. Licence
Throwable、Exception、RuntimeException(RTE)、Errorあたりを整理しながら、色々考えてみた。私見に基づくので、間違っているかもしれないけれど、自分としては頭が整理できたかな、と感じたので晒してみる。異論があったらコメントください。 まず、一番基礎的なところで、継承関係の整理から。こんなツリーになっています。 Throwable Error Exception RuntimeException そして、本稿での用語の定義。caller=呼出す側のコード callee=呼出される側(throwする側)のコードとします。 Throwable Throwableは「throw文に指定できる何か」という意味ですね。 Instances of two subclasses, Error and Exception, are conventionally used
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く