2014年5月16日金曜日

Excelからのcsvをjava.nioで読んだらMalformedInputException

環境

  • Mac OS X Lion
  • Java 7
  • 元ファイルは素性のしれないxlsx
  • Excel 2011

経緯


素性のしれないxlsxをExcelでcsvにした

こんな読み込みをしていて
こんな例外が

java.nio.charset.MalformedInputException: Input length = 1

元のファイルを見てみる

$ file --mime fuga.csv
fuga.csv: text/plain; charset=unknown-8bit

unknownとかいっちゃってる。

sublime Textで、UTF-8 で保存しなおす。

$ file --mime fuga.csv
fuga.csv: text/plain; charset=utf-8

わーい。
これで読み込めた。


追記

そもそもなんだけど、Excelでcsv出力すると、S-JIS(固定)らしい。

別件で、InputStream扱うときに

BufferedReader br = new BufferedReader(new InputStreamReader(hoge.getInputStream(), "SJIS"));

List<String> stringList = new ArrayList<>();
while(br.ready()) {
    stringList.add(br.readLine());
}
br.close();

とかで読み込みできた。

ちなみに、hogeはSpringのMultipartFileです。


2014年4月30日水曜日

SpringMVCのform:selectだけど、optionのlabelが使いたい

結論から言うと、妥協してるのでいい方法があったら教えて欲しい。

元のやつ

<form:select class="hoge-form" items="${hogeMap}" path="hogeId" required="required">


hogeMapはSpringMVCのControllerで定義されているMap<Integer,String>である。
上記のようなタグは、実行されるとこんな感じになる。

<select id="hogeId" name="hogeId" class="hoge-form" required="required">
<option value="1">リスト1</option>
<option value="2">リスト2</option>
</select>

このoptionのところにlabelをつけたいんだけど、form:selectだとどうにもうまくいかなくて妥協したのがコレ

<select id="hogeId" name="hogeId" required="required">
<c:forEach var="hoge" items="${hogeMap}" varStatus="hogeStatus">
<option value="${hogeMap.key}" label="${hogeStatus.index}.${hoge.value}" class="hoge-form" />
</c:forEach>
</select>

生成されるのはこんなん

<select id="hogeId" name="hogeId" required="required">
<option value="1" label="0.リスト1" class="hoge-form"></option>
<option value="2" label="1.リスト2" class="hoge-form"></option>
</select>

びみょ

追記

別途modelMapになにかのmodelがあって、form:selectのpathに指定したやつがmodelMapのmodelのプロパティにあると勝手にそれをselectedにしてくれる機能を使ってる場合は別途、<option>にこんな指定が必要です。


${(model.hogeId eq hoge.key)?'selected="selected"' : ''


2014年4月22日火曜日

Basic認証ついてるAPIをSpringのRestTemplateでPOSTするサンプル

タイトルまんま。例えばcurlで


curl http://example.com/hoget -X POST -u shase:p@$$w0rd

こんな感じで使えるAPIをRestTemplateで使おうと思った時はこんなコードでOK



こちら参考にしました(リンク先はGETの例)
http://springinpractice.com/2013/10/02/quick-tip-basic-authentication-with-spring-resttemplate

2014年4月10日木曜日

骨の折れる話

案外インターネット上に情報が少なく感じたので、親指の骨折(母指基節骨骨折)から治療までの記録を簡単に残しておこうと思います。

今丁度2回目の手術(固定ワイヤーの抜針)が終わったところです。

時間のない人向けまとめ


  • スノーボードは油断するとすぐ怪我をするので気をつけよう
  • 手の外科は専門性が高いので、「手外科専門医」がいる病院を選ぼう
  • やっぱり保険は大切
  • 手術室のBGMは先生の趣味


ま、ふつーのことなんですが。。。
こっから語り入ります。


骨折〜診断

2月のとある日曜日に、会社の同僚とスノボに行き、誰も見てないところでふつーにこけました。

こけた時に、思わず左手をついてしまったらしく、親指の付け根のあたりから腫れていて、突き指をしたような痛みがありました。

痛みはあったものの、そんな大したこともないかな〜という感じで、自力で下山してその日は新幹線で東京の自宅に帰りました。

翌日、市販の湿布をして寝て起きて、それでもやはり腫れが引いておらず、これはヒビでも入ってるかなぁ、と思い、ネットで調べて家から近い整形外科のA診療所に向かいました。

そこで撮ったレントゲンを見ながら

「折れてますねー。これは手術しないとだめですねー」

という、宣告を受けたのでした。

ひと駅隣に、手の専門医がいる病院があるとのこと。

特に手の外科手術をしてくれそうな病院に心当たりがなかったので(普通無いですよね)、紹介状を書いてもらい、午後の診察に間に合わせる感じで、その専門医のいるB病院に行ったのでした。

手外科専門医

あとから知ったのですが、手という器官はとても難しいらしく、整形外科の中でも、更に専門性が高いそうです。

手外科学会というところが、「手外科専門医」認定制度を行っていて、そこに登録されている人は一応手外科の専門医として、認められているそうです。

こちらにリストがあります。

http://www.jssh.or.jp/ippan/senmon/senmoni-meibo.html

首都圏には多い気がしますが、やっぱり地方には少ないですよねぇ。

この話もずいぶん後になってから知ったんですが、わたしを担当していただいた先生もリストにいました。
さて、その病院に行き、レントゲンを撮って、速攻で

「明日は祝日だから、明後日手術できます?」 

という話になり、ずーん、と落ち込んだのを覚えています。

なんでもやっぱり手術以外の解決方法がないとのことで、放置しておくと握力無くなる、という話でした。

セカンドオピニオンも一瞬だけ考えたんですが、最初に行ったA診療所の先生が、

「ウチでは手の骨折はこの病院を毎回紹介しているし、このへんの病院の間でも手ならB病院だね」

なーんてゆってたので、めんどくさくなってじゃあ明後日手術します。ということになりました。

その日は手術の為の血液検査とか、事前のブリーフィングとかして帰りました。

手術


人生で手術なんてしたことなかったのでガクブルだったんですが、事前の説明で

  • 日帰り手術
  • 麻酔は左腕一本(伝達麻酔?)
  • 時間は1時間ぐらい

ということだったので、まぁ、そこまででも無いのかなぁ、と思いました。

実際やってみるとしんどかったんですが。

日帰り手術なので、まず、入院して、手術着に着替え、熱を測ったり、血圧を測ったりします。

時間は結局前の患者さんの手術が押したりするとズレするので、だいたいO時ぐらい、という感じです。

ガクブルしながら暇を潰します。

そして、いざ呼ばれると、まぁ、手以外は元気なので、徒歩で手術室に向かいます。

手術室に入ると、まず患部を洗うように言われます。これも看護師さんに言われながら自分で洗います。

その後、手術台に横たわり手術。。。という流れなのですが、わたしが行った手術室では東京FMがずーっと手術中も流れていました


手術室のBGM

これもあとから知ったんですが、手術室のBGMって、先生の趣味、らしいですね。

先生によってはお気に入りのBGMを持ち込む人もいるとか、いないとか。。。

開腹のようなガチの奴はBGM無しだったりもするようです。

手術の流れとしては、麻酔〜執刀〜縫合、って感じでしょうか。

全身麻酔ではないので手術されている間意識があるんですが、金属製のワイヤーとかを扱っている関係で、

キーン、とか、バチッ(ニッパーで切る)とか金属加工音

がいちいち気になりますが、どうしようもないですよね。。。

都合2時間ほどかかったのですが、憔悴してるわたしに先生が一言

「靭帯も切れてたから縫っておいたよ」

と軽い感じで言われたのが印象的です。骨折に加えて靭帯も切れていたみたいでした(靭帯はレントゲンに映らないので開けないとわからない)。

この手術では結果ワイヤーを4本埋め込む事になりました。

術後

手術した当日の夜がしんどかったです。

麻酔が切れた途端、激しい痛みが押し寄せました

ま、切ってるから当たり前なんですが、耐えかねて痛み止めを2回分飲んだんですがそれでも痛くて、その夜は悶絶しながら寝ました

ちなみに、処方された薬は、


  • 鎮痛剤
  • 抗生物質
  • 胃薬


でした。これを5日ぐらい飲み続けます。痛みは2〜3日目からずいぶん良くなりました。
この時はギブス固定されています。

抜糸

術後一週間ぐらいで、抜糸が行われます。ハサミでチョキチョキってかんじです。まだギブスは取れません。

ワイヤーを1本抜く

術後三週間ぐらいで、1本ワイヤーを抜きました。といっても手術ではなく、

ワイヤー1本は外に露出してる

という状態でした。それをペンチでエイヤーって抜く感じですね。これはこれで痛い。

このタイミングでギブスも外れました。

リハビリ(指を動かせ)と言われるのもこの辺りから。


保険について

手術の費用としては、3割負担のおかげで、1回数万円程度でした(痛い出費ですが。。。)

スノーボード用の簡易な保険とかに入っておくのも良いかも、と今回の事件を振り返って思いました。

旅行代理店のパック旅行中の怪我だったので、通院が終わって総額が算出され次第、保険適用の申請をする予定です。

最初に通院した時に、旅行代理店に電話したところ、「事故発生報告」のような書類の提出を求められ、返信すると、各種手続きの書類が送られてきました。

通院時の領収書等を残しておいたほうが良いとの事だったので、一応全部残してあります。

再手術の日程決まる

術後六週間ぐらいで、そろそろ再手術できるかな、という話になりました。指にワイヤー3本残っており、それを撤去する手術になります。

ちょうど年度初めにかぶっていたので、わたしは1周間だけずらしました。

再手術

術後八週間ぐらいで、再手術と相成りました。今回の手術も

  • 日帰り手術
  • 局部麻酔(今度は腕ではなく、手だけ)
  • 時間は1時間ぐらい

という話でした。

基本的な流れは前回の手術と一緒なんで、端折りますけど

  • 時間はすぐ終わった(手術時間自体は10分程度)
  • 手だけの麻酔なので逆に痛い(麻酔の注射自体の痛みとか、腕に感覚があることによる痛みとか)
  • やっぱり手術室は東京FMだった
という感じで、とりあえず無事終わりました。

術後の痛みも前回に比べれば全然マシでした。でも、やっぱり憔悴してはいます。。。

最後に

今後の流れとしては
  • 抜糸
  • リハビリ
  • 術後1ヶ月ぐらいに先生の最後のチェック
  • 終了
という感じだそうです。(もちろん、予後次第というのはありますが)。

今回のことで、多くの人にご迷惑をお掛けして申し訳ないと思いつつ、また多くの人に心配して頂いて感謝の気持ちでいっぱいでした。

一気には難しいかもしれませんが、ちょっとずつ恩返しができたらなぁ、と思っています。

2014年4月3日木曜日

Springockitoのメモ(一部だけMockitoのモックに)

要旨

Spring+Mockitoを使った環境で、DIしてテストしたいときに、一部だけMockitoのモックに置き換えたい、という話。

Mockito単体だとなんかうまくいかなくて。
もしかしたら、Mockitoでも、やりかた間違ってんのか、もしくは、PowerMockとか使えばいけんのかも。

説明

このコードは、Service1の中で、Service2のメソッドが呼ばれています。
で、Service1のテストをしたいんだけど、Service2のメソッドだけモックにしたい。 しかし、Service1の他の処理はモックにしたくない。

そんなとき。

こんなコードで動くかなーと書いてみます。 残念ながら、このコードは動きません。

ここで、Springockitoです。
 https://bitbucket.org/kubek2k/springockito/overview


こんな書き方ができます。

使い方

Mavenの人はpomにこんな感じで追加しといてください。

Javaでテストと言えばコレ

2014年3月23日日曜日

vimチートシート(書きかけ)

導入


tmux.confの設定
ln -s ~/Dropbox/dotfiles/.tmux.conf ~/.tmux.conf

vimの設定
mkdir -p ~/.vim
mkdir -p ~/.vim/bundle
ln -s ~/.vimrc ~/Dropbox/dotfiles/.vimrc 

neobundle.vimの導入
git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim

:NeoBundleInstall

でOK

参考にしました
http://www.karakaram.com/vimfiler
http://qiita.com/hide/items/b0087bc0bbc36d0f91fb

neobundle

参考にしました
http://vim-users.jp/2011/10/hack238/
http://qiita.com/puriketu99/items/1c32d3f24cc2919203eb


コマンドチートシート

  • 大文字小文字変換
    • ~
  • 行番号の表示非表示
    • set number / set nonumber

2014年1月9日木曜日

Eclipseでメソッドをオーバーライドした際に、@inheritDocコメントを入れる

Eclipseにて

[環境設定] -> [Java] -> [Code Style] -> [Code Templates] -> [Comments] -> [Overriding methods]

こいつをEditして、下記の感じに編集

/**
* {@inheritDoc}
*/

OKしてapply

下の方の、Automatically add comments for new methods and types
にチェックをいれればおしまい。

あとは、オーバーライドすると勝手に上記のコメントが挿入されるようになります。

2013年12月31日火曜日

2013年を振り返りつつ、2014年を考える

去年の記事

2012年を振り返りつつ、2013年を考える

今年やった仕事



今年やった仕事ですが...


  • 秋ぐらいまで、昨年に引き続き、コミュニティ系のサービスの機能開発と保守
  • 上記のサービスが体制変更となり、秋〜現在までEC系サービスの機能開発と保守


でした。

扱っているテクノロジー的にはStruts2 からSpring MVC になりました。

前者のサービスは、トータルで1年ちょっと関わることになり、個人的にも大変思い入れがあったのですが、ビジネス上の判断が下され、自分の無力を感じています。チームもとてもよい人ばかりで、それも名残惜しい物でした。

後者のほうは、リリース1ヶ月後にJoinしたので、まだいろいろなものが途中でかえって勉強になって良かったです。いわゆるフレームワーク部分を作った人が隣にいるのでいろいろ聞きながら機能追加できるのは幸せなことかもしれません。


今年の課外活動


これ、今年はまったくと言っていいほどやっていません。どうしましょ。

感想と抱負



今年は、意図した結果ではありましたが、仕事に大変打ち込めた年でした。関わっているサービスが担当変更になるという事件はありましたが、総じて仕事に集中でき、スキルの向上に務めることができました。

ただ、課題としては、

  • スキルの成長角度がまだ小さい
  • オープンソースにコミットできていない
  • ビジネス上の結果を残すことができなかった

というのがありました。

それを踏まえて、2014年は

  • オープンソースにコミットする(ために足がかりでもつかむ)
  • スキルの深さと幅をひろげていく
  • ビジネス上のとある目標を達成するために、必要な自分のスキルを向上させる
を意識して過ごしたいな、と思います。
ま、定性的ですが、定量的なものは別途個人でつくっています。

総じて、今年の路線は踏襲するものの、角度は上げていきたいという感じです。

また、個人的なところでは、今年よわい30を迎えることになりそうです。30代なにをしようか、というのも暫く模索したいと思います。

最後に、今年は本当に一緒に働く同僚に恵まれた年でした。この場でお礼を言いたいです。ありがとうございました。


小話



学生の頃使っていたFreeBSDのインストーラ(当時はsysinstall(8))では、インストール時に下記のような区分がありました。参考リンク

Developer
Kern-Developer
User

当時私が所属していた研究室のヒエラルキーも、これに習って決められていたのですが。。。それはともかく。

自分はこれでいうと、Userレベルなままであり、今年こそはKern-Developerの足ぐらいはつかめるくらい頑張らないとなぁ、と思っています。

2013年11月11日月曜日

debianのapacheでrewrite有効化メモ

たぶんubuntuでも一緒。

今組み込まれているモジュールを表示してみる

# /usr/sbin/apache2ctl -l

mod_rewriteがなかったら下記で組み込む

# a2enmod rewrite

apache再起動
httpd.confとかでonすればあとは普通につかえる。下記みたいに。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ http://shase428.blogspot.jp? [R]
</IfModule>

2013年11月10日日曜日

JJUG CCC 2013 Fall 参加めも

今回はじめて、JJUG CCCに参加してきました。
http://www.java-users.jp/?page_id=695(これ)

なんか、devloveさんのイベントとかぶっていたので、こちらに来れなかった人もいるのかもしれませんね〜。

全般的にとても楽しく、モチベーションの向上につながりました。次もぜひ参加したいなーと。

運営の皆様ありがとうございましたm(_ _)m

今回は下記のセッションに参加しました。

参加したセッションと簡単な感想


  • JSR 310 "Date and Time API" への招待
    • 8以降だと、日付周りはJSR 310使うと楽そうだな〜と思います。
  • テンプレートエンジンを利用して、プログラマーとWebデザイナーが共同作業をする上で大切なこと
    • 問題意識の部分はかなり同意できた
    • これからテンプレートエンジン使わない開発になっていくから、どういう分業になるのか、まだちょっとわからないよな〜とかモヤモヤ考えていた
    • 自分の環境だとフロントのエンジニアとバックエンドのエンジニアがいて、デザイナー⇔フロントエンジニア⇔サーバサイドエンジニアの3層構造になっていて、またちょっと違う(が、境界の部分はいろいろ考えないといけないことがある)
    • このセッションはデザイナ⇔エンジニアの2層構造のときの話
  • ユニットテスト改善ガイド
    • 問題意識が、だいたい同じで、そんなズレてなくてよかったと思った。
    • Junit徹底入門ちゃんと読みます。。。
  • Javaアプリケーションサーバ構築・運用の勘所
    • 知ってることもあったが、知らないこともあった。とても勉強になったわー。
  • JVMコードリーディング入門 ~JVMのOS抽象化レイヤーについて~
    • いつかチャレンジしたいJVMのコードリーディング
    • やっぱc++勉強しないと、という気に
  • Over the Node.js. An Introduction to Vert.x
    • Javaにもこんなものが!(はじめて知った)
  • Spring Frameworkの今 (2013年版)
    • なんかすげードキュメントが公開予定らしいので期待
  • 懇親会
    • みなさんのLTおもしろいww

スライドリンク

公式まとめあるのかな?とりあえずtwitterで拾えたもの貼りました

LTのかた

以下完全に雑多なメモになります



◯Date and Time APIへの招待

時間の定義

UT:世界時
 観測地点に依存しない
 1928

TAI:原子時
 1955
 原子時計に基づく正確な時刻

UTC:協定世界時
 1972
 TAIにうるう秒を加え、UTIとの誤差を調整

地方標準時とタイムゾーン
 UTCに時差を加える

タイムゾーンはコンピュータの世界では標準化されている
 tz database(tzdb)
 tz databaseは随時更新されている
 例:Asia/Tokyo
 javaのupdateのたびに、tzdbも更新されている

Java 8における時刻、時間の表現

java.util.Date   ANSI/ISO Cのtime_tと同等。現在は表現のみに徹する。
java.util.Calendar  Java国際化対応(JDK 1.1で導入)。日付・時刻の作成・編集に用いる。
java.time.*   JDK8から。Date/Calendar代替が当初の目標。日付・時刻を総合的に扱うフレームワーク。規模的にもJDK8の新APIでも最大級
(JSR 310)

Dateの課題
 フィールド操作が面倒
 年フィールド+1900が実際の年
 月が0から始まる
 フィールドの直接操作が非推奨(Calendarを使う)
 日付部と時刻部が混在
 日付演算が貧弱
 フォーマットも使い勝手に難
 JDK1.1以降、一部例外を覗いてメンテナンスなし

Calendarの課題
 フィールド操作が面倒(Dateよりはまし)
 月が0から始まる
 フィールド操作の使い勝手がいまいち
 日付演算が貧弱
 日付・時刻型と認識されないことも多い

Java8でのCalendarの改善
 JDK8より、Calendar.Builderを導入

とはいえ貧弱

JSR310:Date and Time API
 Date,Calendar,DateFormatを置き換えが目的
 ISO 8601形式の表現
 immutableかつスレッドセーフなAPI

 

内部表現
 時間軸:clock
 ある時点:instant


◯ユニットテスト改善ガイド

参考書
実践アジャイルテスト

写経のススメ
 サンプル問題
 ローカルjenkins
 問題意識はズレてない

テストコードのメンテナンスをしましょう
 プロダクション以上に冗長
 量も多い
 後でリファクタリングするでは遅い
 3つ目をコピペする、ではプログラマーではない!!!!!!!!!!!!!!!!
 あとでリファクタリングする、では遅い!!!!!!!!!!!!!!!!!!!
 最初からリファクタリングする
 とてもコストがかかります

◯Javaアプリケーションサーバ構築・運用の勘所

ログ管理
 ログをきちんと取得していないシステムはスピードメーターが壊れている車と同じ

なんといってもGCログ
日時データがないログは意味が無い
GCViewer便利
 本家はstopしてしまった
 forkされてなんか開発中(datestamp対応)
GCログの上書きに注意

ヒープダンプの前に、ヒープのヒストグラムを取るケースもあるかも
通常時のヒープダンプと差分を取る

スレッドダンプ解析ツール
 ThreadLogic
 WebLogicに向いている、が、他のアプリケーションでも使える

Mbeanの分析
 Java Mission Control
 お金取られます.Java SEのAdvanceライセンス

2013年10月28日月曜日

apacheのrotatelogs

よく知られていますが、httpd.conf等に下記のような記述をすることが多いかと思います

CustomLog '|/hoge/apache/bin/rotatelogs "logs/access_log.%Y%m%d 86400 540' "combined" "



マニュアルに書いてますが
http://httpd.apache.org/docs/2.4/programs/rotatelogs.html


86400ってのは、1日を表す「秒」
540ってのは、offsetなんですが、なぜか「分」なんですね。


上記を設定すると下記のようなファイルができます

access_log.2013101

知らなかったのですが、どっかのバージョンから -l というオプションがついてまして、これを使うとローカルタイム(UTCではなく)を使うようになるので、540が不要になったみたいです。

つまり、+9時間してくれると。

手元のapacheにローテートが入ってなくて、久しぶりにぐぐったので、φ(`д´)メモメモ...

2013年10月25日金曜日

mockito参考になるリンク集(あとでかく)

http://www.slideshare.net/momomoblue/mockito-12627783

tmux & screen チートシート

tmux


デフォルトはctrl + bだけど、置き換えたほうが使いやすい...

ショートカットキー

  • ペイン分割(縦)
    • ctrl + b %
  • ペイン分割(横)
    • ctrl + b "
  • ペインレイアウト変更
    • ctrl + b [space]
  • ペイントを閉じる
    • ctrl + b &


コマンド
  • 再接続
    • tmux attach


screen

  •  セッションのデタッチ
    • ctrl + a , ctrl +d
  • セッションの再接続
    • screen -r
  • セッション一覧
    • screen -ls
       


Clean Code 2章のメモ

社内の輪講で使ったやつ

2章

意味のある名前


意図が明確な名前にする

これはだめ

public List<int[]> getThem() {
List<int[]> list1 = new ArrayList<int[]>();
for (int[] x : theList)
if( x[0] == 4 )
list1.add(x);
return list1;
}


ここがよくない
・暗黙さ

こんなかんじ

public<Cell> getFlaggedCells() {
List<Cell> flaggedCells = new ArrayList<Cell>();
for (Cell cell : gameBoard)
flaggedCells.add(cell);
return flaggedCells;
}

偽情報を避ける

似情報の例

・hp,aix,sco などの変数
unix由来?と錯覚する
・Listではないものに、hogeListとする
acoountsぐらいにしておく
・ごく一部のみが違う名前
・小文字のL,大文字のOなど


意味のある対比を行う

ノイズワード

・数字の連続(a1,a2...)
無情報です
source,destinationなど意味のあるものに

・意味のはっきりしない単語
Info? Data?
おなじです

・aとかtheのようなもの
明確な違いが生じるのであればOK
zorkがあるときに、theZorkはNG


発音可能な名前を使用する

・英単語として発音できるものにしよう


検索可能な名前を用いる

・1文字の名前は小さなメソッドのローカル変数でのみOK
・長い定数はあり
なるべく、enum、でいいんじゃね?


エンコーディングを避ける

・読めないものはよくない
・新たなことを覚えさせるのもだるい


ハンガリアン記法

・辞めよう

例)
long整数 lData
PhoneNumber phoneString; // やってしまう...


メンバープレフィックス

・m_など
そもそもなんで昔つかってたの??


インターフェースと実装

・Iを前置、IHogeFactory
やめよう
・HogeFactoryImp or CHogeFactory
Cは具象のconcreteかな


メンタルマッピングを避ける

・i,j,kはループの中ぐらいなら可
・プロのプログラマは透明性を大事にする(賢い、のではない)


クラス名

・名詞あるいは名詞句をつけろ
Customer,WikiPage,Account,AddressParserCustomer
・Manager,Processor,Data,Info は避けるべき
・動詞を避けるべき


メソッド名

・postPayment,DeletePage,save などの動詞、動詞句
・Accessors,mutators,predicatesといった名前はメソッドが扱う値に付けるべき(get,set,isを前置しろ)
・コンストラクタがオーバーロードされている場合は、staticなファクトリメソッドを用意し、名前に引数を表現するものを含める

気取らない


1つのコンセプトには1つの単語
・複数のクラスで、fetch,retrieve,getを同じ意味で提供するとかやってはいけない
・controller,manager,driver なんかも紛らわしい
・整合性を持った語彙が大切


語呂合わせをしない

・addに、連結とコレクションの追記、2つの意味があるなどやってはいけない



解決領域の用語の使用

・すべての名前をいちいち業務用語か取り出すのは推奨しない
・プログラマーが分かる言葉(JobQueue,AccountVisitor)がよい


問題領域の用語の使用

・処理がプログラマちっくでないのであれば、業務側から用語を持ってきてもよい



意味のある文脈を加える


根拠のない文脈を与えない

2013年10月18日金曜日

eclipse俺俺チートシート

ショートカット
(macなんで、ctrl ≒ cmd)

移動

  • ジャンプ
    • f3
  • ジャンプからもどる
    • cmd + [
  • クラス検索
    • cmd + shift + r
  • クイック階層移動
    • cmd + t
  • workspaceの検索
    • ctrl + h

生成

  • javadoc生成
    • cmd + shift + j

整形

  • フォーマット
    • cmd + shift + f

TIPS


参考になるリンク
http://hutyao.hatenablog.com/entry/eclipse-shortcutkey



まだ書きかけ

2013年10月8日火曜日

自前のWordPressを運用する意義が見いだせなくなったので、Bloggerに引っ越しました。

wordpress形式をexportしたものを下記のサイトでconvertして、bloggerにimportできました。

http://wordpress2blogger.appspot.com/

ありがたい。

wordpressのほうはしばらく放置しておきますが、そのうち消します。