Home

爆裂!C#野郎

お引っ越ししました

  • Posted by:
  • 2015年4月28日 19:37

すごく久しぶりの投稿ですが、ブログを引っ越しました。

http://libertyboy.blog.jp

どうぞよろしくおねがいします。

IETester 0.3.3

「IETester」バージョン0.3.3が5月11日にリリース IE8正式版に対応、各機能もバージョンアップ:CodeZine

 IE5.5、IE6、IE7、IE8という4つの異なるバージョンのIE(Internet Explorer)で、ウェブページのレイアウトを一気に確認できる便利なツール「IETester」のバージョン0.3.3が、5月11日にリリースされた。

 今回のバージョンは、今年3月にリリースされたIE8正式版に対応しており、IE5.5の透過サポートの追加や、window.externalオブジェクトの実装など、各機能もバージョンアップした。動作環境は、IE7がインストールされたWindows XPまたはWindows Vista。Windows 7での動作についてはフォーラムで議論されている。詳細は以下を参照のこと。

なんだかんだでブラウザシェアの1位はIEな訳で。
でも、IEはバージョン毎に違いが大きいので、開発者泣かせでもあります。
こういうツールがあると便利ですね。

「Windows 7」バージョン構成が明らかに

  • Posted by:
  • 2009年2月 4日 13:59
  • Windows

ベータ版が好評な「Windows 7」ですが、販売戦略が見えてきたようです。

「Windows 7」バージョン構成が明らかに--一般向けは「Home Premium」と「Professional」

 「Windows Vista」には、あまりにも多くのバージョンが用意されたとの批判もあったにもかかわらず、Microsoftは、「Windows 7」においても、ちょうど同じ程度のエディションを提供する計画を進めている。

 Microsoftは、少なくとも6つの異なるバージョンで、Windows 7の提供を予定しているものの、米国内で販売されるほとんどすべてのPCには、「Home Premium」または「Professional」のいずれかが搭載されることになるという。

 Windows部門を統括するシニアバイスプレジデントのBill Veghte氏は、「主に2つのバージョンを集中的に提供する計画である」と、インタビューで語っており、Home PremiumとProfessionalの2バージョンが、Windows 7の販売の80%を占めることになると示唆している。

 とはいえ、Windows 7には、「Starter」、「Home Basic」、「Home Premium」、「Professional」、「Enterprise」、「Ultimate」という6バージョンが用意される予定である。Vistaとは異なり、Home Basicバージョンの販売は、エマージング市場のみに限定されることになる。

 では、Microsoftが、(Home PremiumとProfessionalという)2バージョンを集中的に販売する方針であるのならば、なぜこうした数多くの他のバージョンで、いわば混乱を招くようなことをするのであろうか?Veghte氏は、Windowsの販売対象エリアが、非常に多岐に及んでいるとの事実に言及している。

 たとえば、エマージング市場向けに、Microsoftは低価格バージョンを用意する必要がある。その結果、Microsoftは、大幅に提供機能を限定したStarterバージョンや、同様の目的を持ちつつも、よりフルバージョンに近い提供機能が用意されたHome Basicバージョンの提供を計画している。ボリュームライセンス購入を進める顧客に対しては、暗号化が行える「BitLocker」機能や、いくつか他の企業向けにのみ提供される機能を搭載した、Enterpriseバージョンが用意されることになる。これらの全機能の利用を望む顧客に対しては、Ultimateバージョンも提供される予定である。

 とはいえ、Microsoftが、(Vistaで行ったのと)まったく同じことをWindows 7でも実施しようとしているという意味ではない。Veghte氏は、同社が、Vistaを通じて、いくつかの貴重な教訓を学んだと述べている。

 Vistaの提供パッケージに関する特定の批判の中には、「Home Premium」バージョンで提供されながらも、より高価な「Vista Business」バージョンでは提供されなかった機能があるとの事実が挙げられる。Windows 7においては、より高価な各バージョンで、他の(下位)バージョンに含まれる全機能が提供されることになる。たとえば、Windows 7の「Professional」バージョンには、Windows Media Centerも搭載される。

 また、Microsoftは、あるバージョンから別のバージョンへの移行を、より容易に実現可能としている。Vistaにおいても、Microsoftは、特別なアップグレードディスクを用いることで、あるバージョンから別のバージョンへのアップグレードが手軽に行えることを明らかにしていた。Windows 7では、多くのバージョンが用意されるものの、実のところ、(OSの)コードあるいはイメージには、一連の同じ構成が採用されている。つまり、Windows 7の全機能がPC上にロードされ、アップグレード用のプロダクトキーのみで、ロックが解除されるのだ。

 特定のバージョンに関して、さらに説明を加えるならば、Windows 7の「Starter」バージョンには、新しいタスクバーを始めとする、Windows 7でカギとなる機能がいくつか含まれるが、サムネイルのライブプレビュー機能などは搭載されない。また、同時に起動できるアプリケーションの数は、3個に限定されることになり、画面解像度やプロセッサのサポート数などにも制限がかかる。

 エマージング市場のみで販売される「Home Basic」バージョンでは、画面解像度やプロセッサのサポート数、同時起動可能なアプリケーション数などの制限が撤廃され、インターネット接続の共有や、新たなセンサおよび地域に応じた提供機能のサポートが追加される。しかしながら、Home Basicバージョンには、マルチタッチのサポートや、「Aero」インターフェースなどが搭載されない。DVD再生機能やWindows Media Centerに関しても、StarterおよびHome Basicでは提供が見送られ、「Home Premium」や「Professional」バージョンからの提供となる。

 プレゼンテーションモードやドメインへの参加機能などは、Professionalバージョンに限って提供される機能の例に挙げられており、他の一般家庭ユーザー向けのバージョンには搭載されない。最後になるが、DirectAccessやBitLocker、仮想ハードドライブからの起動といった、いくつかの特定の機能を利用するには、「Enterprise」または「Ultimate」バージョンが必要となっている。

 その批判が正当かどうかは別にして、こうして数多くのバージョン(世界各地で独占禁止法違反を監視する当局からの要請に応じ、他のバージョンが用意されることもある)が、Windows 7で提供されることに関しては、やはりMicrosoftに対して、厳しい非難が浴びせられる結果を招き、おそらくはAppleの関係者からも、いくらかシニカルな反応を招きかねないだろう。

 だが、(Windowsにおける)ある程度のカスタマイゼーションは、確かに必要なものである。結局のところ、Appleは、(OSに)単一のバージョンのみが用意されると誇るかもしれないが、同社が提供するMac OSがターゲットとするのは、ちょうどWindowsでは、Home Premiumバージョンの提供セグメントにも位置づけられる、とりわけハイエンドのコンシューマー市場に限られるからだ。

 しかしながら、いまやWindows 7では、Professionalバージョンでも、Windows Media Centerを始めとする、数々のコンシューマー向けの機能が搭載されるようになっており、Ultimateバージョンを提供する意義は薄れかけているようでもある。

Vistaの構成をベースにしていますが、「Business」バージョンの失敗など、反省すべき点は反省したようです。

私はVistaを気に入っているし、使用中のアプリが動くかという問題もありますので、すぐには移行しませんが、非常に興味深い構成だと思います。
ユーザーは自分で選んだものには納得する傾向がありますので、少ないより多い方がいいのですが、多すぎても選択しにくくなるため、ちょうどいいバランスではないでしょうか。

個人使用では「Home Basic」がベストな選択肢なのかな。

Windows 7β版、一般公開を2月10日まで延長

  • Posted by:
  • 2009年1月28日 10:36
  • Windows

巷では動きが軽いと好評なようで、ダウンロードが順調に伸びているようです。
私はVistaをとても気に入っているので、特に必要性も無いのですが、やはり技術者としては一度入れてみないといけないかも。

Windows 7β版、一般公開を2月10日まで延長

 米Microsoftは1月23日、「Windows 7」β版の一般公開を2月10日まで延長することを明らかにした。

 同社はβ版を一般公開した当初、1月24日にダウンロード提供を終了するとしていたが、終了日を2月10日に変更した。ダウンロードプロセスを開始したがまだ完了していないユーザーは、2月12日までに完了しなければならない。

 具体的な予定としては、1月27日にWindows 7ページに公開終了が近づいているという告知を掲載。2月10日にWindows 7の新規ダウンロードを終了、12日にはダウンロードプロセスを完了できなくなる。Windows 7のプロダクトキーは12日以降も入手可能。

 一般ユーザー向けのダウンロードは終了するが、MSDNやTechNetに加入している開発者への提供は続ける。


元々は、ダウンロード数にも制限があったんですよね。
予想以上の反響ということでしょうか。

マイクロソフト、「Windows 7」ベータ版のダウンロード制限を撤廃

 「Windows 7」のパブリックベータリリースが、「理想的な」スタートを切れなかったことを認めつつ、Microsoftは、約2週間に渡って、同ソフトウェアのダウンロード件数を250万に制限するとの措置を撤廃する方針を明らかにした。

 WindowsのコミュニケーションマネージャーであるBrandon LeBlanc氏は、米国時間1月10日に、次のように同社の公式ブログで発表した。

 (Windows 7への)非常に高い需要があることを受けて、ダウンロード環境は理想的なものとなっていなかったが、われわれは、こうした状況を考慮して、より良いエクスペリエンスの提供を確実なものとするべく、必要な措置を講じることにした。Windows 7のベータ版をチェックしてみたいというリクエストが多いため、(1月24日までの)今後2週間は、パブリックベータ版のダウンロードを先着250万件に限るとの方針を撤廃することに決定した。この期間中は、たとえダウンロード件数が250万を超えたとしても、自由にベータ版へアクセス可能となる。

Higher-Order Perl

  • Posted by:
  • 2008年12月10日 18:41
  • perl

perlネタですが。

Higher-Order Perl

「Higher-Order Perl」というPerlの書籍がPDFでダウンロードできます。
592ページもあり、読み応え満点ですが、洋書なので全部英語です。

ファイルに暗号が掛かっていないので、ソースコードをコピーできるのは素敵です。

新しいASP.NETのチャート・コントロール:<asp:chart runat="server"/>

  • Posted by:
  • 2008年12月 3日 20:22
  • ASP.NET

@ITで興味深い記事を見つけました。
ASP.NETで使える、チャート描画コントロールです。

新しいASP.NETのチャート・コントロール:<asp:chart runat="server"/>

 Microsoftは素晴らしくて新しいASP.NET用のサーバ・コントロール - <asp:chart /> - を先日リリースしました。これは無償で、ASP.NET 3.5上で使用でき、ブラウザでリッチなチャートを利用可能にします。

 インストールすると、<asp:chart />コントロールはツールボックスの“データ”タブの下に表示され、標準のサーバ・コントロールとして、すべてのASP.NETページ上で簡単に宣言できます。

 <asp:chart />はリッチなチャート - 円グラフ、エリア・グラフ、範囲グラフ、点グラフ、円状グラフ、積層型グラフ、データ分布図、AJAX対応グラフ、ドーナツ・グラフなど - を各種サポートしています。コントロールの宣言内で静的にチャートのデータを宣言することも、動的にそれをデータバインドしてひも付けることもできます。実行時には、サーバ・コントロールは画像を生成し(例えば.PNGファイルなど)、それは、<asp:chart />コントロールから出力される<img/>要素を使用して、クライアントのHTMLページから参照されます。サーバ・コントロールはチャート画像をキャッシュするか、またはそれを永続的にディスクに保存する機能をサポートしています。ほかのサーバ・ソフトウェアをインストールする必要はなく、標準のASP.NETで動作します。


 <asp:chart />の使用方法を理解するために、Microsoft Chart Controls サンプル・プロジェクトのダウンロードをお勧めします。これにはローカルで実行可能な200を超えるASP.NETのサンプル・ページが含まれています。実際の動きを確認するにはVS 2008でWebプロジェクトを開いて起動するだけです。そして、それぞれの.aspxソースを開けば実装方法が確認できます。


動作サンプルを見てみると、実に美しく表示されています。
ローソクチャートやボリンジャーバンドなんかも簡単に書けるようで、チャートコントロールとしては非常に多機能・高性能に見えます。
これが無償で使えるのですが、10万円程度でも結構売れそうな気がします。

LAMP環境構築

  • Posted by:
  • 2008年11月 9日 01:28
  • LAMP

Linux、Apache、MySql、PHPの環境が作りたいということで構築メモ

Linuxはイチから入れると面倒なので、Virtual Appliance MarketplaceでVMWareのイメージ(Ubuntu)をダウンロードしました。

残りのApache、MySql、PHPは、XAMPPでまとめて入れてしまうのが楽です。
ダウンロードは↓
apache friends - very easy apache, mysql, php and perl installation without hassles


XAMPPは、Windows用もありますが、他にもVertrigoServというものもあるようです。
Apache/PHP/MySQLなどをWindowsに一発でインストールできる「VertrigoServ」

開発はWindowsで、ということであれば、VertrigoServという選択肢もありな気がします。
試しに入れてみましたが、PHP Extensionsも簡単に設定でき、使い勝手はとても良いです。

痒いところに手が届いた Windows 7

  • Posted by:
  • 2008年11月 8日 23:55
  • Windows

WindowsVistaは、機能を詰め込んだものの、ユーザーのニーズに合っていなかったため、なかなか売れませんでしたが、Windows 7はなかなか良さそうです。

[GIGAZINE]Vistaの次のウインドウズ「Windows 7」の新機能をスクリーンショット付きで大解説、地味に改善されていることが明らかに
[livedoor ニュース]Vistaの次のウインドウズ「Windows 7」の新機能をスクリーンショット付きで大解説、地味に改善されていることが明らかに

Vistaがボコボコに叩かれている間に着実に開発が続けられていた「Windows 7」ですが、そのスクリーンショットがついに初披露されました。タスクバーの高さが若干高くなり、Vistaにあったサイドバーは消滅、ウィジェットは好きな位置に置くのが基本となったようです。

そのほかにも変更点がかなり多く、現在のVistaのダメなところを改良して改善しているのが伺えます。例えばあのウザいUACの表示強度が変更できたり、ウィジェットのアクセス方法が改善されたり、タスクトレイの改良、電卓の強化などなど。

とのこと。
確かに、新しい機能というよりは、これまで使いにくいとされてきた機能をもう一度洗いなおしたという感じです。
悪名高いUACが見直されてきたのは評価に値すると思います。

地味な変更点では、ペイントや電卓といった、これまで放置されてきたツールまでしっかり見直されている点からも、利便性の向上に力を入れていることが伺えます。


[GIGAZINE]「Windows 7」が実際に動作している様子のムービーを公開、思っているよりも動きはスムーズ

ムービーで確認できる機能で印象的なのが、ウインドウをマウスでつかんでデスクトップの上部にぶつけることによって、ウインドウが最大化するというもの。さらにウィンドウのタイトルバーをドラッグして、デスクトップの左右端にぶつけることで、縦の長さいっぱいにウインドウが広がるのが確認できます。これによって、2つのウインドウを並べて内容を見比べるといったことが簡単にできるようになっているというわけ。

どれほどのスペックのPCを使っているのか分かりませんが、かなり快適に動作している印象があります。
Vistaと違ってガジェットの位置はどこでも良さそうです。

2つのウインドウを簡単に並べるシーンにはちょっと感動。
今までは手動で地道にやってたので、これは便利です。

またベータ版が公開されてませんので、これからどうなるのか分かりませんが、かなり期待できそうです。

DB2のインストール

弁慶フレームワークにDB2を対応させるため、環境構築をしています。

インストールしたのは、DB2 Express-C 9.5 for Windowsで、使用制限があるものの、無償で利用することができ、商用利用も可能とのことです。

インストール方法については、 [DB2 Express-C 9.5 for Windows クイックインストール] を参考にしました。

.NETから利用するために、Providerが欲しいところですが、標準インストールで入るようです。

テーブル一覧、フィールド一覧の取得方法は、また後ほど書きます。

メルマガ発行は5/19に延期しました

  • Posted by:
  • 2008年5月 8日 14:20

既に2か月分ほど原稿を書いてあるので、いつでも発行できるのですが...

まぐまぐによると、発行するメールマガジンが、ウィークリーまぐまぐで紹介されるのが、5/12とのことでした。
その後、3~4日ほどで読者が急増する傾向があるようです。

メルマガは、最初のスタートダッシュが成功すると、新着ランキングに載ったりして、順調に成長できるケースが多いので、勝手ながら19日に延期した次第です。

12日の発行を楽しみにしていた方、どうもすみません。

ブログで告知したおかげもあって、読者が少しずつ増えており、大変嬉しく思っております。



メールマガジンを発行します

  • Posted by:
  • 2008年5月 4日 00:07

いつもブログを見ていただき、ありがとうございます。
今回は告知なんですが、是非ともご協力いただけますよう、お願い申し上げます。

2008/5/12(月)に、以下の2つのメールマガジンを創刊することになりました。
既にまぐまぐさんの審査も合格し、あとは12日を待つだけとなりました。

無料で購読できますので、少しでも興味がありましたら、ご購読いただけると嬉しいです。

いずれも、私がエンジニアやコンサルタントとして経験してきたこと、勉強してきたことなどを、初心者の方でも分かりやすいように説明しています。
ただ説明するだけでなく、問題提起やクイズも取り上げていきますので、読んでいるだけでパワーアップできること間違いなしです。

Obsolete属性

  • Posted by:
  • 2008年4月14日 17:52
  • C#.NET

.NETを使っていると、たまに「古いバージョンなので推奨しません」みたいな警告が出るのですが、同様のことを Obsolete属性で実現できるようです。
一応の互換性は保ちたいものの、徐々に新モジュールに置き換えていきたいときなどに便利ですね。

Obsolete (C# プログラミング ガイド)

Obsolete 属性によって、プログラム要素が、使用を推奨されない要素としてマークされます。要素に Obsolete とマークするたびに、属性の設定内容に応じて、警告やエラーが生成されます。次に例を示します。

コードのコピー
[System.Obsolete("use class B")]
class A
{
public void Method() { }
}
class B
{
[System.Obsolete("use NewMethod", true)]
public void OldMethod() { }
public void NewMethod() { }
}

この例で、Obsolete 属性は A クラスと B.OldMethod メソッドに適用されています。B.OldMethod に適用されている属性のコンストラクタで、2 つ目の引数が true に設定されているため、このメソッドを使用するとコンパイラ エラーになり、A クラスを使用すると単に警告が生成されます。一方で、B.NewMethod を呼び出しても警告やエラーは生成されません。

属性のコンストラクタで、1 つ目の引数として指定された文字列は、警告またはエラーの一部に表示されます。たとえば、次のコードを前の定義と共に使用すると、2 つの警告と 1 つのエラーが生成されます。

コードのコピー
// Generates 2 warnings:
A a = new A();
// Generate no errors or warnings:
B b = new B();
b.NewMethod();
// Generates an error, terminating compilation:
b.OldMethod();

A クラスでは 2 つの警告が生成されます。1 つはクラス参照の宣言、もう 1 つはクラスのコンストラクタで生成されます。

Obsolete 属性は引数なしでも使用できますが、その項目の使用が推奨されない理由と代わりに使用する項目を引数に指定することをお勧めします。

Obsolete 属性は、シングルユースの属性です。属性を使用できる任意の要素に適用できます。Obsolete は、ObsoleteAttribute のエイリアスです。


PostSharpでアスペクト指向

.NETでアスペクト指向となると、RealProxyで面倒なコードを書かないといけないので、何もそこまでという気持ちになるんですが、オープンソースのツールで便利なものがありましたので紹介します。

PostSharp - Bringing AOP to .NET

この記事を書いている段階では、バージョン1.0.8が最新なのですが、.NET Framework 2.0、3.0、3.5に対応しています。
PostSharpが面白いところは、なんといっても、実行時ではなくビルド時にWeavingしている点でしょう。

使い方はとても簡単で、インストーラでインストールしたのち、PostSharp.Laosと、PostSharp.Publicを参照設定します。
あとは、Attributeクラスを作成し、属性でWeavingするだけなので、とても簡単でした。

詳しい使い方やサンプルは、近いうちに公開します。

アライアンスと合従連衡

  • Posted by:
  • 2008年3月18日 00:47
  • 雑談

最初にお願いがあります。
このエントリを読んで、少しでも思うところがあったら、コメントなりトラックバックを頂けないでしょうか。
今読んでいるのが、エントリ投稿日より月日が経過していても構いません。
また、リンク・引用大歓迎なので、気に入ったらどんどん紹介していただけると幸いです。


合従連衡とは

四字熟語では、「合従連衡」と書きますが、元々は「合従」と「連衡」の2つの言葉が合わさって出来た言葉であり、司馬遷の記した「史記」に登場する言葉です。

舞台は中国の戦国時代後半、100ほどあった国の多くは滅亡し、7国(秦・韓・魏・趙・楚・燕・斉)になっていました。
中でも西に位置する秦は急速に力をつけ、東の6国の脅威となっていました。
そこで、蘇秦という人物が登場します。蘇秦は6国を渡り歩き、秦の脅威に対抗するために同盟を結ぶことを提案します。
この同盟は秦より東の国が縦に合わさった同盟であることから、「合従」と言われています。

その後、秦に張儀という人物が現れます。
張儀は、蘇秦亡き後、6国と個別に同盟関係を結び、合従の切り崩しを図ります。
この同盟は秦が東に向かって同盟を結んでいくことから、「連衡」と言われています。
秦はこの連衡によって、敵対する勢力を滅ぼし、同盟国には臣下の礼を取らせることで、最終的に全土統一に成功するのです。

「合従」と「連衡」は、同じ同盟という手法を使っていますが、「合従」は平等な同盟であったのに対し、「連衡」は屈服に近い同盟という違いがある点に注目してください。


アライアンス

システム開発業界では、多重請負が常識的に行われています。
法律的に問題があるケースも多いので、よく話題になっているのですが、本当に問題なのはそこではないのです。
先の「合従連衡」を例に考えると分かるとおり、多重請負とは「連衡」であり、強者がその力でもって、弱者に臣下の礼を取らせることなのです。
請負の上位に位置する会社は、仕事を回せばどんどん儲かります。

一方で、そのしわ寄せは当然の事ながら、下位の会社に行くことは容易に想像できます。
「連衡」は強者の戦略であるため、弱者が選択すると、秦に滅ぼされた6国のような運命を辿ることが考えられます。
実際、下位の会社は大変です。赤字であっても、やらないよりマシということで、涙を呑んで受注しているケースもあります。
残業が多く、主要メンバーは負担が増えるため、職場を去っていき、得るものは少なく、失うものが多くなります。

そこで、弱者連合である「合従」という戦略を取ることが考えられます。
システム開発の世界でも、「アライアンス」という言葉があり、考え方は「合従」に似ています。
会社だけでなく、実力のある個人までを含んだ同盟を結成し、利益は事前に決めた分担比率に基づいて分配されるという仕組みです。

メリットとしては、

  • 各社の得意分野を生かしやすく、知識や技術の補完ができる。

  • 多重請負で見られがちな、終わったら解散ではなく、同じメンバーと仕事を続けることが会社の垣根を越えてできるようになる。

  • 同盟を組むことで競合関係が無くなるだけでなく、より力のある会社と競争することができるようになる。

  • 責任も分担していくため、必然的に品質も向上する。

  • 同盟会社と共に作業をすることで、新たな技術を学ぶ機会が増える。

逆にデメリットとして、

  • 同じ価値観、同じ方向性が無いと、様々な局面で揉め事が起きる。

  • お互いに信頼することが重要になる。裏切り者が出ると空中分解の危険性がある。

  • 利益の配分比率に、透明性が必要になる。

  • 遠隔地になるケースでは、コミュニケーションを取るのが難しくなる。

  • 脱退時、特定メンバーのトラブル時に利益の再配分が必要になる。

といった点が挙げられると思います。
合従連衡の故事を見れば、弱者の戦略であることは明白なのですが、実際には上手くいかないケースの方が多いようです。
蘇秦が成立させた「合従」も、張儀の「連衡」の前に崩壊しています。
「合従」が崩壊した理由は、上記に挙げたデメリットそのもので、自国の利益だけを考え、秦と手を結ぶ国が出てきたことが原因です。

だとすると、アライアンスを成功させるためには、強固な信頼作りと他のメンバーに迷惑を掛けない仕組みが重要だと考えられます。
例えば、

  • 作業を下請会社に再発注してはならない。

  • アライアンスには、アライアンスリーダーが必要で、受注者がアライアンスリーダーとなる。
    アライアンスリーダーは合資会社の形態になる場合もある。

  • アライアンスリーダーは、顧客との窓口業務、最終責任者の役目があり、一定の利益分配比率を持つ。

  • 利益を分配するのであるから、利益が無ければ(顧客が受け入れ拒否した等)当然利益が配分されない。

  • 利益の分配比率は最初に合議によって決定する。
    金額ではなく、分配比率であるところがポイント。

  • 自己都合で途中脱退したり、連絡が取れなかったときは利益分配比率を0とする。(他のメンバーでその分を再分配する)

  • 事故や病気などで途中脱退する場合は、そのときの進捗状態によって利益分配比率を変更する。
    それに加え、いかなる事情であっても利益分配比率を一定比率下げるペナルティを課す。

  • 誰かの担当業務が技術力の不足によって実現困難になったり、大幅な進捗遅れが想定されるときには、他のメンバーが手伝う代わりにと利益分配比率を貰うことができる。


などというのは、いかがでしょうか。

多重請負が主流の業界構造は、いろいろ言われてもなかなか変わらないでしょう。
誰かが変えてくれるのを待つのではなく、戦略を持って変えていく気持ちが大事なのではないでしょうか。
このエントリは、現時点では私の思いつきでしかないのですが、いずれは様々な会社や個人さんとアライアンスが組めたらいいなと思うのです。

【SQLServer】N件目からM件目のレコードを取得する

SQLServer2005以降で、ROW_NUMBER を使ってみる

SELECT 
    * 
FROM 
    (
    SELECT 
        ROW_NUMBER() OVER(ORDER BY OrderID, ProductID) AS ROWNUM, 
        * 
    FROM 
        "Order Details Extended" 
    ) A 
WHERE 
    ROWNUM BETWEEN 11 AND 20 
ORDER BY 
    OrderID, 
    ProductID
;

SQLは簡潔明瞭ですが、サブクエリで全件返しているので、効率が良くないかもしれません。


TOP を組み合わせてみる

SELECT TOP 10 
    * 
FROM 
    "Order Details Extended" A 
WHERE 
    NOT EXISTS (
    SELECT 
        * 
    FROM 
        (
        SELECT TOP 10
            * 
        FROM 
            "Order Details Extended" 
        ) B 
    WHERE 
        A.OrderID = B.OrderID 
        AND A.ProductID = B.ProductID
    ) 
ORDER BY 
    OrderID, 
    ProductID
;

NOT EXISTSを使っているので、少し分かりにくいかと思いますが、要約すると、
先頭10件を除いた集合の中から、さらに先頭の10件を返す
ということになります。

【SQLServer】OracleのROWNUMを実装する(SQLServer2000以前)

SQLServer2000のときは、現在のレコードより前に来るべき行の COUNT(*)+1 を取ることで、ROWNUMの代わりとすることができますが、ソートキーが複数のときは、少し面倒くさいので例にしてみます。
テスト用データベースは、Northwindを使用しています。
SQLそのものは基本的な構文だけで書けますので、Oracle、PostgreSQL、MySQL、DB2などでも同様に実装できると思います。(文字列変換等は変えないとダメだけど)


1.ソートキー毎に合算していく

SELECT 
    (
    SELECT 
        COUNT(*) 
    FROM 
        "Order Details Extended" A 
    WHERE 
        A.OrderID < B.OrderID 
    ) + 
    (
    SELECT 
        COUNT(*) 
    FROM 
        "Order Details Extended" A 
    WHERE 
        A.OrderID = B.OrderID 
        AND A.ProductID < B.ProductID 
    ) + 1 AS ROWNUM, 
    B.* 
FROM 
    "Order Details Extended" B 
ORDER BY 
    B.OrderID, 
    B.ProductID
;

フィールド数が多くなるほどサブクエリが増えるので、面倒くさくなります。
これを応用すると、あるグループごとに連番を振ることも可能ですね。

SELECT 
    (
    SELECT 
        COUNT(*) + 1 
    FROM 
        "Order Details Extended" A 
    WHERE 
        A.OrderID = B.OrderID 
        AND A.ProductID < B.ProductID 
    ) AS GROUP_NUM, 
    B.* 
FROM 
    "Order Details Extended" B 
ORDER BY 
    B.OrderID, 
    B.ProductID
;


2.文字列として結合し、1つのフィールド扱いにする

SELECT 
    (
    SELECT 
        COUNT(*) + 1 
    FROM 
        "Order Details Extended" A 
    WHERE 
        RIGHT('00000' + CONVERT(VARCHAR, A.OrderID), 5) + RIGHT('000' + CONVERT(VARCHAR, A.ProductID), 3) < RIGHT('00000' + CONVERT(VARCHAR, B.OrderID), 5) + RIGHT('000' + CONVERT(VARCHAR, B.ProductID), 3) 
    ) AS ROWNUM, 
    B.* 
FROM 
    "Order Details Extended" B 
ORDER BY 
    B.OrderID, 
    B.ProductID
;

Int型なので、一旦文字列にしています。もちろん、元々文字列ならそのまま足せるので、ラクチンです。
Int型でも、A.OrderID * 1000 + A.ProductID のように、桁を揃えてしまう手もありますが、IntとCharが混在していることもありますので、上記のような例にしてあります。

【SQLServer】OracleのROWNUMを実装する(SQLServer2005以降)

SQLServer2005以降のときは、ROW_NUMBER 関数が用意されているので、これを利用します。
テスト用データベースは、Northwindを使用しています。

SELECT 
    ROW_NUMBER() OVER(ORDER BY OrderID, ProductID) AS ROWNUM, 
    * 
FROM 
    "Order Details Extended" 
ORDER BY 
    OrderID, 
    ProductID
;

【SQLServer】サンプルデータベースのインストール

SQLServer2005に、サンプルデータベースを入れてみました。

昔なつかしのNorthwind、pubsはSQLServer2000用とのことでしたが、全く問題なくインストールできました。
2005のExpressEdition、SQLServer2008では未確認です。誰かフォローください。
(ExpressEditionに入れることは可能なようです)

Northwind and pubs Sample Databases for SQL Server 2000

  1. ダウンロードページから、SQL2000SampleDb.msi をダウンロードします。
  2. SQL2000SampleDb.msi をダブルクリックしてサンプル データベース スクリプトを展開(C:\Program Files\SQL Server 2000 Sample Databases)します。
  3. コマンドプロンプトを起動します。
  4. osql -E -i "C:\SQL Server 2000 Sample Databases\instnwnd.sql" を実行します。(Northwind)
  5. osql -E -i "C:\SQL Server 2000 Sample Databases\instpubs.sql" を実行します。(Pubs)

SQLServer2005のAdventureWorksデータベースはこちら
Microsoft SQL Server Product Samples: Database - Release: SQL Server 2005 SP2a

SQLServer2008のAdventureWorksデータベースはこちら
Microsoft SQL Server Product Samples: Database - Release: SQL Server 2008 February CTP

New API Viewer

  • Posted by:
  • 2008年3月10日 23:30
  • VB.NET

.NETネタではないのですが、いまだにVB6.0で開発していたり、.NETにマイグレーションしたりするときに、役に立つかもしれないツールです。

New API Viewer 1.0.2

何かというと、Win32APIのAPIビューアとのことです。
VisualBasic6.0にも付いてきていますが、誤植が多く評判が良くないので、こちらを使ってみると良いかもしれません。

でも、スクリーンショットを見ると、Any型が出てきていますね。
マイグレーション用としての用途はイマイチかもしれません。

Internet Explorer 8 Beta 1

マイクロソフト、Internet Explorer 8 Beta 1リリース

 マイクロソフトは「Internet Explorer 8 Beta 1」をリリースした。IE8のWebサイトから無償でダウンロードできる。開発者向けリリースとなっており、一般ユーザーの使用は推奨されていない。

 IE8では新機能として「Activities」「WebSlices」が搭載された。 ActivitiesはWebサイトの文字を反転表示させ、右クリックすることで、地図ページや辞書ページ、SNSサイトなどを使って簡易検索できる機能。検索結果は小さなウィンドウで表示され、さらにクリックすることでWebサイトにアクセスすることができる。「WebSlices」はWebページの情報を切り取り、メモのようにブックマークしておき、いつでも表示させられる機能となっている。

 IE8正式版ではCSS 2.1をサポートすることを目標としており、この機能はBeta 2で盛り込まれる見込み。またHTML5への対応、JavaScriptの高速化などが予定されている。


マイクロソフト、IE 8の消費者向けベータは今夏を予定
マイクロソフト、MIX08で「IE8」をデモ--ベータ版もリリース

 ラスベガス発--ブラウザ「Internet Explorer(IE)8」は現在、誰でもダウンロードできるようになったが、このリリースはウェブ開発者向けに用意されている。しかし、この夏にリリースが予定されている2番目のベータは、広い人々を対象とする、とMicrosoftのブラウザ担当上級幹部がCNET News.comに述べた。

 ゼネラルマネージャーを務めるDean Hachamovitch氏は、米国時間3月5日にリリースされたBeta 1について、「それはパブリック版だ」と述べ、「Microsoft.comから入手可能だ。だれでもダウンロードできる」と説明した。

 Web Slicesのような機能は消費者好みかもしれないが、「(現行の)ベータは開発者向けとなっている」(Hachamovitch氏)

 Microsoftは、IE 8正式版のリリースがいつかを明言していない。また、Hachamovitch氏は、同ブラウザのリリースが同社次期OSの「Windows 7」と同時期になるかについても、語ることを拒否している。同氏は、XP版IE 7が公開されたのはWindows Vistaの前なので、技術的には可能だと語るにとどめた。

 IE 7ベータの場合同様に、テスト版IE 8をインストールする場合、現行のブラウザを置き換える必要がある。

 IE 8ベータは、64ビット版と32版のWindows VistaとWindows Vista SP1、Windows XP Service Pack2、Windows Server 2003および2008で動作する。

 Hachamovitch氏によると、Microsoftは同ブラウザの設計において、さらなる互換性を得ながら機能を追加するための方法を見つけようとしているという。後者の部分では、同氏は「Activities」として知られている消費者向け機能を紹介した。同機能では、文字列の一部を選択して、例えば、Dictionary.comで調べたり、MicrosoftやGoogleのサービスで地図検索したりすることができる。

思ったより早く、IE8のベータ版が登場したようです。
まだまだ不具合も多そうなので、夏にリリースされる、ベータ2までは静観しようと思います。

Index of all entries

Home

Search
Feeds
Tag Cloud
Recommend

SQLパズル 第2版 プログラミングが変わる書き方/考え方
SQLパズル 第2版 プログラミングが変わる書き方/考え方

ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系
ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系

ITアーキテクト vol.1
ITアーキテクト vol.1

オブジェクト指向における再利用のためのデザインパターン
オブジェクト指向における再利用のためのデザインパターン

増補改訂版 Java言語で学ぶデザインパターン入門
増補改訂版 Java言語で学ぶデザインパターン入門

増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編
増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編

J2EEデザインパターン
J2EEデザインパターン

アンチパターン―ソフトウェア危篤患者の救出
アンチパターン―ソフトウェア危篤患者の救出

世界でいちばん簡単なネットワークのe本―ネットワークとTCP/IPの基本と考え方がわかる本
世界でいちばん簡単なネットワークのe本―ネットワークとTCP/IPの基本と考え方がわかる本

Return to page top