Node.js関連のことを調べてみた2020年04月27日

Node.js関連のことを調べてみた2020年04月27日

如何先开始写出一个程序

#谈谈写出一个方案。
如果你最近一直在做程序,而你认为
我在初中时接触的第一个节目,是我在初中时接触的第一个节目
是N80-BASIC。
我还记得,但下面这句话完全在我的脑海里。

“`N88-BASIC
N88-BASIC

WIDTH 80,25.
CONSOLE 0,25,0,1
LOCATE 0,0
PRINT “HELLO WORLD”
宽80,25
“`

当然,那时,我只是打出了这样的代码。
解释器只显示了一个无机游标。
我找不到任何帮助。

可以这么说,写出一个程序是
今天还是这个样子,他真的是个无精打采的家伙。

那么,这就是今天的话题。
这要从一种新的编程语言、开发环境说起。
所以,节目先生,好像是在问候。
问候是很重要的。

不仅仅是在编程世界,在现实世界中也是如此。
如果一个问候语被理解了,对方就会以某种方式和你交谈。

哪怕你只是在不了解情况的情况下走到他们面前,也是如此。
那你会得到的,是一脸疑惑的表情,或者是一种
最坏的情况下,他们只是送你回去走人。

#过去的故事D,扯远了一点
我第一次去大学毕业旅行的时候,在美国的机场转机。
我把车票放在了我的行李

元記事を表示

How do I start writing out my program?

#Talk about writing out a program.

Talk about writing out my first program.
When I was a junior high school student, the first program I touched was N80-BASIC.
I won’t forget the starting cord, I still remember it, the following sentence was completely in my head.

“`Z80
N88-BASIC

WIDTH 80,25.
CONSOLE 0,25,0,1
LOCATE 0,0
PRINT “HELLO WORLD”
“`

Of course, in the old days of computer screens, there was nothing but a useless, inorganic cursor.

Writing out programs is still the same, and comp

元記事を表示

Puppeteer on Lambda (Node.js 12.x) で日本語ページのキャプチャを取る方法 簡単

## やりたいこと
Lambda上でPuppeteerを動かしてキャプチャを取るとき、日本語フォントを正しく表示させる。
(デフォルトではLambdaに日本語フォントが入っていないため、何もしないと日本語がすべて豆腐になってしまうのだ。)

## 環境
* AWS Lambda
* Node.js 12.x
* ローカル
* Windows10
* Node.js v12.16.2
* npm 6.14.4

## やり方(ざっくり)
* Lambda Layerに日本語フォントをzip化してアップロードする。
* Lambda関数にそのLayerを追加する。
* Lambda関数内でLayerのフォントファイルを参照できるようにindex.jsで`process.env[‘HOME’] = “/opt”;`を定義する。

## やり方(詳細)

“`shell:ローカルのディレクトリ構成
puppeteer_sample
├─ modules # Layerに登録するnpmモジュール群
│ ├─ node_modules
│ └─ packa

元記事を表示

Herokuへのアップロードでつまづいた時の対処法 Node.js + MongoDB

自分の経験をここに記述します。

【経緯】先日、EJS, CSS, JavaScript, MongoDB, Nodeを使って作成したWebsiteをHerokuにアップロードしようと試みた時、正常にアップロードできず、丸2日間の時間を犠牲にした上でようやく問題解決までに至りました。ここで記載することがいつかこれを見た未来の困っている方々への手助けになればと思います。

【方法】ステップに分けて説明していきます。MongoDBを使用している場合には、別の記事でその追加で必要な方法を記述します。

1:Command Line(Hyper Terminal)がアップロードしようとしているファイルのパスを正しく選択しているか確認する。

2:Command Line(Hyper Terminal)からHerokuへとログインする。
コマンド:$heroku login 

3:GitをInitializeし、add、commitする。以下順々にコマンドを実行する。
コマンド:$git init  

コマンド:$git add .

コマンド:$git commit -m “sample

元記事を表示

Node.jsでお天気を取得してみよう

#はじめに
`OpenWeatherMap API`からお天気情報を取得しようという試みです。
色々な方が、さまざまな言語で同様の記事を上げています。
私は、勉強真っ最中の`Node.js`でやってみようと思いました。
[(Node.jsの導入はこちら)][node]

#環境
`wsl`の環境です。

“`
Editor: VSCode
Shell : bash version 4.4.20
Ubuntu: 18.04.4 LTS
node : v10.14.2
“`

#1.APIの取得
[OpenWeatherMap][owm]の公式サイトで無料アカウントを作成後、
表示されるAPIキーを控えておいてください。
APIキー取得後は少し時間をおいてか試したほうがいいと思います。
公式もそういってますし。

#2.プロジェクトを作成
##1.任意の位置(緯度経度)のお天気情報を取得
とりあえず福岡市にしてみました。

“`js:app.js
‘use strict’;

const http = require(‘http’);
const MY_WEATHER_APIKEY

元記事を表示

Herokuを使ってみた

#はじめに
適当にJSとかwebアプリケーションを勉強している学生が記録するために使っているので,あまり内容は期待しないでください。とりあえず今回はHTTPサーバをHerokuを使って公開してみます。

#1.Herokuとは
webサービスを動かせるプラットフォームを提供してるサービスらしい。小規模なら無料で使えるとのこと。

#2.Herokuのアカウント作成
とりあえずアカウント作成
https://jp.heroku.com/
でいろいろ個人情報を流出してきます。

ここで開発言語を選択するらしいですがまぁJS程度しかやってないのでNode.js一択ですね。

ドラえもんが引っかかってしまう私はロボットではありませんチャレンジをクリアしてメールアドレス認証。パスワード設定したら登録完了です。いやぁ非常にスムーズ,毎回どこかでつまづくんじゃないかと冷や冷やしながら登録してます。

#3.Heroku CLIをインストール
順番がゴチャゴチャしてきましたがherokuコマンドを利用しなきゃと思ったらHeroku CLIが必要らしい。まぁあるあるというか常識なのだろう。今回はUbun

元記事を表示

Dockerでの環境構築(Rails)超入門

## はじめに
Ruby on Rails初心者です。今回はDockerを使ったRailsの環境構築の初歩を勉強のために備忘録として残したいと思います。
## 前提
DockerでRailsの開発環境を行う
※あくまで開発環境を構築するためだけの超入門であるため、DBや細かい設定等は次回以降投稿する

## 手順
Dockerはインストールしていることが前提
1. Dockerfile, docker-compose.yamlの作成
2. Dockerのコンテナを起動
3. Railsの設定
4. Node.jsの設定
5. Yarnのインストール

## 実践
1. Dockerfile, docker-compose.yamlの作成

・ディレクトリを作成(今回はDocker/practice)

“`
$ cd Desktop
$ mkdir docker
$ mkdir practice
$ cd practice
“`

・Docker hubで「ruby」を検索し、バージョンを確認

・Dockerfile作成

“`
FROM ruby:2

元記事を表示

リングフィットアドベンチャーをガチるためにサーバレスアプリケーションを作る

# TL;DR

[リングフィットアドベンチャー](https://www.nintendo.co.jp/ring/) の称号をコンプするための進捗管理を、以下の技術要素を詰め込んで自動で行えるようにしたお話です。

– serverless framework
– AWS Lambda
– Amazon S3
– Amazon DynamoDB
– Amazon API Gateway
– Google Cloud Vision
– Twitter API
– Googleスプレッドシート
– Glide

# ご注意

– **エモ多め、技術の詳細少なめ**
– 画像が多いです(ここを読んでる時点で手遅れだと思いますが)
– 掲載しているコードは実運用しているものとは異なり、参考程度の内容に編集しています
– 記事内のリングフィットアドベンチャーに関する画像は、任天堂公式より転載、またはゲーム画面のスクリーンショットを用いています

# リングフィットアドベンチャー is 何

慢性的な運動不足に陥るか、筋肉だけは裏切らないと狂信しているかの二極化しがちなITエンジニアの方々はご存

元記事を表示

ImageMagickをJSから呼び出す

#概要
ImageMagickを使って画像生成をしようと思っていて、簡単な処理ならターミナル等でコマンドを打って実行するのだが複数の画像を順番に合成するなどシーケンシャルな処理をする場合にそれだとしんどいので何かスクリプトを使いたいなと思って検討した結果JavaScript(以下JS)にしようと思い検討理由と実行記録を残しておきました。

#なぜJSにしたのか
本当に簡単な処理ならShellscriptでもいいかなと思いますが今回はif文もいくつかケースがわかれたりJSONの読み込み等が発生するため除外。もちろんShellscriptでもできますが不慣れだし大抵の人にとっては見にくいケースもあるので。
次にPythonを検討した。PythonMagickなどのライブラリが用意されていて使いやすいということもあるし最近は画像処理で多く使われていたり人気の言語だったりするので。
迷った結果最終的には[Electron](https://www.electronjs.org/)でGUI作る必要があるかもしれないというのがあったのでJSにしました。

#実行環境
* macOS Mojave

元記事を表示

Google Analytics, Google SpreadSheet, Big Query, Google Ad ManagerのAPIをNode.jsで触ってみる

# はじめに

データの可視化を行う当たってGoogleの各種APIを触ってみましたが、最初は認証の仕方とか基本的な書き方とかでつまづく所もあるので、ハンズオンとして触り方をなるべくわかりやすく紹介したいと思います。
今回紹介するのは

– Google Analyticsのレポート
– Google SpreadSheet
– Big Query
– Google Ad Managerのレポート

のAPIになります。
サンプルコードは[こちら](https://github.com/hedrall/google-data-api-samples)に上げています。

# Google Analytics の レポートAPI

## 概要

– GAのAPIドキュメントを検索すると、Reporting API v4 と Core Reporting API が出てきますが、最新は Reporting API v4 です。
– https://developers.google.com/analytics/devguides/reporting/core/v4?hl=ja
– ガイド

元記事を表示

タイムリーに is-promise 2.2.0 破損に巻き込まれた話

Node.jsの環境をSSDに引越しして動作を確認していたところ、`yo`がインストールできない・動かないという謎の現象に見舞われた。実は自分の環境が悪いのではなく、タイムリーに`yo`が依存するたった1行の関数を提供する`is-promise`が壊れた直後にインストールしたことが原因と分かった。

別のモジュールではNode.jsのバージョンが上がって動かなくなるケースでは対応が遅れることがあったので、今回はすぐ処置されてラッキーだった。(知らないだけで日常的に起きているのかもしれないが)

# 起きた現象
`yo`をインストールすると、ちゃんと動くかをチェックするYeoman Doctorが実行される。ここで、`yo –version`でエラーが起きてしまっている。この後`yo`を実行しても、同じエラーで起動すらしない状況となった。

“`
> yo@3.1.1 postinstall K:\nodejs\npm_global\node_modules\yo
> yodoctor

Yeoman Doctor
Running sanity checks on your sys

元記事を表示

ubuntu18.04にnode12系とnpm6系をインストールする

# 実行環境

– OS:ubuntu 18.04

# 前提条件

– 特に無し

# 実施手順

[公式のREADME.md](https://github.com/nodesource/distributions) に従ってコマンドを実行するだけです。

node12系を指定し、インストール。

“`
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash –
sudo apt-get install -y nodejs
“`

以上です。

# 結果確認

Node.js のバージョン

“`
$ node -v
v12.16.2
“`

npm のバージョン

“`
$ npm -v
6.14.4
“`

# まとめ

[公式のREADME.md](https://github.com/nodesource/distributions) の手順をそのまま実行しただけでした。

元記事を表示

代替手段の探し方

新しいものを勉強する時や久しぶりに触るミドルウェアとかアプリケーションについて、もっといいものあるんじゃないかなって時にどうしてます?

自分は
`アプリケーション名 alternative`
って検索してみてます。

例)
`nvm alternative`
node.jsのversion managerの代替アプリを探した場合。
[nve](https://github.com/ehmicky/nve)って製品が見つかりました。

あとは出てきたものと、元の製品とあわせて
`nvm nve`
とか調べてみたりします。

元記事を表示

HerokuのPostgreSQLにSSL接続する

  
短いですが備忘録として残しておきます!

## エラー

Node.jsのORM(Object Relation Mapping)であるSequelizeを利用して、
ローカルからHerokuのPostgreSQLに接続する際に下記のエラーが出て接続できませんでした。。

“`
error: no pg_hba.conf entry for host “DB_HOST”, user “DB_USER”, database “DB”, SSL off
“`
これはSSL接続がオフになっているためオプションでオンにしてあげる必要があります。

## 解決

“`javascript
const Sequelize = require(‘sequelize’)
const sequelize = new Sequelize(
‘postgres://~~’, // DB情報
{
// DBにSSL接続する
dialectOptions: {
ssl: true,
},
}
)
“`

上記のようにSSL接続をtrueとすることで解

元記事を表示

課題管理表をNode.jsとSQLiteで作る②

①に続いて今度はDBへの登録画面を作っていきます。

## 登録画面の作成

まずviewsにDB書き込みフォームとなるwrite.ejsを新規作成します。

中身はこんな感じで必要最低限の項目とDBへの登録ボタンを用意します。

“`html



登録

新規課題登録

課題

JSのモジュール機能とbabelとwebpackと

#CommonJSとECMAScript
JavaScriptにはサーバサイドのNodeJS(CommonJS)とブラウザのJavaScript(ECMAScript)の二つの言語仕様がある.

二つはモジュール機能(JavaScriptファイルを外部参照する機能)の記述に関して大きな違いがある.

##CommonJSのモジュール機能
CommonJSでモジュールを外部参照できるようにするためには,主にmodule.exportsを使う.

“`Javascript:abc.js
module.exports = 変数1, 変数2, ...
“`

CommonJSでモジュールを参照するためには,requireを使う.
requireで参照するモジュールのファイル名を指定することで,module.exportsした変数そのものを参照することができる.

“`Javascript:
const abc = require(‘abc’)
“`

##ECMAScriptのモジュール機能
ECMAScriptでモジュールを外部参照できるようにするには,主にexportもしくはexp

Cypressで日本語が文字化けするとき

下記を`cypress.js`に追加すると解決する。

“`javascript
{ “modifyObstructiveCode”: false, }
“`

詳しくは読んでないが、下記issueに書いてあった。
https://github.com/cypress-io/cypress/issues/1543

## 経緯
試しにCypress使ってお願いされたサイトのテストを書いていたら、特定の文字のみ文字化けする。
怪しいところがないか調べたところ、``が指定されている。
超怪しい。
ということで、Charset周りのことを調べてたら上に行き着いて解決しました。

aws-sdk-mockを使ってもS3がモックに差し替わらずに困りました

[aws-sdk-mock](https://github.com/dwyl/aws-sdk-mock)を使ってもS3(にアクセスするAWS SDK)がモックに挿し変わらずに困り果ててました・・。

明示的にaws-sdkのパスを指定することで解決しました。

“`javascript:jestのテストコード
const awsMocker = require(‘aws-sdk-mock’);

// 【ここがポイント】 以下のようにaws-sdkのパスを明示的に指定する必要がありました。
const path = require(‘path’);
awsMocker.setSDK(path.resolve(‘node_modules/aws-sdk’));

const testee = require(‘テスト対象ファイルへのパス’);

// その他 略

describe(‘S3の画像保存テスト’, () => {
describe(‘正常時’, () => {
it(‘putObjectを1回だけ実行する’, async done => {

ExpressのhttpセッションをWebSocketで共有する方法

先日、WEBサイト制作者向けのウェブサービスをリリースしたのですが、その制作過程で得た知見をシリーズで発信していく記事の第3弾になります。
個人開発でウェブサービスにトライしてみたいと考えている方の参考になりましたら嬉しいです。

Node.jsサーバでWebSocketを使用する際、httpのセッションデータをWebSocketでも読み込みたいという場面が出てくると思います。
今回の記事では、httpセッションをWebSocketで共有(正確に言うとWebSocketからはReadOnly)する方法について書いてみたいと思います。

## Redisをセッションストアとして使う
実はRedisを使わなくても実現できるのですが、以下の理由によりRedisを使うこととします。

– Nodoサーバで全部受け止めるのではなく負荷を分散させておきたい
– 開発時にNodeサーバを起動し直してもセッションを維持できて便利
– 複数のNodeサーバでセッションを共有できるので、機能によってサーバ(コンテナ)を分けられる

Redisをひとことで説明すると、ネットワーク接続されたインメモリデータス

課題管理表をNode.jsとSQLiteで作る①

初めての投稿なので、至らぬ点があるかと思いますが、温かい目で見て頂ければ幸いです。

EXCELで課題管理を行っていますが、プロジェクトメンバー共有で使っています。

誰かが開きっぱなしだったりすると編集出来なくてちょっと面倒です。

今回はNode.jsとSQLiteを使って、誰でもいつでも課題管理への登録が出来るようなものを目指して作ってみました。

環境はWindows10で行っています。

## 使うもの

私が動作を確認した構成は以下の通りです

– npm:6.4
– Node.js:8.xx
– Express:4.16
– SQLite:3.22

## SQLiteのインストール

公式サイトに行ってダウンロード&インストールを行ってください。

## DBとテーブルの作成

今回はToBe方式での課題管理を行うことを想定し、以下のカラムを用意します。

– 課題
– 理想の姿
– 理想とのギャップ
– 解決策

インストールフォルダをカレントディレクトリにします。

まずDBを作りたいので、以下のコマンドを発行します。

“`sql
sqlite3 kadai