アルパカ三銃士

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

GPT-3.5 を使った AI コンシェルジュの開発秘話を YAPC::Kyoto 2023 Reject Con で話してきました / YAPC::Kyoto 2023 の感想

YAPC::Kyoto 2023 めっちゃ最高でした。オフラインカンファレンスはやっぱり参加すると楽しいー! YAPC::Kyoto 2023 Reject Con YAPC::Kyoto 2023 は個人スポンサーとして参加しました。ついでに最近やっていることを話したいなと思い応募したのですが落選し…

M1 Mac を購入して arm64 縛りでインストールしたもの (更新中)

基本的に郷に入れば郷に従いたいので arm64 のバイナリを扱うようにする。homebrew はここに従って arm64 版のみインストールした。 インストールしたバイナリが arm64 かどうかを確認するために下記のコマンドを使う。 $ lipo -archs $(which command)

円滑に事を進められるコミュニケーションって

メモっておくかーってという気分になったので書いている。 私は会社でアプリの新機能を開発したり、バグの修正を行っている。いわゆるエンジニアという職種で働いている。 新卒として入社した頃は「エンジニアって設計してコードを書くのが仕事でしょ」とい…

中国企業からスカウト PR が届いた

あ…ありのまま今日、起こった事を話すぜ! 「おれは プルリクエストが送られてきたと思ったら いつのまにかスカウトメッセージを読んでいた」な… 何を言っているのか わからねーと思うが、おれも 何をされたのか わからなかった…頭がどうにかなりそうだった……

gRPC Application のエラー設計

Web アプリケーションで error code, error message を返したくなる時があるはずです。HTTP JSON API とかでたまに見るのは status code が 200 なのに error が返ってくるものです。gRPC ではどうすれば良いのでしょうか。基本をおさらいしつつ浅く考えてみ…

xcode をインストールしてない macOS で lldb を使うまで

mac を開発端末にしたいけど xcode をインストールしたくないという場合、xcode を appstore からインストールするのではなく、command line tools のみをインストールする必要がある。 インストールするために xcode-select -- install を実行する。これを…

プリエンプティブな GCE インスタンスの外部 IP を固定する

最近 iPad Pro を購入したため、これを開発環境のとしても活用できると良いなと思い、GCP でプリエンプティブな GCE インスタンスを作成した。 インスタンスに https://github.com/<username>.keys 経由で取得できる github に登録した自分の公開鍵を設定した。こうす</username>…

Debian 9 stretch に rootless docker をインストールする

root 権限外で docker コンテナを動かしたくなったので rootless docker を利用してみることにした。rootless docker のインストールガイドは下記のリンクで読むことができる。 docs.docker.com DEBIAN GNU/LINUX といったセクションもあって rootless docke…

neovim コメント内で改行した時に自動でコメントされるのを防ぐ

vim

最近 neovim を使い始めていて、vim を使ってる時から気になってた問題に向き合うことにした。この問題がどんな内容かというと “ vim ファイルでのコメント といったコメントを記入していてカーソルが行の最後に来た時、エンターキーを入力して改行するはず…

homebrew を使って gomod 経由で Go のバイナリをインストールする

Go 1.14 では modules がついに production ready な状態になった。 これまで ghq といったツールを使い、GOPATH 直下に自分のワークスペースを作って開発するといった手法とはお別れになるだろう。開発に関してはとても便利になったが、これまで go get や …

Go で AND, OR 条件付きのテキストマッチを行う

AND, OR 条件付きでテキストがマッチしてるか確認する関数を作る。 Perl や PHP 等の PCRE をサポートしてる正規表現を使う場合は、こんな感じでいい。 /(?=.*(hello|world))(?=.*(foo|bar))/ regex101.com こうすると hello, foo hello, bar world, foo wor…

2019年の仕事周り簡易まとめ

この年は他の会社に入社していたら絶対に経験できないだろうなということを経験できたので本当に良い年だったと思う。優秀な人が多い会社なのでそういった方々と一緒に仕事をすることができたおかげで「どんな考えを持って仕事をすべきか」というのが少しだ…

知らないであろう @, % シジルのお話

こちらは Perl Advent Calendar 11 日目の記事です。 小ネタです。 社会人になって Perl と触れ合う機会が少なくなりました。Go と PHP を主に書く会社に入社するとこんな感じになります。 アプリケーションを書くスピードは断然Goの方が早くなってしまった…

「ループ・再帰・gotoを使わずワンライナーで FizzBuzz する」

@xtetsuji さんの Qiita の記事を読んで、これ FizzBuzz できそうだなーと思ったのでやってみた。久しぶりなので間違ってそうな気がする。 qiita.com perl -MMath::BigFloat -e 'Math::BigFloat->accuracy(300-2);print+(1000/Math::BigFloat->new(999**2))-…

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 現在標準頑張ろ…