「iPodってiTunesユーザー向けじゃない?」という思い込みがあってなかなか手を出せない。mp3の再生ハードとしてはとってもよく出来てる(ビジュアルなど含む)とは思うけど、KbMedia Playerユーザーとしては少々不満かな。
KbMedia Playerは乗り換えることのできないソフトの一つ。動作が軽かったり、インタフェースが使いやすかったりといったフリーソフトらしい利点は当然のことながら、驚くほどに再生フォーマットが広い。ゲーム音楽などのコアなフォーマットを楽しむには絶好のソフト。というかこのソフト以外の選択肢は知らないし、また必要もない。Kobarinさんには本当に感謝。
現実的な線ではWindows Mobileとの組み合わせでなんとかならないかなと。でも、別にWindows Mobileは要らないんだな。
kbPodがあればそれで良い。
Visual C#
Microsoftっぽい。惜しいって感じ。
いや、テキストエディタでC#を書くことを思うと非常に便利。ビルドは一発だし、クラスやメンバーは自動で探してくれるし、勿論コード補完もあるし。あと、デバッグなんかも簡単だし、エラー内容も教えてくれるし。
不満なのはカスタマイズ性の低さと便利機能不足。
Microsoftの製品はほとんど全てだけど、思った場所に設定がない。オプションだかツールだか色々探してやっと見つけることがほとんど。外人(英語)には直感的な配置になってるんだろうか。
やっと探して見つけても少ししか設定の幅がないことが多い。Visual C#の場合はエディタの設定が細かく出来ないのが致命的。一番重要なところなのに。
あとは単純に便利な機能が少ない。自動でusingを書いてくれたり(2005では出来るらしい)、アクセサを自動生成したりEclipseユーザーには当たり前って機能が見当たらない。
そう考えるとEclipseは文句なかった。動作が重いくらい(これがEclipseの致命傷か)。
てか、未だにキーマクロとかだとサクラエディタや秀丸エディタの方が使いやすいってどうなんだ。適材適所ってことなんだろうけどエディタなんだから。
コメントを書かない
みんながコメントを書かない環境。これこそ望ましいと思う。
/** * */
とか
//
とか書かない。言語がC#なので
/// <summary> /// HelloWorld /// </summary>
みたいなのくらいあっても良さそうなものだけど、書かない。
昨日作ったクラスは本当に一言一句のコメントも書かなかった。別に周りの人が書いていないから真似をするということではなく、必要ないから書かない。
実際に全く新たに見たコード(C#自体も初めてだったけど)だった訳だけど、困らなかった。何故なら解るように組まれているから。ややこしいロジックを書いた時、コメントで補うよりも簡素なプログラムに直す方が余程メリットが大きい。プログラマの土俵はあくまでプログラム(国語じゃなくて)なのだから。
あと、実際に無コメントの環境になって感じたのが誤解しないこと。コメントはよく騙される。コメントの説明が下手で誤解することもあるけれど、コードの改訂に対してコメントが改訂されないというケースが非常に多かったように思う。
未だにクラス名をよくわからないIDや連番で管理するプロジェクトがあるけど、そういう命名をしたがる動機が全然解らない。天文学的な数のクラス数を想定しているのだろうか。Javaならパッケージ、C#ならネームスペースがあって名前の衝突もそれ程心配しなくていいのに。
いつもコメントをいっぱい書いている人は「書かない」にチャレンジしてみるといいと思う。そしたら自然と
if (foo.equals("0")) {
} else if (foo.equals("1")) {
} else if (foo.equals("2")) {
} else if (foo.equals("3")) {
} else if (foo.equals("4")) {
}
というような意味不明な数字とかを使わないようになるので。
XSL 基本
ヘッダを書く。
<?xml version="1.0" encoding="UTF-8" ?>
最上位のタグを配置。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> </xsl:stylesheet>
XML側のルートタグの出力を定義する。別の定義(テンプレート)を埋め込みたい時は<xsl:apply-templates />を挿入しておく。
<xsl:template match="/"> <html> <head> <title>HelloWorld</title> </head> <body> <xsl:apply-templates /> </body> </html> </xsl:template>
<xsl:apply-templates />で適用されるテンプレートを書く。
<xsl:template match="message[@name='hello']"> <xsl:value-of select="." /> </xsl:template>
上のようにするとルート直下の<message>タグのname属性”hello”のinnerTextが配置される。
XMLのルートタグ以下に<message>タグしかなければこれでもいいけれど、いっぱいタグがあると全部出力されてしまう。回避方法は
<xsl:template match="/"> <html> <head> <title>HelloWorld</title> </head> <body> <xsl:apply-templates select="message[@name='hello']" /> </body> </html> </xsl:template>
というように<xsl:apply-templates />のselect属性で指定する。
<img>や<a>タグのようなinnerTextではなく属性値に設定したい場合は
<xsl:template match="message[@name='src']"> <img> <xsl:attribute name="src"><xsl:value-of select="." /></xsl:attribute> </img> </xsl:template>
というようにattributeで設定する。
XMLのネスト先を指定する時は
<xsl:template match="message/foo/hoge">
というようにそのままスラッシュ区切りで降りていけば指定できる。
C# メモ 1
通常のSystem.out(Javaでいう)は
System.Console.WriteLine("HelloWorld");
Web上だとコンソール出力が使えないので
System.Diagnostics.Debug.WriteLine("HelloWorld");
とする。但しデバッグのプロセスにアタッチしていることが条件。
Dispose()が必要な場合は
try {
Hoge foo = {コネクション系};
// 処理
} finally {
foo.Dispose();
}
みたいなJavaっぽい記述も出来るけれど、
using (Hoge foo = {コネクション系}) { // 処理 }
の方がスマート。勝手にDisposeしてくれる。
JavaでThreadと言えば「extends Thread」か「implements Runnable」だけど、C#ではThreadクラスに実行するメソッドを渡す。コードはこんな感じ。
using System;
using System.Threading;
class HelloWorld
{
private static void hello()
{
Console.WriteLine("HelloWorld");
}
public static void Main()
{
Thread t = new Thread( new ThreadStart(hello) );
t.Start();
}
}
いっぱいマルチスレッドしたときに処理を待つには、それらのスレッドを
t.Join();
とかすると。何かメソッドの参照を渡すってのがJavaScriptみたいだ。
XMLもJavaScriptっぽい。というかDOM基準なので当然か。
XmlDocument xml = new XmlDocument();
というのがJavaScriptのdocumentと同じような印象。
XmlElement div = xml.CreateElement("div"); XmlElement span = xml.CreateElement("span"); span.InnerText = "HelloWorld"; span.SetAttribute("id", "foo"); div.AppendChild(span);
というような感じでXMLの構築が可能。
C# 開始
- 作者: ハーバートシルト,矢嶋聡,Herbert Schildt,スリーエーシステムズ
- 出版社/メーカー: 翔泳社
- 発売日: 2002/04/01
- メディア: 単行本
- クリック: 1回
- この商品を含むブログ (10件) を見る
机に無造作に到着した本。
今後しばらくはC#漬けになりそう。Visual Studioを使うのもほぼ初めて。2005のBetaを少し触ったことあるくらいなので。Eclipseよりいいのかな。