- 1. anyenv 経由の nodenv 経由で Node.js をインストールする
- 2. Cloud9のNode.jsのバージョンを上げる
- 3. Node.js、VSCode、WSLときどきPowerShell
- 4. Node.js (TypeScript) におけるキャッシュの実装方法とその戦略
- 5. 伝家のトレジャーソード(COTOHA APIでつくるルー語 LINE Bot)
- 6. COTOHA APIだけでおじさんになろう
- 7. 事故を出さない虎の巻
- 8. lamda, api gateway使って、クライアントに値を返すなど
- 9. npmパッケージ公開の手順
- 10. Node.jsの非同期処理をPromiseから理解しようとしてみた
- 11. Vue.jsプロジェクトのセットアップ
- 12. express-generatorでアプリを作成したらする事
- 13. 3分で分かる。MERNスタックを簡単に説明してみる
- 14. Sequelize(PostgreSQL)で月次の集計を行う
- 15. Sessionを改めて勉強する
- 16. 2020年から始めるAzure Cosmos DB – Node.js で CRUD アプリを作る
- 17. 既存サイトのPWA化とPush通知基盤を作る(2) – Firebase Cloud Messaging(FCM) + Cloud Functions + Cloud Firestoreで配信基盤を作る
- 18. nodeの実行バージョンをプロジェクトごとに自動切換え
- 19. TypeScript入門 Tips
- 20. Node.js: worker_threadsのスレッド間通信は、child_processのプロセス間通信の2〜11倍速い。
anyenv 経由の nodenv 経由で Node.js をインストールする
## 背景
Node.jsをインストールする方法がたくさんあって迷う問題。
– [公式のインストーラ](https://nodejs.org/ja) を使う場合
– [homebrew](https://brew.sh/index_ja) 経由でインストールする場合
– [nvm](https://github.com/nvm-sh/nvm) 経由でインストールする場合
– [nodebrew](https://github.com/hokaccha/nodebrew) 経由でインストールする場合
– [ndenv](https://github.com/riywo/ndenv) 経由でインストールする場合
– [nodenv](https://github.com/nodenv/nodenv) 経由でインストールする場合
– [anyenv](https://github.com/anyenv/anyenv) 経由でインストールする場合 (当記事)いや多すぎんだろ!!?
### 公式のインストーラ & homebrew 経由でインストールした時の問題
– 複数のNodeバ
Cloud9のNode.jsのバージョンを上げる
# はじめに
Cloud9で使用しているデフォルトのOSであるAmazon Linuxでは、Node.jsのバージョンがv10.19.0のため、2020/03/16時点で最新のv12.16.1にバージョンアップする。
# 前提条件
* AWSにサインアップしていること
* Cloud9のプロジェクトを作成していること
* 本手順ではAmazon Linuxを使用している“`bash
cat /etc/system-release
Amazon Linux AMI release 2018.03
“`# 手順
以下のコマンドを実行します。
“`bash
nvm install v12.16.1
nvm alias default v12.16.1
npm update -g npm
npm i -g npm
“`
Node.js、VSCode、WSLときどきPowerShell
# Node.js、VSCode、WSLときどきPowerShell
WindowsでNode.js(Angular)を使ったフロントエンドの開発環境を整えるにあたってハマったところを残しておきます
# 開発環境
– OS: Windows 10 Home
– エディター: VSCode
– コンソール: WSL1(Ubuntu)# VSCodeのGUIで使用するGitを変更する
同じレポジトリをWSLとVSCode両方から弄っている人は今すぐにVSCodeの設定を変更してください
でないとそのうち**どちらからも書き込みができなくなるデッドロックが発生します**
発生するタイミングは把握できませんでしたが、
VSCodeのGUIでファイルの変更を取り消す(discard changes)ときに発生する気がします![Node.js、VSCode、WSLときどきPowerShell_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174833/0b716216-d48f-c7f4-8
Node.js (TypeScript) におけるキャッシュの実装方法とその戦略
現代の Web アプリケーションにおいて、キャッシュはもはや不可欠と言っていいくらい需要な技術でしょう。アプリケーションの負荷を軽減し、ユーザーへのレスポンスを高めます。
本記事では Node.js (Typescript) を使用したバックエンド API を実装する際に、どのようなキャッシュのテクニックが使えるか解説します。※なお、説明の簡略化のためエラーハンドリングなどは省略しています。
# Node.js を使用した非同期バッチパターンとキャッシュ機構
本章では以下の3つの実装パターンを比較し、Node.js を使用したキャッシュを実装していきます。
1. キャッシュのないサンプルアプリケーション
2. 非同期バッチ処理パターン
3. キャッシュパターン## 1. キャッシュのないサンプルアプリケーショ
伝家のトレジャーソード(COTOHA APIでつくるルー語 LINE Bot)
# やりたいこと・経緯
– 入力した日本語文の一部をカタカナ表記の英語に変換(=**ルー語**を生成)し返すLINE Botをつくってみる
– ルー語とは:日本語文の一部を単語単位でカタカナ表記の英語に置き換えたルー大柴さんの(流行ったのは十年以上前の)ネタ
– たとえば「言わぬがフラワー」「塵も積もればマウンテン」など
– 実はすでに[ルー語変換](https://lou5.jp/)というウェブサイトがあり、そのサイトの[開発経緯](https://e8y.net/blog/2006/12/31/p139.html)には「文章を形態素解析 → 単語を英訳 → 英語をカタカナ読みに翻訳 」していると書いてある
– 日本語文の形態素解析にはMeCabを利用しているそう。COTOHA APIを使って作ったらどうなるだろうか、という単純な思いつき# COTOHA APIについて
– https://api.ce-cotoha.com/
– 文の形態素解析や固有表現抽出などの自然言語処理や音声処理をRESTなAPIでやってくれるAPI
– ひととおりに触ってみて、非常に精度がよく、アイディ
COTOHA APIだけでおじさんになろう
# はじめに
– 読みやすさ重視のため、本文におじさん構文は登場しません。期待された方には深くお詫び申し上げます。
– また、デモサイトやバックエンドに関することは後日別記事にしようと思います。
– 前提知識 => JavaScriptのみ(!)
– 記事中に登場するコードは、axiosとfsが動くnode環境ならコピペで実行可能です。COTOHAの気軽さをお試しください。
– 筆者は趣味でコードを書く大学生です。動けばいいやの精神が強いのですが、ITの世界に進むならこれじゃあかんやろと思っているので、コードにとどまらずいろいろご指摘くだされば幸いです。# おじさん:wink:と一緒:kissing_heart:に考えよう:thinking:
**普通の文章を入れたらその内容がおじさん構文になったらおもしろくね?**
ということで[COTOHA API](https://api.ce-cotoha.com/)のみを使って[デモページ](https://storage.googleapis.com/vue-oji-cotoha/index.html)を作ってみました。
#
事故を出さない虎の巻
「機能は追加(修正)する」「事故も起こさない」。 「両方」やらなくっちゃあならないってのが「エンジニア」のつらいところだな。 覚悟はいいか?オレはできてる。
# 事故の定義
ここで述べる事故とは、ユーザのサービス利用を妨げる事象、サービスの信頼が失われる事象を指す。
事故足りうる事象に次のものが挙げられる。– インフラ障害(ネットワーク障害、サーバ障害)
– DB障害(データ不整合、デッドロック)
– 脆弱性(情報漏えい、インジェクション、改ざん、不正アクセス)
– メール・SNSの誤送信
– 実装バグ(二重課金、サーバエラー、操作不能、意図しない動作)事故足り得る前提として1つ目に規模の問題がある。10人が使ってるサービスの障害と100万人が使ってるサービスの障害を比較するのであれば、明らかに後者のほうが重大な事故である。次にサービス全体へ影響を与えた障害なのか、ごく一部のユーザにのみ影響を与えた障害なのか事故の規模を考慮する必要がある。
(あまりにも規模が小
lamda, api gateway使って、クライアントに値を返すなど
主に自分用メモ。
client->api gateway->youtube apiとかやりたい。
参考: [Amazon API Gateway とは?](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/welcome.html)
# まずlamda, api gaytewayを触ってみる
下記を見ればだいたいわかる。
[ゼロから作りながら覚えるAPI Gateway環境構築](https://dev.classmethod.jp/cloud/aws/getting-start-api-gateway/)lamdaでのコードをローカルで作る際にはこちらを参考にした。
https://qiita.com/toshihirock/items/d28505442526e0ae7793# 次にapi gateway->youtube apiをやってみる
ココやる上で、手元ではうまくresponse返ってきてるが、lamdaのところではresponseがnullになってて、なんでだろうとしていた
npmパッケージ公開の手順
プログラミング歴半年の素人が書いています。
間違いのないようご自身でも良く調べた上でお願いいたします。
以下の記事を参考にさせていただきました。
https://qiita.com/TsutomuNakamura/items/f943e0490d509f128ae2# npmにサインアップ
まずはnpmの公式サイトから、会員登録しましょう。
https://www.npmjs.com/
# npm ユーザの作成
ターミナルからユーザー情報を登録します。
“`bash
$ npm set init.author.name “Ai Uehara”
$ npm set init.author.email “ai-uehara@example.com”
$ npm set init.author.url “http://qiita.com/aiuehara”
$ npm adduser # 会員登録情報の入力
“`# npmパッケージの作成
`npm init`を実行すると`package.json`ファイルが作成され、npmパッケージとしてディレクトリを管
Node.jsの非同期処理をPromiseから理解しようとしてみた
# はじめに
今回は、Node.jsの非同期処理について、自分の備忘録も兼ねて記事を作成しました。
私はJavaScriptの言語仕様なんかをあまり知らない状態でNode.jsを触ったせいで、非同期処理に関する部分ではまり、多くの時間を無駄にしてしまいました。
かなり初歩的な内容かもしれませんが、勉強した内容をまとめます。
# 同期処理とは?
**上から順番にプログラムが実行されていくこと**です。
「上から順番に」という言葉が適切かどうか分かりませんが、「一つ一つの処理が、一個前の処理の終了をまって処理されていく」っていう説明よりは個人的に分かりやすい気がします。
コードにすると、下記の通りです。
“`js
console.log(1);
console.log(2);
console.log(3);
console.log(4);
console.log(5);
“`実行結果は、下記のようになります。
“`js
1
2
3
4
5
“`# 非同期処理とは?
同期処理ではないものが非同期処理なので、**上から順番にプログラムを実行されないこと**と
Vue.jsプロジェクトのセットアップ
Vue.jsのプロジェクトを最初から作る手順を紹介します。
### 前提条件
– npm、yarnがインストール済みであること### @vue/cliのインストール
グローバルに@vue/cliをインストールしてvueコマンドを使用できるようにします。“`bash
$ npm install -g @vue/cli
“`### vueプロジェクトの作成
“`bash
$ vue create project-name
“`
“`bash
? Please pick a preset: (Use arrow keys)
❯ default (babel, eslint)
Manually select features
“`### 開発環境の起動
“`bash
$ yarn serve
“`
起動後、ブラウザからhttp://localhost:8080/で表示できます。### production用build
“`bash
$ yarn build
“`
成功すると、distディレクトリにファイルが作られます。
express-generatorでアプリを作成したらする事
#モジュール読み込むモジュール
* express-session
* express-validator
* mysql
* knex
* bookshelf#インストール方法
“`bash
npm install –save モジュール
“`#app.jsの追記
“`javascript
var bodyParser = require(‘body-parser’);
var session = require(‘express-session’);
var validator = require(‘express-validator’);app.use(validator());
var session_opt = {
secret: ‘keyboard cat’,
resave: false,
saveUninitialized: false,
cookie: {maxAge: 60 * 60 * 1000}
};
app.use(session(session_opt));
“`routesの中に新しくjsのファイルを追加する場合は
3分で分かる。MERNスタックを簡単に説明してみる
MERNスタックの仕組みと、参考になるチュートリアルを提供する記事です。本当に重要な部分のみを扱いました。
## MERNスタックとは
**MongoDB, Express, React.js, Node.js**の4つを使ったソフトウェアハンドル。Webアプリ開発に用いられる。仮に、**React.jsではなく、Angular.jsを使う場合、MEANスタック**となる。
MongoDB:ドキュメント志向のNo-SQLデータベース。データの保存などに使う。DBは、データベースの意。
ExpressJS:Node.jsのフレームワーク。Node.jsの機能と一緒に使う事で、バックエンドの構築が出来る。
ReactJS:単一ページWebアプリのUIを作成するUIコンポーネントを構築出来る。アプリケーションのView部分を担っている。
NodeJS:サーバーサイドでも動くjavascriptってカッコイイし楽だよね、と覚えておこう。## 何が良いのか
フルスタックエンジニアを名乗りたい人は、実はjavascriptが書ける時点で完結できてしまう。企業側から捉えると、サーバーサイド
Sequelize(PostgreSQL)で月次の集計を行う
例えば、特定の会社に所属するアカウントの新規作成数を月次で集計したい場合(そんな状況があるのかどうかはさておき)
想定結果
|month|cnt|
|—-|—-|
|2020-03|10|## PostgreSQL
“`sql
SELECT
TO_CHAR(created_date, ‘YYYY-mm’) AS month,
COUNT(user_id) AS created_cnt
FROM users
WHERE company_id = 1
GROUP BY month
“`## Sequelize
“`js
const sequelize = require(‘sequelize’);
const userCtrl = require(‘../models/userCtrl’)
…
const res = await userCtrl.findAll({
attributes: [
[sequelize.fn(‘to_char’, sequelize.col(‘created_date’), ‘YYYY-mm’), ‘month
Sessionを改めて勉強する
Sessionを利用するときはライブラリを使ってばかりで、中身をきちんと理解していなかったのでプレーンなNode.js/TypeScriptを使って勉強してみます。
## コード
じゃあ早速Node.jsでコードを書いていきます。“`typescript:
import { IncomingMessage, ServerResponse } from ‘http’;const http = require(‘http’)
const session = new Map>();
let id = 0;// CookieをMap型に変換する
const getCookies = (req: IncomingMessage): Map=> {
if (!req.headers.cookie) return null;let cookieMap = new Map
();
req.headers.cookie.split(‘;’).forEac
2020年から始めるAzure Cosmos DB – Node.js で CRUD アプリを作る
![th.jpeg](https://www.bing.com/th?id=OIP.yovZnkelJ4W3sSoRk-oQtwHaD4&pid=Api&rs=1)
# この記事について
本記事は、2020年3月6日 (米国時間) にて、Azure Cosmos DB に新しく Free Tier (無償利用枠) が登場したことに伴い、改めて Azure Cosmos DB を色々と触っていく試みの 2 回目です。
今回は、[Microsoft Docs][RefLink1] のチュートリアルを参考に、Express.js を使って、Azure Cosmos DB に CRUD を行う 簡易な Web アプリケーションの作成および実行を行います。
※ Express.js について知りたい方は、以下の記事を参照してください。– [要チェックな10個の Node.js フレームワーク][RelLink2]
# 対象読者
– Azure Cosmos DB について学習したい方
– Azure Cosmos DB を使ってみたい方
– Node.js で Azure Cosm
既存サイトのPWA化とPush通知基盤を作る(2) – Firebase Cloud Messaging(FCM) + Cloud Functions + Cloud Firestoreで配信基盤を作る
# 概要
[前回の記事](https://qiita.com/dnrsm/items/85e9b520747804945841)からの続きで、この記事では以下について書きます。– プッシュ通知を受信できるようにする
– プッシュ通知の配信基盤をFirebaseで構築する# Firebaseでプロジェクトを作る
FCMを利用するためにFirebaseでプロジェクトを作成します。以下の画面からプロジェクトを追加します。
3ステップ入力する画面が出てくるので、それぞれ入力していきます。
![firebase_add.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/243815/dd552dab-0833-19f4-4758-b9e23d83be7b.png)プロジェクトを作成すると下記に画面に遷移するので、ウェブ用アプリを追加します。
![app.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/243815/ce
nodeの実行バージョンをプロジェクトごとに自動切換え
# 背景
nodeを使用した開発においてプロジェクトごとにnodeのバージョンを分けなければいけないことがある。こういった状況において人が管理するとあっさり記憶をなくして管理にあれこれ無駄の時間を浪費してしまう。本問題を解決するために表題の解決策を実施する。なお、本文章は文末にある参考ページを参照したうえで一つの文書としてまとめたものである。参考ページそれぞれの文章も非常によくまとまっているため閲覧するとより理解が深まる。# 環境
本記事では以下の開発環境で構築を行い、正常に動作することを確認している。* Windows 10 64bit + WSL Ubuntu 18.04 LTS
* Bash 4.4.20 (WSL Ubuntu)WSLとはWindows Subsystem for Linuxの略称であり、Windows上でLinuxカーネルを一つのプロセスと扱えるものである。Linux系システムで動作するアプリケーションを開発をするときは開発ツール類はLinux準拠のものを使用したほうが開発しやすいためWSLを導入することをおすすめする。今回の文章で紹介するn
TypeScript入門 Tips
### 環境
“`
npm list -g typescript
/Users/yuta/.nodebrew/node/v10.17.0/lib
└── typescript@3.8.3
“`“`
tsc –version
Version 3.8.3
“`### 怒られた
– コード“`
function waite(duration: number) {
return new Promise(resolve => {
setTimeout(()=> resolve(`${duration} ms passed`), duration)
})
}
waite(100).then((result) => {}) //resは{}
“`– 愛のメッセージ
“`
‘Promise’ only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `l
Node.js: worker_threadsのスレッド間通信は、child_processのプロセス間通信の2〜11倍速い。
Node.jsでもマルチスレッドプログラミングができるworker_threadsというモジュールがあります。
* worker_threadsの概要はこちらを参照→ [Node.js: CPU負荷で3秒かかっていた処理を「Worker Threads」で1秒に時短する – Qiita](https://qiita.com/suin/items/bce351c812603d413841)
語弊がありますが似たようなモジュールにchild_processというものもあります。本稿では、worker_threadsとchild_processをワーカー間通信の速さという観点で比較していきます。
## 本稿でわかること
* child_processとworker_threadsどっちの通信速度のほうが速いか?
## child_processは古参モジュールとして、マルチコアでの分散処理を支えてきた
worker_threadsは比較的新しいモジュールで、スレッドがNode.jsに導入される以前は、マルチコア環境のリソースを活かすには、Node.jsでは複数のプロセスを起動して