タグ

javascriptとnode.jsに関するakishin999のブックマーク (77)

  • JavaScriptパッケージシステム「npm」は巨大なバグを抱えていると指摘し、新たなパッケージシステムを開発する「vlt」。npm作者らの参加を発表

    JavaScriptパッケージシステム「npm」は巨大なバグを抱えていると指摘し、新たなパッケージシステムを開発する「vlt」。npm作者らの参加を発表 npmに代わる新しいJavaScriptのパッケージシステム「vlt」(vōlt:ボールト)を開発しているvlt technologyは、同社にnpmの作者であるIsaac Z. Schlueter氏、npmのスタッフエンジニアリングマネージャであったDarcy Clarke氏、npmのCLIチームであったRuy Adornoらが参加すると発表しました。 Node.jsとnpmが作ったJavaScriptのエコシステム サーバサイドでJavaScriptを実行可能にしたNode.jsの登場と、そのNode.jsを基盤にJavaScriptのアプリケーションやモジュールなどをパッケージングして登録し、自由にダウンロード可能にしたレジストリで

    JavaScriptパッケージシステム「npm」は巨大なバグを抱えていると指摘し、新たなパッケージシステムを開発する「vlt」。npm作者らの参加を発表
  • Node.jsでプロトタイプ汚染後に任意コード実行まで繋げた事例 - knqyf263's blog

    概要 前回Node.jsのプロトタイプ汚染を起こすためのバイパス方法について記事にしました。 knqyf263.hatenablog.com プロトタイプ汚染後に何が出来るのか、ということについては基的にアプリケーション依存なのであまり話題になることは少ないです。 自分の知る限り一番多いのは if(user.isAdmin) { // do something } といったような重要なプロパティを書き換えることで権限昇格する例です。ただし、自分の理解では isAdmin が初期化されていないことが前提条件として必要です。 const obj1 = {}; const obj2 = JSON.parse('{"__proto__":{"isAdmin":true}}'); merge(obj1, obj2) var a = {} a.isAdmin // true var b = {isA

    Node.jsでプロトタイプ汚染後に任意コード実行まで繋げた事例 - knqyf263's blog
  • Denoとはなにか - 実際につかってみる - Qiita

    ↑かわいい Deno(ディーノ)という名前について、聞いたことがありますでしょうか。私も最近まで知りませんでしたが、実はv1.0がリリースされたのが2020/5/13とごく最近のことです。開発自体は2年前から行われておりましたが、結構新しめの技術です。 その証拠(?)にDenoでググると担々麺ばっかりでてきます。(2019/5/18現在) 結局Denoってなんなの? Denoは、Node.jsの製作者であるRyan Dahlによって作られた、新しいJS/TSランタイムです。すっごい雑に説明すると、Node.jsのイケてなかったところを改良したものがDenoになります。Denoって文字を並べ替えるとNodeになりますね。 Denoがつくられた背景 DenoはJSConf EU 2018でのRyan Dahlによる講演「Node.jsに関する10の反省点」において発表されました。 10 Thi

    Denoとはなにか - 実際につかってみる - Qiita
  • Denoの登場でNode.jsの時代は終わるのか? - Qiita

    Deno ver 1.0 5月13日、Deno v1.0の正式リリースが決定しました。 少し勉強してみましょう。 ↑ かわいい Denoってなに? DenoはNode.jsの製作者であるRyan Dahlによって作られました、新しいJS/TSランタイムです Denoはdefaultで安全です(許可なしではファイル・ネットワーク・環境にアクセスできません) DenoTypeScriptがビルトインで入ってます 外部パッケージはurlでインポートできます(Goみたいに) ディーノって読むらしい(デノではない) Denoが作られた背景 一年前くらいにこの動画を見たことを思い出しました。 Node.jsの作者であるRyan Dahlが、Node.jsを開発した当時の仕様を後悔する旨の動画です。 https://www.youtube.com/watch?v=M3BM9TB-8yA&t=1319s

    Denoの登場でNode.jsの時代は終わるのか? - Qiita
  • Callback を撲滅せよ

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。言語サポート(Node.js)チームの伊藤(@koh110)です。 Node.js v10 も10月にLTSとなり async/await によるフロー制御は当たり前のように利用されるようになってきました。JavaScriptの非同期処理は async/await から覚える人も今後増えていくでしょう。今回はそんな非同期処理について、社内での事例を交えて記事を書いていこうと思います。 index Promise 化がなぜ重要なのか ユーザーに promisify をさせる落とし穴 Road to Promise まとめ Promise 化がなぜ重要なのか ちょうど3年前のアドベントカレンダーで、今後はいろいろなモジュー

    Callback を撲滅せよ
  • Node.jsにおけるプロトタイプ汚染攻撃とは何か - ぼちぼち日記

    1. はじめに 最近わけあってNodeのセキュリティ調査をしているのですが、今年の5月に開催された North Sec 2018 でセキュリティ研究者の Olivier Arteau 氏による 「Prototype pollution attacks in NodeJS applications」という面白い発表を見つけました。 この発表の論文や発表資料、デモ動画などもgithubで公開されていますし、ちょうどタイミングよくセッション動画も最近公開されました。 github.com Olivier Arteau -- Prototype pollution attacks in NodeJS applications この発表で解説されているのは、悪意のある攻撃者が、JavaScript言語固有のプロトタイプチェーンの挙動を利用して、Webサーバを攻撃する方法です。 発表者は、npmからダ

    Node.jsにおけるプロトタイプ汚染攻撃とは何か - ぼちぼち日記
  • ES modulesのexport defaultは使わないほうがよい - Islands in the byte stream

    ES modulesにexport defaultってのがあるんですが、default exportのexport対象に名前が必須でないため、IDEによるコード補完と相性が悪いです。 他のところはどうしてるのかなと思って調べてみると、GoogleTypeScript Style Guide では禁止されてました(v1.0.0, 2019/07 現在)。 https://github.com/google/gts/blob/v1.0.0/tslint.json#L40 ("no-default-export": true) TypeScript compiler coding guidelineには特に言及はないみたいですね。 https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines そもそもexport defaultは

    ES modulesのexport defaultは使わないほうがよい - Islands in the byte stream
  • WebAssemblyをNodeJS Native Addonの配布形式として使う - Islands in the byte stream

    三行まとめ Cライブラリzopfliをwasmにビルドして npmjs.com にリリースしてみた wasmはポータブルなバイナリで、ネイティブコードと比較して半分程度の性能を期待できる emscriptenは N-API と比べると出来ることが少なすぎるのが課題 背景 WebAssembly *1 の評価のために、Cで書かれたzlib互換の圧縮ライブラリ google/zopfli をemscriptenでwasmにビルドしてリリースしてみました。 評価だけでなくリリースまでしたのは、zopfliのnodejs native addonである node-zopfli をしばしばインストールできないことがあるという問題があってそれを解決したかったからです。nodejsのnative addonはnode-gypというビルドツールを使うことが多いようですが、これはPython 2.x などn

    WebAssemblyをNodeJS Native Addonの配布形式として使う - Islands in the byte stream
  • JavaScript モジュールの現状 | POSTD

    (注:2017/07/19、いただいたフィードバックを元に翻訳を修正いたしました。) ESM、CJS、UMD、AMD  — どれを使うべき? 最近、 Twitter では、 ESモジュール の現状、特に、 *.mjs をファイル拡張子として導入すると決めた Node.js の現状について大騒ぎになっています。この話題は複雑で、かなりの労力を費やしてそれに専念しないと議論について行けないので、 皆が恐れと不安を抱く のも無理はありません。 古き恐れ フロントエンド開発者なら、 JavaScriptの依存関係の管理に悩まされた日々 を憶えている人も多いでしょう。あの頃は、ライブラリをベンダーフォルダにコピー&ペーストし、グローバル変数に依存し、あらゆる物を正しい順序でconcatしようとしてもネームスペースの問題に対処する必要がありました。 何年もかかって、私たちは共通モジュール形式と中央集権

    JavaScript モジュールの現状 | POSTD
  • Babel、Browserify のクイックスタート2017年夏版 - Qiita

    Babel と Browserify の周辺ツールが2015年と比べてだいぶ変わってきたので、ドキュメントにまとめました。 NVS (Node Version Switcher) 複数の Node.js のバージョンを管理できるツールです。ChakraCore やナイトリービルドもインストールできます。MacLinux 版だけでなく Windows 版のインストーラーも配布されています。 Mac にインストールする場合、次のコマンドを実行しました。 export NVS_HOME="$HOME/.nvs" git clone https://github.com/jasongin/nvs "$NVS_HOME" . "$NVS_HOME/nvs.sh" install

    Babel、Browserify のクイックスタート2017年夏版 - Qiita
  • 10年遅れたJavaScriptの知識をざっくり10分でアップデートしよう

    久しぶりにJavaScriptを勉強しようと思ったら、すっかり浦島太郎状態だった……なんて人も多いのでは?  モダンなJavaScriptの知識をコンパクトにまとめました。 JavaScriptを取り巻く環境がどんどん変化しています。新たなツールやフレームワークが生み出されているだけでなく、言語そのものがES2015(ES6)の登場で大きく変わりました。JavaScript開発の学習がいかに難しいか愚痴をこぼす記事がたくさんありますが、無理もないことです。 記事ではモダンJavaScriptを紹介します。JavaScriptの進展を解説し、フロントエンドWebアプリケーションを作るために使われているツールや手法の全体像を確認します。JavaScriptを学び始めたばかりの人や、以前は使っていて数年間離れたため変化を知りたい人はぜひ読んでください。 Node.jsについて Node.jsは

    10年遅れたJavaScriptの知識をざっくり10分でアップデートしよう
  • libiconvをemscriptenでjs化し、node.jsで使った - non vorrei lavorare

    今日は、このとろころ、暑いくらいだったり、寒かったりとの気温の変化に息子達や自分もついていけずに、長男の通院や、次男の通院で午前休を消費している@kjunichiです。 背景 WindowsでCビルド環境が入っていない環境下でnode.jsでSMTPを受けるサーバーを書いていた。 世界で活躍するエンジニアと違い、自分は日語を含むメールしか扱わないため、iso-2022-jpでエンコードされている文字コードをUTF-8にしてコンソールに表示する必要があった。 node.js向けのiconvパッケージがいくつか見るかるも、パフォーマンス重視しているようで、libiconvのCでのバインドだった。この為、使えなかった。 sjisをutf-8に変換するjsピュア実装はあるも、JISをUTF-8にする実装は見つけることが出来なかった。 Emscriptenでやってみるか! 別環境でlibiconv

    libiconvをemscriptenでjs化し、node.jsで使った - non vorrei lavorare
  • project毎のnpmコマンドをいい感じにするnpmrc & config達 - Qiita

    npmrcのドキュメントを読みなおしていたら、.npmrcは/path/to/my/project/.npmrcのようにプロジェクト毎に配置することが出来る事に気づいて、ちょっと使ってみたら便利だった。 globalやhomeディレクトリへの設定を前提としたnpm configの記事は結構あるが、プロジェクト毎でnpm-configについて書かれている記事があんまり無かったのでまとめてみる。 npm-configの何が良いのか? project毎に出来ると何が良いのか? npm-configの設定をすると、色々コマンドを省略出来たりして良い事がある。 (参考:2016年版 Node.jsで幸せになれる10の習慣) npmrcやnpm-configは、個人開発用であれば、$HOME/.npmrcへの設定だったりnpm config setでの設定で十分。 また、npm registryに登録

    project毎のnpmコマンドをいい感じにするnpmrc & config達 - Qiita
  • ES Modules と Node.js について - from scratch

    書こう書こうと思いながらこのタイミングまでのがしてしまいました。 今一番 Node.js の中で hot な discussion の一つと言えるでしょう、『ES Modules が Node.js の中でどうなるか』です。 ES Modules 現況 ES2015 が発刊されてそろそろ一年です。 ES2015 にある機能は Node.js v6でも 93% 程度カバーされています。モダンブラウザでも大体が90%を超えています。しかし、 ES Modules だけはまだどのブラウザも実装しきれていません(kangax compat table は ES Modules は省かれてます)。 そもそも ECMAScript 2015 自身で定義されたのは構文だけなので、構文はともかく、どうやってモジュールを取ってくるかという Loader の部分がまだ決まりきっていません。 https://w

    ES Modules と Node.js について - from scratch
  • left-padの文字列連結はクソではない - NullPointer's

    例のleftpad, GCを虐めるためとかコンパイラの最適化を確認するために用意する、「無駄に一時オブジェクト量産するクソコードの典型例」みたいな実装なので、こんな小さい関数のために、信頼できない人のコードを、実装を見るでも無く、依存性追加してたってことで、— INADA Naoki (@methane) March 24, 2016 ここから始まる一連の、モジュールの依存性に関する議論はなかなか興味深いが、自分的に気になったのは以下の一節 GCを虐めるためとかコンパイラの最適化を確認するために用意する、「無駄に一時オブジェクト量産するクソコードの典型例」みたいな実装 ソースを見てみようか。 left-pad/index.js at 0e04eb4da3a99003c01392a55fa2fdb99db17641 · azer/left-pad · GitHub なるほど一見するとクソコー

    left-padの文字列連結はクソではない - NullPointer's
  • npmからkikとその他諸々が消されたまとめ

    npmとは、node.jsにおけるパッケージシステムのことだ。npmを使えば、他人の書いたnode.jsベースのプログラムとライブラリの入手と利用がとても簡単になる。 そのnpm界隈が混乱している。発端は以下のURLだ。 I’ve Just Liberated My Modules — Medium Azer Koçuluはkikという名前のnpmパッケージを公開していた。このkikというソフトウェアの中身についてはここでは関係がない。 さて、それとは別に、kik.comというスマフォ用のチャットアプリを出しているKik Interactive社がいて、kikという名前のパッケージをnpmで出したいので、名前を明け渡すように要求した。 Azerはこの要求を拒否した。すると、Kik Interactive社はnpmの管理者に片っ端からメールを投げまくり、そのうちの一人が反応して、Azerの意

  • Node.jsの「構築事例」、そして「向いていること」と「向いてないこと」 - Qiita

    Node.jsはシングルスレッド、ノンブロッキングI/O、イベントループなどの特徴があり、「向いていること」と「向いていないこと」があると思います。 言語選定の際に使えるメモとして、Node.jsの構築事例も加えてまとめてみました。 Node.jsに「向いていること」 処理が短時間でイベント処理が重要なアプリ 例えば、チャットアプリなどの大量のアクセスのあるリアルタイムなネットワークプログラミングが得意 シングルCPUのサーバー シングルCPUの環境化でもその性能を十分使い切れるため、比較的性能の小さいサーバ上で大きなパフォーマンスを発揮できる Node.jsに「向いていないこと」 CPU負荷の高い処理 CPUリソースを大量に必要とするJavaScriptの処理を行うとイベントループが回らない状態になり、イベントハンドリングが行えない状態に陥る。このため、CPU処理が大量に必要とされるアプ

    Node.jsの「構築事例」、そして「向いていること」と「向いてないこと」 - Qiita
  • Mancy - GUIのNode実行環境

    MOONGIFTはオープンソース・ソフトウェアを紹介するブログです。2021年07月16日で更新停止しました JavaScriptでの開発が盛んになったのはFindBugやDevToolsに代表されるコンソールなどの実行環境が充実したことにあるのではないでしょうか。今や開発ツールがなければJavaScriptでの開発が成り立たないほどです。 もう一つ(サーバサイド)のJavaScript実行環境であるNodeの場合はどうでしょうか。node -i もありますが、関数などがFunctionになってしまって分かりづらいかと思います。そこで使ってみたいのがMancyです。 Mancyの使い方 MancyはNodeのRead-eval-print loop(対話型実行環境)になります。書いたコードをその場で評価してくれます。 実行結果をコンソールを使って出力できます。 エラーも確認できます。 オブ

    Mancy - GUIのNode実行環境
  • Babel.jsイントロダクション - axross blog

    2015-03-14 Babel.jsイントロダクション ES6 Babel クライアントサイドJS Node.js Browserify JavaScript mocha ここのところしばらく、プライベートでbabelを触っていて、次案件あたりから業務で使いたいなと思ったので、社内外への共有として書いておく。 Babel · The transpiler for writing next generation JavaScript Babelとは Babelは、ECMAScript6(以下、ES6)のコードをECMAScript5(以下、ES5) のコードに変換するトランスパイラ(コードを変換してコードを生成するもの)。 ReactやFlowにフレンドリーであり、ReactのJSXをプラグインなしでES5のコードに変換できる。 また、Babel自体はNode.jsだけでなく、Browse

    Babel.jsイントロダクション - axross blog
  • npmに上がっていないブラウザ向けに書かれたJavaScriptをnode.jsから雑に使うの術 - 時計を壊せ

    ブラウザ向けに書かれたJavaScriptだと、windowに対してexportしていて、nodeから使いにくくて困ることがある。 nodeでも動くようなpatchを書けばいいという話ではあるが、githubにコードが上がっていないとやりにくくてつらい。 そこで、適当なObjectをcontextにして、vmでぶん回すことで、雑に解決することができた。 以下はGeoHexというライブラリのJavaScriptの実装がwindow.GEOHEXにエクスポートする実装であったために困ったので雑に解決した例。 "use strict"; var http = require('http'); var co = require('co'); var get = function (url) { return new Promise(function (resolve, error) { http.

    npmに上がっていないブラウザ向けに書かれたJavaScriptをnode.jsから雑に使うの術 - 時計を壊せ