hypweb.net
XOOPSマニア  最新情報のRSS(サイト全体)
[ 自宅サーバーWebRing |ID=54 前後5表示乱移動サイト一覧 ]

TOP » UsersWiki » calendar nao-pon/blog/2006.07
Archives
2003
1 2 3 4 5 6 7 8 9 10 11 12
2004
1 2 3 4 5 6 7 8 9 10 11 12
2005
1 2 3 4 5 6 7 8 9 10 11 12
2006
1 2 3 4 5 6 7 8 9 10 11 12
2007
1 2 3 4 5 6 7 8 9 10 11 12
2008
1 2 3 4 5 6 7 8 9 10 11 12
2009
1 2 3 4 5 6 7 8 9 10 11 12
2010
1 2 3 4 5 6 7 8 9 10 11 12
2011
1 2 3 4 5 6 7 8 9 10 11 12
2012
1 2 3 4 5 6 7 8 9 10 11 12
2013
1 2 3 4 5 6 7 8 9 10 11 12
2014
1 2 3 4 5 6 7 8 9 10 11 12
2015
1 2 3 4 5 6 7 8 9 10 11 12
2016
1 2 3 4 5 6 7 8 9 10 11 12
2017
1 2 3 4 5 6 7 8 9 10 11 12
2020
1 2 3 4 5 6 7 8 9 10 11 12
2021
1 2 3 4 5 6 7 8 9 10 11 12
2022
1 2 3 4 5 6 7 8 9 10 11 12
2023
1 2 3 4 5 6 7 8 9 10 11 12
<< 2006.7 >>
[nao-pon/blog]
            1
2 3 4 5 6 8
9 10 11 12 13 14
16 17 18 19 20 21 22
23 24 25 26 27 29
30          
 

MyGmap モジュール を API v2 対応に anchor.png

miyabi さんの gmap モジュールをベースにした のぶのぶさんの MyGmap モジュールは、住所・駅名サーチなどが便利なので、PukiWiki の googlemap2 プラグイン用の地図タグ生成に便利だと思い、Google Maps API の Version 2 に対応させてみました。

そのメモ書きです。

&font(Red){

※ FireFox(1.5.0.4), Opera(8.53) ではOKだけど、IE(6)ではNGでした。ちょっと調べてみます。};

Page Top
経過 anchor.png
  • mygmap_loader.js にて GoogleMap の JS と mygmap.js 呼び出しを JavaScript で書いている部分をテンプレートにて HTML で書いてやると IE でも問題ない模様。

ただ、それだとブロックのミニマップと共存できなくなる?

Page Top
mygmap_loader.js anchor.png
var mygmap_gapi_src = "http://maps.google.com/maps?file=api&amp;v=1&amp;datum=wgs84&amp;key=" + mygmap_API;

var mygmap_gapi_src = "http://maps.google.com/maps?file=api&amp;v=2&amp;key=" + mygmap_API;

に変更。

Page Top
mygmap.js anchor.png

冒頭近くの

//Google Map Initializing

の前に次のコードを追加

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Gmap -> Gmap2 matting by nao-pon
var GPoint = function(lng, lat)
{
	return new GLatLng(lat, lng);
};
GMap2.prototype.centerAndZoom = function(point, z)
{
	return this.setCenter(point, Math.floor( 17 - z ));
};
GMap2.prototype.getBoundsLatLng = function()
{
	return this.getBounds();
};
GMap2.prototype.getCenterLatLng = function()
{
	return this.getCenter();
};
GMap2.prototype.getZoomLevel = function()
{
	return this.getZoom();
};
GMarker.prototype.setZIndex = function(){};
GMarker.prototype.getLatitude=function(){return 180};
GMap = GMap2;

最後のほうの

function myGmapRenderCurAddress(zoom) {

の直下に

1
  zoom = Math.max( 0 , (17 - zoom) );

を追加


本当は、ソースをV2用に書き換えるのが正攻法だとは思いますが、変更箇所が多かったので、オブジェクトのメソッドを追加して対応させてみました。

これで、とりあえず動作している模様ですが、まだ足りないメソッドや関数があるかもしれません。 :p





 
Tag: Moblog

暑い!暑すぎる! anchor.png

06-07-15_13-34.jpg

車外気温計が40度!

「熱い」って漢字を当てたい。

あまりに暑すぎて、日本沈没を連想してしまうな〜

(*_*)

at 1:39 pm




 

IP から ccTLD (国別コード)を得る anchor.png

ちょっと前から、いじっているサイト YouTube NAVI は、内容がワールドワイドなコンテンツなので、Amazon のアソシエイツも各国のそれに参加しています。

当初は、ブラウザが送ってくる Accept-Charset を見て判別して振り分けていたのですが、Accept-Charset はあくまでも言語指定であって、住んでる地域とは一致しないので、IPを元にアクセス元の国を判別してみようと思い立ちました。

調べてみると、 (api.hostip.info) で、APIとして公開されていたので使ってみたのですが、正しく取得できない場合があったので、自前で構築してみました。

まずは、リストの取得ですが 不正アクセスの発信地の国別統計をとろう! で Nakamura Minoru さんという方が、世界に4ヶ所ある IP アドレスを管理している組織が公開しているデータをまとめて公開されているのを発見!

そちらのデーターを元に MySQL にデータベースを作成し、PHPスクリプトで問い合わせをする関数を作ってみました。

  • まずは、MySQL のテーブル構造
    • (hypweb.net)
  • そして、肝心要のデーター
    • (hypweb.net)
  • そして最後にPHPスクリプトの関数
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    
    function ip2tld($ip)
    {
    	global $config;
    	
    	if (preg_match("/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/",$ip,$arg))
    	{
    		$ip = $arg[1];
    	}
    	else
    	{
    		$ip = "";
    	}
    	
    	$tld = "";
     
    	if ($ip)
    	{
    		$ips = explode(".",$ip);
    		$ip = $ips[0] * 16777216 + $ips[1] * 65536 + $ips[2] * 256 + $ips[3];
     
    		// データベースに接続し、選択する
    		$link = mysql_connect($config['db']['host'], $config['db']['user'], $config['db']['pass'])
    		    or die("Could not connect");
    		//print "Connected successfully";
    		mysql_select_db($config['db']['name'],$link)
    		    or die("Could not select database");
     
    		// SQLクエリを実行する
    		$query = "SELECT tld FROM `{$config['ip2tld']['table']}` WHERE start <= $ip AND end >= $ip LIMIT 1";
    		//echo $query;
    		$result = mysql_query($query)
    		    or die("Query failed");
     
    		// HTMLに結果を出力する
    		list($tld) = mysql_fetch_row($result);
    		
    		// 接続を閉じる
    		mysql_close($link);
    	}
     
    	if (!$tld) $tld = "XX";
     
    	return $tld;
    }
    • $config に配列として DB接続情報を指定してください。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      
      $config = array();
       
      // DB setting //
      $config['db']['host'] = "localhost"; // MySQL Server host
      $config['db']['name'] = "db name";   // MySQL DB name
      $config['db']['user'] = "user name"; // MySQL User name
      $config['db']['pass'] = "password";  // MySQL Password
      // ---------- //
       
      $config['ip2tld']['table'] = "ip2tld_dat"; // DB Table name (ip2tld_dat)

これを利用したのが Convert IP to ccTLD です。

API として利用するなら (hypweb.net) として IPを与えてください。

現状では利用にあたり制限をしていませんが、継続性は保証できません。ある日突然なくなるかもしれないので、ご了承ください。

一式諸々をパックしておきました。ご自由にお使いください。

  • fileip2tld.zip
    • rename.config.php の内容を設定して config.php とリネームしてください。 ;)




 

Biglobe が「Outbound Port 25 Blocking」を開始 anchor.png

携帯にサイトの更新通知が届かないので、おかしいな〜?って思っていたら、なんと Biglobe が Outbound Port 25 Blocking を開始していました。

7月下旬から携帯各社宛をブロックし始め、9月下旬までにすべてのメールがブロックされるようです。

「そんな、殺生な〜!」って言ってみたところで仕方ありません。最近の流れですからね。

じゃあ!ということで、biglobe の SMTPサーバーを経由して送ることにしました。

メールサーバーは XMail(Win32) を使っているので、「SMTP フォワーダ」ですべてのメールをmail.biglobe.ne.jp へ転送!

そして、SMTP クライアント認証 にログイン情報を設定。

多くのプロバイダーならこれでOK!・・・だけど Biglobe は、もうちょっと設定が必要。

Biglobeは、SMTPシェイクハンド時の MAIL FROM: を見るので、そこにBiglobeのメールアドレスを指定しなくてはいけません。

通常はメールヘッダの From: のメールアドレスに指定したアドレスが使われるようなので、これではすべてのメールがそのBiglobeのメールアドレスからしか送信できないので、それはまずい。

そこで、XMail.exe のソースをいじって、SMTPシェイクハンド時の MAIL FROM: のメールアドレスが Biglobe のアドレスになるようにしたところ、問題なく送ることができました。

ただ、送信したメールヘッダに Biglobe のアドレスが、記載されてしまうのが難点といえば、難点。

メールアドレスを公開することになってしまうので、Biglobeのスパムフィルターに頑張ってもらわないとね。*1

XMail のソースをいじって、コンパイルするには、次のアプリケーションが必要ですが、どれも無料です。

初期状態でビルドすると、多分エラーが出ます。

私の環境では、次のようにすることで正常に完了しました。

  • 実行可能ファイルとインクルードファイルとライブラリファイルにPlatform SDKの各フォルダを追加
    • オプション - プロジェクトおよびソリューション - VC++ディレクトリ
      • C:\Program Files\Microsoft Platform SDK\Bin
      • C:\Program Files\Microsoft Platform SDK\Include
      • C:\Program Files\Microsoft Platform SDK\Lib
  • SysDepWin.cpp の冒頭に次のコードを追加
#pragma comment(lib, "winmm.lib")
#pragma comment(lib, "wsock32.lib")
#pragma comment(lib, "advapi32.lib")
  • 肝心の修正箇所は、SMTPUtils.cpp の USmtpSendMail()関数内を修正。
	SysSNPrintf(szRTXBuffer, sizeof(szRTXBuffer) - 1, "MAIL FROM:<%s> SIZE=%lu",
			    pszFrom, ulMessageSize); 
} else
	SysSNPrintf(szRTXBuffer, sizeof(szRTXBuffer) - 1, "MAIL FROM:<%s>", pszFrom);
    • ソースを読み解くのが面倒だったので、%s の部分にハードコードしてしまいました。 :p

とこれで完了!結構時間が掛かりました。





*1 念のため送信専用にセカンドメールボックスを取得しました。

トップ 印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
このページのTopへ
メインメニュー
ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録
最近の更新
オンライン状況
810 人のユーザが現在オンラインです。 (7 人のユーザが UsersWiki を参照しています。)

登録ユーザ: 0
ゲスト: 810

もっと...
サイト情報