Java の finally よりも golang の defer のほうが筋が良さそうだ、 ということから考え始めた結果、 どうして私が golang を気に入ったのかがわかった気がしたので書いておきます。 ファイルをオープンし読み込みな処理で何かして終わったら閉じる、という関数を Java と golang で書き比べてみましょう。 Java で書くとこんな感じですね。 public static void readFile(String fname) throws IOException { InputStream s = null; try { s = FileInputStream(fname); // // Do something with "s". // } finally { if (s != null) { s.close(); } } }
JVM Operation Casual Talksで出てた話としてJavaでhot deployってどうしてんの?ってのがありました。 hot deployっていうのはアプリケーションコードを変更してもAPサーバーを再起動せずに反映する技術です。 この辺別に僕は全然知らないし答えを持っているわけではないですが、まあちょっと興味があったのでLL言語でのhot deployとJavaでhot deployを簡単に調べたのでメモっときます。 コードを変更してAPサーバーを再起動する場合、APサーバーが止まっているときにアクセスが行くと困るので、ロードバランサから外してAPサーバーを再起動してまた戻すみたいなことをやるのがオーソドックスな方法のようですが、hot deployだとそういったことをやる必要が無くなります。 Server::Starterから学ぶhot deployの仕組み - $s
11 Apr 2014 With the push to feature branches and the increased use of git, continuous integration of every single branch can become an infrastructure nightmare. Docker can be used to eliminate the need to deploy to remote servers and run your integration tests on the same server as your build. Scaling can then be done using Jenkins slaves that run one or more jobs concurrently. The Problem Git ha
バッチ処理などスループット重視のアプリケーションはデフォルトのパラレルGCで良いが、Java EEアプリケーションサーバなどレスポンスタイム重視のものやHadoopなどのクラスタ系ソフトウェアで死活監視に引っ掛る系などのstop the worldをなるべく避けたいいわゆるサーバ系ソフトウェアを運用する場合には、UseConcMarkSweepGCを付与して停止時間の短いCMS GCを使う。その場合にCMSのチューニングに踏み込もうとするとなんだか難しい記述がいっぱいで若干困るので、簡単なガイドをメモとして書いておく。 対象バージョンは以下。 $ java -version java version "1.7.0_51" OpenJDK Runtime Environment (fedora-2.4.5.1.fc20-x86_64 u51-b31) OpenJDK 64-Bit Serve
VisualVM は、Java 仮想マシン (JVM) で実行中の Java アプリケーションに関する詳細情報を提供します。VisualVM のグラフィカルユーザーインタフェースを使用すると、複数の Java アプリケーションに関する情報をすばやく簡単に表示できます。 この入門ガイドは、VisualVM をすばやく設定して実行するための支援を行います。このガイドでは、VisualVM をインストールする方法と、VisualVM のアップデートセンターからプラグインをインストールして、ツールに機能を追加する方法を説明します。また、VisualVM の起動方法と、ローカルおよびリモートの JVM で実行中のアプリケーションに関して取得できるいくつかの情報の表示方法を示します。 実行中の VisualVM java.sun.com で紹介された短いスクリーンキャストで、VisualVM の機能を
Android では、非同期処理の返り値はコールバックインタフェースを介してやり取りされる。 これ以外にも、Observer パターンに基いて設計されているクラス(SharedPreferencesなど)や、Activity と Fragment とのやりとりなどでも、コールバックインタフェースを定義して、その実装とライフサイクル管理をする。 一方で、機能が増えるとその分コールバックインタフェースの定義も増え、Activity が幾つものインタフェースを実装することがある。コールバックインタフェースの定義が増えてくると、その分だけ依存関係が複雑になりやすくなったり、コールバックを受けて更に非同期処理を呼び出して…としていくと、どんどんネストが深くなったりしていく(コールバック地獄)。 そこで、コールバックメソッドを呼ぶタイミングでイベントを発火し、コールバックインタフェースの実装ではなく、
はじめに 先日ようやくScalaで書いたiOSアプリをApp Storeに登録する事が出来ました。 Tiny AR lite https://itunes.apple.com/jp/app/tiny-ar-lite/id806062401?mt=8 Scalaで書いたアプリがAppleの審査に通ったのはこれが世界初です。 今回はTiny AR liteを作成して得た経験談を少し書いてみたいと思います。 動画 ニコニコ動画 YouTube スクリーンショット 環境作成 使用ソフト JDK7 http://www.oracle.com/technetwork/jp/java/javase/overview/index.html RoboVM http://www.robovm.com/ sbt-robovm https://github.com/ajhager/sbt-robovm コンパイル
愛知県でシステムエンジニアとして働く友人のMは、プロジェクトメンバの書くJavaのクソコードに苦しめられているそうです。Mはリードプログラマとして、プロジェクトメンバがあげてくる成果物(ドキュメントとコード)のレビューをする立場にあるらしく、提出されてくる数々のクソコードをTwitterでつぶやいていました。 Mを救うことはできるのでしょうか? もし、クソコードをすばやく見つけることができたら救えるのであれば、救える見込みはあるかもしれません。 コードの問題を見つける静的解析ツール クソコードとは、おおむね次のような問題のあるコードをさすようです。 潜在的バグ バグの可能性があるコード。 重複 機能追加やバグ修正を困難にしがちなコードの重複。 設計上の問題 クラスやパッケージ間の依存関係、多すぎるメソッド引数など。 慣習違反 プログラミング言語やライブラリの慣習、コーディング規約などに違反
Welcome Welcome to the home of the Legion of the Bouncy Castle Java cryptography APIs. The Bouncy Castle Crypto APIs are looked after by an Australian Charity, the Legion of the Bouncy Castle Inc. which looks after the care and feeding of the Bouncy Castle APIs. If you would like to help support this effort please see our donations page or purchase a support contract through Crypto Workshop (now p
3/22に行なわれたjava-ja.dddのメモです。 ※かなり殴り書きの個人的なメモです。 第一部 ざっくり DDD 入門!! ざっくり DDD 入門!! from Yukei Wachi システムを複雑にしているのはドメイン 業務知識とはデータの構造、演算、他システム連携 業務知識を知るのは結構あと。結合テストとかで分かることがある 業務知識を反映されることでソフトウェアは柔軟に変更、拡張できる トランザクションスクリプトに重要なロジックが隠れる モデルの中で制約を表現する 複雑なドメインの設計はモデルを元に設計 モデルとは専門家によって整理され単純化された世界観 ドメインに詳しい人と話してモデルを共有する ドメインエキスパート:業務を回している人、データ裏側もわかってる人。 ドメインエキスパートの人を探すのが大変 whirlpool http://domainlanguage.com
いままでのJavaでは、日付時刻を扱おうとするとめんどくさい割に非常に低機能でした。 Java8では、新たに日付時刻APIが導入され、めんどくささが増しつつ非常に高機能になりました。 (以降、Java8で導入された日付時刻APIを単に「日付時刻API」と表します) もちろん、慣れてきて、ちょっとしたサポートメソッドを用意してやれば、結構使いやすいのですが、それは「このAPIは使いやすい」という評価にはなりません。 つまり日付時刻APIは、慣れないとぜんぜんわからないし、サポートメソッドがないと面倒なコードが必要ということです。 いろいろあってよくわからない 日付時刻では、時点を扱うInstantや期間を扱うPeriod、時間量をあらわすDurationなど多くのクラス・インタフェースが導入されています。 これらは、IDEの補完でAPIを探りながら機能を推測すれば、それなりにドキュメントなし
CPUのクロックアップに限界が訪れ、マルチコア化することで処理性能向上を目指す時代になりました。これからのプログラマには、マルチコアで処理性能が向上するプログラム=マルチスレッドで並列処理が可能なプログラムを書く能力が必要になります。今回は「関数型」でプログラムを書くことによって、いとも簡単に並列化ができることを実例を元に解説します。 関数型プログラミングと並列処理 「関数型でプログラムを書くことで簡単に並列化できる」と書きましたが、そもそもここで言う「関数」とは何なのでしょうか? 関数型プログラミングの特徴 関数型プログラミングの「関数」を理解するためには、数学における「関数」を想像するとわかりやすいでしょう。 例えば三角関数を用いた y=cos(x) という式を考えてみます。この式に入力値 x=0 を与えた場合、いつでも必ず結果は y=1 になります。x= π/3 の場合は y =
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く