掲示板お問い合わせランダムジャンプ



この広告は30日以上更新がないブログに表示されております。 新しい記事を書くことで広告を消すことができます。

Top Index

2014年04月06日
GitGistでブログにソースコードを表示しよう
Syntaxhighlighterがいいと思ってたけどCSS使えないブログでは使えない。

それでソースコードの整形貼り付けは面倒だからやらなくなったんですが、GitGistなら簡単にやれることが判明!

参照:YoheiM.NET - 世の中のWeb情報に、体験と意見を添えて発信します
[git] gitのソースコードをブログで綺麗に表示するために、GitGistを使ってみる

参照元にも記載がありますが、GitHubで公開してあるソースでなくてもOK。
というかGitGist内にテキストボックスがあるので、そこにソースコードを貼り付けたら終わり。
なんという手軽さ…

愛用したいと思います。
[ 投稿者:mk3008 at 13:34 | 雑記 | コメント(0) | トラックバック(0) ]

2013年03月14日
LazyListっぽいものを作る
「必要になったときにリストをインスタンス、初期化する」ということがやりたくてLazyListなるものを探していたのですが、該当ワードでひっかかるものの、使い方がよくわからない。
Lazy(Of T)というのも引っかかるけど、使い方がよくわからない。

どうしたもんかと悩んでいたら、難しく考えすぎな気がしてきて自作。


Public Interface ILazy
ReadOnly Property IsSleep As Boolean
End Interface

Public Class LazyList(Of T)
Implements IList(Of T), ILazy

Public Sub New(creater As Func(Of List(Of T)))
Me.Creater = creater
End Sub

Private Property Creater As Func(Of List(Of T))

Private _innerList As IList(Of T)
Private ReadOnly Property InnerList() As IList(Of T)
Get
If _innerList Is Nothing Then _innerList = Me.Creater.Invoke
Return _innerList
End Get
End Property

Public ReadOnly Property IsSleep As Boolean Implements ILazy.IsSleep
Get
Return If(_innerList Is Nothing, True, False)
End Get
End Property

#Region "IList"
'innerListを使った書くだけなので、省略
#End Region

End Class


すくなくとも、自分がやりたいことは、これで十分。
ちなみにILazyはリストが初期化されているかどうかを判断するためのインターフェイス。
普段はIList(Of T)で管理して、用途に応じてILazyにキャストできるかを判定し、初期化されているかどうかを見るつもり。

で、結局Lazy(Of T)使ってないな・・・
これでいいんだろうか・・・
[ 投稿者:mk3008 at 01:24 | 雑記 | コメント(0) | トラックバック(0) ]

2013年03月06日
VS2012がこんなにお得に?って安いか??
VS2012Proがお求めやすくなったとこんなキャンペーンサイトを紹介されました。
http://www.microsoft.com/ja-jp/dev/2012/campaign/package.aspx

同サイト曰く、
VS2010Pro 128,000円
VS2012Pro 59,800円
とのこと。

確かに安いね。このページを見る限りは。

んでもね、私はVS2010Proを「乗換優待パッケージ」で買ってしまったんですよ。
購入履歴を見るに約28,000円で購入したらしいんです。

1000本限定商品と比べるんじゃないって言われそうですが、コレのせいでVSProに出せるお金は私の中で3万前後になっちまったんですわ。

ちゅーわけで、まだ高い。
アップグレード版出して!お願い!!TT

※色気出してSQLServer2012使い始めたら、VS2010と親和性が悪くて困ってます・・・
「対応してんのはSQLServer2008までだ。バカヤロウ」ってエラーでます・・・

※「お求め安く」っていってますけど、なんか違和感あります。
何気にYahoo!知恵袋にも同様の質問がありましたので、ご参考
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1211805132
[ 投稿者:mk3008 at 21:02 | 雑記 | コメント(0) | トラックバック(0) ]

2013年02月03日
O/Rマッパー Kairyu 0.2 α リリース
O/RマッパーKairyuをバージョンアップしました。

http://kairyu.codeplex.com/

今回のバージョン0.2より、LINQでO/RMできるようになっていますので、お試しあれ。

余談:
拡張メソッドは無限の可能性がありますねぇ。
[ 投稿者:mk3008 at 18:51 | 雑記 | コメント(0) | トラックバック(0) ]

2013年01月19日
O/Rマッパー Kairyu 0.1 α リリース
以前にも「AttributeORM」というO/RMを作っていましたが、
ちょいと時代遅れの設計になってしまったので、そちらの反省を踏まえ、新たに作り直しました。

http://kairyu.codeplex.com/

もともと公開するつもりはなかったのですが、プロジェクト管理ツール(CodePlex)を使ってみたかったので、オープンソースでリリース。
現在はα版ですが、一通りの機能は持っておりますので、よろしければ使ってみてください。

※今の時代、O/RMなんて珍しいものでもないし、星の数ほど製品がありますけどね…
[ 投稿者:mk3008 at 16:41 | 雑記 | コメント(0) | トラックバック(0) ]

2012年01月01日
Dapper の速度テストをしてみる
唐突ですが、Micro Orm なる言葉があるようです。
ざっくりいうと軽量かつ高速なORMといった感じ。

そのなかの1つ Dapper に速度テストがありましたので、
自作ORM(STORM)と速度比較をしてみました。
結果は以下の通り。
Running 500 iterations that load up a post entity
hand coded took 36ms
Mapper Query (buffered) took 39ms
Mapper Query (non-buffered) took 39ms
OrmLite QueryById took 39ms
Dynamic Mapper Query (buffered) took 40ms
Dynamic Mapper Query (non-buffered) took 40ms
PetaPoco (Fast) took 41ms
Dapper.Cotrib took 42ms
Dynamic Massice ORM Query took 43ms
PetaPoco (Normal) took 43ms
BLToolkit took 56ms
Linq 2 SQL Compiled took 65ms
Simple.Data took 76ms
*STORM took 144ms
Linq 2 SQL ExecuteQuery took 155ms
Linq 2 SQL took 489ms

※本当はもっとたくさんのORMと比較できるのですが、動作させる方法がわからなかったため、コメントアウトしちゃいました。

STORMは他のORMと比べると遅いですね・・・
開発効率重視でやってるので、速度はこんなもんで許してください。

※2/5追記
 STROMという名前のORMは他言語に存在しているので、
 今後はMaronに変えます。

※3/18追記
 いろいろ見直して、94msまで短縮。

※4/7
 さらに見直して、59msまで短縮。
 もう改善案も見当たらないので速度チューニングはこの辺でやめときます。

続きを読む ...
 
[ 投稿者:mk3008 at 13:51 | 雑記 | コメント(1) | トラックバック(0) ]

2011年12月21日
近況とかORMとか
またORM作ってます。
メジャーバージョンは4。
4回も作ってます…
うち1回はフルスクラップビルド。
で、今回は過去の経験も含め以下のような要件でやってます。

・シンプル
これがコンセプトです。

・ORMのみに注力する
ORM以外の機能は極力排除します。
これらの機能は拡張で対応してください。
たとえば、SQLのロギング機能は標準ではありませんが、
簡単にSQLコマンドをフックできるようにします。
log4netなどお好きなログツールを使用してください。

・コネクションを隠ぺいしない
ナンでもカンでもでもORMでやるのは愚の骨頂。
一括更新なんかはストアドやクエリを使ったほうがいいし、
レポート系はクエリ書いたほうがいい。
というわけで、コネクションを隠ぺいしません。
好きに使ってください。

・1コネクション中に複数のマッピング処理が実行可能
前はコネクションを隠ぺいしてたせいで、
マッピングする度にコネクションも閉じていましたが、
考えを改めましたので、コネクション開閉回数を抑えることができます。

・遅延ロードはサポートしない
いわゆる、参照した時にDBアクセスが発生するというやつはやりません。
あったら便利でしょうが、明示しない DB I/O が発生するのがイヤ。
事前に読み込んでおくか、ストアド化してください。

・ソートはサポートしない
ページングとか考えたらいりそうですが、今のところORMではやりません。
読み込んだリストを手動でソートするか、クエリでやってください。

・複雑な選択クエリもサポートしない
コネクションを隠していませんので、クエリでやってください。

・拡張性を残す
デリゲートを使って、関数で拡張したり、差し替えたりできるよにします。

・設定より制約
制約どおりであれば、
エンティティクラスを定義する際、属性やインターフェイス、基底クラスなどを
煩わしいことは一切なし。
なお、制約自体を独自関数に差し替えることは可能。

・ある程度の過剰読み込みを許容する
これはORM自体がそういうもんなんですが、あまりに過剰すぎてもいけない。
過剰に読み込まなくしたいが、その設定が複雑なのも簡便。
ということで、カスケードする階層を指定できるようにしています。
※0なら、自分自身。リレーションなし。
※1なら、自分自身と、その直近の親まで。という感じ。

・主キー検索条件を簡潔に書けるようにする
主キー検索する場合、普通は引数にIDを使いますが、
プロパティ名のリファクタリングなどが起きた時まぁまぁ面倒。
主キー検索条件はインスタンスそのものを使用します。
※文章で書いてもいまいちわからないでしょうが、まぁそういうことです。

んで、いまんところ読み書き、ダーティチェックまでは一応完成しました。
バージョン1のころと比べるとものすごいコード量が減ってます。
.NETのバージョンもあがったおかげで、プロパティの宣言も短く済みますしね。

あとはダーティチェックをEFの自己追跡っぽいコードに変えようか悩んでる最中。
しかし、EFの自己追跡ダーティチェックはPOCOといえるんだろうか・・・
パッと見POCOっぽいが、パーシャルクラスがえらいことになってるやん・・・
Silverlightでも使えるのはいいけど、ASP.NETに絞ったらどうなんだろとは思う。

もう少し調査してみる。

そして気が向いたら公開します。
[ 投稿者:mk3008 at 23:24 | 雑記 | コメント(0) | トラックバック(0) ]

2010年05月09日
今更ながらPS3購入
今更ですが、PS3購入しました。
ついでに、PortableID(?)も取りまして、ガジェットにセット!
ちょっとだけ賑やかになりました。
[ 投稿者:mk3008 at 19:56 | 雑記 | コメント(0) | トラックバック(0) ]

2010年02月27日
Webにソースコードを載せるのに便利なツール
Web(HTML)にソースコードを載せたいけど、予約後や、コメントの文字色を変えるのは面倒〜

そんなあなたに、よさそーなツールがありましたのでご紹介。
http://alexgorbatchev.com/wiki/SyntaxHighlighter

VB.NETの他、C#、SQL、XMLなどにも対応しているようです。

というわけで、VB.NETのみ動作確認してみました。
(利用方法は pre class="brush: vb;" な感じです)
おおむね良好ですが、文字列の処理がおかしい。

タネ:Dim s As String = "<GradientStop Color=""{0}""/>"
結果:Dim s As String = "<GRADIENTSTOP {0}?? Color="" />"

大文字になるわ、並び順変えるわ、かなりカオスですね。
元が良いだけに、おしすぎる・・・
[ 投稿者:mk3008 at 16:46 | 雑記 | コメント(1) | トラックバック(1) ]

2007年12月20日
VB.NETでORMappingしてみる
VB.NETでORMしようと思ったら、こんな手法が存在しています。

@IT:ASP.NETで実践するO/Rマッピング(NHibernate編)
http://www.atmarkit.co.jp/fdotnet/special/ormap01/ormap01_01.html
CodeZine:NHibernateを利用してSQLを書かずにデータベースにアクセスする方法
http://codezine.jp/a/article.aspx?aid=156

@IT:ASP.NETで実践するO/Rマッピング(iBATIS.NET編)
http://www.atmarkit.co.jp/fdotnet/special/ormap02/ormap02_01.html
CodeZine:iBATIS.NETにてO/Rマッピングを行う(SQL Maps編)
http://codezine.jp/a/article.aspx?aid=112

※そもそもORMって何だ?っていう方は
http://www.atmarkit.co.jp/fjava/rensai3/ormap01/ormap01.htmlを参考にしてください。

しかし、XMLファイルの設定がなんだかよくわからない。
(読解力が足らないのかもしれない・・・)

そんなときに「Ruby on Rails(Ruby言語のORM)」の本をたまたま読んだ。
Ruby言語の文法は全く知らなかったし、ORMの設定らしきものを全くした記憶がないのに、データベースアプリが完成していた。
(わけもわからず、サンプルどおりにやっただけですが・・・)

Ruby言語の特性のために実現できている部分もあると思いますが、.Netでもこんな風に手軽にORMってできないもんだろうか?
というか、作ってみたいと思った。

そう思って1ヶ月ほど時間が経った。
ゴールは遠いな・・・
[ 投稿者:mk3008 at 23:03 | 雑記 | コメント(0) | トラックバック(0) ]