2016-01-01から1年間の記事一覧

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の簡易的なコード分析ツールを作ってみました。 まぁ、コード分…