- 1. Unityの.alfファイルから自動で.ulfをダウンロードしたい!
- 2. Custom Vision Service を使用してインテリアの樹種分析
- 3. How to build a Twitter bot with NodeJs
- 4. discord.jsでDiscord Botを作ってみた
- 5. Node.jsのasync/awaitとPromiseを超ざっくり_前編
- 6. 【待望リリース!】もう Lambda×RDS は怖くない!LambdaでRDSプロキシを徹底的に検証してみた 〜全てがサーバレスになる〜
- 7. NestJS でダミーの Service を注入し、外部依存のないテストを実行する
- 8. Node.jsのHTTPリクエストヘッダの最大サイズでハマった話
- 9. EventEmitterですべてのイベントを取得する(ワイルドカード)
- 10. React アプリケーションのボイラープレート CLI を作って使っている話
- 11. C10K問題とNode.js
- 12. Paiza Cloud で LINE Bot を試してみる
- 13. Microsoft Custom Vision Serviceによる中耳炎画像認識LINE Botの作成
- 14. NestJSで始めるGraphQLサーバ開発(コードファースト編)
- 15. SeleniumでSortableJS系ライブラリのDrag&Dropをテストする
- 16. Angularスキル獲得のために始めたこと、始めること
- 17. 【自分用メモ】supertestとpassport-stubをmochaテストに組み合わせる
- 18. DIコンテナの実装を理解して、軽量 DI コンテナを自作しよう
- 19. nvm チートシート
- 20. nodejs v12(LTS)におけるasync, awaitを用いたstream処理
Unityの.alfファイルから自動で.ulfをダウンロードしたい!
# CIのActivateとかでライセンスを自動でActivateさせたい!
CIでUnityを扱う時はJenkinsとかであれば問題ないのですが、CircleCIやGitHub Actionsを使用するときにDockerでのライセンス認証では.ulfファイルというのが必要になってきます。
現在.ulfファイルをコマンドラインから生成することはできません。生成するにはブラウザ経由の一択です。
それを今回Puppeteerというnode.jsのツールを使って自動化してみました。※今回の認証フローはPersonalEdition固定になります。
Puppetterとは、Webブラウザでの操作をソースコードから行えるものになります。
詳しくはこちら
[Puppeteer](https://developers.google.com/web/tools/puppeteer)今回のリポジトリはこちら
[MizoTake/unity-license-activate](https://github.com/MizoTake/unity-license-activate)## 実装
Custom Vision Service を使用してインテリアの樹種分析
##CustomVisionService を 簡単なサイトを作って使えるようにしたい
今週はMicrosoftAzureから画像認識を試したのでそちらの成果を簡単に使えるサイトを作ろうと
思いました。内容はせっかくなので本業にちなんでインテリアの画像から樹種を解析してくれるものを目指しました。
内装を考える時にテーマとなる樹種を一つ決めて組み合わせていくと空間にまとまりが出るので、
自分が良いなと思う家具や内装がどの樹種なのかを調べられると買う家具や似合う色が決まってきて
インテリアを構築する時の参考になると良いなと思いました。##環境
Node.js v10.16.3
Windows 10 pro
Visual Studio Code v1.39.1##概要
①MicrosoftAzureでアカウントを作成
②Microsoft Custom Vision Service を使用して画像解析のプロジェクトを作成、トレーニング
③作成したプロジェクトをAPIとして使用する
④APIを取得する為のコードを書く##参考資料
主に①~②の参考にいつもどおり先陣
How to build a Twitter bot with NodeJs
Building a Twitter bot using their [API](https://codesource.io/how-to-consume-restful-apis-with-axios/) is one of the fundamental applications of the Twitter API. To build a Twitter bot with Nodejs, you’ll need to take these steps below before proceeding:
Create a new account for the bot.
Apply for API access at developer.twitter.com
Ensure you have NodeJS and NPM installed on your machine.
We’ll be building a Twitter bot with Nodejs to track a specific hashtag then like and retweet every pos
discord.jsでDiscord Botを作ってみた
# 概要
discord.jsでbotを作ったので、それを書き留めときます。
インストールは、Ubuntu mateを想定したものを紹介致します。
他のOSを使っている方に関しては、調べてください# Node.js&npmのインストール方法
コマンドラインを開き下のコマンドを実行します。“`
sudo apt install -y nodejs npm
“`# discord.jsのインストール方法
こちらもコマンドラインを開き下のコマンドを実行します。“`
sudo npm i discord.js
“`# 実際に書いていく
まずは、discord.jsを読み込むコードを書きます。“`javascript:index.js
const discord = require(“discord.js”);
const client = new discord.Client;
“`簡単な返事機能のコードを書きます。
“`javascript:index.js
//続き
client.on(“message”, message =>{
if (
Node.jsのasync/awaitとPromiseを超ざっくり_前編
現在関わっているプロジェクトでNode.jsを使って開発しています。
その過程でハマったこと、今回はasync/await・Promiseについての記事になります。といってもNode.jsを使ったことのない人もいると思うので簡単にNodeの非同期処理について紹介してから、ハマったポイントについて書きたいと思います。
※すみません、未完成なのでタイトル詐欺になってしまっています。
※100番煎じなので非同期の書き方に関してはあんまり詳しく書きません。
※arrow関数使ってません。説明省くので。
※間違いあれば教えていただければと思います。## 目次
1. Node.jsの非同期処理について
2. 非同期処理の書き方
2.1 コールバック(callback)関数
2.2 Promise ←この記事はココまで!
~~2.3 asycn/await~~
~~3. Promiseとasycn/awaitが一緒だと思ったらハマった件~~
4. 参考Nodeを使ったことがあって1~2についてわかって
【待望リリース!】もう Lambda×RDS は怖くない!LambdaでRDSプロキシを徹底的に検証してみた 〜全てがサーバレスになる〜
本日の reinvent でのリリースで衝撃のアップデートがたくさん出ましたね。EKS on Fargate や SageMaker の大幅アップデートも魅力的ですが Lambda の常識をくつがえす RDS のプロキシ機能が登場しました ?
ついに出ました!これでLambdaからRDS使うの怖くなくなります。Lambdaからも使えるコネクションプールマネージャ。これでLambdaとRDBMSの相性問題は先日のVPCの改善と合わせて解消されますー。SQL最高!! / “Using Amazon RDS Proxy with AWS Lambda | AWS Compute Blog” https://t.co/YWgIu19GoH
— Keisuke69@AWS re:Invent (@Keisuke69) NestJS でダミーの Service を注入し、外部依存のないテストを実行する
この記事は [NestJS アドベントカレンダー](https://qiita.com/advent-calendar/2019/nestjs) 4 日目の記事です。
## はじめに
[先日は Module と DI について説明しました](https://qiita.com/euxn23/items/acce35485feed5badf4b)が、本日はもう一歩進んだ DI を活用したテストを実施してみます。
なお、サンプルでは MySQL に接続したり Docker を使用したりしていますが、怖がらないでください。
この記事では MySQL や Docker に依存せずにテストできるようにするテクニックを説明します。サンプルコードのリポジトリは以下になります。
https://github.com/nestjs-jp/advent-calendar-2019/tree/master/day4-inject-dummy-service-to-avoid-external-dependency
なお、環境は執筆時点での Node.js の LTS である v12.13.1
Node.jsのHTTPリクエストヘッダの最大サイズでハマった話
## 現象
– Node.js(v12.3.1)で立てたWebサーバにアクセスすると、時折HTTPリクエストに失敗する
– Cookieを削除したり、ブラウザを再起動すると治ることもあるが、根本的な原因がわからない“`javascript:サンプルコード
const http = require(‘http’);const server = http.createServer((req, res) => {
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
res.end(‘Hello World’);
});server.listen(8080);
“`
## 原因– Node.jsの最大HTTPリクエストヘッダサイズのデフォルト値である8kBを越えるHTTPリクエストヘッダサイズを送信していたことが原因だった
– Node.jsは、2018/11に[DoS攻撃の脆弱性対応](https://nvd.nist.gov/vuln/detail/CVE-2018-12121)として、デフォルトの
EventEmitterですべてのイベントを取得する(ワイルドカード)
Node.jsのEventEmitterは便利なんですがすべてのイベントを取得できません。
何で実装していないのかよくわかりません。[EventEmitter2](https://github.com/EventEmitter2/EventEmitter2)というEventEmitterを便利にしたものがありこれを使えば良いのですが、更新が止まっています…
頑張ればできるんじゃねと思って書いたら数分でできたのメモ的な意味を込めて記事にしてます。
## コード
“`js:index.js
// いつものEventEmitter
const EventEmitter = require(“events”);// いつものEventEmitterを拡張
class ExtendEventEmitter extends EventEmitter {
// emitされた内容を”*”に再emit
emit(name, …args) {
return super.emit(“*”, name, …args);
}
}// 拡張し
React アプリケーションのボイラープレート CLI を作って使っている話
この記事は [ミクシィグループ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/mixi) の5日目の記事です。
React で CLI というと [create-react-app](https://create-react-app.dev/) が有名です。
格好良いベースを作ってくれるのですが個人的には依存 package が多いので、自分用の CLI を作ってそちらを使っています。## @yami-beta/create-ts-app
TypeScript を使ったアプリケーションのベースを作る対話型のインターフェースを持った CLI ツールです。
https://www.npmjs.com/package/@yami-beta/create-ts-app
![create-ts-app.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/31403/f3d5a91e-f681-8866-abf1-8a807dc8cb82
C10K問題とNode.js
# C10K問題(クライアント1万台問題)
– アクセスするクライアント数が1万を超えると、サーバーのスレッド(並列処理の単位)数が増え、サーバーのメモリーなどのリソースが不足してしまう問題
– 処理能力に余裕があっても、クライアントの数が多くなると効率が悪化しサーバがパンクする
– プロセッサの処理能力には余裕があっても、サーバの台数を増やさなければいけなくなってしまう### 回避方法
– サーバーサイドではイベント駆動方式を利用しているNode.jsなどを使用する
– イベント駆動により大量のリクエストを同時に処理できるスケーラビリティを備えている
– ノンブロッキングI/Oモデルにより、C10K問題に対応する# Node.jsとは
> スケーラブルなネットワークアプリケーションを構築するために設計された非同期型のイベント駆動のJavaScript環境
[Node.js](https://nodejs.org/ja/)– それぞれの意味
– スケーラブル : 拡張性が高い
– 非同期 : 各要求(request)の処理が完了するのを待た
Paiza Cloud で LINE Bot を試してみる
プロトアウトスタジオアドベントカレンダー4発目の記事です!
昨日は @tkyko13 さんの「word2vecの勉強で「[word2vecの勉強で「ナダルリバースエボリューション」が再現できるのではないかと思いついたのでやってみた](https://qiita.com/tkyko13/items/0e5d5db8477a64209635)」でした。
## Paiza Cloud とは
[クラウド開発環境 PaizaCloudクラウドIDE \- クラウドIDEでWeb開発\!](https://paiza.cloud/ja/)
![2019-12-03_01h00_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56170/c8751369-2152-9c0f-0fb1-3180a212fbc1.png)
> ブラウザを開くだけでLinuxサーバが使える!
クラウド開発環境PaizaCloudクラウドIDEでは、ブラウザだけでLinuxサーバを操作できます。ファイル操作、テキスト操作、コマ
Microsoft Custom Vision Serviceによる中耳炎画像認識LINE Botの作成
##概要
プログラムの勉強を始めて5か月ほどの開業医です。
前回、Microsoft Custom Vision Service を使用して鼓膜画像認識を試し、極めて高い診断精度でした。
[Microsoft Custom Vision Service を使用した鼓膜画像認識](https://qiita.com/doikatsuyuki/items/bbed5e902577d68fb8a9)前回は「正常鼓膜」か、「急性中耳炎」か、「滲出性中耳炎」かを分けるためのタグだけでしたが、今回は急性中耳炎の重症度を判定できるようにするため「鼓膜の発赤の程度」、「鼓膜の腫脹の程度」、「耳漏の有無」に関するタグに追加しました。
さらに、LINE Botと連携しNowでデプロイしました。
##実装
スマホから鼓膜の写真をLINE Bot宛てに送ると、中耳炎かどうか応えてくれるLINE Bot。
##概念図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453374/b74cf0e8-
NestJSで始めるGraphQLサーバ開発(コードファースト編)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163591/299e2b62-2ee2-656b-aba1-267d4f50b148.png)
NestJSは、TypeScriptで記述するバックエンドアプリケーションフレームワークです。デフォルトで DI(Dependency Injection) の仕組みをサポートしており、テスト可能な構成を簡単に作ることができる特徴があります。
今回の記事ではNestJSを使用して最もシンプルなGraphQLサーバを構築します。
↓完成イメージ
![nestjs-graphql.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163591/b5df3895-ef8d-bc4b-6cfa-c2fa8d9f72d4.gif)# GraphQLの基本
GraphQLは、RESTエンドポイントのように煩雑に管理されたエンドポイントではなく、1つのエンドポイントに対して厳
SeleniumでSortableJS系ライブラリのDrag&Dropをテストする
# 前置き
[前回の記事](https://qiita.com/marumaru/items/fe81d43ef1ba8ddf2101)で、Vue.Draggableを使ったコンポーネントのドラッグ&ドロップを実行するCypressのテストコードについて書きました。
これをSeleniumで書いたらどうなるだろうと思い試してみたところCypress以上にハマったので、解決方法を記録しておきます。[^TestCode]本記事内のドラッグ&ドロップのテストコードは、Vue.Draggableに限らずSortableJSベースのライブラリなら概ね動くものになります。
以下の公式サイトのデモにて検証しています。(2019/12/3時点)* SortableJS [デモページ](https://sortablejs.github.io/Sortable/#simple-list)
* Vue.Draggable [デモページ](https://sortablejs.github.io/Vue.Draggable/#/simple)
* react-sortablejs [デモページ](
Angularスキル獲得のために始めたこと、始めること
お仕事だったり同期と作ったアドベントカレンダーだったりのおかげで、Angularを触る機会を得た小生でございます。
今までフロントどころか、Webアプリの制作もしたことがなかったので、これをいいことにいろいろと勉強していってる最中です。# Angularを触るにあたって何を知っていたか
* HTML
* CSS
* Javascript
* Node.jsHTML、CSSはお猿さんと同じくらいの知識がありました。
JavascriptはほぼNode.js触ってから覚えた感じ。
元々プログラミング経験があったので、ここらへんはなんとか理解しつつ進めております。# Angularを理解するためには
* **[公式:入門チュートリアル](https://angular.jp/start)**(Angular未経験者向け)
* **[公式:基礎チュートリアル](https://angular.jp/tutorial)**(入門チュートリアルをやった人向け)
* **[2020年のフロントエンドマスターになりたければこの9プロジェクトを作れ](https://qiita.com/ra
【自分用メモ】supertestとpassport-stubをmochaテストに組み合わせる
##supertestとは
supertestはmochaと組み合わせて使うのですが、ExpressのRouterモジュールのテストを行うことができます。
例えば以下の例では、`/`にアクセスしたらindexRouterが処理されるかテストしてくれます。
もちろん、`/login`も`/logout`もテストしてくれます。“`JS:app.js
app.use(‘/’, indexRouter);
app.use(‘/login’, loginRouter);
app.use(‘/logout’, logoutRouter);
“`##passport-stubとは
passport-stubは、passportモジュールを利用した認証システムを、テストする際に役に立ちます。
例えば、
「facebook認証などのテストをしたいけど、facebookアカウントを持っていない!」
といった時に役に立ちます。##テストの例
“`JS:test.js
//supertestの読み込み
const request = require(‘supertest’);
//supe
DIコンテナの実装を理解して、軽量 DI コンテナを自作しよう
# なぜ DI コンテナを自作するのか
関心の分離がされているアプリケーションは変更に強く、良い設計と言えます。[Dependency Injection](https://ja.wikipedia.org/wiki/%E4%BE%9D%E5%AD%98%E6%80%A7%E3%81%AE%E6%B3%A8%E5%85%A5)(以下 DI) は関心の分離を実現する テクニックの 1 つとしてよく見られるパターンです。しかしクラス間の依存関係が増えれば増えるほど、注入する依存を作ることは困難になり、DI のコストは段々と膨らみます。そのようなとき、 **依存を自動で解決し、欲しいインスタンスをすぐにとりだせる DI コンテナ** は有効な解決手段となり得ます。
JavaScript/TypeScript においても DI コンテナを提供するライブラリが存在します。例えば、[InversifyJS](https://github.com/inversify/InversifyJS) や [tsyringe](https://github.com/microsoft/tsyringe)
nvm チートシート
## 前書き
この記事は オープンロジアドベントカレンダー2019の3日目です。
みなさんはNode.js のバージョンマネージャーは使っていますか?
私は[nodebrew](https://github.com/hokaccha/nodebrew) をずっと利用していたのですが、LTSを入れるコマンドが存在せず、
使い勝手の悪さを感じていたので、最近は [nvm](https://github.com/nvm-sh/nvm) というバージョン管理マネージャに乗り換えました。使い方については、 GitHubの Readme と `nvm –help` の出力結果を読めばそれで十分なのですが、その都度、英語を読むのは面倒なので、以下に個人的によく使うであろうものを取捨選択してチートシートとしてまとめておきます。
本稿での nvm のバージョンは v0.35.1 です。
`.nvmrc` については別の方の記事を参照してください。本稿では言及しません。## チートシート
### 前提
– 間違ったオプションや文字列を入力したら、`nvm –help` の内容を表示される。
nodejs v12(LTS)におけるasync, awaitを用いたstream処理
# nodejs v12(LTS)におけるasync, awaitを用いたstream処理
QualiArts Advent Calendar 2019、3日目の記事になります。
## はじめに2019年10月21日にnodejs v12のLTS版が公開されました。
nodeは奇数バージョンが開発版、偶数バージョンが安定版となるため、v11以降の今まで実プロジェクトだと利用しにくかった機能がこれによりいくつか使えるようになりました。
そのなかでもasync-generatorsやfor-await-of loops構文が大手を振って使えるようになったことにより、stream関連の処理が大きく変わると感じたため、すでにいくつか紹介されている記事も有りますが、この機会に改めて紹介したいと思います。
また、最後に簡単なサンプル処理も記述しているので、ご参考いただければ幸いです。## for-await-of loops
今までstreamはeventEmitterを利用し、発火したeventをトリガーに処理を記述していました。
for-await-of loopsを用いると下