Home

このコラムでは、PHP・Perlなどの技術的なことを書いていこうと思います。

それほど更新頻度は高くないと思いますが、つまらない事から難しい事まで

書けたら良いなぁ~と思っています。

世の中いろいろ

JPAでnative SQLをPOJOに格納する

もう何年振りかって感じで書く。

単純に忙しいのもあるが、書くのがめんどくさくなっただけ(笑)
技術的なことや仕事的なことを書く場所として用意していたが
ここ数年、特に書くことになかった(ゼロではないんだが…)様な気がする

しばらくPHPなどのスクリプト言語から離れ、JAVAを一から始めたので
書けるようなことに特になくなぁなぁとしてしまった



今回は、play framework on javaについて書こうかと思う

基本的にScala向けにあるようなFWなのかな
Scalaもちょっと(ほんとにちょっと)だけやっているので便利さはわかるもののやはりまだJAVAの方が落ち着く

play frameworkは、便利な反面結構な個所でイライラさせられる
まず、コンパイルが長すぎる(・.・;)
シングルプロジェクトとマルチプロジェクトでは、設定に結構な違いがある(・.・;) (今度書きます
O/RマッパーはJPAが標準なので結構曲者(・.・;)


と今回は、表題のとおりJPAでnonEntityPoJoに値を格納する方法を書きます

JPAは、基本的にentity定義してentityMapperに登録するといい感じにテーブル作成して簡単に参照・更新が出来るとても便利な
O/Rマッパーです

ただ、NativeQueryを扱う場合は、注意が必要
ググったがあまり情報が少なかったのでそのやり方を書きます

まず、HogeとFugaのEntityを定義してそれぞれのnameをとってみます


@Entity
public class Hoge extends JPABase {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer id;

@Constraints.MaxLength(50)
@Column(length = 50, nullable = true)
public String name;
}

@Entity
public class Fuga extends JPABase {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer id;

@Constraints.MaxLength(50)
@Column(length = 50, nullable = true)
public String name;
}

public class LikeStatus {

@Data
public static class NamedByHogeAndFuga implements Serializable {
private String hogeName;
private String fugaName;

}

public static void judge(Long accountId) {
Session session = JPA.em().unwrap(Session.class);
SQLQuery sqlQuery = session.createSQLQuery(
"SELECT h.name AS hogeName, f.name AS fugaName"
+ " FROM Hoge h " + " inner join FUga ai using(id)";
sqlQuery.setResultTransformer(Transformers.aliasToBean(NamedByHogeAndFuga.class));
List responses = sqlQuery.list();

for (NamedByHogeAndFuga response : responses) {
Logger.info("hogeName:" + response.getHogeName());
Logger.info("fugaName:" + response.getFugaName());
}
}

}


*@SqlResultSetMapping*とかマッパーを使え的な記事はたくさん見つかったがどれもentityMapperを使わないと受け取れなかったので
求めているものと違った
*JPA.em().createNamedQuery("native sql", MyClass.class)*のように*@SqlResultSetMapping*取れるようなのだ


今回のミソは、*JPA.em().unwrap(Session.class);*のようだ(Session.classがどのようなものかはまだ調べていない・・・汗
あとは、*Transformers.aliasToBean*でCastを行ってくれるようだ


解ってしまえば大したことないのだが、今後はかなり役に立つと思われる

ただし、定義したEntityで事足りるようにコードを書く方が、ベターなのかもしれない
  • TrackBack (Close): -

書かなくなってだいぶ経ってる

特に大きな事柄がなかったので書こうかどうかを迷ったまま、ずっと書くのを止めていた

何もしていなかったわけではなく、常に忙しかったので書くということ自体を忘れていたということもある

そして、振り返ってみれば現在の仕事スタイルをはじめて10年が経っていた
* CreativeD.S.を名乗ったのは、2年後なので2年後が、本当の「10th anniversary」なのだろう

10年。

長いようだが、振り返るとすごく短かったと思う

金にならないような小さな案件から大きな案件までそれなりにこなしてきた

2,3年前に今まで誤魔化し誤魔化しで過ごしてきたため、大きな壁にぶつかったな

今もよじ登っているだけで精一杯であるが、楽しくもある

昔、2年続くのは半数。

5年続くのはさらに半数。

10年続くのはほんの一握りだとなにかで読んだ記憶がある

俺の周りでは長いこと同じスタイルでやっている奴らは多いが、稀なのか?

確かに潰れたやつも何人も見てきたが、続くやつはこの先も続けられるのだろう。

かくいう俺も2年で目標に達しなければタクシーでも運転しようかと腹をくくっていたが、

何とかここまでこれた。

俺は、仕事に100%向けれない性格なので
* だからと言って雑にはやってないよ。たぶん・・・

プライベートも全力でやっている

おそらくそこがよかったのだろうと思う

結局は、モチベーションをどのレベルで維持できるかが、大事なんだろうな

モチベーションが下がった場合、考え方を180°変えるだけで一気に上げることができるんだから
* 楽観的というか実際にはそんなに上がらない

あとは、健康管理かな。

仕事を長く続けるには、常に100%ではいけないのだと思う。

客観的に自分を見れる余裕がなければ失敗も多いし、焦りも出てくるしな

なんだ、久しぶりに書いたけど中身がない気がするが、

ちゃんと10年を振り返るのは、2年後にしよう。

もしかするとタクシー運転してるかもね~(笑)
  • TrackBack (Close): -

colorbox.js カスタマイズ

popupを表示するのに人気があるのかな?
jqueryでできたLightBox風のpopupだそうな


まぁ、いろいろなエフェクト設定、表示させれるモードがあって簡単に設置できる分にはとても良い感じだ


でだ、画像やページのスライドショー機能を持っているのだが改ページ機能はディフォルトでループとなっている
* まぁループで基本は問題なんだけどね( ^ω^)・・・


今回修正するのはループしたくない要望を改善させる

1 > 2 > 3 > 1 > 2
となるのがいやなんだそうな (もちろんもどるもあるぜ)

1 <> 2 <> 3 としたいらしい (最初は戻りがなく最後は進がない)

まずそんな設定をcolorbox.jsは持ってないので

settingsに
previousDisable, nextDisableの変数を持たせる
* デフォは falseにでもしておきましょうか


if (settings.nextDisable) {
$("#cboxNext").css("display", "none");
} else {
$("#cboxNext").css("display", "");
}
if (settings.prevDisable) {
$("#cboxPrevious").css("display", "none");
} else {
$("#cboxPrevious").css("display", "");
}


あとはサブウィンドウがロードされる箇所にこんな感じにする
colorbox.cssの該当のタグを消せばいいんですね


* ただどこが開始か終了かわからない(詳しくソース見てないからw
 なので面倒だから


class='group iframeNonPrev'
class='group iframe'
class='group iframeNonNext'

とか手抜きww
rel が同じなら繋がるからね(。-_-。)



あぁ あとcolorbox.jsはiframeもサブウィンドに表示できるんですが
親 > 子 > 孫
っとウィンドを切り替えると

親 > 子(親の子) > 孫(子の子)
って位置づけになり

孫窓から一気に親のリンクを変えれないみたいだった

なので

無理やりunloadに自分の親をリンクさせて自分を閉じるというわけのわからない処理をいれた・・
すごく気持ち悪い(ーー;)


$(window).unload(function(){
ownCloseAndJump(GetCookie('url'));
});

function ownCloseAndJump(url){
if((url != null) && (url != 'undefine')){
var expire = new Date();
expire.setTime( expire.getTime() + 1000 * 2 );
document.cookie="url=" + url + "; expires=" + expire.toUTCString();

parent.location.href=url;
parent.$.fn.colorbox.close();
}
};




でもきっともっとスマートなやりかたがあるんだろう・・・


  • TrackBack (Close): -

初めての○○

今年の生まれた日は、例年となにやら違いました。

突然、事務所の電話が鳴る
「プルルルルル♪ピロロロロ♫」



「ただ今留守にしております」


!?
外出してたんですね(´Д`)



んで留守電に

「B-plusの○○です。インタビューをしたいので・・・(略」



B-plusをググるとなにやらすごい人たちがインタビューされておる( ^ω^)・・・

なんで俺?間違いかな?



インタビューを受けることなんて普段ないのでどんなんかなぁと
100%興味本位で連絡してみる(。-_-。)



スケジュール合わせて待ち合わせ場所へ
日取りはたまたま自分の誕生日(・∀・) ネラッテナイッスヨ



対談相手は「川崎麻世さん」

TVではよく見てましたが正直、よく知らない((*_ _)人ゴメンナサイ)

でもすごい人なんですね

十代の時素人参加コーナーでいきなりジャニーさんに
「YOU 来週の舞台でちゃいなよ!」 ほんとにYOUって言うんだね・・・半分俺が誘導した感はあったが( ´▽`)


十代の若さでいきなり舞台に上がって歌まで歌ってきちゃう
度胸はすごいと思ったね
そのまま事務所契約もそこそこにいきなりCMが決まるとかもう・・・スゴすぎる


そんな方との対談ってことで緊張するかと思ったら
そうでもなった笑

インタビューは意外と淡々進み
WEBマガジンとして


B-plus

として記事にして頂きました



おしまい




  • TrackBack (Close): -

あの頃に戻りたい

なんて、たまに話に出るが戻ったところで何を得れるのだろうか?

今の俺はそれなりに楽しい(。-_-。)
やりたいことをなんでもできるようにはならなくなったが…

考えなくてはならないことが多くなり、時間が足りなくなり
もどかしさは常にある




学生時分に戻ればとりあえず勉強しておけばそれなりになんとかなった
*ほとんどしてなかったけども(´・_・`)





考えること、やるべきことが単純化されていることは
やはりイイコトで、それに向かってやればいいだけ

単純化されるということは、それを高めることが出来るから (・∀・)デキル
*人間、そんなにいろいろ考えれないよ (´Д`).O○(昔は複数個のことを出来ると思ってたがね)







なので今はメリハリを付けることを心がけている
仕事するとき、遊ぶとき、飲みとき ☚一緒か(^O^)






人生は限界を知ってからがスタートなんだよ
きっと...






  • TrackBack (Close): -

FireFoxの落とし穴 radioタグ

FireFox17(ほかのバージョンで試してないw)

radioタグをlabelでくくってしまうと挙動がおかしくなる

例えば
<form>
<label>
<input type="radio" name="hoge" value="fuga">fuga
<input type="radio" name="hoge" value="fugafuga">fugafuga
<input type="radio" name="hoge" value="fugaga-">fugaga-
</label>
</form>

とやると先頭のradioに遷移しようとリロード?を行う

こんな感じ
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓






labelタグってそういう挙動だっけ(´・_・`)?

背景変えたりなんなりする場合にlabelを使いたい(なぜlabelタグなのか不明だが)などでは
気をつける必要がある

どうしても使用したい場合はclass切るなりしないとだめだろうな
* 試してないのでうまくいくかはわかりません( ´▽`)ahaha-

  • TrackBack (Close): -

アイデアを形に

アイデアってなかなか浮かばないよー

なんていう人もいますが、アイデアは常日頃浮かんでいるんです
ただ、それは漠然としたもの

そこから一握りでも形にすることが難しいんですね(´・ω・)…

私はふと浮かんだものは、客観的となる第三者の自分を作ります。
そいつと問答をよくしてますね


そこから生まれた僅かばかりのアイデアを膨らます作業・・・
それが一番楽しい時なのかもしれない♪

ある程度決まったら
あとはプログラマーなり、デザイナーなりに落としていけばいいだけ
でもこれが一番大変な作業なのかもしれないですね


相手に100%伝えるために詳細まで説明する必要がありますから
(スティーブジョブズはこの作業が一番すきだったんだろうな。個人的に受けた印象だけど


物が完成してしまえばあとはエンドユーザーの判断!
きっと100%アイデアを反映できたものは受け入れられるでしょう!


たくさんアイデアを浮かべるのもよし、1つを熟考するもよし。


まずは、アイデアをお聞かせください。
私がきっとそれを実現させます


うぁ。。。最後営業文句になってしまった(-_-;)
  • TrackBack (Close): -

More...

Home

Recent Entries
Search
Feeds

Page Top