無くし物や忘れ物の防止用にTrackR pixelを本格導入する
以前から TrackR と MAMORINO を試験的に使っていたのですが、自分の要件には MAMORINO よりも TrackR の方が合うので、本格的に使っていくために TrackR pixel 3個パックを追加購入してみました。
導入を決めたきっかけ
今回、本格的に使うことを決めたきっかけは、朝早い時間に出社したにも関わらず、オフィスの入室カードキーを忘れたためにせっかくの早起きを無駄にしてしまったこと。
試験利用中の1個はカバンの中の Yubikey につけていたので、カードキー忘れの防止には全く役に立ちませんでした。
TrackR を何に付けるか?
追加購入したブツを含めて4つの TrackR pixel を以下のように配分することにしました。
- 通勤用カバン(今まで通り、Yubikey と一緒につけておく)
- 入室カードキー(ネックストラップにカードキーと TrackR を下げる)
- 財布(小銭入れに入れておく)
- 出張用のキャリーバッグ(内側のポケットに入れておく)
自分の普段使いの物品でタグつけておきたいのはこれくらいです。
MAMORINO を選ばない理由、TrackR を選ぶ理由
MAMORINO ではなく TrackR を使う理由は2点です。
- スマートフォン側からの操作で音を鳴らして探せる
- 電池交換が自分で行える
MAMORINO は上記の点ができないので、本格利用は見送りました。音を鳴らして探すことができるのは、探し物をするときにとても役に立ちます。MAMORINOだと自分の近くにあることは分かっても、最終的に見つけるのは自分で頑張らねばなりません。
電池交換については、できないことは必ずしもネガティブでは無いし、MAMORINO のように新品に半額で交換できるのは悪く無いけど、タグの個数が増えるとそれなりに負担になるので、たくさん使いたい場合は交換できた方がありがたい。
ただし MAMORINO は可動部品(電池蓋やスマートフォンを探すスイッチ)がなく、またタグの形状がシンプルなので、手元にある分は子供に持たせている家のカギにつけておく運用を当面継続しようと考えています。(ただしバッテリが切れたら、これも TrackR に変えるかもしれないけど)
クラウドサーチの機能には期待しない
なお、TrackR にしろ、MAMORINO にしろ、クラウドサーチの機能は基本的に当てにしていません。これは運が良ければ見つかる、くらいの話だと思っています。
ユーザ数が増えてきたらそれなりに使い物になるかもしれませんが、今の普及度ではまだまだ難しい。
設定の注意点
「Cloud Locate アラート」は原則 off で使います。これを on にしていると、自分が持ち歩いているはずのタグを誰かが見つけたときにアラートが上がってきて大変ウザい
「アイテムの移動履歴」はお好みで。on にしておけば履歴が取れるので、探すときの参考になる場合もあるかもしれません。
「デバイス分離アラート」は、基本は off だと思います。これを on にしていると、スマートフォンとデバイスの距離が離れていると検知したときにデバイスから音が鳴り出すので、普段使いには向きません。
「携帯電話分離アラート」も、基本は off だと思います。on の時は離れたときに スマートフォンに通知され、おまけにアラーム音が鳴ります。このアラーム音はマナーモードでも鳴るので、少々困ります。ただしアラームはカスタマイズ可能なので、無音の音楽をスマートフォンにインストールしておき、それをアラームonに設定しておくことで回避可能です。
WiFiセーフゾーンに登録された WiFi に接続中は、アラートを無効にすることができます。距離が離れたかどうかの検知は誤作動することがあるので、そういう場合に無駄な通知をさせずにすみます。
JSONデータのキーをカンマ区切りで取得したい
JSONデータのキーをカンマ区切りで使用する必要が出たので、方法をメモしておく。
$ curl [URL] | jq -r '.rootProperty[0]|keys_unsorted|@csv' | sed 's/"//g' $ curl [URL] | jq -r '.rootProperty[0]|keys_unsorted|@tsv' | sed 's/\t/,/g'
基本的には jq に丸投げしつつ以下のことを行っているだけ。
rootProperty の部分は実際のJSON配列名等に書き換えます。
本当は @csv でダブルクオートなしの出力が得られればよかったのだけど、そういうわけではなさそう。だから @csv したものを sed で後処理している。
同様の理由により、@tsv した場合も sed での後処理が必要っぽい。
Oracle12g を Docker で動かす
Oracle12g も立てる必要がでてきたので、同じく Docker で立ててみる。
DB2 は公式ストアから入手してみたけど、Oracle はこちらの手順でやってみることにします。
そうすると以下の設定で接続できるものができました。
- ポート番号 = 1521/TCP
- Service_Name = ORCLPDB1
- パスワード (SYS, SYSTEM, PDBADMIN) = コンテナの生成ごとに振られるランダム文字列
TNSの接続なら、こういう文字列ですかねえ。
- (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = IPアドレス)(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = ORCLPDB1)))
起動したコンテナは Ctrl + C すると一時停止しますが、docker start [コンテナ名]
と実行すれば再開します。
以下では docker run の初回実行時のコマンドとログをメモとして残します。公式ストアから入手する方法は別途試そう。
$ sudo docker run -p 1521:1521 -p 5500:5500 --name Oracle12g -i oracle/database:12.1.0.2-ee Password: ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: (生成されたパスワード) LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 27-FEB-2018 13:03:37 Copyright (c) 1991, 2014, Oracle. All rights reserved. Starting /opt/oracle/product/12.1.0.2/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 12.1.0.2.0 - Production System parameter file is /opt/oracle/product/12.1.0.2/dbhome_1/network/admin/listener.ora Log messages written to /opt/oracle/diag/tnslsnr/8bd9ba867228/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production Start Date 27-FEB-2018 13:03:38 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /opt/oracle/product/12.1.0.2/dbhome_1/network/admin/listener.ora Listener Log File /opt/oracle/diag/tnslsnr/8bd9ba867228/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521))) The listener supports no services The command completed successfully Copying database files 1% complete 2% complete 27% complete Creating and starting Oracle instance 29% complete 32% complete 33% complete 34% complete 38% complete 42% complete 43% complete 45% complete Completing Database Creation 48% complete 51% complete 53% complete 62% complete 64% complete 72% complete Creating Pluggable Databases 78% complete 100% complete Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log" for further details. SQL*Plus: Release 12.1.0.2.0 Production on Tue Feb 27 13:30:14 2018 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> System altered. SQL> Pluggable database altered. SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options The Oracle base remains unchanged with value /opt/oracle ######################### DATABASE IS READY TO USE! ######################### The following output is now a tail of the alert.log: Tue Feb 27 13:30:00 2018 XDB initialized. Tue Feb 27 13:30:10 2018 Thread 1 advanced to log sequence 12 (LGWR switch) Current log# 3 seq# 12 mem# 0: /opt/oracle/oradata/ORCLCDB/redo03.log Tue Feb 27 13:30:14 2018 ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORCLCDB/control01.ctl' SCOPE=SPFILE; ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE Completed: ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE Tue Feb 27 13:38:59 2018 Resize operation completed for file# 9, old size 563200K, new size 593920K Tue Feb 27 13:55:17 2018 Warning: VKTM detected a time drift. Time drifts can result in an unexpected behavior such as time-outs. Please check trace file for more details. Tue Feb 27 13:55:17 2018 Default pga_aggregate_limit value is too high for the amount of physical memory in the system pga_aggregate_limit is 2048 MB limit based on physical memory and SGA usage is 1199 MB
IBM DB2 を Docker で動かす
DB2の試験環境が必要になったのだけど、仮想マシンで普通に立てるのはリソースの無駄遣いなので Docker で立ててみます。
Docker のホストは macOS を使用。macOS 向けの環境構築手順は割愛します。
store.docker.com でポチっておく
ここでポチります。開発版なので費用はかからない。 https://store.docker.com/images/db2-developer-c-edition
ポチったら、手順に従って pull して実行します。
コンテナを実行したい環境で docker pull
ストアからの入手ではログインが必要のようですから、ログインしておきます。そして macOS で利用する場合は x86_64 を入手します。
$ docker login $ docker pull store/ibmcorp/db2_developer_c:11.1.2.2b-x86_64
設定ファイルを作る
.env_list という名前でファイルを作ります。今回はこんな内容で。
LICENSE=accept DB2INSTANCE=db2inst1 DB2INST1_PASSWORD=password DBNAME=testdb BLU=false ENABLE_ORACLE_COMPATIBILITY=true UPDATEAVAIL=NO TO_CREATE_SAMPLEDB=true REPODB=false IS_OSXFS=true # Only specify this parameter if you are running on macOS PERSISTENT_HOME=false # Only specify this parameter for Docker for Windows users
実行する
今回はこんな感じで。-v でホスト側のディレクトリをコンテナ内にマウントさせた場合はうまく動かなかったので、とりあえず -v 抜きで動作確認しています。
docker run -h db2server_container \ --name db2server \ --restart=always \ --detach \ --privileged=true \ -p 50000:50000 -p 55000:55000 \ --env-file .env_list \ store/ibmcorp/db2_developer_c:11.1.2.2b-x86_64
接続確認する
任意のツールで確認すればよいと思います。
とりあえず手元では RAD Studio 10.2 Tokyo の IDE からデータエクスプローラで操作できることを試したり、DB Artisan で接続できることを確認しました。
FireDAC での設定箇所と DB2 の .env_list の対比はこんな感じです。
FireDAC | DB2 .env_list |
---|---|
Database | DBNAME |
User_Name | DB2INSTANCE |
Password | DB2INST1_PASSWORD |
Server | (実機のIPアドレスまたはホスト名) |
Windows標準コマンドだけでMD5を計算表示しつつクリップボードにもコピーする
右クリックメニューの拡張でMD5を取り扱う事例はググれば出てきますが、自分が欲しい機能は「結果を表示する」ことと「クリップボードにもコピーする」ことの両方だったので、それを行えるような処理をバッチファイルで書くことにしました。
使い方はイロイロあるでしょうけど、とりあえず作ったバッチファイルだけ貼っておきます。
@echo off if "%1" == "" goto ERROR : 一時ファイルにMD5の計算結果を格納 set md5tempfile=%temp%\%RANDOM%.txt certutil -hashfile "%~1" MD5 > %md5tempfile% : クリップボードにMD5SUMだけをコピーする type %md5tempfile% | findstr /V ":" | clip : ファイル名とMD5SUMをメッセージボックスとして出力する ( echo %~1 type %md5tempfile% | findstr /V ":" ) | msg %username% : 一時ファイルを削除 del %md5tempfile% goto :EOF :ERROR echo usage: md5sum.bat [filename] | msg %username% :EOF
Citrix NetScaler のCookie情報にはバックエンドのWebサーバの情報が含まれている
自社のあるサイトが Citryx NetScaler を利用しているのだけれど、たまに不安定なことがあり、なおかつその機材の管理チームと不安定な状況の改善に向けてやり取りしていてもラチがあかないので、合法的な範囲で調べてみるテスト。
Cytrix NetScaler というのはロードバランサー機能を含む複数の機能を提供するアプライアンス製品なわけですが、少なくともIPアドレスやポート番号の情報が NetScaler の生成する Cookie には含まれているようです。この Cookie 情報を用いて、特定のクライアントとの通信が特定のバックエンドに振り分けられるようにしているようです。
そこで、NetScaler が生成する Cookie の意味を具体的に調べていたら、これに関する情報が下記のコンテンツにありました。
そしてCookieをデコードする方法は無いものかと思って読み進めてみると、先程の記事の最後に下記の GitHub リポジトリが紹介されていて、ここにコードがありました。
Python と JavaScript コードがあるようですが、とりあえず Python を試してみます。
実行方法はカンタンで、実際にやってみると、こんな感じ。手元の Cookie の現物を晒すのはイヤなので、GitHub リポジトリの readme に記載の Cookie で試してみます。
$ ./nsccookiedecrypt.py NSC_Qspe-xxx.bwjwb.dp.vl-IUUQ=ffffffff50effd8445525d5f4f58455e445a4a423660 vServer Name=www.**********-HTTP vServer IP=xxx.xxx.xxx.xxx vServer Port=80
うん、たしかにデコードされた。そして手元の現物も同じようにデコードできた。
wena wrist pro を買ってオメガスピードマスターとDYIで組み合わせてみた
色々考えてみたけれど、やはりバッテリーが持たないスマートウォッチは基本的に受け入れられないし、画面が常時表示では無い機種もイマイチです。
なので、いっそのこと、画面なし、バッテリ長持ちな通知受け専用デバイスに手を出して見ることにしました。
購入したもの
今回購入したのは、 wena wrist pro Silverwena wrist pro Silver WB-11ASと、wena wrist pro用エンドピース20mm Silver SONY (ソニー) WB-EP200-Sエンドパーツ 20mmの2つです。
今回は組み合わせる時計が オメガ スピードマスター プロフェッショナル なのですが、こいつはバンド幅が20mm、wena wrist pro の標準のエンドピースは22mmなので、エンドピースの付け替えが必須なのです。
また、無謀にもDIYでやろうと思ったので、メタルバンド用のコマ外し工具も調達してみました。
コマ調整の手順
普通は時計屋さんに持っていくことを強くお勧めします。
今回購入したコマ外しは標準のエンドピース22mmをバンドから外す用途には微妙に不向きでした。(エンドピースがバンド側から時計側に向かって斜めに広がる形なので、真っ直ぐに押し込むことが難しい)
さて、それでもDIYでやる、という方には、私が行った手順を紹介しておきます。
エンドピース20mmが無理なくつけられそうかどうかを確かめる
手元のスピードマスタープロフェッショナルは、時計の上下バンド部分の幅に微妙に違いがありまして、片方はスムースにつけられそうなのですが、もう片方がクリアランスがなさすぎて入りませんでした。
仕方がないので少量のCRC5-56を塗りつつ、付ける側を入れ替えたりしていたら、ある向きから差し込んだ場合になんとか入りました。(が、多分、傷がついたかもしれない)
上下ともスムースにつけられそうでしたら、特に気にせずにエンドピースをバンドにつけてしまってOKですが、確認せずにバンドを準備した挙句、上下逆じゃないとつけられなかった、なんてことになったら、バンドとエンドピース を再度つけ直しですね。DIYでやるには楽しくない作業です。
エンドピース 22mmを wena wrist pro から外す
最終的なバンドの長さがわかっている場合は、エンドピースだけではなく、長さ調整用のコマも抜いてしまいます。
私の場合は調整用コマを2つ(両端からそれぞれ1つ)外していますが、これは長さが微妙に足りない感じがするので、調整ピースを入れて少し伸ばそうかと思っています。
エンドピースの外し方ですが、たまたま、手元にあったバネ棒外しの反対側がちょうどピンと同様の太さだったので、私はそれをピンに当ててハンマーで軽く叩いてピンをずらし、あとはラジオペンチで引き抜く、という方法で抜いてしまいました。
なお、この時計のバンドはピンがバンドの中でCリングを通って固定されていますが、Cリングは非常に小さい部品なので、DIYの場合はバンドの中から落ちないように注意して作業する必要があります。
Cリングが外れてしまった場合は安全ピンなどの針に軽くさしてバンドに押し込めば大丈夫です。ピンセットでつまんでなんとかしようとすると紛失の元です。
時計 + 20mm エンドピース にバンドを取り付ける。
取り付けの向きに注意してつけましょう。バンドとエンドピースを合わせて、ピンを所定の向きから押し込みます。今回購入したコマ外しはピン押し込みも可能なので、これを使ってじわじわと押し込んで行きます。ある程度押し込んだら、ピン抜き用の方でピンを押して、ピンの頭がバンドから隠れる程度に押し込んでおきます。
こういう工具がない場合は、ペットボトルの蓋を机の上において、半刺しのピンを垂直に押し当てて押し込む、という力技も一応は可能ですが、ピンが折れると残念なことになるので不慣れな方にはお勧めしません。また、この方法ではピンの頭がバンドから隠れるところまで押し込むことは難しいです。
バンド長を調整する
長すぎる場合はコマ抜き、足りない場合はコマを足して調整します。長さ調整のコマのパターンは取扱説明書を参考にしつつ行います。
とりあえずの感想
- 電池は4日くらい持ちます。
- スピードマスタープロフェッショナル + wena wrist pro は重量が150gくらいあるので、Pebble Time に比べると重量感がすごいです。