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

DLR で .NET Framework 上で動く Ruby 風言語 Beryl を書いてみようとした

IronRuby は衰退しました Mirah という JVM 上で動く Ruby 風言語があるそうで、ググっていたところ .NET Framework 上で動く Ruby 風言語を作りたいなーと思ってしまった。 まずは IronRuby を目コピしてみることにした。 分かったこと Linux 版の MonoDeve…

しーしゃーぷで Either クラス書いてた

C#

NuGet 見てみたら、Monad とかいう興味深い単語があったりしたので、書いてみた: using System; using System.Collections.Generic; using System.Linq; namespace Prelude.Data { /// <summary> /// /// </summary> /// <typeparam name="_Left"></typeparam> /// <typeparam name="_Right"></typeparam> public sealed class Either<_Left, _Right> { ///…</_left,>

Task サバイバル・ガイド

1 億 4 千万人の並行プログラミングファンのみなさんおはこんばんは*1。 21 世紀に入り、C# でもやっと並行プログラミングがしやすくなりましたね*2。 Task の使い方を書こうと思ったんだけど、なんていうか気分が乗らないのでやめとこーかなー。 と書いてや…

プリントデバッグ・サバイバルガイド

System.Diagnostics 名前空間の Debug クラスや Trace クラスを使ったプ リント・デバッグを行う際に予め知っておくべきことについて書きます。 何故プリント・デバッグなのか 他の人が書いたテストも無く、仕様通りに動いているかどうか*1疑わしいコードに…

Path.Combine 使うと間のパスセパレータを考えなくても良いから楽だよ

C#

よく、パスを構築するときに普通に文字列の足し算やっちゃう人が居るんだけど、Path.Combine 使った方が楽だよ! っていう話。 [Test] void パスコンバイン使うと間のパスセパレータを考えなくても良い() { var base_path = "C:/Users/alice"; var actual = …

GUIスレッド以外で動くコンポーネント側からコントロール操作したい!

ポッキーの日でありながらバイナリデーですね!! (前フリ) 今回はふつーのスレッドでウゴウゴするコンポーネントから、コントロールを操作したいよー! ってあれです。 GUIスレッド? ウィジェット、WinForms でいうコントロールは GUI スレッドというスレ…

C# で、C の共用体を実現するには?

おくればせながら、あけましておめでとうございます。今年もよろしくおねがいします。 今日、SDL.net を github にうpした。 SDL.net は SDL の C# binding である。 これを書くときにつまづいたことなどを書いてみる。 まずは SDL_event.h からコピペした…

SocketException の SocketErrorCode が AddressAlreadyInUse であれこれ

通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。 っていうエラーがでて、この例外の SocketErrorCode プロパティ [microsoft.com] が SocketError.AddressAlreadyInUse だったんだよね…

TcpClient などで非同期通信を行うときの諸注意らしきもの

BeginAcceptTcpClient メソッドを呼び出してから、EndAcceptTcpClient メソッドを 呼ぶまでの間に IAsyncResult インスタンスの AsyncWaitHandle プロパティが RAISE*1 しているかどうかを 調べる必要があります。 AsyncWaitHandle プロパティが RAISE 状態…

DataTable のレコードのソート

DataTable クラスのメソッドにレコードのソートなどといったメソッドがなく、力ずくでやるしかないように見えますが、 実はちゃんと佳い方法が用意されています。 それは DataView クラスを使う方法です。 DataView というのは MVC の V にあたります。V と…

UDP で How are you? な挨拶をしてみた2

ということで、送信をやるよ〜。 send_bytes = encoding.GetBytes( greeting ); done = client.BeginSend( send_bytes, send_bytes.Length, sendCompleted, client ); greeting をバイトに変換して、送信するよ。 いや、ほんとにそれだけなんだけど、sendCom…

UDP で How are you? な挨拶をしてみた

何だか知らないけど、"How are you?" の会話を UDP でやってみた。 How are you? って訊かれたら、I'm fine thank you. and you? って返せって英語の時間に教わったと思うけど、 Good! とか not bad とかって返すのがいいらしい。 まー、そんな感じ。あ、非…

C# で TCP ってみた

UDP に引き続き、TCP やってみたよ〜。 ということで、System.Net 名前空間と System.Net.Sockets 名前空間は外せないねっ! using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; usin…

C# で UDP ってみた

必要だったので。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Wind…

.NET で XML を文字列から読み込んでみた

ファイル、ストリームからなら簡単にできるんだけど、文字列からというのがよく分からなかったのでやってみた…のがこちら。 using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Xml; namespace demoXmlVali…

Q. 文字列を Base64 にエンコードしたりデコードしたりするのってどーやるの?

A. つ Convert やあ(´・ω・`)(ry 久しぶり〜。 ついったーID が規制されてるから暇つぶしに溜めておいたネタを消化するよ〜。 Base64 でエンコーディングしたくなることってあると思うけど、どーやってやったらいいのかパッと見じゃ分からないよねっ。 ちょっ…

StackTrace を取得してる最中に AccessViolationException が出るから困る

問題があったときのスタックトレース。 FileSystemEntry.fromFileSystemEntry FileSystemEntry.getFileSystemEntry SecurityDescriptor#__constructor() SecurityDescriptor#_M_get_file_security AdvApi32.GetFileSecurity で、StackTrace を取得してる最中…

MSB6006 って?

ActiveReports の新バージョンに移行しようと自作のアプリを修正していたときのこと。 `ActiveReports6' と ActiveReports.Viewer6 を参照に追加して、 `DataDynamics.ActiveReports.ActiveReport3' クラスの 3 を消して、コンパイルしようとしたところ: "L…

`FileStream' の話

C# io

ストリームを閉じる(close)ときにフラッシュ(flush)されるらしく、 閉じないとき──うっかりとかしょうがなくとか──ときは空のファイルが作られるだけ。 何らかの問題で、閉じたくないときは書き込む毎にフラッシュしておこう。 # もしくは、StreamWriter#Aut…

Q. ユーザー・アカウントを取得するには?

A. System.Environment のプロパティを使う ユーザー名やドメイン名を取得するには Environment クラスの静的プロパティを使う*1。 # Environment ってのは環境って意味で、現在の環境を取得するためのクラス。 # なので、全部スタティック。 string user_na…