Thanks Driven Life

日々是感謝

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 台を目指す

Hackers Champloo 2019 に参加 & 登壇しました #hcmpl

去る6月29日、ハッカーズチャンプルー2019が開催されました。

GW も終わったあたりで、運営の方から「発表しませんか?」というお誘いがありました。 沖縄住まいの時は何度か参加していたイベントで、上京してからは遠い存在になったなーと思っていたところでのお声掛け。 せっかくの機会だからと登壇することになりました。

先に総括

  • 無事発表終わってよかった
  • 他の人の発表も面白かった…さすハカチャン…

発表ネタについて

最新のネタがあるわけでもなかったので、過去の成果物*1を引っ張りだして伏線回収するパターンで乗り切りました。思ったより反応が良かったので安心しました。

airplay-elemacs-nes 、まだまだ改良の余地があり、発表資料作成のために読み直したことで久しぶりに触ってみるかーという気持ちになりました。こういうのも発表駆動の醍醐味の一つかもしれません。

他の発表の感想

つらつらっと印象深かったものを書いていきます。*2 発表資料のリンクは、なんとかがんばって探してくれ!

リアルタイムツイートはこちら from:gongoZ #hcmpl - Twitter検索

開発者向けの基盤をつくる ( deeeet さん )

  • なぜ Microservices なのか
  • なぜ k8s なのか
  • がんばるぞい

ここらへん(特に k8s)名前だけは知ってる! ぐらいだったので、タメになった

JavaScriptで黒魔術 ( りゅうさん )

  • ヒエッ
  • うわぁ
  • やべえ

世界は広い

現代のコンピュータにおける自作OS事情 ( hikalium さん )

  • OS さん…
  • なるほどわかる(わからん)

大学の頃 OS 自作入門で何かを作った記憶が出てきた

好きなことをやり続けるということ ( ちょまどさん )

  • 「パーマ禁止だから天パかけてきなさい!」「えぇ…?」
  • 点と点
  • Excel は素晴しいツールである

3点の話よかった。自分は何点あるのだろうか。

サイドプロジェクトが利益を生むビジネスになるまでの苦労と長い道のり ( Paul McMahon さん )

  • 「来日して初めての会社、しばらくすると経営があやしくなり、その時期に開かれる飲み会は全て送別会でした」 泣いた
  • 「そして1人になりました」泣いた
  • 「有料プランリリース。みんなが使ってくれて、利益も出た。みんなありがとう」泣いた

とにかくいい話だった。ベストオブ泣いたでStory

Re; make perl1.0 ( 八雲アナグラさん )

  • Emacs よりは新しい(ザワザワ
  • Docker イメージ作りました!(古代遺跡っぽい)
  • 夏コミ期待

古文書読んでるみたいでおもしろい

意味不明プログラミングの世界 ( tompng さん )

  • LT のトリに居る理由
  • やっぱりペンさんじゃないか…
  • Ruby コードとして実行可能な BMP 画像があって」「???????」

ペンさんの安心と信頼の意味不明さ

というわけで

運営の皆様、スポンサーの皆様、発表者含め参加者の皆様、ありがとうございました!ハカチャンはやっぱり良い。 おそらく来年もハッカーズチャンプルーあるはずなので、未参加の人は機会があれば是非参加してくれよな!

*1:久しぶりに airplay-el のリポジトリ覗いたら 7 years ago って表示されてた。時の流れ…

*2:途中、発表の準備であまり深く聞けてないところもあり