タグ付けされた質問 「node.js」

Node.jsは、GoogleのV8 JavaScriptエンジンを使用するイベントベースの非同期I / Oフレームワークです。

8
マルチスレッドJavaScriptランタイム実装を作成することの欠点は何ですか?[閉まっている]
この1週間、マルチスレッドJavaScriptランタイムの実装に取り​​組んでいます。JavaScriptCoreとboostを使用して、C ++で作成した概念実証があります。 アーキテクチャは単純です。メインスクリプトの評価が完了すると、ランタイムは起動してスレッドプールに参加します。スレッドプールは、共有優先度キューからタスクを選択し始めます。2つのタスクが同時に変数にアクセスしようとすると、アトミックとマークされ、アクセスを争います。 問題は、この設計をJavaScriptプログラマーに見せると、非常に否定的なフィードバックが得られ、その理由がわからないことです。非公開でも、JavaScriptはシングルスレッドである必要があり、既存のライブラリを書き換える必要があり、作業を続けるとグレムリンがすべての生物を生成して食べると言う。 私はもともとネイティブのコルーチン実装(ブーストコンテキストを使用)も配置していましたが、それを捨てなければなりませんでした(JavaScriptCoreはスタックについてはしゃれています)。 どう思いますか?JavaScriptはシングルスレッドを対象としていますが、JavaScriptはそのままにしておくべきですか?誰もが同時JavaScriptランタイムのアイデアに反対しているのはなぜですか? 編集:プロジェクトは現在GitHubにあります。自分で試してみて、あなたの考えを教えてください。 以下は、競合なしですべてのCPUコアで並行して実行されるプロミスの図です。

3
Node.jsのユニークな点は何ですか?[閉まっている]
最近、Node.jsに対して多くの賞賛が寄せられています。私は、ネットワークアプリケーションにさらされている開発者ではありません。Nodes.jsの私の理解から、その強みは次のとおりです。複数の接続を処理するスレッドが1つしかないため、イベントベースのアーキテクチャを提供します。 ただし、たとえばJavaでは、NIO / AIO(私の知る限りの非ブロッキングAPI)を使用して1つのスレッドのみを作成し、そのスレッドを使用して複数の接続を処理し、データを実装するイベントベースのアーキテクチャを提供できます処理ロジック(コールバックなどを提供することでそれほど難しくないはずです)? JVMはV8よりもさらに成熟したVMであり(より高速に実行されると思います)、イベントベースの処理アーキテクチャは作成するのが難しくないように思えますが、Node.jsがそれほど注目されている理由はわかりません。重要なポイントを見逃しましたか?

3
Erlangの学習とnode.jsの学習[終了]
考えられるほぼすべてのカテゴリーで、Erlangがnode.jsのケツを蹴る方法について、たくさんのがらくたをオンラインで見ます。それで、アーランを学び、試してみたいと思いますが、ここに問題があります。node.jsを拾うよりも、Erlangを拾うのがずっと難しいことに気づきました。node.jsを使用すると、比較的複雑なプロジェクトを選択でき、1日で何かが機能しました。Erlangを使用すると、障壁にぶつかります。 だから..より多くの経験を持つ人にとって、アーランは学ぶのが複雑ですか、それとも何かが足りないのですか?Node.jsは完璧ではないかもしれませんが、私はそれで物事を成し遂げることができるようです。
41 erlang  node.js 

4
Javascriptを使用したデザインパターンの重要性、NodeJsなど
Javascriptは今後数年間でWebのユビキタスプログラミング言語であるように思われ、新しいフレームワークが5分ごとにポップアップし、イベント駆動型プログラミングがサーバー側とクライアント側の両方をリードしています。 Javascript開発者として、従来のデザインパターンを他の言語/環境よりも重要と考えていますか? Javascript開発者が定期的に使用している上位3つのデザインパターンに名前を付け、それらがJavascript開発にどのように役立ったかの例を示してください。

2
Node.jsはフレームワークですか?[閉まっている]
リクルーター、開発者などは、フレームワークとしてNode.jsを参照しています。私の意見では、これはNode.jsが実際に何であるかについて無知ではありません。 多くの場合、職務記述書では、Node.jsはAngularJS、Reactなどのライブラリとしてグループ化されています。一般的に、違いを知らない人(HR、採用担当者など)によって入力されているように見えます。 私の意見では、Node.jsはプラットフォーム、またはランタイム環境です。ファイルシステムのような他のさまざまなAPIのDOM API(ブラウザーのJavaScript)を切り替えます(ブラウザーではなくサーバーとして実行されるため)。 Node.jsがフレームワークであると人々が考えるのはなぜですか。私が間違っている?実際にはフレームワークですか?

2
フルスタックJavaScriptでフロントエンドとバックエンドを分離する方法は?
私がフロントエンドを持っていると仮定します。フロントエンドは、ほとんどが角ばった、うなり声、お辞儀を使って書かれた単一ページのアプリケーションです。そして、私がバックエンドを持っていると仮定します。ほとんどの場合、ORMの上に置かれたREST APIであり、データベースからオブジェクトを保存/取得し、うなり声、エクスプレス、シークライズなどを使用します。 角度のあるアプリケーションは、ユーザーに表示されるすべての視覚的な処理を行いますが、バックエンドによって提供されるサービスを介したGUIとして機能します。 これらを2つの異なるコードベースに分離し、独立した開発、バージョン管理、継続的統合、開発へのプッシュなどを可能にすることが望ましいでしょう。 私の質問は、これをきれいに行うための方法は何ですか?フルスタックJavaScriptの推奨ベストプラクティスはありますか? オプション#1はモノリス、つまり「それらを分離しない」ようです。利点は、ビルドチェーンがシンプルであり、すべてが1か所にあることですが、多くの欠点があるようです。個別にバージョン管理するのが難しく、前面が壊れていると、展開できない背面を意味します。 オプション#2は準モノリスのようです。フロントエンドビルドチェーンにより、多数のファイルがバックエンドに書き込まれます。distフロントエンド上のディレクトリをするとき、フロントエンドminifies、uglifiesなどので、基本的に、バックエンドには、いくつかのディレクトリを参照することになり、それがすべてを実行し、バックエンドに公開してしまいます。 オプション#3は完全に分離されているようです。フロントエンドとバックエンドはそれぞれ異なるポートで独自のサーバーを実行し、完全に独立したプロジェクトです。欠点は、互いのポートについて知るように設定する必要があるようです。バックエンドは、フロントエンドからのCORSを許可する必要があり、フロントエンドは、それらのすべてのエンドポイントが予想される場所を知る必要があります。 オプション#4は、docker-composeなどを使用して、すべてをまとめてリグすることです。 私は他のオプションがあると確信しています。推奨されるベストプラクティスは何ですか?

3
Redisでメッセージキューを実装する方法は?
キューイングにRedisを使用する理由 私は、Redisがキューイングシステムを実装するための良い候補になることができるという印象を受けています。これまで、MySQLデータベースをポーリングまたはRabbitMQで使用してきました。RabbitMQには多くの問題があります。クライアントライブラリは非常に貧弱でバグが多いため、修正に開発者の時間をかけすぎないように、サーバー管理コンソールにいくつかの問題があります。少なくとも、ミリ秒で把握したり、パフォーマンスを真剣に推進したりすることはないので、システムがキューをインテリジェントにサポートするアーキテクチャを備えている限り、おそらく良好な状態にあります。 さて、それが背景です。基本的に、非常に古典的でシンプルなキューモデルがあります。仕事を生成する複数のプロデューサーと、仕事を消費する複数のコンシューマーがあり、プロデューサーとコンシューマーの両方がインテリジェントにスケーリングできる必要があります。すべてのサブスクライバーに作業を消費さPUBSUBせたくないので、ナイーブが機能しないことがわかります。1人のサブスクライバーに作業を受け取りたいだけです。最初のパスでは、インテリジェントデザインのように見えます。BRPOPLPUSH BRPOPLPUSHを使用できますか? 基本的な設計でBRPOPLPUSHは、1つの作業キューと進行状況キューがあります。コンシューマーが作業を受け取ると、アイテムをアトミックに進行キューにプッシュし、作業を完了するとそれが完了LREMします。これにより、クライアントが死んだ場合の作業のブラックホール化が防止され、監視が非常に楽になります。たとえば、大量のタスクがあるかどうかを通知するだけでなく、消費者がタスクを実行するのに長時間かかる問題があるかどうかを確認できます。 それは保証します 仕事はちょうど1人の消費者に届けられる 作業は進行キューで終了するため、消費者がブラックホールに陥ることはありません 欠点 私が見つけた最高のデザインはPUBSUB、Redisのキューイングに関するほとんどのブログ投稿が焦点を当てているものであるように思われるため、実際には使用していません。だから、私は明白な何かを見逃しているように感じます。PUBSUBタスクを2回消費せずに使用する唯一の方法は、作業が到着したという通知をプッシュするだけで、消費者はそれをブロックしないようにできRPOPLPUSHます。 一度に複数のワークアイテムを要求することはできません。これはパフォーマンスの問題のようです。私たちの状況にとっては大きなものではありませんが、この操作は高スループットまたはこの状況のた​​めに設計されたものではないことを明確に示しています 要するに、私は愚かな何かを見逃していますか? node.jsタグも追加します。これは、私が主に扱っている言語だからです。Nodeは、シングルスレッドでノンブロッキングな性質を考えると、実装のいくつかの単純化を提供するかもしれませんが、さらに、node-redisライブラリとソリューションを使用しています。

7
非リアルタイムWebアプリのnode.jsを避ける正当な理由はありますか?
Node.jsがリアルタイムWebアプリにどれほど優れているか、ソケット、Comet、AJAXの重い通信などを必要とするものについて、多くの話を見てきました。イベント駆動、非同期、スレッド駆動のモデルは、オーバーヘッドの少ない同時実行にも適していることを知っています。 また、Node.jsのチュートリアルでは、より単純で「伝統的な」非リアルタイムアプリ(たとえば、アプリ開発を学ぶ人にとって標準的な「Hello World」と思われる標準的なブログの例)を見ました。また、node-staticを使用すると、静的アセットを提供できることも知っています。 私の質問は次のとおりです。クラシファイド、フォーラム、前述のブログの例、または社内ビジネスアプリケーション用に作成するCRUDアプリなど、従来のWebアプリでNode.jsを使用しない理由はありますか。ファンキーなリアルタイムのものに優れているからといって、より安定した使用を禁じているのでしょうか? 私が考えることができるのは、最初のうちは、成熟したライブラリの不足です(ただし、変化しています)。 (私が求めている理由は、ほとんどの言語の切り替えのインピーダンス不整合を乗り越えるために、私はNode.jsのためにPHPを捨てる検討しているということですが、また、私は検証コードやその他もろもろを再利用することができるように。私の超自我のために私を訓戒選びます仕事に最適なツールですが、包括的な兵器庫を得るために15の言語とそのすべてのユーザーランドライブラリを学ぶ時間はあまりありません。また、Node.jsがPHP /将来的には、大量のトラフィックについて考え始めなければならないApache。 [編集]これまでの回答に感謝します。答えを選択する前に、他の誰かが体重を測定するかどうかを見たいだけです。@Raynosからの回答は私が考えていることを確認し、コメンターからのリンクは思考のための良い食べ物を提供しましたが、「ノードXを問題に使用しないでください」など、ノード固有の回答があるかどうかを確認したいです'。(CPUの高いタスクに加えて、私はすでにそれを知っています:-)

4
どのJavascript関数がブロックと非ブロックを決定するのですか?
数年前からWebベースのJavascript(バニラJS、jQuery、Backboneなど)をやっていて、最近Node.jsでいくつかの仕事をしています。「ノンブロッキング」プログラミングのコツをつかむにはしばらく時間がかかりましたが、今ではIO操作などにコールバックを使用することに慣れています。 Javascriptは本質的にシングルスレッドであることを理解しています。Nodeの「イベントキュー」の概念を理解しています。私が理解できないのは、個々のjavascript操作が「ブロッキング」か「ノンブロッキング」かを決定するものです。後のコードで使用するために出力を同期的に生成するために依存できる操作、および最初の操作が完了した後に出力を処理できるようにコールバックを渡す必要がある操作を確認するにはどうすればよいですか?非同期/非ブロッキングのJavascript関数のリストと、同期/ブロッキングの関数のリストはありますか?Javascriptアプリが1つの巨大な競合状態になるのを妨げているのは何ですか? NodeでのIO操作やWebでのAJAX操作など、時間がかかる操作は非同期である必要があるため、コールバックを使用することを知っていますが、「長時間」と見なされるものを決定しているのは誰ですか?これらの操作には、通常の「イベントキュー」からそれらを削除する何らかのトリガーがありますか?そうでない場合、変数への値の割り当てや配列のループなどの単純な操作と、それらを同期方式で終了することに依存できると思われるものとは何が違うのでしょうか? おそらく、私はこれを正しく考えさえしていないでしょう。ありがとう!

3
node.jsの初心者、イベントよりもコールバックを使用することで得られる利点は何ですか?
私は初心者のJavaScripterであり、V8エンジンの内部で何が起こっているのかを実際に知りません。 そうは言っても、node.js環境への初期の取り組みを本当に楽しんでいますが、グローバルイベントを生成する手段として、常にイベントを使用しています。 Objective-CまたはPythonプログラムで言うようなパターン。 私はいつもこのようなことをしていることに気付きます: var events = require('events'); var eventCenter = new events.EventEmitter(); eventCenter.on('init', function() { var greeting = 'Hello World!'; console.log('We're in the init function!); eventCenter.emit('secondFunction', greeting); }); eventCenter.on('secondFunction', function(greeting) { console.log('We're in the second function!); console.log(greeting); eventCenter.emit('nextFunction'); }); eventCenter.on('nextFunction', function { /* do stuff */ }); eventCenter.emit('init'); したがって、実際には、「非同期」のnode.jsコードを、期待どおりの順序で処理するコードに構造化するだけです。代わりに、それが理にかなっている場合は、「逆コーディング」のようなものです。これをパフォーマンス重視または哲学重視のコールバック重視で行うことに違いはありますか?イベントの代わりにコールバックを使用して同じことを行う方が良いですか?

2
大規模なRuby on Railsアプリケーション(月間2,500万人のユーザー)がいるため、経営陣はNode.jsで書き直すことにしました。
次の場合に教えてください: Node.jsを使用するとサイトが高速になります! Node.jsはより少ないサーバーリソースを消費するため、コストを節約できます! Node.jsにより生産性が向上します! Node.jsは、クライアント側とサーバー側のJavaScriptコードを共有できることを意味します。 明確にするために、フロントエンドサーバーを書き換えています。これは、既存のRuby on RailsアプリケーションとAPIとして対話します。その間、Ruby on Railsアプリケーションをサービスにリファクタリングします。 既存のアーキテクチャの詳細: HTMLパーシャルキャッシュ用のMemcached セッション用のRedis、および構造化されたデータキャッシング MySQLシングルマスター、マルチスレーブ 多数の書き込みを受け入れる1つの大きなテーブルがあります(ポーリングを想像してください) それ以外の場合はほとんど読み取ります。 一部のメタデータ用のMongoDB Ruby on Rails 3.0 nginxとUnicorn

4
npmのオプションの依存関係?
これと似たような質問がありますが、まったく同じではありません。 私のアプリのユーザーは、使用したい方法に必要な依存関係でアプリをインストールしたいと思います。そのため、たとえば、MongoDBに永続化する場合はMongo関連のライブラリのみがインストールされますが、Redisに永続化する場合はRedis関連のライブラリのみがインストールされます。使用しないライブラリをダウンロードしてインストールさせたくありません。 を使用して開発目的でそれを行うことができることは知っていますがdevDependencies、これはそれよりもさらに進んでいます。上記の質問の答えが示すように、これはPython setuptools extras_requireとClojureのleiningenプロファイルにより密接に関連しています。npmでそのようなことはありますか?依存関係を指定するより汎用性の高い方法のプロファイルにdevDependenciesすべきだと本当に思いdevます。

3
Node.jsは実際にスケーラビリティを向上させますか?
私はC10Kの問題について読んでいますが、特に注目すべきは非同期サーバーI / Oを指す部分です。http://www.kegel.com/c10k.html#aio これは、スレッドがI / O割り込み(イベント)に依存しながら、スレッドがユーザーの要求を処理できるようにすることで、Node.jsがサーバー上で行うことをほぼ要約していると思います。フルCPUジョブ。スレッドは、他のこと(非ブロッキング)を利用して、ジョブが完了したとき(たとえば、ファイルが見つかった、またはビデオが圧縮されたとき)に通知を受けることができます。 これは、その後、スレッドがソケット、つまりサーバー上のユーザーにとってより「利用可能」であることを意味します。 それから私はこれを見つけました:http : //teddziuba.com/2011/10/straight-talk-on-event-loops.html ライターは、イベント駆動型フレームワーク(割り込みスレッド)がスレッドを解放するかもしれないが、実際にはCPUがしなければならない作業量を減らさないと主張しています。ここでの理由は、たとえば、ユーザーがアップロードしたビデオを圧縮するように要求した場合、CPUは実際にこのジョブを実行する必要があり、それを実行中にブロックすることです(簡単にするために、ここでは並列性を忘れます-もっとよく知って!)。 私は簡単なコーダーであり、サーバー管理者などではありません。知りたいのは、Node.jsが「クラウドコンピューティング」の神からの贈り物なのか、それとも熱気であり、実際にスケーラビリティを改善して企業の時間やお金を節約できないのか、ということです。 どうもありがとう。

3
Node.jsは他のサーバー側フレームワークとどう違うのですか?
Node.jsが非常にポピュラーになったことに気付き、小規模なプロジェクトを実行している人々のインスタンスを見てきました。 また、長所と短所のリストを見て、Node.jsで何ができるかを理解しましたが、PHP、Perl、Rubyなどの他のより成熟したサーバー側の技術との違いについてはまだ明確ではありません。レール。 特に、Node.jsと現在の選択肢との違いは何ですか?その理由は何ですか?

3
Javascript開発者向けの認定?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 私は、javascript開発の分野で、堅実でペースの速いエントリーを探しています。 次のトピックが思い浮かびます。 Javascriptの高度な概念、OOP jQuery、jQuery-UI、jQuery-Mobile Backbone.js node.js BDDおよび/またはTDD http://www.codelesson.comのコースは有望なようです。 Javascript開発者向けの証明書は何ですか? 他にどのようなベンダーをお勧めできますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.