const player = require('node-wav-player'); class Player { /** * @return {Promise<ReadableStream>} */ static play(path) { return new Promise((resolve, reject) => { player.play({path: path}).then(() => { resolve(); }).catch((error) => { console.error(error); reject(error); }); }); } } module.exports = Player;
<script src="https://www.gstatic.com/firebasejs/4.12.1/firebase.js"></script> <script> let config = { apiKey: "xxxxx", authDomain: "xxxxx.firebaseapp.com", databaseURL: "https://xxxxx-xxxxx.firebaseio.com", projectId: "xxxxx", storageBucket: "xxxxx.appspot.com", messagingSenderId: "xxxxx" }; firebase.initializeApp(config); let abcRef = firebase.database().ref('abc'); abcRef.on('child_added', funct
'use strict'; // required packages const path = require('path'); // base const express = require('express'); const app = express(); app.set('port', 1337); // static files app.use(express.static(path.join(__dirname, './wav'))); // server const http = require('http'); const server = http.createServer(app); // http 404 error handler app.use(function (req, res, next) { const err = new Error('errorMess
はじめに 本記事は TypeScript Handbook の Advanced Types に書かれているものをベースに、説明されている内容をこういう場合はどうなるのかといったことを付け加えて ちょっとだけ 掘り下げます。完全な翻訳ではなく、若干元の事例を改変しています。 今回は Discriminated Unions について掘り下げます。 その1 Type Guards and Differentiating Types は こちら その2 Nullable types は こちら その3 Type Aliases は こちら その4 String Literal Types / Numeric Literal Types は こちら その5 Discriminated Unions は こちら その7 Mapped types は こちら Index types Index ty
{ "name": "next-sample", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "dev": "next", "build": "next build", "start": "next start", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "@types/next": "^6.1.2", "@types/next-redux-wrapper": "^2.0.0", "@types/react": "^16.4.11", "@types/react-redux": "^6.0.6", "@zeit/next
概要 エントリーポイントを分けることで、コードの見通しは良くなり、余分なコードのダウンロードを避けることができます。 今回、vue-cli 3.0 で立ち上げた趣味アプリに複数のエントリーポイントを用意したのですが、 思いの外苦戦したので設定方法を共有したいと思います。 設定方法 vue-cli の2系までは webpack.config に entry を記述することで、複数のエントリーポイントに対応する事ができました。1 しかし、vue-cli 3.0でセットアップしたプロジェクトには webpack.config が生成されません。 その代わりに vue.config.jsに vue-cli の設定を記述することができます。2 この中で pages オブジェクトとして、複数のエントリーポイントを定義することができます。 この状態を multi-page mode と呼びます。 vue
はじめに この記事には真新しい内容はありません、スクレイピングを手軽に、言語に縛られないように僕がPhantomJSをどう利用しているかの備忘録的な位置づけになります。 やりたい事 スクレイピングに集中したい スクレイピングでやりたい事はDOMの収集です、必要ならばJavaScriptの処理実行後に収集します、動的なぺージ遷移、POSTによるページ遷移も行います、これらの煩わしい処理はPhantomJSに任せ、スクレイピング以外のコードをなるべく書かないように済ませられるようにします。 どの言語でも扱えるように汎用化しておきたい 各種言語で各種ライブラリが日進月歩で登場しています、必要だと思われたから登場したのでしょうが言語を変える度に最新のライブラリを追って組み込むのは大変です。 JavaScriptでスクレイピングし、結果をJSONで返す部分を切り出せば、各種言語はその処理を呼び出し、
はじめに オムロン環境センサとRaspberry Piがちょっと環境データをモニタリングするのに便利なんだけど、node.jsでやりたくてアドバタイジングデータをパースする簡単なモジュールを書いた。 これを試すには、まず環境センサをBroadcaster modeに設定する必要があります。 Omron 環境センサ(2jcie-bl01)の設定をBroadcasterに変更してアドバタイズパケットから情報を取得してみるテストまで を参考にBroadcaster modeに変更してください。変更すると環境センサのデバイス識別名称がEnvからEPに変わります。 ちなみに、Beacon modeでのデータ受信に関しては futomi/node-omron-envsensor が公開されているのでこちらを使いましょう。こっちのほうがよくできてます。 omron-env-sensor.js funct
やりたいこと Sequelizeのtimestamps機能をObjection.jsで実現する。 insert時に、createdAtとupdatedAtカラムに現在日時を設定する。 update時に、updatedAtカラムに現在日時を設定する。 前提 DBはPostgreSQL、Objection.jsはv1.2.2を使用しています。 方法1. カラムにデフォルト値を設定する Knex.jsのマイグレーションファイルで、カラムに対してデフォルト値を設定します。 exports.up = function(knex, Promise) { return knex.schema.createTable('tasks', t => { t.increments('id').primary(); t.string('name').notNullable(); t.string('descrip
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く