Webエンジニア susumuis の技術ブログ

このブログの内容は個人の見解であり、所属する組織の公式見解ではありません

java

sun.misc.Unsafeを使う

コンストラクタを呼ばないでインスタンスを生成してリフレクションで横から強制的に初期化という行為が必要だった。sun.misc.UnsafeというAPIを使用するとできるらしいのでやってみた。あっけなく出来てしまった。まずは今回テストしたコードを下記に貼り付…

64bit環境でなんかheapを多く消費するなあと思ったら

かいつまんで話すと、100KBくらいのXMLデータをモデル化したデータ*1がJavaのheap上で10MBになった!なぜか!という話です。DOMのような構造データは要するにこんなデータ構造を持っていれば良いです。 class Node { Map<String, String> attribute; QName qName; } class QN</string,>…

JJUG CCC 2013 Fall で発表してきました

共同発表者のWebデザイナーさんがスライドを作ってくれたのですが、残念なことに、はてなダイアリーに埋め込むことはできないみたいですので、以下よりリンクをしてみて下さい。 テンプレートエンジンを利用してプログラマーとWebデザイナーが共同作業をする…

JJUG ナイト・セミナー 「ビール片手にLT&納涼会」でLTしてきました。

スライド: from JSP to Design-friendly Template Endine JSPからMayaaに移行した本当の話 from Susumu Ishigami 動画: こちらが自分で こちらが共同発表をしてくれた@smilelx_xl さんです。 去年の11月にCCCで発表させて頂いて以来、公の場で発表するのは…

JJUG CCC 2012 Fallで発表をしました。

2012年11月10日開催の日本Javaユーザーグループ主催のクロスコミュニティカンファレンス 2012 Fallにて「Javaを使用したSaaS型ECプラットフォームえびすマート開発の概要」という演目で発表させていただきました。発表の機会を与えて頂いた JJUG の皆様、業…

JavaMailで文字化けを防ぐ方法まとめ

ハマったので自分のためにまとめます。 JavaMailで普通にメールを送信すると「〜」や丸数字が文字化けします。 その対策についての調べた記事をまとめます。 x-windows-iso2022jpを使う http://www.igapyon.jp/igapyon/diary/2007/ig070427.htmlShift_JISに…

Mayaaでm:idの解決の仕方を自分好みにカスタマイズする方法

このブログで何度か触れましたが、僕の勤務先の会社ではMayaaを使っています。まだMayaaを使っていますし、これからも使っていくと思います。しかしさすがにMayaa長いこと使用していると、次の悩みが発生しました。 default.mayaaファイルが巨大化しすぎた …

Java One Tokyo 2012 (#JavaOneJP) に参加しました

2012年4月4,5日に開催されたJava One Tokyoに参加させて頂いてきました。タイトルは "Moving Java Forward" ということで、Javaはどのように前進しているのでしょうか? 感想 このエントリは最後グダグダになるので、いきなり冒頭から総括します(^^; メイン…

PostgreSQL で LANケーブルが抜けた場合にConnectionを破棄する方法

TomcatでWebアプリを開発していてDBとの接続はコネクションプーリングを行なっています。コネクションプーリングをしているとはいえ、何らかの原因でConnectionが使い物にならない場合は、再接続をするために、Connection取得時に以下のようなSQLを投げて死…

java.lang.reflect.Proxyは使える子か?

ResultSetみたいな巨大なインターフェースを独自で実装使用とすると、あまりのメソッドの量に途方にくれてしまいます。ちなみに僕のMacBookAir 11inch 2010年型 (メモリ4G) では、テキストエディタでひらいてもEclipseがカクカクします。一部のメソッドを書…

GWTでJavaプログラミングをはじめよう!

Java アドベントカレンダー2011 31日目です。みんな大晦日だよ!僕が子供の頃は青いネコ型ロボットが出るアニメが特番をやるのが楽しみでした。「こんなことできたらいいな」と思って「叶えてくれる」と言ったら、「はい、Java言語」ということで子供たちの…

JVM用のJavaScriptエンジンをまとめてみる

JVM上で動くJavaScriptについて調べたので、メモしておきます。 これまでの状況 まずは、Rhinoが有名です。「ライノ」と呼びます。RingoJSやMayaaなど、すでに広く使われています。Java6から標準でJDKにバンドルされています。(ただし、バンドルされたもの…

変態Comparatorを書いてユニットテストをしてみた

変態アドベントカレンダーが止まってしまいそうなので支援します。最近、勤務先の会社で、アルバイト希望の学生に試験を出したりしているのですが、Comparatorが書ける子いないので、(ある意味)模範例のつもりで颯爽と書いてみたいと思います。(いえーい…

変態テンプレートでみんなの変態を集めてみた

変態アドベントカレンダー2011に参加しました。他の参加者の方々は、Twitterなどで見かけてはおりますが、リアルでの面識はありません。そんな僕がこの企画に参加した理由は、半年前、出身高校の文化祭に行ったのですが、科学部の理系女子高生がおっさんに向…

アンドロイドは猫さんとは仲がわるいのか

こんにちは。またまたはまりましたので報告します。このところ連投だなあ(笑) 問題概要 Android端末で毎画面セッションIDが変わるという現象が開発用のローカル環境で発生し、延々と調べてしまいました。 原因は、http://d.hatena.ne.jp/s-ishigami/201109…

MayaaなどRhinoを使っていてハマること。It is not a function, it is String

またまたドハマリをしたので報告します。シチュエーション的にはまれだと思いますが、同じ罠にはまると、解決するのに時間がかかると思うので報告します。現象としては、以下の2記事の組み合わせです。TreeSetのComparatorではまったのでメモ(初心者向け)…

2年間Mayaaを使ってわかったこと その2

前回のエントリは、ここ最近の自分の取り組みの集大成(大げさw)のつもりで気合を入れて書きました。結果、このブログとしては多めアクセス数、ブックマークをいただいているようで、誠にありがとうございます。*1しかし読み返してみると書き忘れたことが…

そろそろ2年間Mayaa使ってわかったことを書く

みなさん、日々のお仕事お疲れ様です。僕は、2年ほど前に、所属している会社の主要プロダクトであるのリニューアルに係わりました。その際、Mayaaを採用し、今日までにそれを運用してノウハウが蓄積してきたので、ここに発表しようと思います。 経緯 私たち…

TreeSetのComparatorではまったのでメモ(初心者向け)

今更感のある話題ですが、初心者=僕が、ドハマリして、いろいろ面白い現象に遭遇しました。 内容はいたって基本中の基本のため、仕事でプログラミングしている者としては恥ずかしい限りですが、後に同じようにハマる人がいたときのために、メモを残します。…

JavaでPDF生成する方法(LibreOffice, jodConverterによる方法)

JavaでPDFを生成する場合、こういった方法や、http://allabout.co.jp/gm/gc/80691/ こういった方法http://www.atmarkit.co.jp/fjava/javatips/121jspservlet41.html がある。しかし、どちらも低レベル過ぎて、美しいビジネス文書や帳票を出力するにはワープ…

Javaによるお気楽なサンドボックス環境の作り方(セキュリティーマネージャ)

Javaで #appengine のようなサンドボックス環境を作る場合、SecurityManagerを使用するのがよさそうです。http://itref.fc2web.com/java/security.html具体的には、ポリシーファイルというものを書くという形になります。(以下は転載) grant { permission …

プログラミング入門に向くのはどの言語か

釣りのようなタイトルで申し訳ありません。 この話題、人によってそれぞれの意見をもっていると思うので、議論が収束しなくなりがちです。例: 「私がJavaScriptを初心者用の言語として選んだわけ」(404 Blog Not Found) http://blog.livedoor.jp/dankogai…

ぼそっ……(つぶやき)

http://togetter.com/li/78184 より爆弾発言 ひがさん: Javaに未来はない 一方、Javaでサービス作って運用してて、Javaでなければ大変な目に遭っていた、Javaマンセーな日々な僕がいます。ああ、そうか。Javaに「現在」はあるってことかと思いました。考えて…

Mayaaでお客様が感動してるんですよ!

うちの会議室、大きな声などは執務室に漏れてしまうのですが、ある日聞いてしまったんです。 「これはすごい。感動した!」 営業の人が、MayaaによるHTMLテンプレートで、デザインがカスタマイズできるところを、デモしてたみたいなんです。1年前から、ECサ…

Javaが行き詰まってるだって?

釣られました http://www.publickey1.jp/blog/10/java_2.html おっしゃることは分かります。新人にJavaを教えるのは教えることが多すぎて、かといってCほどCPUの仕組みまで意識することができず、Ruby等の軽量言語よりも開発スピードが遅い、その上、Eclipse…

俺タイムラインメールアプリ

前回(といっても、半年近く前なんですね) http://d.hatena.ne.jp/s-ishigami/20100224 で、TwitterのTimeLineや、Replyをメール配信するGAE/Java アプリを公開させていただきました。その後、構造化されていないとか、一部からご反響をいただきましたが、…

twitterを携帯メールに転送するGAEアプリ

iPhoneも、Androidも、そもそも自宅ネット環境もない私はもっぱら、携帯でTwitterを使っています。tmitter(http://tmitter.org/)でタイムラインが取得できなくなってしまったので、GAEの勉強もかねて作ってみました。 package ishigami.twittermail; impor…

wicket-seasar2 sampleでS2JDBCを使うことに成功しました

こういう素朴なことを誰も書いていないので。。。ちょっとdiconファイルとPOMを書き換えるだけで成功しました。 手順 doltengが生成したdiconファイルをマージしました。まず、app.diconに <include path="s2jdbc.dicon"/> を追加します。以下、全文 <components> <include path="s2jdbc.dicon"/> <component name="address1" class="jp.javelindev.wicket.seasar2.sample.bean.Address"> </component></include></components></include>

wicket-seaser2でDoltengを試してみる。〜その2〜

前回の続きです。 前回はこちら:http://d.hatena.ne.jp/s-ishigami/20090527/1243403494id:H_Yamaguchi さんのご指摘を受けて確認したところ、 org.seasar.dolteng.eclipse.prefsは以下のようになっていました。 #Fri May 29 14:10:42 JST 2009 DaoType=S2J…

wicket-seaser2でDoltengを試してみる。

id:H_Yamaguchi さんが、公開してくださった、Eclipseプラグインを使ってみます。 インストール http://d.hatena.ne.jp/H_Yamaguchi/20090210/p1 の指示の通りに、Eclipse Updateから、以下のサイトを追加します。 http://yamaguchi.googlecode.com/svn/trun…

WicketでS2Containerを動的に切り替えたらウマーでしょうか

BirdieMartのアーキテクチャを考えています。(以前の日記に書いたものは現状のものであって決定ではありません。)オープンソースなのだから、独自コンテナ、独自DBライブラリとかやめようよという声も聞こえます。 それでどうしようかなぁと、同僚の中国人…

静的ページのように見せかけるUrlCodingStrategy

前回作ったものを拡張して、パラメータなしの場合は/index.htmlを付与するようにしてみました。 public class FakeStaticHtmlBookmarkablePageRequestTargetUrlCodingStrategy extends BookmarkablePageRequestTargetUrlCodingStrategy { public FakeStaticH…

WicketでJDBCでSQLExceptionが面倒な件

オープンソース化の作業を進めつつ、しこしこコード修正しています。 独自実装のJDBCファサードがありまして... 僕は、ずっとORマッパやDIコンテナを使わずに、ひたすらJDBCをラップしたクラスを使って MapをListにしたようなデータ構造に値を流し込むプログ…

WicketのCPU負荷〜その6〜まとめ

今日はこれまでのまとめをします。なお、私の使っているWicketのバージョンは1.3.5です。 1. WicketのAutoLink機能 Wicketでは、通常、デザインを設定するマークアップファイル(HTMLテンプレート)を、クラスパス上に配置します。 ところが、もしそこに画像…

WicketのCPU負荷〜その5〜

すごい人から★がつけられてるのでビビってきています。JMeterで、受信したHtmlの画像を再リクエストするというオプションがあったので使ってみました。10秒で300回トップページ表示を行った結果: 初めの20〜30リクエスト: 0.5〜1秒程度(キャッシュがきか…

WicketのCPU負荷〜その4〜

AutoLinkをOffにしてみました。 public class MyApplication extends WiedieApplication { @Override protected void init() { super.init(); getMarkupSettings().setDefaultAfterDisabledLink(""); getMarkupSettings().setDefaultBeforeDisabledLink("");…

WicketのCPU負荷〜その3〜

id:t_yanoさんのご指摘により、アプリケーションサーバTomcatの最大スレッド数をあげてみました。server.xml <Connector 〜省略〜 maxSpareThreads="300" maxThreads="300" minSpareThreads="100" port="8080" redirectPort="8443"/> maxSpareThreads、maxThreads を 75→300 minSpareThreads を 25→100今回は、10秒…</connector>

WicketのCPU負荷〜その2〜

昨日は、DEVELOPMENTモードでの実行だったので、今日はDEPLOYMENTモードでやりなおしてみました。Wicketはデバッグ情報の構築や、詳細なエラーメッセージを表示するDevelopmentモードと、これらを省いてパフォーマンスやセキュリティーを優先するDeployment…

WicketのCPU負荷

Wicketはメモリをいっぱい消費することは有名ですが、メモリ管理を自動で行ってくれるので、不要になったデータはハードディスクに保存されたり、破棄されたりするので、これは比較的問題なさそうです。実際のところ、どうなのか、jconsoleで実験してみまし…

今こんなの作ろうとしています。>独自のIRequestTargetUrlCodingStrategy 〜その2〜

下記の件についてHybridUrlCodingStrategyではさすがに敷居が高すぎるので、 とりあえず、ステートフルページは考慮しないことにして、BookmarkablePageRequestTargetUrlCodingStrategyを元に作ってみた。しかも、ページ名を最後に持ってくるのはとりあえず…

今こんなの作ろうとしています。>独自のIRequestTargetUrlCodingStrategy

Wicketを使って、ECサイトを作っています。営業さんからの要望で、ページのURLを下記のようにできないかと言われて調査中: http://domain/param1/value1/param2/value2/page.html 要旨 page.html?param=valueとかはダサイからダメ page.html/param/valueも…