私が歌川です

@utgwkk が書いている

技術

Pythonのキーワード引数に任意のdictを展開して渡す

Pythonでは、引数に **kwargs のように書くことで、任意のキーワード引数を受ける関数を定義することができる。 キーワード引数はdictとして使うことができる。 def print_kwargs_as_dict(**kwargs): print(kwargs) キーワード引数では、識別子としてvalidな…

ペアプロ活動パターン

仕事でよくペアプロでコードを書くのですが、気をつけていることがいくつかあるので共有します。みなさまは何に気をつけていますか? 考えていることを声に出す やりたいことが実現できずに詰まっていると黙りがち どうやったらいいか分からず困っている・違…

fetch APIにおけるHTTPリクエストの中断・タイムアウト

AbortControllerを使うことで実現できる。 MDNにも書いてあるけど、以下の操作でfetch APIによるHTTPリクエストを中断できる。 fetch() の第2引数のオブジェクトの signal フィールドに AbortController.signal を渡す AbortController.abort() を呼ぶ HTTP…

JavaScriptで [0, 1, ..., N - 1] という配列を得る

小ネタです。 課題 JavaScriptで [0, 1, ..., N - 1] みたいな、要素数Nの配列が欲しくなった。本番環境に使う用のコードではなく、とりあえず開発用に動けばよい、ぐらい。 new Array(N) で長さNの配列が得られるから、mapすれば得られるはず……と思って new…

ピタゴラスの定理により、各色の面積はずっと同じ

ピタゴラスの定理により、各色の面積はずっと同じです。 pic.twitter.com/GY2RueVXcG— ζWalker (@walker0226) 2021年5月15日 ↑を再現したくて失敗したけど諦めきれずに再チャレンジした。 blog.utgw.net 完成した 素朴に実装したら動作がめっちゃ重たく、ブ…

CPANに上がっているモジュールが対応しているPerlの最小バージョンの統計情報

CPANに上がっているモジュールが対応しているPerlの最小バージョンの傾向が知りたくなったので、調査することにした。直感では、最低でもPerl 5.8に対応しているモジュールが最も多いと思っていた。 情報を取得する metacpanにはAPIがある*1ので、これを叩い…

JSONの所望の値にアクセスするためのキーを逆算する

手元にJSONはあるけど、人間がパースするには大きくて、ぱっと見では所望の値を取得するキーが分からない。値を取得するために人間が試行錯誤しまくるのは不毛なのでもうちょっとなんとかしたい。 2021/5/3 22:15 追記 id:itchyny さんにjqでキーを逆算する…

M1 Mac・Node.js 14系でcreate-react-appで作ったアプリケーションをyarn startで立ち上げようとするとメモリエラー

tl;dr Node.js 15.3.0 では直っている Node.js 16がもうじき出るので、出たらLTSでもM1 Macネイティブ対応できてよさそう FAST_REFRESH 環境変数に false を設定して yarn start するのでも回避できる Node.js本体のバージョンを上げられないけどM1 Macを使…

Test::Moreで書いたPerlのテストコードを自動でTest2::V0に移行するツールをCPANizeした

Japan.pm 2021で発表した、Test::Moreで書いたテストコードを自動でTest2::V0に移行するツールをCPANizeしました。 metacpan.org scrapbox.io ディストリビューションは App という名前空間以下なのに、Test2プラグインも同梱していて怒られないかヒヤヒヤし…

身分証送信のためにimagemagickをビルド

GIF/PNG/JPEG形式の画像だけがアップロードできる身分証送信フォームに身分証をアップロードするために、imagemagickをビルドしていた。Ubuntuで apt install imagemagick でインストールできるimagemagickだとHEIF形式の画像の変換に対応していない。iPhone…

メモ: VSCode Remote (WSL) でgit commit時にGPG署名を行う

WSLにgpgをインストールすればGPG署名ができるようになるけど、ttyにパスフレーズ入力ウィンドウが表示されるので、使うのにコツが要る。 code コマンドでVSCodeを起動したら、commit時には code コマンドを叩いた元のターミナルを開かないとパスフレーズが…

Japan.pm 2021で発表 & LTした #japanpm

Japan.pm 2021に参加し、発表とLTを行いました。オンライン登壇は初めてでしたが、致命的なトラブルもなく参加することができたと思います。YouTube配信の画面を見たらなかなか本格的な感じがしてすごかったです。 発表 scrapbox.io これまでperlcriticを導…

GitHub Actionsを使ったDDoSに巻き込まれた

事例集です。 きのう、GitHubの通知を見たら、個人のリポジトリに My First PR というタイトルのPRが来ているのに気づいた。PR出すところを間違えたのかな、と思って見てみたがどうも様子がおかしい。 prog という名前のバイナリファイルを置いている .githu…

/usr/share/dict/words をgrepすると意味のある単語がいっぱい出てきて楽しい

/usr/share/dict/words を grep | shuf | head -n10 とかやったら意味のある単語がいっぱい出てきてたのしい— うたがわきき (@utgwkk) 2021年1月16日 i18nのリストが一発で出せます。 % grep -E '^i.{18}n$' /usr/share/dict/words institutionalization int…

続・2ちゃんねるのトリップを Unicode の時代に実装する

blog.utgw.net 以前こういう記事を書きました。今回はその続きです。 トリップとは トリップとは、2ちゃんねるなどの匿名掲示板において個人を簡単に証明するための合言葉、またその機能によって表示される文字列のことを指します*1。 前回までのあらすじ Py…

昔作った画像検索・閲覧システムをReactで書き直した

blog.utgw.net 2018年の中ごろまで動かしていて、Twitter Streaming APIの終了と同時に稼動停止した画像検索・閲覧システムだったけど、年末年始やることがなかったのでReactで書き直すことにした。 書き直して再稼動させるというわけでもなく、Reactに再入…

現状の癖を反映した .perltidyrc

はじめに これは Perl Advent Calendar 2020 - Qiita 19日目の記事です。枠が空いていたので飛び入りです。 昨日は nanto_vi さんで Perl の Test2::V0 でオブジェクトの基底クラスを確認する: Days on the Moon でした。 isaをテストしたくなることはけっこ…

pycodestyleのコードをなんとなく読む

はじめに これは Pythonその3 Advent Calendar 2020 - Qiita 16日目の記事です。昨日は 特徴量エンジニアリングのライブラリ xfeat を使ってみて便利だったこと - Taste of Tech Topics でした。 pycodestyleについて pycodestyleは、Pythonのコードスタイル…

github-actions-profilerの実装に使ったライブラリを紹介

はじめに これは KMC Advent Calendar 2020 - Adventar と はてなエンジニア Advent Calendar 2020 - Qiita 10日目の記事です。 KMC Advent Calendar 2020 9日目の担当は なな さんで 要約: 『CPUの創りかた』読んだら良かった。 - rebuild-kitashirakawa で…

perlcriticとのつきあい方

はじめに こんにちは。perlcriticの話をします。perlcriticに関するまとまった日本語の情報が乏しいなと感じたので、アドベントカレンダーの記事として書くことにします。 これは Perl Advent Calendar 2020 - Qiita 4日目の記事です。3日目は hkoba さんで …

一度きりの作業やデータの処理をするときは何使ってますか?

サークルのSlackの匿名投稿チャンネルで質問されていた。普段こうしてるつもりだけどあまり意識してないので違うこともやってるかもしれない。 ブラウザで開いてるwebページ上の情報を処理する 開発者ツールのconsoleにJSを書いて実行している。この要素のte…

Go言語の http.Client による外部リクエストの全てに独自のヘッダーを付与する

req.Header.Set("X-Hoge", "fugapiyo") する http.RoundTripper を実装したらできそう。 実装 全てのリクエストの User-Agent を utagawakiki-bot (+https://twitter.com/utgwkk) に設定する RoudTripper です。こんな感じで http.DefaultClient.Transport …

GitHub Actions workflowのプロファイラを書いた

github.com 表題のものを書きました。 CIをもっと高速に回したい、という欲求は誰しも持っていると思います。CIを高速化することは、開発のテンポを上げることにも、機能リリースまでのリードタイムを下げることにもつながります。 一般的にもそうだと思いま…

Twitter::Text のバグ取り風景

Twitter::Text のバグ取りの風景をお伝えします。このバグは 2020/11/21 17:46 時点の最新バージョンである 0.07 では修正されています。 やりたいこと この CPAN Testers report の環境 (win32, Perl 5.16.0) で Twitter::Text のテストが通るようにします…

section無しのINIファイルをPythonのconfigparserで読み書きしたい

Pythonの標準ライブラリであるconfigparserを使うと、INIファイル っぽいもの を読み書きすることができます。が、セクションより先に key=value が来ると configparser.MissingSectionHeaderError 例外が送出されパースに失敗します。 読み出すときはINIフ…

perlcriticのポリシー書いた

perlcriticとは perlcriticとは、Perlのlinterです。JavaScriptで言うところのESLintみたいな感じで、Perlのソースコードを解析して、バグを招きかねない・ポリシーに合致しないコードがあれば警告をしてくれます。 perlcritic本体にさまざまなポリシーが含…

perlcriticに --top オプションを渡したとき、severityが指定されてなかったら1になる

最初に回避方法を書くと、 --top オプションと一緒にseverityを指定してやるとこの現象は回避できる。 --top オプションが指定されると、severityが設定されてなかったら1 (最も厳しい) に設定されることが分かった。なんかバグってる? と思ったけどこうい…

twitter-textのPerl実装 Twitter::Text を公開した

Twitter::Text - Perl implementation of the twitter-text parsing library - metacpan.org Perlでツイートをバリデーションしたいときに使うことができます。どうぞご利用ください。 いろいろ学びがあったので、実装方針などについて書いていきます。 動機…

(デフォルトでは無効にしました) perl-insert-packageにパッケージ名の補完機能を追加した

VSCodeでPerlのパッケージ名を入力できる拡張機能 perl-insert-package に、パッケージ名の補完機能を追加した新バージョン 1.10.0 をリリースしました。どうぞご活用ください。どういうことかと言うと、以下の動画をご覧ください。 gyazo.com この拡張機能…

MySQLのEXPLAIN結果がどんどん変わっていく例

MySQLのEXPLAINが直感とは異なっていた事例 の続き。ふと実験中にEXPLAINを打っていたら、 rows が減っていることに気づいたのでさらに追試をした。 実験 MySQLのEXPLAINが直感とは異なっていた事例 の実験で、SELECT文にかかった秒数に加えて、EXPLAINの ro…