2011年05月01日

youtubeのサムネイルのアドレス

http://www.youtube.com/watch?v=YRKq2VilwbI のサムネイル
<img src="http://img.youtube.com/vi/YRKq2VilwbI/0.jpg"/>

<img src="http://img.youtube.com/vi/YRKq2VilwbI/1.jpg"/>

<img src="http://img.youtube.com/vi/YRKq2VilwbI/2.jpg"/>

<img src="http://img.youtube.com/vi/YRKq2VilwbI/3.jpg"/>

posted by 忘却の達人 at 13:27| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2011年04月09日

javascript:2つの地点の距離を求める

javascriptで2つの地点の緯度・経度から距離を求める。

function getDistance(lat1, lng1, lat2, lng2) {
    function radians(deg) {return deg * Math.PI / 180;}
    return 6378.14 * Math.acos(Math.cos(radians(lat1))
         * Math.cos(radians(lat2))
         * Math.cos(radians(lng2) - radians(lng1))
         + Math.sin(radians(lat1)) * Math.sin(radians(lat2)));
}
posted by 忘却の達人 at 14:24| Comment(0) | TrackBack(0) | JavaScript | このブログの読者になる | 更新情報をチェックする

2011年04月08日

vba:住所⇔緯度・経度変換

vbaで住所から緯度・経度に変換する関数と、逆の緯度・経度から住所に変換する関数。
注意点:住所⇔緯度・経度変換にはGoogle Geocoding APIを利用しているので、このAPIの使用制限が適用される。しかも一括変換しようとすると、10件くらいまではすぐに変換してくれるけど、それ以降は1秒に1個くらいのペースでリクエストしないとエラー(status:"OVER_QUERY_LIMIT")になる。
vba独自の注意点:エディタが大文字小文字を勝手に変換することがあるが、連想配列のキーは大文字小文字を区別するので勝手に変換されるとエラーになる。例えば、以下のコードの「jsn.status」が「jsn.Status」になるとダメ。対処法は、一度「status」で変数宣言する。そうすればその後変数宣言を消しても小文字のままになる。


Dim l As Variant
    l = AddressToLatLng("東京都新宿区西新宿2−8−1")
    MsgBox "lat:" & l(0) & vbCrLf & "lng:" & l(1)
    MsgBox LatLngToAddress(l(0), l(1))

'住所から緯度・経度に変換
'戻り値は配列で、(0)が緯度、(1)が経度。
Function AddressToLatLng(ByVal address As String) As Variant
Dim sc As Object
Dim jsn As Object
Dim result As Object
Dim http As Object
Dim url As String
    Set sc = CreateObject("ScriptControl")
    sc.Language = "JScript"
    sc.AddCode "function getLatLng(s) { return eval('(' + s + ')');}"

    url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=" & sc.CodeObject.encodeURI(address)

    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.Send
    Set jsn = sc.CodeObject.getLatLng(http.ResponseText)
    If jsn.status = "OK" Then
        For Each result In jsn.results
            AddressToLatLng = Array(result.geometry.location.lat, result.geometry.location.lng)
            Exit For
        Next
    Else
        'エラー
        AddressToLatLng = Array(999, 999)
    End If

    Set jsn = Nothing
    Set sc = Nothing
End Function

'緯度・経度から住所に変換
Function LatLngToAddress(ByVal lat As Double, ByVal lng As Double) As String
Dim sc As Object
Dim jsn As Object
Dim result As Object
Dim http As Object
Dim url As String
Dim text As String
    Set sc = CreateObject("ScriptControl")
    sc.Language = "JScript"
    sc.AddCode "function getAddress(s) { return eval('(' + s + ')');}"

    url = "http://maps.google.com/maps/api/geocode/json?sensor=false&language=ja&latlng=" & lat & "," & lng

    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.Send
    'ReplaceはShift_JISに無いハイフンが返されるためこれを全角ハイフンに変換
    Set jsn = sc.CodeObject.getAddress(Replace(http.ResponseText, ChrW(&H2212), "−"))
    If jsn.status = "OK" Then
        For Each result In jsn.results
            '「日本, 住所」の形で格納されてるので住所部分のみを取得
            LatLngToAddress = Split(result.formatted_address, ", ", 2)(1)
            Exit For
        Next
    Else
        'エラー
        LatLngToAddress = ""
    End If

    Set jsn = Nothing
    Set sc = Nothing
End Function
posted by 忘却の達人 at 21:10| Comment(0) | TrackBack(0) | vba | このブログの読者になる | 更新情報をチェックする

2011年03月26日

googleで住所から緯度・経度を取得する

http://maps.google.com/maps/api/geocode/json?sensor=false&address=URLエンコードした住所
これで緯度・経度を含むデータをjson形式で取得できる。jsonのところをxmlに変えるとxml形式で取得できる。

逆に緯度・経度から住所を取得する場合はlatlngパラメータに緯度・経度をカンマで区切って渡す。
http://maps.google.com/maps/api/geocode/json?sensor=false&latlng=緯度,経度
posted by 忘却の達人 at 19:51| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2011年03月19日

vba:正規表現

VBScript.RegExpオブジェクトを使ってvbaで正規表現を使う。但し、(…)でグループ化した部分を参照する、RegExp.$n は使えない。
「Microsoft VBScript Regular Expression 5.5」のライブラリ参照でアーリーバインドできる。
ex.)文字列からURLを抜き出す。
Dim re As Object
Dim rslt() As Object
Dim url As Object
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "https?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?"
re.IgnoreCase = True
re.Global = True
Set rslt = re.Execute("google:http://www.google.co.jp/,yahoo:http://www.yahoo.co.jp/")
For Each url In rslt
MsgBox url
Next
'rsltはコレクションなのでrslt(0)という記述もOK
posted by 忘却の達人 at 15:10| Comment(0) | TrackBack(0) | vba | このブログの読者になる | 更新情報をチェックする

2011年03月18日

vba:JavaScriptのコードを実行させる

ScriptControlオブジェクトを使うとvbaでJavaScriptのコードを実行させることができる。と言っても正確にはJScriptだけど。正規表現のマッチングやjsonデータを扱えるようになるのでいろいろ便利。

ex.文字列からyyyy/mm/ddを抜き出し、yyyymmddにして返す。

Dim sc As Object
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
sc.AddCode "function extractDate(dt) { dt.match(/(\d{4})\/(\d{2})\/(\d{2})/); return RegExp.$1 + RegExp.$2 + RegExp.$3; }"
MsgBox sc.CodeObject.extractDate("今日の日付は2011/03/18です。")
posted by 忘却の達人 at 00:51| Comment(0) | TrackBack(0) | vba | このブログの読者になる | 更新情報をチェックする

2011年02月06日

php:google docsのファイル一覧を取得

phpでZend Frameworkを使用してgoogle docsのファイル一覧を取得する。
Zend Gdataライブラリをダウンロードし、Zendフォルダを展開しておく。)

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_Docs');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
$service = Zend_Gdata_Docs::AUTH_SERVICE_NAME;
$user = "ユーザーID";
$pass = "パスワード";
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
$docs = new Zend_Gdata_Docs($client);
$feed = $docs->getDocumentListFeed();
foreach($feed->entries as $folder){
//最終更新日とドキュメント名を出力
print date("Y/m/d H:i:s", strtotime($folder->updated->text))." - ".$folder->title->text."<br>";
}
posted by 忘却の達人 at 15:06| Comment(0) | TrackBack(0) | php | このブログの読者になる | 更新情報をチェックする

RadPHP:DB接続(mysql)で文字化け

RadPHPでDatabaseコンポーネントのCharsetプロパティをutf8に設定してるのにDB接続で文字化けする。(phpソース・mysqlのテーブル共にUTF8で作成している。)
対策はDB接続後に"SET NAMES UTF8"をmysqlに投げる。・・・しかしそれじゃあCharsetプロパティって何のためにあるの?

function Database1AfterConnect($sender, $params)
{
$this->Database1->execute("SET NAMES utf8");
}

posted by 忘却の達人 at 10:08| Comment(0) | TrackBack(0) | RadPHP | このブログの読者になる | 更新情報をチェックする

2011年02月05日

RadPHP:NotifyBarを任意のタイミングで表示

ツールパレットのjQueryタブにあるNotifyBar(JBarのラッパー)は、デザイン時にMessageプロパティに表示する文字を入れ、Controlプロパティにフォーム上のボタンを指定すると、実行時そのボタンが押されたときに表示されるが、任意のタイミングで表示する場合は以下の関数を実行する。

コンポーネント名_execute(message,position,closebutton,duration,backgroundcolor,color);
※ パラメータは全て省略可能。省略した場合はデザイン時に指定したプロパティの値が使用される。

ex.)背景色ピンク、文字色青で「やっほ〜」を表示
NotifyBar1_execute("やっほ〜", "", "", "", "pink", "blue");
posted by 忘却の達人 at 13:04| Comment(0) | TrackBack(0) | RadPHP | このブログの読者になる | 更新情報をチェックする

2011年01月25日

RadPHP:DBGridを使用したページがエラーで表示されない

DBGridを使用したページで、ローカルでは正常に表示されてたのに、レンタルサーバーにアップすると、以下のエラーが表示されるだけで、コントロールが全て表示されなかった。(RadPHP XEトライアル版)
PHP Notice: Undefined property: ADORecordSet_mysql::$Fields in 〜\rpcl\dbtables.inc.php on line 624

E_NOTICEエラーを出力しないよう、ソースの最初に以下の1行を追加したら、正常に表示された。
error_reporting(E_ALL ^ E_NOTICE);
posted by 忘却の達人 at 00:09| Comment(0) | TrackBack(0) | RadPHP | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。