[PHP] PHPでのログレベル

monolog

PHPのログライブラリとして、monologを使っていたのだけれど、ログレベルがやたらにあるなぁと思っていた。
  • DEBUG
  • INFO
  • NOTICE
  • WARNING
  • ERROR
  • CRITICAL
  • ALERT
  • EMERGENCY

[JavaScript][PHP] Setのないプログラミング言語でハッシユをSetとして使う

Setがない。

PHPやJavaScriptではデータ構造として、Set(集合)がない。
少なくとも、PythonのようなSetは存在しない。
※ちなみにSPLでもSetはないみたい。

[unix] 複数キーでjoinしたい

unixでRDBのテーブル結合のように複数のファイルを共通のフィールドで結合する場合はjoinコマンドを使う。

簡単な例

$ cat items
1001 2017-10-08 バナナ 100
1001 2017-10-09 バナナ 90
1002 2017-10-08 りんご 150
1002 2017-10-09 りんご 200
1003 2017-10-08 みかん 80
$ cat shops
1001 2017-10-08 蒲田
1001 2017-10-09 蒲田
1002 2017-10-08 横浜
1002 2017-10-09 横浜
1003 2017-10-08 品川
$ join -11 -21 items shops
1001 2017-10-08 バナナ 100 2017-10-08 蒲田
1001 2017-10-08 バナナ 100 2017-10-09 蒲田
1001 2017-10-09 バナナ 90 2017-10-08 蒲田
1001 2017-10-09 バナナ 90 2017-10-09 蒲田
1002 2017-10-08 りんご 150 2017-10-08 横浜
1002 2017-10-08 りんご 150 2017-10-09 横浜
1002 2017-10-09 りんご 200 2017-10-08 横浜
1002 2017-10-09 りんご 200 2017-10-09 横浜
1003 2017-10-08 みかん 80 2017-10-08 品川

[C] ヘッダファイルで、関数マクロではなくstatic inline関数を使う

Cでの関数名の競合

Cでは小さなユーティリティ関数を関数マクロで実現する場合も多いけど、関数マクロだとコンパイラによる型チェック等の恩恵を受けられなくなってしまう。
※わざと、型に関係なく汎用的な処理をさせたいために関数マクロを使うことも多いと思うけど。

また、Cの場合は名前空間がないために、関数名の競合を避けるために外部に見える関数は関数名にプリフィックスをつけて区別するようにすることも多い。
こうすると、ちょっとしたユーティリティ関数を呼ぶためにプログラム中に長い関数名が登場することになってしまう。