読者です 読者をやめる 読者になる 読者になる

VB.NETでもAutofacで依存性を注入したい

はじめに OpenCoverのコードを読んでいたら、AutofacというDIライブラリが使用されており、気になったのでそれについてです。 チュートリアル Getting Started — Autofac 4.0 documentation 大体の手順をざっくりと列挙すると 脳内でいい感じに制御の反転を…

VB15の新機能の確認したい

はじめに 3月7日にVisual Studio 2017がリリースされました。 と言うことで今回も露骨なアクセス稼ぎVB15の新機能を確認していきましょう。 どうでもいいですが、VS2017のアイコンって梵字っぽいですよね。筆で書かれたっぽくして色を周りに合わせたら紛れて…

VB.NETでも遅延バインディングの呼び出し規則を確認したい

はじめに 遅延バインディングを使用したコードを眺めていた時にふと思ったのですが、遅延バインディングはどういう呼び出し規則でメソッドを呼び出しているのだろうと気になりました。 軽く調べてみたところ、言語仕様っぽいのは見つかりませんでした。 分か…

VB.NETでもパーサコンビネータを実装したい

はじめに 自宅でカンタン イルカセラピー どうも弊社です。 ヤフーでググったところ、今のところ誰もVBでパーサコンビネータを実装してないっぽかったので実装してみました。 実装にあたり、こちらのブログを参考にさせていただきました。感謝 blog.anatoo.j…

.NET FrameworkのRegexの文字クラスはバグっているのか?

はじめに 正規表現のお話ですが、『.は任意の一文字にマッチする』みたいな文法解説ではありません。 そんなの大手サイトが死ぬほど書いてますしね。 妙なバグを踏み抜くことに定評がある弊社ですが、今回は正規表現の文字クラス関係でわりと意味がわからな…

VB.NETでも文字列オブジェクトのサイズを計算したい

はじめに VBと言ったな。あれは嘘だ。 前の記事でオブジェクトのメモリ上のサイズを計算してみましたが、結局System.Stringのサイズがよく分かんないというなんでそれ書いたんだよって感じのアレになりました。 そのままだとなんか悔しいので、調べなおして…

VB.NETでもオブジェクトサイズの概算をしたい

はじめに 好きなトラックボールはKensingtonのSlimBlade どうも弊社です。 この記事はVisual Basic Advent Calendar 2016の11日目の記事となります。 10日目はamay077さんのVB.NET でパスワード付き共有フォルダにファイルをコピーするでした。 数十・数百万…

VB.NETでも割と楽に状態を扱いたい

はじめに 好きなポストイットは強粘着ノート75mm×75mm どうも弊社です。 .NETチームのブログを眺めていたところ、面白そうなライブラリを見つけました。 blogs.msdn.microsoft.com github.com オブジェクトの状態遷移を管理するためのライブラリで、状態遷移…

VB.NETでも制約ソルバーを用いて数独を解きたい その2

はじめに 好きな重原子力ミサイル巡洋艦はキーロフ級ミサイル巡洋艦 どうも弊社です。 前回は地獄のSMT-LIBコピペ祭りを経て、z3で数独を解くことに成功しました。 今回はVBから制約を発行してz3に数独を解かせてみましょう。 .NETバインディング z3には.NET…

VB.NETでも制約ソルバーを用いて数独を解きたい その1

はじめに 好きなフォントはにゃしぃフォント どうも弊社です。 マイクロソフト・リサーチが開発しているz3定理証明器に興味を持ったのでそれについてです。 『セオレムプロバー』と『フィジカルリアクター』って似てると個人的には感じてるのですが、z3には…

VB.NETでも形態素解析っぽいことをしてExcel方眼紙から漢字を抽出したい

はじめに 好きなMSILオペコードはldloca.s。どうも弊社です。 いやまぁローカル変数256個越えとか普通しないじゃん。ふつう 皆さんは漢字は得意ですか? 弊社はクッソ苦手です。 パソコンに頼り切っちゃってるのでまぁ当たり前っちゃー当たり前だし、普段パソコ…

VB.NETでもWinDbgしたい

はじめに この記事はWinDbgで.NET Frameworkのデバッグをするときのコマンドの備忘録です。 解説はありません。希望もありません。 ダンプの取得 ダンプは別途ソフトウェアをインストールする必要なく、タスクマネージャから取得することが可能。 しかし、ダ…

VB.NETは解析されやすいのか?(その2)

はじめに 好きな戦車はルノー FT-17。どうも弊社です。 今からBF1が楽しみですね。 jyuch.hatenablog.com 前回はildasmを用いた逆アセンブルとプログラムに出現する文字列から当該処理を行う箇所を特定し、特定の処理の迂回をやってみました。 今回はデバッ…

VB.NETは解析されやすいのか?(その1)

はじめに 好きなサブマシンガンは KRISS Vector。どうも弊社です。 C#やVBなどの.NET言語はリバースエンジニアリングに弱いと言われています。 ちょっとした用事でソースコードを紛失したライブラリを解析してその事を実感したので今回はその事です。 イント…

VB13以前でもNull条件演算子を使いたい

はじめに ちょっと前にVB14の新機能についての話をしたじゃないですか。 その中にNull条件演算子なんてものがあったと思います。 弊社はEntity FrameworkみたいなライブラリでFirstOrDefaultみたいなクエリを割合ぽいぽい投げ返ってきた値がNothingかそうで…

VB.NETでも処理を高速化したい その2

はじめに お前に足りないものは、それは! 情熱・思想・理念・頭脳・気品・優雅さ・勤勉さ!そしてなによりもォォォオオオオッ!! 速さが足りない!! 私が一番?やっぱり? そうよね! だって速いもん! どうも弊社です。 ブログのアクセス解析を見るとプ…

VB.NETは共通言語仕様の夢を見るか?

はじめに kotlinの正式版が出てテンションが上がっている弊社です。 余談ですが、「ことりん」って響きってアイマスとかラブライブとかに出てきそうですよね。 .NET Frameworkは言語に依存しないプラットフォームです。 つまり、C#で書かれたライブラリをVB…

VB.NETでもside-by-side実行をしたい

はじめに 新幹線は意外と乗りごごちが良く無いなぁと。どうも弊社です。 はじめに一つ釈明といいますか謝罪的なアレなんですが、タイトルにVB.NETと冠していますが正直VBほとんど関係ありません。 サンプルコードにVBを使ってるだけで正直C#でもVBでも大して…

VB.NETでもMono.Cecilでアセンブリを書き換えたい

はじめに 某家電量販店でSurface Bookを予約したら全店舗で初予約者でした。どうも弊社です。 しばらくは霞を食べて生きていきます。 さて、シリーズになっているのかなっていないのかよくわからん.NET黒魔術(メタプログラミング)シリーズですが、今回はMo…

ボックス化は遅いのか?最終鬼畜言語VB.NET

はじめに 最近の流行ワードは「サイクロマティック複雑度」。 どうも弊社です。 いきなりどうでもいい事なんですが、C#でdynamicを使うとサイクロマティック複雑度が上がっちゃうんですね。 まぁ、コンパイラが生成するコードなんでしゃーないんですけど。 …

VB.NETでもDLLをアンロードしたい

はじめに この記事はVisual Basic Advent Calendar 2015の6日目のエントリです。 今回はちょっとした理由で自前でプラグインっぽい何かの仕組みを構築する都合があったので、それについての記事です。 やりたい事 今回の仕組みの前提として大体以下のような…

VB.NETでもFizzBuzzを書きたい

はじめに 各位 お疲れ様です。 ちょっと興味があったのでVisual Basic Advent Calendar 2015に参加しようと思いました。 そこで、はてなブログには予約投稿機能があるということでそれを利用しようと思ったのですが、初めて使う機能をいきなり本番に突っ込む…

VB.NETでもリフレクションとT4を使ってINotifyPropertyChangedを自動実装したい

はじめに 好きなバージェス動物群はオパビニア。どうも弊社です。 INotifyPropertyChangedってあるじゃないですか。あのひたすら実装が面倒なアレです。 今回はそのクッソ面倒なINotifyPropertyChanged*1の実装をリフレクションとT4を使って自動実装した時の記…

VB.NETでもReflectionでToStringしたい(アレ ver.1.2告知)

はじめに 弊社が公開しているウンコライブラリのアレですが、晴れてversion.1.2をリリースしました。 正直そこまで規模の大きくないライブラリですので、おまけ程度のパフォーマンスの改善と正直どうでも良い機能追加程度です。 追加するべきかどうか迷いました…

VB.NETでも式木を扱いたい(その3)

はじめに 買ったゲームを二日で飽きる。どうも、弊社です。 前回は既知のクラスのメンバーにアクセスする式木を構築しましたが、既知のクラスにあんな面倒なことをやっても何も嬉しくありません。 やはり真価を発揮するのは未知のクラスのメンバーにアクセス…

VB.NETでも式木を扱いたい(その2)

はじめに ReSharperを買おうか本気で悩んでいる弊社です。 今回も引き続き式木についてグヘヘしましょう。 弊社は面倒な理論は放り投げて取り敢えず使ってみるスタンスなのですが、ここでは一応説明します。 間違ってたらゴメンね。 そもそも式木とはなんでし…

VB.NETでも式木を扱いたい(その1)

はじめに 最近はReflectionでToStringするアレの開発に勤しんでいた弊社です。 かなりのウンコっぷりを全世界に発信している感じで非常にアレなのですが、GitHubでプライベートリポジトリを使おうとすると金が掛かるという割と切実な理由で公開しています。 …

VB.NETでもdefault(T)したい

はじめに 唐突ですが、VBの略って知ってますか。 『Visual Basic』ですね。つまりヴィジュアル系なんですよ。 はいそこ、『ボケが荒い』とか言わないの。 さて、『Basic』はなんの略でしょう。 ウィキペディア大先生にお伺いを立てると、 名前は「beginner's…

C#でもVB.NETの超便利なメソッドを使いたい111111111(for C# 6)

はじめに 本当に申し訳ございません。 超×2便利メソッド C#でもVB.NETの超便利なメソッドを使いたい111111111 - レンコン畑でつかまえてjyuch.hatenablog.com 上の記事で触れてる通りC# 6がリリースされusing staticの登場でよりVBらしさをアピー…

VB14の新機能の確認したい

はじめに ついに Visual Studio 2015 の正式版がリリースされましたね。 と、言うわけで VB14 の新機能を一通り確認したいと思います。 はい、そこ やるんだったら CTP が出たタイミングでやれよ とか どーせ C# の後追いだろ とか 似たような記事が○○(ここ…

VB.NETでも契約プログラミングをしたい(その2)

はじめに ふと思い出したように過去の記事見返してみたら、いやぁーすんごい詳しく書いてますね。 特に初期のPythonで自前のエンコーダとデコーダを実装している一連の記事。 いやほんと。前回のXMLその6と本当に同一人物が書いているんですかって疑うくら…

VB.NETでもXMLを扱いたい(その6)

はじめに ちょっと前にXmlDocument + XPathでXMLの解析をダラダラとやった記事を書きました。 個人的には正直あれでいいかなーと言った感じでしたが、 『えーまじXmlDocument』『キモーイ』『XmlDocumentが許されるのは小学生までだよねー』『キャハハ』 と…

VB.NETでもNLogで独自のレンダラーとターゲットを定義したい

はじめに 今回はNLogで自前のレンダラーとターゲットを実装するお話です。 と、言っても公式の説明がかなり分かりやすいのでこっちを見た方が良いです。 Extending NLog · NLog/NLog Wiki · GitHub ちなみにNLogのバージョンは4.0を対象としてます。 つーか2…

VB.NETでも楽に複数の要素を連想配列のキーに使いたい

はじめに 最近はUnicodeで全角と半角を定義できるのかという疑問で夜も眠れなくなり、代わりに昼間に眠くなる弊社です。 そもそもUnicodeを使ってる癖に『半角ガ〜、全角ガ〜』と言っている方がおかしいんじゃないかと。 お前らはラインプリンタを使っている…

VB.NETでも契約プログラミングをしたい(その1)

はじめに 今回の内容は契約プログラミングです。 はて、契約とは何でしょう。 契約プログラミング - Wikipedia つまるところ呼び出し側と呼び出される側がそれぞれ満たすべき条件を明記することで、どちらがどこまで責任を負うのかを白黒はっきりさせること…

VB.NETでもXMLを扱いたい(その5)

はじめに 今まですごくダラダラやってましたが、今回が最後だと思います。 今回はDOMとXPathを用います。Linq to XMLはお休みです。 サンプルXML 今回のためにサンプルXMLを若干かなり改変しました。

VB.NETでもXMLを扱いたい(その4)

はじめに 無駄にダラダラ書いているこのシリーズですが、今回は『どうやって』ではなく『なぜ』XMLを扱うのか考えてみました。 弊社はとりあえず何に使うかは置いておいて何か気になることがあったらとりあえず突っ込んでおくスタンスです。 そうしておけば…

VB.NETでもXMLを扱いたい(その3)

はじめに 書くネタが思いつかないのでカットで。 XMLの検証 Module Module1 Sub Main() Section2() End Sub Function ReadSchema() As XmlSchema Dim xs As XmlSchema Using r = New StreamReader("mailbox.xsd") xs = XmlSchema.Read(r, Sub(sender, e) Con…

VB.NETでもXMLを扱いたい(その2)

前回までのあらすじ 軽くXMLとかXPathとかを記事にしてめっきり減った投稿間隔を少しでも上げようと画策した弊社であるが、20行程度のXMLから80行ものXMLスキーマが生成され紹介するだけで8500文字にも及ぶ内容の薄い記事が出来上がり『こんなはずじゃ・・・…

VB.NETでもXMLを扱いたい(その1)

はじめに ちょっとXML(+XSD)を扱う必要がありまして、色々試行錯誤したのでそれについてです。 弊社はAntのビルド設定ファイルを割合いじっていたのでXMLを書く事自体はそこまで初心者って事でもないと信じて明日も力強く生きて行きたいのですが、XSDについ…

VB.NETでもサイズを据え置きでBase64でエンコードしたい

Base64って、サイズが大きいのよ、サイズが。 突然ですが、Base64ってあるじゃないですか。 Base64 - Wikipedia 任意のバイト列をいわゆるASCII文字集合だけで表現可能で、7ビットしか扱えないメールではUTF-8と組み合わせて使われることが多い奴です。 メー…

VB.NETでもMidステートメントで文字列を置き替えたい

はじめに Mid関数の引数について調べていたらふとこんなものを見つけました。 Mid ステートメント 同じ名前で関数とステートメントの両方があるだなんてVBはなんて素敵な言語なんでしょう。 サンプルコード 使う使わないは置いておいてとりあえず使い方を確…

VB.NETでも静的なローカル変数を使いたい

はじめに この前、ふとVBのキーワード一覧を見ていたらStaticなる物を見つけました。 Static (Visual Basic) どうも静的なローカル変数を宣言する時に使うもののようです。 正直VBがオブジェクト指向言語を標榜しているならこんなものは要らないはずですが、…

VB.NETでも処理を高速化したい

はじめに まぁ、今回のテーマは高速化なんですけど『こうすればコードが超高速化される1111111』みたいな即効的なテクニックっていうよりはパフォーマンスに問題がある場合はこうして問題を解決すればいいんじゃないかな〜的なトピックです。 ちなみ…

VB.NETでもアンマネージドリソースを解放したい

はじめに 今回はアンマネージリソースを抱えるクラスの設計の話ではなく、アンマネージリスースを含むクラスを使い終わって破棄するときのお話です。 ちょっと前にこんなコードを見かけました。 Function Hoge() as Integer Dim connection = New SqlConnect…

VB.NETでも3項演算子を使いたい

はじめに 最近はVBでもPythonみたいに関数内に関数を定義できねーかなぁと考えている弊社です。 あと、出来ればVBでもカリー化関数を扱いたい。 もっとカジュアルに関数をホイホイ扱いたいのでMicrosoftさんオナシャス。 えっ?F#を使えばいいじゃない?うるせ…

For Eachは縮小変換されるのか?最終鬼畜言語VB.NET

はじめに なんか結構このタイトルが使いやすいのでこれから積極的に使おうかなと思っております今日この頃です。 我らが啓典msdnを眺めていたところ、For Eachについて気になる記述がありました。 For Each...Next ステートメント (Visual Basic) Option Str…

VB.NETでもAsc関数で文字コードを取得したい

はじめに Visual Studioのインテリセンスを眺めているとAscやAscWといった関数を目にします。 説明文をざっと見る限り文字に対応する文字コードを返すとあるのですが、 文字コードとは一体どのコード体系を指してるのか AscとAscWは何が違うのか 当該コード…

Mid$は高速なのか?最終鬼畜言語VB.NET

はじめに 今回は特に何かの目的を達成するというものではなく、ちょっと気になったことの確認程度です。 ふとその辺のVBのコードを見ていたらMidとMid$の2種類が使われているのに気付きまして、VBマスターを目指している弊社としましては何か違いがあるのか…

VB.NETでもReDimで配列の大きさを変更したい

はじめに 適当に『UnicodeはUnix Codeの略でUnixで使われている文字コード体系なんですよ〜』なんてホラ吹いていたら本気にされました。 多分バレたら殺されます。 さて今回は使いどころが正直思いつかないReDimステートメントのお話です。 ReDim ステートメ…