イヤホンを買った

今週 3/18 にハーフマラソンに参加するので、イヤホンを買った。

今までは iPhone に付属されていたイヤホンを使用してランニングしていけど、走ってるとコードが邪魔だったり、スマホと繋がれてるせいで耳が痛くなり走ることに支障が出ていた。

とりあえず、ワイヤレスを試してみたいということで値段も安く anker ということで下記を購入

完全なワイヤレスは無くしてしまいそうだったのでこのモデルにした。

f:id:k6i:20180316004139j:plain

f:id:k6i:20180316004632j:plain

使ってみる。

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 をアップデート(失敗)

  1. Mac のシステム環境設定
  2. Java
  3. Java コントロール・パネルの更新
  4. 更新

としたけど、コマンドラインJava のバージョンに変化が無い。 このアップデートでは、 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/javaJava が更新されている。

OS XのJRE 8のインストール

を参照すると、

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)

アップデートが出来ました。 ちょっと引っかかたので備忘録がてら調べた内容をメモー。

参考

www.pupha.net

インターネット Web サーバー構築ガイドライン を読んだメモ 3

第六章:アプリケーションの実行環境を設定しよう

  • ハンドラーがアプリケーションへのリクエストを処理する
  • PHP ゕプリケーションを実行できるようにするには、ハンドラーの設定で、「拡張子.php がリクエストされたら FastCGI を使用して php-cgi.exe を実行する」 というようにマッピングを行う。これをハンドラー マッピングと言う。

  • 仮想ディレクト

    • コンテンツのレスポンスに関する設定しか持っていない
  • アプリケーション

    • サーバー再度でプログラムを実行するためのアプリケーションプールの設定や、ハンドラーマッピングの設定がされている
    • つまり、サーバーサイドのアプリケーションを実行するための設定がなされた仮想ディレクト
  • ASP.NET ランタイムは、発生したエラー・警告などを Windows のイベントログとして出力する。

第九章:ログやトレースを活用しよう

  • アクセスログ

    • C:¥inetpub¥logs¥LogFiles
    • Web, FTP サイト毎にフォルダーが分割され、その中に日付別に名前が付けられたファイルがある
      • Web サイト : "W3SVC" + サイト ID (数字)
      • FTP サイト : "FTPSVC" + サイト ID (数字)
      • "u_ex" + (2 桁表記の UTC 年月日) + ".log"
    • 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 を使う
  • パフォーマンスモニター

    • 注目するオブジェクト
      • WAS_W3WP
      • W3SVC_W3WP
      • Processor
      • Memory
      • Process
      • PhysicalDisk
      • Network Interface
      • .NET CLR xxxx (複数ありますが省略してまとめています。)
      • ASP.NET xxxx (複数ありますが省略してまとめています。)
      • Web Service
      • Web Service Cache
  • 失敗した要求トレース

    • 失敗した(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とパスワードで認証しているわけではない)
    • アプリケーション側で認証している場合はこの方式になる
    • ただし、Windows の中ではどの権限で動作するかという情報が必要になる
    • 標準で Windows が持っている匿名ユーザー IUSR で認証、動作するように設定されている
    • アプリケーションはこのアカウントで実行されることになる
  • 基本認証

    • ユーザーがアクセスする際に、有効なユーザー名とパスワードの入力が必要になる
    • Base64エンコードされた暗号化されていないパスワードがネットワーク上で送信される欠点がある
      • 専用回線、SSLTLS を使用する必要がある
  • その他の認証方式

    • 多くの種類がある
  • アプリケーションプール ID について

    • 参考 https://technet.microsoft.com/ja-jp/library/ee886292.aspx?f=255&MSPPError=-2147217396
    • Windows OS には、IIS が各アプリケーションプールに一意の ID を作成できるように「仮想アカウント」と呼ばれる機能が用意されている
    • 新しいアプリケーションプールが作成されるたびに、IIS 管理プロセスによってアプリケーションプール自体の名前を表すセキュリティ識別子(SID)が作成される
    • アプリケーションIDには、そのアプリケーションプールで利用するリソースのみに対してアクセス許可を与える
    • Windows のユーザー管理コンソールにはユーザーとして表示されない
  • 正しいアクセス許可の付与

    • ユーザーによってアップロードされないものはすべて、ファイルシステムの読み取りアクセス権のみ必要
    • PHP アプリケーションや ASP.NET アプリケーションなどの動的コンテツの場合は、IIS スクリプトアクセス許可も必要
    • ユーザーがアップロードするコンテンツは、別のフォルダーに入れて、このフォルダーに書き込みアクセス権を不要する
      • このフォルダーに IIS 実行アクセス許可やスクリプトアクセス許可を付与してはいけない
  • 認証を必要とするアプリケーション

    • 認証されたユーザーすべてを含むグループに対するすべてのリソースを権限によって制限することが理想
    • さまざまなカテゴリのユーザーがいる場合は、管理者や管理者以外でグループを分けてそれぞれにアクセス権を付与する
  • 匿名で実行するアプリケーション

    • アプリケーションプール ID または、カスタムで指定した匿名 ID(IUSR) でリソースのアクセスを制限するべき
      • アプリケーションプールID にアクセス権を付与することがオススメ
      • 匿名 ID は既定のユーザーなので、既定を変更していない全アプリケーションでコンテンツへのアクセス権を持つことになる

インターネット Web サーバー構築ガイドライン を読んだメモ

msdn.microsoft.com

を読んで、IIS について学習した自分用メモ

自分の環境は、Windows10 / IIS 10

第二章:IIS の動作を見てみよう

  • アプリケーションプールと w3wp.exe は 1 対 1 が最も簡単な設定
  • 1 対 n の設定も可能

  • IIS の環境設定は複数の xml 形式ファイルの組み合わせで実現

  • 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 はサイトの詳細設定から確認可能

exe に署名されているコードサイニング証明書を表示する

こんな感じのコードでポップアップ表示される

コードサイニング証明書の表示

参考

https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.x509certificates.x509certificate2ui(v=vs.110).aspx

Netatmo Weather のAPIをとりあえず使ってみる

準備

  • https://dev.netatmo.com/
  • 上部メニューCREATE YOUR APP クリック
  • App name, App Description を入力
  • "I accept Netatmo APIs Terms and Conditions" にチェックを入れて同意する
  • Client idClient secret が作成される

API使ってみる

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}
  • access_token を使用してAPIにアクセス
curl https://api.netatmo.net/api/getstationsdata\?access_token\=xxx
json のレスポンス

json のレスポンスが返ってきて、中のデータ(温度や湿度など)が正しいことを確認出来た。