Netatmo Weather のAPIをとりあえず使ってみる
準備
- https://dev.netatmo.com/
- 上部メニューCREATE YOUR APP クリック
- App name, App Description を入力
- "I accept Netatmo APIs Terms and Conditions" にチェックを入れて同意する
Client id
とClient secret
が作成される
API使ってみる
- API を使用する前に認可する必要がある
- OAuth 2.0 を使用して認可する
- OAuth2.0 については、https://qiita.com/TakahikoKawasaki/items/200951e5b5929f840a1f が分かりやすい
- https://dev.netatmo.com/resources/technical/guides/authentication
今回はクライアントからの使用を想定しているので、Authentication for native client を参照
curl で試してみる
- access_token 取得
curl -w '\n' 'https://api.netatmo.com/oauth2/token' --data 'grant_type=password&client_id=xxx&client_secret=xxx&username=xxx&password=xxxx&scope=read_station' -X POST {"access_token":"xxxx","refresh_token":"xxx","scope":["read_station"],"expires_in":10800,"expire_in":10800}
curl https://api.netatmo.net/api/getstationsdata\?access_token\=xxx json のレスポンス
json のレスポンスが返ってきて、中のデータ(温度や湿度など)が正しいことを確認出来た。
Windows サーバーで サービスから Jenkins を起動しようとしたときに起動しなかったときの対応
状況
- http://jenkins/restart とかを何回か実行した
- サービスでステータス確認したら 停止 になっている
- サービスから開始をクリックしてもステータスは一瞬 実行中 になるがすぐに 停止 になる
対応
- jenkins.err.log を確認
- エラーが出ている
警告: FAILED ServerConnector@8c1c9b{HTTP/1.1}{0.0.0.0:8090}: java.net.BindException: Address already in use: bind java.net.BindException: Address already in use: bind at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Unknown Source) at sun.nio.ch.Net.bind(Unknown Source) at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source) at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:321) at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at org.eclipse.jetty.server.Server.doStart(Server.java:366) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at winstone.Launcher.<init>(Launcher.java:152) at winstone.Launcher.main(Launcher.java:352) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at Main._main(Main.java:246) at Main.main(Main.java:91)
- Address already in use: bind なので、すでに他のプロセスがポートを使用している感じ
- https://issues.jenkins-ci.org/browse/JENKINS-15691 ここらへんにも同様の問題あり
- http://sinsengumi.net/blog/2011/01/windows%E3%81%A7%E3%81%A9%E3%81%AE%E3%83%9D%E3%83%BC%E3%83%88%E3%81%8C%E4%BD%95%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%95/ ここらへんを参考にして Windows サーバーで同一ポートを使用しているプロセスを探す
- java.exe が使用している
- この java のプロセスを終了させる
- jenkins をサービスから開始する
- サービスが 実行中 になることを確認
- Jenkins の画面がブラウザで表示されることを確認
TFS でビルド時にアプリケーションのバージョン番号に日付とビルド回数を設定する
したいこと
MSBuild でバージョン番号を付与したい
今回設定したいバージョン番号
- ApplicationVersion=1.0.20170926.1
1 0 20170926 1 - - - - | | | | | | | `-- その日にビルドした回数(翌日にリセット) | | `------------ ビルドした日付 | `--------------- とりあえず固定 `------------------ とりあえず固定
TFS で使用できる変数について
事前に定義されている変数の一覧は下記で参照できる
https://docs.microsoft.com/ja-jp/vsts/build-release/concepts/definitions/build/variables?tabs=batch
ユーザー定義の変数も設定可能
TFSにブラウザから直接設定することも可能
- これだと動的に設定が出来ない?
Batch, PowerShell, Shell を作成して、ビルドステップにて実行して動的に変数を設定
- 例えば、日付を変数に設定する PowerShell の例
$date=$(Get-Date -Format 'yyyy-MM-dd'); Write-Host "##vso[task.setvariable variable=date]$date"
- この PowerShell をタスクの一つにして、起動すれば、
$(date)
でビルド時に使用可能
その日のビルドした回数はどうやって取得するか
- 下記のページを参考にして、回数を取得できそうな PowerShell が記載されている https://intovsts.net/2015/08/24/tfs-build-2015-and-versioning/ https://gist.github.com/pietergheysens/14d7d98547fe35470d0e
$buildNumber = $env:BUILD_BUILDNUMBER if ($buildNumber -eq $null) { $buildIncrementalNumber = 0 } else { $splitted = $buildNumber.Split('.') $buildIncrementalNumber = $splitted[$splitted.Length - 1] }
$(Build.BuildNumber)
の.
で分割した2つ目から取得できそうじゃ
$(Build.BuildNumber)
の1つ目が何か出力して確認してみる
20170926.1
- 自分が欲しい値そのままではないか。。。
まとめ
というわけで、今はこの設定でビルドしてる
/p:ApplicationVersion=1.0.$(Build.BuildNumber)
SourceTree で rebase してコンフリクト解決してすぐコミットしてしまったとき
上記の記事を参考にして、rebase -> コンフリクトの解決をしてたんですが、
特に手順5の後にコミットメッセージを入力してコミットしてしまうというミスを犯しやすいので注意が必要です。
これをやってしまいました。
SoureceTree からの解決方法が分からなかったので、コマンドから rebase を無かったことにしました。
1.コマンドで確認
$ git status On branch fix-branch You are currently rebasing branch 'fix-branch' on 'e114a18'. (all conflicts fixed: run "git rebase --continue") nothing to commit, working tree clean
2.rebase中でコンフリクト解消したから、git rebase --continue
を実行してみる。
$ git rebase --continue Applying: コメント No changes - did you forget to use 'git add'? If there is nothing left to stage, chances are that something else already introduced the same changes; you might want to skip this patch. When you have resolved this problem, run "git rebase --continue". If you prefer to skip this patch, run "git rebase --skip" instead. To check out the original branch and stop rebasing, run "git rebase --abort".
3.対応方法がよく分からなかったので、rebase を無かったことにしようと git rebase --abort
を実行。
rebase 中止して最初からやり直しました。
GitHub勉強会 in Kanazawa に行ってきた
メモ
- GitHub はコラボレーションのあり方を変えた
- ソースコードをクラウドにアップすることを嫌がることは世界中であるらしい
- GitHub Enterprise を導入することで解決出来る
- 最初は Web 系の企業の導入が多かったが、最近はバージョン管理?Git?みたいな会社からの相談や導入も増えてきている
- そういう企業に対して説明しに行くこともソリューションエンジニアの仕事のひとつ
- 外国では企業だけでなく学校への導入も増えてきている、それによって学生のときに使用していた GitHub を就職後も使用し続けることが出来る
YouTube にトレーニング動画も公開している(日本語字幕付き)
子供へのプログラミング教育も広まっている
感想
- GitHub を中心に開発を行うってことが世界中でスタンダードになってきていると感じた
- ただし、それはまだごく一部であって、どうやって今後 今も残るバージョン管理?なにそれ?みたいな企業が、自分で気づいて普及していけるかが大事
- それをサボった企業とかに魅力はなくなってくよ(GitHub にかぎらず)
@wtnabe 氏のツイートを肝に銘じてく
これからの未来を担う子にロストテクノロジーを口頭伝承して守らせることが未来に繋がるんか? 文化財守ってんじゃねーのよ。何倍も非効率でも守るべきてものはあるよ。そらー分かる。けど、おれたちのやるべきことは、お前のやるべきことは、それか?
— wtnabe (@wtnabe) 2017年9月16日
Windows10 に Go インストール
環境
- Windows10 64bit
- Go 1.9
インストール
Downloads - The Go Programming Language
go1.9.windows-amd64.msi
をダウンロード
インストールフォルダーも C:\Go\
のまま続行
インストールが完了すると GOROOT(C:\Go\)
, PATH(C:\Go\bin)
共に設定されているので、
コマンドプロンプトを起動して go コマンドを入力すると、help が表示される。
GOROOT とか PATH を自分で設定して、OS再起動必要みたいなブログもあったけど現在バージョンでは不要みたい。
あと、GOPATH っていう変数の設定が必要みたいだけど、Helpで確認すると設定されていない場合はホームディレクトリになるみたい。
>go help gopath If the environment variable is unset, GOPATH defaults to a subdirectory named "go" in the user's home directory ($HOME/go on Unix, %USERPROFILE%\go on Windows), unless that directory holds a Go distribution. Run "go env GOPATH" to see the current GOPATH.
とりあえず最初はこのまま。