Async Functions (async/await) チートシート

const promise = Promise.resolve(42); async function a() { const result = await promise; console.log(result); // 42 }; a(); 戻り値を返す場合 async function は Promise オブジェクトを返す。 const promise = Promise.resolve(42); async function …

Promise チートシート

const promise = new Promise((resolve, reject) => { resolve(42); }); promise.then((v) => { console.log(v); // 42 }).catch((e) => { console.log(e); }); エラー処理 const promise = new Promise((resolve, reject) => { reject(new Error('エラーだ…

Node.js で Babel を使う

Node.js v6 は ES2015 のほとんどの機能が使えるんだけど ES Modules (import/export) や Async Functions (async/await) が使いたくなったので Babel を導入することにした。 % yarn add --dev babel-cli babel-preset-latest babel-polyfill % echo '{ "pr…

Ubuntu 16.04 に Node.js v6.9.x (LTS) をインストールする

公式サイトの Debian and Ubuntu based Linux distributions に書いてある通りです。 % curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - % sudo apt-get install -y nodejs % node -v v6.9.1

リアルタイムな掲示板で最終掲示板戦争に参戦

ちょっと前から ChatBBS というリアルタイムな掲示板を作っていて、タイミングよく Twitter で id:r7kamura の 最終掲示板戦争 の話を知ったので参戦することにした。 2ch は Web1.0 の遺物 2ch は10年前の技術のまま全く進歩していない。Ajax すら使ってい…

Let's Encrypt の証明書を取得して nginx を SSL 化して HTTP/2 に対応する

Ubuntu 16.04 で certbot の公式サイト を参考に Let's Encript の証明書を取得して nginx で SSL の設定をする。また、cron で証明書の更新を自動化する。ついでに HTTP/2 にも対応する。 証明書の取得 まず certbot をインストールする。 $ sudo apt-get i…

ES6 でクラス変数(static変数)

ググってもあんまり情報ない感じだった。JS よく分からない。 たぶんこうすればいいんだと思う。 // user.js class User { static add() { this.count++; } } User.count = 0; module.exports = User; // main.js const User = require('./user.js'); consol…

ES6 環境構築

インストール $ npm i webpack babel-core babel-loader babel-preset-es2015 babel-polyfill -D $ npm i babel-cli -D babel の設定ファイルを追加 $ echo '{ "presets": ["es2015"] }' > .babelrc webpack の設定ファイルを追加 // webpack.config.js modu…

Rails で動的配信するアクションを宣言的に指定する

やりたかったこと UserAgent に応じて動的配信したい PC だったら通常の "#{action_name}.html.erb" を render したい スマホだったら "mobile_#{action_name}.html.erb" を render したい 動的配信するアクションを宣言的に指定するだけで render する view…

ansible-playbook コマンド一発で EC2 インスタンス起動、EIP 設定、プロビジョニングまで一気にやる

Ansible 2.0 で追加された ec2_ami_find モジュールを使うと使用したいディストリビューションの最新版の AMI を動的に取得できるようになりました。この記事では、 ec2_ami_find モジュールで AMI を探す ec2 モジュールで EC2 インスタンスを起動 起動した…

Reveal.js と git subtree でスライドの作成を Hack する

git でバージョン管理ができるのは reveal.js の明確なメリットだな。プレゼンを頻繁にするなら reveal.js が良さそう。学習コスト払っても回収できる— Tsukuru Tanimichi (@ttanimichi) 2016, 1月 19 すべてのスライドをひとつの repo で管理するのが良いと…

ホスト(host)とホスト名(hostname)の違い

ホストはポート番号も含むけどホスト名はポート番号を含まない、で良さそう。 > location.host "localhost:3000" > location.hostname "localhost" RFC2616 はざっと確認したけど、両者の違いが明言されている感じではなくて、ただ、文脈的に上記のことを言…

Ruby における new のコスト

ttanimichi/bigquery-client を作っていて、ビックデータを扱う都合上、性能が気になった。クラスメソッドで済ませることもできるけど、できればインスタンスメソッドにしたい処理があって、インスタンスを new することがどれくらいのコストになるのか測っ…

Active Admin でダッシュボードを消す方法

Dashboard を menu から消して root を別の action に設定すればいい。 # app/admin/dashboard.rb ActiveAdmin.register_page "Dashboard" do menu false end # config/initializers/active_admin.rb ActiveAdmin.setup do |config| config.root_to = 'myite…

PostgreSQL 9.4 を Ubuntu 14.04 にインストールする

sources.list を追加 sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' インストール sudo apt-get install wget ca-certificates wget --quiet -O - https://www.post…

Rubyのスクリプトを計測する

性能測定系のツール類について調べたので結果をまとめた。 time まずはtimeコマンドで実行時間を計測してみる。 % time ruby target.rb ruby target.rb 174.91s user 0.97s system 98% cpu 2:58.53 total % \time ruby target.rb 186.63 real 181.51 user 1.…

prependされたときにクラスメソッドとインスタンスメソッドを同時に追加するパターン

Rails: includeされた時にクラスメソッドとインスタンスメソッドを同時に追加する頻出パターン のprepend版がググってもあまり見当たらなかったのでメモしておきます。 ソースコード module M def self.prepended(base) class << base self.prepend(ClassMet…

エラトステネスの篩をRubyで実装する

エラトステネスの篩(エラトステネスのふるい)は、指定された整数以下の全ての素数を発見するための単純なアルゴリズムである。古代ギリシアの科学者、エラトステネスが考案したとされるため、この名がある。 エラトステネスの篩 - Wikipedia アルゴリズム …

Javaの参考書をまとめて書評する

Javaを書く機会がもう当分なさそうなので、持っていたJavaの参考書は自炊して電子化したり後輩にあげたりして全部処分した。今まで技術書の読書記録的なものはつけてこなかったので、忘れないうちにこれまでに読んだJavaの参考書をまとめて書評してみた。 や…

Chefでrbenvを使ってRubyをインストールする

Chefでrbenvを使ってRubyをインストールする方法のメモ。 関連記事 ChefとVagrantによる開発環境の構築 ChefでさくらVPSの環境構築を自動化する レシピの解説 今回は ChefとVagrantによる開発環境の構築 で作成したレシピを使って解説する。完成したレシピは…

ChefでさくらVPSの環境構築を自動化する

入門Chef Solo - Infrastructure as Code を参考に、Chefを使ってさくらVPSの環境構築を自動化した。 関連記事 ChefとVagrantによる開発環境の構築 Chefでrbenvを使ってRubyをインストールする 前提 サーバの環境構築をChefで自動化する場合、まずはVagrant…

ChefとVagrantによる開発環境構築の自動化

入門Chef Solo - Infrastructure as Code を参考に、ChefとVagrantで開発環境の構築を自動化した。 関連記事 TODO: UPDATE ChefでさくらVPSの環境構築を自動化する Chefでrbenvを使ってRubyをインストールする Vagrantのインストール Download Vagrant - Vag…

Emacsで変数を自動的にハイライトする

EmacsでIDEみたいにカーソルをあわせた変数を自動的にハイライトしたい。"Emacs 変数 ハイライト"でググると、以下のページがトップヒットする。 emacsで変数を自動ハイライト | Act as Professional - hiroki.jp が、この情報はもう古くて、https://github.…