アルパカ三銃士

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

k8s で pod を再起動する

再起動するというか新しい pod を作り直すって感じ。 方法は単純で --replicas=0 にしてあげてもとに戻せばいい。例えば元々の replicas が 2 だった場合こんな感じ

kubectl scale deployment chat --replicas=0 -n chat-service
kubectl scale deployment chat --replicas=2 -n chat-service

replicas=0 にした時

NAME                    READY     STATUS              RESTARTS   AGE

replicas=2 にした時

NAME                    READY     STATUS              RESTARTS   AGE
chat-55cf66964b-c9nmp   0/1       ContainerCreating   0          16s
chat-55cf66964b-qvm96   0/1       Running             0          15s

あ当たり前だけど、検索するまでこの発想がなかった

参考

medium.com

複数変更を fmt する

git s は git status -sエイリアスとしている。

perl -nlae 'print $F[1]' をすることで変更をした terraform のファイルのみを列挙する。

terraform fmt の引数は絶対に一つしか受け取らない。ので次のようにループを組む必要があった。

for p in $(git s | perl -nlae 'print $F[1]'); do terraform fmt $p; done

emacs で短径選択、編集する方法

追記: 求めていたのが見つかった!!

追記ここまで ------

ここで見つけた

superuser.com

現在標準頑張ろうとしているので以下で十分

  1. 編集したい位置へ移動
  2. C-SPCACE
  3. 編集したい範囲を選択するために移動
  4. C-x r t 入力したい文字列 リターンキー

ここも良さそうだけど後で見る

techblog.kayac.com

YAPC::Tokyo 2019 へボランティアスタッフとして参加しました

tl;dr

時代を支えてきた Perl ハッカーの想いを聴けたので、それを引き継いでいきたいと同時にめっちゃ Perl 書きたくなりました。

前夜祭

仕事の都合で少し遅れて参加しました。全体的に LT が凄く面白かったので全然飽きませんでした。

ただ個人的に交流する時間がなかったのが残念でした。

個人的に yappo さんと沢山話せたのは嬉しかったです。(ステッカーももらった)

あと emacs で設定を書くために Lisp を覚えたいから Lisp interpreter を書いたという話をしました。

ちゃんと作ってどこかで詳しい話をしたいです。

p5-Lisp::Tiny: https://github.com/Code-Hex/p5-Lisp-Tiny Parser の書き方のスライド: https://speakerdeck.com/codehex/perl-dezuo-ru-tiny-shell

本編

本編では room0 の方でスタッフをやってました。が、 YAPC座談会の方で YAPC::Okinawa 代表ということで座談会も参加してました。詳しくは FUON さんのブログでまとまっています。

話しやすく話題を振ってくださったので素晴らしい司会に感謝です。

ameblo.jp

キーノート

tokuhirom さんでした。かなりエモい話がいっぱい出てて、個人的には

  • あるモジュールを作成するためにハッカーが集まって開発していった
  • 誰かに許可を貰う前にコードを書いてた

といった話がとても好きでした。最近だと有志で集まって開発しようぜといった話を聞かないのですごく憧れを感じました。

もう少し生まれるのが早ければ、Perl がもっと楽しい時代を味わうことができたんだろうなと考えてしまうキーノートでした。

そして、これから Perl を使うモチベーションはこれだなと思ったスライドがあったので撮影しました。

感想

全体的に凄く良かった。Perl は自分の母国語みたいなものなので、コミュニティでは久しぶりに会う方々と近況確認やアイディア出しなどができました。

ベストトーク賞の表彰式で songmu さんが選ばれたのかなりグッとくるものがあって、見てるこちらもとてつもなく嬉しくなりました。そして moznion さんは毎回、斜め上からくるアイディアで人々をあっと言わせるものを作成しているので、自分もこうなれるようになりたいと本当に尊敬してます。

お二人ともおめでとうございます!

Perl 界は本当に尊敬できる方々が多いので、自分もそうなれるように頑張っていこうと毎回勇気づけられます。次回も YAPC 開催されてほしいなー

Perl で簡単に n 文字ずつ区切る

Perl である文字列を n 文字ずつ区切って配列にする方法。

例として "abcdefghi" が与えられた時に 3 文字ずつで区切りたい場合は "abc", "def", "ghi" となることが期待される。

これを簡単に行う方法を思いついたので以下に記述。

sub sep { $_[0] =~ /.{$_[1]}/g }

# 3 文字ずつ取得
my $str = "abcdefghi";
print "$_\n" for sep $str, 3;

3 文字の場合何をしているかというと sep サブルーチンの中では実質、次の正規表現が実行される。

"abcdefghi" =~ /.../g

これが 3 文字ずつで区切った配列を返す。それで .{$_[1]} としているのは上記の条件だと .{3} となり、... と等しくなる。

これは便利!!

Perl で Protobuf を扱うために Google::ProtocolBuffers::Dynamic を使ってみる

こちらは Perl Advent Calendar 2018 の 25 日目です。

gRPC を Perl でやってみようと思ったのですがインターネット上に Perl で Protobuf を扱うような文献がなかったので、まずはここから書かないとだめでしょう!ということで内容を変更してお届けします。

Perl で Protobuf を扱うのに適したモジュールは 2018 年現在だと Google::ProtocolBuffers::Dynamic が一番良さげっぽい。しかし、proto2 には対応しているが proto3 の機能に一部対応できてないとのこと*1

metacpan.org

続きを読む

WEB+DB PRESS Vol.108 の Perl Hackers Hub に Inline::C で始める C 拡張入門に関する記事を寄稿しました!!

僕自身 C 言語を使って Perl を拡張することが好きだということもあって、今まで何回か XS を使ったモジュールの公開や、それらについての内容で登壇もしました。

(今までリリースしてきたモジュール一覧)

Kei Kamikawa (CODEHEX) - metacpan.org

寄稿内容は Perl をやっていれば一度は絶対耳にする Inline::C モジュールについてです。

metacpan.org

Inline::C がどんなモジュール化簡単に紹介しますと、Perlソースコード上で C 言語のコードを埋め込み実行することが可能になる超変態モジュールです。C 言語で記述した部分はちゃんとコンパイルされるので実行速度も Perl よりも格段と早くなります。

この内容に関して知っている方はとても多いとは思いますが、実際に Inline::C を使ってコードを書いたことのある方って実は少ないのでは?と感じたことが有りました。そこで寄稿した内容として

  • Perl を C で拡張するための入門として、なぜ Inline::C なのか
  • Perl で C を使うのにはどんなメリットが有るか
  • Inline::C で Perl の C 拡張を書いてみよう
  • 実際行っている処理はどんな感じなのか
  • Inline::C から XS へ進むために参考になるモジュールや参考になる資料

などなどです。

サポートサイトからダウンロードできるサンプルコードも幾つか用意したので、是非一度この機会に Inline::C と戯れてみてください。「こんな事できたんだ!!」といった発見もきっとあるはずです。

WEB+DB PRESS Vol.108 は今月 12 月 23 日に全国の書店にて発売します。Perl Hackers Hub 以外にもとても興味深い特集が沢山あるのでぜひぜひお手にとってみてください。

謝辞

編集を担当して頂いた技術評論社の稲尾さんを始め、直接監修して頂いた牧さん、お誘い頂いた songmu さん、職場のチームの方々に様々な場面で助けて頂いたことを非常に感謝しています。本当にありがとうございました。

宣伝

来年の 1 月 26 日に YAPC::Tokyo が浅草橋ヒューリックホール&ヒューリック カンファレンスで開催されます。一般・学生チケットがまだ残っているようなので検討している方はとりあえずチケットを確保して、当日参加することをオススメします!(僕も行きます!!)

yapcjapan.org