2018/08/29

さくらレンタルサーバのphpでUDPを送信しようとしたら socket_create が使えなかったので fsockopen を利用

さくらレンタルサーバのphpでUDPを送信しようとしたら socket_create が使えなかったので fsockopen を利用して UDPを送信

function UdpSender($host, $port, $msg){
 /*
 $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
    socket_sendto($sock, $msg, strlen($msg), 0, $host, $port);
 socket_close($sock);
 */
 
 $fsock = fsockopen("udp://${host}", $port);
 if($fsock){
  fwrite($fsock, $msg);
  fclose($fsock);
 }
}

RICOH MP1601 シリーズで、マルチページのFAXをメール転送させた時に、ナンバー・ディスプレイ情報が付加されない

RICOH MP1601 シリーズで、マルチページのFAXをメール転送させた時に、ナンバー・ディスプレイ情報が付加されない

受信FAXをメール転送すると、件名に
From "03-XXXX-XXXX"(Fax Message NO.xxxx)
みたいな情報が入ってくる、上のは送信元FAXに設定された、送信元情報(ハイフンが入っている)

ナンバー・ディスプレイを利用した回線で、ナンバーディスプレイを受信する設定に
RICOH MP1601 のナンバー・ディスプレイ設定はデフォルトでオフになっているので、パラメータ設定で スイッチ25のビット6をオンにする
すると
From "03XXXXXXXX"(Fax Message NO.xxxx)
ハイフンのない番号で表示される

ところが、複数ページのFAXを受診した場合、上記の番号部分が抜け落ちてしまう
この場合、
ナンバー・ディスプレイの優先順位を上げる→ パラメータ設定で スイッチ30のビット5をオンにする
これで、ナンバー・ディスプレイ情報の優先度が上がって、メール件名に発信者番号が表示されるようになる
このパラメータ、デフォルトの最優先が「送信者の発信元名称」なんだけど...

2018/08/22

サマータイム導入時のOSとアプリケーション

日本のサマータイム(+1 or +2時間)が現実のものとなったときのための調査メモ

OS側
ほとんどのOSがUTC(世界標準時)で動作しつつ、ローカルタイムもAPIによってアプリケーションへ提供している。したがって、現行OS(サポートが終了していない)は、アップデートにより日本のタイムゾーンを設定していれば、該当日時にローカルタイムを進めたり戻したりする。
サポートが終了したOSは、タイムゾーン設定による調整(サマータイムを導入した日本の場合)は行われないため、常に UTC + 9でローカルタイムが提供される。これらのサポート終了OSで夏時間を実現するには、タイムゾーンを UTC+10 または UTC+11 の地域に変更すればよい。

このときオーストラリアなど夏時間を利用している地域を選択すると混乱を生じる可能性があるので、その年に夏時間を導入しないであろう、ウラジオストクやサハリンを選択するのがベターかもしれない。
タイムゾーンを変更しても言語やデフォルトエンコードには影響は出ない(例: 日本人が海外で自身の端末を使う場合、タイムゾーンは変更しても言語は日本語のままといった状態)

アプリケーション側
多くのアプリケーションが、表示などについてはローカルタイムを利用しているハズ
ネットワーク関連のアプリケーションやファイルシステムではUTCを用いる事が多いが、表示を現地時間に合わせるため UTCからの時差をOSから取得したりローカルタイムへAPIを利用しているので、結局ローカルタイムに依存することとなる

ローカルタイムを利用したアプリケーションで問題になるのが、サマータイムへ切り替わる時間帯と、戻る時間帯に運用しているアプリケーション。
切り替わり時には、1 or 2時間一気に時刻が進むことになり、製造ラインなどで大きな問題が出る可能性がある(1時間かけて投入する材料を一気に投入するような事故)。
戻る時間には、同じ時刻が 1 or 2時間発生するので、製造ラインなどで先程の逆の事や、受注順序の判別が不能などの可能性。
問題が起こる可能性が考えられる場合、予めOS側で夏時間への切替をオフにしておく
OS側の設定が変更できない環境の場合、UTC + 9 を常に計算する等の修正が必要になるが、それなら UTC とローカルタイムを利用するように根本的に変更すべきかもしれない

ローカルタイム + タイムゾーンからUTCを取得することは可能だが(Win: GetUtcOffset)夏時間終了前は、同じ時間が2度訪れるため、何らかの形でUTCを記録しておくしかない

2018/08/21

さくらレンタルサーバでhttps強制転送(+Basic認証)とサーバ変数一覧

.htaccess で http → https リダイレクト(SSL強制)の設定していたところ、以前と変数が違っているよーな気がしたので調べた結果(2018/08/21時点)
独自ドメイン(SNI) で接続 + php の print_r($_SERVER) による情報

これ、2018/3 にさくらが仕様変更を行ったようで、X_SAKURA_FORWARDED_FOR を利用しなくても、リダイレクトループが起きないようになっているみたい
※転送でも HTTPS の値は消えなくなり、X_SAKURA_FORWARDED_FOR の存在は保証しないので、HTTPS の値を利用すべきな内容

ということは .htaccess の記述はシンプルになり

https へのリダイレクト
RewriteEngine On
RewriteCond %{ENV:HTTPS} !^on$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

https のみ Basic認証をかける
<If "%{HTTP:X-FORWARDED-PROTO} == 'https'">
AuthType Basic
AuthName "Auth Access"
Require valid-user
AuthUserFile パスワードファイル
</If>
判定に "%{ENV:HTTPS} == 'on'" を用いたところ、何故か.htaccess のあるルート / のみ認証がかかってしまい、それ以外は認証がかからなかった

※以下の環境変数を.htaccessで利用する場合 _(アンダーバー)と-(ハイフン)の違いに注意

http:// リクエスト
[REDIRECT_STATUS] => 200
[PHPRC] => /home/さくらユーザー名/www
[PATH] => /usr/local/bin:/usr/bin:/bin
[HTTP_HOST] => www.example.com
[HTTP_X_REAL_IP] => リモートホストIP
[HTTP_X_FORWARDED_PROTO] => http
[HTTP_LISTEN_IPADDR] => サーバIP
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => ja,en-US;q=0.8,en;q=0.5,zh-CN;q=0.3
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_DNT] => 1
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache
[SERVER_NAME] => www.example.com
[SERVER_ADDR] => 100.64.0.93
[SERVER_PORT] => 80
[REMOTE_HOST] => リモートホスト名
[REMOTE_ADDR] => リモートホストIP
[DOCUMENT_ROOT] => /home/さくらユーザー名/www/example.com
[REQUEST_SCHEME] => http
[CONTEXT_PREFIX] =>
[CONTEXT_DOCUMENT_ROOT] => /home/さくらユーザー名/www/example.com
[SERVER_ADMIN] => support@sakura.ad.jp
[SCRIPT_FILENAME] => /home/さくらユーザー名/www/example.com/check/index.php
[REMOTE_PORT] => 62823
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /check/
[SCRIPT_NAME] => /check/index.php
[PHP_SELF] => /check/index.php
[REQUEST_TIME_FLOAT] => 1534814528.2287
[REQUEST_TIME] => 1534814528

https:// リクエスト
[REDIRECT_STATUS] => 200
[PHPRC] => /home/さくらユーザー名/www
[PATH] => /usr/local/bin:/usr/bin:/bin
[HTTPS] => on
[HTTP_HOST] => www.example.com
[HTTP_X_REAL_IP] => リモートホストIP
[HTTP_X_FORWARDED_PROTO] => https
[HTTP_X_SAKURA_FORWARDED_FOR] => リモートホストIP
[HTTP_LISTEN_IPADDR] => サーバIP
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => ja,en-US;q=0.8,en;q=0.5,zh-CN;q=0.3
[HTTP_ACCEPT_ENCODING] => gzip, deflate, br
[HTTP_DNT] => 1
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[HTTP_CACHE_CONTROL] => max-age=0
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache
[SERVER_NAME] => www.example.com
[SERVER_ADDR] => サーバIP
[SERVER_PORT] => 443
[REMOTE_HOST] => リモートホスト名
[REMOTE_ADDR] => リモートホストIP
[DOCUMENT_ROOT] => /home/さくらユーザー名/www/ルートパス
[REQUEST_SCHEME] => https
[CONTEXT_PREFIX] =>
[CONTEXT_DOCUMENT_ROOT] => /home/さくらユーザー名/www/example.com
[SERVER_ADMIN] => support@sakura.ad.jp
[SCRIPT_FILENAME] => /home/さくらユーザー名/www/example.com/check/index.php
[REMOTE_PORT] => 11490
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /check/
[SCRIPT_NAME] => /check/index.php
[PHP_SELF] => /check/index.php
[REQUEST_TIME_FLOAT] => 1534814441.4968
[REQUEST_TIME] => 1534814441

2018/08/17

埋め込みの Google Map で API key を追加するもののエラーとなる

Google Map の API にキーが必要になって久しいが、忘れてたマップに key を取得して、URLに追加したもののリクエスト数と同じエラー数

よくよく確認したら、課金情報が未設定のアカウントでした~
いつでも課金できる状態じゃないとNGなのね

Firefox のアドオン Skip Redirect を使っていると、Google翻訳が機能しない

Firefox のアドオン Skip Redirect を使っていると、Google翻訳が機能しない


こういうリンクを開くと、翻訳がスキップされて元のページが表示される


Skip Redirect の設定ページで、Blacklist に /translate を追加する

Tasker %WIFII 変数の値

Android アプリ Tasker の %WIFII 変数の情報をメモ

接続中

>>> CONNECTION <<<

"AP1"

Mac: xx:xx:xx:xx:xx:xx
IP : x.x.x.x
Sig: 9
Spd: 144Mbps
Chl: 4


未接続状態

>>> SCAN <<<

AP1
Mac: xx:xx:xx:xx:xx:xx
Cap: [WPA2-PSK-CCMP][WPS][ESS][BLE]
Sig: 9
Chl: 4

AP2
Mac: xx:xx:xx:xx:xx:xx
Cap: [WPA2-PSK-CCMP][WPS][ESS]
Sig: 9
Chl: 36

以下、最終SCAN情報の繰り返し(未接続や接続不可のAPも含む)
SSIDが隠されているアクセスポイントは AP1やAP2の場所が空行になります


接続済みの判断は CONNECTION の文字列、接続先はそれと同時にダブルコーテーションで囲まれた "SSID名"
※未接続時の情報はダブルコーテーションで囲まれていない

2018/08/02

構内PHS互換電池あれこれ

構内PHSに代われる安定した内線網がなかなか登場しない中、昔のPHS端末を電池がダメになったことで諦める事もおおいでしょう
が、案外多いPHSの互換電池、本家より安かったりもします

ドコモの名機 631s や 621s で使えたりする電池

NTT東日本の 電池パック094だけど、日立 HI-D5 PS や HI-D6 PS と 電圧、容量、サイズ、コネクタ極性が同じ電池