at backyard

Color my life with the chaos of trouble.

Node.js

ChatGPTでHello Worldするまで(Node.js)

ChatGPTのAPIでHello worldするまでの備忘録。 といっても思ったよりも簡単だった。 なお、Open AIのアカウントはChatGPTを利用するためにすでに作成済みだったので、アカウント作成はすでにしてある前提。 またChatGPT APIの詳細な内容なども省略する。 Cha…

M1以降のmacでnode-sassをインストールしようとした際にエラーになったので対応したメモ

メインの作業マシンはすでにM1以降のMacBook Airに移行しているが、唯一Gatsby関連のプロジェクトではまだIntelチップのMacBook Proでないと yarn install が成功しない状態となっていた。 今回は重い腰を持ち上げて、M1以降のmacでもGatsby関連のプロジェク…

フォロー返ししてくれないアカウントをJavaScript(Node.js)を用いて特定する(Twitter API v2)

タイトルはネタであり、このあとに書く文章も適当な文章です。 まえがき 昔々、フォロー返しという文化がありました。Twitterで誰かをフォローするとお返しにフォロー返しをするというやつです。 その文化を利用してたくさんのアカウントがフォロワー数を増…

Twitter API v2を用いてツイートするためのCLIプログラムをNode.jsで書いた

下記の記事でTwitter API v2を用いてツイートをするプログラムを書いてみた。 shinshin86.hateblo.jp 上の記事の中では既存のサンプルを参考にしつつ、結構色々と試行錯誤しながらサンプルコードを書いていたので、もう少し頭の中を整理したいと思い、CLI上…

Netlify Functionsでexpressを用いたAPIを作成するまでの備忘録

これはNetlify Functionsでexpressを用いたAPIを作成するまでの備忘録となる。 今回始めてNetlify functionsを触ってみたが依存関係のパッケージ等をいくつかインストールしているので、そちらの簡単な説明とともに、実際にNetlifyにデプロイするまでの過程…

Pugの中にMarkdownを埋め込んで表示させる方法

pugを使ってレンダリングしている、とあるサイトがあるのだが、ここにmarkdownを使ってコンテンツを追加したくなった。 ただし土台はpugで作ってしまっているし、私自身もこの作業にそこまで時間は割けないので、今の状態からうまーくmarkdownをpugの中に埋…

子供のイヤイヤ期とプロセスマネージャー(noreman)

子供のイヤイヤ期が想像以上に大変! 少し前から子供がイヤイヤ期に突入しています。 何もかもが嫌になってしまったようで、思い通りにならないことがあると遊んでいたものを突如破壊しだすという、なかなかなサイコパスっぷりを日々披露しています。 私もす…

Node.jsのコアモジュール名についている【node:】プレフィックスについて

ちょっと気になったので備忘録として書き残しておく。 Node.jsにある、node:というprefix Node.jsでライブラリをimport/requireする際に node:というprefixをつけることが可能になっている。 これは Version 14.18.0 からついているもので、以下のように2種…

Node.jsでローカルのJSONファイルをrequireを使って読み込む際の気をつけるポイント

下書きに放り込んだまま忘れていたので、ポスト。 Node.jsのrequireを用いてJSONファイルを読むときに気をつけること Node.jsのrequireを用いてJSONファイルをそのまま読み込むことができる。 const json = require('./sample.json'); consle.log(json); こ…

WordPressの公開されている全記事の文字数を取得するnpmライブラリ

WordPressの記事の文字数を一覧で取得するためのライブラリをバージョンアップした WP REST APIを用いてWordPressの公開されている全記事の文字数をゲットするnpmライブラリ。今まで自分用にずっと使っていたやつですが、今回コードを整えてバージョンアップ…

PM2でError: Cannot find moduleのエラーで落ちるときの対応手順

前提 サーバのプロセス管理に PM2 を使うことにした。 github.com 依然触ったことのあるツールだったが、もう何年も触っていなかったので素振りとしてプロジェクトにインストールして動かしていた (yarn add pm2 して動かしていたということ)。 素振り期間も…

Node.jsで自分のPCのローカルIPアドレス(IPv4)を取得する

自分用メモです。 Node.jsを用いて自分のPCのローカルのIPアドレス(IPV4)を取得したくなったので調べてみた。 結論、以下のスクリプトを作成し、実行すればローカルIPアドレス(IPv4)が取得できる。 const os = require('os'); (async () => { const netInfos…

ファイル転送CLIツールである ft のNode.js実装 ft-js を書いた

Node.jsで実装したft-js 以前Goで書かれたファイル転送のためのCLIツール、ftについて書いた。 shinshin86.hateblo.jp 相変わらず今も利用させていただいているのだが、自分自身でも勉強のためにftのNode.js実装を作成してみようと思い、最近作ってみたのが…

Node.jsのlogger、pino(pino-http)を試してみる。

Node.js(Express)でサーバアプリケーションを書くことになった。 せっかくなので今まで利用したことのないloggerを利用してみたくなり、pinoを試してみることにした。 getpino.io expressでpinoを利用する場合は pino-http を利用するらしい。 github.com pi…

gRPCでReceived message larger than maxというエラーメッセージにぶつかった際の対処法

gRPCで処理を書いていて下記のようなエラーメッセージが表示された。 Received message larger than max (<やり取りしようとしたファイルのサイズ> vs. 4194304 これはエラーメッセージの通りで、gRPCではデフォルトでやり取りできるファイルサイズの上限が…

Node.jsでファイルを再帰的に探索してから最後に指定の処理を実行するサンプル

Node.jsでファイルを再帰的に探索する際、投げっぱなしの処理はすぐに書けたが、投げっぱなしではなくすべてのファイルの探索を終了したあとで特定の処理を行いたいとなったときにどうすれば良いのか調べてみたので、そちらの内容をメモする。 色々と考えて…

Node.js + Protocol Bufferで時刻を扱う場合に利用するgoogle.protobuf.Timestampについて

自分向けの割合がだいぶ高い備忘録。 gRPCを扱う際に時刻を利用する場合、protocol bufferでは時刻を表す型として google.protobuf.Timestamp が利用できる。 これが個人的にはちょっと癖のある感じで、今のところは使いづらい。 ひとまず概要についてはGitH…

Node.jsでgRPCに入門する

実は何度目かの入門。 普段から使わないとすぐ忘れてしまうのでHello worldなサンプルを動かすまでの過程をメモで残すことにした。 なるべくコードはシンプルになるように意識している。 目次 書いていたら長くなってしまったので目次つけます 目次 自身の環…

todoistのAPIを用いて日付を指定してタスクを追加するサンプル

todoistのAPIを用いることでプログラムを通じて操作をすることが可能。 ※開発者向けドキュメントはこちら developer.todoist.com 今回はこちらのAPIを用いて日付を指定してタスクを追加するサンプロをこちらに書き残しておく なおAPIを操作するにはトークン…

colors.jsの今回の問題で我々が対応すべきことについての個人的なメモ(実務的な部分のみ)

colors というnpmパッケージの最新versionについて意図的に悪意のあるコードが実行されるようになっている。 こちらの問題のあるversionなどの具体的な内容についてはazuさんが分かりやすくまとめてくれているので、こちらを参照してみるのが良い。 zenn.dev…

Denoでfetchを用いてEUC-JPのサイトをスクレイピングするときのサンプル

Denoを使ってスクレイピングする処理を書いていた際に、データ取得元のサイトがEUC-JPだったため文字化けを起こしていました。 Denoを使っている場合、こういうケースはどうすれば良いのか調べたので備忘録として残しておくことにします。 (というか、Deno特…

Node.jsの標準入力で1文字ずつの入力に対して処理を発行したいとき

Node.jsの標準入力で1文字ずつの入力に対して処理を発行したいケースがある場合のメモ。 stdin.setRawMode(true) にすることでキー入力に対してイベントを発行できるようになる。 (これをつけない場合、Enterキーが押された場合のみ on('data', () => ... …

小さなテストライブラリをNode.jsで作ってみる(テストライブラリの自作)

以前から気になっていたことの一つに、mochaやjestなどのテストライブラリはどういう動きをしているのだろうか?というのがあった。 describe や it や expect などなど、独自の関数をテストコード内に書いてテストを実行していくが、別にこれらのコードは直…

Top level awaitについて整理した

トップレベルawait(Top level await)について改めて自分の中で整理することにした。 これはその際の備忘録的なものとなる。 目次 目次 Top level awaitとは? Top level awaitをブラウザで試すシンプルな方法 実際に読み込まれたJSファイル上でTop level awa…

Expressのappモジュールを元にして簡単にSitemapを生成するためのnpmパッケージ【easy-express-sitemap-generator】を作成した

作ってみた報告です(まだAlpha版ですが)。 Expressのappモジュールを元にして簡単にSitemapを生成するためのnpmパッケージを作りました。 名前はeasy-express-sitemap-generatorといいます。 github.com インストールする際は npm install easy-express-site…

音声認識した声を、ゆっくりの声に吹き替えるための Mac 用のソフトウェアを作った

音声認識した声を、ゆっくりの声に吹き替えるツール 音声認識した声を、ゆっくりの声に吹き替える yukkuri-hukikae-on-mac というツールを作りました。 github.com 詳細はこちらにも書いているので、ぜひ読んでみてもらえたらと思います。 free-sound.shinsh…

【arm64対応のNode.js】M1 MacBook AirにNode.jsのLTS(v14)をインストールする

ようやくM1のMacBook Airでもプログラミング環境を整えることにしました。 Node.js環境が必要なので、下記のようにインストールを行いました。 なお、Node.jsのLTSを入れておきたかったので、v14をインストールしました。 少し前の記事だとまだv14には対応し…

ランダムな果物の名前を生成するだけのnpm package、random-fruits-name.js

以前、物凄くシンプルなnpm packageを作っていた。 random-fruits-name.js という名前のpackageである。 GitHubはこちら。 github.com READMEにも書いているが、ReactでもNode.js環境下でも動くものになっている。 Reactでのコードサンプルはこちら。 import…

JavaScriptでJSON配列の特定のkeyにおける、重複数をカウントする使い捨てスクリプトメモ

開発をしていて必要になったので、書いた。 1回使えば役目を終えるコードだったため、使い捨てスクリプト的な形で書いている。 今後もまたどこかで使用するシーンがでてくると思ったので、こちらに書き残しておく。 なお、このスクリプトはこちらのQiitaで…

今月GitHubに作成したpublicリポジトリを振り返る(2020年8月)

一月の成果として振り返ることで来月も頑張れる気がしたので、振り返ります。 確認については下記のシェルコマンドを叩きました。 curl https://api.github.com/users/shinshin86/repos?sort=created | jq -r '.[] | { full_name: .full_name, created_at: .…