.NETでの開発が中心だったけど 本格的にJava始めてみた

私は2016年には学生ボランティアとして、 今年は社会人エンジニアとしてScalaMatsuriに参加させていただきました。 2016年はScalaの今やScalaの開発におけるtipsを学び、Scalaエンジニアと知り合うことができました。ただScalaのフレームワークを用いたサービス、アーキテクチャにあまり興味がなく(研究のために使っていただけなので。。。)、一番研究に近そうな機械学習に関するセッションは「数式は省きます」、のせいもあってセッションの大半はつまらないという感想でした。なんとなくで参加するのはダメですね(笑) 一方2017年はエンジニアとしての価値観を装備し、「streamに関して知見を集めてこい」との上司の司令もあって、目的意識を持って参加してみると実りの多さに興奮しました。 昨年のボランティア参加経験によって私のことを覚えてくださっていた方もチラホラいらっしゃり、積極
概要 Webアプリケーションの開発や保守をしていると、いろいろなバグに遭遇します。メモリリーク、デッドロック、リダイレクトループ、JVMクラッシュ等々、バグは様々です。こういったバグは、実際にコードを書いて、実行・再現させてツールで解析してみると理解が深まります。 ということで、いろいろなバグを実装したWebアプリケーションをつくってみました。現時点では、以下を簡単に再現できます。 メモリリーク (Javaヒープ領域) メモリリーク (Permanent領域) メモリリーク (Cヒープ領域) デッドロック (Java) デッドロック (SQL) 完了しないプロセスの待機 無限ループ リダイレクトループ JVMクラッシュ ネットワークソケットリーク データベースコネクションリーク ファイルディスクリプタリーク XSS SQLインジェクション ExceptionInInitializerErr
Daggerってありますよね。コンパイル時に依存性を解決するのでパフォーマンス的に有利なDIコンテナです。 https://google.github.io/dagger/ 依存関係の不備がコンパイル時にエラーになって発見できるのも、実行時にエラーが出たときの修正の難易度が高いAndroidアプリにはありがたいということで、Androidでよく使われてるようです。 基本的なオブジェクトの定義 I have a pen. public class Pen { @Override public String toString() { return "ペン"; } } I have an apple. public class Apple { @Override public String toString() { return "アッポー"; } } Ohh!!! Apple Pen!!! p
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
class Test { public int aaa() { int x = 1; try { return ++x; } catch (Exception e) { } finally { ++x; } return x; } public static void main(String[] args) { Test t = new Test(); int y = t.aaa(); System.out.println(y); } } 上の質問に回答する前に、次の問題には答えられるでしょうか? try ブロック内に return 文がある場合、 finally ブロックは return の実行時に処理されるのでしょうか。 finally が実行されるなら、いかにして return と finally の両方の実行が実現するのでしょうか。 もし答えが分からなければ、どうぞこのまま読み進め
問題 まず、これから解決していく問題を先に述べます。 イベント(例えばOSの通知やBluetoothの状態)を受け取る部分がアプリ内に複数あり、各部分に関係がある時にのみその情報を受け取りたい場合を想像してみてください。 アプリの最初のクライアントが関心を持った時にのみイベントリスナーが登録され、誰も関心を持たなくなれば、すぐに登録を解除する必要がある。 新しいクライアントがイベントを購読する際、既存のクライアントに送信済みの前回のイベントを新しいクライアントがすぐに受け取れるようにして、全クライアントが常に同期するようにする。 今回の記事では、RxJavaの様々なコンポーネントを組み合わせることで、この問題を解決する道を探ろうと思います。本題に入る前に、 Subject や Replay 、そして Connectable Observables などのコンセプトを理解しておいてください。
私はSkienaの『Algorithm Design Manual』 (訳注:『アルゴリズム設計マニュアル』 上巻 ・ 下巻 ) を読んでいました。ところでこの本は素晴らしい本で、連結リストと配列についてこんな比較をしていました(chapter 3.1.3)。 連結リストが静的配列に勝る相対的な長所には以下のものがあります。: • メモリが本当にいっぱいにならない限り、連結構造にオーバーフローが生じない。 • 連続的な(配列)リストに比べて、挿入と削除が単純である。 • 大きなレコードを扱う場合、要素自体を動かすよりもポインタを動かすほうが容易かつ高速である。 一方で、配列の相対的な長所には以下のものがあります。 • 連結構造には、ポインタのフィールドを格納するための余計な領域が必要となる。 • 連結リストでは、要素に対する効率的なランダムアクセスができない。 • 配列は、ランダムなポイン
かつて、Log4jというロギングライブラリがありました。 最強でした。1999年のお話です。 ロギングの大切さとLog4jの素晴らしさが見直され、Java標準にjava.util.loggingというAPIが追加されました。2002年のお話です。 java.util.loggingはLog4jを参考に作られましたが、ところどころ使いづらかったため、「標準」という武器をもってしても、Log4jに置き換わることはできませんでした。そのため、Javaの世界には2つのロギングライブラリが残ってしまいました。 Maven1.0が2004年にリリースされ、人々はOSSライブラリを組み合わせてアプリケーションを作るようになりました。 ところが、ロギングライブラリが2つあったため、Log4jを使っているライブラリと、java.util.loggingを使っているライブラリが混在してしまい、アプリケーション
RxAndroidとRetrolambdaで大体Java8をAndroidに持ち込む - visible trueから1年以上経過して界隈も色々更新されていってます。ということでイマドキのJava8環境構築をメモします。 バックポートライブラリとJava8の機能 バックポートライブラリとそのライブラリがカバーするJava8の機能を列挙します Retrolambda or Jack ラムダ式 メソッド参照 Lightweight-Stream-API Stream API Optional ThreeTenABP Date and Time API 実現不可の機能 次の機能はバックポートライブラリ等では実現不可能です*1。 interfaceのデフォルト実装 interfaceのstaticメソッド build.gradle 次の設定はRetrolambdaを使っています。そのまんまコピペで
Java 8からこういう書き方が出来るようになっていたようです。(初めて知った) public class Main { public String getString(Main this) { // thisで自分自身が引数になっている return this.toString(); } public static void main(String[] args) { Main main = new Main(); System.out.println(main.getString()); //呼び出すときは何も書かなくてもよい } } 何がうれしいかというと、自分自身を呼び出すときにアノテーションがつけれるようになる。(そして処理が出来るようになる) なんか、おおっ!という感じ。 呼び出すときに何も書かなくてよいというのがものすごくJavaっぽくないので驚きました。 http://bl
多言語化 一般的なAndroidアプリで多言語化するとき,注意するのはstrings.xmlと日付の表示方法ぐらいだけど,通貨を扱うような場合には注意が必要. 1ドルが何円になる?っていう為替の話ではなくて, プログラム的に1という数字が通貨の何を表しているのか?という話. 通貨のフォーマット 通貨をLocaleに合わせて表示させるにはNumberFormatを使用する. 例えば1000という数字をLocaleに合わせて通貨表示させるには下記のようにする. public static void main(String[] args) { int value = 1234; printValue(value, Locale.JAPAN); printValue(value, Locale.US); printValue(value, Locale.UK); printValue(value,
はじめに こんにちは、ピクトリンク事業部開発部サーバサイド開発課のkitajimaです。弊社サービスピクトリンクは、システム再構築の一環として
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く