| 著作一覧 |
「NetBSDの将来」を読もうとしたら、妙にでかい広告が目に付く。
タダ という2字がどでかくブリンクするわけだ。
ふむふむ「タダででプログラムコードが手に入る」か。それはすばらしい。
「タダ」ってのは、つまり「タダ」のことだな。
なるほどIBMの広告か。さすが、オープンソフトに対して積極的にコミットしている企業だけのことはある広告であるな。
require 'rjb'
Toolkit = Rjb::import('java.awt.Toolkit')
DataFlavor = Rjb::import('java.awt.datatransfer.DataFlavor')
ImageIO = Rjb::import('javax.imageio.ImageIO')
JFile = Rjb::import('java.io.File')
clipboard = Toolkit.getDefaultToolkit().getSystemClipboard
begin
image = clipboard.getData(DataFlavor.imageFlavor)
rescue
puts 'no image in Clipboard'
exit 1
end
# select your favorite format
#file = JFile.new('/home/test/test.jpg')
#ImageIO.write(image, "jpeg", file)
#file = JFile.new('/home/test/test.bmp')
#ImageIO.write(image, "bmp", file)
file = JFile.new('/home/test/test.png')
ImageIO.write(image, "png", file)
問題は、{PrtSc}がきかないことだが、これはセキュリティ的な理由なのか、それともGinaあたりがからんでいるからなんだろうか?(でもC-M-Delとは違うような気がするので、本当にGinaがからんでいるかは知らない)
出ない。
ILdasmで見ると、リソース名の先頭に#が付加してる。なぜだ? (理由:文字列の区切りまでの長さがたまたま#と同じコードだったから)
ネームスペース名の長さとか、ネストのさせかたとかがからんでるのか?
と気づいたことをメモ。
追記:ネームスペース名を第1引数のアセンブリから取って前置する仕様らしい。これってとてもバカな仕様に見える。
例)KKK社のProductプロダクトのFooコンポーネントを作るとする。
VS2005でソリューションFooを作るとして、デフォルトでプロジェクトはFooになる。
そこで、Foo.csのネームスペースをKKK.Product.Fooにするとする。で、そこにFoo.bmpを作るわけですな。
当然のように、
namespace KKK.Product.Foo {
[ ToolboxBitmap(typeof(Foo), "Foo.bmp") ]
public class Foo {
...
と書く。
その結果、アセンブリには何が入るかというとFoo.Foo.bmpが作られるわけだ、自動的に。しかし、Foo.classといえば、KKK.Product.Foo.Fooになっている。
これでは探せない。
したがって、最初にプロジェクトを作る時点では、KKKと作ってそれから順にフォルダーを作ることになる。のか?
実験してみたら、そうじゃなかった。プロジェクト名でKKK.Product.Foo を入れれば良い。そうすると最初からのそのネームスペースを作る。
ということは、プロジェクトというのはネームスペース名で完全修飾したプロジェクト名を入力しなければならないということだ。ちょっと発想が逆のような気がするが、わかったから良しと。
ジェズイットを見習え |