移行が大変だもん
The Buffer type has been the cornerstone for binary data handling in Node.js since the beginning. However, these days we have Uint8Array, which is a native JavaScript type and works cross-platform. While Buffer is an instance of Uint8Array, it introduces numerous methods that are not available in other JavaScript environments. Consequently, code leveraging Buffer-specific methods needs polyfilling
多くのプログラミング言語の処理系に、攻撃者が任意のコマンドを実行できる深刻な脆弱性が見つかった。JPCERTコーディネーションセンター(JPCERT/CC)と情報処理推進機構(IPA)が共同運営する脆弱性対策情報ポータルサイト「JVN(Japan Vulnerability Notes)」で2024年4月15日に公開された。 脆弱性が確認されたのは「PHP」「Rust」「Haskell」の各言語処理系とJavaScript/TypeScriptの処理系「Node.js」、音声や動画をダウンロードできる高機能なコマンド「yt-dlp」である。ただし、この脆弱性の影響を受けるOSはWindowsだけで、LinuxやmacOSなどの他のOSには影響しない。 多くのプログラミング言語は、プログラムの中からOS上でコマンドを実行する機能を持つ。Windowsでは言語処理系が「CreateProces
はじめに bun installで生成されるBunのロックファイルはbun.lockbというバイナリファイルである。 公式を読むと性能向上のためにバイナリ化していることがわかる。 Why is it binary? In a word: Performance. Bun’s lockfile saves & loads incredibly quickly, and saves a lot more data than what is typically inside lockfiles. 困ること まさにこのツイートの問題で、Git管理したいのにバイナリが出力されるのは不便で、どうしよう? と実際の本番利用では困るだろう。 解決方法 案1. git diffで差分確認する 公式のページを読むと、どうやら設定追加でgit diffができるらしい。 bun install request g
ライブラリやツールなどを作っているときに、特定の機能やパッケージを非推奨にする場合があります。 これらの非推奨はリポジトリ上のREADMEやIssueなどに書いても、利用者が気づかないことがあります。 そのため、利用者が気付けるように非推奨の機能やパッケージを使った場合に警告を出す方法を紹介します。 非推奨にはいくつかの段階があり、それに応じてやり方を変えられるので、それぞれの方法を紹介します。 パッケージの非推奨化: npm deprecate <package> <message> コードレベルの非推奨化: JSDocタグの@deprecated 実行時の非推奨化: process.emitWarning() パッケージの非推奨化: npm deprecate <package> <message> npmのパッケージレベルで、そのパッケージが非推奨であることを通知するにはnpm de
はじめに 吉川@広島です。 OpenAIの新機能が盛り上がっていますね! OpenAI DevDayで発表された様々な機能について、公式ドキュメントを見ながら少しだけ詳細を確認してみた | DevelopersIO いまのところ弊社記事はPythonコードが多い印象がありますので、いくつかの新規機能についてNode.js組である自分もサンプルコードを上げてみます。 環境 node v18.14.2 typescript 5.0.2 openai 4.16.1 [共通] OpenAIクライアントの初期化 openai パッケージをインストールします。 npm i openai クライアントを初期化します。 const openAi = new OpenAI({ apiKey: "xxxxxxxxxxxxxxxxxxxxxx", }); DALL·E 3 API [アップデート]DALL·E
Kener: Open-source Node.js status page tool, designed to make service monitoring and incident handling a breeze. It offers a sleek and user-friendly interface that simplifies tracking service outages and improves how we communicate during incidents. And the best part? Kener integrates seamlessly with GitHub, making incident management a team effort—making it easier for us to track and fix issues t
2月3日、Denoは「Deno in 2023」と題した記事を公開した。昨年(2023年)一年間においてDenoがどのような進化を遂げたかを解説している。 2月3日、Denoは「Deno in 2023」と題した記事を公開した。昨年(2023年)一年間においてDenoがどのような進化を遂げたかを解説している。以下に内容を抜粋して紹介する。詳細は元記事を参照していただきたい。 Nodeとnpmとの互換性強化 Denoは2023年の改善を経て、Nodeの組み込みAPIをサポートし、npmモジュールの読み込みに対応した。これによりNodeとの互換性が向上し、既存のNodeプロジェクトをスムーズにDenoに移行できるようになった。 シンプルで高速なWebサーバー Deno.serve() Denoが導入したDeno.serve()関数により、Webサーバーの作成が大幅に簡略化された。イベントループ
こんにちは!バックエンドエンジニアのハラノです。 くらしのマーケットのシステムの中には、Node.js(NestJS)を使用したマイクロサービスが存在しており、今回 Node.js のバージョンアップを行いました。 バージョンアップの方針及び、実際にアップデートを行う際に出てきた問題とその対策をご紹介します。 バージョンアップの方針 バージョンアップの結果 各種対応において、発生した問題と対応 TypeScript のバージョンアップ NestJS のバージョンアップ @nestjs/common から HttpService, HttpModule が削除された Inject にInject(TestRepository.name)のように、クラス名を渡している部分について、依存関係の解決が行えなくなっていた RxJS のtoPromiseが Deprecated になった TypeOR
2023年10月17日にリリースされたNode.js v21の主な変更点を紹介します。 この記事を書いている時点ではv21.4.0が最新版ですので、v21.0.0からv21.4.0までの変更点で注目の機能をまとめています。 nodejs.org fetchとWebStreamsが安定版へ WebSocketの実験的な実装 navigator.language/languages の追加 V8 11.8 による新しい JavaScript の機能 ESM をデフォルト化するフラグ 実行ファイルがESMなのか自動判定する実験的機能 import.meta.dirname/filename の追加 テストランナーがglobでのテストファイル指定に対応 警告(Warning)を無効化するフラグの追加 その他の変更点 まとめ 参考記事 fetchとWebStreamsが安定版へ github.com
2023年10月20日にとらのあなラボ社と Deno 社の共催で、Deno Fest というイベントを開催しました。開催の様子は YouTube の配信や 𝕏 のハッシュタグ #deno_festなどから確認できます。 Deno Fest 全セッションが終了しました。 登壇者、参加者の皆さん、ありがとうございました!! #deno_fest #deno #toranoana_deno #toralab pic.twitter.com/LEAfCovABo — 虎の穴ラボ (@toranoana_lab) October 20, 2023 開催のきっかけDeno 社では普段は全員がフルリモートで働いており、オフィスなどは持っていません。その代わり年に数回 Deno Offsite という社内イベントを開催していて、1週間メンバー全員が世界中から1つの場所に集まって、色々なトピックについて議
IntroductionIn this article I describe a simple architecture for an early stage SAAS. As a solo founder, I report some choices made to launch Feelback, a small-scale SAAS for collecting users signals about any content. This article will cover the technical side of designing and running a simple SAAS. It will also include some details about coding and evolving the initial feature set ready at launc
ということをやりたくて、こうやったらできたという覚書。 やりたいこと こういうモノレポ構成とする。 - package.json - package-lock.json - packages - shared - app1 - app2 で、app1にあるコードベースを@myapp/app1とした場合、@myapp/sharedに置いたTSファイルを、そのままモジュールとして利用したいとする。 import { foo } from "@myapp/shared"; import { bar } from "@myapp/shared/bar"; // This is @myapp/app1 or @myapp/app2 code @myapp/app1と@myapp/app2は、それぞれ独自のコードベースになってて、それぞれtscではなくviteやesbuildなどのバンドラーを使う前提
Notable changes built-in .env file support Starting from Node.js v20.6.0, Node.js supports .env files for configuring environment variables. Your configuration file should follow the INI file format, with each line containing a key-value pair for an environment variable. To initialize your Node.js application with predefined configurations, use the following CLI command: node --env-file=config.env
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
ここまで見てきた3社の事例は、いずれもプログラミング言語「Ruby」とそのWebアプリケーションフレームワーク「Ruby on Rails(以下、Rails)」で開発したアプリケーションにモジュラーモノリスを導入するものだった。Railsでアプリを開発すると通常はモノリスになるため、サービスの成長によって巨大なモノリスが出来上がる。これをモジュラーモノリス化することで、開発生産性を上げていた。 モジュラーモノリスはアーキテクチャーなので、実際にはプログラミング言語やフレームワークには依存しない。freeeの事例でも、Railsのシステムに加え、開発言語として「Go」を採用したシステムにモジュラーモノリスを導入していた。 今回は、開発言語として「TypeScript」、そのサーバーサイド実行環境として「Node.js」を採用したUbieの事例を取り上げる。同社は、消費者向けの症状検索エンジン
You've been working with Node.js for a while. You've built some apps, played around with different modules, and even gotten comfortable with asynchronous programming. But there's something that's been nagging at you — the event loop. If you’re like me, you’ve spent countless hours reading documentation and watching videos, trying to understand the event loop. But even as an experienced developer,
PrettierというソフトウェアはNode.jsで動作します。他のNode.jsで動作するソフトウェアと同様に、Prettierも、サポート対象のNode.jsのバージョンを決めています。 たとえば、Prettier v2.x は Node.js 10.13.0 以降のみで動作します。それより前の Node.js でももしかしたら動くかもしれませんが、それは想定されていません。CIでもテストしてません。 現在 Prettier v3.0 の開発を進めていて、どの Node.js までサポートしようか、という議論になりました。結論が出て、今後同じような議論を避けるためにポリシーを決めたので、理由と共に紹介しようと思います。 先に結論 https://github.com/prettier/prettier/wiki/The-policy-to-drop-Node.js-version に書
毎月や半年に一回といったように、リリースする時期(間隔)を決めて更新するタイプのパッケージがあります。 具体的には、次のtextlintのプリセットルールは1月と7月という形で半年に一回リリースしています。 textlint-ja/textlint-rule-preset-japanese: textlint rule preset for Japanese. textlint-ja/textlint-rule-preset-ja-technical-writing: 技術文書向けのtextlintルールプリセット なぜ、このようにリリースする時期を決めているかというと、これらのパッケージは他のパッケージに依存していて、他のパッケージの更新がそのままメジャーアップデートになりやすい性質があるためです。 そのため、依存を更新してリリースすると、頻繁にメジャーアップデートしないといけなくなりま
年明けはまず環境整備から、ということで今年は mise を導入することにした。 去年まで rtx とか rtx-cli という名前でやってた Rust 実装の asdf 代替の多用途バージョン管理ツール。この年明けに急に mise にリネームしたよ、というニュースが流れてきて、気になって見てみたら良さそうだった。 一般的な解説は "rtx" でググると日本語記事も出てくるのでそっちを見て欲しいけど、個人的な asdf に対するメリットはこのあたり。 とにかく速い asdf は Node の最新バージョンの反映が node-build 依存で、更新が数日遅れることがあった 結果的に手動で定義ファイルを更新していたが、処理速度も遅く面倒だった 参考: asdf で node-build の定義ファイルを手動更新する asdf はコマンド体系が謎だった(自分には) 例えば v20 系の最新をイン
Back in 2008, most people thought of JavaScript as just a client-side language. But when Google's V8 appeared, young developer Ryan Dahl made the connection between non-blocking servers, V8, and JavaScript. It was by combining these key elements that he was able to create the now hugely popular Node.js. What young Ryan Dahl probably didn't expect was how much forking drama would follow. Join us
次のLTS版となる「Node.js 22」正式リリース。WebAssembly GCがデフォルトで利用可能に JavaScriptランタイム「Node.js」の最新バージョンとなる「Node.js 22」正式版がリリースされました。 Node.jsは偶数バージョンがリリースされてから6カ月の後に、30カ月の長期サポート期間(LTS:Long Term Support)に入ります。Node.js 22も、6カ月後の2024年10月にLTSとなる予定です。 Node.js 22 is here Featuring: require()ing ESM graphs, WebSocket client, updates of the V8 JavaScript engine, and more. Big thank you to @_rafaelgss and @satanacchio for t
BatBadBut: You can't securely execute commands on Windows Posted on April 9, 2024 • 10 minutes • 2109 words Table of contents Introduction TL;DR CVSS Score Technical Details Root Cause Wrapping CreateProcess Parsing rule of cmd.exe Mitigation Escaping double quotes? As a Developer As a User As a Maintainer of the runtime Conclusion Appendix Appendix A: Flowchart to determine if your applications a
The JavaScript APIs we have today are so much better than those we had even a decade ago. Consider the transition for XMLHttpRequest to fetch(): the developer experience is dramatically better, allowing us to write more succinct, functional code that accomplishes the same thing. The introduction of promises for asynchronous programming allowed this change, along with a series of other changes that
Node.js で X(Twitter)、Bluesky、Mastodon に JSON データから同時投稿(クロスポスト)する JSON データから X(Twitter)、Bluesky、Mastodon などの SNS にクロスポストする JavaScript(Node.js)を書いてみたので GitHub で公開しました。 私事ながら、現状、SNS としては X (旧 Twitter)、Bluesky、Mastodon を日常的に使っていて (Threads と Nostr も使っていますが特に Threads は放置気味......)、全部じゃないにしても、一部の投稿については、これらすべてのサービスに同時投稿したいなと、なんとなく思っていました。 巷にはそういう Web サービスも探せばあるとは思うんですが、なるべく自前でやろうということで、週末に思い立って手を付けたら見事に週末
3 行まとめ CJS、ESM に対応した npm パッケージが Deno + dntで簡単に作成できる Deno で開発できるので、Lint、Format、Test、TypeCheck が設定なしですぐに使える dntで作成した CJS、ESM のファイルに対して、それぞれ Node.js でもテストを実行してくれる Deno のモジュールを npm パッケージに変換するdnt Deno のdntモジュールを使うと、Deno で実装したモジュールを CommonJS(CJS) と ESM、TypeScript に対応した npm パッケージとして公開できます。 実際、今回 Deno とdntを試してみましたが、Deno には Linter、Formatter、Test などが組み込まれているので、すぐに npm パッケージの作成に取り掛かれるのが良かったです。また、CICD の自動化(Gi
We're excited to announce the release of Node.js 22! Highlights include require()ing ES modules, a WebSocket client, updates of the V8 JavaScript engine, and more! Node.js 22 will enter long-term support (LTS) in October, but until then, it will be the "Current" release for the next six months. We encourage you to explore the new features and benefits offered by this latest release and evaluate th
Deno、JavaScript用データストア「Deno KV on Deno Deploy」オープンベータに。分散環境でも強い一貫性、1GBストレージまで無料 サーバサイドやエッジでのJavaScriptランタイムを提供するDenoは、JavaScript/TypeScript用のデータストアである「Deno KV」を、同社の分散ホスティング環境であるDeno Deploy上でオープンベータとして公開したことを発表しました。 DenoはもともとNode.jsよりも優れたJavaScript/TypeScriptランタイム実現する目的で開発されたため、データストアの機能は備えていません。 そのため、Denoでアプリケーションを開発し実行する際には、データを保存するためのデータベースをユーザーが用意する必要がありました。 そこで、今年(2023年)5月に、Denoに統合されたデータストアとして
日本のフロントエンド界隈をリードし続ける古川陽介さんとTechFeedがコラボして、フロントエンド技術の最新動向を月イチでお届けする連載企画、「古川陽介に聞く!フロントエンド最前線」の新着動画が公開されました! こんにちは、TechFeed CEOの白石です。 日本のフロントエンド界隈をリードし続ける古川陽介さんとTechFeedがコラボして、フロントエンド技術の最新動向を月イチでお届けする連載企画、「 古川陽介に聞く!フロントエンド最前線 」の新着動画が公開されました! 古川陽介さん(Japan Node.js Association代表理事) 聞き手: 白石俊平(TechFeed CEO) YouTubeのチャンネル登録はこちらから! 毎月3〜4つのトピックを取り上げ、TechFeed CEO 白石俊平とNode.js Association代表理事 古川陽介が縦横無尽に語ります。 フ
Recently I landed experimental support for require()-ing synchronous ES modules in Node.js, a feature that has been long overdue. In the pull request, I commented with my understanding about why it did not happen sooner before this pull request in 2024. This post expands on that comment a bit more. The opinions in this post are my own and reflect my perception of the ESM development in Node.js as
A simple yet powerful testing framework for Node.js Japa comes with everything you need to test your backend applications. Be it writing JSON API tests using an Open API schema or writing browser tests using Playwright. Unlike other testing frameworks born out of the frontend ecosystem, Japa focuses only on testing backend applications and libraries. Therefore, Japa is simpler, faster, and bloatwa
みなさんこんにちは、Deno Fest 運営です。 2023年10月20日に開催した、Denoのお祭り『Deno Fest(ディノフェス)』にご参加いただいた皆様ありがとうございました。 今回は本イベントの立ち上げと準備、当日の様子についてレポートします。 発端 「とらのあなラボが、Deno の勉強会をやるぞ」と聞いて「なんで?」と浮かぶ方が少なくないと思います。 とらのあなラボは、2021年8月から『toranoana.deno』 という「Deno に関することならなんでもOK」の勉強会を続けています。(直近は 8月開催でした) yumenosora.connpass.com そういった活動もあり、Deno の日本コミュニティ deno- ja に toranoana.deno の運営メンバーもお邪魔しています。 Deno社メンバーの来日に合わせて、コミュニティ内でリアルイベントをやる機
JSer.info #660 - Bun v1.0がリリースされました。 Bun 1.0 | Bun Blog Node.js互換のruntimeとコアパッケージの実装、TypeScriptのTranspiler、Bundler、npmのパッケージマネージャー、bun testでのテストツールをもつツールキットです。 Bun 1.0 is here - YouTube v1.0リリースによって、VercelがパッケージマネージャーとしてのBunをサポートしたり(Runtimeとしては未サポート)、RailsがBunのサポートを追加したりしています。 Bun install is now supported with zero configuration – Vercel Add Bun support by terracatta · Pull Request #49241 · rails/
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く