« 2008年3月 | トップページ | 2008年5月 »

2008/04/30

[ ニッキ ] 腱鞘炎再発

引越しでどたばたしていましたが、少しずつ落ち着いてきました。

それに代わって今度は腱鞘炎に悩まされていますが・・・_| ̄|○

とりあえず気になったことをメモ。

P2P の分散ストレージがついにでてきました。

わたしは過去に P2P 分散ストレージの構想で IPA 未踏ユースに応募したものの蹴られてそこでとまってしまっているのですが、id:viver 氏は id:nyaxt 氏と 2人でさっくり作ってしまったようです。すごい人もいるものですね。

ヨドバシの無線 LAN サービスは WirelessGate ヨドバシオリジナルプランというそうで、EMOBILE の契約者は月額 280 円でサービスが受けられるとのこと。サービス開始は 4/29。早速契約してきます。

| | コメント (0) | トラックバック (0)

2008/04/23

SkyDrive の制限

Microsoft が公開しているオンラインストレージサービス SkyDrive を利用して2週間とちょっと。使い始めた頃は「これは便利」と思ったのだが、面倒なことも見えてきた。そのひとつがファイルサイズの上限だ。

アップロードできるファイルサイズは 50MB が上限となっているようだが、この上限値はどこから導かれたものなのだろうか。

エラーメッセージを読むと「著作権」という時代錯誤なものが挙げられているが、ファイルサイズを制限すれば著作権は守られるのだろうか。そう考えているのだとしたら、率直に言って馬鹿としか思えない。

わたしが今日アップロードしようとしたものは、プログラミング言語 Erlang のインストールファイル ( サイズ 51.6MB ) だ。

Erlang はオープンソースであり、BitTorrent で配布されていることからもわかるように、Erlang PUBLIC LICENSE に従う限り変更および再配布に制限はないはずだ。なんら違法ではない。

ファイルサイズが 50 MB を超えるものなんて、探せばいくらでもあるだろう。例えば、開発者であれば誰でも知っているであろう Eclipse。Eclipse Classic のパッケージサイズは 141MB だし、Java 開発を得意とする Eclipse IDE for Java Developers は 79MB, C/C++ 開発を得意とする Eclipse IDE for C/C++ Developsers ですら 60MB ある。

VMware Player 用の仮想イメージは、そのほとんどが 50MB を超える。

そして Visual Studio 2008 Express Edition のオフラインインストール用ファイルは 800MB だ ( わたしは Express は使っていないが、ダウンロード時には再配布などに関するライセンスの制限は表示されなかった )。

繰り返しになるが、ファイルサイズが 50MB を超えかつ配布に制限のないモノなんていくらでもあるのだ。

一方で著作権法に抵触してしまうようなファイルでも、面倒な作業になってしまうが、「ファイルを分割する」という方法でこの制限をすり抜けられる。アナログ回線時代からのネットユーザであればファイルを分割する方法なんぞいくらでも知っているだろう。

ファイルサイズ 50MB という制限で、著作権を守る効果があるとは到底思えない。

この制限は著作権を守る効果があるとは考えがたく、一般ユーザにいらない手間をかけさせるだけだ。さっさと改善してもらいたいと思う。

| | コメント (0) | トラックバック (0)

2008/04/13

[ ニッキ ] 肺を持たない両生類

なんとインドネシアで肺を持たないカエルが発見されたそうな。
カエルの学名は Barbourula kalimantanensis

「肺のないカエル」は2007年8月、インドネシア・カリマンタン島(Kalimantan、ボルネオ島)で発見された。研究チームを率いるシンガポール国立大学(National University of Singapore)のデービッド・ビックフォード(David Bickford)氏はAFPのインタビューに応じ、解剖の結果、完全な皮膚呼吸をしていることがわかったと語った。

( インドネシアで発見の「肺のないカエル」、進化論に新たな光, AFP BB News, 2008/04/11 )

わたしが興味を持っているのは、このカエルの発生過程。それから幼生時の生態と成長過程。

いったいどうなっているんだろうか。

| | コメント (0) | トラックバック (0)

2008/04/11

[ .NET / C# ] cryptographic library

個人的に .NET で暗号化方式を実装してみたくなったのでメモ。

| | コメント (0) | トラックバック (0)

2008/04/09

[ C#3.0 ] ラムダ式の戻り値の型指定はできない? - そんなわけないでしょ

CodeZine に .NET3.5 の導入記事があったので読んでみたのだが、そりゃ違うだろってところがあったのでそれについて。

ラムダ式とは、ある処理を行い、単一の結果を返却する名前を持たないメソッドを定義する機能です。このメソッドはデリゲート型として利用することができ、定義したラムダ式を変数に代入しておくことも可能です。ラムダ式を利用した場合、戻り値の型を明示的に指定することはできませんが、処理内容から戻り値の型は自動的に型推論されます。

( とことん理解する .NET Framework3.5, WINGS プロジェクト りばてぃ / FUJIKO / ナオキ 著, 2008/03/07 )

違うところは以下の2点

  • 名前を持たないメソッドを定義する機能
  • 戻り値の型を明示的に指定することはできません

まず、C# においては「名前を持たないメソッドを定義する機能」という記述は正確ではない。正確には「名前を持たないメソッドも定義できる機能」ということになる。実際、リンク先の例ではメソッドに func という名前が付いている。

次に「戻り値の型を明示的に指定することはできない」というのも大ウソ。型推論に任せることもできるが、プログラマが戻り値を指定することもちゃんとできる。

名前を持たず、かつ戻り値の型も明示した場合の例は↓のようになる。


using System;

class SampleClass{
    static int Main(){
        System.Console.Write(
            ((Func< int, int, bool >)((i, j) => i == j))( 1, 3 )
        );
        return 0;
    }
}

この例では Func< int, int, bool > の部分で引数と戻り値の型を指定している。続く((i, j) => i == j) と合わせることで引数 i, j は int 型であり、戻り値は bool 型であることがわかる。そして、定義した関数にすぐさま2つの引数を渡している。定義している関数は完全な無名なので、後でなにか識別子名を利用してこの関数を呼び出すということはできない。

まだ理解が怪しいのだが、実際には ((i, j) => i == j) を Func< int, int, bool > という型にキャストすることになるようだ。

さて、ラムダ式に渡されている引数を "hoge" と "piyo" にして再度コンパイルしてみてほしい。コンパイルエラーになるはずだ。わたしの環境では以下のエラーが表示された。

C:\dev>csc lambda_test.cs
Microsoft (R) Visual C# 2008 Compiler version 3.5.21022.8
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.

lambda_test.cs(6,13): error CS1594: Delegate 'System.Func<int,int,bool>' has
        some invalid arguments
lambda_test.cs(6,59): error CS1503: Argument '1': cannot convert from 'string'
        to 'int'
lambda_test.cs(6,67): error CS1503: Argument '2': cannot convert from 'string'
        to 'int'

見てのとおり型が一致しないというエラーだ。エラーメッセージを要約すると「第一引数と第二引数は int 型が指定されているが string 型が渡されてきた。これは無効な引数だぞ」というわけだ。

では次に Func< int, int, bool > を Func< int, int, int > に置き換えてコンパイルしてみてほしい。やはりコンパイルエラーになると思う。たとえばこんなエラーが表示される。

C:\dev>csc lambda_test.cs
Microsoft (R) Visual C# 2008 Compiler version 3.5.21022.8
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.

lambda_test.cs(6,48): error CS0029: Cannot implicitly convert type 'bool' to
        'int'
lambda_test.cs(6,48): error CS1662: Cannot convert lambda expression to delegate
        type 'System.Func<int,int,int>' because some of the return types in the
        block are not implicitly convertible to the delegate return type

こちらもやはり「型が一致しない」というエラーだ。それもちゃんと「戻り値の型が一致しない」という内容になっている。

というように完全にユーザ定義の識別子名を付けないメソッド定義も可能だし、戻り値とか引数の型を指定することも可能なのだ。

| | コメント (0) | トラックバック (0)

2008/04/06

[ ニッキ ] USB メモリ死亡

Blog の原稿を保存しておいた USB メモリが、引越し中に壊れたようです。

いろいろと復旧を試みたものの、ドライブとして認識されることすらなく復旧は無理ぽ orz

普段使うツール類とか、頻繁に参照する e-book, 読もうと思っていた論文、Bookmark なども入っていたのですが、論文と e-book は SkyDrive に移行していたのと分散保存していたので被害はほぼなし。Bookmark は 9割は del.cio.us なのでこっちもたいした被害はなし。ツールはまた集めればいいかな。

バックアップが無かった Blog 原稿がかなり痛い・・・

些細なデータでもバックアップは必須だなと再度実感 orz

| | コメント (0) | トラックバック (0)

« 2008年3月 | トップページ | 2008年5月 »