Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

JavaでMaybeを説明した以下の記事について, id:tozimaさんと某所*1でやりとりしていたら, 有益な話が出てきたのではないか, ということになったので, 紹介. 基本的にやりとりをそのまま*2抜粋したものに, 適宜補足を加えていきます. 発端 2012-06-29 04:29id:tozima こんな記事があった。 Java の語彙で Maybe を説明してみる - ぐるぐる~ 直和型のエンコーディングである、 でMaybeモナドを説明している、まっとうな記事です。気になったのは、上のエンコーディングを Java の上でやって、なにか変なことが起きないのかということ。例えば記事中では、 *3 みたいなことが、Javaでは禁止できない、ってことについて触れています。この他には変なことはおきないんでしょうか? 僕には全然Java的な言語への直感がないので教えてください!!! 「.
管理が困難―分散処理の常識はZooKeeperで変わる:ビッグデータ処理の常識をJavaで身につける(8)(1/3 ページ) Hadoopをはじめ、Java言語を使って構築されることが多い「ビッグデータ」処理のためのフレームワーク/ライブラリを紹介しながら、大量データを活用するための技術の常識を身に付けていく連載 分散処理の課題が「管理」なのは常識 複数の計算機上で動作(分散)するアプリケーション、ソフトウェアが多く存在します。分散ソフトウェアは複数の計算機で動作することで大量のデータを扱えたり、高負荷な状況に対処します。本稿では、複数の計算機(クラスタ)で動作する各サーバを「インスタンス」と呼びます。 本連載で紹介した分散Key-Valueデータベースである「HBase」は複数の計算機で動作する代表的なソフトウェアです。両ソフトウェアはともに「Apache ZooKeeper」(以下、Z
この前、ふと Object クラスの JavaDoc を見ていたら、こんな記述がありました。 できるかぎり、Object クラスで定義される hashCode メソッドは、異なるオブジェクトについては異なる整数値を返します。 Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle この「できるかぎり」って、どのぐらいなんでしょうか。 オブジェクト数に比例して、衝突していました。 さくっとコードを書いてみました*1。 結果は以下のグラフの通りです。 (一定数(横軸)のオブジェクトを生成し、ハッシュコードの衝突割合(縦軸)を調べました) オブジェクトが増えれば増えるほど、衝突確率が高まっていきます。 オブジェクトが100万個だと衝突確率は 1.46% でしたが、5,000万個だと 47
VoldemortやTokyo Cabinetといったキー/バリューシステムにおけるモデリングの最小単位はキー/バリューペアになる。そして、BigTableやそのクローンでは可変数の属性をもつタプルに、CouchDBやMongoDBといったドキュメントデータベースではドキュメントになる。これに対しグラフデータベースでは、データセット全体をひとつの巨大な高密度ネットワーク構造としてモデル化する。 ここではNOSQLデータベースにおける2つの興味深いポイント、スケーラビリティと複雑さについて詳しく説明する。 1. スケーラビリティ CAP: ACID 対 BASE 従来のデータベースシステムのほとんどは、トランザクションに基づいてデータの完全性を保証する。トランザクションを使うことで、データ管理のあらゆる状況において、データの一貫性を確保している。こうしたトランザクションの性質は、ACID(A
http://kimoto.hatenablog.com/entry/2012/03/05/103052 を読んでたら Ruby の retry-handler が激しく便利そうなので Java で実装してみた。 ソース→ https://github.com/yoshiori/retry-handler どんなものか簡単に説明すると 特定の処理を実行したいんだけど、途中で何らかのエラーが発生した場合はリトライさせたい時に使えます。 具体的にはこんな感じで書くと、処理の途中でエラーが発生しても指定した回数はリトライしてくれます。 Proc.retry(3,new Runnable() { @Override public void run() { //なんか処理 } }); 特定のエラーの時だけリトライしたい時はそれも指定できます。 例えば IOException とそのサブクラスのエラー
このエントリは Java Advent Calendar 2011 の一環で、第 1 日目のエントリーです。 やっぱり、櫻庭といえば Java SE の新しいところでしょう (これ去年も書いたなぁ ^ ^;;)。ということで、Java SE 8 の目玉機能となっている Project Lambda を取りあげます。 結果的に超長文になってしまいましたww 厳密にいえば、Lambda はクロージャではありません。 追記: ここでいっているクロージャはレキシカルスコープが使用できる無名関数のことを意味しています。 (るとさん、コメントありがとうございました) では、ラムダ式とはなんなのか? それはタスクを簡単に書くことを目的とした、単一メソッドのインタフェースのインスタンス生成を簡単に書くための簡易記法です。ようするにシンタックスシュガーでしかありません。 ここでいうタスクは、特にパラレルに処
要約すると こんな感じ Shift_JIS ≒ CP932 = Windows-31J = MS932 こういう言い方もできる 仕様:Shift_JIS 実装:CP932, Windows-31J Javaでのみ使われる都合上の名前 別名:MS932 本編 むかしむかし、あるところに「Shift_JIS」という名の文字エンコーディングがおったそうな。里の村長「マイクロソフトたん」はいち早くShift_JISの才に目をつけた。マイクロソフトたんはShift_JISを育てることにし、愛称として『コードページ932(CP932)』と呼んでおったそうな。それからまもなくして、Shift_JISはMS-DOSというOSにのせて売られはじめるようになったんじゃ。 同じ里の「IBMたん」はそのMS-DOSをつかってマルチステーション5550というパソコンをこしらえた。IBMたんはもっと便利になるようにと
昨日ご紹介したbaseunitsですが、そのコードを社内コードレビューに掛けた際、id:cobonasからこんな指摘がありました。 package jp.tricreo.baseunits.util; import java.util.Iterator; /** * 明示的に、対象のコレクションに対する操作ができないことを表す反復子。 * * @param <T> 要素の型 */ public abstract class ImmutableIterator<T> implements Iterator<T> { @Override public void remove() { throw new UnsupportedOperationException("sorry, no can do :-("); } } https://github.com/tricreo/baseunits/b
長い文章になってしまったので、概要だけ先に書きます。 以下のJavaプログラムは、常に上から下に順番に命令が実行されると思いますか?つまり、aに1が格納された後に、bに2が格納されると思いますか? 実は場合によってはこの実行順序が入れ替わる場合があります。これはJavaの言語仕様として定義されていることです。これを考慮しないと信頼性のある並行処理は実装できません。 気になる人は以下を読んでみてください。 a = 1; b = 2; すでにインターネットは社会インフラ化しています。ソーシャルネットワークで多くの人とコミュケーションやコラボレーションできる時代で、個人が情報を作り消費することは当たり前になってきています。そして、インターネット上のコンテンツは増加の一途を辿っています。「情報爆発」なんて言葉も耳慣れた言葉になりましたが、その問題解決のためにMapReduceなどの分散処理技術に注
「mobylet(モビレット)」は携帯向けWebアプリケーション構築のために特化した、 強力なJavaオープンソースフレームワークです。 「mobylet」を導入することで得られる機能には、次のようなものがあります。 3キャリアの絵文字の表示/入力/変換に対応 3キャリアの絵文字入りメール/添付メール/デコメールの送信に対応 ブラウザサイズに合わせて画像を動的にリサイズ表示 アクセスした端末のUID/GUID/端末プロファイル情報などを取得可能 非常に簡単なGPS/GoogleMapインターフェースを提供 携帯端末のキャリア・機種毎に異なるブラウザ仕様への対応は非常に手間のかかる作業です。 開発者は、PC向けWebアプリケーションのクロスブラウザ対応以上に困ることも多いでしょう。 mobyletは、そんな携帯独自の開発を容易にする機能を提供し、 効率的な携帯向けWebアプリケーションの構築
JavaとScalaとC#のジェネリクスは、いずれも継承を持ったオブジェクト指向言語においてParametric Polymorphismを実現するための手段であり、それぞれ異なった特性を持っている。というわけで、それぞれの言語においてジェネリクスがどのようにサポートされているかを比較した表を用意してみた。後で気が向いたら、各項目の説明を追加するかも。 Java(5.0以降) Scala C#(4.0) ジェネリックなクラス ○ ○ ○ ジェネリックなメソッド ○ ○ ○ 型パラメータの上限 ○ ○ ○ 型パラメータの下限 × ○ × 型パラメータの推論 ○ ○ ○ 全ての型のサブタイプ(ScalaにおけるNothing) × ○ × definition-site variance × ○ ○ use-site variance ○(Wildcard) ○(Existential Typ
JavaプログラマのためのScala Javaのバーチャルマシンを対象とした多数の言語がある。 (スクリプト言語や動的型言語だけではなく)別の静的型言語を学ぶのはどうだい?JVM向けにコンパイルされ、Java言語とシームレスに統合されるのは? 最新のマントラは"一つの偉大な仮想マシンに多くの言語"さ。だろ?:-) - Scala- に注目してみないか? 関数型でオブジェクト指向でコンカレントな言語で、そいつはJavaプラットフォームで走るんだ。 ノート:この文書は言語比較の訓練じゃない。[つまり、どっちがよりよいかを結論づける X 対 Yの比較じゃない]。 むしろJavaプラットフォームで走る他の言語を学びたいJavaプログラマのためによいきっかけを提供する試みなんだ。 それで目的は静的型言語に注目しているが「Java, Groovy と(J)Ruby」や「Java, JavaScrip
Java3DはJavaで3次元グラフィックスを扱うために用意されたAPIです。Java3Dを利用することで比較的簡単に仮想の3次元空間の中で様々な物体を表示したり動かしたりできるアプリケーションを作成できます。ここではJava3Dに関して詳しい解説を行っていきます。 インストールと環境設定 Java3Dでの座標空間 SimpleUniverse 基本図形を使って物体を表す Appearanceを設定する 光源を設定する Transform3DとTransformGroup Interpolatorによるアニメーション 下記の内容はまだ古いままです。 点や線などを使って物体を表す 物体を動かす Morphクラスを使って画像を変化させる
Java3D自分FAQ これは、私がJava3Dを始めるに当たってぶち当たった壁を列挙し、 可能ならばそれを解決した方法をあげたページです。 よってあんまり正しいFAQの形式をとってません。 よってこの解法が正しいかどうか保証はありません。 よって鵜呑みにするとひどいめにあうかもしれません。 Q1. Java3Dを始めるには何が必要でしょうか? 本家JavaSoftページ Java 3D(TM) API Home Page を参照しましょう。ここから必要最低限の情報は得られます。 とりあえず、Win環境でJava3Dプログラムを始めるには、以下のものが必要です。 Java3D 1.1 implementation Java3DのJavaSoftによるインプリです。 正式公開版が出たので、JDC(Java Developer Connection)に入る必要もなくなりました。 上のページから
Network your softwareAt ZeroC, we have a singular focus - deliver world class tools to help you network your software. IceAn all-in-one solution for creating networked applications with RPC, pub/sub, server deployment, and more. IceRPCIntroducing the next generation RPC framework: built for QUIC, with bidirectional streaming, first class async/await, and Protobuf support.
RMI(Remote Method Invocation) RMIは、リモート(サーバー)上のインスタンスのメソッドを呼び出す手段。 RMIレジストリー又はJNDIにインスタンスを登録しておき、クライアントからそのメソッドを呼び出すことが出来る。 呼び出されたメソッドは、そのインスタンスを登録したJavaVM上で実行される。 コーディング上は、クライアントからは単なるメソッド呼び出しに見えるが、実際は通信が発生している。 サンプル RMIインターフェース [/2009-11-14] 実装クラス(単純なImpl) [/2009-11-14] 実装クラス(UnicastRemoteObject) RMIサーバー(bind) [/2009-12-13] RMIクライアント(lookup) rmiregistry codebase [/2009-11-14] classpath [2009-11-
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く