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

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

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

はじめに この記事はVisual Basic Advent Calendar 2016の11日目の記事となります。 10日目はamay077さんのVB.NET でパスワード付き共有フォルダにファイルをコピーするでした。 数十・数百万オーダーのオブジェクトをメモリ上にのっけてCPUをギュイーンするよう…

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

はじめに .NETチームのブログを眺めていたところ、面白そうなライブラリを見つけました。 blogs.msdn.microsoft.com github.com オブジェクトの状態遷移を管理するためのライブラリで、状態遷移を引き起こすトリガーとトリガーによって変わる状態を扱ってく…

C#でもUbuntu+Docker+Jenkins+GitBucket+MonoでCIしたい(CI編)

C#

はじめに 前回はJenkinsとGitBucketの環境を構築しました。 今回は実際にJenkinsでビルドとテストを実行させてみましょう。 プロジェクトの作成 まずはCIをブンブン回すプロジェクトを作成します。 テストの実装及びJenkinsでのテストの実行のために NUnit N…

C#でもUbuntu+Docker+Jenkins+GitBucket+MonoでCIしたい(環境構築編)

C#

はじめに 今回はLinuxサーバ環境で半ば無理やりCI環境を構築して.NETプラットフォームのアプリケーションをCIするという誰が得をするのだろうという内容の話です。 具体的に言うと、GitBucketでソースコードをホストして、GitBucketにプッシュされたときにJe…

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

はじめに 前回は地獄のSMT-LIBコピペ祭りを経て、z3で数独を解くことに成功しました。 今回はVBから制約を発行してz3に数独を解かせてみましょう。 .NETバインディング z3には.NETのバインディングが用意されており、P/Invoke祭りやCOM祭りをやらなくともz3…

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

はじめに マイクロソフト・リサーチが開発しているz3定理証明器に興味を持ったのでそれについてです。 鶴亀算 まずはオンラインのコンソールで鶴亀算を解いてみましょう。 z3はSMT-LIB標準形式のバージョン2を解釈できるのでそれを用いて鶴亀算の各制約を記…

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

はじめに 皆さんは漢字は得意ですか? 弊社はクッソ苦手です。 パソコンに頼り切っちゃってるのでまぁ当たり前っちゃー当たり前だし、普段パソコンで文章を書くなら別に困りもしないのですが、打ち合わせの時に書記でホワイトボードに書くときに漢字が書けなく…

C#でもILGeneratorでダイナミックにToStringしたい

C#

はじめに 動的にToStringするのに定評がある[要出典]弊社ですが、ライブラリを追加するレベルでもないけど手軽に1ソースコードを追加するだけでパパッと使えるものが欲しいな~と考えておりました。 と、いうわけで作りました。 縛り内容 ゲーム実況等では縛…

VB.NETでもWinDbgしたい

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

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

はじめに jyuch.hatenablog.com 前回はildasmを用いた逆アセンブルとプログラムに出現する文字列から当該処理を行う箇所を特定し、特定の処理の迂回をやってみました。 今回はデバッガを用いて実際の動作を覗いてみましょう。 動的解析 ところで、前回アセン…

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

はじめに C#やVBなどの.NET言語はリバースエンジニアリングに弱いと言われています。 ちょっとした用事でソースコードを紛失したライブラリを解析してその事を実感したので今回はその事です。 イントロ それではまず、VB*1のコンパイルの過程をおさらいしま…

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

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

C#でもSigilでデリゲートをダイナミックに生成したい

C#

はじめに 飽きもせずに.NET黒魔術シリーズです。 SigilといってもEPUBの方のSigilではないです。そっちの情報を求めていた人はまわれ右してお帰りください。 やる気が起きなかった時にネットサーフィンしていたところ、こんな記事を見つけました。 www.infoq…

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

はじめに ブログのアクセス解析を見るとプログラムの高速化についての記事へのアクセスが多いですね。 jyuch.hatenablog.com こんな具体性のない記事が『VB 高速化』での検索の割と上位に出てきてしまうのはさすがに申し訳ないので、今回はちょっとだけ具体…

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

はじめに .NET Frameworkは言語に依存しないプラットフォームです。 つまり、C#で書かれたライブラリをVBで利用できたり、その逆が出来たりします。 じゃあ、C#で書かれたコードを全てVBで利用できるかといったら、そうではありません。 public class Class1…

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

はじめに はじめに一つ釈明といいますか謝罪的なアレなんですが、タイトルにVB.NETと冠していますが正直VBほとんど関係ありません。 サンプルコードにVBを使ってるだけで正直C#でもVBでも大して変わりません。 side-by-side実行とGAC(グローバル・アセンブ…

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

はじめに 今回はMono.Cecilを扱います。 Mono.Cecilとは何ぞやと言いますと In simple English, with Cecil, you can load existing managed assemblies, browse all the contained types, modify them on the fly and save back to the disk the modified a…

C# + RoslynでVB.NETのコード分析ツールを作りたい

C#

はじめに あけましておめでとうございました。 普段メタプログラミング・リフレクション大好きと言っておきながらいつまでもRoslynを触らないのはどうなのかなぁ。 ということでC#とRoslynでVBの簡易的なコード分析ツールを作ってみました。 まぁ、コード分…

.NETのボックス化は遅いのか?

はじめに ちょっとした用事でVBの遅延バインディングが遅い上にOption Strict Offじゃないと使えないというやっぱりVBはクソVBはこういうところで小回りが利かないな〜という問題に対して、自前で遅延バインディングを実装してみればいいんじょないかとマリー…

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を使って自動実装した時の記事です。 先人たちが100000000回くらい辿った内容なのでも…

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

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

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

はじめに jyuch.hatenablog.com 前回は既知のクラスのメンバーにアクセスする式木を構築しましたが、既知のクラスにあんな面倒なことをやっても何も嬉しくありません。 やはり真価を発揮するのは未知のクラスのメンバーにアクセスしなければならないときです…

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

jyuch.hatenablog.com はじめに 今回も引き続き式木を扱っていきましょう。 そもそも式木とはなんでしょう。 という事でmsdnさんオナシャス 式ツリー (C# および Visual Basic) アレでは上記の コードをツリー状のデータ構造で表現できる 実行時に動的に生成…

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

はじめに 最近はReflectionでToStringするアレの開発に勤しんでいた弊社です。 『ReflectionでToStringするアレ』自体はC#で書いているんですけど、アレでやってる事をVBで紹介しているサイトがほぼ皆無なのでライブラリの宣伝も兼ねて軽く紹介したいです。 …

C#でもリフレクションで ToString したい

C#

はじめに JavaにReflectionToStringBuilderってあるじゃないですか。 Apache Commonsのアレです。 特に需要があるわけではないですが、どうしてもそれを.NETでやりたくなったのでC#で書いてみました。 リフレクション とりあえず文字列に含むのはインデック…

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

default(T) C#のコードをVBに移植している時に以下のコードがありました。あ、なんで移植してるんだってツッコミは無しね。 class Hoge<T> { public T HogeHoge(T value = default(T)) { return value; } } はて、VBではdefault(T)に対応する演算子って何でした</t>…

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

はじめに 本当に申し訳ございません。 超×2便利メソッド jyuch.hatenablog.com 上の記事で触れてる通りC# 6がリリースされusing staticの登場でよりVBらしさをアピールできるようになったので、いつもVBを見下してくるC#erにVB固有メソッドの便利さを見せつ…