.net」タグアーカイブ

Ubuntu で C# と C++

まてよ、mono の実行エンジンはインストールされているのかな?
とりあえず Vista でコンソールアプリを作り Ubuntu に持って行って実行してみる。
java じゃないんだからコンソールでないと動くはずがない。

まあ結果は動く、軽く調べるとどうやら実行エンジンは標準搭載らしい。
標準状態では C 言語さえコンパイルできないんだから C# は当然ムリか。

Mono 1.9.1のインストール – Programming/Mono – 総武ソフトウェア推進所

なんかイッパイ入れなきゃいけないみたいですけど…
そういえば Visual Studio 2008 のインストールは二時間掛かったっけか。
たった二分でインストールできた mono Develop で同等なわけがない。

特に Linux の場合 GUI アプリは gtk+ か Qt とか様々なわけで。
Windows 版のようにまとめて一気にインストールはそりゃ無謀かと納得。

2008-02-03 – ままならない日記

とりあえず mono-gmcs だけをインストール。
結果はコンパイルできた、よしよし、後は気が向いたら(ぉい!)

ちなみに、コード補完は C# でしかやってくれない。
思わず Ctrl+Space を押して SCIM を…略。

それより知らなかったのだがソースコードは UTF-8 で保存されるんだね。
ローケルのとうりになるのか、こりゃ日本語の扱いが更に面倒そう。
だけどコードページ 932 (つまり Shift-JIS)の呪縛が無いのは嬉しいね。

ということは…

やはり search.ini なんかも普通に char 配列で読み書きできるわな。
Firefox も Opera も設定が全部 UTF-8 なわけだよ、よく解った。
Windows も…バイナリ配布が普通の Windows では無理だと解っているけど。

C# テストが目的だったけど C++ コンパイラとして使うのも悪くないなコレ。
続く…かもしれない。

Ubuntu で C#

ふと気がついた。
C# を勉強しているんだから Ubuntu に Main Page – MonoDevelop を入れてみよう。
Linux ではどう動くか見てみたい。

Vista じゃないから遅いと思うけど…JAVA も死ぬほど遅いし。

一応書くと .NET Framuwork 技術基盤 CLI の Linux 実装の一つである。
追加と削除(Synaptic)に普通にあるのが怖い。

普通に日本語化されとりました、恐るべし。

あれ?C++ もコンパイルできるのだろうか。
試してみよう、VS と同じようにソリューションを作って雛形をとりあえず。

んでもってコンパイル…エラー。
何一つ詳細が出ない、VC++ のワケワカなのもイヤだが全く出ないのもどうかと。

Ubuntu日本語フォーラム / gccやbinutils, make のインストール

つまり Ubuntu デスクトップにははコンパイラもヘッダも入っていないってわけ…
make install の儀式をやらなくなったので気がつかなかった…
まあ気を取り直して…追加と削除に無いんですけど…

$ sudo apt-get install build-essential

と勘(ぅぉい!)でやってみたら普通にインストール完了。
見事 C/C++ はコンパイルできるようになりました。

普通に C/C++ 用の IDE としても使えるみたい、これは嬉しい。
何故もっと有名にならないの?

Linux のコンパイルは端末というイメージがあったので今まで無視していた。
だけどこんな使える IDE があるのなら少しやってみようかなと感じた。
Eclipse でできるのは知っているけど…遅いもん。

いよいよ肝心な C#。

今度は gmcs とやらが無いんかい…次回へ続く。

UNICODE にならん

pinvoke.net: StrCmpLogicalW (shlwapi)

むむっそうか、やっと自然順ソートで無限ループしてしまう問題が解決。

//[DllImport("shlwapi.dll")]  だけでは無限ループ
[DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]

ココが問題だったとは…なんつー解りにくい仕様。
C# 内部コードは UNICODE だから勝手に UNICODE で渡ると思い込んではダメだね。

やっとリストビュー部分の見た目だけが完成、ここまで長かったぞ!
ツリービューとアドレスバーで更に苦しみそうな気配。

Google のコードサーチで StringLogicalComparer なんてのも見つけたけどね。
C# コードのみで実装できるから魅力的なのであるが、こっちだと何故か順番が違う。

それにライセンスもイマイチ不明瞭だし、他人のコードを使うのは怖いというのもある。
今後ソースコードはすべてライセンス放棄で公開すると決めているのだから。

後 STL で作った IniFile8 クラスの C# 化もやっているんだが…
typedef の代わりは using で可能とかは検索では見つかったんだけーが…
コレでは型名として使えないようでインテリセンスに怒られまくり、まいった。

あぁ、ほとんど進まないまま連休が終わってしまった。
きっと Ubuntu が悪いんだ、又しても禁 Linux しなきゃいけないか?
でもブログアクセスのほとんどが Ubuntu ネタという現実はなんとも。

いっそ Ubuntu + Python + Qt とかに早めに移行したほうがよさげかも。
Palepoli が一段落したらやるつもりだったんだが…いつになるやら。

同一カラム表示

むむ、そうか。
StackPanel を使えば同じカラムに同時表示できるんだ。

<DataTemplate x:Key="tpl_name">
    <StackPanel Orientation="Horizontal">
        <Image Source="{Binding Path=image}"/>
        <TextBlock Text="{Binding Path=name}" HorizontalAlignment="Left" TextTrimming="CharacterEllipsis" />
    </StackPanel>
</DataTemplate>

のテンプレートを使って

<GridViewColumn Header="名前" CellTemplate="{StaticResource tpl_name}" />

で Explorer と同様の名前カラムに仕上がる。

後はアイコン取得と種類取得を行えばリストビュー部分は完成だ。
といってもインターフェイスだけだが、肝心の操作面はまだ何も…
そろそろツリー部分をやろう。
という間に日が変わった、明日も忙しいので寝なきゃ…先は長い。

Binding

あーやっと WPF の Binding っつーのが解ってきたぞと。

class ob
{
public BitmapImage bi{get;set;}
public string fName{get;set;}
public string nSize{get;set;}
}

とかクラスを作ってデータを詰め込んで listView に Add する。

ob ob1 = new ob();
//…略
listView1.Items.Add(ob1);

そのクラスメンバの名前をデータが入る場所に指定しておけばイイわけだ。
死ぬほど解りにくい…もの凄く限定された使い方しか理解していないし。

ファイルアイコンの取得はどうすればいいのだろう?
System.Drawing は使えないし方法が見つからない、あぁ初心者状態。

それよりスクリーンショットを見れば解るだろうけど、
WPF の ListView は選択なんかが Vista の Explorer と同じ描写になる。

前から不思議に思っていた、Vista の Explorer はチラつかない。
急激にリサイズしようがグルグル回そうが何をしようが全然チラツキしない。
ソレが気になるようになったので色々ファイラを探したがモレなくチラついた。

もしかして WPF もしくは DirectX 直使いで描写しているのかなと。
こうやって試したがやはりそういうことみたい、同じになるもの。

WinFX での描写はやはり WPF でやるべきだ。
結局は GDI 描写になる WindowsForm では何の意味もない。
この美しい描写をアピールすればもっと Vista を理解する人が増えるだろうに。

Visual Studio 2008 の本がボチボチ出てきたけど、どれも WindowsForm のまま…
そりゃ今までのスキルが生かせるけど時代に合わないんだってば!