Thanks Driven Life

日々是感謝

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:途中、発表の準備であまり深く聞けてないところもあり

Fit Boxing を始めて30日が経過しました

ゴールデンウィークも終盤に差し掛かったある日、ふと思い立って FIt Boxing を購入しました。

以前から評判の良さも合わせて話には聞いており、また週末に趣味で格闘技をしている同僚が「これはいいぞ」と勧めてくれたのもあって、 日頃の運動不足解消も兼ねてプレイしてみることにしました。

本記事では、とりあえず1ヶ月続けてみた記念として、数値的な変化も合わせて所感を記していきます。

前提

  • 身体的な話
    • 肥満体(動けば痩せる。動き続けば)
  • 生活的な話
    • 食生活は変えていない
    • 強いて言えば平日にコカ・コーラを飲んでいない
  • 強度的な話(Fit Boxing の設定)
    • 体力強化・全身・20〜40分
    • 朝・夜どちらか必ず20分
      • 夜飲み会などでプレイできない可能性が高い日は朝に

記録

ざっくりとした計測結果です。 体脂肪とかも計測していますが、ブレがすごすぎて微妙だったので今回は載せませんでした。

体重
1日目 98.8 kg
30日目 96.2 kg
結果 -2.6 kg

f:id:gongoZ:20190603221305p:plain

プレイ感

  • 結構楽しい
  • フィードバックがあるのは良い
    • 声かけもそうだが、殴った時の振動が地味に嬉しい
    • Xbox360 + Kinect の「ユアシェイプ フィットネス・エボルブ」経験から、特にそう思う
      • 無を殴ってる感じが強くてつらかった
  • ダッキングや左右ステップが反応しづらい時も多々ある
    • リズムゲーとして追求しすぎると逆にストレス
    • とりあえず自分が体動かせていれば ok

ネクストアクション

いけるところまで

Turnip 4.0.0 (Gherkin 6 対応) リリースしました

本記事の概要

Turnip の依存ライブラリの一つである Gherkin が 6 にメジャーバージョンアップしてそろそろ半年を迎えようとしています。 かなり遅れてしまいましたが、ようやく Turnip も Gherkin 6 に対応したので、その報告です。

また、 Gherkin 6 から新しいキーワードである Rule が追加されたので、その紹介もついでにやっていきます。

Turnip 4.0.0 の内容

https://github.com/jnicklas/turnip/releases/tag/v4.0.0

Gherkin 6 対応がメインとなります。

  • Gherkin 6 は 5 と API 互換性が無いため、Turnip もメジャーバージョンを上げました

    .feature ファイルのパース後の構造が変わっているだけなので、 Turnip::Node::xxxAPI には変更はありません

  • これまで使ってきた .feature ファイルはそのまま使えます

    Turnip を拡張して使っていなければ、バージョンアップに合わせての対応は必要ありません

Turnip そのものに新機能や改善があったわけではないため、普段使いであればあまり意識しなくても良さそうです。

Gherkin 6 の内容

Gherkin 6 では、下記キーワードが追加されました

  1. Rule
  2. Example (Scenario キーワードの別名)
  3. Scenario Template (Scenario Outline キーワードの別名)

2 と 3 はただのシノニム追加なので、1 の Rule について紹介していきます。

A new Rule keyword has been introduced, and acts as a grouping of one or more Example s - a new synonym for Scenario.

gherkin/CHANGELOG.md

これは例題を見るとわかりやすいです。

# https://docs.cucumber.io/gherkin/reference/#rule
# https://github.com/jnicklas/turnip/blob/v4.0.0/examples/gherkin6_syntax.feature

Feature: Gherkin 6 syntax

  Background:
    Given there is a monster with 2 hitpoints

  Scenario: Battle
    When I attack it
    Then the monster should be alive
    When I attack it
    Then it should die

  Rule: Battle with preemptive attack
    Background:
      Given I attack the monster and do 1 points damage

    Example: battle
      When I attack it
      Then it should die

  Rule: Battle with preemptive critical attack
    Background:
      Given I attack the monster and do 2 points damage

    Example: battle
      Then it should die

上記 feature を RSpec に落としてみたイメージはこんな感じ:

describe 'Gherkin 6 syntax' do
  before { send('there is a monster with 2 hitpoints') }

  describe 'Battle' do
    it do
      send('I attack it')
      send('the monster should be alive')
      send('I attack it')
      send('it should die')
    end
  end

  context 'Battle with preemptive attack' do
    before { send('I attack the monster and do 1 points damage') }

    describe 'battle' do
      it do
        send('I attack it')
        send('it should die')
      end
    end
  end

  context 'Battle with preemptive critical attack' do
    before { send('I attack the monster and do 2 points damage') }

    describe 'battle' do
      it do
        send('it should die')
      end
    end
  end
end

これまでの feature ファイルでは、Feature の下にある Background や Scenario が同じレイヤーにのみ存在を許されており、「このバックグラウンドはこのシナリオにのみ適用したいんだけど、ここに書くと全てのシナリオで発動しちゃうんだよなぁ」といったことが稀によくありました。その回避策として「別の Feature に分ける」「タグをつけて Step 側でなんとかする」といった対応が取られていたかと思います。

そこで Rule を使うと、そこらへんをよしなにいい感じに書けるようになる!みたいなやつだと思います!多分!!

まとめ

あけましておめでとうございます。本年もよろしくお願いします。