私が歌川です

@utgwkk が書いている

技術

create-react-appで生成した環境でejectせずにWebpackのプラグインを試したい

はじめに create-react-app、使ってますか? 便利ですよね〜。 create-react-app (react-scripts) はWebpackやBabelなどの設定をうまく隠蔽しています。どういう設定をしたら何が起こるのか、を気にせずにコードを書ける体験は良いのですが、生きてるとどう…

現状の癖を反映した.perltidyrcとperltidyの令和最新情報

今はそんなに頻繁にPerlを書いているわけではないけど、以下の記事を書いた時点から更新があったのでちょっと書く。 blog.utgw.net .perltidyrc --add-newlines --add-semicolons --add-whitespace --block-brace-tightness=0 --brace-tightness=1 --break-a…

ISUCON11予選落ち #isucon

チーム :innocent::innocent::innocent: *1 で出場しました。メンバーは去年と同じく id:nonylene と id:wass80 です。最終スコアは13369点でした。最後のベンチマークでは12000点ぐらいを記録しました。 isucon.net やったこと 今年もGo言語で出場しました…

HacobuneでCGIを動かす

www.sakura.ad.jp ということで、CGIを動かしましょう。Monkey Bananaがいいと思います。 CGIスクリプトを用意する ダウンロードしてunzipしてリポジトリに含めるなり、docker build時にダウンロードしてくるなり、なんでもいいと思います。permissionとsheb…

AWS Lambda + DynamoDBでzatsu_monitorをサーバーレスで動かす

モチベーション zatsu_monitorはシンプルなURL監視ツールです。crontab等で定期的に指定したURLにリクエストを送信し、ステータスコードに変化があれば通知してくれます。詳しくは作者の id:sue445 氏の記事をご覧ください。 sue445.hatenablog.com 手軽にUR…

Pythonソースコードの文法チェックを行うテストを書く

src ディレクトリ以下のPythonソースコードの文法チェックを行いたい。テストとして回せるとよさそう。 pytestを使って書くならこういう感じになりそう。Python 2.7対応のためにglob2ライブラリを使っているけど、Python 3.5以降なら標準のglobモジュールで…

TypeScript + JSXでrenderするコンポーネントに型引数を書ける

子ネタだしタイトルが全てだけど、おもしろかったので共有します。 たとえば、react-router (react-router-dom) v5 の Link コンポーネントの to propには、文字列・オブジェクト・関数を渡すことができる。 ここで、react-router-domの型定義を見ると、<Link> コ</link>…

イベントハンドラを設定した要素内にreact-modalのモーダルを置くとイベントハンドラが反応する

tl;dr イベントハンドラを設定した要素内にreact-modalのモーダルを置かないようにするのが手っ取り早そう。 イベントハンドラを設定したコンポーネント 以下の Clickable コンポーネントは、divに click イベントのハンドラを設定しており、かつchildrenを…

RelayでGraphQL multipart request specificationに沿ったファイルアップロードを行う

はじめに 2021/7/17現在、GraphQL APIを通じてファイルをアップロードする方法は規定されていない。そのため、GraphQL APIでファイルアップロードを行いたい場合は何らかの工夫を行う必要がある。 GraphQL APIリクエストの変数中にファイルをエンコードして…

create-react-app --template typesctiptの直後に初手で入れる設定

はじめに Reactでアプリケーションを作るときは、だいたい create-react-app --template typesctipt してから開発を始める。ゼロコンフィグでReactアプリケーションを書けて便利だけど、もうちょっと手を入れておくと快適に開発できるようになる。 趣味の個…

perlcriticのポリシーの一覧を見れるようにしたい

metacpanのAPIを使う作戦 (断念) metacpanにはAPIがあるので、これを活用できないか考えます。 curl 'https://fastapi.metacpan.org/v1/module/_search?q=distribution:Perl-Critic&size=5000' というコマンドを実行することで、metacpanからPerl-Criticディ…

テストケースと野生の勘

コードを書いていたりコードレビューで実装を眺めたりしていて、こういうケースでもうまく動いてほしいけど落ちそう、と思ってテストケースを足すと実際にテストが落ちる、ということがしばしばある。はたから見ると野生の勘とか嗅覚みたいな感じになりそう…

緊急事態宣言

まずはこちらをご覧ください。 【速報 JUST IN 】東京に4回目の緊急事態宣言へ 政府方針 #nhk_news https://t.co/ZcN8uRXlcG— NHKニュース (@nhk_news) 2021年7月7日 この写真を再現したくなり、緊急事態宣言ジェネレーターを作る運びとなりました。 「緊急…

環境変数から設定値を読み取るPythonのメタクラス

アプリケーションの設定を環境変数経由で渡すし、個別の設定にはデフォルト値がある、というシチュエーションを考える。 素朴には os.environ.get("FOO", "default_value") みたいなのを書けば設定値を取得できる。が、これにはいくつか問題がある。 まず、…

Relay + TypeScriptでnodeクエリを使うときは__typenameフィールドを明示的に取得すると便利

タイトルが全てです。 作品詳細ページで、id をもとに作品 (Artwork) を取得したいとする。 Artwork が Node インタフェースを実装しているなら、以下のように node クエリを使って取得できる。 query ArtworkDetailQuery($id: ID!) { artwork: node(id: $id…

入力フォームに対してIMEの確定を待ってからEnterでなんかするやつ

入力フォームがあって、Enterを押して入力したテキストをリストに追加したいとしましょう。↓こちらでお試しできます。 ここに追加されるよ (() => { const list = document.querySelector("#list_1"); const input = document.querySelector("#input_1"); in…

趣味でGraphQL APIを使ったwebアプリケーションを作ってみた感想

GraphQL APIを備えたwebアプリケーションを趣味で作っていて、完成したので感想をまとめる。 目次 目次 作ったアプリケーション 使ったライブラリ Flask SQLAlchemy alembic Graphene-Python 作ってみてどうだったか おわりに 作ったアプリケーション サーク…

SQLでSQLを組み立てる

趣味で作っているアプリケーションについて、データマイグレーションを行いたくなった。ちゃんとやるなら、マイグレーション用のスクリプトを書いて、メンテナンスモードにして、スクリプトを適用する……みたいな手順を踏むと思うけど、趣味プロダクトなので…

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を導…