日々精進

新しく学んだことを書き留めていきます

2015-10-01から1ヶ月間の記事一覧

windowsのウィンドウ切り替えは「窓替え」が便利

IT

今までAlt+Tabで切り替えてたけど「窓替え」にしてからウィンドウ切り替えが超効率的になった。 以下からダウンロードできる。 窓替えの詳細情報 : Vector ソフトを探す! オプションで以下を設定した ・表示>ウィンドウ>スタイル>ウィンドウ位置 をマウ…

CSSのスタイルを上書きするためにセレクタの詳細度を上げる場合は.selector.selectorのようにするのがいい

web

Bootstrap標準のスタイルを上書きしたい、でもクラス単体だと標準スタイルの方が詳細度が高いので上書きできない。。というような場合。 id.classのように他のidやクラスも指定して詳細度を上げるとそのidなどが変更された時に困るので、もっといい方法を探…

IntelliJのEditorのアクティブなタブの色をわかりやすくする

標準のdark theme(名前はDelucaだったかな?)にしているとEditorのアクティブタブがどれかわかりにくくて困っていたので もっとわかりやすい色にする設定はないか調べてみた。 Preferences > Appearance & Behavior > File Colors で+ボタンを押し、Scope…

Bootstrapのナビバーの項目が重なってしまう

web

具体的にはnavbar-brandクラスを付けた項目とcollapse navbar-collapseクラスを付けた項目が重なる。 原因はBootstrapのクラスのスタイルを上書きするルールが定義されていたから。 CSSを見たら以下のルールがあった。誰かがレイアウト調整のために追加した…

Office for mac 2016の出来はイマイチだった

IT

久しぶりの新Mac版Officeだったのでかなり期待してたんだけど。。一日使ってわかったいまいちな点は以下。(OSはYosemite) ・ウィンドウ枠の固定をしていると固定している行が二重に表示されることがある ・「すべて検索」がない ・マウスでセル、シート名…

複数のPDFファイルをまとめて検索する方法

IT

以下手順でまとめて検索できるようになる。(mac版の手順) Adobe Acrobat Reader DCをダウンロードしてインストールして実行する メニューの編集 > 高度な検索 を選択する 検索する場所に「以下の場所にあるすべてのPDF文書」を選択して検索するフォルダを…

PCからスマホにファイルを転送するには「Portal」アプリが便利

IT

普段はUSBケーブルをAndroidスマホに繋いでファイルを転送しているが、なぜかUSB繋いでもスマホが認識されなくなってしまった。 とりあえず「Portal」というアプリを使って解決したけど、Wifi経由でファイルが送れて便利だった。 使い方は以下参照。 http://…

JSFのValidatorにパラメータを渡す

以下のようにf:attributeタグを使ってオブジェクトをValidatorに渡せる。 <h:inputText> <f:validator validatorId="validateEmail" /> <f:attribute name="foo" value="bar" /> </h:inputText> Validatorのコードでは以下のようにしてオブジェクトを取得する。 @Override public void validate(final FacesContext context, final UIComponent component, final Object val…

文字列をBigDecimalやInteger等に変換出来るかどうかを判定する

以下のように例外をキャッチして判定するしかないっぽい。tryParse的なメソッドがあるのかと思ったけど。。無いならしょうがない。 try { new BigDecimal("some string"); // This do nothing because the instance is ignored } catch (NumberFormatExcepti…

ビルド時に「Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type.」警告が出る

メッセージは以下。 Warning:(11, 1) java: Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)'…

日本の法律では年齢は誕生日の前日に加算される

IT

理由は以下。 満年齢は誕生日から一年が経過したら加算される。 なので日ベースでは1/2が誕生日であれば翌年1/1で一年が経過しているので1/1に年齢が加算される。 誕生日が2/29の場合閏年でもそうでない年も2/28に年齢が加算される。 Javaの場合のコードは以…

@EJBアノテーションを付けたフィールドにInjectionする時に「com.ibm.wsspi.injectionengine.InjectionException: CWNEN0030E」エラーが発生する

以下のようなEJBクラスがあったとする。 @Singleton public class Beans { .... } 以下のように@EJBをつけてオブジェクトをinjectしようとすると、「com.ibm.wsspi.injectionengine.InjectionException: CWNEN0030E」エラーが発生した。 @ManagedBean @ViewS…

Javaではシンボル名に使えない日本語の文字がある

句読点や中黒などはシンボル名に使えない。テストメソッド名を日本語で書いてると句点と中黒は結構使いたくなるんだけどな。。 使えない文字一覧は以下のサイトにある。 参考:

日本語シンボル(メソッド名など)はテストメソッド名でのみ使用する

Javaはメソッド名等に日本語が使えるが、使うと以下の問題がある。 コード補完が効きづらくなる 同じ文字で文字コードが違うことがあるので、エディタ上では全く同じ変数名に見えて実際は違う変数ということがありえる。 例えば、「グ」という文字は「グ」一…

JSFでiOS Safariでテキストフィールドに文字入力後Goをタップした時にPOSTリクエストを送信させない

JSファイルに以下を書く。 window.my = {}; window.my.onkeypress = function() { var ENTER_KEY_CODE = 13; // ENTERが押下された場合、ソフトウェアキーボードを閉じる if (event.keyCode == ENTER_KEY_CODE) { document.activeElement.blur() } // ENTER…

JSFでリクエストがajaxかどうかを判定する

FacesContext.getCurrentInstance().getPartialViewContext().isAjaxRequest() で判定できる。 FacesContext.getCurrentInstance().isPostback()もたまに使う。 参考:

JavaのDOMParserを使うと「DOMParserは内部所有のAPIであり、今後のリリースで削除される可能性があります」と言われる

DOMParser p = new DOMParser(); のようなコードを書くとコンパイル時に警告が出た。 DOMParserは内部所有のAPIであり、今後のリリースで削除される可能性があります 以下のようにDocumentBuilderFactoryを使うといい。 DocumentBuilderFactory dbFactory = …

型パラメータを含むCastで「Type safety: Unchecked cast from」警告が出たら抑止する

Unchecked cast警告が出たら普通は以下のようにinstanceofで型チェックしてからCastするよう修正する。 if (obj instanceof String) { return (String) obj; } でも型パラメータはコンパイル後に消えるのでinstanceofで厳密に型チェックできない if (obj ins…

JSFの標準エラーメッセージを変更する

以下の手順で変更出来る。 src/main/resources 下にJsfStandardMessage.propertiesのような名前でプロパティファイルを置く faces-config.xmlに以下を追加 <message-bundle>JsfStandardMessage</message-bundle> JsfStandardMessage.propertiesに「javax.faces.converter.IntegerConverter.INT…

JSFで入力欄を空にしても「0」が代入される

以下のようにInteger型のmonthフィールドをbindした場合、画面から入力値を空にしてもmonthには0が入ったままになり、nullにはならない。 <h:inputText id="month" value="#{controller.month}" styleClass="inputText inputText-date"> <f:ajax execute="#{execute}" event="change" /> </h:inputText>月 原因はEL parserのバグで、EL parser内では値をintで扱っているので、nullを0に変換しているから。 以下のJVM O…

Calendar.HOURとHOUR_OF_DAYの違い

add, setなどのメソッドの引数としてCalendar.HOURなどを渡すが、HOURとHOUR_OF_DAYの違いは以下。 ・HOURは12時間表記での時刻 ・HOUR_OF_DAY24時間表記での時刻 HOURを使った場合、午前か午後かはどうやって指定するんだよ。。という気がするが、そこは変…

JSFのconversionフェーズはvalidationフェーズでバリデーションエラーになっても実行される

バリデーションエラーになったらCompositeComponentのgetConvertedValueメソッドは呼ばれないと思っていたら、呼ばれた。まじか。。 以下のようにisValidationFailedをチェックした方が良さそう。 @Override protected Object getConvertedValue(final Faces…

JSFのValidatorにControllerから値を渡す

f:attribute経由で渡せる。以下のようにxhtmlを書くと、 <h:inputText> <f:validator validatorId="validateEmail" /> <f:attribute name="foo" value="#{controller.foo}" /> </h:inputText> Validatorのvalidateメソッドで以下のようにして値を受け取れる。 String foo = component.getAttributes().get("foo"); 参考:

JSFのcomposite componentでpostValidateEventが呼ばれない

以下のようにcomposite component内に<f:event listener="#{cc.validate}" type="postValidate" />を入れてもlistenerが呼ばれなかった。 </f:event>

JSFでajaxでリクエストを送信し、バリデーションエラーになった時に「WARNUNG: There are some unhandled FacesMessages, this means not every FacesMessage had a chance to be rendered.」エラーが出てバリデーションエラーメッセージが画面に表示されない

原因はバリデーションエラーメッセージを表示するh:messageタグがrenderで指定されていないこと。 以下のようにf:ajaxタグのrenderでh:messageのidを指定すると表示された。 <h:inputText id="text3" value="#{bean.text3}"> <f:validateRegex pattern="[A-Z][a-zA-Z]*" /> <f:ajax event="keyup" render="text3message" /> </h:inputText> <h:message id="text3message" for="text3" /> 参…</h:message>

JSFのf:ajaxタグにrender対象を複数指定する

スペース区切りでidを複数書くとそれぞれ更新される。executeなどrender以外も同じ仕様っぽい。 <f:ajax execute="search_form" render="linear1 linear2"/> 参考:</f:ajax>

正規表現で大文字小文字を無視する

IT

パターンの先頭に(?i)を付ければいい。例は以下。 String target = "FOOBar"; target = target.replaceAll("(?i)foo", ""); System.out.println(target); 参考:

JSFのViewScopeの落とし穴

ViewScopeでやたらハマるので落とし穴をまとめた。 リクエスト毎にインスタンスが再生成される ViewScopeなのでURLが変わらないうちはインスタンスはずっと保持されるんだろうと思ったら、そうではないっぽい。 初回表示のGET時とPOST BACK時でBacking Bean…

JSF2.0でViewScopeを使う場合、@Namedでなく@ManagedBeanを使う

ViewScopeのBeanを使う場合の注意点。JSF2.0での話なので2.2などでは違うかも。 ・@Namedでなく@ManagedBeanを使う。例は以下。 @ManagedBean @ViewScoped public class ViewController implements Serializable ... ・ViewScopeのBean及びそのインスタンス…

JVM optionを使って接続先サーバを切り替える

接続先を開発環境にしたり、本番環境にしたりと変更したい場合。 javaのDオプションで環境名を渡す java -Denvironment=test sampleServer そうすると System.getProperty("environment") で環境名を取得出来るのでそれを元に接続先を切り替えれば良い。 参…