住所から範囲を指定して施設の情報を取得するサンプルみたいなもの
'周辺施設探索サンプル Sub sample_search_near_facility() Dim i As Integer Dim m_ListOfFacility() As String Dim address As String Dim Sheet As Object 'Excel.Worksheet Set Sheet = Worksheets("sheet1") 'ワークシートから住所を取得 Worksheets("sheet1").Select 'ワークシートに描画しない Application.ScreenUpdating = False '住所欄を順次取得していく For i = 1 To 1000 '空行なら抜ける If (Sheet.Cells(1 + i, 1) = "") Then Exit For Else address = Sheet.Cells(1 + i, 1).Value '施設を検索するサブプロシージャの呼び出し m_ListOfFacility = GetListOfNearFacility(GetLocation(address)) 'シートに値を入れる '施設名 Sheet.Cells(1 + i, 2) = m_ListOfFacility(1) '種類(取得できない場合あり) Sheet.Cells(1 + i, 3) = m_ListOfFacility(2) '住所 Sheet.Cells(1 + i, 4) = m_ListOfFacility(3) '説明(取得できない場合あり) Sheet.Cells(1 + i, 5) = m_ListOfFacility(4) End If 'DoEventsの実行 DoEvents Next '結果を描画する Application.ScreenUpdating = True End Sub '周辺施設を検索するファンクション '引数 ByRef参照渡し ' 検索する建物名 'YOLP業種コード 一覧 '02,0204,0204001,ショッピング,百貨店、ショッピングセンター,デパート、百貨店 '02,0204,0204002,ショッピング,百貨店、ショッピングセンター,ショッピングセンター '02,0204,0204003,ショッピング,百貨店、ショッピングセンター,アウトレットショップ '02,0204,0204004,ショッピング,百貨店、ショッピングセンター,ホームセンター '02,0204,0204005,ショッピング,百貨店、ショッピングセンター,商店街 '02,0205,0205001,ショッピング,コンビニ、スーパー,コンビニ '02,0205,0205002,ショッピング,コンビニ、スーパー,スーパー Private Function GetListOfNearFacility(ByRef argLocation As String) As String() Dim m_Return(10) As String Dim m_Uri As String Dim m_NameElements As Object Dim m_LineElements As Object Dim m_DirectionElements As Object Dim m_DistanceElements As Object Dim m_TraveltimeElements As Object Dim i As Integer '住所が入っていた場合 If Len(argLocation) > 0 Then 'YahooAPIを使用して近辺の施設を取得 'lat 経度 'lon 緯度 'dist 周囲検索(Km) 3Km以内指定 'gc 業種コードを指定 m_Uri = "http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch?appid=<アプリケーションID>&lat=" & _ Replace(argLocation, ",", "&lon=") & _ "&dist=3&gc=0204" With CreateObject("MSXML2.XMLHTTP") Debug.Print m_Uri .Open "GET", m_Uri, False: .Send With .responseXML '結果を抽出 '名称他の取得 Set m_NameElements = .getElementsByTagName("Name") Set m_addressElements = .getElementsByTagName("Address") Set m_descriptionElements = .getElementsByTagName("Description") If m_NameElements.Length > 0 Then 'ReDim m_Return(m_NameElements.Length, 4) '1件取得する ' 複数件にも対応させる '施設名の取得 m_Return(1) = m_NameElements.Item(0).Text Debug.Print m_Return(1) '種類を取得 m_Return(2) = m_NameElements.Item(2).Text Debug.Print m_Return(2) '住所を取得 m_Return(3) = m_addressElements.Item(0).Text Debug.Print m_Return(3) '説明を取得 m_Return(4) = m_descriptionElements.Item(1).Text Debug.Print m_Return(4) Else 'Redim 動的配列 'ReDim m_Return(0) End If End With End With Else 'ReDim m_Return(0) End If GetListOfNearFacility = m_Return 'オブジェクトの破棄処理 Set m_NameElements = Nothing End Function '緯度 経度を取得するファンクション '引数 検索する建物 Public Function GetLocation(ByRef argAddressString As String) As String Dim m_Uri As String If Len(argAddressString) > 0 Then m_Uri = "http://maps.googleapis.com/maps/api/geocode/xml?address=" & _ EncodeURI(argAddressString) & "&sensor=false" 'With CreateObject("MSXML2.XMLHTTP") ' .Open "GET", m_Uri, False: .Send ' '分割して記述した例が下 Set xhr = CreateObject("MSXML2.XMLHTTP") xhr.Open "GET", m_Uri, False xhr.Send 'With CreateObject("MSXML2.XMLHTTP").responseXML '取得結果を格納 Set elements = xhr.responseXML.DocumentElement '情報を取得できたら格納 If elements.getElementsByTagName("status").Item(0).Text = "OK" Then 'locationタグの読み込み '緯度経度間の空白を,に置換 '置換例 35.7100327,139.8107155 GetLocation = Replace(elements.getElementsByTagName("location").Item(0).Text, " ", ",") End If 'End With 'End With End If End Function 'URLエンコードを行うファンクション Private Function EncodeURI(ByVal argString As String) As String argString = Replace(Replace(argString, "\", "\\"), "'", "\'") With CreateObject("HtmlFile") .parentWindow.execScript "document.write(encodeURIComponent('" & argString & "'));", "JScript" EncodeURI = .Body.innerHTML End With End Function
住所 名称から最寄駅等を取得する
下記のサイトのコードを少し変えて
シートにある住所から最寄駅等の情報を作ってみました。
住所から最寄駅を検索する | ヴィーバ VeaBa! Excel VBA Tips
http://veaba.keemoosoft.com/2013/02/488/
コードを読むのに時間かかりました。。。
変更したのは直近の一件のみ取得と
シートから住所取り込んで情報を入れる部分だけです。
SimpleAPI「最寄り駅Webサービス」
で緯度、経度から最寄駅、路線情報、距離、時間取得できる便利な
サービスと
緯度経度は
Google Geocoding APIを使って、検索して渡して上記の情報を
取得してくるというもの。
と参照設定でXML扱えるように
下記サイトを参考
http://d.hatena.ne.jp/end0tknr/20081115/1226755041
'最寄駅を検索するサンプル Sub Sample_search_near_station() Dim i As Integer Dim m_ListOfStation() As String Dim address As String Dim Sheet As Object 'Excel.Worksheet Set Sheet = Worksheets("sheet1") 'ワークシートから住所を取得 Worksheets("sheet1").Select 'ワークシートに描画しない Application.ScreenUpdating = False '住所欄を順次取得していく For i = 0 To 1000 '空行なら抜ける If (Sheet.Cells(2 + i, 1) = "") Then Exit For Else address = Sheet.Cells(2 + i, 1).Value '最寄駅を検索するサブプロシージャの呼び出し m_ListOfStation = GetListOfNearestStation(GetLocation(address)) 'UBOUND関数配列の名前を指定する 'For j = 0 To (UBound(m_ListOfStation) / 5 - 1) Sheet.Cells(2 + i, 2) = m_ListOfStation(0) Sheet.Cells(2 + i, 3) = m_ListOfStation(1) Sheet.Cells(2 + i, 4) = m_ListOfStation(2) Sheet.Cells(2 + i, 5) = m_ListOfStation(3) Sheet.Cells(2 + i, 6) = m_ListOfStation(4) 'Next End If 'DoEventsの実行 ' DoEvents Next '結果を描画する Application.ScreenUpdating = True End Sub '最寄駅を検索するファンクション '引数 ByRef参照渡し ' 検索する建物名 Private Function GetListOfNearestStation(ByRef argLocation As String) As String() Dim m_Return(5) As String Dim m_Uri As String Dim m_NameElements As Object Dim m_LineElements As Object Dim m_DirectionElements As Object Dim m_DistanceElements As Object Dim m_TraveltimeElements As Object Dim i As Integer '住所入っていた場合 If Len(argLocation) > 0 Then 'SimpleAPI「最寄り駅Webサービスを利用 '緯度 経度を指定して最寄駅を検索 m_Uri = "http://map.simpleapi.net/stationapi?output=xml&y=" & _ Replace(argLocation, ",", "&x=") ' With CreateObject("MSXML2.XMLHTTP") ' .Open "GET", m_Uri, False: .Send ' With .responseXML Set xhr = CreateObject("MSXML2.XMLHTTP") xhr.Open "GET", m_Uri, False xhr.Send '取得結果を格納 Set elements = xhr.responseXML.DocumentElement Set m_NameElements = elements.getElementsByTagName("name") Set m_LineElements = elements.getElementsByTagName("line") Set m_DirectionElements = elements.getElementsByTagName("direction") Set m_DistanceElements = elements.getElementsByTagName("distance") Set m_TraveltimeElements = elements.getElementsByTagName("traveltime") 'Debug.Print m_NameElements(0).Text If m_NameElements.Length > 0 Then 'ReDim m_Return(m_NameElements.Length, 5) '検索結果すべて表示する場合 ' For i = 1 To m_NameElements.Length ' '駅名の取得 ' m_Return(i, 1) = m_NameElements.Item(i - 1).Text ' '路線名の取得 ' m_Return(i, 2) = m_LineElements.Item(i - 1).Text ' '方角の取得 ' m_Return(i, 3) = m_DirectionElements.Item(i - 1).Text ' '駅までの距離を取得 ' m_Return(i, 4) = m_DistanceElements.Item(i - 1).Text ' '駅までにかかる時間の取得 ' m_Return(i, 5) = m_TraveltimeElements.Item(i - 1).Text ' Next '一番の最寄駅だけ取得 m_Return(0) = m_NameElements.Item(0).Text '路線名の取得 m_Return(1) = m_LineElements.Item(0).Text '方角の取得 m_Return(2) = m_DirectionElements.Item(0).Text '駅までの距離を取得 m_Return(3) = m_DistanceElements.Item(0).Text '駅までにかかる時間の取得 m_Return(4) = m_TraveltimeElements.Item(0).Text Else 'Redim 動的配列 'ReDim m_Return(0) End If 'End With 'End With Else 'ReDim m_Return(0) End If GetListOfNearestStation = m_Return 'オブジェクトの破棄処理 Set m_DirectionElements = Nothing Set m_LineElements = Nothing Set m_DirectionElements = Nothing Set m_DistanceElements = Nothing Set m_TraveltimeElements = Nothing End Function '緯度 経度を取得するファンクション '引数 検索する建物 Public Function GetLocation(ByRef argAddressString As String) As String Dim m_Uri As String 'Debug.Print argAddressString If Len(argAddressString) > 0 Then m_Uri = "http://maps.googleapis.com/maps/api/geocode/xml?address=" & _ EncodeURI(argAddressString) & "&sensor=false" 'With CreateObject("MSXML2.XMLHTTP") ' .Open "GET", m_Uri, False: .Send ' '分割して記述した例が下 Set xhr = CreateObject("MSXML2.XMLHTTP") xhr.Open "GET", m_Uri, False xhr.Send 'Debug.Print m_Uri 'With CreateObject("MSXML2.XMLHTTP").responseXML '取得結果を格納 Set elements = xhr.responseXML.DocumentElement '情報を取得できたら格納 If elements.getElementsByTagName("status").Item(0).Text = "OK" Then 'locationタグの読み込み '緯度経度間の空白を,に置換 '置換例 35.7100327,139.8107155 GetLocation = Replace(elements.getElementsByTagName("location").Item(0).Text, " ", ",") End If 'End With 'End With End If End Function 'URLエンコードを行うファンクション Private Function EncodeURI(ByVal argString As String) As String argString = Replace(Replace(argString, "\", "\\"), "'", "\'") With CreateObject("HtmlFile") .parentWindow.execScript "document.write(encodeURIComponent('" & argString & "'));", "JScript" EncodeURI = .Body.innerHTML End With End Function
イメージは下記。
ドットインストールをやってみて(HTML,CSS,PHP)
HTMLとPHPは復習&勉強兼ねて
CSSは学習のためにドットインストールの各レッスンを見てみました。
ドットインストール
http://dotinstall.com/
見たレッスン
・HTML(入門編)
・CSS(入門編)
・PHP入門(基本編)
・PHP入門(応用編)
凄くわかりやすい。
1動画当たり短いのでこまめにやりやすいし、メモも取れる。
初心者向けということもあって
それぞれなんとなくだけれど
1講座で入門書の中でも分量が少ないものをカバーしている感じ
まるっと忘れてざっとでも復習したかったのと
CSSとにかく少しでも見たかったので見てみたら良かった。
後は書籍なり、Webなりで学んでいじったり、作ってく中で触って行こうと思います。
確定申告について 久し振りすぎてわからない・・・
そろそろ年末調整の時期なのだけれど、
何年かぶりで久し振りでよくわからないなぁ。。。と
思っていたらはてブにちょうど良さそうなエントリーあったのでメモしときます。
年末調整や確定申告で知らんと損する記事まとめ
http://matome.naver.jp/odai/2138431164688902801
の記事のリンク先2つ
年末調整の4つのポイント!|動画付でわかりやく解説してみた
http://www.chuokaikei.co.jp/staffblog/taxsaving/13/
めんどくさい年末調整に必要な3つのこと|書き方が動画で解りやすい!
http://www.firstep.jp/blog/archives/2567
全体的に説明されててわかりやすい。
さくらVPS構築 途中
□参考サイト
初心者向けのさくらVPSマニュアルサイト
http://www.xn--vps-073b3a72a.com/
さくらVPSの設定
ここの7番まで設定完了(?)
(Apacheの確認でSyntax OKとまでいけたから一応大丈夫なのかな
いかんせん不安・・・)
とターミナルでの作業だったのでここもすごく参考になった。
□参考サイト
さくらのVPS|独学のweb知識を活かし夢を叶えるブログ
http://www.homecountry.info/blog/owner/cat/engineer/server/vps/
ロードバランサー レイヤ4スイッチについて
ロードバランサーという言葉昨日初めて知りました。
マスタリングTCP/IP第三版には古いのか記載なく、
第五版には記載あるみたいです。
レイヤ4に属する負荷分散の為のレイヤスイッチとのこと。
L4スイッチはTCPヘッダなどのプロトコルヘッダ内のポート番号や、セッションシーケンス番号などの情報を解析したり書換えを行うことで、ネットワークトラフィックの分散や、最適化を行うことを目的した装置である。
引用元 wikipediaより
http://ja.wikipedia.org/wiki/レイヤ4スイッチ
L2スイッチはブリッジの役割。
L3スイッチはルーターの役割と認識しておりました。
L4スイッチは上記のスイッチのその上位層レベルのTCP等の情報で制御、最適化を行う装置みたいです。(誤ってたらすみません・・・)
ロードバランサーはレイヤ4-7スイッチで、
他に
・帯域制御装置(QoS)
・セッション最適化装置
・WANアクセラレータ
があるみたい。
ロードバランサーはサーバを複数接続する際に分散して処理、制御するために
接続する装置。
参考サイト
知っておきたいロードバランサーの基礎技術
http://ascii.jp/elem/000/000/506/506272/
管理方法(ロードバランシングの方法)のアルゴリズムは
・ラウンドロビンDNS
問い合わせに対して登録された順に割り振って行く方式
重いものにたいしても処理を全部均等に割り振って行くため、非効率。
・重み付けラウンドロビン
サーバーに重み(処理能力等)をつけることで
処理をふっていく際のそれぞれのサーバーを考慮する
・動的振り分け
サーバーの負荷に応じて動的に割り振って行く方式
・コンテンツスイッチング
リクエストされるコンテンツの種類を識別して、
振り分け先のサーバーを分けるという方式
重要になってくるのがヘルスチェックとセッション維持。
・ヘルスチェック
どこかのサーバーに障害が発生してしまった場合、
検知して別のサーバーに処理を引き継がせなければいけない。
なのでロードバランサー側はサーバーの動作状態を把握しておかなければいけない。
チェックの方法はいろいろあり、
Pingを定期的に送信したり、TCPでセッションをはったり
HTTPでデータを送ったりといろいろ。
・セッション維持
クライアント側からのリクエストを分割して処理する際に
一つのトランザクションは一つのサーバーで処理しないと不都合が起きる。
(関連した処理なのに、データ等がサーバ分割されて処理されることとか)
これを解決する為に一つのトランザクションを継続して
特定のサーバーに割り振りを行うのがセッション維持の機能。
クッキーを発行したりすることなどで制御を可能にしたりする。
ただし、WebでSSLの暗号化処理がされている通信の場合
ヘッダが暗号化されているため判別できないが
それを解決するためにサーバーの代わりにSSLの暗号化処理を
肩代わりする機能を持つロードバランサーを使う。
他に役に立ちそうなアドオン(Google Chrome Webの表示等見る時に)
他に便利そうなエクステンション。
□参考サイト
厳選して使用している便利なChromeエクステンション19個
http://kachibito.net/web-service/19-favorite-chrome-extension.html
CSSVieweいいな。
http://kachibito.net/web-service/cssviewer.html