- 1. 6. Koa2を使ってWebページを作成しよう ~validatonで検証~
- 2. firebase login で “Assertion failed: new_time >= loop->time, file src\win\timer.c, line 37″と出てコケる
- 3. firebase-toolsを8系にバージョンアップしたときにwebpackのビルドがコケた話
- 4. node+dockerでbcryptしたら、エラーおきた
- 5. 最短工程でubuntuにnodenvをインストールする
- 6. Qiita初心者がまずタグ付けしたらよい言葉とは?
- 7. QiitaAPIで20年投稿のストック数が多い記事のタグ情報を調べてみた
- 8. Qiitaって誰向けなの?レベル別投稿を可視化してみた
- 9. Node.jsでDurable Functionsを使うなら、入出力はObjectにした方が安心かもという話
- 10. teratermで2048を遊ぶ
- 11. npm-scriptsをnpm-run-allで用途や環境毎に書く際の小技
- 12. 5. Koa2でWebページを作成しよう 〜アカウント登録〜
- 13. Symbol testnet bootstrap v0.10.0 自動構築 shellscript
- 14. WSL上でnodenvをインストール、任意のバージョンを有効化
- 15. 自作npmコマンドの作成方法
- 16. 初心者が今はやりの技術を調べてみた
- 17. anyenv and Node.js 設定
- 18. textlintをnode.jsで動かす
- 19. node.jsで起動したtextlintに問い合わせる
- 20. 森から木へと向かうコーディング手順
6. Koa2を使ってWebページを作成しよう ~validatonで検証~
## 記事一覧
* [第一回 Koa2の環境を構築する](https://qiita.com/MEDICE-NOTE/items/0c0d18cf01bc4ae50c05)
* [第二回 Hello World!!を表示する](https://qiita.com/MEDICE-NOTE/items/6260a7a58bc0c3303de0)
* [第三回 koa-routerでGETパラメーターを取得する](https://qiita.com/MEDICE-NOTE/items/bb363d091bff59345da7)
* [第四回 koa-bodyでPOSTパラメーターを取得する](https://qiita.com/MEDICE-NOTE/items/b630748133c954a50ec1)
* [第五回 アカウントを登録してログインを検証する](https://qiita.com/MEDICE-NOTE/items/1232550deba4d955a928)## 概要
今回は、入力値のバリデーションの実装を行います。
また、前回の続きとして進めて行くので、上手くいかない場
firebase login で “Assertion failed: new_time >= loop->time, file src\win\timer.c, line 37″と出てコケる
# firebase login で “Assertion failed: new_time >= loop->time, file src\win\timer.c, line 37″と出てコケる
Intelのice lake chipを搭載したwindows 10のパソコンで発生する、nodejs内のバグが原因のようです。
node v14.6.0で修正のパッチがあたっているので、それ以上のバージョンにアップデートすれば解決します。
Github
Assertion failed: new_time >= loop->time #1633
https://github.com/libuv/libuv/issues/1633
> Newest Node release, Node v14.6.0 contains the fix for this. Give it a spin.nodeのバージョンを変えたくない人は、好きなバージョンに下記のパッチを自分で当ててビルドすれば動くようです。
https://github.com/libuv/libuv/commit/79674
firebase-toolsを8系にバージョンアップしたときにwebpackのビルドがコケた話
### 経緯
個人開発でフロントエンドにVue.js、バックエンドにFirebaseを利用したアプリケーションを作っています。(気が向いたときに作業しているので中々進みませんが。。)
最近ふと思い立ってnpmパッケージのバージョンを上げようと思ったところ、`firebase-tools`のバージョンアップに苦しんだので供養しておきます。
※バージョンアップ前は v7.3.2 でした。
※`firebase-tools`v8.0.0のリリースは2020年4月1日なので、投稿時点で約半年経過していることになります。。### `firebase-tools` の使いどころ
`firebase-tools`はコマンドラインツールとして、プロジェクトの設定やデプロイなどを実行できます。
しかしコマンドラインから操作するだけではなく、[webpackでFirebaseのプロジェクトを切り替える方法](https://medium.com/google-cloud-jp/webpack-multiproject-firebase-55d5bd8beb5d)で紹介されているようにNo
node+dockerでbcryptしたら、エラーおきた
# dockerとnodeの環境でbcryptライブラリを使ったときのエラー
dockerでnodeでbcryptを使うとエラーが起きます。
node_modulesをコピーしてしまうとエラーが起きるので、.dockerignoreを使いましょう## dockerignoreを使いましょう
“`bash:tree
.
├── Dockerfile
├── app.js
├── node_modules
├── package-lock.json
├── package.json
└── .dockerignore ←これを追加
“`“`:.dockerignore
node_moduels/
“`### ちなみにDockerfileはこんな感じ
“`
FROM node:12
WORKDIR /usr/src/appCOPY package.json ./
COPY package-lock.json ./
RUN npm installCOPY . .
CMD [ “npm”, “start” ]
“`
最短工程でubuntuにnodenvをインストールする
“`
$ uname -a
Linux geo-functions 5.4.0-1021-gcp #21-Ubuntu SMP Fri Jul 10 06:53:47 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
“`“`
git clone https://github.com/nodenv/nodenv.git ~/.nodenv
git clone git://github.com/nodenv/node-build.git ~/.nodenv/plugins/node-build
echo ‘export PATH=”$HOME/.nodenv/bin:$PATH”‘ >> ~/.bash_profile
echo ‘eval “$(nodenv init -)”‘ >> ~/.bash_profile
source ~/.bash_profile
nodenv install 12.18.2
“`以上!!!!!
Qiita初心者がまずタグ付けしたらよい言葉とは?
#目的
どのタグ(ほぼ言語)が最初にフォローされやすいのかを確認する。
先に登録するものが、Qiitaを使いたいというきっかけになるものなので、
本当に興味があることではないかという推測に基づく。#方法
あるグループのユーザリストを取得(プログラム外)し、
APIを使って新しい順にユーザ別にタグを取得。
認証情報がないとAPIをたたける数が少ない。
新しいものの番号を古い順に変換し、登録5つ目までのタグをランキング化(プログラム外)#コード
“`js:get_qiita_data_tags.js
//package require
const axios = require(“axios”);
const fs = require(“fs”);
const csvStr = require(“csv-stringify/lib/sync”);
const csvParse = require(‘csv-parse/lib/sync’);//認証情報の取得 外から渡してる
const token = process.argv[2];//QiitaAPIで
QiitaAPIで20年投稿のストック数が多い記事のタグ情報を調べてみた
#はじめに
ほとんどプログラミング経験のない初心者(VB.Netを少しかじった程度)ですが、最近「モノをつくる」学習の場を与えて貰えたので、自分なりに色々調べて、JavaScriptにチャレンジしてみました。記事の投稿も初で、初めて尽くしで戸惑ってます。。
ソースコードがキレイじゃないのもご愛敬。#目的
Node.jsとQiitaAPI(+axios)を使って今の自分に何ができるか考えてみた。
で、今回は、「今年(2020年)に投稿された記事で、ストック数の多い記事のタグってどんなの?」を調べてみました。
(ストック数が多い記事として、今回はストック数が300以上の記事を対象としてみた。)#コード
“`JavaScript:QiitaAPI.js
// axiosモジュールの読み込み
const axios = require(‘axios’);
axios.defaults.baseURL = ‘https://qiita.com/api/v2’;let array1 = []; // タグ名用
let array2 = []; // カウント用// main
Qiitaって誰向けなの?レベル別投稿を可視化してみた
#はじめに
とある理由からQiitaを利用することとなったが、正直Qiitaの読み方も知らない(たぶんキータ)、どんな人がどういった目的で利用するツールなのか正直何だかわかってない、アカウント作りたてほやほやの初心者が投稿する。
#目的
Qiitaのレベル別利用者の分布を可視化し、どのような人にとって便利なツールであるかを考察する。#コード
###初級者、中級者、上級者タグをフォローしている人数を取得する
“`
const axios = require(“axios”);async function main() {
let response = await axios.get(
“https://qiita.com/api/v2/tags/%E5%88%9D%E5%BF%83%E8%80%85”
);
console.log(response.data.followers_count);
}main();
“`#実行結果
初級者:4476件
中級者:0件
上級者:0件#考察
中級者、上級者タグが存在していなかったため、タグ
Node.jsでDurable Functionsを使うなら、入出力はObjectにした方が安心かもという話
注: 本記事は2020/09/28時点のものであり
https://www.npmjs.com/package/durable-functions の v1.4.3
https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DurableTask/ のv2.2.2
https://github.com/Azure/azure-functions-nodejs-worker のv1.2.2
で検証及び再現した事象です。今後の変更及び修正により挙動が変わる場合があるため、バージョンが変わっていた場合各プロダクトのIssueなどを参照してください。
## 結論だけ知りたい人向け
* アクティビティ関数の入出力バインディングに文字列やbooleanなどの値を渡すと意図しない変換が行われる
* オブジェクトでラップして渡せば基本的には問題ないとりあえずこれを守っておけばハマることは少ないと思います。
## 起こる原因
Durable Functionsでは入出力バインディングのデータをJSON文字列としてや
teratermで2048を遊ぶ
teratermなどのターミナルソフトを使うときは限られています。ネットワークなりサーバーなりいじる人ぐらいしか使いません。
暇なときはあります。ビルド、デプロイ、コンフィグリストア、例を挙げればでるわでるわ。そういう時はターミナルソフトで遊びたくなります。そんなわけで2048をsshで飛ばせるようにしました。
![play.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230043/930390a2-9883-3e55-ab79-60c16a567762.gif)
[thanks!]( https://github.com/bestvist/2048.node)
# 使い方
ローカルで動かす場合
“`bash
git clone https://github.com/misogihagi/node-ssh-2048.git
npm i
node 2048
“`そして
localhostにでてきたポートにsshしてください# デモ
![de.gif](https://qii
npm-scriptsをnpm-run-allで用途や環境毎に書く際の小技
– Web開発の際のタスク処理として、`package.json`内に記述して利用できる[npm-scripts](https://docs.npmjs.com/misc/scripts)を利用しています。
– またその際に、複数処理の直列化や並列化に便利な[npm-run-all](https://github.com/mysticatea/npm-run-all)を利用しています。
– 今回はそれを用いた用途や環境毎への記述を、明確かつ柔軟にする方法を記録します。## 結果
– 先に結果の記述を示します。以下の通りです。“`json
{
“scripts”: {
“build” : “run-s build:{sass,ts}”,
“build:sass” : “sass input.scss output.css”,
“build:ts” : “tsc main.ts”,
“watch” : “run-s watch:{sass,ts}”,
“watch:sass” : “sass –watch in
5. Koa2でWebページを作成しよう 〜アカウント登録〜
## 記事一覧
* [第一回 Koa2の環境を構築する](https://qiita.com/MEDICE-NOTE/items/0c0d18cf01bc4ae50c05)
* [第二回 Hello World!! を表示する](https://qiita.com/MEDICE-NOTE/items/6260a7a58bc0c3303de0)
* [第三回 koa-routerでGETパラメーターを取得する](https://qiita.com/MEDICE-NOTE/items/bb363d091bff59345da7)
* [第四回 koa-bodyでPOSTパラメーターを取得する](https://qiita.com/MEDICE-NOTE/items/b630748133c954a50ec1)## 概要
今回は、アカウント登録、ログイン検証の実装を行います。
当記事ではログインは検証に留め、ログイン状態の保持は後の記事で進めていく予定です。
また、前回の続きとして進めて行くので、上手くいかない場合は以前の記事をご覧ください。アカウントの登録やログインに必要なデータベ
Symbol testnet bootstrap v0.10.0 自動構築 shellscript
いつもながら ”Tera Term” を使用してます
借りたサーバにrootでログイン
vi b
“i” を入力 編集モードにする
下記の scriptをコピー ペースト下記をコピペ
#!/bin/bash
#new username
echo “please input new username”
read username#new sshd port
echo “please input new sshd port”
read sshd#ip
echo “please input ip”
read ip#friendly_name
echo “please input friendly_name”
read friendlyname
#———-#usernameset
adduser $username
gpasswd -a $username sudo#sshdset
WSL上でnodenvをインストール、任意のバージョンを有効化
# nodenvを取得
参考 : [https://github.com/nodenv/nodenv#basic-github-checkout](https://github.com/nodenv/nodenv#basic-github-checkout)
“`sh
git clone https://github.com/nodenv/nodenv.git ~/.nodenv
cd ~/.nodenv && src/configure && make -C src
“`# 環境変数を設定
上記サイトで
“`txt
2.Add ~/.nodenv/bin to your $PATH for access to the nodenv command-line utility.
For bash:
$ echo ‘export PATH=”$HOME/.nodenv/bin:$PATH”‘ >> ~/.bash_profile
“`と説明されているので、
“`sh
echo ‘export PATH=”$HOME/.nodenv/bin
自作npmコマンドの作成方法
`my-npm-command`とかで自作npmコマンドを蹴る方法のメモ
Node.js 12.18.3、npm 6.14.8で確認
## 手順
– Node.jsのプロジェクトを作成
– `npm init`とか適当に
– package.jsonに以下を追加“`json
“bin”: {
“my-npm-command”: “./index.js”
}
“`– Node.jsのCLIを作成
– 以下はサンプル“`javascript:index.js
#!/usr/bin/env node
console.log(‘my-npm-command’);
“`– `npm link`を叩き、`my-npm-command`を実行して動いてればOK
– 外したくなったら`npm unlink`
初心者が今はやりの技術を調べてみた
# 目的
今回、Node.jsを使ってQiitaAPIを使っていろいろやってみようということで、今、初心者向けには何が流行っているのかを調べてみました。# 調査方法
QiitaAPIを使って、「初心者」という単語を含んでいる記事を検索しました。
プログラム実行時点(2020年9月27日11時30分時点)で投稿時間が新しいものから上位100件を対象としています。# コード
“`Javascript
// axiosモジュールを読み込む
const axios = require(‘axios’);// main()関数を定義する
async function main() {
// QiitaAPIで「初心者」という単語で記事を検索する
let response = await axios.get(‘https://qiita.com/api/v2/items?per_page=100&query=’ + encodeURIComponent(‘初心者’));
// 結果を出力する
for (let i=0; i
anyenv and Node.js 設定
TypeScript で React 開発を行うための環境構築。
Node.js を anyenv で選択可能にする。## 環境設定
### Homebrew update(2020/09/21 Mon)
“`
$ brew –version
Homebrew 2.4.3
Homebrew/homebrew-core (git revision c0f2a; last commit 2020-07-06)# To update homebrew itself
$ brew update$ brew –version
Homebrew 2.5.1
Homebrew/homebrew-core (git revision a0a0f; last commit 2020-09-21)
“`### anyenv install
“`
# install anyenv
$ brew intall anyenv# すでにインストールされていたため、upgrade
$ brew upgrade anyenv$ anyenv –version
anyenv
textlintをnode.jsで動かす
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/330873/136c1dcb-32d6-9ffa-5515-b00c8191ba6f.png)
“`bash
$ mkdir textlint-test
$ cd textlint-test
$ npm init –yes
$ npm install –save-dev textlint
$ npm install –save-dev textlint-rule-no-todo
$ npm install –save-dev textlint-rule-max-kanji-continuous-len
$ npm install –save-dev express
$ npm install –save-dev ejs
$ npm install –save-dev cors
$ mkdir views
“`“`js:app.js
// vim:set ts=2 et:
// https://qiita.com
node.jsで起動したtextlintに問い合わせる
手抜き
## nginxでnode.jsの8080ポートへ
`/`つけるかつけないか要注意
https://www.xmisao.com/2014/05/09/nginx-proxy-pass.html
>http://example.com/name/foo
proxy_pass http://127.0.0.1/; -> http://127.0.0.1/foo
proxy_pass http://127.0.0.1; -> http://127.0.0.1/name/foohttps://stackoverflow.com/questions/33426771/nginx-proxy-pass-gives-extra-slash
– `location /wp {`でなく`location /wp/ {`“`nginx:/etc/nginx//etc/nginx/default.d/textlint.conf
location /textlint/ {
proxy_redirect off;
proxy_set_header
森から木へと向かうコーディング手順
##前置き##
コーディングの際、個人的には普段から私が実践している方法なのですが
意外と実践していない人を多く見かけるので今回は記事にしてみました。仮に、商品一覧を表示する画面のサーバーサイドを実装するとします。
仕様書は以下のような、よくある内容のものです。**チェック処理**
|種別|項目|内容|
|:—-:|:—-:| :—-:|
| 必須|ユーザーID|
| 必須|商品ID|
| 桁|ユーザーID| 1~3桁|
| 桁|商品ID| 1~3桁|**取得条件**
|値|条件|テーブル|カラム|
|:———–:|:———–:|:———–:|:———–:|
| リクエスト.ユーザーID|=|ユーザーマスタ|ユーザーID|
| リクエスト.商品ID|=|商品マスタ|商品ID|さて、このような仕様をソースコードに起こしていくとします。
千差万別だとは思いますが、
みなさんはどういう手順を踏んで実装に移して行きますか?##木から森##
まずはよくみかける手順です①とりあえず処理を羅列
`