タグ

ブックマーク / efcl.info (151)

  • 私のJavaScriptの情報収集法 2024年版

    個人的なJavaScriptの情報収集の方法についてまとめてみます。 JSer.infoなどをやっているので、JavaScriptの情報については色々な情報源を見るようにしています。 JSer.infoの範囲の中での情報源については、次の記事でまとめています。 JSer.info 13周年: JavaScriptの情報源を整理する - JSer.info この記事では、少しスコープを広げてJavaScriptの情報収集についてまとめてみます。 かなりスコープが広がってしまうので、万人向けの方法ではなく、個人的な情報収集方法としてまとめています。 この記事では、膨大な情報の中から見つけるというアプローチをとっているので、人によって向き不向きがあると思います。 情報収集の方法 情報の元となる情報源はさまざまなサイトや人になると思います。 しかし、そのサイトや人ごとに見ていくというのはかなり大変

    私のJavaScriptの情報収集法 2024年版
    teppeis
    teppeis 2024/02/09
    RSS本質情報だ
  • Node.jsで機能やパッケージの非推奨メッセージを通知する方法

    ライブラリやツールなどを作っているときに、特定の機能やパッケージを非推奨にする場合があります。 これらの非推奨はリポジトリ上のREADMEやIssueなどに書いても、利用者が気づかないことがあります。 そのため、利用者が気付けるように非推奨の機能やパッケージを使った場合に警告を出す方法を紹介します。 非推奨にはいくつかの段階があり、それに応じてやり方を変えられるので、それぞれの方法を紹介します。 パッケージの非推奨化: npm deprecate <package> <message> コードレベルの非推奨化: JSDocタグの@deprecated 実行時の非推奨化: process.emitWarning() パッケージの非推奨化: npm deprecate <package> <message> npmのパッケージレベルで、そのパッケージが非推奨であることを通知するにはnpm de

    Node.jsで機能やパッケージの非推奨メッセージを通知する方法
    teppeis
    teppeis 2024/02/07
    process.emitWarning()
  • #jsprimer week: 2024-02-05 - 2024-02-11

    先週のtextlint weekに引き続き、今週はjsprimerの開発に集中するjsprimer weekです。 目標としては、次のECMAScript仕様であるES2024に入るProposalが今週のTC39ミーティングで確定するので、それに合わせてjsprimerをどう更新するかを決めることです。 ECMAScript 2024の対応 · Issue #1706 · asciidwango/js-primer ES2024の変更はそこまで大きなものはこなさそうなので大丈夫そうですが、Node.jsの変更が多くなってるのでNode.jsでCLIアプリ · JavaScript Primer #jsprimerをどうするかをちょっと考えたいです。 markedjs v8へのアップデート · Issue #1694 · asciidwango/js-primer utils.parseA

    #jsprimer week: 2024-02-05 - 2024-02-11
  • GitHub Sponsorsの収入 @ 2023

    2023年に得たGitHub Sponsorsの収入1をまとめた記事です。 去年(2022年)の結果については、次の記事でまとめています。 GitHub Sponsorsの収入 @ 2022 | Web Scratch GitHub Sponsorsは、主にオープンソース活動に対して金銭的に支援をする仕組みです。 GitHub Sponsorsは個人と組織への支援がありますが、ここでは自分個人に対するGitHub Sponsorsについてまとめています。 自分(@azu)のGitHub Sponsorsは、次のページに公開されています。 Sponsor @azu on GitHub Sponsors この記事を公開する理由は、オープンソースの活動をする人/オープンソースの活動を支援する人にGitHub Sponsorsなどの金銭的な支援の仕組みに興味を持ってもらうためです。 個人的な考えと

    GitHub Sponsorsの収入 @ 2023
    teppeis
    teppeis 2023/12/26
    お世話になりまくりなのでアップグレードしました!来年もよろしくお願いします
  • ni.zsh: npmインストール時のサプライチェーン攻撃を検知する機能を追加

    npm/yarn/pnpm/bunを同じコマンドで扱えるni.zshに、npmで配布されているマルウェアを間違ってインストールするのを防ぐ機能を追加しました。 ni.zshについては、次の記事を参照してください。 npm/yarn/pnpm/bunを同じコマンドで扱える ni のzsh実装を書いた | Web Scratch npmパッケージのマルウェア npmパッケージとしてマルウェアをpublishして開発者を狙うサプライチェーン攻撃が最近多くなっています。 たとえば、次の記事ではemails-helperというもっともらしいパッケージ名でマルウェアが配布されていました。 NPM Package Masquerading as Email Validator Contains C2 and Sophisticated Data Exfiltration 他にもtyposquatting

    ni.zsh: npmインストール時のサプライチェーン攻撃を検知する機能を追加
    teppeis
    teppeis 2023/08/30
    Socket.devのAPIを使ってインストールするnpmパッケージがマルウェアの可能性があるか確認するラッパー
  • npm/yarn/pnpm/bunを同じコマンドで扱える ni のzsh実装を書いた

    niという npm/yarn/pnpm/bun を同じコマンドでインストール/アンストールコマンドを実行できるツールがあります。 antfu/ni: 💡 Use the right package manager 仕組み的には、各パッケージのロックファイルやCorepackで決められたpackageManagerフィールドの値から、どのパッケージマネージャを使うかを判断しています。 たとえば、package-lock.jsonがあるプロジェクトなら npm を使ってるので、niコマンドは npm のコマンドを実行します。 また、packageManagerフィールドがyarn@<version>になっている場合は、niコマンドは yarn コマンドを実行します。 なぜこういうツールが必要になるかというと、npm や yarn などのパッケージマネージャは、それぞれのパッケージマネージャの

    npm/yarn/pnpm/bunを同じコマンドで扱える ni のzsh実装を書いた
    teppeis
    teppeis 2023/08/15
    ni.zsh 使い始めた便利。本家より好み
  • 時期を決めて定期的に更新するnpmパッケージをChangesetsで管理する

    毎月や半年に一回といったように、リリースする時期(間隔)を決めて更新するタイプのパッケージがあります。 具体的には、次のtextlintのプリセットルールは1月と7月という形で半年に一回リリースしています。 textlint-ja/textlint-rule-preset-japanese: textlint rule preset for Japanese. textlint-ja/textlint-rule-preset-ja-technical-writing: 技術文書向けのtextlintルールプリセット なぜ、このようにリリースする時期を決めているかというと、これらのパッケージは他のパッケージに依存していて、他のパッケージの更新がそのままメジャーアップデートになりやすい性質があるためです。 そのため、依存を更新してリリースすると、頻繁にメジャーアップデートしないといけなくなりま

    時期を決めて定期的に更新するnpmパッケージをChangesetsで管理する
  • CommonJSからES Modulesへの移行する方法。トップダウンかボトムアップか

    Secretlint v7でCommonJS からES Modulesへの移行を行いました。 Secretlint v7.0.0をリリースしました。Pure ESMへの書き直し この記事では、CommonJS(CJS)からES Modules(ESM)への移行を行った経緯と、移行する方法について紹介します。 CJSからESMへの移行は、率直に言えば単調な作業で、メリットが見えにくい作業です。 しかし、将来的にCJSよりもESMが主流になることは間違いないので、移行することは必要です。 移行の作業は、移行方法が決まれば大部分は機械的な書き換えが可能です。 では、実際にどうやって移行したのかを紹介します。 ESMへの移行の影響は依存元へと連鎖する Secretlintのリポジトリはmonorepoになっていて、だいたい40コぐらいのパッケージが含まれています。 そしてパッケージ間で依存関係があ

    CommonJSからES Modulesへの移行する方法。トップダウンかボトムアップか
    teppeis
    teppeis 2023/07/06
    知見だ「ツールやスクリプトを使うことで9割ぐらいは、機械的に変換」へー
  • JavaScript Primer 改訂2版の予約が開始されました

    https://jsprimer.net/ で公開している「JavaScript Primer(jsprimer)」の改訂2版の予約が開始されました。 jsprimer 改訂2版の発売日は2023年6月9日の予定です。 KADOKAWA: 「JavaScript Primer 改訂2版 迷わないための入門書」azu [PC・理工科学書] - KADOKAWA Amazon: JavaScript Primer 改訂2版 迷わないための入門書 | azu, Suguru Inatomi | | 通販 | Amazon 楽天: 楽天ブックス: JavaScript Primer 改訂2版 迷わないための入門書 - azu - 9784048931106 : ヨドバシ: ヨドバシ.com - JavaScript Primer 改訂2版 迷わないための入門書 [単行] 通販【全品無料配達

    JavaScript Primer 改訂2版の予約が開始されました
    teppeis
    teppeis 2023/05/18
    継続力すごい!買って応援しよう
  • GitHub SponsorsではPayPalを使った支払いはできなくなったので、クレジットカードに切り替える必要があります

    GitHub SponsorsではPayPalを使った支払いはできなくなったので、クレジットカードに切り替える必要があります タイトル通りですが、GitHub SponsorsでスポンサーするときにPayPalが利用できなくなっています。 2023年2月23日にPayPalの支払いができなっているので、スポンサーを継続したい場合は支払い方法をクレジットカードに切り替える必要があります。 GitHub Sponsors will stop supporting PayPal | GitHub Changelog 2023年2月23日までクレジットカードに切り替えていなかった場合は、自動的にスポンサーをキャンセルした扱いになっています。 支払い方法の変更 次の手順で、GitHub(Sponsorsを含む)の支払い方法をクレジットカードに変更できます。 https://github.com/se

    GitHub SponsorsではPayPalを使った支払いはできなくなったので、クレジットカードに切り替える必要があります
  • GitHubのリリースノートを自動化する仕組み

    GitHub のAutomatically generated release notesを使ってリリースノートの内容を PR に基づいて自動生成するフローを作りました。 今までは、コミットメッセージのルールであるConventional Commitsとconventional-github-releaserを使って、コミットからリリースノートを自動生成していました。 他の人の PR でも、squah merge でコミットメッセージを書き換えることで、リリースノートに反映されるようにしていました。 ただ GitHub に仕組みは違うけどほぼ似たことをするAutomatically generated release notesという機能が実装されているので、これをベースに移行しようと思って、そのワークフローを作っていました。 リリースノート自動生成テクニック - mizdra’s bl

    GitHubのリリースノートを自動化する仕組み
  • find-node-modules-import: importsしてるパッケージ名やNode.jsのコアモジュールを検出するツール

    find-node-modules-import: importsしてるパッケージ名やNode.jsのコアモジュールを検出するツール find-node-modules-importという、ソースコードからimportsしてるパッケージ名を検索するシンプルなCLIを書きました。 azu/find-node-modules-import: Find specific node modules import statement in your source code 特徴 インポートしてるパッケージ名を全て検出できる インポートしてる特定のパッケージ名を検出できる node:fsやassertのようなNode.jsのコアモジュールを検出できる 📝 このツールは、ESMのimportのみに対応しています。 JavaScriptTypeScriptどちらも対応しています。 使い方 Usage

    find-node-modules-import: importsしてるパッケージ名やNode.jsのコアモジュールを検出するツール
  • 1Passwordを使って、ローカルにファイル(~/.configや.env)として置かれてる生のパスワードなどを削除した

    1Passwordを使って、ローカルにファイル(~/.configや.env)として置かれてる生のパスワードなどを削除した 最近、コミットはされないがローカルのディレクトリに置かれている.envのようなファイルから生のパスワードやAPI Tokenを削除しました。 これは、ローカルでマルウェアを実行した場合に、ローカルに置かれている生のパスワードやAPI Tokenを盗まれる可能性があるためです。 最近は、npm install時のpostinstallでのデータを盗むようなマルウェアを仕込んだりするソフトウェアサプライチェーン攻撃が多様化しています。 Compromised PyTorch-nightly dependency chain between December 25th and December 30th, 2022. | PyTorch What’s Really Goin

    1Passwordを使って、ローカルにファイル(~/.configや.env)として置かれてる生のパスワードなどを削除した
    teppeis
    teppeis 2023/02/01
    ローカルに平文トークン置いていい牧歌的な時代に終わりが来た、のかな
  • eslint-cjs-to-esm: CJSをESMへとマイグレーションするツールを書いた

    最近、色々なライブラリをCommonJS(CJS)からECMAScript Module(ESM)へとマイグレーションしています。 その際に、ESMでは__dirnameやrequireなどCommonJS特有の機能は使えなくなっています。 また、TypeScriptやBabelなど多くのツールはCJSではimport時に拡張子はなくても大丈夫ですが、ESMの場合はimport時に拡張子が必要になります。 import url from "node:url"; - import { mdEscape } from "./mdEscape"; + import { mdEscape } from "./mdEscape.js"; // ESMでは相対パスに拡張子は省略できない + const __filename = url.fileURLToPath(import.meta.url); /

    eslint-cjs-to-esm: CJSをESMへとマイグレーションするツールを書いた
    teppeis
    teppeis 2023/01/19
    こういうツールをESLintのラッパーとして提供するっていうの良さそう
  • メールの受信トレイを空にするInbox Zeroを始めた

    Gmailをメーラーとして使ってますが、メールを開くのがいまだに苦手です。 これをどうにかしようと、メールをもっと気軽に消せる方法はないかなーと思ってInbox Zeroを思い出したのでやり始めました。 次の記事や動画を参考にしています。 Inbox Zero and the Inbox Zero Method — everything you need to know 【15分で完了】1度設定したら戻れない、受信トレイ0生活 | おかんの給湯室 My Complete Inbox Zero Workflow (in 2022)! - YouTube 基的には、この動画を参考にして設定しました。 Inbox Zeroの設定方法 細かい設定は参考にした動画や記事の方に任せます。 Gmailの”設定”でやること 詳細タブ [ ] 自動表示 を有効化(アーカイブしたときに次のメールを自動で開く

    メールの受信トレイを空にするInbox Zeroを始めた
    teppeis
    teppeis 2022/12/24
  • GitHub Sponsorsの収入 @ 2022

    月毎の金額をグラフにすると次のようになります。 月毎の金額に振れ幅があるのは、サポートしてる人の支払いのタイミングが日毎に分かれているため、振込のタイミングで金額のブレがあるようです。 また、One-Timeでのサポートがある月は、Monthlyのサポートにプラスされる形です。 2022年7月だけ大きく増えているのは、GitHubのMaintainer Monthで$500ほどOne-TimeサポートをGitHub社からもらったためです。 Thank you to our maintainers | The GitHub Blog Maintainer Month: オープンソースのメンテナーがやっている仕事 | Web Scratch 継続的なサポートをしてくれている人 実際の振込タイミングの金額で見るとブレ幅があるので、滑らかにするために2022年12月現在で継続的なスポンサー(cur

    GitHub Sponsorsの収入 @ 2022
    teppeis
    teppeis 2022/12/23
    今年もありがとうございました!
  • パスワード管理/MFA管理の戦略

    自分のパスワードやMFA(多要素認証)の管理方法についてまとめた記事です。 パスワード管理とTOTP(Time-based One-time Password)の管理として1Passwordを使い、MFA(多要素認証)の2要素目としてYubiKeyを2枚使っています。 パスワード管理とMFA管理を安全で使いやすくするのはかなり複雑で難しいため、完璧にやるのが難しいです。 そのため、その難しさから二要素認証を設定するべきアカウントも手間などから設定を省いてしまったり、管理方法に一貫性がありませんでした。 この記事では、パスワード管理/MFA管理の戦略を決めることで、どのサイトのどのアカウントのパスワード管理をあまり頭を使わなくてもできるようにするのが目的です。利便性と安全性のバランスを意識はしていますが、この記事のやり方が正解ではないので、各自の目的に合わせて読み替えると良いと思います。 用

    パスワード管理/MFA管理の戦略
    teppeis
    teppeis 2022/12/04
    バックアップコード、どうすりゃいいんだろう
  • Node.jsのツールで--cacheフラグを実装するためのライブラリを書いた

    ESLint、Prettierなどは--cacheフラグという一度チェックしたファイルは、ファイルが変更されるまで再チェックしないキャッシュの仕組みを実装しています。 同様の仕組みをtextlintを実装したことはありますが、file-entry-cacheを使い結構煩雑な実装が必要になります。ファイル変更を元に処理結果をキャッシュする仕組みはある程度定型化されているのに、毎回同じような実装をツールごとに書くのは微妙だなと思ったので、ライブラリを書きました。 azu/file-cache: Node.js library that provide a cache for file metadata or file content. --cacheフラグの仕組み --cacheフラグの仕組みとしては、ファイルの内容のハッシュ値 or ファイルの更新時刻をキャッシュファイルとして保存して置きま

    Node.jsのツールで--cacheフラグを実装するためのライブラリを書いた
  • Maintainer Month: オープンソースをメンテナンスするコツ

    週に一度まとめて更新のようなパターンだと、体調が悪いときなどにその週はスキップされ、また次の週も更新しようとして偶然タイミングが合わなかった場合などに、1ヶ月更新が止まるみたいな状態は起きやすいです。 1ヶ月更新を止めてしまうと、そこで更新する習慣が失われて、この書籍でいう逆戻りが起きるのかなと思っています。 そのため、JSer.infoではタスクを細分化して進められる時にやっていけるような形を作っています。 ライブラリのメンテナンスのリズムをツール化する JavaScript周りは顕著ですが、ライブラリが細かく分かれていることが多いため、リポジトリの数も多いです。 そのため、リポジトリのCI設定や依存ライブラリのアップデートなどをメンテナンスするだけで無限の時間がかかります。 このメンテナンス作業を手動で毎回やるととても疲れるので、自分の場合はツール化していることが多いです。 作ったり、

    Maintainer Month: オープンソースをメンテナンスするコツ
    teppeis
    teppeis 2022/06/28
  • GitHub Sponsorsの募集を始めてから2年が経ったので振り返る

    この記事は、GitHub Sponsorsを募集開始してから、約2年経つのでGitHub Sponsorsについて振り返った記事です。 この記事では、GitHub Sponsorsを始めた理由、Tierの設計、やってみた結果と感謝、やったことによる変化、これからやる方へのアドバイスなどを書いています。 GitHub Sponsorsを始めた理由 2019年10月からGitHub Sponsorsのページを公開して、スポンサーの募集を開始しました。 GitHub Sponsorの募集ページを公開しました。https://t.co/YpSPfMPxjU#Promise や #jsprimer を書いたり、textlintを作ったり色々OSSを作ってます。 後は https://t.co/CXy3hOXJ8q を8年ぐらい毎週更新してたりもします。@jser_info Sponsorとかもある

    GitHub Sponsorsの募集を始めてから2年が経ったので振り返る
    teppeis
    teppeis 2021/10/01
    微力ながら応援してます「2020年12月と2021年6月にMonthly Estimated Incomeが大きく変化しているのは、サイボウズさんとヴェルクさんにスポンサーしてもらったためです」