タグ

ブックマーク / kazzz.hatenablog.com (20)

  • 私が「Ice Cream Sandwich」を嫌いな理由 - Kazzz's diary

    GALAXY Nexusが来て2日間使い倒した。ハードウェア自体は良いなぁと思う点が多々あったものの、ソフトウェアに関しては自分がそれを生業にしている点で評価がどうしても厳しくなってしまうようで、今の所嫌いな所ばかりが目立つ状況だ。 私は元々AndroidそれもGingerbread(2.3)までのスマートフォンを主なターゲットとした装飾を控えめにした機能優先なインタフェースとデザインは好きだ。がしかしAndroidとしてタブレットに始めて対応することとなったハニカムは機能的なデザインが影を潜め、完成度もお世辞には高いとは思えないそのデザインとGUIは結局好きになれずじまいだったのである。 そこでAndroid4.0だ。"Ice Cream Sandwich" (以降はICSと略する)はスマートフォンとタブレットのユーザインタフェースを統合するものでありそのデザインは基的にはハニカムが踏

    私が「Ice Cream Sandwich」を嫌いな理由 - Kazzz's diary
    imai78
    imai78 2011/12/07
    Xperia Acroを手にして超実感した。
  • 生成されるアクセッサフィールドのプレフィクスを指定する - Kazzz's diary

    以下、すぐ忘れるので備忘のためにメモ。 Eclipseはフィールドのアクセッサ(ゲッター/セッター)を自動生成することができるが、そのデフォルトはフィールド名をそのまま用いて生成される。なので、以下のようにフィールドにプレフィクスを付けると生成されるアクセッサにもプレフィクスがそのまま挿入されてしまう。 String mHogehoge public String getMHogehoge() { return mHogehoge; } public void setMHogehoge(String mHogehoge) { this.mHogehoge = mHogehoge; } こういうことにならないように、Eclipseのコードスタイルにはフィールドのプレフィクスを登録できるようになっている。 この例のようにプレフィクスを"m"と指定しておくと、生成されるアクセッサは以下のように変

    生成されるアクセッサフィールドのプレフィクスを指定する - Kazzz's diary
  • GWTと遅延バインディング(deferred binding) その2 - Kazzz's diary

    さて、昨日の続き。 GWTの遅延バインディングには2つの方法がある。 遅延バインディングの方法 置換 設定可能なルールに応じて型が置換される。 コード生成 ジェネレータの実行により型(コード)が生成される。 置換 置換(Replacement)はgwt.xmlのreplace-with要素とその子要素を使用して型の実装を置換(再定義)することができる。 要素 子要素に指定する条件を設定する要素の論理が真の場合にclass属性で指定された型を置換する。 replace-with要素の例 <module> : <!-- old Mozilla, and Opera need a different implementation --> <replace-with class="com.google.gwt.user.client.ui.impl.FocusImplOld"> <when-typ

    GWTと遅延バインディング(deferred binding) その2 - Kazzz's diary
  • GWTアプリケーションの国際化 (その2) - Kazzz's diary

    GWTアプリケーションの国際化 (その1)から少々空いてしまったが、GWTの国際化についての続きを書く。 前回は静的な文字列定数とConstantsインタフェースを使って国際化を行ったが、この方法には拡張された方法がある。 実際のアプリケーションではよく使うが、例えばある項目のガイダンスメッセージとして使う語句があるとしよう。 "{0}を入力してください" アプリケーション実行時には項目名に合わせてパラメタで{0}を置き換えることで「"氏名"を入力してください」「"住所"を入力してください」等メッセージを使い回すことできるものだ。 GWTはこのようなメッセージを前回同様のプロパティファイルとMessagesインタフェースで簡単に実装できるが、実装の手順はConstantsインタフェースを使った場合と非常に似ており簡単だ。 インタフェースを作成する 前回同様に国際化メッセージを取得するための

    GWTアプリケーションの国際化 (その2) - Kazzz's diary
  • GWTアプリケーションの国際化 (その1) - Kazzz's diary

    GWTは国際化のための仕組みがあるが、大きく二つ方法に分類できる。 ・静的な文字列(定数)を使った国際化 ・動的な文字列を使った国際化 まずは馴染みの深い静的な文字列を使った国際化の方法をメモする。 静的な文字列(定数)を使った国際化 インタフェースを作成する 国際化に対応した文字列を取得するメソッドを定義したJavaインタフェースをConstantsインタフェースから継承して記述する。 IAddressBookConstants.java public interface IAddressBookConstants extends Constants { String fullName(); String address(); String email(); String married(); String gender(); String gender_male(); String g

    GWTアプリケーションの国際化 (その1) - Kazzz's diary
    imai78
    imai78 2011/04/29
    エラーが出るという仕組は僕的にもすごくありがたいと思った!
  • プロパティエディタプラグイン - Kazzz's diary

    プロパティエディタ開発プロジェクト プロジェクト語トップページ - SourceForge.JP Javaのプロパティファイル(.properties)は文字セットISO-8859-1又は\udddd表記(ASCII表記)されたUnicodeしか扱えないため、日語を入力する場合はnative2ascii等のツールで文字を変換しなくてはならなかったのだが、このプラグイン=エディタを使用することでそれを意識せず、具体的にはEclipseの中ではUTF-8のまま文字列を扱うことができる。 通常のエディタで開いたプロパティファイル(IAddressBook.properties) 化けてしまっている。 当プロパティエディタで開いたプロパティファイル(IAddressBook.properties) 正しく表示される。 実際にコンパイルする場合はUnicode文字は\udddd表記に変換された

    プロパティエディタプラグイン - Kazzz's diary
  • IE9でGWTを実行するとDOM Exceptionが発生する - Kazzz's diary

    GWTアプリケーションをDevmodeで起動し、最近インストールしたInternet Exploler 9で実行すると、以下のように例外が発生して止まってしまう。 デバッガで見てみると、Document.createElementでエラーが発生しているようだ。 この問題に関しては同GWTのBlogでも取り上げられていおり、 Google Web Toolkit Blog Update on GWT support for IE9 http://code.google.com/p/google-web-toolkit/issues/detail?id=5058&q=ie9&colspec=ID%20Type%20Status%20Owner%20Milestone%20Summary%20Stars http://code.google.com/p/google-web-toolkit/is

    IE9でGWTを実行するとDOM Exceptionが発生する - Kazzz's diary
  • GWTアプリケーションをTomcatにデプロイする - Kazzz's diary

    さぞかし面倒なのかと思ったのだが、全然っ簡単だった。※以下手順 1. GWTコンパイルを実行する 単なるJavaのビルドではなく、GWTのコンパイル(javascript変換)を実行する。 GWTコンパイルはAntスクリプト又はEclipseのツールバーボタンかプロジェクトのメニューから選択〜実行する。 GWTコンパイルの様子 GWTコンパイルによりwarディレクトリ下にモジュール名と同名のディレクトリが作成されて、その下にコンパイルされたイメージが出力される。 2. Tomcatにデプロイする Eclipseのメニューから「エクスポート」→「ファイル・システム」を選択して warの下の全てのファイルをTomcatのWebAppsディレクトリにエクスポートする。 Tomcatが起動されており、WebAppsのディレクトリ監視が有効になってれば即座にデプロイが完了する。 モジュール数が多い

    GWTアプリケーションをTomcatにデプロイする - Kazzz's diary
    imai78
    imai78 2011/04/29
    これをヒントにWTPで動かす方法がわかるかもなあ。
  • GWT Composite - Kazzz's diary

    GWTのWidgetはHTMLのDOM要素に対応したクラスが用意されているが、他のGUIツールキットのようにそれらを組み合わせて大きな一つのGUIコンポーネントを作ることができる。それには複数の方法があるのだが、そのひとつはCompositeクラスを利用することだ。 Composite(com.google.gwt.user.client.ui.Composite)クラスはその名の通り、複数のウィジェットクラスから構成された一つの大きなウィジェットとして、また、他のウィジェットを配置するコンテナとして振舞うクラスである。 AddressInfoForm Composite具象クラスの例として住所録データを入力するために4つのラベルとテキストボックス、1つのボタンを格子状に配置したAdddressInfoFormクラスを定義する。 public class AddressInfoForm e

    GWT Composite - Kazzz's diary
  • gwt.xml - Kazzzの日記

    gwt.xml gwt.xmlはGWTアプリケーションにおいて非常に重要な設定ファィルである。 EclipseからGWTのプロジェクトを作成すると プロジェクト名.gwt.xmlという名前のXMLファイルが生成される。 TestEcho.gwt.xml <?xml version="1.0" encoding="UTF-8"?> <module rename-to='testecho'> <inherits name='com.google.gwt.user.User'/> <inherits name='com.google.gwt.user.theme.standard.Standard'/> <entry-point class='net.kazzz.client.TestEcho'/> <source path='client'/> <source path='shared'/>

    gwt.xml - Kazzzの日記
  • Androidとリフレクションについて - Kazzz's diary

    Android上でのプログラミングではリフレクションは忌避すべきと言われている。 PCに比べるとリソースが制限されているスマートフォンではこれは正しい。しかしNexus oneやXperia等、周波数1Ghzのプロセッサと500MB以上のRAMを搭載した実機を使ってきた感覚だと、性能をシビアに追求するようなアプリケーション(主にゲームやリアルタイムシミュレーション)以外であれば、無駄に繰り返さない、結果を上手くキャッシュする等、使い方を注意すれば別に避けるものではないと考えている。(感覚としては10年前のIntel Pentium3が搭載されたPC上でJava2(JavaSE1.3〜1.4)を動作させている状態に近いと思う。) なぜこんなことを書くかというと、今更Javaでリフレクションを否定されると何もできないからだ。自分が今書いているライブラリィ、フレームワークではリフレクションを使い

    Androidとリフレクションについて - Kazzz's diary
  • 思わぬ所でバグ発覚 - Kazzz's diary

    Java 6 Update 18(jump先がSunではなくOracleのロゴになっているのが....) 早速アップデートしてみたが、いきなりアプリケーションが例外を吐くようになってしまった。 箇所は今回のアップデートで変更の対象になっているStAX。 XMLStreamReader reader = factory.createXMLStreamReader(ins); try { while (reader.hasNext()) { //エレメントのパース処理 reader.next(); } } finally { reader.close(); } このようなコードがあるとしてreader.next()で落ちる。 java.util.NoSuchElementException: END_DOCUMENT reached: no more elements on the strea

    思わぬ所でバグ発覚 - Kazzz's diary
  • 未検査のキャスト - Kazzz's diary

    JSDK1.4互換で開発していた頃は気がつかなかったが、Java6で総称型にキャストするとこの警告が出る。 SoftReference soft_ref = (SoftReference)this.hash.get(key); 型の安全性VからSoftReferenceへの型キャスト Javaお得意のコンパイル時の安全な型チェック? @SuppressWarningsアノテーションで消すことはできるが、クラス全体やメソッド全体に適用するのは問題なので、そのコードだけを分離する必要があったりと気持ちが悪いことこの上ない。 これ、なんとかなんなかったのかなぁ。

    未検査のキャスト - Kazzz's diary
  • オーバーエンジニアリング - Kazzzの日記

    Railsを使って既存のJavaアプリケーションを書き直しているのだが、当時自分たちでで書いたプログラムに対して標題の言葉が浮かんでしまう。 当時、既にEJB(EJB1.1)に見切りをつけて独自のDAO(今のように立派なものではなくハッシュに属性を格納しただけのシンプルなもの)を使い、フロントコントローラー+MVC、ビューはJSP(除くスクリプトレット)とかなりシンプルにしたつもりだが、今見るとどうしても冗長で七面倒くさく感じる。 結局、当時は生産性が大事と言いながら、実は生産性のことなんてこれっぽっちも考えていなかったんだだろうか。いや、そんなことは絶対に無い。 同じようなケースを経験されている方はたくさんいるだろうと思うが、 「ひょっとしたらここは〜と変更されるかもしれないので結合を緩くしておこう」 「ここは〜のように修正されてもコンパイルの必要が無いように括りだしておこう」 「データ

    オーバーエンジニアリング - Kazzzの日記
    imai78
    imai78 2009/04/18
    なるほど。
  • Winsat - Kazzz's diary

    O/Sインストール直後に他のアプリケーションの影響やO/Sの影響をできるだけ受けずに、システムの性能評価の基準を採取するにはどうすれば良いのだろうと思っていたのだが、良いツールがあるのを思い出した。 Winsat - Technet Library Longhorn付属のシステム評価ツール「WinSAT」を試す - 元麻布春男の週刊PCホットライン winsatにはいくつかの種類があるが、代表的なコマンドwinsat diskを実行してみた。 C:\Windows\system32>winsat disk -seq -read -n 0 -v Windows システム評価ツール > Command Line 'winsat disk -seq -read -n 0 -v' > DWM running... leaving it on > システム プロセッサ電源ポリシーが保存されて「最大パ

    Winsat - Kazzz's diary
  • キャリアを決めるのは自分だが.. - Kazzz's diary

    私だってもう少し「技術者」でいたかった - ITアーキテクトが見た、現場のメンタルヘルス 第8回 自分戦略研究所は意図的な記事が多く、このリンクも最初は業界得意の「企業にとって都合の良いリーダーを鼓舞する」ための記事かと思ったのだが、そうではなかった。 自分のキャリアを決めるのは自分、とはよくいうが、そのような行動は意識しないと中々できるものではない。 経験上いえることだが、今の日技術者では、待遇や収入、権限等は管理職に比べると制限される※組織が多く、会社員で尚且つ技術者であり続けるためにはある程度の割切りも必要になる。 ※極一部、管理職と同等以上の待遇を受けるスーパーな技術者もいるが、それは組織が「その技術とパフォーマンスに対する待遇や扱いが組織にとって得になる」とその時選択したからであって、管理職と同等の待遇がその後も続くことが約束された訳ではない。(そういう意味ではスポーツ選手と

    キャリアを決めるのは自分だが.. - Kazzz's diary
  • SIerのフレームワーク - Kazzz's diary

    最近うんざりしているのは、自ら作った(or用意した)フレームワークを案件にバーターしてくるSIerがいることだ。 SIerから仕事を請けているソフトウェアハウスの多くは、コンペで低く抑えられた発注金額や単価を生産性や熟練度でカバーするために自社又はOSSのフレームワークを採用することが多いのだが、プラットホームやミドルウェアならまだしもフレームワークまで押し付けられると、こういった目論見がパーになるのである。 SIerのフレームワークといっても、ソースを見ると大抵はOSSのフレームワークを拡張しただけの設計であり、それにオーサリングツールとEclipseプラグインを組合せた構成なので、結局は使う開発環境やツールまでロックインされており、お世辞にも快適とは言えない場合が多い。その癖エンドユーザからはちゃっかりとフレームワークのライセンスフィーを頂いていることが多く(ユーザ向けにはパッケージ扱

    SIerのフレームワーク - Kazzz's diary
    imai78
    imai78 2008/03/03
    これは愚痴ではないな。れっきとした問題提起だ。
  • RMIでいいじゃないか - Kazzz's diary

    ここで何度も採り上げてきた話題として、複数のクライアントアプリケーション間でオブジェクトを共有するという要件があった。C#では.NET Remotingで書いていた機能をJavaでどう実現するかというのが肝だった。 以前には同様にRMIで実装するつもりでいたが、いろいろと問題があると思いこみ、 クライアントデータ(オブジェクト)の共有 Javaには元々RMIという立派な仕組みがあるんだが、rmiregistryというリポジトリの常駐が必要なこと、(対して.NET Remotingは特別なインフラやリポジトリは必要とせずに配置されたオブジェクトは生き続けることができる)いちいちrmicによりスタブ・スケルトン(スケルトンは1.2の時点で不要になった)のコンパイルが必要なことは、10年前であれば我慢できたが今となっては使いたくないのが音だ。※ 〜中略〜 ※J2SE5以降はスタブの生成も不要に

    RMIでいいじゃないか - Kazzz's diary
  • java.util.logging - FileHandler.patternで指定したディレクトリを作成する - Kazzz's diary

    java.util.loggingはプロパティファイルでログを出力するハンドラ(Handler)の記述を行い、それを実行時のロガーに反映する。 ハンドラの中でも実業務の中核となるFileHandlerに関しては設定ファイルのデフォルトではコメントアウトされているが、簡単に使うことができる。 logging.properties(デフォルトではJAVA_HOME/jre/libにある)より抜粋 # To also add the FileHandler, use the following line instead. handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler ↑ここのコメントアウトを外すことでFileHandlerが有効になる .level= INFO java.util.logging

    java.util.logging - FileHandler.patternで指定したディレクトリを作成する - Kazzz's diary
  • 2007-12-17

    コメント欄に頂いたアドバイスを総合することで、なにやらできそうな按配になってきた。 追記: できたかもしれない。凄く嬉しい。アドバイスを頂いた皆さんに感謝。詳しくは日記上で。 Javaクライアントアプリケーションを書く私をずっと悩ませ続けている問題がある。それは、「いかにしてアプリケーションのインスタンス数(同時起動数)を制御(制限)するか」ということだ。 .NETプラットホームの場合であればプロセス名=アプリケーションを識別する名前という前提であれば、この問題は簡単に解決が可能だ。 具体的にはProcessクラスを列挙し、現在のプロセスと同じ名前のプロセスがあれば、同一のアプリケーションが存在している、と考えることができる。 public static Process GetProcessesForCurrent() { return GetProcessesForName(Proces

    2007-12-17
    imai78
    imai78 2007/12/17
  • 1