You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
はじめに こんにちは、虎塚です。 この記事はJava Advent Calendar 2014 の22日目の記事です。昨日はすふぃあ (@empressia) さんの「JavaEEなWebアプリケーションを作ろうとしたときのお話: すふぃあの記憶」でした。 この記事では、「Javaクラスファイルの読み方・増補版」と題しまして、12月20日(土)に開催したJavaクラスファイル入門という勉強会でお話しした内容の補足をお届けします。なお、勉強会のターゲットは、 Javaプログラムは書いたことがあるけど、JVMのことは全然知らない Javaクラスファイルのバイナリを見たことがない といった初心者の方や新人さんでした。なので、Javaに興味さえあれば、どなたでもお読みいただける内容かと思います。 JVM仕様とは JavaとJVM Javaプログラム(.java)をコンパイルすると、中間コードと呼ば
最近公式にopenjdkの一部になったらしい?ので、まだあまり有名じゃないかもしれませんが、以下のような便利ツールがあるの知ってますか? http://openjdk.java.net/projects/code-tools/jol/ もともと個人で以下のリポジトリで開発されてたらしいです https://github.com/shipilev/java-object-layout いくつか機能があるみたいですが、とりあえずorg.openjdk.jol.info.ClassLayoutというのが、なにか大量に同じクラスのインスタンスを生成する予定があって(たとえばActorとか?) 「それぞれのclassのインスタンスが、何バイト消費するんだろう?」 というのを正確に知って、全体のメモリ消費量の予測に役立てたりするのにとても便利っぽいです。*1試してないですが、原理的にJavaだろうがS
はじめに SSLv3のパディングに注目した攻撃手法であるPOODLEは、以前こちらのブログのエントリで取り上げたことがあるBEASTとCRIMEに非常によく似た攻撃です。今回はこのPOODLEについて、一般的な視点とはやや異なる、筆者独自の意見を述べてみたいと思います。 必ずしもSSLv3を無効にする必要はない POODLEの対策として書かれている情報はそのほぼ全てが「SSLv3を無効にする」というものですが、個人的には技術的にもう少し踏み込んで考えてみても良いのではないかと感じます。私は以前のエントリで次のように指摘しています。 BEASTもCRIMEも、意図しないリクエストが飛ばされ、そこにCookieが自動的に含まれてしまう点を攻撃するという意味で、CSRF攻撃の一種だと言えるでしょう。BEASTが発表されたらBEAST対策(RC4にする/TLSをバージョンアップする)を行い、CRI
Java SE 8では、新しい構文要素として「ラムダ式」が導入されました。これにより、これまで用いられたデザインパターンのいくつかは、特に意識しなくても同等のコードが書けるようになります。デザインパターンが解決しようとしていた問題が、ラムダ式によって素直に実装できるからです。本連載では、デザインパターンを使って書かれたコードをラムダ式を使ったシンプルなコードに書き換えながら、ラムダ式の使いどころ・使い方を学んでいきます。 言語の洗練によってパターンは背景に退く まず、デザインパターンについておさらいしましょう。デザインパターンとは、オブジェクト指向言語を用いてプログラムを書くときに、頻発するプログラム設計上の工夫を「パターン」としてまとめたものです。ギャング・オブ・フォー(GoF)と呼ばれる4人の著者(エーリヒ・ガンマ、リチャード・ヘルム、ラルフ・ジョンソン、ジョン・ブリシディース)が執筆
システムスレッドについて、あまり知らなかったので、調べてみました。 それ以外にも、APIで生成されるスレッドや、スレッドグループについても、少し触れています。 ※GrepCodeは2018年5月頃からサービスが利用できなくなっています。記事中のリンクはGrepCodeのものがそこそこ多いので、ご注意ください。 参考リンク HotSpot Runtime Overview - OpenJDK JVM Internals (JamesDBloom - Blog) Java SE 8 API仕様 GC: openjdk-8-b132.jar - GrepCode Java Project Source Mirror of OpenJDK repositories - GitHub 目次 はじめに 実行環境 システムスレッドの名称と簡単な説明 APIを使用したときのスレッド おわりに はじめに シ
こんにちは、インフラストラクチャ本部の@nagaseyasuhitoです。このエントリは GREE Advent Calendar 2014 10日目の記事です。昨日はイケメンmoritaさんによる男性エンジニアリングマネージャが長期育休を取った話でした。 エンジニアブログのアカウントは2年くらい前からあるのですが、これが初エントリになります。グリーでは比較的珍しいJavaEEを始めとしたサーバーサイドJavaアプリケーションの開発、SolrやHadoopといったミドルウェアの周辺機能開発や運用などを行っています。どうぞよろしくお願いします。 最近はPvE/PvP/GvGなどユーザー同士がリアルタイムに協調プレイする際、クライアント-サーバー間を常時接続通信で行うゲームが増加しています。このような場合はHTTPのREST APIなど慣れ親しんだプロトコルでは要件を満たしきれないため、Web
Apache Ivyについては本ブログでも何回か用語自体は取り上げてきましたが、現状日本語での情報が限られるためか、AntそのものやMavenに比べるとユーザーが少ないように思われます。ここで基本的な使い方やMavenとの違いについて簡単に紹介させていただきたいと思います。 Apache Ivyとは 本家のホームページは以下の通りです。 Home | Apache Ivy ™ もともとはJayasoftという組織で開発されていたツールですが、バージョン2.0以降、Antの関連プロジェクトとしてApacheプロジェクトの元に加わっています。(Apacheというブランド名はツールを組織に導入する際に結構重要ですね。) 上記のホームページでは「アジャイルな依存性管理ツール」として紹介されていますが、Mavenの機能の中からビルド機能やプロジェクト管理機能を無くして、ライブラリーの依存関係の管理に
これらの一連の実装をどうするか考えていた。 前提 REST APIを使っている APIはデータモデル+メタデータを返す モデルはメモリキャッシュ、ファイルキャッシュにも対応する モデルとレスポンスの形式 メタデータの中にはページ情報など、サーバ/クライアントでデータをやりとりするのに必要なデータが入っている。 メタデータはモデルの外に持たせたいので、モデル層をResponseクラスでラップした。ここにページネーションのしくみを持たせることにする。 public class Response<T> { private T result; private Extra extra; private Observable<Response<T>> next; public T getResult() { return result; } public Extra getExtra() { retu
RxJavaはObserverパターンの拡張です.ObserverパターンはGoFのデザインパターンにも登場するほど非常に一般的なものです.「オブジェクトの状態変化をそれに依存する他のオブジェクトたちが監視し,通知があったら各自が自動的に適切な振る舞いをしてほしい」というのが基本的なアイディアです.Javaではこれをinterfaceを使って実現します. 関心がある状態変化イベントをもつ対象をObservableと呼び,そのイベントを監視する対象をObserverと呼びます.java.utilパッケージにもObserverインターフェースとObservableクラスがあります. java.util.Observerインターフェースはupdate()メソッドを定義しています.状態変化を知りたい対象にはObserverインターフェースを実装してObservableに登録しておきます.そして,状
渡辺です。 今日もJavaとAWSでの小ネタです。 AWSではELBを利用することで簡単に冗長化や負荷分散の構成を作ることができます。 しかし、ELBを前段に置くため、リクエスト元のIPアドレスでアクセスを拒否したりと、アクセス元IPアドレスを判定してなんらかの処理を行いたい場合、リクエスト元IPアドレスがELBのIPアドレスとなってしまいます。 ApacheやNginxの設定などでは、検索してみればリクエストの「X-Forwarded-For」を参照すれば良いと多くの情報がヒットするでしょう。 今回は、Servletで行う場合の方法を紹介します。 ServletRequest#getRemoteAddr - Servletでリクエスト元のIPアドレスを取得する ELBを経由しない場合など、直接アクセスされる場合は、ServletRequestクラスのgetRemoteAddrメソッドを利
On the basis of how we specify the JVM option it can be divided into two parts, JVM Options which starts with –X and those which starts with -XX: 1) JVM Options that begin with -X are non-standard (they are not guaranteed to be supported on all JVM implementations) and are subject to change without notice in subsequent releases of the JDK. I was thinking about writing a post on JVM options when
今年も開催される Scala Advent Calendar 2014 の 15 日目にエントリーしていて、ネタとしては先日 Tumblr が発表した "I/O and Microservice library for Scala" を謳う Colossus をやる予定なんだけど、前振りとして「なぜマイクロサービス化を進めるサービスは Scala を選ぶのか」という話をしてみるエントリ。ちなみに、Advent Calendar の前振りと書いたけど、とりあえず Scala をあまり知らない人向け。 そもそもマイクロサービスって何だっけ? マイクロサービスへの移行と Scala なぜ Scala が選ばれるのか? 1. JVM 言語である 2. Finagle の存在 性能 プログラミングモデル 運用ツールとの連携 3. 静的型付き言語である 余談 そもそもマイクロサービスって何だっけ? こ
1. Null was used as an exception to point out issues. 2. Null used three sentences to summarize the key details. 3. Null's summary highlighted the object, option, exception handling, and Kotlin programming language.
Pornographic Defamatory Illegal/Unlawful Spam Other TOS Violations Thanks for flagging this SlideShare! Oops! An error has occurred.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く