- 1. Google Functions & Node.js: console.logを使った最低限のロギング
- 2. WiiリモコンをNode.jsから操ってみよう
- 3. toJSONを用いて、JSONデータの返り値を制御する
- 4. bcryptでプレーンテキストをハッシュ化させる
- 5. 【Node.js】kuromoji.js + mecab-ipadic-neologdで形態素解析して遊ぶ
- 6. IBM Cloudのメール配信サービス(SendGrid)を使ってNode.js、Pythonからメール配信してみた!
- 7. はじめてのAngular入門ガイド
- 8. Node.jsでtmpに一時ディレクトリを作るにはfs.mkdtempSyncを使う
- 9. GitHub APIのレスポンスが 403 Forbidden になったら
- 10. Twitter で 自動フォロワー獲得ツール を作った話 ②
- 11. Twilioを使って、ブラウザで電話を受け取れるようにする
- 12. Node.jsよりODBCでOracle, Salesforceなどに1ドライバで接続
- 13. Bitbucketからコンテナサービスにアプリをデプロイする方法
- 14. node.jsでsleep処理をasync awaitを使って書く
- 15. AWS Lambda(Node.js)においてmiddyを使ってAmazon RDSに接続する方法
- 16. AWS Amplify での Cognito アクセスは React Context.Provider を使って認証処理を Hooks 化しよう
- 17. [JavaScript] セミコロンをつければ絶対安心できるのか?;
- 18. 文章から単語を取り出して数えるサービスを作成してみた
- 19. Raspberry Pi4 地デジサーバ Chinachu+mirakurun の Node.jsをアップデートしてみた
- 20. Obnizで動体検知センサー(HC-SR505)を利用して、動体検知したらスマホに通知。
Google Functions & Node.js: console.logを使った最低限のロギング
この投稿では、Google Cloud Platform(GCP)のGoogle Cloud Functions(GCF)のNode.js環境で、`console.log`を使った最低限のロギング手法について解説します。
## この投稿で学ぶこと
* Google Cloud Functions & Node.jsでは、`console.log`で最低限のロギングは可能。
* 2行以上に渡るログは行ごとに分解されるので注意。
* jsonPayloadを意識すると、オブジェクトの構造をログに出すことも可能。## GCFでは`console.log`でログを残せて、「ログビューア」で確認できる
まず、Google Cloud Functionsでどのようにロギングし、そのログをどうやって確認するのかを学びます。シンプルに1行のメッセージを`console.log`で記録してみましょう。
“`javascript:index.js
exports.helloWorld = (req, res) => {
console.log(‘helloWorld関数を実行しています。
WiiリモコンをNode.jsから操ってみよう
Wiiリモコンは、中古で入手しやすく、機能も豊富なので、入力デバイスとしてはうってつけです。
接続もBluetoothなので、プロトコルさえわかれば、操れそうです。ことの発端は、かの神モジュール「noble」を勉強のためソースコードを見ていたのですが、自分でも操ってみようと思い、そこで思いついたのがWiiリモコンでした。
毎度の通り、ソースコードもろもろを、GitHubに上げておきます。
poruruba/WiiRemocon
https://github.com/poruruba/WiiRemocon※たぶん、Linuxでしか動かないと思います。
#Wiiリモコンのプロトコル
ここにすべて書いてあります!
WiiBrew:Wiimote
http://wiibrew.org/wiki/WiimoteWiiリモコンとは、BluetoothのL2CAPプロトコルで通信します。
HIDとして見えるので、PSM=0x0011(HID Control)とPSM=0x0013 (HID Interrupt)の2つのコネクションを張る必要があります。L2CAPプロト
toJSONを用いて、JSONデータの返り値を制御する
##JSONデータの返り値を制御する
例)petというJSONデータの場合“`javascript
const pet = {
name: ‘Doggy’
}console.log(JSON.stringify(pet))
“`
↓
{‘name’:’Doggy’}
というJSONデータが返ってくる。★返り値となるJSONデータを、toJSONを使って制御することができる
“`javascript
const pet = {
name: ‘Doggy’
}pet.toJSON = function(){
return {}
}console.log(JSON.stringify(pet))
“`
↓
{}
というJSONデータが返ってくる。つまり
toJSONで上書きされた値が、pet定数のJSONデータとして認識される
##データベースのセキュリティ向上に利用
“`javascript
//mongooseを利用して、データベース型を設定
const mongoose = require(‘mongoos
bcryptでプレーンテキストをハッシュ化させる
##ハッシュ化のメリット
・パスワードなどをデータベースに保存する時、プレーンテキストのまま保存すると脆弱性に繋がる。・ハッシュ化したメッセージダイジェストから、元のメッセージを復元することは困難
→「インクリプション」…元のメッセージをとっておいて、それをハッシュ化したら同じハッシュ値になるかチェックすることで、同一性を確認する仕組み##bcryptパッケージ
[bcrypt](https://www.npmjs.com/package/bcrypt)というnpmパッケージを利用すると、プレーンテキストをハッシュ化することができる。・bcryptパッケージの使い方
“`javascript
const bcrypt = require(‘bcryptjs’)const myFunction = async() => {
const password = “password1234”const hadhedPassword = await bcrypt.hash(password, 8) //第一引数:ハッシュ化したい値、第二引数:roundを
【Node.js】kuromoji.js + mecab-ipadic-neologdで形態素解析して遊ぶ
スクレイピングした文章を**形態素解析**したい!
`node`では`java`用に書かれた`kuromoji`を移植した`kuromoji.js`を使用するのが簡単っぽい。(自分調べ)
しかしWeb上の文字は日々変化し、思ったように解析できない場合も多い。
そこでWeb上の資源を解析して作られている新語・固有表現に強い`mecab-ipadic-NEologd`という辞書も導入する。
(+ベースは`ipadic`辞書)– [MeCab: Yet Another Part\-of\-Speech and Morphological Analyzer](https://taku910.github.io/mecab/)
– [kuromoji \- japanese morphological analyzer](https://www.atilika.org/)
– [mecab\-ipadic\-neologd/README\.ja\.md at master · neologd/mecab\-ipadic\-neologd](https://github.com/neolo
IBM Cloudのメール配信サービス(SendGrid)を使ってNode.js、Pythonからメール配信してみた!
# 背景
現在私が担当している案件で一般ユーザー向けのサービスを提供する予定で、ユーザー登録をした際などにメールをユーザーに送信する必要があるとのことで、メール送信サーバーをどうやって調達するかが課題となった。
お客様の方で用意できるメール送信サーバーで使えるものはないということだったので、IBM Cloud内で使用可能なサービスがないのかを調査した結果以下のサービスが利用できそうなので、実際に使えるのかどうか、利用方法はどんな感じかを実際にサービス登録して使ってみたのでこの記事にまとめました。
https://cloud.ibm.com/docs/email-delivery?locale=ja>E メール配信について
>SendGrid の IBM Cloud E メール配信サービスは、メール・リレー・サービスです。このサービスにより、スマート・ホストを使用してアウトバウンド・メール・サービスのリレーが可能になります。スマート・ホストは、SMTP サーバー、メール・クライアント、または SMTP を処理可能な任意のサービスまたはプログラム言語からの SMTP トラフィックをリレ
はじめてのAngular入門ガイド
Angularプロジェクトの概要と始め方を記載します。Versionの変更がたびたびあるので、内容はリンクは最新のVersionのページを確認すること。
社内教育に使っている資料なのでメモ書きです。
## URL
[Angular ドキュメント](https://angular.io/docs)[Angular 基本概念](https://angular.io/guide/architecture)
[Angular チュートリアル](https://angular.io/tutorial/toh-pt0)
# アプリケーション生成
“`tsx
ng new application-nameでプロジェクト構成
– Routingの設定を聞かれるので > y
– cssの設定は scssで
“`起動コマンド
“`tsx
ng serve
“`http://localhost:4200で画面
# ディレクトリ構成
全体感をつかむためにプロジェクトの構造を把握します。ディレクトリ構造を知っておくとバグ時にどのファイルが原因か可能性を絞れるようになります。
Node.jsでtmpに一時ディレクトリを作るにはfs.mkdtempSyncを使う
Node.jsで/tmpに一時的なディレクトリを作るには、[fs.mkdtempSync]を使います。
[fs.mkdtempSync]: https://nodejs.org/api/fs.html#fs_fs_mkdtempsync_prefix_options
“`javascript
const fs = require(‘fs’)const dir = fs.mkdtempSync(‘/tmp/foo’)
console.log(dir)
//=> “/tmp/foo4xeXpJ”
“`
GitHub APIのレスポンスが 403 Forbidden になったら
`User-Agent`ヘッダーは設定していますか??
https://docs.github.com/en/rest/overview/resources-in-the-rest-api#user-agent-required### コード例
以下はissueを作成するコードです。
認証はパーソナルアクセストークンで行います。`PersonalAccessToken`, `organization`, `repository`はご自身のものに置き換えてください。
“`github.ts
import https from ‘https’const createIssue = async (title: string, body: string, labels: string[]): Promise
=> {
return new Promise((resolve, reject) => {
const req = https.request({
method: ‘POST’,
headers: {
Twitter で 自動フォロワー獲得ツール を作った話 ②
# まえがき
本記事は、[Twitter で 自動フォロワー獲得ツール を作った話](https://note.com/masanaosuzuki/n/n48fd7289537e) の続編です。
前編をご覧になっていない方は、まずは上記のリンクへどうぞ。
また、本記事に記載されている全体のソースコードは、[Github](https://github.com/masagao/twitter_automation) からご覧いただけます。# あらすじ
Twitter のフォロワーを増やすための法則を確立したものの、
「[GAOGAO](https://gaogao.asia/) エンジニアたるもの、プログラミングで実装してみてはどうか」
との [@tejitak](https://twitter.com/tejitak) のお言葉を受け、Node.js で自動化を試みるのでした。
当時は開発経験がまるでなかったため、初のアプリケーション作成になりました。# おさらい
今回の実装内容
「**どんなコンテンツでも、あるフォーマットに沿ってツイートすれば、ほぼ確実にライクとフォローが期
Twilioを使って、ブラウザで電話を受け取れるようにする
# やること
[Twilio](https://www.twilio.com/ja/)のライブラリを利用して、電話の着信機能を作成します。
Twilioへの登録と、電話番号の取得が必要です。
以下がTwilio側とブラウザ側の処理の流れです。## :telephone_receiver:Twilio側の流れ
1. Twilioが通話を受け取る
2. Twilioが自動応答のシナリオ(TwiML)を返すAPIを呼び出す
3. TwilioがTwiMLを読み取って、クライアント(ブラウザの着信者)を呼び出す## :desktop:ブラウザ側の流れ
1. twilio-clientライブラリを使って、着信時の挙動を設定する
2. クライアントのトークンを作成するAPIを呼び出す
3. トークンを使って、着信を受け取れるようにする# APIのコードをかく:muscle:
node.jsで書きます。前もってtwilioパッケージをインストールしときましょう
`npm i twilio`## TwiMLを返すAPIを用意する
expressを使っています。ざっくり書きます。
Node.jsよりODBCでOracle, Salesforceなどに1ドライバで接続
Connect to Oracle, Salesforce and others using ODBC drivers from Node.js
#はじめに
Node.jsアプリケーションからODBCでSQL Server、Oracle、DB2、Postgres、MongoDBなどのDBや、Salesforce、Eloqua、Oracle Sales Cloud、Oracle Service CloudなどのSaaSアプリケーションに接続する必要性があるならば、DataDirect ODBCドライバを利用すると楽勝です。
この記事では、DataDirect ODBC ドライバを使用して Node.js から Oracle データベースに接続してみます。
#事前準備
Node.js#DataDirect Oracle ODBC ドライバのダウンロード&インストール
1,ここからOracleデータベース用の64ビッ
Bitbucketからコンテナサービスにアプリをデプロイする方法
今回のチュートリアルでは、**Bitbucket**から**Alibaba Cloud**の**コンテナサービス**にアプリケーションをデプロイし、Let’s Encrypt SSL/TLS 2019でセキュリティを確保します。
*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/a-basic-guide-on-deploying-apps-to-container-service-from-bitbucket_594674)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*
#Docker
Dockerは、コンテナを使ってアプリケーションを作成、デプロイ、実行するために設計されたオープンソース・ソフトウェアです。コンテナを利用することで、開発者はアプリケーションに必要なライブラリやその他の依存関係などをすべてパッケージ化し、1つのパッケージとして出荷することができます。そうすることで、コンテナのおかげで、開発者は、コードを書いたりテストしたり
node.jsでsleep処理をasync awaitを使って書く
sleep処理を書くときはsetTimeoutを使うのが一般的だと思いますが、callbackを書きたくないので今風にasync awaitで書きます。
配列にある会社idの情報を1秒ごとに順番にリクエストする処理を書くと以下のようになります。
“`JavaScript:index.js
async function sleep(ms) {
return new Promise(r => setTimeout(r, ms));
}async function request(id) {
// 割愛
}async function exec() {
const companyIdList = [1, 2, 3, 4, 5];for (const id of companyIdList) {
await sleep(1000);
await request(id);
}
}exec();
“`
AWS Lambda(Node.js)においてmiddyを使ってAmazon RDSに接続する方法
AWS Lambda(Node.js)において、[middy](https://middy.js.org/)を使ってAmazon RDSに接続する方法を紹介します。
## はじめに
### データベースエンジン
この記事ではデータベースエンジンとしてAurora MySQLを使用している場合の例を示しますが、他のデータベースエンジンの場合も基本的な実装は変わりません。
### プログラミング言語
この記事ではソースコードをTypeScriptで書いているので型定義をインストールしたり型アノテーションを記述したりしていますが、JavaScriptで書く場合は不要です。
### ミドルウェア
middyでRDSに接続するために、[@middy/db-manager](https://www.npmjs.com/package/@middy/db-manager)を使います。
@middy/db-managerでは、データベースクライアントとして[Knex.js](http://knexjs.org/)が使われます。## 接続情報をAWS Secrets Managerで管
AWS Amplify での Cognito アクセスは React Context.Provider を使って認証処理を Hooks 化しよう
![Amplify × React Hooks.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163591/933eeb20-489f-ce8c-d6e6-3214050a49ff.png)
AWS Cognito は認証・認可を提供している AWS のサービスです。Amplify と統合することで、超高速に構築できます。Cognito を使用することで、API Gateway や S3 など他の AWS サービスとの統合がより簡単にできるようになります。
本記事では、Cognito を使用した React アプリケーションの実装例を紹介します。Cognito へのアクセスには [amplify-js](https://github.com/aws-amplify/amplify-js) というライブラリを使用します。さらに React の Context.Provider という機能を使うことで認証に関連する処理をカスタムフックに集約する方法を考察します。
本記事で実装されたアプリケーションは以
[JavaScript] セミコロンをつければ絶対安心できるのか?;
## はじめに
[こちらの記事](https://qiita.com/riku-shiru/items/dce12248947f7f33aecc) を読んで、改めてJavaScriotの `;` について気になったので調べてみました。
## 結論
私が思ったより安心じゃなかった。
セミコロンありのスタイルでも、下記のように予期せぬセミコロンの挿入が起こってしまうパターンがあります。
“`javascript
function f() {
return
{
foo: ‘foo’
};
}f(); // undefined
“`セミコロンに関することは参考にさせていただいた[セミコロンに関する ESLint ルール](https://qiita.com/mysticatea/items/9da94240f29ea516ae87)という記事に全部書いてありました :pray::pray::pray:
以下の内容はリンク先の記事に(個人的な感想以外)書いてあることなので、ぜひそちらを参考にしてください!
#
文章から単語を取り出して数えるサービスを作成してみた
# 概要
「単語を数えるプログラミング」をテーマにお勉強してみました。
単語を数えるということで形態素解析を用いて文章から単語を取り出して単語数を数えてみるサービスを作ることにしました。お勉強した結果ですが以下のサービスとして公開しておりますので、以下の [作ったモノ] (https://qiita.com/tamoco/items/79746d0fd7b9d149f432#%E4%BD%9C%E3%81%A3%E3%81%9F%E3%83%A2%E3%83%8E) からご確認いただければ幸いです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/b9a754b8-e366-3434-835d-7093b66e63c0.png)
# 使用しているフレームワークとライブラリ
今回は`Glitch`という`Node.js`のアプリを公開するためのサービスを使用して公開しています。
## Glitch
https://glitch.com/フレームワークとライブラ
Raspberry Pi4 地デジサーバ Chinachu+mirakurun の Node.jsをアップデートしてみた
Raspberry Pi4で地デジサーバを Chinachu +mirakurun で稼働していますが、以下のようにmirakurunをv3.2.0にアップデートした後、chinachuもアップデートしたところ、動かなくなりました。
“`
$ sudo npm install mirakurun -g –unsafe-perm –production //mirakurunのアップデート$ cd chinachu
$ ./chinachu updater //chinachuのアップデート
“`
アップデート後、ステータス($ sudo pm2 status)を確認したところ、erroredと表示されました。#なぜ動かなくなったか
原因は、Node.js をアップデートする前に、mirakurun をアップデートしたためでした。
それで、Node.jsをv8.9.4からv10.16.3にアップデートしました。#正しいアップデートの方法
##1.Chinachuのユーザー追加
まず、Chunachu は Raspberry Pi のデフォルトユーザーでは動かない
Obnizで動体検知センサー(HC-SR505)を利用して、動体検知したらスマホに通知。
# 「動体検知したらスマホに通知」をやりたい
こんなことをやってみよう。
使うのはこちら。
<ハードウェア>
– HC-SR505(赤外線人感センサー):https://obniz.io/ja/sdk/parts/HC-SR505/README.md
– Obniz:https://obniz.io/ja/products/obnizboard/
– Raspberry Pi Zero W:https://www.switch-science.com/catalog/3200/<ソフトウェア>
– Node.js
– IFTTT## HC-SR505
Obnizに、HC-SR505を直刺しします。
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた