2012年8月29日水曜日

とりあえず前から書くといってたデザインパターンについて追加

書いてみたけど文章だけじゃどうにもならんから、絵つけようこれ・・・わかりにくいわ(´ρ`)
誰が見ても分かりやすく理解しやすく誤解がないようにして結果として見やすいソースが
広がりますように(-m-)” パンパン

Abstract Factoryパターンについて。

Abstract Factoryパターンについて。

本を読むと大抵難しくこんな感じで書いてあると思います。

「互いに関連したり依存し合うオブジェクト群を、その具象クラスを明確にせずに生成する為のインターフェースを提供する。」

これ読んで一発でわかるなら、以降のAbstract Factoryパターンについては読まなくても大丈夫です。

何言ってんだ???
って場合は、前記載した通りできる限り簡単に噛み砕いて説明をします。

そもそもこのAbstract Factoryパターンで何がやりたいのよっていうと、
同じような操作を呼び出し元が行う場合に、各種呼び出し結果による振る舞いを
実態に任せて、呼び出し元は何を実体化させるかを意識しないでおきたいというような場合に利用します。

(´-`) ンー これでも難しいですね説明が。

さて、もっと噛み砕きましょう。

何かしようかと思ったら、見えない妖精さん達が、最適な物を作ってくれるようにする為の仕組みです。
(こんな書き方したら、間違いなく偉い人は怒るよね?(´ρ`))

なんでこのような仕組みが必要かというと、例えば開発において使用するデータベースが環境単位で複数あるとします。
そんな時、当然使用するSqlCommandクラスなどは、対象となるDBに合わせたものが必要となります。

しかしながら、データを操作する側としては、インサート処理はインサート処理として記載をしたいわけです。
データベースがなんであれ。

そうした場合に、データ操作を行う為のクラスの実態と、データ操作を行うという命令自体を分けてしまい、
その間を取り持つための抽象クラスとして、各種操作を行う為の命令を提供しようという事です。

結果として、使用する側は実態が何かを考えないで、各種操作をするうえで必要となる命令部分を
抽象クラス側で提供してもらえればよい。

抽象クラス側も実装自体は、各種操作側の実態に任せてしまえばよいので楽ちんです。

そして操作側も、他に何があるかを考えずに、指定された抽象クラス内で定義されている
操作を実装するだけで問題が無いので楽ちん楽ちんです。

そして、最後に、このクラスの実態を生成する為仕組みとしてクラスの実態を作成する為の
実態作成クラスを作ってしまいます。

基本的には、どういった設定で実態クラスを生成するかは、Abstract Factoryの実態作成クラス側の内部に隠蔽するべきです。
これを外部から指定し始めてしまうと、隠蔽していた実際の命令が外部にまで飛び火する可能性が高いです。

実態がなんであれ、命令として同一の命令で臨む結果を設定に従って適宜実態であるクラスが行ってくれるのが
一番良い方法です。

もっとも、どうして特殊な操作が必要で、生成する実態を外部から制御したい場合があるとは思いますが、
そういった場合は、苦肉の策としてパラメータを指定して生成する実態を制御する方法もあります。

ただ、これを行うと先に書いた通り、抽象化していたクラスの実態が何であるかをわかったうえで操作する必要がある
特殊な物がある状態になるので、メンテナンス性は著しく低下します。

また、新規の操作を追加したり、新しい実態群が必要になった場合は、実装側のクラス全てに手が入る可能性がある為、
メンテナンスを行う手間が多くなる可能性もあります。

この辺を考えて作る必要があります。

今回のデータベースで考えると、作成しなければいけないのは、コマンドクラスとパラメータクラスとコネクションクラスとって色々ありますが、これらのクラスを抽象化し、実態をそれぞれ実装してもらい使う側は抽象クラス使って、実態生成の整合性については実態生成部分に責任をなすりつけようという形になります。

んでは今回はここまで。
暇があったらgithubにでもサンプルを随時追加予定???

Enterprise Libraryって使ってる開発あります?

見るからには便利そうですし、昔はちょくちょく見てたんですが、最近話を聞かない。
けど、DIとか使ったりログ落としたりとかいうのに毎回フレームワーク部分で何を使用するか悩むけど、
そういった意味では全然使えそうなんだけど、実際どうなんだろうか?

http://msdn.microsoft.com/ja-jp/library/ff953181%28v=pandp.50%29

なんかつっかってまっせーって方々いれば、求使用感(´ρ`)

Stringの2次元配列でDataTableの中身格納したの誰だ?

マジで氏ね

誤解が無いように。
VB.NETですから・・・

Cとかでファイルの内容を配列に格納とかそんなレベルじゃねーっすから。


2012年8月28日火曜日

エラー処理でExceptionを使うな???日本語でOK

エラー処理でExceptionを使うなとか言われたんですが(´ρ`)
正直どないせいと思ってしまいます。

エラー判定は全て戻り値だそうですwwwwwwwwwwww

もう本当に無理だからorz

自社の人間もこのHP知ってるはずだから宣言しときますが、
冗談抜きで本気で発狂手前の精神状態ですから。

 ってかエラー処理で、例外を使わないで組むとか頭悪すぎる。

なんの為にExceptionがあるんだと、本気で問い詰めたい・・・

しかもException使うないう理由がまた笑える。
Exception使うと分からなくなるというお話です(´ρ`)

とりあえず、もうお前らプログラム組むなと冗談抜きで言いそうになりました本当に。

ちなみにエラー処理は、個人的には戻り値でやるものとExceptionでやるものをある程度分けます。
戻り値でやるようなものは、bool型での問い合わせ系ですね。

int.Tryとかで型変換でもあるように、あんな感じで問い合わせを行うようなものは、戻り値のbool型で問い合わせます。

業務ロジック系は、全部Exceptionです。
例外処理として、業務ロジックの処理をExceptionで上位層に渡して適宜エラー処理を行います。
じゃないと、下手な戻り値で処理続行とか極稀に馬鹿が組むとありますからね(´ρ`)

だもんで、問答無用で例外をthrowさせます。

しかし、何度も書いた通り、このレベルの開発でなんで医療や銀行系のプログラムを組むのか本気でわからん。

最近思うのは、公共性の高いプロジェクトに関して(医療や金融など)は一部プログラムの抜粋を行い、
利用者が安心して利用できるレベルの技術レベルがあるかを担保するべきだと思うようになりました。

この手のコードは絶対に表に出ないである日突然止まったり不具合が発生します。

東証などでもシステム不具合により止まったり、銀行系でもATMが使えなくなったりします。
一部交通系ではJRでも不具合が発生したりします。

しかしながら、利用者、さらには発注者を含めてプログラムの中身やシステムの中身を評価できません。
Windowsの更新すらしてない企業が、セキュリティの為とかわけのわからん寝言をほざいて公開なんて全くないです。
中身がどんなに腐っていても外側がよければ、実際に使えるので問題な下げに思えてしまいます。
しかし、多くの仕様変更を伴う長期保守案件になると、その腐った中身のせいで、ある日突然動かなくなることすらあります。

この辺のシステムの中身の担保の為に一部ソースの抜粋などを乗っけるべきなのではと最近本気で思います。

そうしなければ、この手のシステムの事故は増える事はあっても減る事は全く無いと思われます。

皆さんその辺どう思います? 

2012年8月23日木曜日

GitHubでソースの公開

インストールは至極簡単ですね(´ρ`)
GitHubへの接続も亀さんがあって楽ちんですし。
ソースの更新も楽ちんでした。
ってことで、気が向いたらインストールについて書いてみるかもしれない・・・
これについては期待をしないでください(´ρ`)

あとGitHubにエクセルのAddinをあげてみた。
まだつくり途中ですが、よくあるエクセルのテーブル定義書から
Select文とかCreate文とか発行させろやぁ~ってマクロを
.NETのAddInBase使って作ってみてる途中
Select文の発行までは終わってるんだけど、そっからいまいち気分が・・・
ってか今の現場でほしいといわれて、自宅でてけてけてんっと
ネット巡回してる途中に作った程度なので、色々機能がたりないので、
いずれやりたい事が全部できるようになったら
正式リリースしよう(´ρ`)

ところで、Entity FrameworkのEntityも定義書から生成すればいいんじゃねーとかおもってたんですが、
コード・ファーストでの開発でもエクセルでEntityの定義くらい作るんかな?
なんか定義を作ってからEntity作るとデータベース・ファーストとかわらん気がしてならない。
かといって何の定義もなくコード・ファーストで組もうとすると、Entityがえらいことになりそうだし・・・
(´-`) ンー実際の実務開発でコード・ファーストでそこそこの規模とか無理のようなきもするし・・・
どなんだろうか?
この辺、使用感を教えてくれる偉い人たちの降臨を希望(-m-)” パンパン

そしてGitHubはだれかフォローしてくれて良いんですよ[壁]_・)チラッ
言ってみただけです(´ρ`)

https://github.com/sinaku

あの馬鹿今日もやってくれやがった

朝9時に今起きましたじゃねーよ。
昼出社ってどういうことだ禿。

こっちの作業とまったじゃねーかよ。
何考えてんだ?

管理するってんならまともに管理しろや!!!!

はぁー・・・まじ今日は朝からストレスたまったわ(´ρ`)

どうにも頭が悪い開発者がいると仕事が止まる

なんで、資料を作らない開発者が居るんですかね・・・
別にきっちりした資料をつくれってわけじゃなくて展開用の内部資料すらつくらねーとか・・・

今日ER図の修正が必要だったんで、ソフトで何で作ってますか?って聞いたら
「ローカルにA5:SQL Mk-2いれて作ってます。」
とかドヤ顔で言ってた馬鹿が居ましたが、そもそもなんでそれの資料がねーんだと。

ほかの人間がER図修正できねーじゃねーかと。
資料の修正って知ってっか?
っと疑問符がつきまくりました。

おまけにローカルにER図のファイルなんぞおいておきやがって、誰か修正するときどうすんだ?

忙しいってなめた事言ってたが、忙しいからこそ資料を作って展開して情報共有して、
ほかの人間に仕事を渡せる状態にすんだよタコ!

っと思わず思ってしまいました。

ソース管理は手動マージで、ER図は秘伝でリーダーの人に聞いてもわかんねーとかいわれる状態で、
作ったフレームワークは腐ってて、この状態で忙しいとか本気で頭悪くてなめ腐った人間が
なんで開発現場にいるのかわかんねーorz

どうにもこのHPも本人にばれてるような気もするので、現場で言えない部分を言っておきます。

毎日チェックインとか、Config触るなとかなんで説明がねーんだよ。
7月25日時点で、午前中に話聞いて午後にも話聞いて、そんな説明ねーじゃねーか。
おまけに、時間作ってそういった開発事情を聴いたはずなのに、
おめーが資料も用意しねーで伝え忘れた部分で、こっちに文句をなんでいってくんだ?

時間がねーくせにねちねち粘着質でうるせーし。
とりあえず毎日チェックインとConfig触るなで2回目だったから、
黙ってふぁびょったふりして顔立てて聞いてやったが、次はねーからな(´ρ`)

おまけに作成するときのソースで、Linqとか使うと後々メンテで困るって言ってた人間が、
なんで後々こまらねーように上記に記載のあるソース管理方法の資料や、
仕様書作成に必要なツール類の資料なんかをまとめておいておかねーんだ。

後々困るっていってソースを手書きでがりがり書くような事して、その他資料を残しておかねーとか
頭マジ悪いだろう。


あぁー最近ソースを見てないので、ストレスがたまる事があまり無いはずなのに、奴と話すと一気にストレスゲージがマックスまでもっていかれるわ・・・

ソースだけじゃなくて、仕様書にも口伝で伝わる秘儀がありますとか・・・
あぁ~本当に心が病んできた。
この件とその他ほかにも口伝で伝わる秘儀のせいで数日仕事が止まってたりするのでもう笑うしかない。

暇だからいいじゃんともおもったのですが、暇ってのはよくないですね、適度に忙しくないと、退屈と無関心が人を殺すのだって言葉もありますし。

あっちなみにA5:SQL Mk-2は良いソフトですよね(´ρ`)
前の前の開発と前の前の前の開発でも使いましたよ。
ER図がテキスト形式のファイルに中身あけるとなってるんで、ソース管理上の差分管理とかも
しやすかったですし。

難点といえばコピーして貼り付けってEntityの行にしようとするとできなかったりするところですかねorz

UIでやりたいのにできないからファイル開いてテキストで編集とかたまにするのが(ノ_・、)シクシク

2012年8月21日火曜日

BazaarからGitに乗り換えてみた。

BazaarからGitに乗り換えてみました。
一番大きかった理由はGithubです。
どうしても使いたかったので、さっくりと乗り換えました。

昔は結構色々問題があったようですが、結構さっくりインストールができるようになっていて驚きです。

暇を見つけたら適当にソースの公開でもしていきます。

2012年8月7日火曜日

DBへの登録処理で高速化

さて、今の現場で入る前にそういえば夜間バッチでの処理を行う際に、
150カラム程度で数百万件程度のデーターを素早く登録したいといっていたので、
さらっとソースを眺めてどう作ろうかなぁ~
っと思ってたら・・・分散トランザクションが使えねー(´ρ`)

DBのコネクション管理クラスが分散トランザクションでのスレッド処理とか全く考慮に入れられてない・・・

どないしようか・・・

動いてる部分だから手出したらマッハで飛んできて文句言うだろうし・・・

(´-`) ンー その前にMSDTCとか入れていいのだろうか?
テスト環境の用意が出来るのだろうか・・・不安でならない。

スレッド使ったらそもそも文句垂れられそうだ・・・わかんねーとかいわれて・・・

どないしようか本当にorz

適当に作れませーんっとか言っておこうか激しく考え中。

そもそも面談でSQLでなんとか高速化をとかいってたのが、引っかかってたが実際に本当に引っかかった(´ρ`)

元の取り込み元がファイルとかなら、ファイルをガッツリ取り込むとかもできるんだが・・・

2012年8月4日土曜日

外出先でのネットワーク接続について

最近は気分転換でファミレスなどでカタカタPC叩いておりますが、
そうすると外出先でのネットワークの接続をどうしようか考えどころです。

前は モバイルWi-Fiルーター BF-01Bを使用しておりました。
http://www.nttdocomo.co.jp/product/data/bf01b/

しかしながら、2年契約で契約更新をしないと、また2年解約するのにお金がかかる状態になりまして、ちょっくら色々考えてみました。

いくつかモバイルWi-Fiルーターなどもありますし、携帯でもデザリングに対応した機種が多くでてきました。

いちよう携帯でもデザリングが出来る機種を選んでみたものの、使用すると恐ろしい勢いで電池が減っていきますorz

ってか通常使用でも電源の持ちがあまりに酷いありさまで、会社から帰る頃には毎回電池残量がもうありません。

っということで、PC用のネットワーク接続機器をどれにしようかまよってみたものの、
結局Xi対応のノートPCだったので、Xiのsimカードだけ購入してきましたよんっと。

これが意外と使いやすい。

何しろWi-Fiルーターだと電源が別ですからいちいち電源をそれぞれ入れてあげないといけないのが、
マシンの電源一発でつながります。

意外といいかいものしたのかなぁ~っと思ったんですが、電源の減りは恐ろしく早くなった気がしますorz

Vaio Zさんのもともとの電源もさほど多くはないですが、Xi使うためだけに拡張バッテリー積むと重いですし・・・
しかしながら、数時間使う事を考えると、電源の確保が大変です(´ρ`)

皆さんこの辺どうしてるんですかね。

家の近くとかに電源貸出を行っているような喫茶店とかファミレスとかあると助かるんですが、
なかなか田舎の千葉ではそんなものはありません。

千葉県も広いですしねorz

本当に悩みどころです・・・

あと、外出先でPC使ってるとトイレとか困りますよねorz

下手に鞄にいれると、帰ると思われたり、かといってPCおいていくのも不安ですし。
 この辺どうしてるんですかね他の皆さんは。

激しく気になります。

2012年8月2日木曜日

またまた愚痴だよ愚痴

あぁ~あのアホ開発者が。

リリースビルドするのに金曜日と月曜日休むから、今から始めますってお前の脳内スケジュール言われてもしるかってんだよ。

テスト検証用にConfigいじってんだから、急に言われてもんなことしらねーよとしかいいようがねーだろうがボケ。

何をキの字なみにかけよってきて文句たれてんだ。

あとVSSの運用どうたらいってたけど、一番最初にリリースビルド用ってのは聞いたけど、毎日チェックインとか、Config触るなとか、聞くたびにルール増やしてんじゃねーよタコ。
口伝で伝わる秘儀じゃねーんだぞ。

リリースビルドするならするでいいが、それまでに開発で使ってんだから聞けよ先にこっちにどうなってるかを。

あと、忙しくてリリースうんたらとか寝言いってたけどな。
DataTableに100項目以上のカラム追加して、秘伝の技術でスパゲティーコード書いたお前がそもそもの原因だろうが。

客先からリリースのたびにバグが大量にでて、テストのエビデンス増えたのは、間違いなくそういった組み方の問題いだろうが。

Entityなり型付DataTableなりを使って、LINQ使って条件抽出とかしてれば、そもそもコンパイル前にエラーがわかんだろうが。

汎用DataTableのSelectに文字列自分でかきかきしてたらエラーでんにきまってんだろうが。
それも実行時に。

馬鹿か???本当に

あと、そんなキ印PG組んでんのに、
「クリックワンスの変わりに自前でプログラム作りました(キリッ」

じゃねーよボケ。

時間無くなってんのは、そんなくだらねー代用品つくってっから時間がなくなんだよ。

忙しいの見てわかりません?
とか言われても、今のお前を見てると間違いなく諸悪の根源で、設計にかかわったこと自体が害悪だ・・・

あぁ~もう会社いきたくねーわ本当に。