Nodeの世界からのニュース:Node 0.11.14、svgexport、node-webkitgtk、Nightmare、Prototypes、node-libpqおよびnode-pg-native

ノード11.11.14


自由
ノード0.11.14は、 uvhttp_parsernpmopenssl 、およびv8更新を伝達する光を見ました。

この更新には、ほとんどすべてのモジュールの修正が含まれているようです: clusterはバージョン0.10にロールバックされ( setupMaster動作)、 console.dirはオプションを受け入れ、イベントは続行できる他のイベント(リークしているイベント)を出力/返すことができます つまり、アップグレードする前に知っておく必要がある多くの変更があります。

11.11.14に含まれているuvバージョンはrc1です。 さらに、最新のコミットを確認するためにuvリポジトリにアクセスしたときに、unicornorex(ユニコーン恐竜)のクールなロゴに気付きました。

svgexport


Ali Shakibaによるsvgexport(GitHub: shakiba / svgexport 、npm: svgexport )は、SVGファイルをPNG、JPEG、およびPDFに変換するためのコマンドラインユーティリティです。

このユーティリティはPhantomJS基づいており、作成者はこれを使用してiOSおよびAndroidプロジェクトのアイコンを自動的に変換しました。 これは、非Webネイティブアセンブリチェーンの一部としてNode / Gulp / Gruntをクールに使用するのと似ていますが、以前は疑っていませんでした。

node-webkitgtk


node-webkitgtk(GitHub: kapouer / node-webkitgtk 、License: MIT 、npm: webkitgtk )JérémyLalによるNodeのwebkitgtkバインディングのコレクションです。 製品のプログラミングインターフェースはチェーンで呼び出すことができるため、次のようなことができます。

 WebKit().load('http://github.com').png('github.png').pdf('github.pdf') 

この製品は問題なく使用するために作成されたため、Webサイトのサムネイルの生成や統合テストなどに役立ちますが、私は使用しようとしませんでした。

悪夢


画像

テストの中で最も脆弱で混乱を招く部分は、完全なスタック統合テストです。 私はPhantomJSまたはSeleniumに基づいたさまざまなアプローチを使用しPhantomJSが、それらはすべて困難を引き起こしていました。

一般的な問題の1つは、対話インターフェイス(API)にあります-特にNodeアプリケーションの標準開発に慣れている場合、 PhantomJS自体には奇妙なAPIがあります。 そのため、 PhantomJSとやり取りするためのプログラミングインターフェイスを簡素化することを目的としたNightmare (GitHub: segmentio / nightmare 、ライセンス: MIT 、npm: nightmare )について聞いてうれしく思いました。

Nightmareを実際に試してみたい場合は、注意してくださいPhantomJSをシステムにインストールする必要があります。 これは、ポピーでHomebrewを使用して実行できます。 ここ(メインプロジェクトサイト)では 、他のプラットフォーム用のパッケージを見つけることができます。

Nightmareは、ターゲットページのDOMでJavaScriptを実行できるチェーン可能なプログラミングインターフェイス(API)があります。 たとえば、 jQueryでロードされたページがある場合、コールバック中にevaluate関数の$にアクセスできます。

ここで、サーバーを起動するWebアプリケーション( app.js )をダウンロードし、入力フォームに記入してサーバーに送信しました。 evaluate関数のコードはページで実行されるため、 jQueryを使用してDOMを操作できます。

 var server = require('./app'); var Nightmare = require('nightmare'); new Nightmare() .goto('http://localhost:3000') .type('input[name="email"]', 'alex@example.com') .type('input[name="password"]', 'password') .click('.sign-in') .evaluate(function() { return $('.sign-out').is(':visible'); }, function(visible) { assert(visible, '.sign-out should be visible'); }) .run(function() { server.close(); }); 

当然、この製品はPhantomJSを使用する一般的なタスクに使用できますが、クライアント側で複雑なコードをテストするためにNightmareを使用するのは非常にクールだと思われます。

プロトタイプ


アレックスフェルナンデスは、注目のプロトタイプを紹介しました(GitHub: alexfernandez / prototypes 、ライセンス: MIT 、npm: prototypes )。 このモジュールはプロトタイプオブジェクトを変更するため、慎重に使用しますが、いくつかの便利なメソッドを見つけることもできます。

以下に使用例を示します。

 'pepitus'.startsWith('pep'); 'hi.there'.substringFrom('.'); // 'there' { a: 1, b: 2 }.forEach(function(value, key) { console.log(key, value); }); 

node-libpqおよびnode-pg-native


node-libpq(GitHub: brianc / node-libpq 、ライセンス: MIT 、npm: libpq )Brian M. CarlsonのPostgreSQL用クライアントCライブラリのネイティブlibpqバインディングのコレクションです。

このモジュールのタスクは、 libpq提供するCプログラミングインターフェイスを可能な限り近くに反映し、絶対に最小限の抽象化レベルを提供することです。 この製品は、非常に低レベルであり、node.jsを除き、Cから直接取得できるlibpqへの同じアクセスをユーザーに提供することを目的としています。 すべての費用を支払う必要があるため、「ハードウェアに近接」するための費用は、JavaScriptのスタイルでCに似たプログラミングインターフェイスを使用する必要があることです。

Brianは人気のあるPostgreSQLライブラリpgの著者であり、最近node-pg-nativeもリリースしnode-libpq 。これはnode-libpqを使用した高性能PostgreSQLモジュールです。

Sean Levyがnode-pg-nativeを紹介してくれたのは、同期ソフトウェアインターフェイスに夢中だからです。

 var rows = client.querySync('SELECT NOW() AS the_date') console.log(rows[0].the_date) //Tue Sep 16 2014 23:42:39 GMT-0400 (EDT) 

本当に簡単です!

翻訳者から


Alex Young Jungによる 2つの記事tytstytsの 翻訳があります

しばらくの間、私はオープンソースソフトウェア開発の分野に入ることを決めました。だから誰かがレビューの翻訳のバトンをアレックスから受けたいと思うなら、私とおそらくコミュニティ全体はこれらの翻訳を喜んで見るでしょう。

ご清聴ありがとうございました。

Source: https://habr.com/ru/post/J239927/


All Articles