- 0.0.1. Node.jsで扱うよく扱うデータ形式の基礎知識
- 0.0.2. Macのターミナルからhttp-serverコマンドを使って Webサイトを検証できるようにした
- 0.0.3. Sequelize で名前を指定してmigrationをrollbackする
- 0.0.4. マネーフォワードクラウド請求書から案件データぶっこ抜いて、Exmentに突っ込み簡易SFA/CRMを行う
- 0.0.5. 同僚の作成したdockerコンテナをbuildする際にコケたポイントメモ
- 0.0.6. え!? わずか3分でローカルにTypeScriptの実行環境を!?
- 0.0.7. 無料でSSR・ホスティング・API鯖を立てれるVercel。GitHub Actionsで自動デプロイ。
- 1. hello
- 1.0.1. MATERIAL-UIのMultiple SelectでChipから選択を解除する
- 1.0.2. 社内ネットワークからIBM Watsonにつながらない
- 1.0.3. 【AWS】【Lambda】 SalesforceのREST APIを呼び出す
- 1.0.4. デプロイコマンドを実行する際に対話形式で確認
- 1.0.5. いまさらNode.js入門
- 1.0.6. JSエコシステムぶらり探訪(2): Node.jsとCommonJS modules
- 1.0.7. nodejsでスクレイピング入門[阿部寛]
- 1.0.8. YOLP の WebAPI で1時間以内の降水予想と雨雲レーダー地図画像を取得する
- 1.0.9. 簡単レシート印刷 receiptline で行間隔を調整してみた
- 1.0.10. 無料でSSR・ホスティング・API鯖を立てれるVercel。TypeScript・ExpressでAPI鯖を立てる。
- 1.0.11. AWS S3 アクセスログの集約化
- 1.0.12. Microsoft Teamsにメッセージと画像を送る(Node.js)
- 1.0.13. Node.jsのHTTPクライアントまとめ2020
Node.jsで扱うよく扱うデータ形式の基礎知識
##JSON
ご存知、[JSON(JavaScript Object Notation)](http://json.org/json-ja.html)形式。
[JSONオブジェクト](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON)は、標準ビルトインオブジェクトなので特別な準備なしで手軽に扱うことができる。###サンプル
“`javascript:JSONの例
{
“browsers”: {
“firefox”: {
“name”: “Firefox”,
“pref_url”: “about:config”,
“releases”: {
“1”: {
“release_date”: “2004-11-09”,
“status”: “retired”,
“engine”: “Gecko”,
“engine_version
Macのターミナルからhttp-serverコマンドを使って Webサイトを検証できるようにした
Macが突然壊れたので新しいMacを購入した。
現在、Webサイトを運営中でそれの更新作業を新しいMacでしようとした時に、ローカル環境で検証できないようになっていた。具体的には、ターミナルでhttp-serverコマンドを打ってもエラーが出てくる。
新しいMacを購入してから環境構築をして無いねんから、そりゃ当然ですね。とうことで、環境構築をすることにしましたが、ちょこちょこ詰まったので、ここに残しておきます。
主にこちらの記事を参考にさせていただきました。
https://qiita.com/standard-software/items/1afe7b64c4c644fdd9e4#とりあえずhttp-server コマンドのインストール
とにもかくにも、まずインストールを試みる“`
% npm install http-server -g
“`しかし、下記応答が。。。
“`
zsh: command not found: npm
“`#command not found: npmと出た時の対処
npmコマンドが使えないよ。とのことなので、以下の
Sequelize で名前を指定してmigrationをrollbackする
“`
sequelize db:migrate:status // でmigration nameの一覧表示
sequelize db:migrate:undo –name// rollback
“`
マネーフォワードクラウド請求書から案件データぶっこ抜いて、Exmentに突っ込み簡易SFA/CRMを行う
SaaSのサービスをAPI同士で繋いで、業務改善アプリ的なものをつくるのが近年の趣味な筆者です。こんにちは。
## マネーフォワードクラウド請求書 is 何?
マネーフォワードクラウドは、freeeと人気を二分する、中小企業やフリーランス向けのSaaS会計システムです。筆者は会社勤務の傍ら副業もしてますので、マネーフォワードクラウド確定申告というのを使って、毎年確定申告をしています。また、関連サービスとしてマネーフォワードクラウド請求書(以下MFクラウド請求書)というサービスもあり、これを使って見積書と請求書を発行しています。
本稿とは別の余談になりますが、なかなかよく出来たサービスですので、請求書発行のサービスを探しておられる方は一度トライアルされてみてはいかがでしょうか。
## Exment is 何?
Exmentは、OSSのWeb DBシステムです。SaaSではありませんが、筆者はLightSail + Dockerというクラウド環境で試験運用しています。
詳しくは下記記事をご参照ください。
– [kintoneクローン? OSSWebDBのExmentをLig
同僚の作成したdockerコンテナをbuildする際にコケたポイントメモ
## 初めに
同僚が作成してくれたnodeのdockerコンテナをbuildする際に何点かコケたポイントがありましたのでメモしてみます。
同様のケースで嵌っている方がいたら参考になれたらと思います!## 前提
__コンテナを作成してくれた人のPC__
Mac Pro
こちらの環境では一発`docker-compose up –build`を流せばbuildとupが通る
__私のPC__
Windows10 Pro
npm –version
6.14.5
数回コケる
__コンテナの構成__
Node→image: node:latest
MySQL→image: mysql:5.7
Nginx→image: nginx:latest## Cannot create container for service mysql: Conflict
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285286/4fe419ee-32b4-0aae-f188-ad9216f737a8.png
え!? わずか3分でローカルにTypeScriptの実行環境を!?
できらぁ!(様式美)
ということでローカルにTypeScriptの実行環境を作ります。すぐできます。
TypeScriptを使うだけなら、[TypeScript playground](https://typescript-play.js.org/)等を使えばいいと思うのですが、「○○のパッケージを試したい。ついでだからTypeScriptも使いたい」という欲張りさんはローカルに環境構築したくなることもあるでしょう。え? codesandbox? 知らんなぁ。
とにかくローカルにTypeScriptの実行環境を作っていきます。ゴールは「コンパイルして出来たjsファイルをnodeコマンドで実行するところ」までです。
# 事前準備
以下は事前に準備できてるとします。出来てない方は適当にググってください。– node, npm(yarn)
# ローカルにTypeScriptの実行環境を作成
ここから本題です。
あと私はyarn派なのでyarnを使います。## プロジェクトの作成
プロジェクトディレクトリを作成して、package.jsonを作りましょう。“`bash
無料でSSR・ホスティング・API鯖を立てれるVercel。GitHub Actionsで自動デプロイ。
あらかじめローカルでプロジェクトを作っておく
## 環境変数
VECEL_TOKEN → コンパネのSettings→Tokens
VECEL_ORG_ID → .vercel/project.jsonに書いてる
VECEL_PROJECT_ID → .vercel/project.jsonに書いてる## ソースコード
デプロイするファイル
“`public/index.html
Document
hello
“`“`..github/workflows/main.yml
# 何でもいいから名前をつける。今回はCI
name: CI#
MATERIAL-UIのMultiple SelectでChipから選択を解除する
#はじめに
React + Typescript + MaterialUIでフロントエンドを作成していたときに実現したいことができなかったので参考程度に投稿します。##実現できなかった原因
Chipの×ボタンを押してもSelectのメニューが出てきてしまう##実現したいこと
MaterialUIの公式ドキュメントに書かれていた「[Multiple Select](https://material-ui.com/components/selects/#multiple-select)(Chip)」でChipの×ボタンからも選択を解除したい!
![last.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649992/ac949482-f666-a4cf-818b-bb90520def46.gif)#結論
Chipコンポーネントに以下プロパティを追加“`react
onMouseDown={(event) => {event.stopPropagation();}}
“`#前提条件
社内ネットワークからIBM Watsonにつながらない
#はじめに
社内ProxyのおかげでIBM WatsonのAPIが通らかったので対処法を記載します。
(今回はWatson Discoveryです)#結論
node-sdkのところに書いてありました。:open_hands:
[Use behind a corporate proxy](https://github.com/watson-developer-cloud/node-sdk#use-behind-a-corporate-proxy)“`
npm install tunnel
“`#前提条件
+ Node v10.16.3
+ npm v6.9.0
+ IBM CloudのWatsonDiscoveryのサービスが既にあり、collectionが作成済みであることDiscoveryについてはこちらの記事が参考になると思います。
Discoveryってなんぞ?という方はまずこちらの記事を見ることをおすすめします。
[【2019/2月 全面更新!】Watson Discovery Serviceが日本語対応したので、触ってみた【SDUやってみた】編](htt
【AWS】【Lambda】 SalesforceのREST APIを呼び出す
– 表題の通り、LambdaからSalesforceのREST APIを呼び出してみます
– Lambdaの言語はNode.jsを使用します## Salesforce接続アプリケーションの設定
– 外部サービスとSalesforceを接続する際にOAuth認証を使います
– OAuthの設定をするには、Salesforceで接続アプリケーションの設定を行います### 設定方法
– Salesforceにログインした後、[設定]>[アプリケーション – アプリケーションマネージャ]と選んで
– [新規接続アプリケーション]ボタンをクリックします
– 以下を入力します
– 接続アプリケーション名
– 適当に「AWS Lambda」とでも
– API参照名
– 自動入力されます
– 取引先責任者メール
– とりあえずシステム管理者のアドレスにしておきましょう
– OAuth設定の有効化
– チェックします
– コールバックURL
– 今の所は適当に
– 選択
デプロイコマンドを実行する際に対話形式で確認
デプロイのコマンドを実行する際に、環境ごとで確認をするためのスクリプトを書きます。
指定された入力があれば、そのあとの処理を続けて実行、指定と違えばそこで終了します。“`json:package.json
{
“scripts”: {
“deploy”: “sh confirmation.sh STG && node deploy”
}
}
“`“`shell:confirmation.sh
#!/bin/bashENV_NAME=$1
function ConfirmExecution() {
echo “${ENV_NAME}環境のスクリプトを実行しますか?”
echo “実行する場合は${ENV_NAME}と入力してください”
read inputif [ -z $input ]; then
ConfirmExecution
elif [ $input = ${ENV_NAME} ]; then
echo “スクリプトを実行します。”
else
echo “スクリプトを終了します。”
いまさらNode.js入門
## 記事概要
環境構築まわりは誰か出来る人ひとりがやってしまえば
触る必要がない(むしろ触らないほうが良いくらい)ので
なかなか知識が付きにくい。
という事で少し勉強してみた事をまとめてみました!—
## Node.js とは
—
そもそも[Node.js](https://nodejs.org/ja/)とは何ぞやというところですが、
めちゃくちゃ簡単に言うと、サーバーサイドで動くJavaScript環境の事です。と言葉で聞いてもピンと来ないので、実際にどういう事か
次のスライドで見てみましょう。—
やっている事の説明は次のスライドで行っています。
![qiita-test.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185788/af61b379-ae8a-eb19-d3b1-8c98b6598eb5.gif)—
## 前のスライドでやっている事
1. `test`を出力するスクリプトを作成
2. スクリプトファイルをダブルクリックで実行しようとすると
JSエコシステムぶらり探訪(2): Node.jsとCommonJS modules
JSエコシステムの進化を語るにはNode.jsを避けて通ることはできません。Node.jsと、それ自身の持つモジュール機能について歴史的な背景を踏まえつつ説明します。
[←前](https://qiita.com/qnighy/items/fc19f328cf36fc28658c) [目次](https://qiita.com/qnighy/items/16fdd8e58309a1f706a0)
## Node.js
Node.jsは非同期I/Oを備えたサーバーサイドJavaScriptのための実行環境として2009年に登場しました。[^server-side-js-before-node] 現在はサーバーサイドJavaScriptだけではなく、JavaScriptのビルド環境として無くてはならないものになっています。
[^server-side-js-before-node]: [Wikipediaの記述](https://en.wikipedia.org/wiki/Node.js#History)によると、それ以前にもサーバーサイドJavaScriptの技術自体は存在してい
nodejsでスクレイピング入門[阿部寛]
# はじめに
卒研でいろいろあって、nodejsでスクレイピングやりそうになってきましたのでそれのメモです、
入門ということで[阿部寛のHP](http://abehiroshi.la.coocan.jp/)から阿部寛の画像をとっていきたいと思います、# スクレイピングとは?
そもそもスクレイピングってなんだろってなるから調べました。
意味はHPから情報を抽出するということらしいでした、
使い道としては、サイトに載ってる情報が欲しいとか、APIがないけどもHPならあるとかだったときはスクレイピングで情報分捕る感じかと、# 阿部寛ってだーれ?
日本の俳優、テルマエ・ロマエとかに出ているお方、上田次郎、日本科学技術大学理工学部教授、何故ベストを尽くさないのか?
よくHPが情報系の実験ネタ(?)に扱われるほどすごい[公式サイト](http://abehiroshi.la.coocan.jp/)をもっているお方# できること
nodejsから阿部寛のサイトにある阿部寛の写真と取得できる# つかったもの
– nodejs
– yarn# できたもの
## 最初はHTMLデータ
YOLP の WebAPI で1時間以内の降水予想と雨雲レーダー地図画像を取得する
## 概要
– YOLP (Yahoo! Open Local Platform) の Yahoo!ジオコーダAPI + 気象情報API + Yahoo!スタティックマップAPI を使用して1時間以内の降水予想と雨雲レーダー地図画像を取得する
– 動作確認環境: Node.js v14.9.0 + node-fetch 2.6.1## node-fetch のインストール
“`
$ npm i node-fetch
“`## サンプルコード
“`js
‘use strict’const fs = require(‘fs’)
const qs = require(‘querystring’)
const fetch = require(‘node-fetch’) // window.fetch 互換 Fetch API// アプリケーションID
const APPID = ‘YOUR_APPLICATION_ID’// テキストにマッチした住所情報を取得する
async function getAddressLocation(text) {// U
簡単レシート印刷 receiptline で行間隔を調整してみた
[前回](https://qiita.com/dopperi46/items/88c8107648cf5be8b447)は 80 ミリカメラと 80 ミリフィルムで動画を撮影していました。
「役に立たない機械」感を醸し出していたかもしれないですね。![01.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669512/741a2f6b-8a7c-bdef-69e3-c91536f1458c.gif)
連続で印刷するため、変換ライブラリを少し変更して、自動用紙カットを解除しました。
今回もこの変換ライブラリ `lib/receiptline.js` に手を入れてみようと思います。# 用紙節約か、読みやすさか
receiptline に添付されているサンプルデータを印刷してみました。
左は TM-T88V で、右は mC-Print3 です。行間隔が狭いので、文字が詰まって見えます。
今どきのレシートプリンターには用紙節約機能があるので、そういう時代だと思いますが。![02.jpg](ht
無料でSSR・ホスティング・API鯖を立てれるVercel。TypeScript・ExpressでAPI鯖を立てる。
Vercel
https://vercel.com無料で有名な**FaaS**(Function as a Service)の
**Firebase Functions**や**Netlify Functions**より使い勝手がいいと思う。GitHubの**捨てアカ**作ってログインしようとしたら**弾かれた**。
たぶんアカを作ってから**ある程度時間が経たない**と弾かれるっぽい。## ソースコード
“`package.json
{
“scripts”: {
“ts-build”: “webpack –mode production”
},
“devDependencies”: {
“@types/express”: “^4.17.8”,
“ts-loader”: “^8.0.3”,
“typescript”: “^4.0.2”,
“webpack”: “^4.44.1”,
“webpack-cli”: “^3.3.12”,
“webpack-node-externals”: “^2.5.2”
AWS S3 アクセスログの集約化
# 前提
AWSの[S3](https://aws.amazon.com/jp/s3/)のアクセスログは1回のアクセスにつき、指定したバケットに1個のアクセスログファイルを作成するとします。
感覚的には1回につき1個のファイルではなく、同時間に発行されたログを1つのファイルにまとめて吐いているようです。細かいことは[Amazon S3 サーバーアクセスのログ記録](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/ServerLogs.html)を見て下さい。
つまり「1時間毎に1回、1日で計24回のアクセスがあったとすると作成されるログファイルの数は24個」としてこの記事を読んで下さい。# 何がしたいか
前提で述べたように1回のアクセスで1個のログファイルが作成されるので、1000回アクセスされると1000個のログファイルが作成されてしまいます。「1日に発行されたログを全てまとめて見たい」という時に全てのログファイルをローカルにダウンロードするなんて事はしたくありません。[S3](https://aws.amazo
Microsoft Teamsにメッセージと画像を送る(Node.js)
Teamsのチャンネルに投稿用アカウント(Incoming Webhook)を追加して、
チャンネルにメッセージや画像を投稿する##1.投稿したいチャンネルにIncoming Webhookを追加
* Teamsの投稿したいチャンネルで右クリックして [コネクタ] を選択
* [incoming Webhook] を検索して [追加] をクリック、次画面で再度 [追加] をクリック
* incoming Webhookの名前とアイコン画像を設定して [作成] をクリック
* Webhook用のURLが表示されるのでコピーして [完了] をクリック##2.base64にエンコードした画像をメッセージに埋め込んでpostで送信
* node.jsの環境つくり、”fs”と”request”をインストール
* index.jsと同じ階層に画像を準備
* 以下のindex.jsを実行“`javascript:index.js
const fs = require(‘fs’);
const request = require(‘request’);fs.readFile(‘画
Node.jsのHTTPクライアントまとめ2020
# 概要
2020/2にNode.jsのrequestモジュールがDeprecated(非推奨)になってしまいました。
https://qiita.com/kE-sakai/items/1a64462ad41c36813c92そこで複数の代替モジュールについて各種比較サイトを調べてまとめました。
|モジュール名| 定量的な優位性[参照サイトNo] |
|:———–:|:-:|
|node-fetch | バンドルサイズが小さい[1]
ダウンロード数が多い[2] |
|axios|GitHub starsが多い[3]|
| bent |APIスタイルが多い[1]
アップデートが頻繁[5] |
| superagent |メンテナーが多い[5] |
|ky|インストールサイズが小さい[3]|
| got | |
| make-fetch-happen | |
| unfetch | |
|tiny-json-http | |
|needle | |
| urllib| |# 参照サイト
## 1.