経験は何よりも饒舌

10年後に真価を発揮するかもしれないブログ 

OSS

deno/std/nodeのfs.DirentでisBlockDeviceの判定ができないのはRustに実装がされていないから...ではない

OSS

追記: Rustにis_block_deviceがあって、Denoにはなかった github.com fs.readdir(path, options, callback)のoptionsにwithFileTypes: trueを指定すると、fs.Direntが返ってくる。 fs.Direntのdirent.isBlockDevice()を使った例が以下。 $ node Welcome to N…

JSのオブジェクトの分割代入で既定値が割り当てられるのはundefinedの場合のみ

OSS

「JSのオブジェクトの分割代入で既定値が割り当てられるのはundefinedの場合のみ」ということは、MDNのAssigning to new variable names and providing default valuesにAssigned a default value in case the unpacked value is undefined.と書いてあること…

GiNZAにコミットしながらNLP Libraryの勉強

OSS

環境構築 GiNZA - Japanese NLP Library | Universal Dependenciesに基づくオープンソース日本語NLPライブラリを眺めてとりあえず$ pip install -U ginza ja_ginzaを試してみると以下のエラー。 raise VersionConflict(dist, req).with_context(dependent_re…

Notes on the breaking change that occurred in Axios v0.25.0

Axios v0.25.0 was released on January 18, 2022.One of the breaking changes is adding error handling when missing url, which returns an Error if the Request Config url specified in the argument is Falsy. This was introduced to clarify bugs …

Axios v0.25.0 で生じた breaking change の注意点

English version: Notes on the breaking change that occurred in Axios v0.25.0 - 経験は何よりも饒舌 2022年1月18日に Axios v0.25.0がリリースされました。その中の breaking change の1つに Adding error handling when missing url があります。 これ…

denodrivers/deno_mongo で作った my good first issue

OSS

この記事はDeno Advent Calendar 2021の19日目です。deno_mongo で取り組んだ my good first issue を紹介したいと思います。 README.mdに情報を足す リンクに飛んだ方がわかりやすいと思ったのでそうしました。 docs: Improve README by wafuwafu13 · Pull …

Architecture of nodejs/node and denoland/deno_std/node

OSS

I contribute to denoland/deno_std as a hobby, and I've been looking at denoland/deno_std/node a lot, so I thought I'd take a quick look at the architectural differences between the nodejs/node and denoland/deno_std/node APIs at this point …

nodejs/node と denoland/deno_std/node のアーキテクチャ

OSS

English version: Architecture of nodejs/node and denoland/deno_std/node - 経験は何よりも饒舌 この記事は Advent Calendar 2021 Deno の16日目です。 趣味でdenoland/deno_stdにコントリビュートしており、特に denoland/deno_std/node をよく見ている…

I contribute to denoland 1 month in a row

Summary https://github.com/pulls?q=involves%3Awafuwafu13+-user%3Awafuwafu13+author%3Awafuwafu13+org%3Adenoland 24PR Merged deno_std 5feat 1fix 6chore 6test 4docs 1refactor deno_lint 1test 17/311 Contributers in deno_std What I done deno_st…

非推奨になったESLintのルールがESLintのコード上でそう記されているか確かめるESLintのテストを書いた

OSS

ESLintのレポジトリでは、lib/rulesディレクトリ配下にルールがまとまっている。 以下に記されているように、それらのルールは非推奨になることがあるが、削除されることはない。 Rule Deprecation - ESLint - Pluggable JavaScript Linter Balancing the tr…

graphql-validation-complexity から学ぶGraphQLのAST走査

オライリーの『初めてのGraphQL』の「7.3.4 クエリの複雑さ制限」で、graphql-validation-complexity というライブラリが紹介されていて、面白そうだったのでのぞいてみた。github.comgraphql-validation-complexityは、クエリに対して複雑度を計算し、その…

Class::Enumemon の中身をちょっとのぞいてみる

使う機会があってRailsのActive Recordっぽくて便利だと思ったけど、中身があまり想像できなかったのでちょっとだけ調べてみた。metacpan.org package IdolType; use Class::Enumemon ( values => 1, getter => 1, indexer => { by_id => 'id', from_type =>…

mackerel-plugin-accesslogを中心にMackerelのコードを読んだ

グラフのラベル名をいい感じにする簡単なPRを投げた時のメモ。[plugin-aws-cloudfront]Replace label name of graph by wafuwafu13 · Pull Request #766 · mackerelio/mackerel-agent-plugins · GitHub 公式ブログを読めばなんとなく機能的な部分はわかった…

はじめてOSSに新機能追加した

owという、Lots of built-in validationsなOSSに、BigIntのバリデーションを追加した。github.com github.comowに関しては2月頃に3回、型整備のPRを出してマージされていたので、コードには少し馴染みがあった。 https://wafuwafu13.hateblo.jp/#sindresorhu…

axiosの内部構造を理解してadapterの仕組みを解明する

axiosのadapterを使う機会があり、仕組みが気になったのでメモしておく。 github.comadapterで検索をかけると、lib/core/dispatchRequest.jsの51行目の記述が目についた。 axios/dispatchRequest.js at 7821ed20892f478ca6aea929559bd02ffcc8b063 · axios/ax…

DefinitelyTyped で Ace の型を大幅に改善した

前のこの記事では、Definitely Typedから型をインストールして適用する際に、実際にレポジトリまで見に行かないといけなかった、ということを書いた。wafuwafu13.hatenadiary.com今回は、PRを出してマージされたので、そのことを書く。github.comPRタイトル…

エラーを報告する際に意識していること

基本的には質問をせずに粘ってしまうタイプなのだが、環境構築の段階でのエラーや、人生で初見のエラーなどは経験上、粘っても何も得られないので、即質問するようにしている。そこで意識していることは、 何が原因で何ができなかったのかを記す 自分が打っ…

qrcode.react とスナップショットテストの相性が最高すぎた

qrcode.reactは、その名の通りQRコードを生成してくれるReactコンポーネントだ。 github.comファイル構成はsrc/index.jsでゴリゴリ計算というか文字列を算出し、コンポーネントを返す構成だった。 テストがなかったので、テストを追加したかったのだが、何に…

npmから@typesを使う場合はDefinitelyTypedを見に行かないといけないことがある

Link Preview JSという、「allows you to extract information from a HTTP url/link (or parse a HTML document) and retrieve meta information such as title, description, images, videos, etc」なレポジトリがあった。github.comそこでは、cheerioとい…

自分のPRを見て思う、TableDrivenTestsの良さ

jdという、commandline utility and Go library for diffing and patching JSON valuesなライブラリにTableDrivenTestsを導入したので、その良さを主観的にまとめておこうと思う。github.comgithub.com まずは、実際にdiffの一部を見てみる。 https://github…

単純作業の効用は意外と大きい

owという、TypeScriptの型制限を拡張したOSSに何度かコミットして気づいたことは、単純作業は意外と効用が大きいということだ。 github.com具体的に何をしたかというと、typescript-eslintの、explicit-function-return-typeが無効になっていたのを、有効に…

Cypress で `blitz new` をテストしたい(が、できていない)

ことの発端は、最近よくBlitzを聞くようになり、GitHubを訪れると、good first issueが転がっていて、テストに関するものがあったので、Blitzを触ったことも、GraphQLやPrismaもあまり知らなかったけど、拾ってみた。このissueの内容は、blitz newの挙動をCy…

Reactのコードを読む(3)

前回はhello worldが描写されるところまでをみたので、今回はuseStateをみていこうと思う。wafuwafu13.hatenadiary.comまずは、useStateがどこで定義されているのかを確認する。 <html> <head> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> …</head></html>

Reactのコードを読む(2)

前回はReactDOMについてみたので、今回はrenderでhello worldが描写されるところまでみていこうと思う。wafuwafu13.hatenadiary.comまずは、ReactDom.renderを出力してみる。 <html> <head> <script src="https://unpkg.com/react@17/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></head></html>

Reactのコードを読む(1)

この前jQueryのコードを読んでなんとなくコードリーディングがわかってきたので今回はReactのコードを読んでいこうと思う。 wafuwafu13.hatenadiary.com直近の目標は、以下のコードでどのようにして画面にhello worldが表示されるかを解明することである。 <html> <head></head></html>…

jQueryはいかにしてDOMを取得するか(3)

wafuwafu13.hatenadiary.comいよいよ今回は、以下のHTMLを用意して実際にDOMを取得していく。 <html> <head> <script src="https://code.jquery.com/jquery-3.5.1.js"></script> </head> <body> <h1 id="hello">hello world</h1> <script> console.log($('#hello')) </script> </body> </html> まずは前回と同じように、3133行目に定義されている関数の引数に何が入ってい…

jQueryはいかにしてDOMを取得するか(2)

wafuwafu13.hatenadiary.com前回は、以下のHTMLを用意し、 <html> <head> <script src="https://code.jquery.com/jquery-3.5.1.js"></script> </head> <body> <script> console.log($); </script> </body> </html> 以下の実行結果を得た。 ƒ ( selector, context ) { // The jQuery object is actually just the init constructor …

jQueryはいかにしてDOMを取得するか(1)

最近、バイトの隙間時間に、jQueryを廃止してTypeScriptにリプレイスする、というタスクをするようになった。 jQueryのDOMの取得を、Documentを使って書き換える時に、jQueryはいかにしてDOMを取得するか、ということが気になったので少し調べていく。今回は…

はじめてのOSS貢献

ついさっきpushしたのでメモしておきます。 STEP1 OSS貢献に関する記事を読む とっつきやすいとか、誰でもとか書いてありますが、やはり難しそう... でも、今書いてる記事を読んだらとっつきやすさは伝わると思います。qiita.comqiita.comtech.gunosy.io STE…

『Go言語で作るインタプリタ』をTypeScriptで実装する(前編)

OSS

後編はこちら wafuwafu13.hatenadiary.com O'Reilly Japan - Go言語でつくるインタプリタ を2章までTypeScriptで実装しました。この本を手にした動機は、 Goの文法を学習したついでに低レイヤーにも手を出したかった 分量的に手が出やすそうだった TypeScrip…