【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

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

Cyan for Silverlight

id:takuto_hさんのプログラミング言語CyanをSilverlightに移植しました。Cyanのクラス構成もマップ化して分析しました。動作確認とソースのダウンロードは以下です。 Cyan for Silverlight Cyan クラスマップ Cyanの外部でコンソールのエミュレーションを行…

XAPコンテンツの読み込み

ファイルのプロパティでビルドアクションをコンテンツにするとXAPファイルの中に埋め込まれます。XAPファイルをZIPとして展開するとファイルがそのまま出てきます。プログラムから読み込む方法は以下の通りです。 var uri = new Uri("foo.txt", UriKind.Rela…

コンソールのエミュレーション

Console.WriteLine()やConsole.ReadLine()で入出力を行うコンソールアプリケーションをSilverlightに移植するため、コンソールをエミュレートしてみました。サンプルの電卓プログラムです。 ⇒ 動作確認とソース※Silverlightにデフォルトでフォーカスを与える…

UML クラスマップ(参照関係)

クラスマップのUMLから参照関係をたどれるようにしました。具体的には、あるクラスがどのクラスのメンバとして含まれているかを調べることができます。 ⇒ 動作確認とソースSilverlight 2で開発していますが、先日リリースされたSilverlight 3でも動作を確認…

イベントキューの処理

ListBoxに大量のデータを挿入すると時間が掛かります。挿入過程を表示させて進捗確認できるようにしたかったのですが、イベントキューを処理するまでは表示に反映されません。Windows FormsではApplication.DoEvents()でイベントキューを処理することができ…

UML クラスマップ

クラスのメンバをUMLのクラス図で表示できるようになりました。メソッドやプロパティがどの階層で実装されているのか一目で分かります。クラスやメンバをダブルクリックすると別ウィンドウでMSDNのリファレンスが開きます(ジェネリック型を除く)。 ⇒ 動作…

ファイルの一括コピー

F#

特定のディレクトリ以下にあるJPEGファイルを一括でコピーする必要に迫られました。VC#でプロジェクトを作るのが面倒だったのでF# Interactiveでやってみました。ファイル名の重複を避けるため更新日時をファイル名にしています。 let recdir dir f= let rec…

クラスマップ

Silverlightでクラスマップを作成しました。ライブラリの全体像を俯瞰できるかもしれません。 クラス名(名前空間なし)のリスト 継承関係のマップ 名前空間のマップ メンバのリスト マップの操作方法は以下の通りです。 ドラッグ(左ボタン):スクロール …

クラスツリー(平面化)

クラスツリーを横方向にも展開しました。 ⇒ 動作確認とソース今までの縦長のものに比べて見やすくなっていると思います。

クラスツリー(線種選択)

昨日のクラスツリーは放射状に線が引かれていましたが、直線状が選択できるようにしました。 ⇒ 動作確認とソース縦に長すぎるためレイアウトを工夫してみます。

クラスツリー

Silverlightのクラス継承関係をツリー表示しました。 ⇒ 動作確認とソース ドラッグ(左ボタン):スクロール ダブルクリック(左ボタン):全体表示 ホイール回転:拡大・縮小 あまり継承関係が深くないのは意外でした。

値型と副作用

C# F#

F#で値型の操作に失敗してハマりました。 ※以下のプロンプトはid:n7shi:20090612のセミコロン省略版fsiを使用しています。 > let r=Rect() val r : Rect > r.Union(Rect(1.0,1.0,2.0,2.0)) val it : unit = () > r.ToString() val it : string = "0,0,0,0" U…

選択・移動・ズーム

Silverlightは左クリックしかサポートしていません。ホイールはHTMLからイベントを取れば扱えます。右クリックはWindowlessモードにすればHTMLからイベントが取れるようになります。ですがWindowlessモードはIMEがサポートされないなど制限があるため、なる…

イベントがすり抜ける

XAMLなしの以下のようなコードで、Pageにイベントが来なくてハマりました。 public class Page : UserControl { public Page() { MouseLeftButtonDown += (sender, e) => Debug.WriteLine("Page"); } } 何か置かないといけないのかと思ってCanvasを置いてみ…

ListBoxのダブルクリック

ListBoxのアイテム上でクリックしてもMouseLeftButtonDownイベントが起きません。これはListBoxItemの中でイベントが片付けられてしまうためです。WPFの場合はPreviewMouseLeftButtonDownで回避できますが、Silverlightにはありません。そのためListBoxItem…

F# Interactiveの改造

F#

F# Interactiveはとても便利なのですが、セミコロンを2つ入力するのが面倒です。そこでセミコロンを省略して、インデントも自動化してみました。使用例は以下の通りです。空行でインデントから抜けています。 > let f x= - if x%2=0 then - "偶数" - - else …

四角と文字

昨日までWPFでやっていたことをSilverlightに移植しました。⇒ 動作確認とソースWPF版との違いは以下の通りです。 対話環境 ⇒ プログラム Window ⇒ Page MouseDown/MouseUp ⇒ MouseLeftButtonDown/MouseLeftButtonUp プロジェクトの作成方法は以下の通りです。

対話的操作 (IronPython編)

WPF

昨日と同じことをIronPythonでもやってみました。Visual Studio内のIronPython Consoleから実行するとイベントループが回るためコマンドを入力しながらウィンドウを操作することができますが、コマンドプロンプトのipyからだとイベントループが回らないため…

対話的操作

F# InteractiveからWPFの図形を操作してみました。LOGO気分でWPFの操作を覚えられるかもしれません。WPFを読み込みます。 #r "PresentationCore.dll";; #r "PresentationFramework.dll";; #r "WindowsBase.dll";; open System.Windows;; open System.Windows…

オートシェイプの複数選択

マクロでオートシェイプを複数選択するとき、RangeにNameの配列を渡します。 ActiveSheet.Shapes.Range(Array("Picture 1", "Rectangle 1")).Select Excel 2003ではNameプロパティの数字部分は自動で割り振られていたのですが、Excel 2007ではコピーすると同…

ファイルの遅延レンダリング

C#

ネットワークファイルシステムのクライアント(FTPソフトなど)からExplorerにドラッグ&ドロップでファイルをコピーするため、ドロップ後にダウンロードしながらコピーさせたいことがあります。これを遅延レンダリングと呼びます。C#で遅延レンダリングをな…

マウスやキーボードの自動操作

WindowsではSendInput()というAPIでマウスやキーボードの自動操作が可能です。検索してもあまりサンプルが出てこなかったので、参考までにソースを貼ります。指定したスクリーン座標をクリックして[Ctrl]+[C]を押したことにするコードです。

二重起動禁止と通知

昨日C#で作ったものと同じようなものをC言語で実装してみました。二重起動判定はMutexではなくFindWindow()で行っています。なるべく簡単に実装するため、.NETリモーティングの代わりにWM_SETTEXTを投げています。

二重起動禁止と通知

C#

アプリケーションを起動させたときに、既に同一のアプリケーションが起動していればそちらに引数を通知してすぐに終了することで、常に1つのプロセスがすべての処理を行うタイプのアプリケーションがあります。VB.NETではVBアプリケーションモデルとしてこの…

オートシェイプの分析ツール

C#

クリップボードに格納されたオートシェイプのバイナリを調査するために作ったツールを公開します。パブリックドメインです。 ShapeViewer-20090521.zip 自分に必要な範囲内しか実装していません。そのため分析できる情報は仕様のごく一部に限られています。…

オートシェイプで画像をコピー

C#

オートシェイプを生成してクリップボードにコピーしてみました。引数でJPEG(複数可)を渡すとクリップボードにコピーされるので、Excelに貼り付けることが出来るようになります。コードをパブリックドメインで公開します。

オートシェイプからJPEGやPNGを抽出

C#

Excelに貼り付けた画像を取り出す方法として、Webページで保存する方法があります。しかしこの方法ではすべての写真が出力されてサムネイルが付くため、枚数が多いと選ぶのが面倒です。昨日クリップボードにコピーしたオートシェイプを解析しましたが、それ…

クリップボードにコピーされたオートシェイプ

C#

Excelなどでクリップボードにコピーしたオートシェイプの画像データを、Excel外のアプリケーションから操作することを試みていました。データはClipboard.GetData("Office Drawing Shape Format")とすればMemoryStreamで取得できます。バイナリ構造は仕様書…

画像サイズを取得

【追記】C#移植版 ⇒ id:n7shi:20110204C言語で外部ライブラリ(libjpeg等)を使わずにJPEGの画像サイズを取得するプログラムを書いてみました。パブリックドメインに置いておきます。

コピペの修正

C#

コピペで枠が表示されるように、グリッドを修正しました。 Grid-20090518.zip