あいつの日誌β

働きながら旅しています。

Javascript

How to get the real URL behind a shortened URL using cURL and axios

こういうのを Node.js でやりたい時は $ curl -sLI http://shortened_url | grep -i Location axios の get に以下のようなオプションを渡してあげるとよい const axios = require('axios') async function main () { const res = await axios.get('https://…

parcel src/index.html 的なコマンドを実行すると Cannot find module 'babel-plugin-babel-root-slash-import' と言われる場合

こんな感じの .babelrc を用意してあげると良いでしょう。 { "plugins": [ ["module-resolver", { "root": ["./src"] }] ] } あとそれから Uncaught ReferenceError: regeneratorRuntime is not defined とか言われたら require('babel-polyfill') とかして…

weworkremotely.com をスクレイピングしたメモ

英語の勉強しているのですがモチベーションを維持したいなあと思って書いたスクリプトです。 海外で remote worker 向けの求人サイトがあるので時々眺めていると location が Anywhere となっている求人があって「英語話せるようになれば日本に居ながら仕事…

memoize するときに array in array な table を作りたい

最近英語の勉強するために英語でアルゴリズムを解説している動画を youtube で見ています。 計算量が増えないように memorize する事が多いようです。 さて、memoize 用の連想配列を頑張って書くのいやなので([[],[],[],[]]みたいなの)関数にしてみました。 …

ES6 の module exports の機能に関するクイズ

突然ですがクイズです。ES6 の module exports の機能として正しいものを選びなさい 問題1 関数毎に export されている場合 export const One = () => ( <div>one</div> ) export const Two = () => ( <div>two</div> ) 以下の記述で呼び出しができる。マルかバツか? import { One…

ES6 での range 関数を書いてみた

あらすじ Ruby でいう to_a のアレを JavaScript で書いてみた function range(from, to) { return [...Array(to - from + 1).keys()].map(x => x + from) } console.log(range(0, 10)) console.log(range(3, 10)) 出力結果 [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,…

Node.js v7.6.0 以降で async と await で逐次処理を書く

Node.js v7.6.0 から async と await が --harmony フラグ無しで使えるようになっています。 以下のような逐次処理を書くときに簡単に書けるようになりました。 async function x() { let total = 0 for (let i = 0; i < 100; i++) { total += await Promise…

react-script build すると process.env.NODE_ENV === "production" になる

title で全ての説明が終わった気がしますが以下のようなコードを書いていて const apiUrl = (process.env.NODE_ENV !== "build") ? "http://localhost:3041/api" : "/api" package.json には以下のような記述をしていましたが process.env.NODE_ENV が build…

okamuuu.com を Gatsby と Netlify に移行しました

Gatsby x Netlify netlify.com github.com あらすじ 先日まで okamuuu.com を Google App Engine 上で Go と React.js で運用していましたが github.com の gh-pages に移動しました。Google App Engine を使う案件にアサインされていたので練習のために運用…

ES2015 でとまどいがちな記法 Object initializer と Spread Operator

あらすじ ES6 の記法を全て覚えてから ES6 を書くよりも、書きながら勉強したほうが効率が良かったりします。 なんですが写経している時に分からない記法が出てきた場合検索しづらくて困ると思います。 というわけで私がどうやって Google に質問すればいい…

Javascript で複数ある正規表現のいずれかがマッチしているものを取得する

以下のように Javascript の switch 文を使おうかなと思いました。 http://qiita.com/piyohiko/items/a84648599eba7697675f なんですが、判定したいだけじゃなく、マッチした要素を抽出したいのでなんとなく OR 演算子を使いました。 const githubRegex = ne…

X-TAG を試したい場合に取り急ぐやり方

ready mkdir pracitcie-x-tag && ce $_ npm init --yes npm install --save x-tag npm install --save-dev webpack webpack-dev-server add: entry.js const xtag = require('x-tag'); xtag.register('x-clock', { lifecycle: { created: function(){ this.s…

eslint-disable と eslint-disable-line

作業しているとよく eslint が max-len 超えてるよと警告してくれます。こんな感じの。 the maximum line length of 80. (max-len) なんですが、文字リテラルがそもそも80文字超えているケースがあったりします。 その場合は行以下のようにして警告しないよ…

console.time で経過時間を調べる

今までこんな風に書いていましたが 'use strict'; const startXXXTime = new Date(); const startYYYTime = new Date(); setTimeout(() => { console.log('XXX :' + (new Date() - startXXXTime) + 'ms'); }, 1000); setTimeout(() => { console.log('YYY :'…

console.log で階層(depth)を指定する方法

もう何回も検索しているのでメモ const util = require('util') console.log(util.inspect(obj, {depth: 0}));

mocha で coverage が動かなくなったので istanbul にした

とある node.js で動かしていた coverage 生成ツールが動かなくなったので調べた。 blanket.js はすでに開発者不在の状態なので istanbul を使います。 サンプルコード % mkdir practice-istanbul && cd $_ % npm init -f % npm install --save-dev mocha is…

並列処理を ES6 の Promise で書く場合

Promise で並列処理を書く場合はこのように書くといいかも。 var tasks = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; // var tasks = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; Promise.all(tasks.map(function(num) { return new Promise(function(resolve, reject) …

sinon.js を自習メモ

あらすじ sinon.js の使い方を毎回 Google 先生に何でしたっけ?って聞くので自分のブログに書いておきます。 せっかくなので覚えたての jsdom も使いたいと思います。 引用元 この記事は下記を自分向けに編集したものです。 http://qiita.com/halhide/items…

gulp で karma すると TypeError: Cannot redefine property: startsWith

あらすじ gulp で karma 実行しようとしたらなんかこんなんでた [17:00:20] TypeError: Cannot redefine property: startsWith at Object.defineProperty [as setDesc] (native) at module.exports.object.(anonymous function) (node_modules/karma/node_mo…

JS の関数巻き上げ問題について

ES6 の let とか使わないと、こんな問題が起きるので備忘録 var a = 'outer'; function bar() { console.log(a); var a = 'inner'; console.log(a); } bar(); 結果 undefined inner くわしい事は以下の記事 JavaScript 巻き上げについて - Qiita

material-ui を試してみた

あらすじ 最近 Google が Material design なるものを発表して material design light という css と javascript を公開しました https://github.com/google/material-design-lite そして、これと React.js 使ってアプリ使いたい気分になった今日この頃なの…

commonJS 未対応 version の Angular.js でも browserify したい

あらすじ Angular.js 1.4 が CommonJS に対応してきたので require したくなりました。 なんですが既存の app の Anugluar.js が 1.3.x だった場合はどうすればいい? まずは 1.4 から試す % mkdir angular-browserify-sample && cd $_ % npm init -f % npm …

Javascript のチルダを検索するのにいつも時間がかかるのでメモ

Google は波の形をした~(チルダ) を検索することができないらしい https://support.google.com/websearch/answer/2466433?hl=ja で、javascript でこういう記述をたまに見かけて調べるのが面倒なので自分用にメモ num / 2 とかそういうときに使う > ~~(1.2) …

久しぶりに DateTime Picker を使った

jQuery と BootStrap が微妙にアップデートされて Bootstrap Date Picker がなんだか上手いこと動いてくれなかったりした場合 Bootstrap DateTime Picker を使ったらいいかも。 https://github.com/Eonasdan/bootstrap-datetimepicker https://itunes.apple.…

また DateTime でポカしたので備忘録

DB に ymd 形式(utc)で保持している文字列を JST に変換するときにポカした moment = require 'moment' ymd = '2014-12-18 00:00:00' # utc dt = new Date(ymd) m = moment.utc new Date(ymd) console.log dt # Thu Dec 18 2014 00:00:00 GMT+0900 (JST) con…