Category Archives: Programming

[.net]移植に有効活用。developerFusion「Code Converters」


CodeProjectなどでカスタムコントロールを探していると、いいなと思ってソースを見るとC#だ!ということが多いのですが、VBがいいなぁ・・・・。なんてときにとっても便利なのがこちら。
» Free online developer tools - developer Fusion

dobonさんで紹介されてて、精度もなかなかということで実際に使ってみたのですが、自分で移植するより精度が高かったw
C#→VB.NET、VB.NET→C#、それからPythonなんかにもコンバートできるようです。
これまで手で地道に移植して、C#とVB.NETの微妙な違いがそうかそうかと分かっておもしろかったのですが、いかんせんなれないC#だけにVBからのコンバートに時間がかかっていました。でも、これで一発。

dobonさんには今日もお世話になりました。いつまでお世話になることやら・・・。
» DOBON.NET .NET Tips: C#, VB.NET, Visual Studio, ソースコード, サンプル紹介

IISでWordPress。WebPlを使えばインストールが簡単!


購読中のOSS系メーリングリストで知りました。WebPlがバージョンアップしたようなので、ささっとwordpressをインストールしてみました。
» Microsoft Web Platform

DBはMySQLでWEBサーバーはIISです。そのほか管理用にSQLServerがインストールされたり、EntityFramework関係もインストールされるようで、合計約90MBもインストールされるようです。けっこうありますねw ネットワーク経由でのインストール。時間がそれなりにかかったりします。僕は夜中でしたが1時間近くかかりました。

インストール後はMicrosoft WebMatrixを起動。MySite→Wordpress→OKをクリックするとWordpress用のサーバーが起動。URLが表示されるのでアクセスするとwordpressの設定が始まりますと、こんな流れです。かなり簡単でした。
wordpressをローカル環境で設定するにはApacheをいれてやってきましたが、これからはMicrosoft純正ツールですね。

[css]wordpressテーマのcssに毎回追加する独自cssは別ファイルに分離しておくとよい。

非常に非常にいまさらなことですが、知らなかったというか毎回追加してましたよ。

wordpressでテーマのstyle.cssにないタグを使用している場合、テーマ変更のたびに毎回テーマのstyle.cssに手で追加していたのですが、別のファイルに分離しておいて、それをstyle.cssの冒頭でimportしてやるだけでよかったのですね。知らなかったです。誰も教えてくれなかったですorz

今回サイドバー右側下のGoogleが買収したといわれるfriendfeedのカスタマイズを別のcssファイルに用意して、それをstyle.cssの先頭でimportするというやり方をやってみました。すこぶる簡単。

importの記述は、

@import url('hogehoge.css');

とても簡単ですね。

ちなみにcssのオーバーライドってのも知りました。
cssは親→子、外側のタグ→内側のタグという具合にcssは継承されていくのですが、親の継承を蹴飛ばして、子は独自のcssを!って具合に使うのがオーバーライドです。上書きという感じでしょうか。
firebugで見るとこんな風になっている部分です。

奥深くまで知ろうとすると一筋縄ではいかないスタイルシートですが、ちょこちょこカスタマイズができるくらいのことを知っておくと、何かと便利ではないかと思います。

その昔に購入した一冊。

Web標準の教科書―XHTMLとCSSでつくる“正しい”Webサイト Web標準の教科書―XHTMLとCSSでつくる“正しい”Webサイト
益子 貴寛

秀和システム 2005-07
売り上げランキング : 8927

Amazonで詳しく見る by G-Tools

[vb.net]DataGridViewのSelectedCellsコレクションに格納されるセルの順序について


DataGridView上で複数セルが選択された場合、そのコレクションを取得するために"SelectedCellsコレクション"というプロパティが用意されています。
» DataGridView.SelectedCells プロパティ

このコレクション、どうやらセルの選択のされ方によってコレクションに格納されるセルの順序が決まるようです。
以下、検証。

①左上から、右下へ選択

右回りでも左回りでも、結果は変わりませんでした。
左上から右下へセルを選択したとき、MouseUpイベントが発生したセルとSelectedCellsコレクションの0番目のセルは同じとなります。

②右下から左回りで選択

選択領域内の右上のセルが0番目に格納されています。

③右下から右回りで選択

選択領域内の左下のセルが0番目に格納されています。

いまいち規則性がつかめないですが・・・。
なぜこんなことを調べたかというと、SelectedCellsの0番目が必ずMouseUpイベントが発生したセルと一致すると思い込んでましたが、実は違うのかも・・・と思ったからでしたが、見事違いました。

MouseDownイベントが発生したセルをMouseUp時にどうにか取得したいというのがそもそもの狙いなのですが、SelectedCellsをあてにしないほうがよさそうですね。余分なメンバ変数はできるだけ増やしたくない。けど、いい方法があるだろうか・・・。

[VB.NET]For Each…Nextの反復値の変更は無効

し、知らなかった。
LinqでSelectした結果をForEachでまわして、要素の値を変更するプログラムを書いたのですがいっこうに要素の値が変更されないのですが、ちゃんとMSDNに書かれていました。
» For Each...Next ステートメント (Visual Basic)

反復値の変更 ループ内で element の値を変更すると、コードの読みやすさが低下してデバッグが難しくなります。group の値を変更しても、コレクションやその要素には影響が現れません。これらは最初にループに入る時点で確定されます。

"変更されません。"、はい。orz

コレクションの変更 GetEnumerator から返される列挙子オブジェクトでは、通常、要素の追加、削除、置換、または並べ替えを行ってコレクションを変更することはできません。For Each...Next ループの開始後にコレクションを変更すると列挙子オブジェクトが無効になり、次に要素にアクセスしようとしたときに InvalidOperationException 例外が発生します。

ただし、この変更のブロッキングは、Visual Basic ではなく IEnumerable インターフェイスの実装によって決定されます。反復処理中の変更を許可するように IEnumerable を実装できます。このような動的な変更を行う場合には、使用するコレクションでの IEnumerable 実装の特徴を理解しておくことが必要です。

コレクション要素の変更 列挙子オブジェクトの Current プロパティは ReadOnly (Visual Basic) であり、各コレクション要素のローカル コピーを返します。これは、For Each...Next ループ内では要素そのものを変更できないということを意味します。変更は Current から返されたローカル コピーにのみ適用され、基のコレクションに反映されることはありません。ただし、要素が参照型である場合、その要素が指すインスタンスのメンバを変更することはできます。次に例を示します。

ということで、変更されないことがわかりました。
仕事でVBでForEach書いたときは反復値に別の値を代入してもOKだったのですが、C#だとエラーでコンパイルできませんでした。