プログラミングの最近のブログ記事

S2JDBCでのページング処理

Seasar2フレームワークのデータアクセス部分のフレームワークとして、
S2JDBCがあります。

S2JDBCにはページング処理を容易に実現可能なLIMIT、OFFSETに対応しており、
SQLを発行する際に、

  selectBySqlFile(
    XXXXDto.class,
    "XXX.sql",
    param)
    .limit(10)
    .offset(0)
   .getResultList();

と指定するだけで、対象データの取得が可能です。

しかし、この方法で生成されるSQLは、
SQLの最後に、「limit 0,10」が付与される形式となっており
PostgreSQLでは対応していないSQLの形式となっています。

結局、XXX.sqlファイル内のSQLにoffsetを記述して、
limitは上記のように設定することで、とりあえず実現はできました。

フレームワークは様々なRDBMSやアプリケーションサーバーといった環境に対応する必要が
あるので、改めて共通部品を作成する難しさを感じました。

Google Collections Library

久しぶりの技術関連の投稿です。

最近はライブラリに関しての情報はまったくと良いほど、
見ていなかったのですが、
Java のライブラリで Google Collections Library の記事が目に留まりました。

「Google Collections Library」でJavaのコレクションを補完する ...

情報は一年前で、
心の中で「情報遅れてるぜ?カビが生えちまってる。」
なんて叫んでましたが、
良いんです。
知るは一時の恥 知らぬは一生の恥 とも言いますしね。

というわけで、記事の内容を読んだのですが、
読む限りよくできている感じがします。

次に情報が古いかどうかの確認。
現在は1.0RC2 って事は・・・?

正式リリース前なのでギリギリセーフとか思ってみる。
本質は見るだけじゃなくて実際に使ってから評価しろっていう話ですがね。

ちなみにMaven で依存ライブラリ探しているときに見たよーなみていないような。

今週末にとりあえず使ってみようかと思います。

PHP の開発環境

| トラックバック(0)

PHP の開発環境をちょっと変えてみたいと思い、
色々とやってみました。

まずは Eclipse と NetBeans のどちらを使おうかと思いましたが、
やはり慣れている方ということで、
Eclipse を使うことしました。

で、基本的にメインの言語は java になっているので、
一緒に詰め込んでしまえという事で、
PDT + Aptana PHP のプラグイン を追加して、
デバッグ方法などを試していた結果。
Eclipse の環境が破壊されました・・・orz

やっぱり、開発環境が全然違う場合は分けた方が良いかな。
色々できて、使いやすいという反面。
動作などは遅くなったり、競合してエラーとか色々デメリットもあったり。

今回はさらにベータ版を突っ込んだりとか、
結構無茶な事をした結果、
デメリットの部分がかなり出た。

というわけで、今回試してみた環境はこんな感じ。

ベースとしてPDT 2.1.0M6 の All-In-One パッケージ

PDT2.1 は eclipse の次期バージョンGalileo にあわせてある模様

次に Aptana Studio を入れようとしたところ、
パッケージ不足で警告が出たために、
アップデートから EMF と RSE のパッケージを追加。

その後に Aptana Studio を導入。
http://update.aptana.com/update/studio/3.4 からアップデートし、
後は画面の指示に従って終了

そして次にAptana PHP を導入
こちらも先行試験として ベータ版を使ってみた。
http://beta.aptana.com/beta/php/3.2/ からアップデートをすれば、
ベータ版が利用可能となる。

後は日本語環境にする為に、
http://www.igapyon.jp/blanco/nlpack/eclipse/index.html
から日本語化パックを取得してきて導入。

とりあえず、こんな感じで問題なく動きますが、
本当に便利に使いたければ、
デバッグの設定とか色々しなきゃいけない。

Visual Studio 2010

| トラックバック(0)
vb2010_l.jpg

Visual Studio 2010が2010年の6月までに発売する予定だそうです。


Visual Studio 2008もほとんど触ったことがないのにVS2010が発売されるなんて・・・。


時代の流れに取り残されていようにしないと。

がんばるか!


次期Visual Studio 2010と.NET Framework 4.0の新機能

CodeZine 2008年人気記事TOP10

| トラックバック(0)
プログラマの方なら、一度はCodeZineを見たことがあると思います。

わたしも、愛読させていただいております。


そんな仕事に欠かせないCodeZineの2008年人気記事TOP10が
発表になったのでご紹介いたします。


●1位 symfony入門(1):symfonyで始めるPHPフレームワーク

●2位 Struts 2入門(1)~基本形で理解する仕組みと構造~

●3位 log4netでデバッグや障害解析に役立つログを出力する

●4位 .NETマルチスレッドプログラミング 2:非同期デリゲートとスレッドプール

●5位 ActionScriptによるWebの3Dグラフィックス再入門

●6位 5分でわかるActiveReports帳票-らくらく始める帳票作成

●7位 Zend Framework入門(1):フレームワークの全体像とインストール

●8位 VBAで正規表現を使う

●9位 .NETマルチスレッドプログラミング 1:スレッドの実行と同期

●10位 Windows Vistaガジェット入門





6位の「5分でわかるActiveReports帳票」には大変お世話になりました。

.NETなどで帳票作成できるライブラリなのですが、ネット上で公開されている情報が非常に少なのです。
右も左も分からないわたしが、唯一頼りにしたのが6位の記事でした。

いやはや非常に助かりました。



Rails勉強日記

| トラックバック(0)

普段勉強しているRailsの事を書いていこうと思います。

勉強のまとめ的に書く場合もあるので悪しからず。

ハンドルネームがPerlのくせにRailsを語るのでちょっとややこしい感じがしますが
その辺は気にせず参りましょう。


Rails2.1の新機能としてActiveRecordにDirtyオブジェクトが追加されました。
これはADO.NETのRowStateプロパティのようにデータセットのトラッキングを
行う事ができるオブジェクトで、これで変更されたレコードだけを抽出してDBに
更新する事も可能になる。だたADO.NETのようにデータセットをロールバック
したりするようなDB的なアクションはできません。

こういう機能って他のO/Rマッパーでは標準的な機能なんでしょうか?
結構便利な機能ですよね。VBではかなりお世話になります。

以下サンプル。


orders = Order.find(:first)    #=> モデルを生成

orders.title = "hogehoge"    #=> 取得したインスタンスを変更

#変更されたか
orders.changed?            #=> true

#カラムを指定する事も可能
orders.title_changed?        #=> true

#更新
orders.save!           

#更新後は初期化される
order.changed?            #=> false


変わった?とオブジェクトに問いかけているようなメソッド名がなんともRubyらしい。
しかもメソッド名に列名を付ける事ができるという、なんかメソッドとプロパティが合体したような感じ。
JavaやVB.NETのような由緒正しい言語からするとかなりカジュアル。


他にも"named_scope"という検索条件をモデルに定義てきるようになった。
findのconditionが同じ条件が多い場合、モデルの方に検索条件を纏めておいてメソッドとして使えるようにする仕組み。
「同じ作業を繰り返さない」考えを持つRailsならではの発想です。

と言っても2.1は最新ではなく先月2.2がリリースされました。
早速リリースノートとドキュメントを読んで勉強しているので次回以降
2.2の新機能なども書いていきます。


プログラミングの腕試し

| トラックバック(0)

プログラマーにもオリンピックや甲子園がある!

@ITの記事でプログラミングのコンテストが紹介されていました。


わたしも以前「TopCoder」というサイトでコンテストに参加したことがあります。

TopCoderの特徴として、
①オンライン。
②多くのコンテストが開催されている。
③1つのアルゴリズムを何分でプログラミングできるか。(早い人で3分とかです)
④がんばれば参加できるランクが上がっていく。
⑤賞金がある。
⑥英語

言語はJAVA、.NET、C言語など自分の得意分野を選択できますが、PHPなどの軽量言語は使えないと思います。


このコンテストに参加するメリットとして、
①終了後に世界中の人のソースコードを見れるので、自分のコードと比較した勉強法が可能。
  (同じ問題、同じ言語なのに人によって書き方は全然違うんですよね)
  (早い人のコードはシンプルかつとても短い!10行とか
。わたしは50行bomb

②短時間に集中して考えるので、集中力・考える力が身につく。
  (脳の回転を早める訓練。流行の地頭を鍛えるにうってつけ!)

③賞金がもらえる
  (トップのギークのみですがかなりの高額!)

④英語の勉強になる。
  (最低限の英語力が無いと辞書を片手に数時間かかります!)

わたしはプログラミング以前に、英語という高すぎるハードルに阻まれ、あえなく撤退を余儀なくされました。いやはや


プログラミングと英語に自身のある方は、一度腕試しをしてみてはいかがでしょうか。
結構面白いですよ。


備考:問題を和訳できたら教えていただけると助かります!iyahaya


「バランス」その②

| トラックバック(0)

こんばんわ。くまぜみです。

 

ぎりぎりセーフhappy01

 

最近寒くなってきて、花粉症のせいか風邪なのか、鼻の調子が悪いです。

でも、ティッシュはいつも頂戴しているので、大丈夫good

 

さて、IT技術者にとっても「バランス」ですが、そもそも必要な仕事上必要な能力は、

仕事内容によって様々ですよね。どんな能力があるのか考えてみます。

 

まずは、IT技術者といってるぐらいだから、「技術力」かな。

 

ほとんどの人がプログラマーから始めると思います。

プログラマーとしてものを作り上げることができないと、始まらない。

自分が作ったプログラムが動いたとき、すごいうれしいですよね。

初めてプログラム書いてからだいぶたつけど・・・coldsweats02

 

テクニカルな「技術力」

以外にも、

システム全体、ソリューションを作り上げる「技術力」など解釈は様々あり、

その範囲はとてもひろい。

 

でも共通して思うことがある。

 

「上手に真似できる人が優秀」

※基礎研究を行っている研究者の方々は当てはまらない

 

OSつくったり、プログラム言語を開発しているわけではないので、

誰かが検証してくれたものを真似すればいいと思う。

 

何が使えるかを判断する勉強は必要でしょう。

 

また次回つづき。

 

今週はリリース週間

| トラックバック(0)

今週は注目しているものが、二つもリリースされました。

1つはNetBeans 6.5 もう一つは Zend Framework の1.7

家ではPHPを使って勉強しているのですが、
使っているのが NetBeans と Zend Framework の組み合わせです。

今まで NetBeans は PHP に標準対応していなかったのですが、
6.5からは標準対応となります。

ですがしばらくは、15分程度の紹介のプレゼンをするために mod_cluster のことを調査中。

上司から、
「保守しやすいプログラムを作れるようになることが第一」
と言われます。般若の形相で。


保守しやすいプログラムを作る要因はクラス構成等いろいろ考えられますが、
最終的には「誰が見ても分かりやすいソースコード」という原点に行きつくと思います。




「誰が見ても分かりやすいソースコード」を書くにはどうしたらよいか?


大きな要素の一つに、メソッド名のつけ方が上げられるのではないかと思っております。




弊社ではメソッドやクラス、変数名などはプロジェクトごとにコーディング規約などで決まっております。

よくある例では、
  ・Boolean変数を返すメソッド
         Is + 形容詞、Can + 動詞、Has + 過去分詞、三単元動詞、三単元動詞 + 名詞 
    などなど


ですが、同じプロジェクト内でもプログラマによって、メソッド名のつけ方は結構バラバラ。


それは、命名の規約に関してある程度の方針は示してあるが、細かなつけ方は各プログラマに一任されていることが多いからではないでしょうか。



.NET Frameworで定義されているメソッド名の数をランキングしたサイトを見つけました。

メソッド名ランキング



わたしはVB.NETでの開発が多いので、他の人が書いたメソッド名が.NET Framewor準じて書かれているソースコードは見やすいと感じます。



プロジェクトだけではなく、開発環境にも合わせた書き方がさらに「誰が見ても分かりやすいソースコード」になるのではないかと思ったkawaguchiなのでした。

ちゃんちゃん





泣きたくなるソースコード例(メソッド名は関係ないですが) coldsweats02
vb3.gif

プロフィール

愛知県名古屋市にあるジャスウィルで働く社員です。
ジャスウィルは大学事業に特化したシステムを提案しています。『大学向け事務・教務統合パッケージ―TriR Campus』を開発しています。