Masteries

技術的なことや仕事に関することを書いていきます.

デバッグ用のコードが残っているとGitでコミットできないようにする(改)

だいぶ前に, こういったエントリを書きました: papix.hatenablog.com 一方で, こちらのエントリにこういったブクマコメントを頂いていました: デバッグ用のコードが残っているとGitでコミットできないようにする - Masteries文字列リテラルの中とか関係ない…

小ネタ: Test2でテストを書く時に, hashやarrayにundefがあることをU()でテストすると, なんか意図しない感じになることがある

またまたまたまた小ネタです. PerlのテストモジュールであるところのTest2において, U() は undef であることをテストします. is undef, U(); # => ok is 1, U(); # => not ok では, ハッシュや配列にundefがあることをテストしたい時はどうするといいでしょ…

小ネタ: Perlで条件に応じて配列の中身を割り振る時はList::MoreUtils#partが使える

メモです. こういう配列があったとします: my @array = ( { type => 'foo', value => 1 }, { type => 'bar', value => 2 }, { type => 'foo', value => 3 }, ); この時, typeによって@arrayの中身をそれぞれ別の配列に割り振りたい, と思う時があります. # …

小ネタ: Perlのhashとデフォルト値

関数の引数をhashで受けて, 未定義の場合はデフォルト値を設定したい... という場合があるとします. まあだいたい, defined-orを使って次のように書くのではないでしょうか: sub myfunc { my %args = @_; return $args{foo} // 'default'; } myfunc(foo => '…

Class::Accessor::Typed 0.03_02 で Type::Tiny 対応を試しています

papix.hatenablog.com 先日, 0.03を出したClass::Accessor::Typedですが, Type::Tiny対応を試した 0.03_02 をリリースしました. Development releaseなので, cpanm とかでインストールする時はバージョンを指定してインストールするようにしてください: cpan…

Kichijoji.pmで2回くらい話していました

...が, そういえばブログエントリ書いてなかったので, 発表資料を紹介しておきます. Kichijoji.pm #28 Kichijoji.pm #29 特に「Kichijoji.pm #28」の「ワーケーションに関する考察」については, 自分らしい(旅行が趣味なエンジニアらしい)発表になったんじゃない…

小ネタ: Perlのsplitの第3引数

超〜〜〜小ネタです. Perlにはsplitという関数がありまして, 次のように使えます: my @list = split(/,/, "a,b,c"); # @list = ('a', 'b', 'c'); 第1引数に正規表現を, 第2引数に文字列を渡すと, 第2引数の文字列を第1引数の正規表現にマッチした部分で分割…

Class::Accessor::Typed 0.03をリリースしました

Class::Accessor::Typedの0.03をリリースしました. 前回の0.02は2019年のリリースなので約2年ぶりですね... papix.hatenablog.com 今回の0.03では, optional オプションの追加をしました. 次のように使えます: use N; # optional なので, `rw2` は指定しなく…

Class::Accessor::Typedで独自の型を使う

Class::Accessor::LiteやClass::Accessor::Lite::Lazyのように使えて, 型の恩恵を受けられる, Class::Accessor::Typedというモジュールを昔書きました. metacpan.org 詳しくは, 昔Kichijoji.pmで紹介した時に使った資料をまとめたものがあるので, こちらをご…

小ネタ: Perlのメソッド呼び出しをModule::Spy風にモックする

Perlでテストを書いているとき, 例えば外部のAPIを叩くメソッドをモックしたい, という気持ちになることがあります. 選択肢としてはTest::Mock::GuardやModule::Spy, 最近ならTest2::Tools::Mockあたりが選択肢になるでしょうか. metacpan.org metacpan.org …

小ネタ: Gitでコミットメッセージ書いてる最中にコミットを取りやめる

ちなみに vim の終了方法としては :cq というのもあり、これを実行すると vim が終了コード 1 で終了します。git commit をキャンセルする場合に使えます。— mattn (@mattn_jp) 2019年6月26日 だいぶ昔のツイートなのですが, さっき知ったので忘備録的にブロ…

Perl 5.35.7 の builtin を試してみる

この記事は, 「Perl Advent Calendar 2021」の22日目の記事です. qiita.com 昨日はtecklさんの「Perlアプリケーション + AWS Lambda + API GatewayでWebhookを受ける」でした. qiita.com Perl 5.35.7 で builtin を試してみる metacpan.org Perl 5.36に向けた開…

Perlで @EXPORT を @EXPORT_OK に置き換える

この記事は「はてなエンジニア Advent Calendar 2021」の12日目の記事です. qiita.com 昨日は id:cohalz の「distrolessのnonrootイメージを使おう」でした. cohalz.co 関数のエクスポート Perlのパッケージには, "エクスポート"という概念があります. 例えば, …

Gitで特定のbranchのみcommit/push出来ないようにする

小ネタです. Gitで開発をしていて, 特定のbranchのみcommit/pushしたくない, という場合があるかと思います. 例えばmainブランチにはcommit/pushしたくない, など. これを実現するには様々な方法がありそうですが, 自分はGitのhookの機能を使って実現してい…

ISUCON11 「天下n品」で予選参加して敗退しました

同僚の id:stefafafan と id:masawada と共に「天下n品」で参加して, 予選敗退しました. 最終スコアは 33,586点とのこと. 自分がやったこととしては「Redisの活用を試みた(なお, スコアの上昇には寄与しなかった模様)」の一言に尽きます. その他やったことは, チ…

Kichijoji.pm #27で「(今更)Amplifyさっくり体験」というLTをしました

久々にKichijoji.pmに登壇して, AWS Amplifyについて話しました. 前回の登壇が1月の「CI/CD活用事例&TIPS発表会」だったはずなので, 半年ぶりの登壇となりました. ...サボりすぎ!!! なにもかもが久々すぎて, LTなのに事前準備に一苦労したりしていました(いろ…

小ネタ: TerraformでS3にファイルを設置する

小ネタです. TerraformでS3のbucketを作るとき, ついでに何かしらのファイルを設置したいというシーンがあるでしょう. そういうときは... resource "aws_s3_bucket" "sample" { bucket = "sample-bucket" acl = "private" } resource "aws_s3_bucket_object"…

毎日ちょっとずつコードを書く, という行い

なんと気がついたら5月でした. ここ最近は, 「せめて月1でこのブログを更新しよう...」と思っていたので, 不覚!!! という気持ちです(?). 4月のことを振り返ってみると, 特段忙しかった訳でも, 体調崩した訳でもないので(3月末にちょっと熱を出した事はあった),…

人生は大抵うまくいかない

papix.hatenadiary.jp

最近読んだ本

最近読んだ本達の話題です. 最近, サブ機としてAndroid端末を購入したところ読書が(過去の自分比で)捗りまくっています. 正しいものを正しくつくる 正しいものを正しくつくる プロダクトをつくるとはどういうことなのか、あるいはアジャイルのその先について…

「中学英語で読める はじめての英語ライトノベル」を読んだ

音声DL BOOK NHK基礎英語 中学英語で読める はじめての英語ライトノベル: 異世界に転生したら伝説の少女だった件 (語学シリーズ 音声DL BOOK|NHK基礎英語)作者:若月 ルナ発売日: 2020/09/14メディア: ムック 読みました. 一昨年, いろいろと海外に足を運んで…

小ネタ: 久々にMinillaでCPANモジュールをリリースする

papix.hatenablog.com 昨日Pull Requestを送ったRouter::Simple::Reversibleですが, サクッとcomaintをもらったのでMinillaでリリースすることにしました(id:motemenさんありがとうございます!). が, あまりに久々すぎて何もかも忘れてしまっていたので備忘…

Router::Simple::ReversibleにPull Requestを送りました

metacpan.org Router::Simple::Reversibleは, Router::Simpleを拡張して, controllerとaction(とパラメータ)からpathを生成できるpath_forメソッドを追加したものです. pathからcontrollerやactionを決めるRouter::Simpleの逆ができるのでReversible, という…

小ネタ: Big SurでXML::Parserのインストールに失敗する件

MacのBig SurかつPerl 5.32.0の環境でXML::Parserをインストールしようとしたところ, 次のように失敗しました: --> Working on XML::Parser Fetching http://www.cpan.org/authors/id/T/TO/TODDR/XML-Parser-2.46.tar.gz ... OK Configuring XML-Parser-2.46…

Mackerelを基準にした在宅勤務環境の監視

新型コロナウイルスのアレコレが発生するまでは「昼はオフィス/夜は自宅」という生活でしたが, ここ1年は昼も夜もずっと自宅で過ごす状態が続いています. こういった状況はまだまだ続きそうなので, 少しずつ自宅環境を良くするためにアレコレ試みています. そ…

「CI/CD活用事例&TIPS発表会」で「はてなにおけるGitHub Actions活用事例」という話をしました

techplay.jp 「CI/CD活用事例&TIPS発表会」という勉強会に参加させていただく機会を得まして, 「はてなにおけるGitHub Actions活用事例」という話をしました. 10分以上話す登壇が久々すぎて塩梅がわからず, 案の定資料が多くて若干駆け足になってしまいましたが…

#プログラミング原体験

blog.utgw.net ※ 以下, 自分語りをしています. プログラミングに興味を持ったのは, 根源をたどると幼稚園児の頃に父親が確かIBMのパソコンを買ったのがきっかけ... だった気がします. Windows 3.1が動いていて, 「A列車で行こう4」とかで遊んでいた記憶があり…

「吉祥寺.pm 25」でmisspellについて話しました

kichijojipm.connpass.com 「Kichijoji.pm 25」で, misspellというツールについて話しました. github.com 実のところこのツール, 先週くらいに知ったのですが, 「めっちゃ便利やん!」となり, 今業務で触っているツールに勢いよく適用してミススペル(typo)を撲滅,…

小ネタ: Perlで関数の返り値の一部を無視する

例えば, func という関数があって, これが次のような実装になっていて, 3つの返り値を返すとします. sub func { ... return ($x, $y, $z); } func を呼び出す際, 「返り値の1つ目と3つ目は利用するけれど, 2つ目は利用しない」という時は, undefを使って次のよ…

今だからこそ「リモートワークの達人」読んだ

昨今このような情勢で, そろそろ1年近く在宅で勤務しているので, 今あらためて「リモートワークの達人」を読んでみました. リモートワークの達人 (ハヤカワ文庫NF)作者:ジェイソン フリード,デイヴィッド ハイネマイヤー ハンソン発売日: 2020/07/02メディア: …