2015年9月16日 at 11:48 午前 「オラクルがJavaエヴァンジェリストを追放」 という記事が、2015年9月14日 InfoQ 様から掲載されました。 ( 9月16日 該当記事の日本語翻訳の指摘箇所は翻訳者様によって修正されました。) 当初、Twitter や FaceBook で自分の見解を書いていましたが、私のツイートがリツィートなどで拡散されるに従い、記事の全てがウソというような内容に変わっていたりしました。それはそれで違いますので、該当記事に対する私のコメントを改めて下記にまとめます。下記意見はすでに InforQ の該当ページでも伝えています。 また、ご理解いただきたいのは、本記事の内容は、InfoQ 様、執筆者様、翻訳者様を叩くとか否定したいわけでは決してなく、事実は事実として正しく伝えていただき、事実とは異なる箇所は正しく修正していただきたいと思い記載しました。
はじめに 先日、私たちが開発しているクラウド型WAFサービス、Scutum(スキュータム)において、予想していなかった箇所の修正によってサーバの負荷が大幅に減るということがありました。原因はこのエントリのタイトルにもあるように、Stringクラスのインスタンスを生成する際の方法にありました。 Stringクラスのコンストラクタとcharset Stringクラスにはいくつかのコンストラクタが用意されています。我々が使っていたのはString(byte[] bytes, String charsetName)です。2つめの引数で、"MS932"や"UTF-8"のような文字集合(以下charset)を明示的に指定するものです。 ScutumのようなWAF(Web Application Firewall)は通常のウェブアプリケーションとは異なり、起動している間にさまざまなcharsetを扱うこ
はじめに ちょっと前まで結構激しく泥沼化したプロジェクトにいた。 その頃はプロジェクトも僕も相当疲弊していて、何も考える時間がなかった。 ある程度、月日が経って今なら もう少し客観的にあの頃のことが考えられるかなと思い書いてみることにする。 振り返りをし、自分としてもプロジェクトとしてもどうあるべきであったかとか そういう立派なことが考えられればいいのだが。 とかく、Slide Shareとか世の中は成功事例は多く発信される。 けど、失敗事例のほうが共通して当てはまったりする。 前提 ・古典的なウォータフォール ・古典的なStruts1系ベース内製フレームワーク ・Java SE 6 ・QAとかいない ・デザイナーとかいない ・フロントエンドエンジニアとかいない アンチパターン 当時のプロジェクトを振り返って、明らかにこれは駄目だっただろというところ。 ◆プロジェクト全体 ・決定者がいない
こんにちは、ミドルウェア開発チームの青木(@a_o_k_i_n_g)です。将来の夢は川口浩探検隊に入ることです。 先日、弊社のアプリケーションサーバーで大量にメモリを消費するという現象に遭遇しました。アクセス頻度の低いサーバーがメモリを大量消費するという謎深いものでした。 発生当初の状況はこんな感じです。 アプリケーションサーバーでは Jetty が稼働 現象が発生した JVM は 5GB 程度のメモリを消費しており、明らかに通常ではない量のメモリを消費している 複数台のサーバーで発生していたが、全てで発生したわけではない。 また、発生したサーバーはいずれもアクセス頻度が少ないサーバーだった。 ヒープ、パーマネント、スタック ひとまず、JVM でトラブルが発生した時は何はともあれヒープダンプとスレッドダンプを見るに限ります。各種情報の取得をインフラ部隊へ依頼し、得られたヒープを解析すると、
このチュートリアルでは、おなじみの Hello World プログラムの分散システム版を JavaTM Remote Method Invocation (Java RMI) を使って作成する手順を説明します。このチュートリアルを学習するうちに、関連する多くの疑問に直面することでしょう。Java RMI FAQ および RMI-USERS メーリングリストのアーカイブには、さまざまな疑問に対する回答があります。RMI-USERS メーリングリストを購読するには、ここをクリックしてください。 ここで例として紹介する分散型の Hello World プログラムでは、単純なクライアントを使用して、リモートホスト上で稼動しているサーバへのリモートメソッド呼び出しを行います。クライアントでは、サーバから「Hello, world!」メッセージを受信します。 このチュートリアルでは、次の手順を実行しま
Faced with an onslaught of malware attacks that leverage vulnerabilities and design weaknesses in Java, Oracle Corp. recently tweaked things so that Java now warns users about the security risks of running Java content. But new research suggests that the integrity and accuracy of these warning messages can be subverted easily in any number of ways, and that Oracle’s new security scheme actually pu
Java で書かれた日本語形態素解析ライブラリ Kuromoji を Perl から使ってみたいなー、と思って、別の言語のプログラムから使いやすいようなインターフェイスを書きました。 Kuromoji について kuromoji - japanese morphological analyzer Java で書かれたオープンソースの日本語の形態素解析ライブラリです。 検索用のライブラリらしくて、Apache Lucene と Apache Solr に組み込まれているらしいです。 もちろん検索エンジンとは独立して利用することも可能です。 独立して使用する場合は、単に jar ファイルをダウンロードしてきて Java のライブラリパスに追加するだけ (あるいは公開されている Maven リポジトリを使用して依存関係を解決するだけ) で形態素解析できるようになります。 便利ですね。 Java
世代別ガベージコレクション (英: generational garbage collection) はガベージコレクションの手法のひとつである。別名として、ジェネレーション・スキャベンジング (英: generation scavenging) とも呼ばれる。以下、ガベージコレクションをGCと省略する。 GCを持つ言語上で動く実システムでは、経験上メモリオブジェクトの利用に、ある偏りが存在する。それは「計算途上で利用される一時オブジェクトは数が多く、かつすぐさま破棄される率が高い」「ある程度長く生存したオブジェクトは、以降も長く生存する率が高い」という傾向である。 この傾向に着目し、メモリ領域を2つの世代に分離する。 第1世代 (young generation) に属するオブジェクトは小さな領域で高速なコピーGCを繰り返し、積極的に回収する。 第2世代 (old generation)
新機能 バウチャーによるイベント管理機能をリリースしました。協賛企業の社員や関係者のイベント参加を円滑にすることに活用いただけます。詳しくはヘルプページをご覧ください。 新機能 connpass APIに新しく、所属グループを取得できるAPIやユーザーの参加イベントAPIを追加しました。各APIの詳細な仕様や利用方法につきましては、 APIリファレンス をご確認ください。またAPI利用希望の方は connpassのAPI利用について をご覧ください。 お知らせ 2024年9月1日より、connpassではスクレイピングを禁止し、利用規約に明記しました。以降の情報取得にはconnpass APIをご利用ください。APIご利用についてはヘルプページをご確認ください。
Facebookのハッキングと、モバイル・アプリ開発者への水飲み場型攻撃と、Macのマルウェア 2013年02月18日22:12 ツイート sean_sullivan ヘルシンキ発 by:ショーン・サリバン 2月1日金曜日。Twitterがハッキングされたとアナウンス。情報セキュリティ部門のディレクターBob Lord氏によるブログへの投稿(Keeping our users secure)では詳細不明だったが、ブラウザのJavaプラグインを無効にするように推奨。 そして同氏によると、攻撃者は「非常に精通しており、他の企業や組織も最近同様の攻撃を受けたことを確信している」とのことだ。 2月15日金曜日。Facebookがハッキングされたとアナウンス。セキュリティ・チームのノート(Protecting People On Facebook)によれば、ほんの一握りの従業員が、「ラップトップに
10万行コード読んだらJava分かるよってTwitterに書いたらすげぇ勢いでRTされたので、調子に乗って捕捉エントリ書くよ。 Java Core API JDKインストールしたディレクトリに入ってるsrc.zipを展開すると入ってるから読むと良いよ。 すぐ近くにあるのから読むってのはメンタル的に楽でいい。 厳密にはOSSじゃなくて単に公開されてるってだけなんだけども、JavaプログラマなのにコアAPIのコード読んでないとか無いよね? どれから読めば良いか分からんかったら、 java.lang java.util java.io java.text 辺りをまずはキチンと理解すること。当然コードを読み終わったら、それを使ってコードを書く事。 OpenJDK http://hg.openjdk.java.net/jdk7/jdk7 OpenJDKを読むことで、プログラム言語してのJavaではな
最近、技術者やプログラマの方と面接する機会が多いです。 毎回質問事項を考えるのにも飽きたので、再利用できるようにまとめておきます。 もしさわりの質問に対する反応が良かった場合は、さらに突っ込んだ質問 (インデントが深いもの) をします。経験がないようなら、さらっと流します。 当ページ管理人は、現在 EC サイト構築・運営を担当しているため、 そっち方面に偏っています。 最小限の質問でその人のスキルを見極めるのは難しいなぁ…。 ------- ●追記 ホッテントリに載ったようなので、このチャンスに 人材募集 を再アピールしておきます。 興味のある方はぜひ。 念のため言っておきますが、全部できないとダメというつもりは全くありません (当ページ管理人も、CSS・Eclipse・Struts・Spring・Hibernate・Ruby・アセンブラなど、 弱い部分が多々あります)。 「~はできますか
XMLを解析するには、org.xmlpull.v1パッケージのXmlPullParserクラスを使用します。 XmlPullParserのインスタンスを得るには? android.utilパッケージのXmlクラスのstaticメソッドであるnewPullParser()を呼び出します。 final XmlPullParser xmlPullParser = Xml.newPullParser(); または、 og.xmlpull.v1パッケージのXmlPullParserFactoryクラスのstaticメソッドである XmlPullParserFactory.newInstance()を呼び出し、 XmlPullParserFactoryのインスタンスを取得後、同インスタンスのnewPullParser()を呼び出します。 final XmlPullParserFactory facto
Androidでの開発ではAndroid OSをある種のフレームワークと捉えてその作法に則ってうまく「使われる」プログラムを書かなくてはならない。なのでそのフレームワークがどういう仕組で、どういう流れで僕らの書いたコードを呼び出すのかということを理解することがよい設計に結びつく。と、大風呂敷を広げているが僕もさほどAndroidに精通していないのでこれは努力目標みたいなもんです。 大雑把に割愛して、今回のテーマに関係の深いところをピックアップする感じでいきますか。 テーマのAsyncTaskだけども、要は非同期処理をしたい時に使う。Javaで非同期処理といえばThreadなんだけどもAndroidでは一般にAsyncTaskを使う。AsyncTaskではUIスレッドを使った非同期処理を簡単に(?)実装できるという触れ込み。 UIスレッドとは? そこでまずUIスレッドとは何かを理解せねばなる
Javaのクラス宣言には5種類ある。 トップレベルクラス・ネストしたクラス・内部クラス・ローカル内部クラス・匿名クラス(無名クラスとも言われる)の5種類だ。 今回はこの5種類のクラス宣言のおさらい。 トップレベルクラス これは普段使っているクラス。拡張子が.javaのファイルを作り、そのファイル名とクラス名を合致させなくてはいけない。そのjavaファイルのトップレベルに位置する。 ネストしたクラス 「ネストしたクラス」(Nested class)とはクラスの中にクラスがネストしている状態。トップレベルクラスの内側にstaticキーワードをつけてクラス宣言を行う。 public class Outer { public static class Nested { } } このネストしたクラスは、トップレベルクラスと同等の機能性を持つ。 クラス名はOuter.Nestedという名前で扱われるが
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く