2007/01/28

SQL ROW_NUMBER()

以前にOracleでselect実行時に行範囲をするのに Row_Number()を使ってたんですが、SQLServerだと簡単には出来なかったんですが、ちょっと勘違いして書いてしまったSQL文が通ってちょっとビックリしました。

SQLServer 2005から実装されのかなと。

MSDN Onlineで見たら、ページ指定のやり方のサンプルとかこんな感じで出てました。



DECLARE @pagenum AS INT, @pagesize AS INT
SET @pagenum = 2
SET @pagesize = 3
SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY score DESC, speaker) AS rownum,
speaker, track, score
FROM SpeakerStats) AS D
WHERE rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @pagenum*@pagesize
ORDER BY score DESC, speaker

なんか要望というか待望してたけど忘れた頃に使えるようになってて、ちょっと嬉しい感じ。

もうそんなにOracle使うこともないんですが、SQLServerも自分でインストールして設定・チューニングとかはもうツラくなってきてたりもします。自分の環境はVisual Studioと一緒にインストールされるDeveloperなバージョンで十分だし。

こんな感じなんでDB系のSpecialistとかの方とは仲良くしてたいです。

続きを読む・・

VS.PHP (2)

VS.PHP 使ってみてますが、なんかシックリきません。なんというか取り合えず使えるようにしましたってレベルから抜け出てない感じがしてます。

コード書いていて、Intellisenseはincludeしたオブジェクトに対しても使えたりできるので便利ではありますが、評価できるのはこの辺りぐらいかと。なんかインデントの処理とかも変な感じで、突然手前のタブに落とされたりするのが不快であったり。

PHPなんでコンパイルやBuildって概念は基本的にないんでしょうけど、C#なVB.NETなASP.NETがBuildにより実行前にコードの評価がしてもらえるのに比べて、実行時に初めてエラーとなる=ブラウザ上にエラーが表示ってのがもどかしい。

Debug面では変数のWatchに関しては、日本語が入るとArray系の展開はダメダメです。またImmediate Windowは使えない(機能しない)です。変数Watchに関してはAuto・Localも所詮はPHPなんでみたないな・・・。

それとコードのReleaseというかPublish、つまりはFTP等によるServer上へのコピー機能ぐらい付けてよと。

VS.PHPというよりもPHPやDBGなりの機能・仕様による制限的な面も大きいのでしょうが、あまり期待してはいけないのかなぁと。

続きを読む・・

2007/01/24

VS.PHP

VS.PHPを購入しようかなとか思って再度インストールしてチェックしてたんですが、まだちょっと時期が早かったみたいです。

VS.PHPはVisual Studio無しでも動くStand alone版(つまりIDEとしてのVisual Studioが同梱されてる)と、既存のVisual Studioの上で動くバージョンがあるのですが、どちらにしても基本的にはPHPを別途インストールしたりIISやApacheの設定やインストールが不要です。

Visual StudioでASP.Netの開発環境でもIISはOSにインストール必要が無く、仮にOSにIISがインストールされていてもデバッグ時にはそれとは別途に別インスタンスが別ポートで起動するのと同じです。VS.PHPの場合はApacheですけどね。つまりは既存環境の影響を及ぼす事なく開発が出来るので便利ではあります。

そんな感じなんで、VS.PHP下にはPHP4とPHP5双方がインストールされていてます。これは双方をConfiguration Managerで簡単に切り替えたり出来るんで便利なんですがPHPは5.2.0を使いたいってなった時に、ちょっと面倒というか今回はDBGが対応してないというかVS.PHPにImplementsされたDBGが5.2に対応してなくて、PHPだけ入れ替えてもDebugが出来ないという状況ですって事。

Release元が違うから、言語のVersionだけ上がっても他が追随するのにはちょっとLagがあるのは仕方ないので、もう少し待ってみる事にします。

それにしてもインストールされるディレクトリ名に空白が入ってたり、"PHP 5" とかってディレクトリ名は違和感あるんだよなぁ。

続きを読む・・

2007/01/23

via Proxy.

今日はフランスはパリ13区にお住まいの、Rachel Roblin(仮名)さんからの質問にお答えしたいと思います。

CSharpでWebBrowserControlを使った簡易なインターネットブラウザを作ってるんだけど、Proxyサーバーの設定方法がわからないんだ。

もちろん、Internet Explorerの設定を共有しているのは知ってるよ。だけど、FireFoxとIEの関係みたないに独立した設定がしたいんだ。

僕の作ったBrowserの為にIEの設定まで変更されてしまうのはどうかなと思うし。

不思議な事にControlのプロパティにもメゾッドにもそれらしき項目は無いんだよ。

何か方法はない?

こんなFrenchな人のFrankな質問メールですが、ちょっと調べてみましたが確かに該当するPropertyもMethodも無いんですね。

IEのコンポーネントになんて長いこと使ってなかったのですが、Urlmon.dllで確かって記憶が残ってました。実際に調べてみるとUrlMkSetSessionOptionとかで自プロセスで扱うコンポーネントのProxy設定とかが出来るようです。

C#はそれなりに便利にAPIを呼ぶ仕掛けが用意されているのですが、構造体とか入ってくるとちょっと難易度は上がります。というかかなり変態なコードになるので、通常のBusiness Logicなんか書いてあるファイルには書きたくない感じになります。

とりあえず、こんなコードを書いてみました。



using System;
using System.Runtime.InteropServices;

class urlmon
{
[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
private static extern int UrlMkSetSessionOption(
int dwOption, IntPtr pIpi, int nLength, int dwReserved);

public enum InternetOpenType: int{
INTERNET_OPEN_TYPE_PRECONFIG = 0 // use registry configuration
,INTERNET_OPEN_TYPE_DIRECT = 1 // direct to net
,INTERNET_OPEN_TYPE_PROXY = 3 // via named proxy
,INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4 // prevent using java/script/INS
}

private struct INTERNET_PROXY_INFO
{
public InternetOpenType dwAccessType;
public IntPtr proxy;
public IntPtr proxyBypass;
};

//
public static int InternetOptionProxy(InternetOpenType nOpenType)
{
return InternetOptionProxy(nOpenType,"","");
}

//
public static int InternetOptionProxy(InternetOpenType nOpenType
, string proxy, string proxyBypass)
{
const int INTERNET_OPTION_PROXY = 38;

INTERNET_PROXY_INFO ipi;
ipi.dwAccessType = nOpenType;
ipi.proxy = Marshal.StringToHGlobalAnsi(proxy);
ipi.proxyBypass = Marshal.StringToHGlobalAnsi(proxyBypass);

IntPtr pStruct = Marshal.AllocCoTaskMem(Marshal.SizeOf(ipi));
Marshal.StructureToPtr(ipi, pStruct, true);

return UrlMkSetSessionOption(INTERNET_OPTION_PROXY, pStruct, Marshal.SizeOf(ipi), 0);
}
}


クラス名とかはurlmon.dllを呼び出すコードを誰かが書き足してくれればという願いを込めて付けましたりしてますし、本来はPropertyとしてGet,Setを実装すべきだろうとは思いますが、自分で使わないのと説明がメインのコードなんで。

Function自体はstaticになっているので、以下のような感じでWebBrowserControlの貼ってあるFormのLoadイベントとかで呼び出せばいいんではないでしょうか。設定変更があるならば、その都度呼んでも良いと思いますし。

urlmon.InternetOptionProxy(urlmon.InternetOpenType.INTERNET_OPEN_TYPE_PROXY, "localhost:8080", "");

というわけでRachel 、また旨いワイン奢ってね。

続きを読む・・

2007/01/22

Google Adsense.

なにやらNHKでGoogleを特集した番組が放映されたようで、それに関しての質問というか話し相手になれと何故か海を越えて私の所に電話がきました。まさに今の時間帯に再放送でやっていて、それを見ながらです。

うちでも日本の自宅サーバー経由で日本のTVをリアルタイムで見れるようにしてるんですが、それとSkype使っての会話という、イケてるんだかダメなんだか良くわからない不思議なディスカッション(?)をしました。

これやると日本のサーバーからリアルタイムエンコード、こっちのクライアントまでVPN経由で転送されての再生になるので、若干のタイムラグがあるのが妙に気持ち悪かったりします。なんか先の内容を直前に振られるので、何かこっちが教えを受けてるような不思議な気分。

実際には質問というか相手方の疑問はSEO対策に関してなんで、そんな事に関してはそれこそGoogleで検索しろって話でもあったりして、番組見て金勘定始める前に内容を理解してよって突っ込んでみたり。

以前に通販サイトの立ち上げでお付き合いのあったクライアントの担当者さんなんですが、今は単なる飲み友達なんで真昼間から電話されたりしても困るんだよなとか思いつつも、日本のテレビ番組は見れるようにしていても、見るべきというか見ておきたい番組が中々探せないんでちょっと嬉しかったりもするんで一時間半ぐらい会話してました。

Officeで昼間からテレビ見ながら私用Skypeでしゃべりまくりとかって・・・ダメな奴じゃない。 その上Blog書いてるし・・。まぁWhite-Collar Exemption Ruleだし・・。

このページのGoogle Adsense、最近はもう英語の広告しか出てきませんね。まぁ実際に収入が得られるような事するには、ページの内容も一般消費者向けで、彼らが欲しがるような物に関するような内容にしないと効率悪くて駄目でしょうね。番組で出てきた携帯電話の彼なんて良い例ではないでしょうか。多分逆に検索回数上位のキーワードからコンテンツの内容を決めるような事するのが良いのではないかと。

でもGoogle Adsenseって何処まで伸びるんですかね? 不正クリックやその他のリスクもあると思うんですけどね。

続きを読む・・

2007/01/21

Six Degrees of Separations.

日本語だと「6次の隔たり」ってなるんですが、知り合いを6人以上介せば世界中の全ての人と知り合えるという説があります。

「友達の友達はみな友達だ、だから世界中みんな友達」みたいな話であって、この説の上で「俺の物は俺の物。お前の物は俺の物」みたいな事をすると、世界を支配できるじゃないって話は別にして、wikepediaにはこんな感じで書いてあります。
  • 例えば、43.15人の知り合いを持つ人間を6人介すと43.156=6454829873.820447015625 となり、地球の総人口6453581351人を上回る(2005年7月13日現在Census Bureau Home
    Page
    調べ)。つまり43.15人の知り合いを持つ人間は世界中の人間と6人を介して、間接的な知り合いであるという事になる。
  • また、22.42人の知り合いを持つ場合は、22.426=127002903.436222894144となり、日本の総人口126824166人(住民基本台帳に基づく人口・人口動態及び世帯数(2004年3月31日現在)調べ)を上回る。
  • ちなみに、日本の10代男子が携帯電話に登録している平均電話番号数は71.66である(博報堂生活総研)。
  • もちろん、誰も知り合いがいない人には何人仲介しても永遠に到達できないから、世界中の人間と知り合いになれるということではない

  • 直感的には信じがたい話ではありますが、いくつかの実証と合わせてWikipediaには書いてあります。まぁ検証するにしても、どの経路を辿るかって確率的な問題もありますので、私からある人に向かって検証ごとに毎回たどり着けるって話ではないでしょうし。


    SNSなんかはこの仮説が下地になっているとかとも書いてありますが、Web(各ページ)は何次の隔たりを持ってしてつながり得るんだろうかと考えてたりしたんで。

    たまにツリー上の相関図みたいなのを見かけたりしますが、今時はgoogle辺りを介してれば2~3回で辿りつけるよなと。

    だけど実際には読みたい情報を探すのには、検索条件を変えつつHitしたページをチェックしていくような事を何度も繰り返さねばなりません。上記に例えれば世界中の全ての人を知っているGoogleさんに尋ねてるんだけど、曖昧にしか表現できないから同姓とか同名の人に会って確認していってるみたいな感じかなと。

    誰かを探す場合は名前のみならず国籍・居住地・年齢とかその人を情報を追加することで、その精度上がるけど、Web上での検索も条件を細かくすることで精度は上がりますが、国籍・居住地のように明確な条件があまりない。全文検索に近いので、人に例えるならばDNAの適合を見てる感じかなと。

    そんな事を考えるとWebの各ページにタグ付けをすべきかなと。だけどSEOとか検索エンジンスパム みたいな話になって、所詮性善説な世界でしか成り立たないんだなとか今更にして思ってみたり。

    続きを読む・・

    2007/01/19

    Smart Phone.

    Smart Phone否定派な私ですが、S-XGEN にはちょっと惹かれる。まぁサイズとか重量が大きいので買うことはないでしょうけど、Gadgetとしてはイカスとか思ってみたり。こことかでFlashというかMovie見るとそのデカさというかダメ具合が伝わってきちゃったりしますし・・・。

    iPhoneなんかよりも、NokiaなInternet Tabletの方が方向性的には好きですし正しいと思うんですが、とりあえず一通り組み込んでみましたって感じのマニアック差が素敵なんて思ったり。

    今回のApple iPhoneの発表により、Smart Phoneな市場は活気づいて色々と出てきそうで楽しみですね。iPod後のPortable Music Player市場みたいな盛況が期待できるんじゃないかと。

    日本ではそろそろ携帯電話の新機種の発表時期らしいですが、Bluetoothの普及具合はどうなんでしょうか? PCとの連携やPDA用途ではなくても、車とか乗るときは本当に便利ですよ。登録してあればというか自分の車ならば、カバンでもポケットにでも入れて乗ればOKで、発着信含めて全てハンドル廻りとかとかでコントロールできますし、ハンズフリーも性能いいですから。同乗者に通話内容が全て聞こえるとかってのはちょっとアレですけど、ダイヤルするのも音声登録とか使えたりで何かEmerging Tchnologyって雰囲気というか未来感(?)

    音声認識技術というかVoice Commandって運転中は本当に便利です。出来ればHomeとかって言ったら、自宅まで自動運転してくれれば最高なんですけどね。

    続きを読む・・

    Google Adsense.

    暮れから年明けにかけて旅行したりしてたのもあり更新頻度が落ちていますが、それより最近表示されてるGoogle Adsenseの内容がイマイチで面白くない。

    面白いとかつまらないで評価したりするものではないのですが、自分の書いた内容に対して表示された広告を見るのが楽しみだったんですが、なんか英単語をアルファベットで書いてる為か(当たり前なんですか・・)、表示されるのは英語圏の広告ばかりになってきました。

    それは別に構わないんですが、例えばAccess 2007 に関して書いたこの記事に対して英語圏の記事がメインで表示されるのはどうなんだろうかと。「Static」とか「TeamによるCollaborationであり」程度しか怪しい(?)表記はしていないんだけど・・。

    SubFormをサブフォームって表現したり、Grid・ListBoxをグリッド・リストボックスって表記すべきなんでしょうかね? だけど、プログラム上では日本語表記するわけではないしなとか思ってるんですが。 大体にしてアクセス 二〇〇七とかって表記はあり得ないですし(! 。 Excel, Access あたりは完全にAlphabet表記が日本でもDefaultじゃないかと思うんですがどうなんでしょう?

    よく見たら、Access 2007 のページはAmazonまで洋書選んで表示されてますね。

    日本語のカタカナ表記ってなんか最近凄く違和感あるんで、指が上手に動いてくれないんでキーボードのでの入力はツライってのが現状です。

    続きを読む・・

    2007/01/17

    White-Collar Exemption.

    なんか日本のニュースを見ていると、ホワイトカラー エグゼンプションって言葉が出てきたけど、意味が理解できなかったです。

    日常的に(怪しい)英語を使っててるんですが、エグゼンプション???? って感じ。

    免税(Exemption from tax)とかで債務免除(Exemption of debt)とかで受ける側が利益を得るみたいなイメージがある単語だったんで、なんかWhite Collarな人が優遇されるみたいな感じがしたりしますんで。 なんというか権利って感じかな。

    でも実態は享受できる権利みたいなのではなくて、雇用者側にとってのメリットを考慮したものなんですよね?

    そりゃあ私の労働条件も年俸制だし残業代なんてもらった事もないですし、つまりはThe white-collar exemption systemなりwhite-collar exemption rulesの中で働いてるわけでボケる必要もない話なんですが、white-collar exemptionだけ抜き出されてもと。

    The labor system exempts white-collar employees from current work-hour and overtime pay regulation. って感じなんだけど、それを単にホワイトカラーエグゼンプションとかって表記するのは乱暴すぎるんじゃないかと。

    続きを読む・・

    2007/01/10

    iPhone

    AppleからiPhone が発表されましたけと、PDA一体型なMobile否定派な私としては・・・。

    今はNokia Nokia 6151にiPAQ h4155という組み合わせで使ってます。Mobileの新しさに比べてiPAQの古さがちょっとなんですが、サイズと重さが丁度よくて中々乗り換えられないんですよね。BluetoothとWifi内蔵なんで。

    一体型の何が困るって、電池の消耗が激しいって事です。今は3G携帯でも電池の持ちが良くなってますし、ましてやGSM圏内では普段はWCDMAなんて切ってますから、従来のGSM携帯と同様のレベルの待ちうけ時間が望めるんですが、これにPDA機能が付いてると電車内とかでも使うとあっという間にLow Batteryなんて事になりかねません。

    そしてNokiaやSony Erricsonなどのメジャー何処の普通の携帯電話であれば、そこらで充電器が手に入りますがPDA内蔵型だとそうはいかない・・・。本体買ったら予備の充電器は必需で、できればUSB経由でチャージできるケーブルを常時カバンに入れておかないと。

    PDAは使えなくても電話は必要ってケースは凄く多いですし、他人の電話を借りようと思っても、Address Bookも電池切れで見れないなんて事態は悲しすぎます。

    それとプライベートはテブラな事も多いので、携帯電話としてはポケットに入れて邪魔にならないサイズがいいです。 通話機能とSMSが使えれば十分ですから。いくらSIM Cardで携帯電話機の変更が簡単といっても、そんなに頻繁にやる気はNothingですし。

    他の会社でもいいから、iPAQ 4155レベルのサイズ・重量のBluetooth・Wifi内蔵のPDA出してよとか思うんですがね。

    続きを読む・・

    2007/01/07

    What console do you have?

    どんなコンソール持ってるの? って職場で聞かれましたが、これってゲーム機は何持ってるって意味なんです。

    10年前ぐらい前の私ならば、発売されてる全てを所有していたかも知れませんが、今は全く持ってないです。それと日本人は関係ないと思うし。確かにWiiもPS3も日本製というか日本の会社が発売してるけどね。

    振り返るとPS2の時点で購入意欲はもうすっかり減退していたようで、当時の同居人へのご機嫌取りとして発売から随分してから購入した記憶があります。本当に自身で待ち望んで買ってたのってSFCとかMegaDriveまでだったような気もします。

    Gameは一時期にPCでのフライトシミュレーションというかコンバットなのに嵌って、コントローラーとか一通り揃えたりしてました。ThurustMaster社のFCS(Flight Control System)・WCS(Wepon Control System)・RudderPedalと。ゲーム名とかもう忘れてしまいましたけど・・。

    なんというかコントローラーまでを含めた操作感みたいなのが好きで、その後暫くしてからはFeedBack付きのMircosoftとかLogitechのコントローラーで遊んでました。

    つまりは、その手があまりサポートされていないゲーム専用コンソール機にはあまり触手が伸びなくなっていったんじゃないかと、今更ながらに思います。

    だからといってWiiが欲しいかといえばNonであるのは、やっぱりあの操作系では平和なゲームしか出来ないだろうって感じてるあたりですかね。両手にコントローラ持って殴りまくりとか疲れそうですし。

    携帯ゲーム機も、そこまでしてゲームしたくもないので、技術的な興味はあれど購入にはいたらずです。


    Nintendo DSとか、開発を完全に開放してくれれば欲しいGadgetなんですけどね。

    続きを読む・・

    2007/01/05

    FON

    なんかFONが日本でもそれなりに話題のようですが、これってどうなんでしょうね。みんな安全に利用してるんですかね?

    アクセスポイントの接続経路で考えると、設置者はパケット覗き放題って感じなんですけど問題ないんでしょうかと。会社でWiFiに対する話をした時にもした事なんですが、生なPOP3と非SSLなWeb Mailの利用は絶対に止めな事にはと思うんですが。

    この辺り、PCというかOS側のSecurity設定で制限かけられるといいんですが、そんな機能はありもしませんので個々が注意するしかありません。

    なんか勘違いしてる人もいて、WEPとかWPAで暗号化されてればOKじゃないとかって話をする人がいたりしますが、大きな勘違いです。人様の用意したアクセスポイントを使うのですが、そのアクセスポイントまでの経路を暗号化してくれるWEPなりWPAでは意味がないんです。アクセスポイントの上流は平文ですからSniffするならそこでしますから。

    さらには最近はSwitching Hubがほとんどだからとかって屁理屈捏ねる人がいたりして、もうやってられない・・・・・・・・。

    ブラウザの設定に、HTTPS経由以外での接続のパスワード入力を禁止するようなオプションがあれば、これをネットワーク接続アプリで切り替えてとか出来てちょっとは安心な設定を他の方にも提供できるんですけどね。ブラウザでパスワードを記憶する機能を付いてたりするんだから、こんな機能があってもいいと思う。

    別にFONが悪いわけでなく、むしろFONそのものは素晴らしいと思うけど、セキュリティに関する意識は別途に高める必要があるのでは。

    続きを読む・・