Thanks Driven Life

日々是感謝

merciful-polluter 0.0.5 をリリースしました

概要

magic_quotes_gpc のエミュレートを ON にしている時、$_REQUESTエスケープされていなかった問題が修正されました。

例えば下記のようなサーバーサイドのコードがあるとします。

<?php
$request = new Gongo\MercifulPolluter\Request();
$request->enableMagicQuotesGpc();
$request->pollute();

var_dump($_GET);
var_dump($_POST);
var_dump($_COOKIE);
var_dump($_REQUEST);

次にクライアントとして下記コードを実行してみます。

$ curl 'http://localhost/?hoge=ho"ge' -X POST -d "huga=hu'ga" -b 'piyo=pi\yo'

その結果がこちら!

// $_GET
array(1) {
  ["hoge"]=>
  string(6) "ho\"ge"
}

// $_POST
array(1) {
  ["huga"]=>
  string(6) "hu\'ga"
}

// $_COOKIE
array(1) {
  ["piyo"]=>
  string(6) "pi\\yo"
}

// $_REQUEST
array(3) {
  ["hoge"]=>
  string(6) "ho\"ge" // 修正前は "ho"ge" だった
  ["huga"]=>
  string(6) "hu\'ga" // 修正前は "hu'ga" だった
  ["piyo"]=>
  string(6) "pi\\yo" //  修正前は "pi\yo" だった
}

まとめ

そろそろ enableRegisterGlobals() とか用意してもいいかもしれない( magic_quotes_gpc だけ有効化したい、みたいなケースに対応)

merciful-polluter 0.0.4 をリリースしました

実に5年ぶり & 令和初となるバージョンアップです。

概要

$_GET$_POST で同じキーにそれぞれ違う配列がセットされている時に、オリジナルとは違った結果になる不具合を修正しました。

解説

例えば下記のようなサーバーサイドのコードがあるとします。

<?php

if (version_compare(PHP_VERSION, '5.4.0', '>')) {
    require_once './vendor/autoload.php';

    $request = new Gongo\MercifulPolluter\Request;
    $request->pollute();
}

var_dump($foo);

// php.ini は下記を想定
//
// register_globals = 'On'
// variables_order = 'GP'

上記コードを、例えば PHP 5.3 で動かしてみると:

$ curl 'http://localhost?foo\[bar\]\[a\]=123' -X POST -d "foo[bar][b]=789"
array(1) {
  ["bar"]=>
  array(2) {
    ["a"]=> string(3) "123"
    ["b"]=> string(3) "789"
  }
}

こうなりますが、これを PHP 7.1 with merciful-polluter 0.0.3 で動かしてみると:

$ curl 'http://localhost?foo\[bar\]\[a\]=123' -X POST -d "foo[bar][b]=789"
array(1) {
  ["bar"]=>
  array(1) {
    ["b"]=> string(3) "789"
  }
}

もうお分かりかと思います。

  • エミュレート版 (merciful-polluter) はそのまま上書きしちゃっている
  • オリジナル版は array_merge している

この違いがありました。それを裏付けるコードがこちら

https://github.com/php/php-src/blob/php-5.3.29/main/php_variables.c#L647-L668

正確には「上書きする値と上書き先の値がどちらも Array だった場合 array_merge_recursive (相当の処理)を行う」がオリジナルの挙動でした。

まとめ

令和です。

Fit Boxing を始めて4ヶ月が経過しました

先月はこちら: http://gongo.hatenablog.com/entry/2019/08/02/073526

記録

開始 (8月上旬) 先月 今月 増減 (先月/開始)
98.8 95.4 93.8 -1.6 / -5.0 kg

f:id:gongoZ:20190901232039p:plain

  • 8月中旬あたりで一度増えるも、なんとか巻き返した
  • 下旬には一度 93.2 まで落ちた。92kg台も近い

体調

いたって問題なし

ネクストアクション

あわよくば 91kg 台に突入したい

builderscon tokyo 2019 に参加しました

この季節がやってまいりました。

まずは登壇された皆様、運営の皆様、参加者の皆様、お疲れさまでした & ありがとうございました! 今年も楽しかったです!

そんなわけで、以下、参加したセッションの雑な感想(前夜祭は不参加)

1日目

2日目

朝一は遅刻しました

総括

相変らず builderscon に参加すると「よっしゃ開発するぞ!」という気持ちになります。ちなみに前回 (builderscon 2018) 参加した時は emacs-nes を作るきっかけ を得られました。今回もちょっと作りたいのを思い付いたので、やっていき

おわり

来年も参加するぞー

Fit Boxing を始めて3ヶ月が経過しました

先月はこちら: http://gongo.hatenablog.com/entry/2019/07/03/084739

記録

開始 (6月上旬) 先月 今月 増減 (先月/開始)
98.8 95.0 95.4 +0.4 / -3.4 kg

今月は下がらず、現状維持

f:id:gongoZ:20190802073051p:plain

体調

7月はなんか膝を悪くしたので運動量を減らしました。 普段(6月あたり)は一日30〜40分ぐらいだったのを、7月は10分〜20分に。

  1. Fit Boxing の影響で、膝疲れる!!ってなることが多くなった
  2. その時「膝サポーターでも使ってみるかー」ってやったのが更に悪くした気がする
    • サポーターが悪いのではなく、自分の買ったやつがサイズが合わなかったっぽい

ネクストアクション

そんなわけでじょじょにペースを戻していこう

Emacs 上でニコニコ動画っぽくコメントを流せる emacs-nicomment

f:id:gongoZ:20190725011656g:plain

経緯

  • 最近は tooltip ? popup ? ライブラリとして posframe が流行っているらしい
  • API を見ると、たしかにシュッと使えそう
  • そんなある日、下記ツイートを発見

  • 真似したろ!!

API

  • nicomment-mode

    • global-minor-mode です
    • このモードの時のみ、下記 API によるコメントの追加と更新(移動とか消失)が行われます
    • なんかうまく消失しなかったりした場合も、mode を disable にすればシュッと消えてくれる(はず)
  • nicomment-add-comment

    ニコニコ動画のコメントで使える 基本的なコマンド は対応してみました。

    command (option) values
    position ue, shita, naka (右から左に流れるデフォルト)
    color 16進数カラーコード、red とか green とかの名前
    size large, small, normal

    lisp (nicomment-add-comment "わこ" :position 'ue :color "red" :size 'large)

実装の概要

  1. nicomment-add-comment を実行すると、それぞれにユニークIDを生成して渡す
    • この ID を posframe-show の第一引数で使っている
  2. 初回の posframe-show のみ poshandler 経由で posframe オブジェクトの位置を取得して、コメントの x, y をセットしている
    • nicomment--comment-start-at-right
    • poshandler を使わなくてもコメントが持っているフレーム情報は取得できるけど、今回はこの流れで
  3. 「コメントの位置移動」「コメントの削除判定」「生き残っているコメントの表示」をメインルーチンとして run-at-time で一定時間毎に実行している
  4. コメントの削除判定は以下の2つ
    • コメントが左端に到達した時
    • 移動しないコメント( :position 'ue とかしたやつ) は、一定時間を過ぎると消える
    • nicomment--comment-deletable-p

できていないこと

  • コメントの先頭が左枠に辿りついたらすぐに消えるようになっちゃっている
    • 本来は、ちゃんと少しずつ見切れていくようにしたかったけど…
  • コメントが残ってる状態でフレームサイズ変えるといろいろアレ

    f:id:gongoZ:20190725072749g:plain

    これはこれで面白いということで

  • 他にも多分あるはず

とりあえず雰囲気動いたので良しとしています

まとめ

posframe 、手軽で便利っぽい

Fit Boxing を始めて2ヶ月が経過しました

記録は公開する方が続けられそうなので、1ヶ月ごとにやっていく

先月はこちら: http://gongo.hatenablog.com/entry/2019/06/03/223016

記録

開始 (5月上旬) 先月 今月 増減 (先月/開始)
98.8 96.2 95.0 -1.2 / -3.8 kg
  • 先月よりも減りは小さいものの、とはいえ順調な気はする
  • 一日だけ 94 kg 台に突入したことがあり、テンションが上がった

せっかくなので、今回は体脂肪量のグラフも載せてみる。 バラツキがあるのでなんともいえないが、雰囲気減少傾向っぽい。

体重 体脂肪
f:id:gongoZ:20190703083935p:plain:w400 f:id:gongoZ:20190703084313j:plain:w400

体調

肩凝りが軽減されている感触がある

ネクストアクション

94 kg 台を通常のものとし、あわよくば 93 kg 台を目指す