ベイダー日記 RSSフィード Twitter

archive(過去ログ一覧)

2011-11-12

プログラミングへの失われた情熱。再び火をつけるには?

プログラミングへの失われた情熱。再び火をつけるには? | スラッシュドット・ジャパン デベロッパー

この動画を見る、とか。

D

個人的には、何かすごい成果物とか、新しい言語だとか、面白い問題だとかを目にしたときに、やる気が沸いてきたりすることがある。いやまだまだ、冷めたりしていないですけどね。でも、ただ仕事しているだけだとなんだか落ち着いてしまうので、たまに刺激を受けられる方が良いかもしれない。

プログラミングというより、元スレは仕事に対してモチベーションがないという話みたいだから、そこに書いてあるとおり転職なりプライベートで楽しむのがいいのかなあ。

前にこんなこと書いたけど、プログラミングそのものに対して何も感じられなくなったら、その時が定年なのかもしれません。生涯現役でいられるよう、ニコニコ動画ばかり見てないで勉強しないといけませんね……。

2011-11-08

C# 3.0(以降)で自動プロパティにブレークポイントを設定する

C# 3.0から自動プロパティが実装され、フィールドの定義を省略できるようになりました。これはとても便利なのですが、getter/setterを書かないため、ブレークポイントが張れないという問題がありました。

通常のプロパティでは下図のようにget/set内でブレークポイントを設定すると、プロパティが参照された時にプログラムの実行を中断することができます。

f:id:wata_d:20111108235246p:image

しかし、自動プロパティでは同様のことができません(と思っていました。ググっても出てこないし)。

f:id:wata_d:20111108235248p:image

まあいざとなれば必要なときだけフィールド追加すればいいか……と思っていたのですが、暇だったので実験してみたら関数ブレークポイントでならちゃんと止まる事がわかりました。関数ブレークポイントはメインメニューの[デバッグ]-[ブレークポイントの作成]-[関数でブレーク]もしくはブレークポイントウィンドウの[新規作成]ボタンで追加することができます。

関数ブレークポイントは[ブレークポイントの作成]ダイアログで関数名を入力するとその関数にブレークポイントを設定してくれるというものですが、ここにプロパティの名前を入れるとプロパティにブレークポイントを設定してくれます。

f:id:wata_d:20111108235249p:image

ブレークポイントを設定してからデバッグ実行すると、そのプロパティを参照するとブレークがかかるようになります。

f:id:wata_d:20111108235251p:image

プロパティ名を設定するとget/set両方で止まりますが、set時にだけ止めたい、という場合は「Person.set_Age」という風に指定します(getterの場合は「Person.get_Age」)。これはILDASMなどを使うと確認できますが、プロパティのアクセサメソッドです。

ちなみにはまりポイントとしてブレークポイントの作成画面にある[関数名の確認にIntelliSenseを利用する]にチェックが入っていると、アクセサメソッドを指定したときに警告メッセージが表示されますが、これは無視して構いません。できないのか、と諦めかけつつダメ元で実行したらちゃんと認識してくれました。

f:id:wata_d:20111108235253p:image

set_Ageにブレークポイントを設定してからデバッグ実行すると、getでは止まらずsetでだけ止めることができます。

f:id:wata_d:20111108235254p:image

少し面倒ですがデバッグ時に使えるかもしれませんね。

2011-10-26

Processingで画像の切り取りをしてみた

とある画像の一部を切り抜いて別のファイルに保存したい、という時に、1ファイルならドローツールでも使って手動でやればいいのですが、ファイルが複数あったので自動化したくなりました。

で、C#Ruby辺りでやろうかと最初は思ったのだけれどC#は大仰だしRubyで画像処理はやったことがないしどうもライブラリ入れなきゃいけないらしい。と、そうだ、Processingなんてどうだろう? Processingも未経験だけどリファレンス見た感じでは画像ファイルを扱うこともできるようだし。

ということでやってみました。

// 画像ファイルを読み込んで
PImage img = loadImage("before.jpg");
// 切り取って
img = img.get(100, 100, 50, 50);
// 切り取った部分の画像を別名で保存
img.save("after.jpg");

こりゃ簡単。複数の画像ファイルに対して同じようにしたかったので、ループで回して目的を達成することができました。

1000 | 00 |
2005 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 06 | 07 | 08 | 09 | 10 | 11 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 09 | 10 | 11 |
2010 | 01 | 02 | 04 | 05 | 09 | 10 | 11 |
2011 | 01 | 02 | 03 | 05 | 06 | 10 | 11 |