Programming」カテゴリーアーカイブ

IDLE は使える

Windows に Python 2.5 を入れてずっと気になっていたが。
IDLE って何なのだろう?単なるインタラクティブシェルみたいなんだけど。
Iron Python を先に試したので偏見があるのかもしれない。
自動インデントや色分けだけかな?少し使って調べてみよう。

ところで Ubuntu 8.04 には最初から入っていたよなぁ?
8.10 には無いので「追加と削除」から 2.5 用をインストール。

検索して解ったけどコイツはエディタにもなる IDE なんだね。

Options→Configure IDLE で設定を開き
General のタブ(?)から Startup を Open Edit Window に変更。
これで次回起動時から起動すればいきなりエディタとして使えるようになる。

残念ながらD&Dでファイルを開けないみたい。
おまけに Ubuntu のほうは日本語入力ができない、SCIM 経由だとダメらしい。
まぁ gedit で書いてコピペすればイケるんだけどね。

とりあえず再起動してエディタとして使ってみる。
まずテキトーにコードを書いてとりあえずどこかに保存する。
わざとエラーになるコードも入れてと、んで F5 を押す。

デバッグ起動して動いてくれます。
こんなに簡単にデバッグができるんだ、Windows 版もまったく同じ。
又、Ctrl + Space を押すとコード補完まで。

おぉ!これはまさしく Visual Studio ではないか!
…ほどではないが端末アプリ作成なら十分すぎる機能だと思う。

インタラクティブシェルでテストして EmEdior で清書して又テストして…
を繰り返していた先週はいったいなんだったのだ!知らないって怖い。

C++/CLI で STL 2

@IT:特集:Visual C++ 2005 いままたC++が熱い!「C++/CLI」として大進化したVisual C++ 2005

少し気になって探してみたんだが…
んー昨日書いた STL/CLR はちょっと勘違いしていたみたい。

C++ は関数を抜けると勝手に確保したメモリは解放されるんだったよね。
つまり自動ガベージコレクションが起こるから意図的な gcnew は必要は無いんだ。
new が必要だったポインタをハンドル型に置き換えて gcnew すればいいってことなのねん。

それにネイティブと同じに書けると言っておいて例を出さないのは変かも。
ネイティブコードと混在できる C++/CLI だからこそのコードにしなきゃ意味はない。
つーことで書き換えた。

STL/CLR を使ってみる

しかし、んー困った。
STL/CLR って ostream_iterator や pair なんかは使えないのねん。

※追記@ pair はよくみたら cliext/utility に定義されていました…
※細かいコトはもう少し調べて後日。

コレで STL を名乗るのは…だがコンテナだけでも再現したのはスゲェのは認める。
全体像の一部だけ意図的に集中攻撃なんて民主党やマスゴミと同じウンコ以下だものね。

STL がどれほど議論と妥協(?)を重ねてきたのかを逆に思い知る、といえばカッチョイイかな?
.NET Framework 自体にもっと優秀な代替があるのにナニソレ?と言えれば更にカッチョイイ。

でも実際 FileStream クラスが ifstream と似通っているから次はこのネタにしようかなと。
Pet をはよ完成させろよ俺…

C++/CLI で STL

C++/CLI って STL が使えるんだね。
せっかくだから vector を使って簡単なコードを書いて試してみた。

STL/CLR を使ってみる

知らなかった、これは使えるかもしれない。
それより C++/CLI はコード補完がショボイのをなんとかしてくれい!
アンマネージドのコードはしかたがないけど C# との差がありすぎるぞこのやろう!

てか C++/CLI は WPF が使えないという致命的な欠点が…

BitmapEffect の負荷は高くない

せっかくなので BitmapEffect がどれだけ負荷が高いのか実験。
手持ちで一番巨大な 3072x2304px の画像を使って BlurBitmapEffect を掛けてみる。

2 ミリ秒…

BlurEffect にしてみる。

1 ミリ秒…

こりゃ差が全然解らないわけだわ。
この程度の BitmapEffect なら体感するような違いは無いってことなのね。
どういう使われ方を想定して BitmapEffect を無くす方向になったの?

解ったのは WPF で画像ビューアは一瞬で作れるということだけだった。
XAML に Image を配置して image1 という名前を付けたとして

private void Window_Drop(object sender, DragEventArgs e)
{
    string[] drags = e.Data.GetData(DataFormats.FileDrop) as string[];
    image1.Source = new BitmapImage(new Uri(drags[0]));
}

これだけ…後はプロパティを弄くるだけ。
せっかくだから何か作ろうか。

BitmapEffect プロパティが古い

SeeMe のソースを少し弄くって sp1 にしてから初コンパイルしたら…

「BitmapEffect プロパティが古い!」

と怒られた、なんやねんまったく。
てか俺って気がつくの遅!VS2008 を sp1 にしたのは何時や!

とにかく BitmapEffect は檄負荷だから近々無くなるので使うなということらしい。
BitmapEffect がハードウェア アクセラレーション化されたはずなんだけーがなぁ。

川西 裕幸のブログ : .NET Framework 3.5 SP1 Beta

しかたがない、更新しよう(そんな理由で…)

てゆーかオープンソースなんだから放置はマズイわな。

using System.Windows.Media.Effects;

img1.BitmapEffect = new BlurBitmapEffect();
↓
img1.Effect = new BlurEffect();

と Bitmap を取っ払って書き換えるだけでよさそうだが。
こうしないとアクセラレーションが使えないってことなのか?よく解らないけど。
負荷の違いは私の Athlon 64 x2 4200+ & AMD 690G のショボいマシンでも解らんぞ!

そういえば Drag and Drop での並べ替えをいいかげんに復活させなければ。
以前は全く見つからなかったがそろそろサンプルコードがネット上に上がっているかな?

CodeProject: Very Simple WPF Drag and Drop Sample without Win32 Calls. Free source code and programming help

CodeProject: Drag and Drop Items in a WPF ListView. Free source code and programming help

あぁ、これでなんとかなりそうだ。
ちなみに WindowsForm にあった listView1.GetItemAt みたいなメソッドは無い。
たかが ListViewItem 取得にこんな処理を自前で書けということらしい。

メソッドくらい用意してよまったく。
WPF がちっとも普及しない最大の理由はソレなんだから。

でも並べ替え自体は RemoveAt と Insert メソッドのみで簡単に終わる。
それもバインディングならもちろん元の ObservableCollection を並べ替えるだけ。
異様に簡単になったり異様に難しくなったり本当に面倒だなぁ WPF って奴は。