C#」カテゴリーアーカイブ

.NET 関連のディープなネタ

Orange Pi で .NET Core を動かそう

このエントリーは C# Advent Calendar 2017 – Qiita の 8日目のエントリーです。前のエントリーは atsushieno さんの libsoundio-sharpとPInvokeGeneratorについて – ものがたり です。 Orange Pi とは何か? 端的に言えば、Raspberry Pi 互換機です。ラズパイのように40本のGPIOが設定してあったり、マウスやキーボードに繋げるためのUSBコネクタがあったり、モニタに繋げるための HDMI があったりします。 Orangepi http://www.orangepi.org/ 互換機であるならば、普通にRaspberry Piを買った/使ったほうがいいだろうという話もありますが(実際に初心者的には無難なラズパイ3を薦めるところですが)、まあ、2台め3台目…n台目となると値段の関 … 続きを読む

カテゴリー: 開発, C# | コメントする

SWIG の文字列(string)の扱いが少しややこしいので、Marshal.* を使ってみるテスト

内部コードを std::string/char * にするか std::wstring/wchar_t * にするかで、SWIG の挙動が変わるような感じなので、その前段階のテスト 戻り値をstring型にする SWIG の技 C#側からみればC++のDLLから文字列を取得したい場合、GetName( const char *, int ) としてバッファを渡すよりも、string GetName() な形で、string 型を返して欲しいわけです。そうなると、dllimport の部分も な形にしておきたいところですよね。しかし、これはできません。戻り値は string に自動変換してくれないんですね。 不思議なことに、SWIG の場合は戻り値に string を使えて、まあこんな風に string 型を渡したり受け取ったりできます。 当然のことながら、これは Hello クラス内でラッ … 続きを読む

カテゴリー: 開発, C#, C++ | コメントする

SWIG を使って C++ のクラスを C# で読み込む方法

FFFTP2 のライブラリ化の前調査として、C++ のクラスに書き替えたときに、.NETから呼び出すことができるだろうか?というのを調べていました。基本 C# から C/C++ を呼び出すときは dllimport を使う訳ですが、これは「Cインターフェース」を使っているので、C++のクラスを直接呼び出すことはしていません。なので、C++の場合は、一度Cのインターフェースに直して呼び出さないといけないですよね。OpenCvSharp の場合も、OpenCV を呼び出すときに、dllimport を使っていますが、ひとつひとつ C インターフェスに直して組み替えています。ここの手間がなんとも言えないのと、将来的に C++ の構造が変わったときにはこの部分を手作業で直さないといけませんよね(実際 OpenCV2 から OpenCV3 の変換のときに発生している問題で)。となれば、Xamarin … 続きを読む

カテゴリー: 開発, C#, C++ | コメントする

Microsoft OCR をデスクトップのWFPアプリで動かす方法

巷ではGoogleのリアルタイム翻訳アプリが流行っているのだが、あいにく手元にある Android が古いので、それほど面白い画像が取れない。ので、Google Cloud Vision で OCR 機能を試してみたのだが、実は Microsoft OCR もあるよ、ってことで。 こんなものがある。 Windows.Media.Ocr namespace – Windows app development https://msdn.microsoft.com/library/windows/apps/windows.media.ocr.aspx?f=255&MSPPError=-2147217396&cs-save-lang=1&cs-lang=csharp#code-snippet-4 試してみると、Microsoft OCR も Google のそれ … 続きを読む

カテゴリー: 開発, C#, WinRT | コメントする

詰将棋のようにTDDでC#を学ぶ実験(2)

逆引き大全のほうは、サンプルに対して1tipsという制限があるので、あまり盛り込めないが、詰将棋 TDD のほう(あるいは「覚醒プログラム学習」)のほうは、1問(1プロジェクト)に対して、ごっそと覚えるべきことを詰め込んである。というか、クラスの構造とかファイルストリームとか別々に書くと面倒なので、ひとつのテストクラスにしてテストメソッドだけ分けるというスタイルにしている。 項目の出し方は、IDEF0 や五行を使っているのだが、そもそものネタは patterns & practices に則っている。パフォーマンス・チューニングをする上で、 CPU メモリ ストレージ(ファイルシステム) ディスプレイ データベース ネットワーク を考える。業務システムで何をするかによるので、何処かが「ボトルネック」になる。ボトルネックを解決する仕組みは「クリティカルチェーン」を参考にすればよいだろ … 続きを読む

カテゴリー: C#, TDD | コメントする

詰将棋のようにTDDでC#を学ぶ実験

「ハチワンダイバー」を通読したので、浦野真彦著「1手詰めハンドブック」を買いました。子供用にどうぶつしょうぎを買っている訳ですが、結構いけそうなので、それならば詰将棋を試してみようという次第です。自分で読むというのもあるけど。私は、7手詰め位でギブアップですね。 将棋とプログラミングは似ている プログラミングは、新しい問題を解決すると同時に、既存の問題を解決する手段でもあります。新しい問題ってのは、人工知能とかVRとか、新しい技術ですよね。なんらかの技巧を駆使して実現するわけですが、一方で、みずほ銀行リプレースのような既存の技術の積み重ねで成り立っているところもあります。所謂、社内の情報システムの構築なんかは、大抵はこの「既存の技術」の組み立てで十分だったりします。そのあたりを主な仕事にしていると、面白いか面白くないかは別として、仕事としてやっていけるかが重要になります。 それを将棋に例え … 続きを読む

カテゴリー: C#, TDD | コメントする

アリスは無限にプラダから猫を取り出す

アリスはプラダがお好き | Moonmile Solutions Blog http://www.moonmile.net/blog/article/alice-plada アリプラシリーズの第24弾めは、イテレーターの話…というか、とある林檎な国では for がなくなって for in だけになってしまったものだから、いやいや、配列とコレクションがごっちゃになってないか?と思って作ろうと思ったのだけど、横道に逸れてイテレーターになってしまったという訳。 最近のプログラム言語ではコレクションの全ての要素に対して何かやるときは、foreach を使う訳ですが(林檎の国では for in ですね)、これはコレクションの中身のすべてのアクセスするというだけで、特に順序は決まっていません。まあ、実装上は最初の要素からアクセスするんだけど、Javascript のように実はとびとびだった … 続きを読む

カテゴリー: 開発, C# | コメントする

アリスは System.Json に出会う

System.Jsonなるものが爆誕してた。https://t.co/sZY8lumbX3 — 高張大雅 (@taiga_takahari) 2016年9月14日 ということで、さっそくダウンロードして、無理矢理 .NET Framework のほうでビルドします。ええ、.NET Core じゃなくて、普通の .NET Framework に持って来るわけですね。 corefx/src/System.Json at master ・ dotnet/corefx https://github.com/dotnet/corefx/tree/master/src/System.Json から System.Json の src 以下をごっそり持ってきます。 Visual Studio 2015 でクラスライブラリを作成 実は、そのまま corefx のプロジェクトを持って来て少し変えるだけでいけ … 続きを読む

カテゴリー: C# | コメントする

dynamic を利用して ExDoc を書き直してみる(1)

「メタプログラミング .NET」をざっと読み終わったので、手元の github から ExDoc をダウンロードしてきて、dynamic 版の ExDoc を作っているところです。 旧 ExDoc は、演算子のオーバーライトと暗黙のキャストを使って、/,*,%演算子を使って XML を探索できていました。まあ、奇妙といえば奇妙だけど、LINQ の派生みたいな感じで作れるわけです。タグを指定するのが文字列なのがあれなのと、だったら XPath で指定してもいいんじゃないか、という話もありますが、まあ実験的に。ちなみに、このライブラリは実運用で4年ほど使っています。CakePHP をサーバーにして、クライアント側の XML パースを ExDoc を使ってパースしているという技ですね。 で、常々、PHP の SimepleXML がうらやましかった訳ですが、そんな風に直接プロパティで設定できるの … 続きを読む

カテゴリー: C#, EXDoc | コメントする

ぐるっと巡って、再び DLR へ

一時期、ブームだからと思って手に取った(リフレクションやT4目当てで)「メタプログラミング .NET」なんですが、本棚を整理するときにうっかり捨ててしまったらしく、Kindle で買いなおしました → Amazon.co.jp: メタプログラミング.NET 。どうせだから、洋書で買おうかと思ったけど、英語版の Kindle は無くて、翻訳版のほうが安いってのはどうなの? 後付けでメソッドを付けるというのを考えて、最近 Python でそれができるのを知って、そういえば IronPython ってどうなったの?と思って、再び dynamic と System.Dynamic.ExpandoObject を見直し見たら、ああ以前に ExDoc の expando 版を作ろうと思っていた残骸が HDD に残っていたのを再発見、ってのが現在位置です。でもって、「メタプログラミング .NET」の第8 … 続きを読む

カテゴリー: C# | コメントする