読者です 読者をやめる 読者になる 読者になる

はてなダイアリーに戻りました

なんか馴染めなかった。→ marsのメモ

IntelliJとかReSharper, RubyMine, WebStormなどJetBrains製品のリンクバナー

IDEA



ここの右上にあるバナーは勝手バナーじゃなくて、JetBrains公式のものなんです。何年前だか忘れてしまったのだけど、JetBrainsにロゴ作成ページがあって、そこで作って貼ってたのね。今だとリンク辿りづらいのだけど、以下から辿れる(どーでもいい昔話ばかり知っててすんません。
JetBrains :: Logos, Graphics, Link Logos

さらに、他のIDEのもあるみたい(自分が作った時はIntelliJとReSharperだけだった気が...。



へーってんで調べてみました。


なんでか PyCharm と TeamCity を見つけることができなかったけど、だいたい揃ってるのね。そんなわけで、ごひいきのIDEのリンクバナーを貼ってみてはいかがでしょう。
#本来、こうゆうのはサムライズムが呼びかけるべきなんでは...。|ω・`)チラッ


ps.
個人的にはデブサミで配ったステッカーの電子データが欲しいのだけど、それは公開されてないようでした。(´・ω・`)

Re: IntelliJ IDEAでJavaのstatic import文に関する効率化設定をLive Templateで実現する

IDEA

http://d.hatena.ne.jp/absj31/20130218/1361134157


コメントをTwitterで済まそうと思ったら、うまく伝えられなかったのでトラックバックします。static importの展開がちょっと冗長とのことですが、ちょっと設定しとくと元のエントリより1ステップほど減らせます(たった1ステップだけかよ、とか言わないw


まずは、Live Templateの設定。ほとんど変わらないのだけど、Optionsの"Use static import if possible"をチェックしとく。これで、static importにできそうな部分はstatic importに置き換えてくれる。ただ、残念な事に"Assert.assertThat()"しか変換対象になってくれない。:-(
f:id:masanobuimai:20130218222519p:plain


すぐさま試さないで、もうちょっと仕込みをしとく。ひとつは、Settings->Code Style->Java->Importsの設定。ここの"Names count to use static import with '*'"に入れた数字が、static importで "*" を使いはじめるimport文の数。以下のスクリーンショットだと、3つ同じクラスのメソッド使ったら "*" にまとめる(static importはつねに "*" で良ければ、1 とか 0 を設定する。
f:id:masanobuimai:20130218222546p:plain


個別のパッケージだけ "*" を許可したいのであれば、その下の"Packages to Use Import with '*'" にパッケージを指定する。static importで有効にしたい場合は、"Static"にチェックを入れる。さっきのスクリーンショットはつまり、こうゆうこと。

  • 普通のimport文はいかなる場合も "*" を許さない("Class count to use import with '*'"を99*1
  • static importは同じクラスを3つ使ったら "*" にまとめる("Names count to use static import with '*'"を3)
  • "org.junit.Assert"は常にstatic importで "*" にまとめる("Packages to Use Import with '*'"に "org.junit.Assert.*"を指定)

このあたりのことは,この辺も参考になるかも。→ 10日目 IDEの設定(Project Settings) - marsのメモ


これで終わりじゃ無くて、最後にもうひとつ(ふたつ?)。Settings->Editor->Auto Importで、以下の2つにチェックを入れる。

  • "Optimize imports on the fly"
  • "Add unambiguous imports on the fly"

f:id:masanobuimai:20130218222759p:plain


これで、必要/不要なimport文を即座に追加・削除してくれる。この設定、ある意味で諸刃の剣で、常に必要とするimport文のみにするので、ちょっとコメントアウトしてみただけでも、それに該当するimport文が即座に消えて無くなる。あと、人さまのコードをちょっと弄っても、import文の最適化をしちゃうので、良かったり悪かったり。:-P
先と同じく,この辺も参考になるかも。→ 11日目 IDEの設定(IDE Settings:前編) - marsのメモ


ここまで来れば準備完了。実際やってみるとこうなる。まずは、Live template展開。
f:id:masanobuimai:20130218222829p:plain

テキトウに穴埋めして展開完了。
f:id:masanobuimai:20130218222859p:plain

assertThat()はstatic import化してるけど、CoreMatchersがまだ。これはどうやら、そのままらしい。仕方ないので、CoreMatchersにカーソル寄せて、Alt+Enter(MacだったらOpt+Enter)で "Add on demand static import for 'org.hamcrest.CoreMatchers'"を選択。(´・ω・`)
f:id:masanobuimai:20130218222936p:plain

あとはごらんの通り。
f:id:masanobuimai:20130218222947p:plain


ps.
あとLive templateをコード補完の候補に紛れ込ませる設定はこちらを参照。→ IntelliJの隠しオプション一覧 - marsのメモ


ps2.
id:sioiri さんのLive Templateにするとさらにもう1ステップ減らせますね。




ちなみに、こんなやつ(ちょっぴりアレンジ。

org.junit.Assert.assertThat($actual$, $matcher$);
    $actual$  ... Expression:complete()
    $matcher$ ... Expression:classNameComplete(), Default value: "is"

だがしかし、正直テンプレートの自由度についてはEclipseのほうが上なのだ。
全Eclipse Java プログラマーに捧げる Eclispe 徹底活用術完全版〜Eclipseに空気を読ませて楽する術〜 - Yamashiro0217の日記

というか伝統的にIntelliJがイケてない(下記リンクのおまけ参照。:-P
31日間ReSharper一周 ... それIDEAでもできるよ(その7) - marsのメモ

*1:もっと多くても良い

CloudBeesにお試し用データベース作った

memo

なんか試してみようと思うと、いつも目の上のたんこぶになるデータベース。ローカルのPCにインスコしとくにしても、滅多に使わないので、ただでさえ非力なMacBook AIRではディスク容量やプロセスの負荷(メモリやCPU)が気になって、そのうちやる気がなくなる原因No.1。そんな折、CloudBeesのRUN@cloudにDB(MySQL)のPaaSサービスがある事を知る。
CloudBees: The Java PaaS Company


ちょうどIntelliJ IDEA12でCloudBeesのサポートもはじめたし、興味がわいてるうちにDB作ってみた。


CloudBeesは専用のSDKを提供していて、チュートリアルなんかには専用の接続URL("jdbc:cloudbees://")を持ってるようなのだけど、IntelliJから操作する分にはSDK無くてもいけそうなので、DBもMySQLのドライバで繋げられるかチャレンジしてみた。


結果は簡単。CloudBeesのPaaS Consoleに表示されているDBの情報からサーバ名(Server)、ポート番号(Port)、アカウント情報(Username/Password)を引っこ抜いて、MySQL用の接続文字列を作るだけ。
f:id:masanobuimai:20130217160505p:plain


IntelliJのDatabaseプラグインはJDBCドライバも落としてくるから、あとはさっきの諸元入力しておしまい。あら、簡単。
f:id:masanobuimai:20130217160518p:plain


サンプルで作っとくデータベースには懐かしの「SQL書き方ドリル」に付いてたDDL文とデータ投入用SQL文を利用。これで何かしたいときに「あー、サンプルDBないわー」とはならずに済む。


ps.
CloudBeesってJenkins使えるDEV@Cloudが注目されがちだけど、JavaのPaaSとしてのRUN@Cloudもなかなかにして侮りがたい。:-)

改訂新版 反復学習ソフト付き SQL書き方ドリル (WEB+DB PRESS plusシリーズ)

改訂新版 反復学習ソフト付き SQL書き方ドリル (WEB+DB PRESS plusシリーズ)

おもしろプラグイン:Copy as HTML

IDEA

http://plugins.jetbrains.com/plugin/?idea&pluginId=190


最近アップデートされてて、その存在に気付いた(初回リリースは2009/05/08なので割りと歴史のあるプラグインのようす。
提供機能は単純で、ソースコードの選択範囲をHTMLテキストとしてクリップボードにコピーしてくれる、たったそれだけなプラグイン。勘の良い人は気付いたと思うけど、あるコード片をシンタックスハイライト付きでプレゼンツールやワードプロセッサなどに貼り付けるときに活躍する。


以前は、IntelliJが標準でもっているソースコードのHTMLエクスポート機能(File->Export to HTML)を使って、HTML化したソースコードをブラウザで開いて、特定のコード片をコピペしてたんだけど、その手間が一気に減る。でもって、IntelliJのHTMLエクスポートはカラースキームがどことなく微妙だったけど、Copy as HTMLプラグインは現在のカラースキームを忠実に再現してくれる。これ重要w


ちなみにこれが、Copy as HTMLで書き出したHTML.

    // "Reserve" these keys so they don't work in IDEA. Eventually these may be valid plugin commands.
parser.registerAction(KeyParser.MAPPING_ALL, "VimNotImplementedHandler", Command.Type.OTHER_READONLY, new Shortcut[]{
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_G, KeyEvent.CTRL_MASK)),
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_L, KeyEvent.CTRL_MASK)),
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK)),
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK)),
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_Z, KeyEvent.CTRL_MASK))
});


おなじものをIntelliJのExport to HTMLで書き出すとこうなる(使い勝手が悪いので画像を貼り付けた。
f:id:masanobuimai:20130202082308p:plain


このプラグイン、Windowsで使うとクリップボードにコピーしたのをWordなどに貼り付けると、そのまま装飾付きで張り付くんで便利この上なしなんだけど、Macだとクリップボード内のデータの持ち方が違うのか、普通にテキストとして張り付いてしまった。
しかたがないので、Macで使う場合は、いったんHTMLファイルに落としてから「Safariで開く→Safariからクリップボードにコピー→テキトウなアプリに貼り付け」という手順を踏む。それと、プラグインはJava7でビルドされているので、IntelliJ自身もJava7で起動しておかないと、そもそも動かない。と、ちょいとMacユーザには不遇なプラグイン。:-P

Java One 2012 フィードバック!( #てらだよしおまつり )に参加してきた

life

http://tohoku-dev.jp/modules/news/article.php?storyid=182


約半年ぶりに寺田さん(@)が来仙するってんで参加してきました。内容はJava One 2012 SF中心でJavaEE7とかJava8とかといったかなり未来の話。:-)


いろいろ考えさせられたが、それ故に消化するまで時間がかかりそうなので、主立ったメモだけ残すよ。





はじまった。







JCPはよりオープンになったって話。Specification LeadsやExpert Groupに属して無くても意見があったらガンガン言えるようになった(むろん英語で)。Java8のλに関しても日本の大学生がガンガン意見言ってたという事例があるそうな。
そう思うと日本初のJSRが一つくらいあってもいいんじゃないかと。例えば2Way-SQLなんかJSR化してもいいくらいの良い考え方だと思うけどなー、とか思ってみたり。





「社外のコミュニティに積極的に参加してる人とそうでない人で情報格差が広まっている」とのこと。まあ、そうかも。こうゆう場に集まる人たちはアンテナ高いけど、それを職場にフィードバック出来てないのは不徳の致すところでございます。








JSF2.2やWebSocketのAPIとか見てて思わず「ラッパー組んじゃる」って考えるのは悪いクセ。いちいち帯に短したすきに長しと思わないで、黙って出来合いのAPIを使ってみようという境地に至りたい。


番外編:




スライドにあったIDEの紹介にeclipseNetBeansだけでなくIntelliJ IDEAもあったのは評価するが、相変わらず動的言語でgroovyを飛ばす(なんか恨みでもあるのかw







JavaScript無双をどこまで信じていいものか...。(´・ω・`)


おまけ:






まだJava6すら使ってない我々にとっては未来過ぎる話でしたね。:-)


ps.
寺田さん、最新情報をありがとうございました。テム・レイ化しないようコツコツ素振りします。それと運営の村上さん(@)おつかれさまでした。ノシ

ガイアメモリケース自作したった

life

息子が人生初のお年玉をもらったので「好きなの買って良いよ」言ったら、ダブルドライバーが欲しいとのこと。スーパーベスト版はガイアメモリ6つ付いてるもんな。結構、計算してんな。:-)


今まで、オーメダル、アストロスイッチ、ウィザードリングと作ってきたので、当然ガイアメモリもケース自作したさ。ダブルドライバーはベルトではなくガイアメモリが音声発するため、その辺に放っておくと不意にボタンが押されて、突然「\サイクロン!!/」とか鳴るので片付けに困るってのもあるので、必要に迫って作ったって話もある。


材料はいつもの100均プラスティックケースとプレイマット、今回は実用重視(片付け目的)なので、割りとやっつけ仕事で作った。
f:id:masanobuimai:20130106220759p:plain
f:id:masanobuimai:20130106220803p:plain


余力があったら両面にマット敷いて、メモリを寝かせた状態で片面3本づつ納めたかったんだけど、マット1枚から2面分取れなかったため、片面に敷いてメモリ縦置きにした。ダブルが本放送やってるときだったら、こんな妥協はしなかったと思うが、ゆるせ。

仮面ライダー SUPERBEST 変身ベルト DXダブルドライバー

仮面ライダー SUPERBEST 変身ベルト DXダブルドライバー