イヤホンを買った
今週 3/18 にハーフマラソンに参加するので、イヤホンを買った。
今までは iPhone に付属されていたイヤホンを使用してランニングしていけど、走ってるとコードが邪魔だったり、スマホと繋がれてるせいで耳が痛くなり走ることに支障が出ていた。
とりあえず、ワイヤレスを試してみたいということで値段も安く anker ということで下記を購入
Anker SoundBuds Slim Bluetoothイヤホン(カナル型)【マグネット機能 / 防水規格IPX4 /内蔵マイク搭載】 iPhone、Android各種対応 (ブラック)
- 出版社/メーカー: Anker
- メディア: エレクトロニクス
- この商品を含むブログ (2件) を見る
完全なワイヤレスは無くしてしまいそうだったのでこのモデルにした。
使ってみる。
Mac の コマンドラインで使用する Java をアップデートしようとしてちょっと引っかかった
現在のバージョンを確認
macOS High Sierra 10.13.1 ☁ ~ java -version java version "1.7.0_71" Java(TM) SE Runtime Environment (build 1.7.0_71-b14) Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Java をアップデート(失敗)
としたけど、コマンドラインの Java のバージョンに変化が無い。
このアップデートでは、
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
の Java が更新されている。
を参照すると、
Oracle製のJREをインストールしても、java -versionのシンボリック・リンクが更新されたりjavaがパスに追加されたりすることはありません。これを可能にするには、JDKをインストールする必要があります。
とあるので、OS で使用する Java の実行環境をインストールしているだけってことか。パスにも Internet Plug-Ins ってあるし、ブラウザで使用する Java を設定しているのか。
Java をアップデート(成功)
から Java SE Development Kit 8u151 をダウンロード、実行
- コマンドから確認
☁ ~ /usr/libexec/java_home -V Matching Java Virtual Machines (2): 1.8.0_151, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home 1.7.0_71, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
- JAVA_HOME を設定
export JAVA_HOME=$(/usr/libexec/java_home)
- バージョン確認
☁ ~ java -version java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
アップデートが出来ました。 ちょっと引っかかたので備忘録がてら調べた内容をメモー。
参考
インターネット Web サーバー構築ガイドライン を読んだメモ 3
第六章:アプリケーションの実行環境を設定しよう
- ハンドラーがアプリケーションへのリクエストを処理する
PHP ゕプリケーションを実行できるようにするには、ハンドラーの設定で、「拡張子.php がリクエストされたら FastCGI を使用して php-cgi.exe を実行する」 というようにマッピングを行う。これをハンドラー マッピングと言う。
仮想ディレクトリ
- コンテンツのレスポンスに関する設定しか持っていない
アプリケーション
第九章:ログやトレースを活用しよう
-
- C:¥inetpub¥logs¥LogFiles
- Web, FTP サイト毎にフォルダーが分割され、その中に日付別に名前が付けられたファイルがある
- Http.sys によって出力される
- 自動的に削除はされない。ディスク容量の兼ね合いを見て手動で削除する必要がある
失敗した要求のトレース
- リクエストに対して行われる Web サーバー上の処理について、ファイルの種類や、処理時間、Web サーバーが返す HTTP ステータスを条件に、トレースログを取得することができる
ワーカープロセスの監視
- IIS への各リクエストは、ワーカープロセスと呼ばれるサーバープロセス上のスレッドとして処理される
- IIS では任意の数のワーカープロセスをホストすることが可能
- Web サイト、アプリケーションは、各々独自のワーカープロセスを使用することも、また、ひとつのワーカープロセスを共有して使用することも可能
ワーカープロセスとは、アプリケーションプールが実行された際のプロセスのこと
現在稼働しているワーカープロセスの一覧表示ができる
- ワーカープロセスで現在実行中の要求を表示することができる
- Windows の機能の有効化から インターネットインフォメーションサービス > World Wide Web サービス > 状態と診断 > 要求の監視 を有効にする必要あり
イベントログ
イベントログが記録されるとき
- プログラム(アプリケーション、サービス)が明示的にイベントログへ情報を出力している
- プログラムが内部で発生したエラーを処理できなかった場合
イベントビューアーで サブスクリプション を構成すると、リモート コンピューターからイベントを収集し、ローカル コンピューターのログに格納することができる
- 複数台のサーバーを集中して管理する場合に便利
- https://technet.microsoft.com/ja-jp/library/cc749183.aspx?f=255&MSPPError=-2147217396
第十章:動作状態の確認と性能向上
RSCA(Runtime Status and Control API: ルスカ) という実行状態を公開するためのインターフェースが IIS7 から開発された
- RequestMonitorModule (Iisreqs.dll) という IIS モジュールがインストールされていれば利用できる
コマンドからの管理系の操作は Windows PowerShell の利用が推奨
- アプリケーションプールの状態を知りたい
Get-WebAppPoolState プール名 開始済みの場合 Value ----- Started 停止の場合 Value ----- Stopped
- IIS ドライブを使う
IIS: PS IIS:\> dir Name ---- AppPools Sites SslBindings
タスクマネージャー
- 注目すべきプロセス
- inetinfo.exe IIS Admin Service のプロセス
- svchost.exe World Wide Web Publishing Service のプロセス
- w3wp.exe アプリケーションが動作するワーカープロセス
- w3wp.exe に一番注目
- ワーカープロセスは全て w3wp.exe の名前になっているので pid(プロセスID) から識別する
- タスクマネージャーで情報が足りない場合は Process Explorer を使う
- 注目すべきプロセス
パフォーマンスモニター
失敗した要求トレース
- 失敗した(HTTPステータスコード 400 以上)だけでなく、200 OK の正常終了のリクエストについても使用可能
- ASP.NET の場合は
Trace.Write
,Trace.Warn
を記述することで記録が残せる
HTTP 圧縮機能
- サーバーで圧縮を行い、対応しているブラウザで解凍する
- 静的コンテンツ、動的コンテンツの2種類に対してそれぞれ圧縮機能がある
- サーバーで圧縮処理を行うため、処理増加・ディスク I/O の状況によってはボトルネックになることもある
インターネット Web サーバー構築ガイドライン を読んだメモ 2
第三章:ページを公開しよう
- IIS マネージャーで行った操作は、applicationHost.config, Web サイト、仮想フォルダー、アプリケーション内の web.config ファイル内の設定に反映される
- IIS マネージャーで操作する際に左下を見ると現在の GUI 操作がどのファイルに反映されるかが表示されている
ファイルを直接編集して IIS を操作することも可能
ローカルで web.config を編集してデプロイすると差分が発生しないか?これ
仮想ディレクトリを使用することで、既定のフォルダー以外にあるフォルダーを Web サイトの下位ディレクトリとして公開することができる
- 複数台サーバーでの共通のコンテンツをホストする場合は、ネットワーク共有されたフォルダーを仮想ディレクトリとしてホストすれば、コンテンツの配置の手間も大幅に削減できる
第四章:さまざまなサーバーの設定
- 仮想ホストの機能で、1 台の Web サーバーを複数のサーバーであるかのうように見せることができる
- 1 台の Web サーバーに対して、ホスト名の異なる複数の URL を使用してアクセスができる
第五章:アクセス制限の仕組みを知ろう
特定の IP アドレスあるいは範囲からのアクセスを制限することができる
- 既定はすべての IP アドレス、コンピューター、ドメインがアクセス可能
匿名認証
基本認証
その他の認証方式
- 多くの種類がある
アプリケーションプール ID について
- 参考 https://technet.microsoft.com/ja-jp/library/ee886292.aspx?f=255&MSPPError=-2147217396
- Windows OS には、IIS が各アプリケーションプールに一意の ID を作成できるように「仮想アカウント」と呼ばれる機能が用意されている
- 新しいアプリケーションプールが作成されるたびに、IIS 管理プロセスによってアプリケーションプール自体の名前を表すセキュリティ識別子(SID)が作成される
- アプリケーションIDには、そのアプリケーションプールで利用するリソースのみに対してアクセス許可を与える
- Windows のユーザー管理コンソールにはユーザーとして表示されない
正しいアクセス許可の付与
認証を必要とするアプリケーション
- 認証されたユーザーすべてを含むグループに対するすべてのリソースを権限によって制限することが理想
- さまざまなカテゴリのユーザーがいる場合は、管理者や管理者以外でグループを分けてそれぞれにアクセス権を付与する
匿名で実行するアプリケーション
- アプリケーションプール ID または、カスタムで指定した匿名 ID(IUSR) でリソースのアクセスを制限するべき
- アプリケーションプールID にアクセス権を付与することがオススメ
- 匿名 ID は既定のユーザーなので、既定を変更していない全アプリケーションでコンテンツへのアクセス権を持つことになる
- アプリケーションプール ID または、カスタムで指定した匿名 ID(IUSR) でリソースのアクセスを制限するべき
インターネット Web サーバー構築ガイドライン を読んだメモ
を読んで、IIS について学習した自分用メモ
自分の環境は、Windows10 / IIS 10
第二章:IIS の動作を見てみよう
- アプリケーションプールと w3wp.exe は 1 対 1 が最も簡単な設定
1 対 n の設定も可能
IIS の環境設定は複数の xml 形式ファイルの組み合わせで実現
- IIS サーバー全体の設定は applicationHost.config
- c:\windows\system32\inetsrv\config
- 各サイトやアプリケーション単位の設定は web.config
- 各サイトやアプリケーションのフォルダー
- IIS 7.0 コンフィギュレーション リファレンス
- IIS サーバー全体の設定は applicationHost.config
IIS の開始・停止・再起動
- IISマネージャー
- サーバーマネージャー
- 管理ツールのサービス
- iisreset コマンド
- Net コマンド
- Appcmd.exe コマンド
- Windows PowerShell サービス操作コマンドレット
- Windows PowerShell IIS コマンドレッド
- サーバーの停止でどのサービスが停止するか?
- W3SVC World Wide Web 発行サービスが停止する (Windows10 / IIS10 で試行)
- PowerShell の場合は、サーバー・サイト・アプリケーションプールの全ての停止が可能なのでオススメ
ログ
- c:\inetpub\logs\logfiles に出力される
- W3SVC1, W3SVC2 のように作成したサイト毎にサイトのIDが付加される
- ID はサイトの詳細設定から確認可能
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 のレスポンスが返ってきて、中のデータ(温度や湿度など)が正しいことを確認出来た。