Node.js関連のことを調べてみた2021年03月02日

Node.js関連のことを調べてみた2021年03月02日

Node.jsでcsvファイルを読み書きする

# はじめに
node.jsでcsvを読み書きしたい時があったので,備忘録としてまとめようと思い,この記事を書きました。
streamを使ったやり方など,色々と方法があったのですが,今回は `fs.readFileSync` と `fs.writeFileSync` を用いた方法でやってみました。

# 大まかな流れ
1. 必要なパッケージのダウンロード
2. 読み込むcsvファイルの作成
3. 実行ファイルの作成
4. 実行

# 必要なパッケージのダウンロード
今回は, `csv` というモジュールを使用しますので,以下コマンドを使用してダウンロードします。

“`console
$ npm install –save csv
“`
– `–save` : package.jsonのdependenciesに追加される

# 読み込むcsvファイルの作成
先頭の行に,カラム名を入れておきます。

“`csv:input.csv
name,age,gender
taro,30,man
jiro,28,man
hanako,20,woman
“`

# 実行ファイルの作成

元記事を表示

Express.jsでファイルダウンロード

Express.jsで画像などのファイルをダウンロードする方法です。
本記事の内容は以下のドキュメントに書かれている内容の説明になります。
https://expressjs.com/ja/api.html

## 実行環境
express.js 4.17.1
MacOS 10.15.7

## 方法その1 簡易的な方法

“`typescript
import express from ‘express’;

export const router: express.Router = express.Router()

router.get(‘/download’, (req, res) => {
res.download(‘images/どね.jpg’)
})
“`
`download`メソッドを使います。ファイルパスを引数に取ることになるので、一度ファイルをストレージのどこかに置く必要があります。すでにBuffer形式になっている場合は少し面倒ですね。

https://expressjs.com/ja/api.html#res.download

## 方法その2

元記事を表示

TypeScript(Node.js)でテキストファイルを指定行数ごとに分割する

テキストファイルを分割したいときってありますよね。
例えばSQLの`INSERT INTO hoge VALUES`に続く行が数万行ある時とか (そんなにない)

個人的に上記をやりたいタイミングがあって、npmでいい感じのモジュールを探したんですが
意外とテキストファイルを「指定した行数で」区切ってくれるやつが無かったので泣く泣く自分で作りました。

あ、Nodeです。

Streamで順次処理してるので、でっかいファイルでもヒープアウトしないはず!

# Usage

“`typescript:hoge.ts
import { FileSplitter } from “path/to/file-splitter”

// your-file.txtを100行ごとに分割する
const fileSplitter = new FileSplitter(“/path/to/your-file.txt”, 100)

// 分割開始!
fileSplitter.start()
“`

# 御託は良いからコードを見せろ

“`typescript:file-splitter.ts
im

元記事を表示

npmとYarnのまとめ記事、Node.jsを添えて

# 目的
Yarnやnpm(node package manager)に関する情報を要点を抑えて簡単にまとめる。
Yarnやnpmに関する記事は既にたくさんあるので参考になりそうな記事もまとめて網羅的に調べやすい記事にしたい(いろいろ動きがあれば更新していく)。

# [npm](https://www.npmjs.com/)?

– npmはNode.js(後述)のパッケージ管理ツール。
– 必要なパッケージをインストールする際に、そのパッケージが動くために必要な他のパッケージも合わせてインストールすることができる。
– モダンな開発を行いたいなら必須。

### 参考記事
[フロントエンド開発の3ステップ(npmことはじめ)](https://qiita.com/hashrock/items/15f4a4961183cfbb2658)
npmの導入方法などのシンプルでわかりやすい記事。

# [Node.js](https://nodejs.org/ja/)?

– ブラウザ上でしか動けなかったJavaScriptをパソコン上で動かせるようにする。
– JavaScript実行環境

元記事を表示

DenoがTypeScriptの使用をやめる5つの理由

![deno-will-stop-using-typescript.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320164/6400c877-fb5e-5edb-2783-f15c5c45b773.png)
# 前書き
**この記事は翻訳記事になります。** :point_up_tone1:

近年、JSで書かれてるプロジェクトをTSに書き直すことが業界内で一種の風潮になって、
この記事で敢えてTSからJSに戻そうとする事例が目新しいと思ったので、翻訳してみました。

>出処: [5 reasons why Deno will stop using TypeScript – StartFunction](https://startfunction.com/deno-will-stop-using-typescript/)
原作者: [eliorivero](https://en.gravatar.com/eliorivero)
Denoの紹介:
V8 JavaScriptエンジン及びRustプログラ

元記事を表示

[WEB]ビュー(画面側)のコードに入れる、動的生成の構文 環境別まとめ

# はじめに
webアプリケーションの実装について、ビュー(画面側)のコードには環境毎に独自の構文を埋め込むことで、webページを動的に生成する機能があります。
しかしこの構文が環境によって微妙に異なります。
いままで色々な環境での開発を経験する中で頭の中がごちゃごちゃになりそうなので、一度種類ごとに構文をまとめてみます。

## 1.JSP(Java系各種フレームワーク、サーブレット)
“`jspFile.jsp

<%=(変数) %>


<% (処理をここに書く) %>


<%@ (文をここに書く) %>


<%-- コメント文字列... --%>
<% /** コメント文字列... **/ %>


${式}
“`
## 2.Razor = .cshtml(ASP.net系)
“`razorFile.cshtml


@変数


@{ (処理をここに書く) }

元記事を表示

Google Sheet API(Node.js利用)で、複数シートを順番に生成できずハマったので、解決コードを晒してみる

Google Sheet API(Node.js利用)で、複数のシートを「1,2,3,4…」と並べて生成したいのに、
async,awaitで生成しても、シートが2,4,3,1みたいに順不同になってしまうのを、
どう回避できるかなかなかわかりませんでした。

辿り着いた解決策は、
array.reduceとPromiseを組み合わせて、thenでつないでいき、
Promise内でsetTimeoutをする、というものでした。

[reduce](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)に慣れていなかったので、
各引数の理解(特に第1とinitialValue)と、thenの理解、
また、初期値にPromice.resolve()を渡すあたりが難しかったです。

以下、実際に動くようになったコードです。
(SheetAPIのラッパークラスを自作していますので、よしなに読み替えてください)

“`js
import {Sheet} from ‘

元記事を表示

Node.jsでjQueryを使う方法

現在、jueryとNode.jsを勉強しています。
それぞれ別々にしていましたが、同じアプリケーションに2つとも入れれば効率いいんじゃない?と思いやってみました。

# 実践
“`java:top.ejs


//省略



“`

“`:ターミナル
$ npm install express ejs
“`

“`app.js
const express = require(‘express’);
const app = express();
app.use(express.static(‘public’));

//以下省略
“`

“`public/script.js
$(function(){
//行いたい処理(jQueryの内容)
});
“`

これでjQueryが使えるようになります。

注意

元記事を表示

【Macでcronを使ってNode.jsプログラムを定期実行させるまで】

cronせっかく勉強したのに、Macだとlaunchd使いましょうとかいわれてなんやそれってなってます。
***
**フルディスクアクセスにターミナル.appと、crontabを追加する。**

1,フルディスクアクセスにcrontabを追加
「システム環境設定」→「セキュリティとプライバシ」→「フルディスクアクセス」で鍵を解除 →「+」→「command + shift + G」で /usr/bin/cron/ を入力して開く → crontabを選択して開く

2,フルディスクアクセスにターミナル.appを追加
1と同じように、アプリケーション/ユーティリティ/を開く → ターミナル.appを選択して追加

ここまで行えば、cronを実行できるようになる
***
**crontabにcron文を記述する**

**cronの操作**
crontab -e でvimなどで開ける
crontab -l で記入したcron文一覧を見れる

**cron文**
毎日10時10分にnode ~といったnode.jsファイルを自動実行したい場合

“`bash
10 10 * * * /Us

元記事を表示

【Node.js】npm proxyの使い方

#プログラミング勉強日記
2021年3月1日

#proxyとは
 proxyは、npm configコマンドで使用できる代理(プロキシ)サーバー設定のこと。
 開発中にインターネットでアクセスの制限をされた場合など、セキュリティの問題によってアクセス制限された環境でプロキシサーバーを経由した開発を行うことがある。

#使い方
 npmでプロキシサーバーの設定をするためには、npm configコマンドでproxyを使用する。npm config set proxyと入力することで、npm config機能の一部であるproxyを利用できる。

“`
$ npm config set proxy http://: “`

“`:proxyを解除する方法
$ npm -g config delete proxy
“`

“`:proxy設定の確認
$ npm -g config list
“`

#参考文献
[プロキシサーバーを使う際に役立つ!npm proxyの使い方【初心者向け】](https://techacademy.j

元記事を表示

Reduxの環境を5分で構築しよう!

# Reduxの環境を5分で構築しよう!
Reduxの環境を5分で構築する方法を記します。

## Reduxとは
Redux(リダックス)とは、Reactにおけるコンポーネントの状態を管理する機能を提供するライブラリです。

## 今回のゴール
Node.jsをインストールし、Reactプロジェクトを作成し、ReactプロジェクトにReduxをインストールすること

## OS情報
* Windows10

## 構築手順

1. Node.jsをインストール
[https://nodejs.org/ja/](https://nodejs.org/ja/)にアクセスし、推奨版をダウンロードします。
標準設定でインストールする場合は、デフォルトのまま「Next」をクリックすればよいです。

2. Reactプロジェクトを作成
コマンドプロンプトを開き、任意のディレクトリにReactプロジェクトを作成します。
`npx create-react-app `と入力します。

3. Reduxのインストール
作成したプロジェクトにReduxをインストールします。

元記事を表示

node.jsでデータベースをherokuに接続できないの解決法

“`
Unable to connect to the database: ConnectionError [SequelizeConnectionError]: self signed certificate
“`
上記エラーが出たときloaderに下記コードを追加したら治りました。

“`
dialectOptions: {
ssl: {
require: true,
rejectUnauthorized: false // <<<<<< YOU NEED THIS } } ```

元記事を表示

TypeGraphQLでN+1問題を解決した話

## はじめに
GraphQLをサービスで使い始めて、N+1問題にぶち当たったのでその解決策を紹介する。

## プロジェクト構成
* Node.js
* TypeScript
* Express
* GraphQL(Apollo, TypeGraphQL)

## 実際何が起こったか
DBにはとあるレコードが入っており、それぞれに`userid`を保持している。
`userid`からユーザー名やメアドなどのユーザー情報を取り出すには、別の内部APIに問い合わせる必要がある。

GraphQLのスキーマはこのように定義している。

“`graphql:schema.gql
type Query {
record(id: Int!): Record
records(name: String): [Record!]!
}

type Record {
id: Int!
name: String!
user: User
userid: Int!
}

type User {
userid: Int!
username: String!
}
“`

レコード

元記事を表示

話題のesbuildをさっくりと調査してみた

[ブログからの転載です。](https://blog.hedrall.work/posts/esbuild-2021-02-14)

今大注目のesbuildに関してさっくり調べて見ました。
ゆるめの記事です。

# 調査のきっかけ

私がフロントを本格的に勉強し始めたのは2016-2017年のAngular2が出たころです。モダンフロントエンド開発の選択肢が増え、
PWAが提唱されるなどWEBフロントエンドが一気にリッチ化すると同時にカオス化した時期だったと思います。
つまり、本当に面白い状況だったのですが最近になってその状況も落ち着いてきたと感じている方も少なくないと思います。

昔よくあった、React vs Angular vs Vue論争の熱は冷めたし、
SSRだけでペラペラだった(ドキュメントもダサかったw)Next.jsも2019~2020年の大規模機能拡張でフルスタックフレームワークとして堂々たるツールに成長し、今では画像配信サーバを内臓し、画像の最適化まで面倒をみてくれます。
この背景として、先立って機能拡充が進んでいたNuxt.jsからのいいとこ取りができたところも

元記事を表示

【Node.js】promiseの使い方

#プログラミング勉強日記
2021年2月28日

#基本的な書き方
 promise処理を作るには任意の関数の中で`new Promise()`を返すのが基本となる。

“`js
return new Promise(resolve) {
// 処理を記述する
}
“`

“`js:具体例
function myFunction() {
return new Promise(function (resolve) {
resolve(“Hello World”);
})
}
“`

#thenを使ったメソッドチェーン
 promiseによる非同期処理の結果を取得するにはthenを使ったメソッドチェーンを使用することができる。

“`js
// dataにpromiseの結果が格納されている
// resolve()に設定した文字列になる
myFunction().then(function(data) { console.log(data) })
“`

“`:実行結果
Hello World
“`

#promiseの並列処理
 allメソッ

元記事を表示

Node.js版CCXTでbitFlyerのPrivate APIを使う

# はじめに
ccxt.js経由でbitFlyerの現在のポジション(建玉)を知りたかったのだが、ちょっと調べてもなかった。
詰まったので同様の問題に遭遇した人のためにも解決方法残しておこうと思う。

## コード

“`javascript

const ccxt = require(‘ccxt’)
const bitflyer = new ccxt.bitflyer({
apiKey: env.apiKey, // APIキーを入れる
secret: env.secret // シークレットをいれる
})
bitflyer.privateGetGetpositions({ product_code: ‘FX_BTC_JPY’ }).then(data => console.log(data))
“`

## ちょっと解説
ccxtでPrivate APIを使うには、メソッドの命名に独自の法則を使っている

“`
private + {メソッドがgetならGet、postならPost} + {private APIの名前}
“`

上の例ではGetメソッドで`

元記事を表示

[Node.js][LINE] 毎日 LINE に花粉情報を通知する

# 概要

– [自分の LINE に Ruby で通知を送る](https://qiita.com/QUANON/items/94f8835e923c76188f66)
– [[Ruby][LINE] ごみ出し日に LINE で通知する](https://qiita.com/QUANON/items/ccfe650a30bd6068a5f4)

に引き続き、[LINE Notify](https://notify-bot.line.me/ja/) を使って LINE に通知するシリーズです!

花粉 (デス・パウダー)が辛い季節ですね :disappointed_relieved: 花粉情報が非常に気になる毎日なので、当日の花粉情報を LINE に通知するようにしました。

# 方法

## バージョン情報

– Node.js 14.15.5
– Playwright 1.9.1
– axios 0.21.1

## コード

まず [Playwright](https://github.com/mic

元記事を表示

nodebrewを利用したnodeのインストール

Homebrewを使ってインストール。

“`sh
$ brew install nodebrew
“`

* バージョン確認

“`sh
$ nodebrew -v
“`

* セットアップコマンド。出力されたパスを通す。

“`sh
$ nodebrew setup

# Fetching nodebrew…
# Installed nodebrew in $HOME/.nodebrew
#
# ========================================
# Export a path to nodebrew:
#
# export PATH=$HOME/.nodebrew/current/bin:$PATH <= コイツを記述 # ======================================== ``` ```sh $ vi ~/.bash_profile ``` * インストール可能なバージョンの確認 ```sh $ nodebrew ls-remote ``` * stableをインストール。`install`コ

元記事を表示

【Node.js】promiseの非同期処理について

#プログラミング勉強日記
2021年2月27日
[昨日の記事](https://qiita.com/mzmz__02/items/6b83805bc4917810dfb7)でJavaScriptの非同期処理について扱ったが、今回はNode.jsのpromiseの使い方をまとめる。

#promiseとは
 Node.jsのpromiseは、非同期処理を読みやすいコードで実装できる。
 Node.jsでも使用されるJavaScriptでは、非同期処理のときにコールバック関数を使用する。だが、処理が複雑になるほどコールバック関数が入れ子になってしまい、コードの内容がわかりにくくなる。

#Node.jsでpromiseを使う方法
 まず、promiseをインストールする。

“`
$ npm install promise
“`

 promiseの書き方は以下のようになる。

“`js:文法
// promiseパッケージを読み込む
var 変数 = require(‘promise’);

変数(function (fulfilled, rejected) {
処理内容
}

元記事を表示

オンプレ環境で使えるDiscordの読み上げBotを作りました

# 事の発端

知り合いとのDiscordサーバーでは土日に通話しながらゲームをするときに、テキストチャンネルで発言するのみで喋らない”聞き専”が結構います。
そこでチャットを読み上げてくれる「Shovel」というBotを導入しました。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206651/46d9d2eb-4c27-84d3-7427-3b2b0fb66c15.png)
しかし、土日の夜は非常に人が多いのか、ボイスチャットに呼ぼうとしても呼べない時が何度かあり、そこで自分たち専用のBot用サーバーを用意する案が上がります。

# Raspberry Piを入手
秋葉原に行って、Raspberry Pi4と電源などの一式を入手。
早速、以下の条件を満たす読み上げDiscord Botを探し始めます。

– ラズパイ上で動く
– Dockerでいける(環境を汚したくないため)
– オンプレ環境で使える
– 完結している、クラウドサービスを使っていない(Cloud Text-to-Sp

元記事を表示

OTHERカテゴリの最新記事