Corredor

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

npm

GitHub Sponsors と npm fund を設定してみた

GitHub 上でスポンサーを募れる GitHub Sponsors というサービスと、npm で資金提供を呼びかけられる npm fund コマンドがそれぞれ提供開始されたので、セットで作ってみた。 GitHub Sponsors の登録方法 GitHub リポジトリごとに Sponsor ボタンを付ける np…

Instagram に投稿された画像・動画をダウンロードする CLI ツール「igsv」を作った

Twitter から画像・動画をダウンロードする @neos21/twsv という npm パッケージを作ったが、それの Instagram 版を作った。その名も igsv。「InstaGram SaVer」の略のつもり。 先に作ったツールの紹介 以降ツールを作るまでの苦労話 以上 先に作ったツール…

Twitter に投稿された画像・動画をダウンロードする CLI ツール「twsv」を作った

Twitter に投稿された画像や動画をダウンロードする際、 画像 : Chrome ブラウザでツイートを開き、画像をアドレス欄までドラッグして開き、ダウンロード 動画 : Syncer - Twitter の動画を保存するための URL 変換器でダウンロード としていた。 コレをもっ…

ターミナルからツイートするだけの CLI ツール「Just Tweet」を作った

ターミナルからツイートする CLI ツール、Just Tweet というモノを作った。 GitHub - Neos21/just-tweet: ツイートするだけの CLI ツール。 @neos21/just-tweet - npm インストールは以下のように npm でグローバルインストール。 $ npm install -g @neos21/…

色々な設定ファイルにプロキシ設定が含まれていないか確認するスクリプト

自分は、社内ネットワーク内で仕事をする時と、インターネットに直接繋いで作業する時とで、設定ファイルを使い分けている。.bashrc や .gitconfig、.npmrc などのファイルだ。 社内ネットワークで仕事する場合は、これらのファイルに社内ネットワーク向けの…

Prettier を ESLint と併用して使ってみた

コードフォーマッタである Prettier を使ってみた。ESLint と併用するための環境も作った。 大まかには以下の文献を参考にした。 参考:Prettier 入門 ~ESLintとの違いを理解して併用する~ - Qiita package.json と .eslintrc.js の内容は次のとおり。 Pra…

Wercker を使ってみた感想

Oracle Container Pipelines として取り込まれた CI・CD ツールである Wercker を使ってみたので紹介。 wercker 参考:Oracle Blogs 日本語のまとめ: [Cloud] New in Developer Cloud - Fn Support and Wercker Integration Wercker ってどんなもの?僕が感…

LINE Messaging API と Oracle Digital Assistant を併用して LINE から呼び出せるチャットボットを構築する

以前、LINE Messaging API を用いて、オウム返しするだけのボットを作った。 neos21.hatenablog.com また、Oracle Digital Assistant というモノを使うと、ユーザの発言を解釈して複雑な会話フローを実現できることを学んだ。 neos21.hatenablog.com 今回は…

Express はレスポンスを返してからも処理が続行できる

Express において、res.json() とか res.send() とかを呼んだ後も処理が継続できることを知った。リクエストに対するレスポンスの用意ができたら迅速に res.send() を呼んでレスポンスしてしまい、残処理はそのあとゆっくりやれる、というワケだ。てっきり r…

Express のレスポンス関連メソッド「res.end()」「res.send()」「res.json()」の違い

Express でレスポンスを返す時、res.end()・res.send()・res.json() などのメソッドを使用するが、それぞれの違いは何か、res.end() は必ず呼ばなければならないのか、あたりを調べた。 Express の API リファレンスを呼んでみる まずは Express の API リフ…

JavaScript で YAML を扱うなら「js-yaml」が楽チン

Node.js で YAML ファイルを読み込んで扱いたくなったので、ググって1件目に出てきた js-yaml を使ってみた。 js-yaml - npm $ mkdir practice-yaml-in-js && cd $_ $ npm init -y $ npm install -S js-yaml $ touch index.js index.js const fs = require('…

2色のコントラスト比を導く Compare Colour Contrast Ratio を作ってみた

見やすい色の組み合わせかどうか。 WCAG2.0 (Web Content Accessibility Guidelines) という、ウェブアクセシビリティに関するガイドラインがある。 参考:Web Content Accessibility Guidelines - Wikipedia この中で、文字色と背景色とのコントラスト比を…

LINE Messaging API を使ってオウム返しする Node.js 製チャットボットを作ってみる

突然だが、LINE Messaging API というモノを使って、簡単なチャットボットを作ってみる。 完成すると、LINE アプリでチャットボット用アカウントを友達登録して、トーク画面から会話できるようになる。メッセージの処理はしないので、ただユーザの発言をオウ…

Express サーバでエラーハンドリングをミドルウェアに分ける

Express サーバを作っていて、例外のハンドリングを簡単に実装できる方法を知ったのでまとめてみる。 Express 関連用語をまとめる express.Router() ミドルウェア Expressにおけるミドルウェアとは next() ミドルウェアは記述された順に実行される エラーハ…

Node.js アプリでログをファイルに出力する「log4js」

Node.js 製のアプリでログをファイル出力するライブラリである、log4js を使ってみた。 log4js - npm log4js-node by log4js-node 以前、log4javascript というライブラリは使ったことがあって、コチラはファイル出力するアペンダが標準にはなかったので自作…

mocha で行うユニットテスト内でスパイ・モック化するなら「sinon」

以前、mocha という npm パッケージを使った単体テスト環境を構築したが、この mocha はテストランナーとしての側面が強く、特定のメソッドをモック化したりする機能は有していない。 neos21.hatenablog.com Jasmine のように、spyOn().and.callFake() や to…

今更だけど 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 │ ├─────────┼────┼─…

npm のグローバルインストールに失敗したら

macOS Mojave 環境にて。この前久々に npm パッケージをグローバルインストールしようとしたら、以下のようなエラーが出た。 $ npm install -g @neos21/neos21 npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules npm ERR! pat…

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

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

サイトに CSS・JS が効いていない時にミラーの CSS・JS ファイルを読み込んでフォールバックさせるスクリプトを作った

このブログ Corredor で、iPhone から閲覧している場合に時々発生していたのだが、ブログの CSS・JS ファイルが読み込めずにレイアウトが崩れていることがあった。 このブログの CSS と JS ファイルは、GitHub Pages でホスティングしているモノを「はてなブ…

指定ディレクトリ配下の 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…