アルパカ三銃士

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

GCP にて他プロジェクトの GKE クラスタを使えるようにする

GCP の話。GCP にはプロジェクトという概念があって、普段自分が使ってるプロジェクトではない他のプロジェクト内の GKE を操作できるようにするためのメモ。 gcloud auth を service account で行う gcloud config set でプロジェクトをセットする $ gcloud…

ZEIT Now v2 を使った Serverless アプリケーションを Go で実装した

TL;DR ルーティングは now に任せたほうが綺麗に実装できる https://github.com/Code-Hex/slack-invitation 実装 最近自分のための Slack workspace を作ったんだけど、一人だとやっぱり寂しいので誰かを招待したいなと思って Slack の招待フォームを作るこ…

Slack でセキュリティ的にまずいものを見つけた時に行った対処

Slack の HTML や JavaScript 周りのソースコードに興味があって読んでいた時に良からぬものを見つけてしまったので、その時に取った対処方法をまとめておく。 Slack は基本的に feedback[at]slack.com へメールを投げるといいらしい。 Hey there! Please se…

GItHub で GPG 署名つきの commit をする

GPG 署名付きの commit をすることで、由緒正しき人物からの commit かどうかを知ることが可能になる。ゴールは下記の画像のようになる。 これをするためにやったことをメモする。このコミットはここから確認できる。 これは GitHub 公式記事の Generating a…

Go で実装する Grapheme Cluster を基に文字を数えるバリデーション

Unicodeテキストを1文字ずつ分割するアルゴリズムをUnicodeの仕様として定められており、grapheme cluster (書記素クラスタ)と呼ばれる。 hydrocul.github.io 最近 grapheme cluster というものを知った。(こういう概念は知ってたけど名前が知らなかった) …

RACI を使った責務の明確化

今日会社ではじめて「RACI」という言葉を知った。 会社では呼び名が分からなかったのでずっと「ラッシー」と呼んでいたが、本当は「レイシー」と呼ぶらしい。RACI matrix と呼ぶっぽい。 これはプロジェクトや社内での何かしらの工程での役割分担を matrix …

Go のバイナリを Perl スクリプトとしても扱う

環境は macOS 10.14.4 で go1.12.5 です。 まずは次のコードを読んでみましょう package main import ( "fmt" "io/ioutil" ) const script = ` #!perl print "Hello, Perl World!!"; __END__ ` func init() { ioutil.Discard.Write([]byte(script)) } func m…

vim で esc の代りに ctrl+c を使う!

今日 @osamingo さんに教えてもらいました! esc の代わりに ctrl + c でモードを終了できる!便利! 追記: escとctrl-cは完全には同じではないので、気をつける必要はありそうです。https://t.co/A7hxfBsHoX— Pocke(ぽっけ) SW-1309-2807-5790 (@p_ck_) Ma…

最高のエンジニアになる方法

ソースは tumblr 公式の engineering tumblr より。 https://engineering.tumblr.com/post/183075992674/how-to-be-a-great-engineerengineering.tumblr.com 簡潔にとても良いことが書かれてたので、これを自分なりに翻訳する。 エンジニアだけじゃなくて世…

ミリ秒で sleep する Perl ワンライナー

tl;dr shell script 書く時に各 OS 共通でミリ秒を書くのにまあまあ苦戦する時はこのワンライナーを使うと簡単っぽい! perl -MTime::HiRes=sleep -e sleep -e 0.05 Time::HiRes は Perl のコアモジュールとして結構前のバージョンから含まれてるらしい。 参…

GitHub のリポジトリで og:image に好きな画像を指定できるようになった

twitter とか facebook のタイムラインを見てると、URL が共有されてて場合にいい感じにその URL 内で使われてる画像が表示されるはず。 今回 GitHub の変更でリポジトリの URL を共有する際に表示される画像である og:image をカスタマイズできるようになっ…

令和ドローをハックして好きな画像を貼る

先程、新しい元号「令和」が発表されましたね! 技術はすごいのでこんな合成ツールがもう登場してます。 reiwadrawing.walkingmask.tk 今現在はお絵かきしたのが合成できるって感じになってるっぽいですが僕は

株式会社はてなに入社しました

念願の株式会社はてなに入社しました社食が楽しみです株式会社はてなに入社しました - hitode909の日記

k8s で pod を再起動する

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

複数変更を fmt する

git s は git status -s をエイリアスとしている。 perl -nlae 'print $F[1]' をすることで変更をした terraform のファイルのみを列挙する。 terraform fmt の引数は絶対に一つしか受け取らない。ので次のようにループを組む必要があった。 for p in $(git …

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

追記: 求めていたのが見つかった!! Emacs24くらいからvimみたいにいい感じにできるようになっていて、C-x SPACEで選択してからC-tよかやるといけます。— 低気圧 (@catatsuy) 2019年1月30日 追記ここまで ------ ここで見つけた superuser.com 現在標準頑張ろ…

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

tl;dr 時代を支えてきた Perl ハッカーの想いを聴けたので、それを引き継いでいきたいと同時にめっちゃ Perl 書きたくなりました。 前夜祭 仕事の都合で少し遅れて参加しました。全体的に LT が凄く面白かったので全然飽きませんでした。 ただ個人的に交流す…

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

Perl である文字列を n 文字ずつ区切って配列にする方法。 例として "abcdefghi" が与えられた時に 3 文字ずつで区切りたい場合は "abc", "def", "ghi" となることが期待される。 これを簡単に行う方法を思いついたので以下に記述。 sub sep { $_[0] =~ /.{$…

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

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

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

僕自身 C 言語を使って Perl を拡張することが好きだということもあって、今まで何回か XS を使ったモジュールの公開や、それらについての内容で登壇もしました。 (今までリリースしてきたモジュール一覧) Kei Kamikawa (CODEHEX) - metacpan.org 寄稿内容…

モニタリングするためにどんなデータを集めるべきか

Datadog のブログで公開されている "Monitoring 101: Collecting the right data" を読んだ。本記事は紹介した Datadog のブログ記事を独自に簡略化したものである。もっと詳しく知りたい場合は Datadog の記事を読むと良い。 記事では次の項目を実現するた…

XS で SV がスカラバリューであるか判定する

たまたま Perl のモジュールを漁っていると汎用性が高そうな関数を見つけたためメモ。 #ifndef isGV_with_GP #define isGV_with_GP(x) isGV(x) #endif STATIC bool is_scalar_type(SV *sv) { return !( SvTYPE(sv) == SVt_PVAV || SvTYPE(sv) == SVt_PVHV ||…

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

岡山城でした。カンファレンス会場は不明門*1で、懇親会 + LT が岡山城でした! connpass.com 岡山 今回は東京 -> 岡山の飛行機で行きました。 びっくりしたのが岡山の空港名が「岡山桃太郎空港」であったことと空港の周辺が森であったこと!!! 着いて最初の …

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

Roppongi.pm #1 を @magnolia_k_ さんと共同で開催したことを報告します。 roppongipm.connpass.com 色々やるべきタスクが多すぎて報告が遅くなりました。 詳しくは kichijojipm のブログを読んでもらえると、どれくらい YAPC::Tokyo だったのか分かるかもし…

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

Okinawa.pm #7 へ参加してきました。 okinawapm.connpass.com そしていつもの資料 今日の資料ですhttps://t.co/PXZYMcSvxF #okinawapm— へっくす? (@codehex) 2018年9月23日 ふるさとコミュニティへ帰還した感じがしましたが、沖縄の皆さん忙しいのかいつも…

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. Wri…

builderscon 2018 に参加してきました

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

MySQL の Innodb のロックについて

いろいろ分からなかったので同じ DB に複数セッションで接続をして試してみた。 この時参考にしていたページは MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.2.8 InnoDB のさまざまな SQL ステートメントで設定されたロック

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

随時更新予定です。 Perl-guts 一番最初に読むべきドキュメント。pod に書かれていて色んなところで読むことができるが、個人的に GitHub 上で読むのが好き github.com Compiled code Perl のコンパイルについての記述がある。もし使ってる Perl が -DDEBUGG…

Go + gRPC でメタ情報も送れるファイルアップローダーを書いた

今回は Go + gRPC でファイルアップローダーを書いたので紹介します。しかも、ファイルのアップロードだけではなくメタデータも同時に送れるように作成しました。 イメージ 今回作成するにあたって、次のようなイメージで作成しました。 前提は stream 通信…