サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
aufheben.hatenadiary.com
文字コード関連でちょっと調べていたら、未定義文字を変換したときの挙動が Java8 と Java7 までで異なることを発見したのでメモ。 Java7 まではネイティブコードの1文字が概ね U+FFFD 1つに変換される。 # 半角の未定義文字 1B284920 -> FF60 (ISO-2022-JP) 8EA0 -> FFFD (EUC-JP) A0 -> FFFD (Shift_JIS) A0 -> FFFD (windows-31j) A0 -> FFFD (x-SJIS_0213) # 半角の定義文字(参考) 1B284921 -> FF61 (ISO-2022-JP) 8EA1 -> FF61 (EUC-JP) A1 -> FF61 (Shift_JIS) A1 -> FF61 (windows-31j) A1 -> FF61 (x-SJIS_0213) # 全角の範囲外領域 1
Eric Evans の Domain-Driven Design エリック・エヴァンスのドメイン駆動設計 作者: Eric Evans出版社/メーカー: 翔泳社発売日: 2013/11/20メディア: Kindle版この商品を含むブログ (8件) を見る は、アーキテクチャの本であって、ドメイン分析の本じゃない。 本当に DDD やりたいなら、以下の本も読むべし。 Fowler「アナリシスパターン」 アナリシスパターン―再利用可能なオブジェクトモデル (Object Technology Series) 作者: マーチンファウラー,Martin Fowler,堀内一,友野晶夫,児玉公信,大脇文雄出版社/メーカー: ピアソンエデュケーション発売日: 2002/04メディア: 単行本購入: 7人 クリック: 89回この商品を含むブログ (70件) を見る Coad「カラーUML」 Javaエ
まずは、設計・実装における Value Object を整理した方が良さそうなのでまとめてみました。 Value Object の設計方法としては、以下の3通りがあると認識しています。 # 仕事で主に使用してきた言語が C++ と Java なので、もし他にもあればご教示ください。 1. Singleton インスタンスを1つしか生成しないパターンです。 Java の enum がこれに該当します。 同一性は == で判定することができます。 2. 不変オブジェクト インスタンスが1度生成されたら、属性の変更を許可しないパターンです。 Java のプリミティブ型のラッパークラス(Integer など)、String、BigDecimal などが該当します。 Java の場合、hash と equals メソッドをオーバライドする必要があります。 3. スコープ外へ公開する際に複製する クラ
id:ryoasaiさんと先日会社で話した内容が、「いまさらだけど、Java言語にはクロージャーがない」にまとめられたけれど、関数リテラルが利用できるという文法の話と、引数以外の外部変数(自由変数)が参照できるという機能の話が混ざっている気がします。 前者の意味では現在の Java 6 にはクロージャがないけれど、後者の意味では Java でも内部クラスで同様なことが実現できます。他の言語が内部的にクロージャをどう実現しているか詳しくは知りませんが、クロージャを導入する土台は既にあると考えています。C/C++ でクロージャを実現するよりはかなり敷居が低いかと。 「想像以上にガラパゴス化した日本のIT業界?」で、Groovy と Scala の比較もされているようなので、クロージャに関して、Java、Scala、Groovy の違いを整理しておこうと思います。 記事で引用されている クロージ
仕様書のサンプルや Web の記事を見ると、JPA 2.0 の Criteria API を使うにはメタモデルを作らないといけないかと一瞬思うけれど、属性名を文字列で指定してもいいんですね。 メタモデルを使用する場合、 @Entity public class Customer { @Id Long id; String name; ... } というエンティティに対して、 @StaticMetamodel(Customer.class) public class Customer_ { public static volatile SingularAttribute<Order, Long> id; public static volatile SingularAttribute<Order, String> name; ... } のようなメタモデルを作って、 @Persistence
複数条件の組合せテストで、少ないテストケースでいかに網羅率を上げて品質を確保するかという目的で、直交表というツールが利用できます(詳細は最後の参考文献を参照)。 テストの条件(因子)に対してバリエーション(水準)が2の直交表は比較的簡単に作成できます。ただし、実業務で使用するとなると、水準が10くらいは欲しいところ。そこで、勉強がてら直交表を作成するツールを作成してみました。 言語は Ruby です。作成したデータも一部置いています。 http://svn.sourceforge.jp/svnroot/glad/trunk/oa-ruby/ http://sourceforge.jp/projects/glad/svn/view/trunk/oa-ruby/ 使用方法 直交表の大きさを2の対数で第1引数に指定します。水準は一般的に使いそうなものを出力します。 直交表の大きさを第1引数に指定
昨日のエントリ id:aufheben:20090430 について。 概念って言っちゃったので話が難しい方向へ進んでしまいましたが、Value と Entity の違いが有効になるのは、やはり設計以降だと思います。Value と Entity を意識することで、不具合が発生しにくくなります。でも、不変性が Value の本質的な特性ではないと言われてしまうとわけがわからなくなってしまいます。そんなわけで、ちょっとこだわってみました。 ちなみに、Value って価値を表すものだから本当は重要なんだけれど、概念モデリングでは通常 Value は脇役です。Value を表に出すと概要がつかめなくなってしまうので。主役は Entity なんだけど、DDD はそこが弱いと思うので、僕は以下の3冊をおススメしています。 Javaエンタープライズ・コンポーネント―カラーUMLによるJavaモデリング 作
きっかけは忘れたのですが、一昨日会社で Value Object の定義の話になって、Twitter でつぶやいたところ議論が盛り上がったのでログを残しておきます。 5/1追記: 個人的に重要だと思うところを太字にしました。あと、コメントを追記しました。 glad2121 少し頭痛が... 単なる寝不足か? Value Object で議論しすぎたか? glad2121 概念的な Value を「不変、かつオープンなもの」と仮に定義してみよう。1が2に変わったら、それは別インスタンス。製品の仕様みたいに、仮に不変であっても非公開な情報があればエンティティ。 glad2121 Entity は価値を保有する。Value は価値を定義する。 glad2121 Value にアイデンティティがないってほんと? Value 自身がアイデンティティじゃないのか? tadayosi @glad2121
http://www.backlog.jp/ 今度の仕事、複数社の混合プロジェクトなんですが、今どき Excel で課題管理して、成果物はメールで送信なんてナンセンスですよね。 とりあえず、ファイル共有と Subversion が使えるサービスないかなと探して、見つけたのがこのサイト。 お試しでプロジェクトを登録。簡単な Java プロジェクトを作成、Subversion にコミットして、mvn site:deploy でサイトを作成までしてみました。 課題管理は Trac と似た感じ、シンプルで使いやすそう。デザインもほのぼのとして好きですね。 有料プラン(プレミアム以上)だと、ガントチャートやバーンダウンチャートも使えます。 まぁ、仕事で使うとなると、10MBじゃ絶対足りないんで、有料プランにすると思いますが。 ファイル共有は WebDAV 経由でアクセス。Windows XP だと、
標準のライブラリが使いにくいとき、つい XXXUtils のようなクラスを作ってしまいがちです。 例えば、悪名高き java.util.Calendar。来年の2月15日が何曜日か調べようと思ったら、次のようなコードを書かなければなりません。値の取得も設定も面倒で、なぜか月が0始まりになっています (歴史的な制約?)。 Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.YEAR, 1); // 2月は month = 1 calendar.set(Calendar.MONTH, 1); calendar.set(Calendar.DAY_OF_MONTH, 15); // 文字列に変換する場合は、DateFormat を使用する。 DateFormat df = new SimpleDateFormat("E
http://www.web-career.com/contents/buyuden/26.html 最近 Ruby 界隈でご活躍の角谷信太郎さんの武勇伝。 連休中に読んだんだけど、ブックマークしたら☆もらったので、表でも紹介しておく。 ...というのは冗談で、1人でも多くの現場のプログラマに読んでもらえたらなと思う。 すごくなくてもやれることは どこにでもいっぱい あるんじゃないですかね。 それをちゃんとやってるところがすごいと思う。 僕が角谷さんに出会ったのは、3年前の PofEAA 読書会で、それ以前のことは知らなかったんだけど、地中に埋もれていた1人の平凡なプログラマが、仲間に助けられながら次第に芽を出し花ひらくまでが、等身大で語られていてすごくいい話だなと思った。 「『JavaからRubyへ』を翻訳した角谷です」と言えるようになった(笑) 「Inversion of Contro
仕事の関係でちょっと調べてみた。 自分では必要がない限りほとんど使いませんが。(^^;) Java6 JDK 6 ドキュメント http://java.sun.com/javase/ja/6/docs/ja/ Java SE 6 じゃじゃ馬ならし - 和暦 http://www.javainthebox.net/laboratory/JavaSE6/imperialcalendar/imperialcalendar.html すでに色々なサイトで取り上げられていますが、Java6 から標準で和暦が扱えます。 java.util.JapaneseImperialCalendar というクラスで実現されていますが、クラスが package private なので、直接使うことはできず、以下のように Locale を指定して利用します。 Locale locale = new Locale("j
後輩の記事 モナドを勉強してみたので、オブジェクトっぽいのを作ってみた。 - Milestones to EVERPEACE 〜alius via〜 に触発されて、ここ半月ほど Haskell にはまっている。 記事自体とても興味深かったんだけど、読み終わった後のモヤモヤ感がなかなか払拭できなかった。たぶん、自分が思っているオブジェクトの概念が実装されていないからだと思う。 自分としては、以下の概念が実装されていてほしい。 状態が変化してもオブジェクトのアイデンティティが継続されること というわけで、修正バージョンを作成してみた。 まずは Person 型から。後輩のサンプルだと、戻り値(?)が Obj になってるけれど、素直に Person にしておく。 data Person = Person { name :: String, age :: Int } deriving Show s
仕事の関係で PSLX (Planning and Scheduling Language on XML specification?) について調査しています。 http://www.pslx.org/jp/ 製造業の業務のリファレンスモデルを作成しようという試みと受取りました。業務アクティビティモデル、業務オブジェクトモデルなどが定義されており、IEC62264 として国際標準化も進められているようです。 仕様書 (勧告版) を入手するには会員になるか購入する必要がありますが、業務オブジェクトモデルについては、以下のページから第2版の委員会投票用資料をダウンロードすることができます。 http://www.pslx.org/jp/forum/technical.html 製造業の業務が「資源」「プロセス」「オーダ」などの概念で整理されており、製造業の仕組みを理解する上でとても参考になり
社内で新人さん向けに使った資料を公開しておきます。 初心者のための DI 入門 また、実際に手を動かした方が良いと感じたので、演習問題も作ってみました。 Eclipse のプロジェクト付きです。よろしければ、ご利用ください。 初心者のための DI 入門 (実践編) DI4Beginners.zip
JMX (Java Management Extensions) は、Java アプリケーション、VM などを監視するための標準 API です。J2SE 5.0 から標準で搭載されています。 JMX という API があるのは知っていましたが、訳あって今回はじめて使ってみました。 これ、便利です!! メモリの使用状況やスレッドの状態をグラフィカルに見ることができます。どうしてもっと早く使わなかったんだろう? まぁ J2SE 5.0 を仕事で使ったのは、前のプロジェクトが初めてですけどね。 まだ 1.4.x を使っている人・組織は、EoD (Ease of Development) とあわせて、5.0 へ早く乗り換えた方がお得だと思います。 # もう次の 6.0 のリリースも目前ですが。 JMX エージェントの有効化 まず、監視されるアプリケーション内の JMX エージェントを有効にします。
文字コードに関する昨日のつぶやき 文字コードの話。NEC選定IBM拡張漢字を捨てれば、Windows-31J と JIS X 0213 の第3水準漢字が両立できるなと思ったけれど、Java で x-MS932_0213 を試してみたら、89区をNEC選定IBM拡張漢字にマッピングしていて、使えねぇなと思った。— GLAD!! (@glad2121) 2016, 2月 16 JIS X 0213 の非漢字、第1〜第3水準漢字、Windows-31J の NEC特殊文字、IBM拡張文字、ユーザー定義外字を文字集合とした、エンコーディングがあると、互換性を保ちつつ標準化の方向性にも沿った拡張ができると思うんだけど。— GLAD!! (@glad2121) 2016, 2月 16 これを図で表してみました。 x-MS932_0213 は第3水準漢字に使える文字と使えない文字があり中途半端。「NEC
このページを最初にブックマークしてみませんか?
『Aufheben - GLAD!! の日記』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く