Corredor

ウェブ、プログラミングの勉強メモ。

Node.js

Promise と async・await でリトライ処理を実装する

通信処理なんかが Promise で実装されている時に、自前でリトライ処理をやらないといけなくなった。 巷にはどんなやり方があるのか、Promise のまま扱う場合と、async・await で扱う場合とを調べてみた。 実行環境は、特にトランスパイルなど行わず、素の No…

JavaScript で文字列のバイト数を求める (POST・PUT リクエストやレスポンスの文字列が途中で切れる問題)

Node.js の組み込みモジュールである http モジュールを使用して、POST メソッドや PUT メソッドでデータを送信する処理があったのだけど、どうも送信データの末尾20バイトぐらいが欠損してしまっていた。 一連のデータ送信処理は海外のサイトからいただいて…

今更だけど ESLint を始めてみたら簡単に始められた

コレまで、誰かが作った js-beautify の設定ファイルを引き継いで開発したり、Angular CLI で生成される TSLint 設定ファイルを手直ししたりしたくらいだったので、今回は ESLint をゼロから始めてみることにした。 ESLint - Pluggable JavaScript linter TS…

node-schedule を使って Node.js で定期処理を行う

node-schedule という npm パッケージを使うと、Node.js で書いた一連の処理を定期実行できる。 GitHub - node-schedule/node-schedule: A cron-like and not-cron-like job scheduler for Node. まずはインストールしてみよう。 # 作業ディレクトリを作って…

Twitter Developer Platform に登録して Twitter API を使ってみた

Node.js スクリプトを書いて、Twitter API を叩いて、自分のツイートを収集・分析してみようと思った。 Twitter API は、Twitter Developer Platform という開発者用のプログラムに登録しないと使えないようで、この登録には審査が必要だ。少々手間だが、時…

Express で構築した WebAPI サーバをユニットテストする (コードカバレッジも見る)

Express で構築した WebAPI サーバをユニットテストしたく、やり方を調べた。 今回の要件 テストランナーは Mocha を使う Express サーバの制御には supertest を使う HTML 形式でレポートを出力するために nyc を使う 任意 : Jasmine 風にテストを書けるよ…

コマンドラインで動作する簡易パスワードマネージャ「Neo's Password Manager」を作った

Node.js でコマンドラインツールを作る勉強として、簡易的なパスワードマネージャを作ってみた。その名も「Neo's Password Manager」。パッケージ名は @neos21/npm。Neo's Password Manager の頭文字を取って NPM と称しているが、コマンド名は np とした。 …

素振り環境として package.json の用意と Git 管理を一気に始めるシェルスクリプト

普段、npm パッケージを使った素振り環境を作るために、 mkdir して cd して、 npm init -y して package.json を調整して、 git init して .gitignore を作って、 git commit --allow-empty で初回コミットを打つ、 みたいなことをやっているのだが、コレを…

Node.js で selenium-webdriver と chromedriver を使って Chrome ブラウザを自動操作してみる

Angular に組み込まれている、Protractor という E2E テストツールを通じて、Selenium Webdriver を少し触ってきていた。今回はテストツールとしてではなく、ウェブスクレイピングを行うための手段として、Selenium Webdriver と、Chrome を操作するための C…

Columnify を使って Node.js スクリプトのコンソール出力をテーブルっぽく整形する

Node.js スクリプトでコンソール出力を整形する際、最も手軽なのは console.table() だろう。 $ node -e "console.table([ { id: 1, name: 'testA' }, { id: 2, name: 'testB' } ]);" ┌─────────┬────┬─────────┐ │ (index) │ id │ name │ ├─────────┼────┼─…

Node.js スクリプトをコマンドのように使えるようにする方法

2019年、あけましておめでとうございます。今年も宜しくお願い致します。 今日は、Node.js で書いたちょっとしたスクリプトを、コマンドとして使えるようにする手順をまとめる。大きく2種類のやり方があるのでそれぞれ紹介する。 試した環境は macOS Mojave…

指定ディレクトリ配下の Markdown ファイルに含まれる NFD・NFC 文字を一括相互変換する

Windows ユーザと Mac ユーザが入り混じって、Markdown ファイルを書いていた時に起こった、俗に NFD 問題と言われるアレ。 Mac の Finder で表示されるディレクトリ名やファイル名は、「NFD」という形式で Unicode 正規化されている。平たくいうと、「ガ」…

Heroku Scheduler を使って定期的に Node.js スクリプトにバッチ処理を行わせてみる:Heroku 無料枠の話と Dyno の概念も整理

Node.js 製の Heroku アプリを作った。Express + Angular な構成で動作しているのだが、Heroku Postgres に溜め込んでいるデータを定期的に削除したくて、バッチ処理を組み込みたくなった。 調べてみると、Heroku には Heroku Scheduler というアドオンがあ…

Cheerio で Web ページをスクレイピングする

Node.js スクリプトから Web ページのスクレイピングができないか調べてみたところ、Cheerio という npm パッケージを使うのが簡単そうだったのでやってみた。 cheerio - npm モジュールのインストール Web ページを取得する モジュールのインストール Cheer…

rss-parser を使って Node.js で RSS を JSON に変換する

Node.js で RSS を取得して扱おうと思い調べたところ、rss-parser というライブラリが使いやすかったので紹介。 rss-parser - npm # インストールはいつもどおり。 $ npm install --save rss-parser 以下のようなサンプルスクリプトを書いてみる。 const Rss…

Angular CLI で作ったアプリを Heroku にデプロイして動くようにした

Angular CLI で生成したアプリを Heroku にデプロイして動作するようにするには、いくつか設定変更が必要だったので紹介。 環境情報 Angular プロジェクトを作る package.json の devDependencies を dependencies に移動する package.json に engines を記…

Heroku + Node.js アプリの環境変数の管理に heroku-config と dotenv を使う

Heroku 上に Node.js 製のアプリを載せている時、ローカルと Heroku 上とで、どのように環境変数を管理すると良いか調べた。 Heroku の環境変数管理は heroku-config プラグインを使う Node.js コード内で .env ファイルの環境変数を参照するには dotenv パ…

「pg」パッケージを使ってローカルの PostgreSQL や Heroku Postgres に接続する

Heroku Postgres をいじり始め、ローカルにも PostgreSQL 環境を構築したので、Node.js スクリプトから PostgreSQL DB に接続してみようと思う。 今回は、Heroku の公式リファレンスにも紹介されていた pg という npm パッケージを使ってみる。 素振り環境の…

Heroku に登録して Express サーバをデプロイして動かしてみる

Heroku (ヘロク) という PaaS (Platform as a Service) がある。Debian・Ubuntu 系の Linux 仮想環境に、Ruby on Rails や Node.js 製のアプリをデプロイして公開できるサービスだ。DB に PostgreSQL などが使える。無料枠もあり、開発者がお試しで使うには…

はてなブックマークにノイズが多いのでオレオレはてなブックマーク「Neo's Hatebu」を作った

二度と視界に入れたくない記事。 僕は iPhone の「はてなブックマーク」アプリを見るのが日課なのだが、最近どうにもこうにも、見たくない話題に関する記事がホットエントリを占めるようになっていて、気分が乗らない。BTS とかいう知らない連中がどうしたと…

遅ればせながら Parcel を使ってみた

Webpack のような設定ファイルを一切置かず、ES2015・SCSS などをトランスパイルできる Parcel というツールを使ってみた。 Parcel GitHub - parcel-bundler/parcel: Blazing fast, zero configuration web application bundler Node.js v10.7.0・npm v6.1.…

Bitbucket API を使って複数のリポジトリからファイルをダウンロードしてきて比較してみる

Bitbucket という、GitHub ライクでプライベートリポジトリが持てるホスティングサービスを使っている。 この Bitbucket にも API が用意されていて、今回やりたかったことに使えそうだったので、試しにやってみた。 Bitbucket API リポジトリからファイルを…

【Angular Utilities】カラーコード・RGB 値を相互変換する Colour Converter を作った

Angular Utilities に新たなツールを追加したので紹介。その名も Colour Converter。 https://neos21.github.io/angular-utilities/colour-converter/colour-converter 左の「Colour Code」欄に #f00 とか #0070ff とか入れると、右側の「RGB」欄に RGB 値が…

WebAPI サーバと通信テストをするための Node.js スクリプトを作ってみる

Express で WebAPI サーバを作って、実際にデータをやり取りできるかテストするために、Node.js スクリプトを作ってみた。 今回の Node.js スクリプトで使用するのは、Node.js 組み込みの http モジュールのみ。依存パッケージがないのでシンプルかと。 ベー…

Sequelize を使って Express サーバから MySQL DB を操作してみる

Express サーバから MySQL DB とのやり取りを行おうと思い、Node.js で使える良い O/R マッパーがないか調べてみたところ、Sequelize というモノがよく使われているようだったので試してみた。 Manual | Sequelize | The node.js ORM for PostgreSQL, MySQL,…

Redmine を API 経由で操作する node-redmine

普段 Redmine を利用しているが、似たようなチケットをまとめて一括作成したり、チケット情報を抽出・整形したりしたい時に、GUI では限界があったので、何か良いやり方がないか調べてみた。 すると、Redmine も API が用意されており、JSON をぶん投げれば …

Node.js スクリプトからの HTTP 通信時にプロキシを通すには request が楽チン

社内開発のため、プロキシ制限がある中で Node.js スクリプトを書いていた。Node.js スクリプトから外部サーバに HTTP 通信して GET とかしたいのだが、プロキシの通し方が分からなかった。調べてみても、Node.js サーバを構築した時の設定の話ばかりで、ち…

MacOS における Node.js のバージョン管理ツールの比較

MacOS 環境で、複数の Node.js のバージョンを管理するツールを比較してみた。僕は nodebrew をずっと使っているが、今回調べてみたら ndenv も導入が簡単で、依存するモノも少なく、アリかも…?とか思った。 nodebrew GitHub - hokaccha/nodebrew: Node.js …

MySQL DB を Node.js から操作してみる

MySQL DB を Node.js から操作する、mysql というそのものズバリな npm パッケージがあったので試してみた。ついでに、コレを Promise 化した promise-mysql もご紹介。 GitHub - mysqljs/mysql: A pure node.js JavaScript Client implementing the MySql p…

JavaScript のモジュール管理の仕組みをおさらいする:TypeScript をトランスパイルして HTML 上で利用するための前段

tsc を利用して TypeScript をトランスパイルする素振り環境を作ってみた。最初はコンソール上でコンパイルした JS ファイルを $ node example.js のように動かして満足していたのだが、コンパイルした JS ファイルを HTML で読み込んで動かそうとしたら、im…