Skip to content

Instantly share code, notes, and snippets.

View akirattii's full-sized avatar

Akira TANAKA akirattii

View GitHub Profile
@akirattii
akirattii / regex.exec-loop.js
Created July 14, 2016 23:34
RegExp.exec search looping...
var reg = new RegExp(/e(.*?)e/g);
var result;
while((result = reg.exec(targetText)) !== null) {
doSomethingWith(result);
}
@akirattii
akirattii / filemanager.js
Created July 15, 2016 10:31
filesystem manager includes opening file dialog, csv manipulation etc.
/**
* File Manager for Chrome apps
*/
var fileManager = function() {
/**
* write a file using opendir dialog interactively.
* @param {String} filename
* @param {String} text to output into the file
* @param {Function} callback(function(err, fileEntry){...}) Optional
@akirattii
akirattii / controlling-loop-from-async-function-in-the-loop.js
Last active October 7, 2016 05:26
ループ内の非同期なfunctionからループ実行のタイミングを制御して、処理全体を同期っぽく動かす方法。 setInterval を使ったループよりも効率的。
// ループ内の非同期なfunctionからループ実行のタイミングを制御して、処理全体を同期っぽく動かす方法。
// この方法なら setInterval を使ったループよりも効率的。
var arr = ["a", "b", "c"];
var iter = function* () {
let i = 0;
let lastIdx = arr.length - 1;
while (true) {
console.log("Before yeild");
@akirattii
akirattii / localed-date-using-moment-timezone.js
Last active October 26, 2016 22:54
How to set locale (timezone) using moment-timezone.js
var moment = require('moment-timezone');
// All timezone? See: node_modules/moment-timezone/data/meta/latest.json
let d = moment().tz('Asia/Tokyo').format(); // 2016-10-27T07:31:29+09:00
// let d = moment("2016-09-15 23:59:59").tz('America/Phoenix').format(); // 2016-09-15T07:59:59-07:00
// let d = moment().tz('America/Phoenix').format(); // 2016-10-26T15:31:16-07:00
console.log(d);
@akirattii
akirattii / mobile-internet.sh
Last active October 30, 2016 22:28
NetworkManagerで登録済みのアクセスポイントにコマンドラインからBT接続するためのシェル ($ ./mobile-internet.sh { up | down })
#!/bin/bash
#
# Usage:
# ### Connect:
# $ ./mobile-internet up
# ### Disconnect:
# $ ./mobile-internet down
#
@akirattii
akirattii / bt-audio.sh
Last active October 30, 2016 22:29
BTヘッドセットを使うためのシェル ($ ./bt-audio.sh { connect | disconnect })
#!/bin/bash
# Device E3:28:E9:21:61:5E TaoTronics TT-BH07
mac="E3:28:E9:21:61:5E"
devname="TaoTronics TT-BH07"
# このshを使う前にあらかじめペアリングしておく:
# $ bluetoothctl
# ...
# [NEW] Device E3:28:E9:21:61:5E TaoTronics TT-BH07
@akirattii
akirattii / create-remote-git-repo-on-serverside.sh
Created November 22, 2016 00:34
memo: how to create git remote repository on serverside then push or clone a project from clientside
# create user
adduser gitrepo
usermod -aG gitrepo akirattii
# create remote git repos
su - gitrepo
mkdir hoge.git
cd hoge.git # pwd: `foo_server:/home/gitrepo/hoge.git/`
git --bare init --shared
git update-server-info
@akirattii
akirattii / ES2015-uglifyjs2-browserify.sh
Last active November 22, 2016 11:59
How to browserify & uglify ES2015 code
## Install browserify:
$ npm install -g browserify
# Install uglify-js:
### First remove already installed one:
$ npm remove uglify-js -g
### Install the ES2015 compatible version from 'harmony' branch:
$ npm install -g https://github.com/mishoo/UglifyJS2.git#harmony
# Try uglify of ES2015 code:
@akirattii
akirattii / ElementUtil.loadElements.js
Created November 24, 2016 21:43
Loads all elements having `id` attr into the global as jQuery object dynamically
// Load elements having `id` attr on `document` as global variables (in directly under `window`)
// They are loaded as jQuery object named as camelcase with prefix "$".
// eg. An element is loaded as a variable named like this: id="ipt-name" -> `$iptName`
exports.loadElements = function() {
console.log(`[${moduleName}] auto-loading elements as jQuery elements...`);
check();
let els = document.getElementsByTagName("*");
let el, camelId, varname;
@akirattii
akirattii / create-and-fire-custom-event.js
Created November 25, 2016 04:53
Create and fire custom event
// fire `hoge` event.
window.dispatchEvent(new Event('hoge'));
window.addEventListener('hoge', function(e) {
// callbacked on `hoge` event fired.
console.log('"hoge" event fired.');
});