アルパカ三銃士

〜アルパカに酔いしれる獣たちへ捧げる〜

y8 in 城へ参加してきました

岡山城でした。カンファレンス会場は不明門*1で、懇親会 + LT が岡山城でした!

connpass.com

岡山

今回は東京 -> 岡山の飛行機で行きました。

びっくりしたのが岡山の空港名が「岡山桃太郎空港」であったことと空港の周辺が森であったこと!!!

着いて最初の 10 分はどうやって岡山駅まで行けば良いか分からずずっとウロウロしていましたが、案内カウンターみたいなのを見つけて聞いたところ岡山行きのバスが有るということを知って無事に岡山駅まで行けました。

そして夜は uzulla さん達と

岡山城までは現地のシェアサイクルサービスのももちゃりを活用して向かいました。超便利。

岡山城へ到着して写真を撮る。

カンファレンス

カンファレンスの部は聞き入ってしまってて全然ツイートできなかった...

中でも一番良かったのが tomzoh さんのパチスロの仕組みというかエンジニア目線で見たパチスロの話でした。公開できないような内容だったのでこれは岡山城に来た人長が得られた特典だなと強く思いました。

やー乱数生成機を使うタイミング大事だなーと...

懇親会

今回は LT をしてきました。

digispark を使った1ボタンで作るモールスコードキーボードの話をしたんですが、完成していた本体を沖縄に忘れた + それのおかげで徹夜で開発にチャレンジ失敗したためデモを見せることができずに謝罪して終える形になった。

しかし皆さん LT がお上手で笑いまくりだった...

ここで急に懇親会で出てきた美味しかった🍣

感想

普段 Perl と Go のイベントばかり参加していたので他のコミュニティに属する知らない方々と交流することもできてよかったと思います。前日の飲み会とか何故か地元の先輩伝説とかの話をしてしまい懐かしい気持ちになったのはいい思い出です。

運営してくださったスタッフの皆様ありがとうございました。

*1:ずっと「ふめいもん」って思ってたけど「あかずのもん」でした...

Roppongi.pm #1 を開催しました

Roppongi.pm #1 を @magnolia_k_ さんと共同で開催したことを報告します。

roppongipm.connpass.com

色々やるべきタスクが多すぎて報告が遅くなりました。

詳しくは kichijojipm のブログを読んでもらえると、どれくらい YAPC::Tokyo だったのか分かるかもしれないです!

kichijojipm.hatenablog.com

そして今回はどんな感じにイベントの開催をしたのかについて書きます。

懇親会について

スポンサーは株式会社メルカリでした。(いつもお世話になっているので採用ページを貼っておきます :bow: )

careers.mercari.com

今回の懇親会は入場者全員におにぎり入りのお弁当を配り、懇親したい人だけにお酒とおつまみの提供をするスタイルを取りました。
(なんとインスタばえも用意したんですよ!!!!!)

必ずしも全員が懇親会に参加するわけでもないので、食べ物の数を読み間違えると大変なことになります。

これは kichijojipm のブログにも書かれています。

何が大変かというと

  • 参加者の中には懇親会に参加せず、話だけを聞きに来た人もいるため、参加者分のケータリングを用意すると余る可能性が高くなります。
    • 余れば食べ物や業者にも大変申し訳ない気持ちになりますね。
    • さらに言えば片付けが大変なのです...
  • その問題を考慮して量を少なめで注文すれば全員分足りなくなる可能性もある
  • おなかすいてるのに懇親会開始の 22 時くらいまで待たないといけない

そこで考えたのが「入場の際におにぎりセットを配る」でした。

こうすることで参加者全員に配れるし、余らないし、好きな時間に食べられるので最強のおもてなしができたかと思います。

この考えはメルカリの @jollyjoester さんから頂いたものでした。(ありがとうございました!!!!)

トークについて

今回のトークの全てが YAPC::Japan に匹敵すると絶賛の声が上がっていてのでとても嬉しかったです。そして僕も凄く聞いててワクワクしました! 登壇してくださった @yoshiyuki_kondo さん @tokuhirom さん @DQNEO さん @AnaTofuZ さんに感謝しかありません。本当にありがとうございました。

次回について

開催日は未定ですがきっと開催するはずです。お楽しみに!!

Okinawa.pm #7 に参加してきました

Okinawa.pm #7 へ参加してきました。

okinawapm.connpass.com

そしていつもの資料

ふるさとコミュニティへ帰還した感じがしましたが、沖縄の皆さん忙しいのかいつも参加していた方々がいませんでした。

それはちょっと寂しかった...

しかし、今回は僕を含め東京から来た方が多かったのでいい話を聞くことができました。

続きを読む

GitHub で新しく作ったブランチへ push すると Pull Request のリンクが表示される

GitHub の公式ブログにも出てる。 blog.github.com

実際に local でブランチ切って push するとこんな感じ

❯❯❯ git push origin $(git b)
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 982 bytes | 982.00 KiB/s, done.
Total 5 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
remote:
remote: Create a pull request for 'add/new-feature' on GitHub by visiting:
remote:      https://github.com/username/project-x/pull/new/add/new-feature
remote:
To ssh://github.com/username/project-x.git
 * [new branch]      add/new-feature -> add/new-feature

また iTerm2 を使っているので ctrl + click でリンクに飛べるので便利!

ちなみに $(git b) はこういう感じで .gitconfig に登録している。

[alias]
    b = rev-parse --abbrev-ref HEAD

builderscon 2018 に参加してきました

builderscon 2018 に参加してきました。

個人的に今年は Microservices と IoT の話が多かったんじゃないかなぁと思いました。僕は Microservices にハマっているので主に Envoy や Estio, Netflix のキャッシュ事情などの話を聞いていました。

聞いてて中でよかった話をまとめていこうと思います。

Envoy internals deep dive

これは Envoy の開発者である mattklein123 さんによる Envoy の開発裏話をしていました。話の内容は proxy だからこそ必要な技術というよりも広い分野で利用できそうな内容になっていました。

  • Matt さんは Lyft のエンジニアでサービスは Microservices として運用している
  • もともとは AWS を使った Monolith なサービスであったが、問題が起きた場合クライアントが原因か、アプリケーションかそれとも AWS 側で起きたのか検知するのが難しかった
  • これを Microservices にすると改善されるかもしれないと Python で Microservices 化を行い運用した。
    • これでも検知が難しかった。Microservices だと各サービスごとに様々なアーキテクチャプログラミング言語が分かれているためエラーハンドリング、ロギングを含めて検知の方法が一貫していなかったからである。
    • 一貫性を持たせるべくアプリケーションのサイドカーと で proxy をもたせることに。これは Circuit Breaker など Microservices 用のアプリケーションに実装すべきものを proxy に実装させることで一貫性をもたせることができる。
  • Envoy は「エンボイ」じゃなくて「アンボイ」
  • Envoy が管理する情報(プロセスやシグナル、クラスタなど)の更新は基本的に non-blocking で並行処理を行って更新している
    • どうやって同期を行っているんだろうと思ってたらなんと RCU (Read Copy Update) という方法を用いている
  • Envoy は Hot restart というアプリケーションの動作を中断させることなく再起動させる仕組みに対応している
    • アプリケーションだけの Hot restart であれば各プロセス間で共有できるシェアドメモリに格納すればいいが、Microservices だと kubernetes を使うケースが多いため、サービスの再起動 == コンテナの再起動となる。
    • 新しい Hot restart の発明
    • 細かいことはブログに書いてあると言ってたので https://blog.envoyproxy.io/envoy-hot-restart-1d16b14555b5
  • TLS (Thread Local Storage) を持つ

試してみたいことが沢山あります。しかしどれも正確か分からない状態でメモしているので調べながら試してみようと思ってます。コンテナの Hot Restart は面白そう。

JavaCardの世界

主に Microservices の話を聞いていましたが、それ以外の話はここと「遠いようで身近なサウンドエンジニアリング」しか聞いていないです。この2つは本当に聞きに行ってよかったと思ってますが、僕が大学時代 IoT を専門にやっていたこともあり、今回は JavaCard が技術的に興味があったのでかなりメモしました。

  • クレジットカードや SIM カードの金色の部分の上で動いているのが JavaCard
  • JavaCard のスペックの一つとしてなにげに CPU 32 bit だった -> LT の時に聞いたスーファミのスペックより高い(16bit)
  • なぜか version 2.1 から始まっている
  • カードの実装方法次第で GC されるか決まるw
  • 電源が切れていても「無限のクロックサイクル」とみなすので JVM はフリーズ扱いとなる。
  • インスタンス変数は EEPROM に書き込まれるが 10 万行書き込んじゃうと文鎮
  • Hello, World https://gist.github.com/moznion/3bfbc5121afceaebcc77964b4b94517a
  • JavaCard の applet はあの applet ではなくてアプリケーションのこと

非常に話が面白くて、JavaCard を書き込むために必要な素材は買えるのかいろいろ聞こうと思いましたが、おまけに聞きたかったこと全てが揃っていたので神と思いました。

全体的な感想

懇親会チケットを買うタイミングを逃したので参加できませんでしたが、色んな方々とお話することができて自分の知っている世界を少し広げることができたかなと思いました。

今回の投票システムはゲストには投票ができなかったのがちょっと残念でした。(Envoy の Matt さんに投票したかった...)

このようなコミュニティの壁を取っ払った祭りは非常に楽しいのでぜひ来年も開催してほしい気持ちがあります。

運営の皆さんお疲れ様でした。ありがとうございました!

追記

フィードバックボタンの方から簡単にめっちゃ良かったというふうに投稿ができるので是非ポチポチしましょう!(僕はやりました!!)

MySQL の Innodb のロックについて

いろいろ分からなかったので同じ DB に複数セッションで接続をして試してみた。

この時参考にしていたページは

MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.2.8 InnoDB のさまざまな SQL ステートメントで設定されたロック

続きを読む

Perl の API を扱うときに便利そうな場所一覧

随時更新予定です。

Perl-guts

一番最初に読むべきドキュメント。pod に書かれていて色んなところで読むことができるが、個人的に GitHub 上で読むのが好き

github.com

Compiled code

Perlコンパイルについての記述がある。もし使ってる Perl-DDEBUGGING というオプションを有効にしてコンパイルされているものならば、次のように実行することで構文木を見ることができる。

perl -Dx hoge.pl

また perl -D で利用可能なフラグを確認することが可能。

Backwards compatibility

例えば既存の API について知りたいとき下記のように実行するとさまざまなAPI呼び出しの互換性情報を取得することもできることが分かる。

$ perl ppport.h --api-info=sv_magicext

https://github.com/Perl/perl5/blob/32128a7f27904b0ac4cc16cc0c5b0f5238cf60fd/pod/perlguts.pod#backwards-compatibility

Dynamic Scope and the Context Stack

Perl のスコープとスタックの関係性に関する内容。

https://github.com/Perl/perl5/blob/32128a7f27904b0ac4cc16cc0c5b0f5238cf60fd/pod/perlguts.pod#dynamic-scope-and-the-context-stack

ちなみにスタックの情報を格納してる構造体に関するコードはここ

https://github.com/Perl/perl5/blob/7896dde7482a2851e73f0ac2c32d1c71f6e97dca/cop.h#L990-L1026

XS-APItest

中でも APItest.xs の中で Perl API を使ったコードが盛り沢山なため参考になる。

github.com