はじめに こんにちは、テックリードのかどたみです。 弊社では以前の記事でも紹介したとおりマイクロサービス開発にNestJSを利用しています。今回はNestJSでマイクロサービス開発をする際のログの出力についてご紹介します。 この記事はエモーションテック Advent Calendar 2022の6日目の記事です。 背景 マイクロサービスのメリットの一つとして、サービスごとに開発するドメインの範囲を狭め、機能追加や改修の影響範囲を最小限にできることが挙げられます。 しかし、いざ運用しようとするとユーザーからのアクセス一つにおいて複数のサービスで処理が走ることから、どのサービスで障害になっているのか、どのユーザーがどこまでアクセスできているのかなどバグ発生時の原因や影響範囲の特定に時間がかかることもあります。 そこで、マイクロサービス間でログに出力する内容を揃えることで分析をしやすくなるように
この記事はミツエーリンクス Advent Calendar 2020 - Adventarの14日目の記事です。 少し前にNode.jsのv15がリリースされました。v15にはAbortControllerの実装が追加されています。 AbortControllerは簡単に言うとPromiseなどの非同期処理を中断させるために実装されたインターフェースです。Node.jsだけではなくWeb APIにも存在しており、この度Node.jsに実装されたAbortControllerはWeb APIをベースにしています(ただしExperimental扱いです)。 (12/15追記:12/9にリリースされたNode.js 15.4.0でExperimentalではなくなりました。) 今回はAbortControllerをどのように使うのかをご紹介したいとおもいます。 AbortControllerの使
In this blog post, we run shell commands as child processes in Node.js. We then use async language features to read the stdouts of those processes and write to their stdins. Running commands in child processes # Let’s start with running a shell command in a child process: const {onExit} = require('@rauschma/stringio'); const {spawn} = require('child_process'); async function main() { const filePa
「HackerNews翻訳してみた」が POSTD (ポスト・ディー) としてリニューアルしました! この記事はここでも公開されています。 Original article: Managing Node.js Callback Hell with Promises, Generators and Other Approaches by Marc Harter 下のようなコードが、親しみをこめて「コールバック地獄」とか「死のピラミッド」とか呼ばれているのはご存じですよね。 doAsync1(function () { doAsync2(function () { doAsync3(function () { doAsync4(function () { }) }) }) この状態がコールバック地獄かどうかは、意見の分かれるところでしょう。ネストがいくら深くても全く問題がないコードもあるからで
node.js を代表とする JavaScript を用いた非同期プログラミング環境においては、コーディングパターンのベストプラクティスが共有されておらず、結果として品質の低いコードが多くなるという問題があるように思います。そこで、特にエラー処理をどう書くべきか、既存のライブラリを使う方法を紹介してみることにしました。 いきなりですが、ファイルの文字数を返す関数を作ることを考えてみます。Java だと以下のような感じになるでしょうか。countChars メソッドに注目すると、エラーを例外として扱っていて、モジュラーかつ簡潔になっていることがわかります。 class FileCounter { static long countChars(String filename) throws IOException { FileInputStream is = new FileInputStre
[追記 5/29] synchronizeというかfiberには以下の問題点があるのでそちらを参照の上、このエントリをご覧ください → node-fiberでライフチェンジングとか煽ったことを若干後悔してる - taiyoh's memorandum [追記 終わり] node.jsをお使いのみなみなさま、コールバック地獄の中をいかがお過ごしでしょうか。 最近になって僕はvmモジュールとsynchronizeモジュールを使い出しまして、これがちょっと尋常じゃないくらい自分の実装方法に影響を与えております。 百聞は一見にしかずということで、実際どんな感じで使っているか、最近作ったユーティリティファイルの一部を載せます。 // util.js var vm = require('vm') , fs = require("fs") , path = require("path") , sync
Pseudo-Parallel, Passing-Procedure, Pretty-Promise. Asynchronous Collection & Procedure Control Flow View the Project on GitHub VoQn/pp.js Download ZIP File Download TAR Ball View On GitHub pp.js - pianissimo - pp.js is called pianissimo.js, which means Pseudo-Parallel, Passing-Procedure, or Pretty-Promise. pp.js is a javascript library for Asynchronous Collection & Procedure Control Flow. this li
Up: Programming notes Monday, 27 August 2012 I'm about to start a new Node.js project with a team and thought this might be a good opportunity to put together a few tips on working with Node. This is not a style guide in the usual sense; I'm assuming you already have your opinions on JavaScript indentation and all the other religious standpoints, so I'm going to focus on some Node specifics I find
id:kazuhooku さんの記事 node.js におけるエラー処理のコーディングパターン (もしくは非同期 JavaScript における例外処理。 ナイスです! なんと素晴らしいタイミングでのブログでしょうか! 「東京Node学園 5時限目」で id:koichik さんのプレゼンで node-v0.7.8 から isaacs 版 Domain が導入されるという発表がありましたが、予定通り昨日 Domain 機能付きの node-v0.7.8 がリリースされました。 しかもDomain のドキュメント付きです。 http://nodejs.org/docs/v0.7.8/api/domain.html ちょうど id:kazuhooku さんの記事の例は node.js の新機能 Domain を教科書通りに適応するとどうなるのか紹介するのにぴったりのお題なので Node.js
今後はメモも含めKazuho's Weblogに書いて行こうと思います。 以前以下のようにツイートした話だけど、OSSの開発モデルを社内開発にそのまま持ち込むのは危険。 チーム開発の場合、簡単にコメント返せないようなPR送られた時点で負けだと思ってる。無駄なコードが生産されないよう事前に設計を詰める作業をすべき / “雑なレビュー - ✘╹◡╹✘” http://htn.to/by5or1 https://twitter.com/kazuho/status/431602421068877824 今日一般的に想定される「OSSの開発モデル」はEric S. Raymondの有名なエッセーである「伽藍とバザール」によって解説されたところの「バザール」である。 「バザール」モデルにおいては、多くの改善提案の中から最善と考えられる実装が取り入れられ、コミュニティで共有されるようになる。同エッセーか
2012年3月20日追記 node-seqを編集したので、記事を書きました。 catchを使いやすくしています。 node-seq編集 - wktkWebDiary ユーザのFacebook友達情報を引き継いで複数人とチャットが出来るアプリケショーンをnode.jsの勉強がてら作ってみました。 https://github.com/YaaaaaSuuuuu/FaceRoom ログインのたびにユーザのフレンドリストを取得しているので、ログインの動作がかなり重くなっています。ホントならフレンドリストはcronで回してログイン時はユーザの認証だけにしたかった。。。 インストールの仕方とかはREADME.mdに書いたので、そこらへんを読めば多分動きます。 後ろでMongoDBとRedisが動いていないといけないのですが、どちらも簡単にインストールできるので、つまずくことはないと思います。 Face
しました. https://github.com/koichik/node-flowless npm install flowlessでインストールすることができます. node-flowless は Node.js 用の小さな (less) フロー制御 (control-flow) モジュールです.名前は flawless に引っかけたのであって typo じゃないんだからねっ! id:taedium さんが自作のフロー制御モジュール nue に関するエントリを書いているのに刺激されて,自分もブログネタとして書いてみました.nue はたぶん,Step にインスパイアされたのだと思われますが,flowless は Slide に強く強くインスパイアされてます.Slide のコンセプトは以下のスライド (これが名前の由来w) が分かりやすいです. http://github.com/isaa
これに対して、CommonJSグループはPromiseという形でこれに答えている。これは任意の時点で、完了しているかもしれないし完了していないかもしれない、非同期に実行されるアクションの結果を表現したオブジェクトとのインターフェイスを提供する。この方法では、さまざまなコンポーネントが非同期アクションのためのpromiseを返すことができ、コンシューマは予測可能な形でそのpromiseを利用できる。また、Promiseは非同期性を支援するために構文上便利な言語レベル拡張のために利用される基本エンティティを提供することもできる。 Stratified JavaScriptはこれとは別のアプローチをとっており、JavaScript言語のスーパーセットを提供することで、この問題を解決している。しかし、使う言語を切り替えられないのなら、とるべき道はシーケンシャルなコードをエミュレート可能な、柔軟なA
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く