職務内容の違いによって当然価値観も違うよね。と思った話し

自分の経験則上、バックオフィスシステムの開発やメンテなんかを依頼してくるような会社は、エクセル方眼紙に図面入りの設計書書いて上げると喜ぶし、テスト報告書の納品は絶対だけど、テストコードは必要ない。といった会社が多い。
まあ、そういった仕事を生業にしていると、それを相手にするノウハウは自然とついてきて、うん十年続けてるとそれなりに技術者としてのプライドが出てくる。

それ相手にしているエンジニアとrailsテスト駆動開発してるようなエンジニアは「開発効率」の価値感が全然違うので、SNS等でそういった両者が開発効率について議論してもあんまり生産的な議論にならないな〜 とかふと思った。
前提が全然違うっぽいので。。。

自分的にはそういう仕事はまだまだなくならないと思うし、それはそれで立派なエンジニアの仕事だと思うのでプライド持っててもいいと思うのだが。

まあ、構成管理ソフトくらいは使えよな。とは思う。

禁酒中

3月7日より禁酒中 禁酒2週間経過

理由:肝臓の値が高いため

変化したこと

  • 湿疹持ちだが、多少改善したように感じる
  • 酒なしでも寝つけるようになった
  • 熟睡できてる感がある 飲酒時はトイレに行ったり、朝、睡眠不足を感じることがあった
  • 今回はあまり甘いものが欲しくならない
  • 食欲は変わらず。 がセーブできる
  • 多少、ポジティブ思考に ストレスになるようなことがあっても、飲酒で気を紛らわすのではなく、向き合えるようになった気がする
  • エレベーター、エスカレーターを控えて階段の昇降までしてるが、体重は減らない
  • 飲酒欲求は禁酒当日とさほど変わらず 飲みたい時は飲みたい
  • お金が減らない

デメリット

  • お酒の味が味わえない

リカバリーで競合が発生したためステートメントをキャンセルしています

レプリケーション環境下のスレープサーバへの参照問い合わせ、主に重いクエリ発行時に発生する

原因は以下のクエリで確認できる

database =>  select * from pg_stat_database_conflicts ;
 datid |  datname  | confl_tablespace | confl_lock | confl_snapshot | confl_bufferpin | confl_deadlock
-------+-----------+------------------+------------+----------------+-----------------+----------------
 16386 | database    |                0 |          0 |           1 |               0 |              0

この場合は参照中のテーブルに対してマスタ側で変更があったことを表す
こういった場合、スレーブ側はmax_standby_streaming_delayの値まで、レプリケーション同期を待つのだがmax_standby_streaming_delayの値内で処理が終わらない場合、confl_snapshotとなる

max_standby_streaming_delayはdefaultで30秒となっており、30秒以上かかるクエリ且つマスタ側で対象テーブルにデータ更新が行われると発生する

単純に値を増やす、または-1(無制限)とすれば解決するのだが、その分、長時間かかるクエリ時のwal同期が遅れるので注意する
可能であればシーケンシャルスキャンする専用のスレープを用意し、同期遅延前提でのデータベースとして取り扱うことを考える

ポートを使用しているプロセスを調べる

lsofを使う

$ lsof -i:22

COMMAND   PID   USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
httpd     503 apache    4u  IPv6 147871264      0t0  TCP *:http (LISTEN)
httpd    2552 apache    4u  IPv6 147871264      0t0  TCP *:http (LISTEN)
...

プロセスIDを指定するとプロセスが使用しているファイルが参照できる

$ lsof -p 503

COMMAND PID   USER   FD   TYPE    DEVICE SIZE/OFF      NODE NAME
httpd   503 apache  cwd    DIR     202,1     4096         2 /
httpd   503 apache  rtd    DIR     202,1     4096         2 /
httpd   503 apache  txt    REG     202,1   528608    410347 /usr/sbin/httpd
httpd   503 apache  DEL    REG       0,5          184309674 /dev/zero
httpd   503 apache  mem    REG     202,1   275920    691626 /usr/lib64/php/5.6/modules/redis.so
...

multipart/form-data時の生POSTデータを見る

php://input は、 enctype="multipart/form-data" に対しては使用できません。とのこと。
どうやら、Content-type: multipart/form-data の時のみ機能しないみたい。
とのことなので、.htaccessでmultipart/form-dataのヘッダーをunsetすればよい

.htaccess

SetEnvIf content-type (multipart/form-data)(.*) MULTIPART_FORMDATA=true
RequestHeader unset content-type env=MULTIPART_FORMDATA
<?php
var_dump(file_get_contents("php://input"));