2007/02/10

Access2007を評価せねばと。

Accessは2.0の頃から使い始めたような気がしますが、アプリケーションとしてのMicrosoft AccessというよりもMDBファイルをDAO(Database Access Object) 経由なりで利用していたことの方がメインではありました。主にVBから使ってましたし、AccessはVBからのOLE経由でReport(帳票)出力用として使う事が殆どでしたし。

どうもAccessのFormやコードしてもVBとの微妙な違いというか違和感から避けていた面もありますし、アプリケーションの実行ファイルとして捕らえた場合、実行するたびにサイズ・更新日時の変わってしまう事ってどうなの? とか思いもありましたし。

SDKだかDevelopment Kitみたいなのを使うとVSS(Visual Source Safe)使ってソースコードのRevision管理も出来るのですが、制約が多すぎたりしてましたし。

そんな感じであまり無条件にAccess推奨したりは出来ないんですが、環境としては興味深くもあり開発の補助ツールとしてとかプロトタイピング的に使うには凄く便利で気に入ってもいます。また顧客持込や他社や他部署で作成されたAccess Applicationを引き継いでいたりもしますので、それなりには使えるというか、ある程度しっかりと使えないと困るって事もあります。

なので本格的にSpecialistという程使いこなしているわけではないですが、そろそろ顧客環境のVersion Upも検討しなければならいなですし、尋ねられる機会も増えてきましたので細かな所を含めて見ていこうかと思います。

来週ぐらいから適度にやっていけたらとか思っています。

でもAccessだけをVersion Upってわけには行かずMicrosoft Office 全体でのUpgradeって費用対効果的にはどうなのよって疑問もあったり・・・・。

続きを読む・・

2007/02/08

Microsoft Office 2007

Office2007に関して新機能を調べる程に、個人環境では不要だなと思うようになってきています。

やはりMicrosoft OfficeってShare Point Serverを立ててTeamで利用するってのが前提というか、Microsoft自身がそのような方向性を目指しているんだなぁと。

Office Application市場そのものが、Compatibilityのある他プロダクトの隆盛もあり個人向けのPCにまで、有償で高価なOffice SuiteがPre Installなんて今後は続かないのでしょうし。

後はどのタイミングで、どのメーカーが最初に英断を下して別のOffice Suite ProductをPre Installしてくるかって所ではないかと思います。

既に中小のメーカーでは行われているのでしょうが、DELLなりHPなりのBig Blandがそれをやればとか思うのですが、逆にそれらメーカーは大手企業向けの製品も多いわけで、なかなか進まないのかも知れません。

私はマニュアルとか見ないでアプリケーションとか感覚で使ってしまうタイプなので、理解できないというか想像があまり出来ないのですが、一般ユーザーにとってアプリケーションの変更・更新による新オペレーション体系の教育コストって馬鹿にならないとの話もありますし。

ですけど、今回のOffice2007で大幅なUIの変更がありましたから、他プロダクトに切り替えるチャンスなんではとか思ったりもします。

一年後の予想が非常に立ちづらいこの業界ですが、来年にはどうなっているんでしょうね?

続きを読む・・

2007/02/07

道場(Dojo)に入門!!

年始から有給使って旅行とか行ってましたが、このたびDojo に入門する事になりました。

AJAXなライブラリなんですが、PHPなりASP.Netを利用できない環境でCMS的な事をやってみようという事でDojoを使ってみる事にしました。

とりあえずフリーなWeb Spaceを借りて試したりしていたのですが、無条件でHTMLに広告を挿入してくるようなサイトなので、ContetnPaneで別ファイルをロードとかするときにちょっと不具合が出たりしています。

なので、Dojoのライブラリに手を入れてみたりしていますが、Dojoってどうやってデバッグとかしてるんだろうとか思いつつ、Alertとか使いながらなんとか必要な機能は追加できました。ContentPaneでLoadする際にはExecuteScriptというロードされる対象のスクリプトを実行する機能があるのですが、Scriptブロックに特定キーワードが含まれている時は、その実行を除外するような感じが出来ました。

本質的にはこんな機能を追加してるぐらいだったら、広告なしのサーバーを借りれば済むのですが、Dojo自体の実装とかを理解するには随分と役立ったかと思います。

コンテンツ自体は他の人との共同で作っていて、私はどっちかといえばフレームワークとか裏側のロジックを作ってる感じなんですが、もうちょっとしたら公開してみようかなとか思っています。

続きを読む・・

2007/02/03

Google DocsからBloggerへ投稿。

Bloggerを使うようになってまだ半年ぐらいですが、微妙な歯痒さは何処に行っても(何処のサービスでも)変わらないなぁというのが正直な感想です。

うっかり見落としていたのですが、実はMicrosoft Word 2007からはBloggerに投稿できます。過去に投稿したものをWord 2007で開く事も可能です。だけどBlogger Betaというか今のBloggerでは不調です。投稿は出来るみたいですけど、既存Postを開いたりとかは軒並みエラーです。Word側に関する情報が少ないのであまり調べていませんが、Blogger側の仕様が変わってるんだから仕方ないでしょうぐらいに思ってます。

そんな状況もあってGoogle Docs&SpreadsheetsからのPublishingをメインで使っているのですが、この場合の最大のメリットは画像ファイルの添付が楽なんです。BloggerへのPost時に別途画像を置場を用意する必要がないんです。docs.google.com以下のアドレスから直接表示されます。元のDocumentとは関連の低い形のURIになるしGoogle docsのアカウントの推測も難しいようなので、煩わしい事を考えずに済みますし。

Blog中の画像は以下のようになります。

imgaeタグの参照先はdocs.google.com以下になっているかと。

ですがこの画像その物は、ローカルからGoogle docs上に貼り付けられただけなので、

私にはそれが何処に置かれているかは関知していません。

こんな感じで画像を配置するロケーションを意識しなくて良いのですが、これだけですとBloggerのEditorからも同等の事は出来ますのでメリットは少ないのですが、Microsoft Wordとかで書いたDocumentをGoogle docsにUploadし、それをBloggerにPostって手順を踏むと、一手間余計ではありますが画像込みのBlogの投稿としては格段にストレスが少なく作成する事が出来るかと思います。

まぁ、あくまでも個人的な感覚でしかないのですが、Microsoft Wordに限らずOpenOffice.orgのWriterでも出来るわけですから、一度試されたらいかがでしょうか?

最大の問題点というか嫌点は、MSなフォント指定とか細かなレイアウト指定的なタグが挿入されまくりな事です・・・・。

続きを読む・・

2007/02/01

Adsense を 自分でクリックしない為に。

このBlogではAdsenseとかを導入していますが、これは広告収入とかよりもデータを集めるというか見てるのが楽しいからってのがあります。私はデータとか見ながらロジックを想像したりするのが好きなんで、特にGoogle Adsenseで選ばる/表示される広告とかはとても興味深く見ています。

そんな感じなので、自分のBlogを横とか上に表示されたAdsense広告を含めて自身で楽しんでいますが、自分でクリックしないようにって部分ではとても神経質になります。

もっと気楽に自分のページぐらいみたいので、Proxomitornを使って自身でAdsense広告をクリックしてもOKな感じにしてみました。


Proxomitronに関してはこことか、ココを見てもらえたら概要はわかるかと思います。基本的にはProxy Serverとしてブラウザとインターネットの間に入って、出入りするコンテンツに関しての操作が可能です。

で対象となるフィルターはこんな感じです。


[Patterns]
Name = "Adsense Link Clear"
Active = TRUE
URL = "*.googlesyndication.com/$TYPE(htm)"
Limit = 1024
Match = "<a\s\0href="*000000000000"
Replace = "
<a \0 href='about:blank'



本当はもっと真面目に考えるべきなんでしょうが、Proxomitronをインストールしてから30分ぐらいで作ったフィルターなんで・・・ と言い訳しておきます。ちなみに000000000000の部分は私のAdsense IDの数値部分を入れています。リンクは基本的にabout:blankになるはずなんですが、実際には後ろに何かついたりします。一時期はabout:blankを利用したマルウェアだウィルスだかがあったらしいですが、これは問題ないみたいです。(推定なんで、やるなら自己責任でお願いします。)

もっと良い書き方を調べるなり学ぶなりしてからすれば良さそうなものですが、とりあえずの用途は満たしているし自分用なのでこんな感じの使ってますが、もっと良い書き方を教えてくれる方は現れないかと期待はしてます。(笑。

続きを読む・・

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って何処まで伸びるんですかね? 不正クリックやその他のリスクもあると思うんですけどね。

続きを読む・・