- 1. 前書き
- 2. middleareとexpressの関係性
- 3. middlewareができること
- 3.0.1. よく知られたNode.js フレームワークの特徴、インストール方法、ハロー・ワールドまで
- 3.0.2. とりあえずMacでVueの環境を整えてみた
- 3.0.3. pm2のプロファイリングを試してみる(前準備)
- 3.0.4. WordPressテーマのバージョンをpackage.jsonと同期する
- 3.0.5. 【冬休みオトナの自由研究】「2700円でスマートハウス化してみた」の巻
- 3.0.6. create-react-appで躓いたこと
- 3.0.7. Sequelize-cli-esmでSequelize をESモジュールにする
- 3.0.8. 【アプリ開発 1】【Node.js express Docker】 Dockerを用いてNode.js Express MongoDB(mongoose)の環境を構築する【2020年12月】
- 3.0.9. APIGWとlambdaでGoogleスマートホームアプリを作成してみた[前編]
- 3.0.10. Node.js: Redis のデータを削除 (Delete)
- 3.0.11. Node.js: Redis のデータを更新 (Update)
- 3.0.12. Node.js: Redis のデータを作成 (Create)
- 3.0.13. nodejsでtail
puppeteerでドットインストールの総学習時間を取得する
オンライン学習サイトのドットインストールには学習時間を確認できる機能がある。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731232/1e2279e6-ada8-23a2-cc12-43ef90e3de22.png)
~~……がこの時間がどうも正しくない。実際の学習時間よりだいぶ少ない。おそらく回線が不安定な環境で動画を視聴しても視聴時間に加算されない。~~ → 自動取得した合計と視聴時間が一致していたので、ドットインストールの視聴時間は正しかった。正しい学習時間が欲しいのでブラウザ自動操作ツールであるpuppeteerを利用して学習時間の合計を自動で求める。
### 注意
自動操作ツールでのアクセスは頻度が高すぎるとサービスへ負荷を与えてアクセスブロック等の対象となるので、適切にwaitを入れてあげると良い。
### 戦略
①puppeteerでヘッドレスブラウザ(目に見えないブラウザ)を起動する。
②ドットインストールのユーザ認証を行う。
③ドットインストールのプロフ
[Node.js] macで環境構築をしよう
#環境
macOS Catalina バージョン 10.15.7#nodebrewをインストール
“`
$ curl -L git.io/nodebrew | perl – setup
“`上記のコマンドを実行するとターミナル上に以下のように表示されます。
“`
========================================
Export a path to nodebrew:export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================
“`ターミナル上の `export PATH=$HOME/.nodebrew/current/bin:$PATH` のコマンドをコピーして、もう一度貼り付けてエンターキーで実行してください。
“`
$ export PATH=$HOME/.nodebrew/current/bin:$PATH
“`インストールに成功しているかを確認しましょう。
“`
$ nodebrew -v
“`
【Robocode】楽しくお勉強できるJavaScriptの戦車ゲームをWindows環境で動作させる。
#Robocodeとは
『Robocode』は、オープンソースの教育ゲームである。JavaやVer1.7.2以降の.NET Frameworkの熟達に役立つ。 単純なロボットはわずか数分で作成できるが、本格的に完成させる場合は数ヶ月かかることがある。
出典:https://ja.wikipedia.org/wiki/Robocode学生時代 Javaが全くかけなかった自分は、RobocodeにハマったのをきっかけにJavaにのめり込むようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524081/cb4e1f27-4915-ad94-08cf-33aaa90552c8.png)
・・・のJavaScript版を発見したので、手軽に動作させる手順をメモ書きで書いておきます。
#前提となる環境
OS:
Windows10他:
node.js(筆者環境はV14)
#JavaScript版の導入
##githubよりソースコードの
Express Tour #1 Express
Expressの公式チュートリアルに沿ってexpressを体験してみる。
Node.jsはインストール済の状態で臨みましょう。## Installing
アプリケーション用のディレクトリを作成しましょう。
“`
$ mkdir myapp
$ cd myapp
“`次にnpm initコマンドでpackage.jsonを作成します。と、案内されていますがとりあえず全てデフォルトでよいと思いますが、
メインファイルの名前はapp.jsにしておきましょう。“`
$ npm init
“`次にExpressをインストールします。
“`
$ npm install express –save
“`## Hello world example
下記のコードは最も単純なアプリの例です。
このアプリはサーバーを起動し、ポート3000で接続できます。 アプリは「Hello World!」で応答します。“`Node.js
const express = require(‘express’)
const app = express()
const port
Yet Another な Apple Silicon (M1) + Homebrew のベストプラクティス
## ベストプラクティス多すぎ?
参考にさせていただきました。
– [Apple Silicon (ARM, M1) のmacOSにaarch64とx86_64のhomebrewを共存させる](https://qiita.com/chibiegg/items/43b7604a589e3760e88e) (Qiita)
– [M1チップのMacBookにおけるHomebrewの私的ベストプラクティス](https://zenn.dev/sai2_dev/articles/20201213_homebrew) (Zenn)
– [Apple SiliconにおけるHomebrewのベストプラクティス](https://qiita.com/yujiod/items/56002a7cef5b5a3be3fb) (Qiita)
– [みんなの M1 Mac における Homebrew のベストプラクティス は間違っている](https://zenn.dev/ress/articles/069baf1c305523dfca3d) (Zenn)## はじめに
– 基本的にはフロントエンド開
オンラインオセロを作ってHerokuにデプロイしてみた
# 環境
バックエンド:Node.js(Express)
ソケット通信:socket.io
フロントエンド:javascript
データベース: Redis
描画:HTML5 Canvas
デプロイ環境: Heroku# 作ったもの
https://hazama-online-othello-game.herokuapp.com/# 感想
初めて扱うものばかりで苦戦しましたが、下記の参考記事を読むことで、オンラインで遊べるゲームを実装でき、公開まで行うことができました。勉強になったので、別のオンラインゲームも作って、公開してみようと思います。# 参考
– オンラインリバーシの作り方: [ブラウザで動くオンライン対戦リバーシ作ってみた](https://kazzstorage.com/websocket-reversi-dev/)
– Herokuを使ったデプロイの仕方: [【HEROKUとは】これを読めばOK!デプロイの仕方まで徹底解説](https://tech-camp.in/note/technology/16108/)
expressのmiddleware使ってみた!
前書き
expressを使うとき何となくmiddlewareを使っていたので、middlewareについて調べていました。
※自分用の備忘録として記事を作成していますmiddleareとexpressの関係性
前提として
expressでは基本的に一連のmiddlware関数呼び出す。
(個人的にはここが肝)
⇒ expressアプリケーションを起動することで必要なmiddlewareが読み出されるわけですね!!!
上手く使えるようになりたいものです笑middlewareができること
middlewareは下記の4つのことができます
- 任意のコードを実行する。
- リクエストオブジェクトとレスポンスオブジェクトを変更する。
- リクエストレスポンスサイクルを終了する。
- スタック内の次のミドルウェア関数を呼び出す。
具体的に見ていきましょう!
![image.
よく知られたNode.js フレームワークの特徴、インストール方法、ハロー・ワールドまで
StatusCode.NOT_FOUND(404)の処理など、ゼロからコーディングするよりフレームワークを使用するのが普通と思いますが、Express.js以外にも、Node.jsには様々なものが存在します。
GitHub上でスターが多いフレームワークについて、特徴、インストール、Hello, worldを出すところまでをまとめてみました(Hello, worldはできるもののみ)。
**Ghos**tはフレームワークというよりCMSですが、自分でホスティングする場合はフリーです。一応調べたのもあって、最後に追記しました。
「**Node.jsって何?**」とか初歩的な使用法を知りたい方は以下の書籍が丁寧で分かりやすいです(解説されてるフレームワークはExpress.jsですが)。
– **Jonathan Wexler著 吉川邦夫監訳 『入門 Node.js プログラミング』 翔泳社、2019**
## GitHubスター数
– Express (51,393)
– koa.js (30,482)
– Sails.js (21.769)
– fastify (16,842
とりあえずMacでVueの環境を整えてみた
スタンドアロン版のVue.js devtoolsをmacに入れていくメモ。
なおNode.JSのインストールまでは
[MacにNode.jsをインストール](https://qiita.com/kyosuke5_20/items/c5f68fc9d89b84c0df09)
を参考にさせていただいています。#必要なこと
1.Homebrewのインストール(済)
2.nodebrewのインストール
3.Node.jsのインストール
4.Vue.js devtoolsのインストール###Homebrew
HomebrewはMacでのソフトウェアや拡張機能の管理を行うパッケージマネージャです。便利です。Homebrewのインストールについては
[Homebrewのインストール](https://qiita.com/zaburo/items/29fe23c1ceb6056109fd)
を参照してます。#環境
開始段階の環境として
・mac OS Catalina 10.15.7
・Homebrew 2.7.1
はインストール済みです。
#nodebrewのインストール
##
pm2のプロファイリングを試してみる(前準備)
あけましておめでとうございます。
この記事を編集していたら年を越していました。## EC2を作成
| key | value |
|—|—|
|インスタンスタイプ |t2.micro |
|vCPU |1 |## Node.js, pm2をインストール
“`
curl -sL https://rpm.nodesource.com/setup_12.x | bash –
yum install nodejs -y
node -v
> v12.20.0
npm -v
> 6.14.8
npm install pm2 -g
> 4.5.1
“`## pm2の設定
“`
# 再帰的にディレクトリを作成する
mkdir -p /var/www/test
# pm2の設定ファイルを作成
touch pm2.yaml
# pm2の設定ファイルを編集
vi pm2.yaml
“`“` pm2.yaml
apps:
– script : ./app.js
name : ‘tes-app’
instances: -1 # cp
WordPressテーマのバージョンをpackage.jsonと同期する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/856236/345d4fbb-0e6e-8ec3-be51-e2b628a65bff.png)
管理画面に表示されるバージョンを動的に更新したい。
`postcss`使ってるから、`package.json`と同時に更新してみよう!
# postcssとpostcss-replaceの導入
postcssに関しては省略。
## `postcss-replace`
https://github.com/gridonic/postcss-replace
“`bash
npm install –save-dev postcss-replace
“`# meta.cssを作る
このデータはWordPressしか読まないんですから、ファイルは隔離していいでしょう。“`postcss/meta.css
/*
Theme Name: my_theme
Theme URI: https://example.com/
Autho
【冬休みオトナの自由研究】「2700円でスマートハウス化してみた」の巻
# きっかけ
年末年始だ〜。まとまった時間がとれる〜なんて思っていたら、ムクムクと制作意欲が湧いてきました。
そんな折に、家の洗面台の電球が切れ、Amazonで買おうなんて検索していたら見つけたのがこれ!!
【Amazon Alexa認定 LED電球】OHLUXスマート電球え、スマートLED **2個で2700円!?**
アレクサとかにも繋がるし、ちょっと調べてみたらIFTTTとか、Tuya API(?)など利用して自動化もできそう。
**「これは安いぞ」**と思い大人の自由研究ということで、スマートホーム化で遊んでみることにしました。
create-react-appで躓いたこと
`create-react-app` で Reactアプリを作成したときに、うまくアプリの起動ができなかったため、その経緯と対応を記載します。
##1. create-react-app の実行手順
初めに、`npm` と `node` の version確認を行います。“`ruby:cmd
C:\Users\ユーザー名>npm -v
6.12.1
C:\Users\ユーザー名>node -v
v13.1.0
“`
`npm` と `node` がインストールされていることを確認したので、
`create-react-app` を実行します。“`ruby:cmd
C:\Users\ユーザー名>npx create-react-app my-app途中の表示は省略
We suggest that you begin by typing:
cd my-app
npm startHappy hacking!
“`
`create-react-app` にて、Reactアプリが作成できました。##2. エラーの検出と対応
`create-react-
Sequelize-cli-esmでSequelize をESモジュールにする
—
## 目的
* nodeがESモジュールに対応したので、SequelizeをESモジュールで使用したい。
* フロントエンド、バックエンドともにimportで統一した方が理解しやすい。
* 初めて開発する人にfrontendはimport、backendはrequire()を使用する理由を説明しづらい。—-
## 前提
サンプルでは下記を使用。sequelizeについて基礎的な知識があること。* Node.js v14以降 (ESモジュール対応済み)
* sequelize:6.3.5
* sequelize-cli-esm:5.0.6 (ESモジュール版cli)
* sqlite3:5.0.0 (データベース)* package.jsonに「”type”:”module”」を追加しnodeのデフォルトをESモジュールにする。
⇒**migration初回実行時にエラーとなる場合がある。エラーの場合はいったん削除してから実行。後から戻せばよい。理由は不明だが、2回目以降の実行ではtype:moduleの指定があってもなくてもエラーにはならない
【アプリ開発 1】【Node.js express Docker】 Dockerを用いてNode.js Express MongoDB(mongoose)の環境を構築する【2020年12月】
※当方駆け出しエンジニアのため、間違っていることも多々あると思いますので、ご了承ください。また、間違いに気付いた方はご一報いただけると幸いです。
##Node.js Express MongoDBを用いたアプリ開発
受託開発でNode.js Express MongoDBを用いたアプリ開発を行うことになりました。
開発の中で得られた知見を、支障のない範囲で記録していきたいと思います。
アプリの内容はさておき、チームで開発するため、まずはDockerを用いて開発環境を構築を行います。###構築する環境
– docker-composeを用いて、アプリコンテナ、mongodbコンテナを作成する。
– アプリコンテナとmongodbコンテナの接続テスト(mongoose)を用いて、テストモデルにデータ保存。
– mongo compassからデータの挿入を確認
– mongodbに認証を設ける。作成するユーザーの権限は”root”,”read”,”owner”
– データベースのパスワード等は環境変数で管理(gitignoreにてgitの管理から外す。)※注意点
<アプリ名> <
APIGWとlambdaでGoogleスマートホームアプリを作成してみた[前編]
#初めに
業務で初めてスマートホームスピーカーの開発を行うことになった
今回はその中でもGoogleHomeの開発について備忘録的に、実施事項を記載していく##注意事項
本投稿記事は2020年12月時点の仕様に基づいた実装となります##参考記事
[Google Assistant 公式ドキュメント](https://developers.google.com/assistant/smarthome/overview)##この記事で書いていくこと
– cognitoを利用したアカウントリンクの実装 <- ★本記事ではこちらを実施 - APIGateway+lambdaを利用して、Googleスマートホームアプリのコード実装と各種設定 ##この記事で書かないこと - 基本的なGoogleスマートホームアプリの作成手順について ## 事前に用意しておくもの - Googleアカウント - Googleアカウントに紐づく(Cloud IAM)GCPアカウント #1. 事前設定 プロジェクトやアプリの初期セットアップについては、以下の記事を参考に実施しました [Googleス
Node.js: Redis のデータを削除 (Delete)
“`js:redis_delete.js
#! /usr/bin/node
// —————————————————————
// redis_delete.js
//
// Dec/30/2020
//
// —————————————————————
‘use strict’const util = require(‘util’)
const redis = require(‘redis’)process.on(‘unhandledRejection’, console.dir)
// —————————————————————
async function main (options)
{
var argv = options.argv
const key_in=argv[2]
console.log (ke
Node.js: Redis のデータを更新 (Update)
“`js:redis_update.js
#! /usr/bin/node
// —————————————————————
// redis_update.js
//
// Dec/30/2020
//
// —————————————————————
‘use strict’const util = require(‘util’)
const redis = require(‘redis’)process.on(‘unhandledRejection’, console.dir)
// —————————————————————
function get_current_date_proc()
{
const today = new Date ()
var ddx = (1900 + today.getYe
Node.js: Redis のデータを作成 (Create)
“`js:redis_create.js
#! /usr/bin/node
// —————————————————————
// redis_create.js
//
// Dec/30/2020
//
// —————————————————————
‘use strict’const util = require(‘util’)
const redis = require(‘redis’)process.on(‘unhandledRejection’, console.dir)
// —————————————————————
function dict_append_proc(dict_aa,id_in,name_in,population_in,date_mod_in)
{
var unit_aa = {}
nodejsでtail
electron(nodejs)上で特定のファイルをtailする
tailライブラリを使用する。
https://github.com/lucagrulla/node-tail“`
$ yarn add tail
“`“`App.tsx
import React, { useEffect, useState } from ‘react’
import { render } from ‘react-dom’
import { Tail } from ‘tail’const tail = new Tail(‘file-path’)
const App = () => {
let [texts, setTexts] = useState([]) useEffect(() => {
tail.on(‘line’, (data : string) => {
texts = […texts, data]
setTexts(texts)
})return () => {
tai