以後は特に指定のない限りJSはES6記法で書いていこうと思います。
Intlオブジェクトというものを知りました。
国際化表記における各種変換を取りまとめるそこそこ大規模なオブジェクトらしい。
Collator
DateTimeFormat
NumberFormat
の3つのサブオブジェクトを持つ模様。
それぞれインスタンス化して使用するっぽい。
(() => { let localeOption = { style: "currency", currency: "jpy" }; let locale = new Intl.NumberFormat("ja-JP", localeOption); console.log(locale.format(1234500)); // => ¥1,234,500 })();
便利。
第二引数のoptionにcurrencyDisplay
を指定すると表記方法が変わるっぽい。
currencyDisplay: "symbol"
がデフォルトで、他にcode
とname
があるらしい。
symbol
の場合の記号が半角とか全角とか、その辺は実装依存っぽい。
とか思ってたら
Number#toLocaleString
とか、他の代表的なオブジェクトにメソッドとして同等機能が提供されていた。
new
はオーバーヘッドも大きいし*1、特別な理由がない限りは基本こっちですね。
*1:実測はしていませんが
グローバルIPアドレスを得る
今まではipifyを使っていました。
> Invoke-WebRequest api.ipify.org | Write-Host
125.203.***.***
非常にシンプルで使用制限もなく応答速度も問題なくて重宝していました。
これで終わりでいいんですが、みんな大好きStackOverflowのとあるスレッドで有用なやり取りがあったので。
Getting my public IP via API - Stack Overflow
どうやらipinfo.ioというのがあるようで、「1日1000リクエストまで」という制限があるようですが*1柔軟性が高いです。
オプションを何もつけなければJSONでデータが返ってきます。
> Invoke-WebRequest ipinfo.io | Write-Host { "ip": "125.203.***.***", "hostname": "i125-203-(中略).ap.plala.or.jp", "city": "", "region": "", "country": "JP", "loc": "35.***,139.***", "org": "AS4713 NTT Communications Corporation" }
まぁ使い方は公式サイトにでかでかと書かれてるのでわざわざここで説明するまでもないんですが、JSONのプロパティがオプション名になってます。
> Invoke-WebRequest ipinfo.io/ip | Write-Host 125.203.***.*** > Invoke-WebRequest ipinfo.io/country | Write-Host JP
特に凝ったことするのでなければipify, ちょっと別の情報も使いたいってときはipinfo.ioって具合に使い分けましょうかね。
*1:無料プランでの話なので、有料プランを選べばもちろん制限は緩くなります。
OSXのバージョンを確認する方法
ただ単に今駆動しているOSXのバージョンを確認するだけなら
$ sw_vers ProductName: Mac OS X ProductVersion: 10.10.5 BuildVersion: 14F1605
で終わりです。
今回はとあるパーティションにインストールされているOSXのバージョンを外部から確認する方法です。
ある方から起動できなくなったHDDにインストールしたOSXのバージョンを確認してほしい、との依頼があったために調べて知った方法です。
要するに一部のLinuxディストリで言うcat /etc/*-release
のようなものです。
まずは目的のパーティションに移動します。
$ cd /Volumes/Machintosh\ HD/
その上で、そのパーティション上の/System/Library/CoreServices/
の中にあるSystemVersion.plist
にバージョン情報が書かれています。
$ cat System/Library/CoreServices/SystemVersion.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>ProductBuildVersion</key> <string>14F1605</string> <key>ProductCopyright</key> <string>1983-2016 Apple Inc.</string> <key>ProductName</key> <string>Mac OS X</string> <key>ProductUserVisibleVersion</key> <string>10.10.5</string> <key>ProductVersion</key> <string>10.10.5</string> </dict> </plist>
ちなみに、ここのXMLを書き換えることで「このMacについて」で表示されるバージョン情報を偽装することができるようです。
参考: Tutorial: Change the OS X Version by modifying systemversion.plist