T:echnology技術は世界を救う。Calendarの16日目ですIT技術者の定年は35歳であるという節、いわゆる「35歳定年説」がありますが、試しに検索してみると「本当だった」という声と「嘘だった」という声が両方とも見られます。個人的な見解ではありますが、「35歳定年説」は嘘だと思っています。日本社会は年功序列の考えがまだまだ強く、IT企業であっても例外ではないということがあります。会社側が”35歳定年”になってしまうキャリアパス、つまりマネジメントへの道しか提供していない為にこのような俗説が出現したのでしょう。35歳だろうが45歳だろうが、途中で技術から離れてしまう様な人は技術者では無いと思っていますし、それまでどれだけの功績を残していても認識を改めることになります。技術から離れてマネジメント側につく人は、技術にさほど興味が無かったのでしょうね。本当に技術に興味があれば、現場から離れることはないでしょう。確かに”プロジェクトマネジメント”は誰かがやらなければならないことですが、だからといって技術から離れるくらいならそんなものは技術者じゃない人に任せておけば良いのです。(技術を知らない人がマネジメントするという問題もありますが、技術から離れてまでマネジメントに専念するならあなたは技術者ではありません)以上、個人の見解でした。私が35歳になるまでまだ10年以上ありますが、そのときになっても同じような意見が言える技術者でありたいです。Calendarの15日目です業務でHibernateを使っていますが、これまでは弊社内の大半の実装に合わせてこんな感じでCriteriaを書いていました。Projections.projectionList();projectionList.add(Projections.sum("days").as("days"));projectionList.add(Projections.sum("hours").as("hours"));criteria.setProjection(projectionList);criteria.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);今日は実装中に仕様追加が発生したので、ストレス解消を兼ねてスピード重視で実装したら、いつの間にかメソッドチェーンで書いていました。.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);流れるように実装できたので、自分にはメソッドチェーンの方が向いているようです。弊社のコーディング規約に特に記載が無ければ、今後ともメソッドチェーンで書きたいですね。Criteriaをメソッドチェーンで書くと、次のような利点があるように思います。Eclipse等のIDEで整形すれば、適度にインデントが設定されて見やすい「俺ならこういう理由でこうしたい!」という話があれば、是非お聞かせください。Calendarの13日目ですIT系書籍専門の中古買取・販売で有名な電脳書房さんが、14日まで対象の書籍が半額になるキャンペーンを実施しています。普段からほとんど汚れがない古本を扱っているので、これはかなりお得ですね。世の中に公開されているOSSのJavaライブラリは、大抵MavenやGradle等の構成管理ツールで管理できます。自分で作ったライブラリや会社の都合で公開できないライブラリを使う場合、自分でJarファイルを追加したり、依存関係を管理しなければなりません。Javaは1個のライブラリが大量の依存ライブラリを必要とすることもよくあるので、これは非常に面倒です。OSS”にライブラリを登録する手順の1例を(かなりざっくりと)紹介します。NEXUSのUIからデプロイ※ソースが用意できる場合、pom.xmlを作ればビルド・デプロイをmvnコマンドでやれます。Jarを用意するバイナリのJarを調達します。ソースやJavadocのJarを追加で調達すればEclipseやNetbeansなどのIDEで便利になりますが、今回はとりあえずバイナリだけ登録しますpom.xmlを作る追加したいライブラリのためのpom.xmlを作ります。Central等でホスティングされていれば、その依存関係も記載します。デプロイNEXUSにログインし、repositoriesを開きます。party」というリポジトリが用意されているので、これを選択します。Upload」タブからデプロイできます。POM」を選択するとファイルアップロード用のフィールドが表示されるので、先ほど作ったpom.xmlをここで指定します。Artifact」ボタンを押すと、その下のグリッドに表示されます。Artifact(s)」ボタンをクリックすることで、アップロードが完了します。デプロイした物の利用デプロイした物を利用するには、pom.xmlにNEXUSのリポジトリを設定して参照できるようにします。初期状態のNEXUSには{NEXUSのURL}/content/groups/public/というリポジトリが有り、これを指定すると色々と幸せになれる層ですよ。2014の10日目ですビジネスルールエンジンについて、しばらく考察を続けています。今日は(あまりまとまっていませんが)現状のメモをまとめておきます。どれくらい先になるかはわかりませんが、将来的に整理しなおすつもりです。以下メモアプリケーションとは独立した、ビジネスルールを処理するための仕組みや実装を、ビジネスルールエンジン、または単にルールエンジンという。基幹業務パッケージの導入においては、導入先の企業の業務フローに合わせたカスタマイズが必要となる。特定の業種に対して横展開で受注を獲得しているパッケージの場合を考えてみる。各企業向けのカスタマイズ部分を基となるコードに密結合させてしまうと、似たようなカスタマイズを繰り返し行うことになりかねない。このような場合にルールエンジンの概念を導入すると、工数を削減できる可能性がある。画面の入力値をバリデーションし、結果に応じてデータを修正し保存する処理があったとする。この処理をビジネスルールとすると、バリデーション、データの修正、保存の三つに分けることができる。これらをルールエンジン上に構築することで、アプリケーションの更新とは別にルールの組み替えや追加が可能となる。先述の例で言うと、データを保存した後に”特定のユーザに対してメールで通知する”という処理を追加する場合、ルールエンジンではあらかじめ規定しておいたルールを追加するだけで良い。Fallの参加レポート3本目です。アプリケーションを止めて動く。GCは安定していない。markでマーキングされたオブジェクトからたどれる全オブジェクトをマーキング。jarではない)をMavenリポジトリにデプロイしておけば何かと便利な気がしたのと、ExCellaをMavenで管理できないのはやっぱり不便なので、自前のMavenリポジトリを用意してみました。startで良いんじゃないでしょうかフォアグラウンドで実行するなら、startの部分をconsoleにすれば良かったはず。8.0.1でJPAの持続性ユニットをHibernateを使うようにして作成すると、EntityManagerFactoryでEntityManagerを作れない。Unitを正しく指定しても、見つからない旨の例外が発生する原因NetBeansが生成するHibernate向けのpersistence.xmlの内容で、providerにorg.hibernate.ejb.HibernatePersistenceが設定されるが、このクラスは@Deprecatedでありなにやら挙動が違うらしい。対応persistence.xmlのproviderに、org.hibernate.jpa.HibernatePersistenceProviderを設定する。このクラスは、org.hibernate.ejb.HibernatePersistenceのJavadocに記載されている、代替となるクラスらしい。Fallの参加レポートです。Hookを使うSpringなら@PreDestroyアノテーションをつけるとシャットダウン前に呼ばれるログをイベントストリームとして扱え「全てのログを標準出力に集める」とりあえず標準出力に出しておけば、後から好きなところに流せるので。Fallが新宿で開催されました。朝の基調講演から参加するつもりでしたが、残念ながら寝坊してしまったので途中からの参加となりました。Calendarの記事として公開していきます。FindBugsをかけてリファクタ可読性を向上させながら、何とかする→ダメだった。OSSのトラブルシュートツール。メモリリークや同一SQLの発行回数など。大量アクセスを捌く問題TV放送などで大量アクセスがあるとレスポンスが悪化してシステムダウンストアドプロシージャは対処したが、CPU使用量は上がるので。※同一検索条件は待たせ、キャッシュから読み取る。キャンセル投稿を送信できませんでした。メールアドレスを確認してください。メール送信チェックに失敗しました。このブログではメールでの投稿共有はできません。