GoogleMapsAPI リクエスト メモ
var directionsService; var directionsDisplay = []; /*緯度*/ var longitude = 35.7102849; /*経度*/ var latitude = 139.77714030000004; var map; var allCount = 1; var i = 0; function initMap() { var mapdiv = document.getElementById('map'); directionsService = new google.maps.DirectionsService(); //オプション設定 var myOptions = { zoom: 17, center: new google.maps.LatLng(longitude, latitude), mapTypeId: google.maps.MapTypeId.ROADMAP, scaleControl: true, }; //マップを描画 map = new google.maps.Map(mapdiv, myOptions); //マップ上に線を描く drawLine(); } function drawLine() { var divisor = 100000; if(i == 500){ return; } var originLatLng; // 経由地点を設定 var wayPoints = []; if (allCount != 1) { originLatLng = new google.maps.LatLng(longitude + allCount / divisor, latitude + allCount / divisor); } else { originLatLng = new google.maps.LatLng(longitude, latitude); } //waypoints作成 for (var count = 1; count <= 20; count++) { wayPoints.push({ location: new google.maps.LatLng(longitude + allCount / divisor, latitude + allCount / divisor) }); allCount++; } var request = { origin: originLatLng, //入力地点の緯度、経度 destination: new google.maps.LatLng(longitude + allCount / divisor, latitude + allCount / divisor), //到着地点の緯度、経度 travelMode: google.maps.DirectionsTravelMode.WALKING, //ルートの種類 waypoints: wayPoints } /* 描画 */ directionsService.route(request, function (result, status) { directionsDisplay.push(new google.maps.DirectionsRenderer()); directionsDisplay[directionsDisplay.length - 1].setDirections(result); //取得した情報をset directionsDisplay[directionsDisplay.length - 1].setMap(map); //マップに描画 }); i++; $("#count").empty(); $("#count").append(i); setTimeout(function(){ drawLine(); }, 1000); }
JavaScript bindメモ
aタグに対するbindのメモ
$(function () { $("#jump").bind('click', function (event) { alert("hoge"); }); });
HTML
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>JavaScript ClickTest</title> <script src="https://code.jquery.com/jquery-3.1.1.js"></script> <script type="text/javascript" src="click.js"></script> </head> <body> <a href="https://www.google.co.jp" id="jump"> <img src="duke.jpg"> </a> </body> </html>
Selenium について(メモ)
簡単・便利、ブラウザの自動操作!~Selenium WebDriver~ : アシアルブログ
Selenium WebDriverでWebアプリのテストが変わる(前編):iPhone/Android含むブラウザ自動テストの最終兵器Selenium WebDriverとは (2/2) - @IT
Java+SeleniumなWebアプリケーションの自動テストプロジェクト構築 - Qiita
windows7+eclipse+Selenium WebDriverその0007(mavenプロジェクトとして環境構築をやり直してみる) - MOTOMICHI WORKS BLOG
自動テストはじめませんか?#1 | Developers.IO
Seleniumを使用して、テストの自動化に挑む。基本編 | 株式会社Seekcloud 長野県 上田市 ホームページ制作・Webサイト システム開発::長野県上田市
カウントアップマクロ
個人的に今欲しいマクロを作成してみた。
'変数宣言 Dim szGetText As String Dim szSetText As String Dim iCnt As String '************************************* 'コピーした文字列の末尾を取得して 'カウントアップする '************************************* Sub GetText() On Error GoTo GetTextError Selection.Copy With New DataObject .GetFromClipboard '変数のデータをDataObjectに格納する szGetText = .GetText 'クリップボードから取得 iCnt = Val(Right(szGetText, 3)) iCnt = iCnt + 1 '改行コード(vbLf)を考慮 szSetText = Left(szGetText, Len(szGetText) - 3) End With Exit Sub GetTextError: MsgBox ("エラー") End Sub '************************************* 'GetText()でカウントアップした '文字列を貼り付ける '************************************* Sub SetText() With New DataObject .SetText szSetText & Format(iCnt, "0") '数値から文字へ 'DataObjectのデータをクリップボードに格納する .PutInClipboard End With ActiveSheet.Paste End Sub
例えば次のデータがあるとする
そのデータをコピーして
別のセルに貼り付ければ、末尾の数字がカウントアップする
やっぱエビデンスの番号紐づけぐらいしか用途ないな……。
■参考サイト
クリップボードとデータのやりとりをする:Excel VBA|即効テクニック|Excel VBAを学ぶならmoug
Office TANAKA - Excel VBA Tips[クリップボードを操作する(1)]
Microsoft Forms 2.0 Object Libraryへの参照設定を行うには? :VBE(Visual Basic Editor)
Javaでちょっと気になったこと
新人3ヵ月目の時、よく理解していなかったが故にやってしまったこと。
例えばユーザ情報をListに入れるときに
package test.java; import java.util.ArrayList; import java.util.List; public class ListTest { public static void main(String[] args) { List<UserBean> list = new ArrayList<UserBean>(); UserBean uBean = new UserBean(); /* 1人目 */ uBean.setNo("1"); uBean.setName("YoneSan"); uBean.setMsg("MSG1"); /* リストに追加 */ list.add(uBean); /* 2人目 */ uBean.setNo("2"); uBean.setName("OzekiStyle"); uBean.setMsg("MSG2"); /* リストに追加 */ list.add(uBean); /* 3人目 */ uBean.setNo("3"); uBean.setName("NagasawaKun"); uBean.setMsg("MSG3"); /* リストに追加 */ list.add(uBean); for(UserBean ub : list){ System.out.println(ub.getNo()); System.out.println(ub.getName()); System.out.println(ub.getMsg()); } } }
想定していた出力は
1
YoneSan
MSG1
2
OzekiStyle
MSG2
3
NagasawaKun
MSG3
こんな感じだけど、実際に実行すると。
3
NagasawaKun
MSG3
3
NagasawaKun
MSG3
3
NagasawaKun
MSG3
一番最後に設定した値が出力される。
そりゃあインスタンスが1つ(newが1回)しか生成
されていないのにそのインスタンスに対して値を変更したら
すでにリストに格納されているものも変わるよなって話。
試しにハッシュコードを調べてみる。
package test.java; import java.util.ArrayList; import java.util.List; public class ListTest { public static void main(String[] args) { List<UserBean> list = new ArrayList<UserBean>(); UserBean uBean = new UserBean(); System.out.println(uBean); /* 1人目 */ uBean.setNo("1"); uBean.setName("YoneSan"); uBean.setMsg("MSG1"); /* リストに追加 */ list.add(uBean); System.out.println(uBean); /* 2人目 */ uBean.setNo("2"); uBean.setName("OzekiStyle"); uBean.setMsg("MSG2"); /* リストに追加 */ list.add(uBean); System.out.println(uBean); /* 3人目 */ uBean.setNo("3"); uBean.setName("NagasawaKun"); uBean.setMsg("MSG3"); /* リストに追加 */ list.add(uBean); for(UserBean ub : list){ System.out.println(ub.getNo()); System.out.println(ub.getName()); System.out.println(ub.getMsg()); } } }
出力結果↓
test.java.UserBean@659e0bfd
test.java.UserBean@659e0bfd
test.java.UserBean@659e0bfd
3
NagasawaKun
MSG3
3
NagasawaKun
MSG3
3
NagasawaKun
MSG3
@以降がハッシュコードを指してる。
ハッシュコードはオブジェクトの内部アドレスを整数値にしたもの
みたいなので、すべて同じところを指していることが分かる。
参考↓
Object (Java Platform SE 7)
なので値を設定する前にインスタンスを生成すればOK。
package test.java; import java.util.ArrayList; import java.util.List; public class ListTest { public static void main(String[] args) { List<UserBean> list = new ArrayList<UserBean>(); UserBean uBean = new UserBean(); System.out.println(uBean); /* 1人目 */ uBean.setNo("1"); uBean.setName("YoneSan"); uBean.setMsg("MSG1"); /* リストに追加 */ list.add(uBean); uBean = new UserBean(); System.out.println(uBean); /* 2人目 */ uBean.setNo("2"); uBean.setName("OzekiStyle"); uBean.setMsg("MSG2"); /* リストに追加 */ list.add(uBean); uBean = new UserBean(); System.out.println(uBean); /* 3人目 */ uBean.setNo("3"); uBean.setName("NagasawaKun"); uBean.setMsg("MSG3"); /* リストに追加 */ list.add(uBean); for(UserBean ub : list){ System.out.println(ub.getNo()); System.out.println(ub.getName()); System.out.println(ub.getMsg()); } } }
出力結果↓
test.java.UserBean@659e0bfd
test.java.UserBean@2a139a55
test.java.UserBean@15db9742
1
YoneSan
MSG1
2
OzekiStyle
MSG2
3
NagasawaKun
MSG3
ハッシュコードも別々で想定した出力になっている。
これでインスタンスの理解が少し深まったかも。
シート集約マクロを作成してみた
同じフォルダ内にある複数のExcelブックの1シート目を
1つのブックに集約するマクロを作成してみた。
Sub CommandButton1_Click() Const AGG_FILE_NAME As String = "集約ファイル.xlsx" Const EXTENSION As String = "xls*" Dim szFileName As String Dim copySheet As Workbook Dim szAggFileName As String Application.ScreenUpdating = False Application.DisplayAlerts = False '集約ファイル名を取得 szAggFileName = Range("A2").Value If szAggFileName = "" Then 'ファイル名が記入されていない場合デフォルトの値を入れる szAggFileName = AGG_FILE_NAME End If 'ファイル存在チェック szFileName = Dir(ThisWorkbook.Path & "\" & szAggFileName) '存在した場合は削除する If szFileName <> "" Then Kill (ThisWorkbook.Path & "\" & szAggFileName) End If Set aggFile = Workbooks.Add '拡張子「.xls」「.xlsx」「.xlsm」を対象 szFileName = Dir(ThisWorkbook.Path & "\*." & EXTENSION) 'ファイルが存在しない場合は終了 If szFileName = "" Then Exit Sub End If '各ブックの1枚目のシートを集約用ブックにコピーする Do 'マクロ自身は無視する If ThisWorkbook.Name <> szFileName Then Set copySheet = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & szFileName) copySheet.Worksheets(1).Copy After:=aggFile.Worksheets(aggFile.Worksheets.Count) ActiveSheet.Name = szFileName copySheet.Close End If szFileName = Dir() Loop While szFileName <> "" '空のシートを削除する処理 Dim i As Integer i = 0 Dim iSheetCount As Integer iSheetCount = 1 Do While iSheetCount <= aggFile.Worksheets.Count - i If IsEmpty(aggFile.Worksheets(iSheetCount).UsedRange) = True Then aggFile.Worksheets(iSheetCount).Delete i = i + 1 Else iSheetCount = iSheetCount + 1 End If Loop Application.DisplayAlerts = True aggFile.SaveAs Filename:=ThisWorkbook.Path & "\" & szAggFileName aggFile.Close End Sub
集約したシートを保存するブックの名前を入力して、
ボタンを押す
このフォルダ内の.xls .xlsx .xlsm の1シート目を
コピーして1つのブックに集約する
hoge.xlsxが作成される
hoge.xlsxを開くと各ファイルからシートがコピーされている。