ラベル Development の投稿を表示しています。 すべての投稿を表示
ラベル Development の投稿を表示しています。 すべての投稿を表示

2007/02/13

Web 開発にcurlはどうでしょうか?

Web系の開発をしていると、ちょっとこのURL叩いてみたいとかって事はよくあるのですが、単純なgetであればブラウザでも代用できますが、結果がブラウザで表示されても判読不能なものや、putしなくてはって場合は汎用もしくは専用のツールを使う必要が出てきます。

この場合UNIX系の人だとcurlコマンド とか入れて使うんですが、この前Windowsしかない環境で何を使おうかなと探していたら、curlってwin32版もある んですね。

ちなみにWindows環境で必要になるのは、Win32 2000/XP Binary ってのになります。現在は7.16.0のSSLアリなバージョン無しなバージョン がDownload可能なようです。

SSLアリのバージョンを使用する場合は、この他にlibeay32.dlllibssl32.dllが必要になりますが、これらはDelegateさんの所からDownload とかしてくればいいんじゃないでしょうか。 ちなみに ssleay32.dll は libssl32.dllにリネームしてやればOKです

curlは表記的にはcURLと書くのが正しいみたいですが、これってかなり強力というか出来ること幅の広いツールなんで、いろいろと試してみると面白いかと思います。簡単な解説はこんなページがわかりやすいかも知れません。

認証関連はNTLMにまで対応してるし、cookieの保存とか設定まで可能なんで、バッチファイルでも色々な事が出来るんじゃないかと。Lib版もあるんでCで専用のコマンドとか書いて見るのも楽しいですし。

続きを読む・・

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 、また旨いワイン奢ってね。

続きを読む・・

2006/12/25

Revision control.

最近になってPrivateでは、Visual Studio 2005でもSubversionというかAnkhSVN を使うようになりました。

それで サーバーは自分で立てるんではなくて http://unfuddle.com/ とかも使ってみてます。ドキュメント管理用にTortoiseSVNとかも使ってたんで最低限は使えるんですが、
Visual Source Safe(VSS)な生活が長かったんで戸惑うというか、やりたい事の操作がまだわからなかったり。

そういえばGoogle CodeでProject Hosting して全てを晒せって話もありじゃないかとか思ってたりも。 自分が書いたコードに対するライセンス的な問題さえクリアできれば、Backupもされてるみたいだしサーバーのレスポンスは良いしだし。

VSS も2005になってネットーワークというかWAN経由での利用が楽にはなったし、当たり前だけどVisual Studioとの親和性というか使い勝手はとても良いので、まだ最終的にどうするかは決めかねるところではありますが、暫くは両方使いながら評価したいと思ってます。

ちなみにhttp://unfuddle.com/では15MBまでは無料なアカウントを使ってるんですが、その容量の感覚がまったく掴めないです(笑。ソースコードの容量なんて気にした事なかったですしね。 これも良い経験ですかね?

続きを読む・・