Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

thin-cacheというキャッシュライブラリ書いた.いつものようにmaven centralにも置いてある.そしていつものようにJava 8以降が対象となっている. maven central Microservicesみたいな感じでサービスを作っていると,他のサーバにrequestを飛ばして得られた値を加工して,あるいはそのまま利用するみたいなコードを書く事が多くなってくる.毎回毎回他サーバにrequestを飛ばして良いのであればまあ飛ばせば良いのだけれど,そうもいかない場合も多い (トラフィックなり応答速度なりの理由で).そういう場合に対策として考えうる手段のひとつとしてキャッシュが挙げられると思う. 今まではそういったキャッシュを良い感じでコントロールするコードを都度都度書いていたのだけれど,それにもそろそろ飽きてきたのでいい感じに抽出してライブラリにした. Javaでキャッシュ回
ゴールドマン・サックス発のJavaコレクションフレームワーク、その7つの特徴と歴史とは:コレクション処理の万能道具箱Eclipse Collections入門(1)(1/3 ページ) 本連載では、ゴールドマン・サックス発のオープンソースJavaコレクションフレームワークであるEclipse Collectionsについて、その概要と歴史、機能を中心に紹介します。これまでのJavaやJava 8のStream APIと比較して何が違うのか。Eclipse Collectionsを例に、読者の皆さんがコレクション処理をより深く理解するための一助になればと思います。 ゴールドマン・サックスが開発し、オープンソースソフトウェア(OSS)として公開したJavaコレクションフレームワーク「GS Collections」が、Eclipse Foundationに移行し、「Eclipse Collecti
なぜ、動的型付けスクリプト言語の流行りから、再び静的型付けの言語が注目されているのか。 型付けの歴史を振り返り、これからの「型」のありかた、それを実装した処理系のありかたについて考えます。
先に書いたリンゴを買う人のように、1つの処理だけで終わるプログラムをシングルスレッドのプログラムと呼ぶ。 しかし、実際にはいくつかの処理を並行して行う。要するに、複数のスレッドが同時に動くことになる。 このように複数のスレッドが同時に動くことをマルチスレッドという。 スーパーに様々なものを買う役目をもった人間がいるようなものだ。 大分簡易化されているが図で表すと次のようになる。 マルチスレッドを使う理由は? 1人の人間がたくさんの物を買うよりも、複数の人間がそれぞれ目的のものを1つ買うほうが早い。 同じように、1つのスレッドで処理を行っていくよりも、マルチスレッドでの作業速度は速くなる。正確には速くならない場合もあって複雑なのだが、速くできる可能性があると思っておけば良い。 また、例えばWordなどでは入力中、同時にスペルチェックが行われていたりする。このように同時進行させられるのが、マル
イントロ 例外処理を書くことはよくやっているのだけれど、その時の主軸となる考え方について、今までなんとなくで行っていた部分が多かった。 毎回考えるポイントは例えば以下のような疑問。 どこのレイヤーで、どこまで例外処理を行えばよいのだろうか? どの例外をキャッチし、どの例外を伝搬させればよいだろうか? 前提条件をチェックし、失敗した場合、例外を出したほうがよいか、nil, false を返すほうがよいか? 例外をどういう単位でラップさせるのが良いだろうか? 例外をチェインし過ぎると却って煩雑になる気がする。どうすれば良いのだろうか。 しかし、この辺りの話って、API の設計だったり、仕様の影響もあるので、都度対応が異なってしまうもの。 したがって抽象化して理解することが難しく感じた。 とてもよく使ってるし、とても大事な事なことなのに。 そんな今更な事で悩んでいた時に、Effective Ja
Googleは、Java APIを使用してモバイルOS「Android」を構築していることをめぐるOracleとの法的な争いにおいて、優勢に立った。 Oracleは、著作権ライセンス料を支払わずに37件のAPIパッケージを使用しているとしてインターネット大手Googleを提訴し、数十億ドルのライセンス料支払いを求めていた。しかしGoogleは、自社による同APIの使用が「フェアユース」に相当すると米連邦裁判所の陪審員団に認めさせることに成功した。 この評決はGoogleにとって大きな勝利である。陪審員団がOracleの主張を支持していたとすれば、この訴訟における次の段階では、Googleが支払うべき対価の査定が始まるところだった。Oracleは、90億ドル以上の賠償金を求めていた。その額は、米国における著作権関連の評決でこれまでに認められた賠償額をはるかに超えている。 しかし、何年にもわた
入門書ではあまりとりあげられない部分を解説するコンセプトの「入門書が教えてくれないJava」シリーズの第二弾。前回は変数についてだった。今回はそのスコープについて取り上げたい。 スコープとは スコープとは大雑把に言えば変数やメソッドなどが見える範囲のことを指す。 Javaの変数のスコープで一番簡単なのはローカル変数で、これは{から}まで(これをブロックという)の中で、宣言した位置より後ろで参照することができる。 public void main(String[] args) { int i1 = 0; // i1はここからmainの}までの間で参照できる if (true) { int i2 = 0; // i2はこのifの}までの間で参照できる } // i2はifの}を過ぎると参照できなくなる i2 = 1; // ← コンパイルエラー } なお、Javaの言語仕様では{}のブロックは
Software design patterns, principles, and snippetsThe best designers will use many design patterns that dovetail and intertwine to produce a greater whole --Erich Gamma Get the book 📖Study the design patterns 💡 IntroductionDesign patterns are the best formalized practices a programmer can use to solve common problems when designing an application or system. Design patterns can speed up the devel
前回のエントリは、OSSとしての説明が抜けていたので、今回、きちんと説明させてください。 Seasar2、S2JDBC(元々Seasar2の一部)、SAStrutsは、これまでも、これからもOSSであり、githubでずっと公開されるので、フォークでも何でも好きにしてください。 Mavenリポジトリ、ドキュメント、MLなどがどうなるのかは、現在話し合っている最中です。方向性としては、現在、Seasar2を利用している人々に、最も影響の少ない選択肢が選ばれるはずです。 Seasar Foundation、Seasar Projectsのクローズの提案をしましたが、これは、取り下げます。 あくまでも、お願いという形でしたが、私がお願いするとかなり強制力を持ってしまうことに対する配慮がかけてました。 2016/9/26にSeasar2、S2JDBC、SAStrutsのメンテナンスを現在のコミッタ
この記事のJMeterは ver 2.12。 テストを一件ずつ実行する 1つのJMeterスクリプトファイルにスレッドグループを複数個並べると、JMeterは2,3個のスレッドグループを並行して実行する。このとき、例えば、ログイン/ログアウトの評価やコンテンツの参照/削除が同時に走ってしまうと情報に不整合が生じ、テストが失敗することがある。 そこで、「テスト計画」の「各スレッドグループを別々に実行」にチェックを入れると、スレッドグループを1個ずつ順番に実行してくれるようになる。 エラーを期待するテスト JMeterのステップは標準では4xxや5xxのレスポンスコードをエラー(レッド)として扱う。しかし、正常系評価ではなく異常系の評価をしたい場合、4xxのレスポンスでグリーンになって欲しいにも関わらずレッドとして表示されてしまい評価結果が見づらくなることがある。そこで4xxや5xx系レスポン
MOONGIFTはオープンソース・ソフトウェアを紹介するブログです。2021年07月16日で更新停止しました いかなるソフトウェアであってもバグはつきものです。バグがなかったとしてもそれは単に見つからなかったり大きな問題につながらないだけで、いつかは露見することになります。 Facebookが作ったInferはそんなプログラミングコードを静的に解析するソフトウェアで、アプリのバグをいち早く発見するためのツールになります。 Inferの使い方 例えば以下のようなコードがあります。これはjavacでコンパイルできるコードです。 // Hello.java class Hello { int test() { String s = null; return s.length(); } } これをInferにかけるとエラーが表示されます。 $ infer -- javac Hello.java H
Facebook、静的コード解析ツール「Infer」を公開。Objective-C/Java/Cコードのバグを指摘してくれる Inferが対応するコードはAndroidのJavaとiOSのObjective-C、およびC。現時点ではAndroidとJavaではNullPointerExceptionおよびリソースのリーク。iOSとCコードではメモリーリークを発見してくれます。 実際にプログラムを実行することなくバグを発見しようとする静的コード解析は、コードをビルドしてテストプログラムなどを実行するよりも迅速にバグを発見できる方法として期待されています。 Inferも、Facebookがより早く高い品質のソフトウェアをデリバリする目的で開発されたものです。下記はInferを発表したブログ「Open-sourcing Facebook Infer: Identify bugs before y
つい先だって知ったのですが、 Java のメソッドの throws 節では型変数が使えます。 8.4.6 Method throws / Java Language Specification これによって、投げる可能性のある例外の型が使い手側で変えられるようなメソッドを書くことができます。たとえば次のプログラムのように、例外の型と例外オブジェクトの生成を使い手にまかせる汎用の表明メソッドが書けます。 *1 class Checker { static <T extends Throwable> void check(boolean condition, Supplier<T> supplier) throws T { if (! condition) { throw supplier.get(); } } } class SomeException extends Exception {
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く