- 0.0.1. LINEボットでGoogle Alertを通知
- 0.0.2. 【2021年】React / TypeScript使用のためのDocker + Vagrant環境を構築する
- 0.0.3. [Angular & Node.js] Udemyで勉強しようWEBアプリケーション開発!
- 0.0.4. NodejsでWebアプリケーション作成 with Docker
- 0.0.5. expressをESモジュールに変更する手順(babel利用)
- 0.0.6. Node.jsを勉強する⑦ – npmモジュールyargsを使った引数のオプションの処理
- 0.0.7. メンバーをBANする方法 Discord.js(GBAN前編)
- 0.0.8. (小ネタ)TypeScriptで型定義ファイルが無いモジュールの読み込み方法
- 0.0.9. npmに自作モジュールを公開する方法
- 0.0.10. NimのコードをNode.js用のJavaScriptコードにトランスコンパイルする
- 0.0.11. herokuデプロイ後sequelizeでPostgreSQLに接続できないときの解決法
- 0.0.12. 【Node.js】現在日時を取得する方法4選
- 0.0.13. discord.jsでURLの安全性チェックコマンドを作る
- 0.0.14. 【初心者向け】Windows 環境で npm を導入する
- 0.0.15. Node.jsを勉強する⑥ – コマンドライン引数の受け取り
- 0.0.16. 【備忘録】puppeteerでurl取得
- 0.0.17. メール機能ってどうやるの?amazonSES編
- 1. はじめに
LINEボットでGoogle Alertを通知
Google Alertは、キーワードを登録しておくと、ウェブ上の新着コンテンツを知らせてくれるサービスです。私は、今まで、メールで受信していたのですが、せっかくコンテンツを通知してくれたのに、時間がたつと埋もれてしまっていました。
そこで、新着コンテンツが来たタイミングでLINEボットで通知すると同時に、データベースに登録して、あとでも参照できるようにしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/3c29e58b-20ec-a19a-d99d-a1339ac2fd04.png)
2か所でNode.jsを使います。
1つ目は、コンテンツの定期的な取得のため。
2つ目は、過去コンテンツの格納とLINEボット用のサーバです。過去コンテンツは、MySQLサーバに格納しています。
もろもろはGitHubに上げておきました。
poruruba/GoogleAlert
https://github.com/poruruba/GoogleAlert#流れ
【2021年】React / TypeScript使用のためのDocker + Vagrant環境を構築する
## 目的
下記の技術を使ったフロントのコンポーネントの作成を行うための環境構築を行いました。
– React
– TypeScript目的は上記の利用ですが、本記事としてはReact/TypeScriptを触れることはありませんので、Node.jsを利用する環境の構築には利用が可能かと思います。
DockerだけでなくVagrantを採用している理由としては、自分の開発環境がmacであり、
参考記事に記載の理由で動作が遅いことを解消するためです。## 参考記事
[DXを大幅に低下させるDocker for Macを捨ててMac最速のDocker環境を手に入れる](https://qiita.com/yuki_ycino/items/cb21cf91a39ddd61f484)
## 前準備/筆者の環境
参考記事に記載のVagrantやMutagenのインストールが必要です。
筆者の環境としては下記となります。– MacOS 11.1
– Vagrant 2.2.7
– Mutagen 0.11.8## 作成するもの
下記の4つのファイルを作成します。
そ
[Angular & Node.js] Udemyで勉強しようWEBアプリケーション開発!
#Udemyで勉強しようWEBアプリケーション開発!
というわけでして、Udemyさんの講座で勉強させて頂いております。
##対象講座
こちらの講座です : [【Angular11とNode.jsで始める!】JavaScript系 WEBアプリケーション開発コンプリートガイド](https://www.udemy.com/course/angular-nodejs-web/ “【Angular11とNode.jsで始める!】JavaScript系 WEBアプリケーション開発コンプリートガイド”)
##成果物
現時点での成果物です : [Angular & Node.js WEBアプリケーション](https://iwashi-reservation-app.herokuapp.com/products “WEBアプリケーション”)
(まだ、最後の「デザインを作りこもう」をやっていないです。)
Angularでのフロントエンドの開発と、Node.js、MongoDBによるバックエンドの開発、デプロイまでを学べます。
※ ローカル環境がMacの方向けの教材でして、私はWin
NodejsでWebアプリケーション作成 with Docker
# 前提
ProgateのNodejsコース完了程度の知識があること。
Docker使える。
[VSCodeでDocker入門](https://qiita.com/Teach/items/ca09b8882f519dca600c)# 本記事の対象者
ProgateでNodejs学んだ。次は自分のプロジェクトを作ってみたいって人# 本記事でやること
– DockerでNodejs環境を作る
– プロジェクトの作成
– ライブラリのインストール
– ブラウザ上でページを確認# 環境
Docker
VSCode
Node 14.15
Git# プロジェクトの作成
まず適当な場所にプロジェクトのフォルダを作成。
本記事では `nodejs-sample-app` という名前で作った。そして、そのフォルダをVSCodeで開く。
以下のファイルを作成
“`docker-compose.yml
version: “3”
services:
node:
image: node:14.15
volumes:
expressをESモジュールに変更する手順(babel利用)
# 目的
バックエンドをESモジュールで記載できるようにしたい(フロントエンドに合わせる)という目的です。
(babelにするかtypescriptにするかで悩んでいます)* おまけにsequelizeを追加して、動作することも確認する。
* 完成後ソース(tagのv1がsequelize追加前まで、v2(最新コミット)が最後まで)
https://github.com/murasuke/express-generator-babel## 結果
* ESMとしてexportしたモジュールはimportする、module.exportの場合(node)はrequire()を利用するということに気を付ければ、混在していても問題なく動く。## 実現手段
* expessをES6(import)で利用できるようにするため、babelでトランスパイルする。
⇒package.json に 「type: module」を追加すればESモジュールを使えますが、jsファイルの拡張子(.cjs、.mjs)の切り分けが面倒なのでbabelにします。* express-generatorで
Node.jsを勉強する⑦ – npmモジュールyargsを使った引数のオプションの処理
##はじめに
前回は[コマンドライン引数の受け取り](https://qiita.com/arata0520/items/9acf3d56f78d5a056ce1)についてまとめました。
今回はnpmモジュールyargsを使ったオプションの変換を記事にします。yargsを利用することで、ターミナルでコマンドを実行する際に、引数のオプションを入れた場合、それを引数として変換できます。##教材
Udemy
The Complete Node.js Developer Course (3rd Edition)
https://www.udemy.com/course/the-complete-nodejs-developer-course-2/##解決したいこと
processを用いることで、コマンドライン引数の受け取りはできましたが、引数のオプションを入力しても上手く変換されません。
まずは、こちらから見ていきましょう。app.jsというファイルを作成し、コマンドライン引数がconsoleに表示されるようにコードを書きます。“`javascript:app.js
consol
メンバーをBANする方法 Discord.js(GBAN前編)
#サーバーから人をBANする方法
荒らす人、イライラする人にはBANができます。
その動作をBOTにさせる方法を教えます!
##動作環境| バージョン | サービス
|:———–|:————
| v.12以上 | Glitch##document
公式ドキュメント(英語):[Link](https://discord.js.org/#/docs/main/stable/class/GuildMemberManager?scrollTo=ban)##動き方
`!ban メンションorID`
↓
理由を聞く(BANをする理由)
↓
BAN完了!##コード
“`js
const discord = require(“discord.js”);
const client = new discord.Client();
const prefix = “!”;//ここは好きに変えてもいいですclient.on(“message”, async message => {
if (!message.content.match(/
(小ネタ)TypeScriptで型定義ファイルが無いモジュールの読み込み方法
# はじめに
ml5を利用しようとしたところ、型定義が無く、エラーが発生したため、型定義が無い時のモジュールの読み込み方法について調べました。
*なお、ml5の型定義は現在draft版を作成中。
https://gist.github.com/dikarel/38a12ce263199a41ad67c15eac7f4b45# 型定義が無い時のエラー
ml5を以下のようにモジュールをインポートするとエラーとなる。“`typescript
import * as ml5 from “ml5”;
“`具体的には以下のようなコンパイルエラーが発生する。
“`console
Could not find a declaration file for module ‘ml5’.
Try npm install @types/ml5 if it exists or add a new declaration (.d.ts) file containing declare module ‘ml5’;
“`# 型定義が無い時の読み込み方法
型定義ファイル( `d.ts` )を自
npmに自作モジュールを公開する方法
# はじめに
先日Node.jsの勉強中にnpmについて改めて学ぶ機会がありました。その際npmにサンプルのモジュールを公開したので、具体的なやり方をシェアします。
# npmとは
Node Package Managerが正式な名称です。その名の通りNode.jsのパッケージを管理するためのツールです。ホームページは下記リンク先からアクセスできます。
[https://www.npmjs.com/](https://www.npmjs.com/)
npmはNode.jsをインストールする際にインストールされます。インストール済みの場合、下記コマンドでバージョンが表示されます。
“`
npm –version
“`# npmに自作モジュールを公開する方法
## 公開までの流れ
流れは下記の通りです。
– npmのアカウントを作成する。
– 公開したいモジュールを作成する。
– npmへログインする。
– npmへ公開する。それでは1つずつ見ていきます。
## npmのアカウントを作成する
まずはnpmのアカウントを作成します。下記リンク先からSign
NimのコードをNode.js用のJavaScriptコードにトランスコンパイルする
# 概要
– NimのコードをJSバックエンドでコンパイルしてNode.jsスクリプトとして実行してみます
– NimのコードからNode.js用のライブラリを生成して、Node.jsスクリプトからライブラリを読み込んで関数を呼び出してみます# NimはJavaScriptを生成できる
Nimは公式でNimのコードからJavaScriptのコードにトランスコンパイル可能です。
例えば、以下のようなNimコードに対して
“`index.nim
proc plus*(x, y: cint): cint {.exportc.} =
return x + y
“`以下のコマンドでコンパイルします。すると、`index.nim`から`index.js`が生成されます。
“`bash
$ nim js index.nim$ ls index*
index.js index.nim
“`このようにJavaScriptコードを生成できます。
しかしここで生成されるJavaScriptはフロントエンド用で、HTMLから読み込む想定のものです。
Node.jsからは
herokuデプロイ後sequelizeでPostgreSQLに接続できないときの解決法
sequelizeを使ってPostgreSQLと接続したい。
ローカル環境では接続に成功していたが、herokuにデプロイした後は失敗する。
## 失敗
“`JavaScript
const Sequelize = require(‘sequelize’);// herokuまたはローカル環境のPostgreSQLに接続する
const sequelize = new Sequelize(process.env.DATABASE_URL || ‘postgres://postgres:postgres@localhost/hogehoge’);
“`## 成功
“`JavaScript
const Sequelize = require(‘sequelize’);const sequelize = new Sequelize(
process.env.DATABASE_URL || ‘postgres://postgres:postgres@localhost/hogehoge’,
{dialectOptions: { ssl: true }}
);
【Node.js】現在日時を取得する方法4選
# 目標
Node.jsで現在日時をYYYYMMDDHHmmssの14桁のフォーマットで出力します。
nodeコマンドで下記のような出力が得られるプログラムですね。“`
$ node index.js
202101082341
“`# 前提
Node.js 14.15.4
date-utils 1.2.21
moment 2.29.1# 更新情報
【2020/01/09 toLocaleStringメソッドを利用 追加】
@il9437 様、ありがとうございます!# Javascriptで頑張る
“`javascript:index.js
const date = new Date();
const currentTime = formattedDateTime(date);
console.log(currentTime)function formattedDateTime(date) {
const y = date.getFullYear();
const m = (‘0’ + (date.getMonth()
discord.jsでURLの安全性チェックコマンドを作る
# 今回作るもの
1.discord上でURL解析を行うコマンドを実行
2.メッセージからURLを取り出す
3.node-fetchを利用してNortonSafeWebでサイトの安全性をチェック
4.結果をサイトのHTMLから取得
5.“1“が送信されたチャンネルに結果を送信# 必要なもの
・node.js => [node.js](https://nodejs.org/ja/)
・discord.js => “npm i discord.js“
・node-fetch => “npm i node-fetch“
# コード
“`js
const discord = require(“discord.js”);
const fetch = require(“node-fetch”);
const client = new discord.Client();
const prefix = “!”client.on(“message”, async message => {
if (!message.content.startsWith(prefix)) return
【初心者向け】Windows 環境で npm を導入する
npm を知らない人が、Windows 環境に npm を新規導入してみます。
## 導入環境
– Windows 10 64bit
– Windows コマンドプロンプト (cmd.exe) をある程度使えることを前提とします## 概要
### npm (Node Package Manager)
– npm は、元々は Node.js というサーバサイド処理を行う JavaScript プログラムの中で利用されるモジュールパッケージの管理ソフトウェアです。
– つまり、Node.js をインストールすれば npm も一緒にインストールされます。
– npm でインストールできるモジュールパッケージは、オンライン上の npm レジストリサービスに登録されています。
– npm レジストリサービスは、Node.jsで使用するものに留まらず、様々な言語や分野のパッケージが豊富に公開されており、世界最大のパッケージレジストリとなっています。
– npm パッケージはソフトウェア開発者にとって有用な物が豊富にあり、システム開発では必須のものとなっています。
– そのため、フロントエン
Node.jsを勉強する⑥ – コマンドライン引数の受け取り
##はじめに
前回は[JSONファイルの書き込みと読み込み](https://qiita.com/arata0520/items/7daf0b37bfd6c95c8b16)についてまとめました。
今回は、コマンドライン入力した引数をjsファイル上で受け取って使う方法を記事にします。
##教材
Udemy
The Complete Node.js Developer Course (3rd Edition)
https://www.udemy.com/course/the-complete-nodejs-developer-course-2/##引数配列の受け取り
まずは、app.jsという名前のファイルを作成します。コマンドラインから引数を受け取るには”process”を使います。
processだけでも作動しますが、入力した以外の膨大なデータを受け取っているので、”argv”を用いて、引数だけに、表示範囲を狭めます。
argvはargument vector(引数の配列)を意味します。今回はconsoleに出力します。“`javascript:app.js
console
【備忘録】puppeteerでurl取得
ご無沙汰してます。おおのんです。
URL取得する方法メモ。
現在ページのURLが期待値と比較したいけど、なぜか取得できない。“`javascript:url取得できない例
let puppeteer = require(“puppeteer”);
let browser;
let page;beforeAll(async () => {
browser = await puppeteer.launch({
args: [“–disable-web-security”],
headless: false,
slowMo: 30
});
page = await browser.newPage();
jest.setTimeout(20000);
});afterAll(() => {
browser.close();
});describe(“TEST”, () => {
test(“toMypage”, async () => {
// 画面移動
await page.goto(“http://loc
メール機能ってどうやるの?amazonSES編
はじめに
前回に引き続き、メール機能について学習したのでアウトプットしていきます
今回はAmazon SESを使っていきます
Amazon SESを使う前提として>- [AWS にサインアップ](https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/sign-up-for-aws.html)
(AWSアカウントをすでに作成済みの方はOKです!) >- E メールアドレスまたはドメインの確認(ID検証)
Amazon SES の使用を開始した時点では、E メールを送受信するためには、Amazon SES メールボックスシミュレーターと検証済み E メール ID のみであるためです。
[今回はEメールアドレス検証を行っていきます。](https://console.aws.amazon.com/ses/)(ドメインの場合も同様)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws
暮らしを良くするIoT① 〜テレビに近づくな!〜
はじめての投稿です。
今年は母艦もMacBook Pro M1 にしたので(10年ぶりのmac更新)
発信を積極的にしてみようかなという目標です。仕事でIoTデバイスの開発をしていますが、
自分の子供たちにも電子工作ちっくなものに触れさせようという事で
「暮らしを良くするIoT」と銘打ち、
自宅の困った事を電子工作を使って解決していこうと思いました。
##困りごと
子供がテレビの近くから離れない。目が悪くなる!
##解決方法
テレビに近づいたら怒られるようにする。(怒り疲れたので)
##設計
手持ちのデバイスを色々見回して、下図のような感じで設計。
![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920910/598b87ab-9b89-6cc3-955b-65636018815e.png)| 使用デバイス | 用途 | 備考 |
|:———–|:————|:————|
| RaspberryPI 3B+ | ハブ
M1 Mac node.js v15 と Intel Mac node.js v14 で package-lock.json の lockfileVersion が違う
Apple Silicon M1 arm64 aarch64 Mac 環境の node.js v15 では、
npm v7 によって package-lock.json が `”lockfileVersion”: 2` になる。従来の Intel x64 amd64 Mac 環境などの node.js v14 では、
npm v6 によって package-lock.json が `”lockfileVersion”: 1` になっていた。v14 と v15 を併用する場合は、npm のバージョンを揃えたほうが良さそう。
当面 production で npm v6 を使うなら“`sh
npm install -g npm@6
“`として、M1 Mac 側を v6 にダウングレードすることで、バージョンを揃えることができる。
Node.jsでSMSをバッチで送信
このポストで簡単なSMSバッチ送信方法を紹介したいと思います。
最近SMS送信できるAPIが増えてきていると思いますが、大体1通ずつの送信になっています。APIを提供されている会社の中、Vonageという会社があります。VonageのSMS APIも1通ずつの送信になっていますが、バッチ送信のサンプルコードも提供しています。このサンプルを使ってみようと思っています。[https://github.com/nexmo-se/simple-sms-blaster](https://github.com/nexmo-se/simple-sms-blaster)
![Screen Shot 2021-01-07 at 15.39.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683316/6494598b-1ce4-4454-afb5-6cf28579efc1.png)
このサンプルはNode.jsで書かれていて、マイクロサービスとしてデプロイするのは簡単にできると思います。このSMSバッチ送信サ