Skip to content

Instantly share code, notes, and snippets.

View akirattii's full-sized avatar

Akira TANAKA akirattii

View GitHub Profile
@akirattii
akirattii / loadImage.js
Created June 29, 2016 22:59
Downloads and views an image on Chrome App and Extension
/**
* dl an external image resource and append it as an img element into the rootEl
*
* @param {String}
* image resource's url
* @param {Element} Optional
* root element to be appended an img element.
* @param {Function} Optional
* callback function. 'function(imgEl){...}'
@akirattii
akirattii / AmazonRecommendItemsGetter.js
Created June 29, 2016 23:01
Snippet for amazon recommend items
// manifest.json
/*
...
"permissions": [
"*://*.amazon.co.jp/*",
"*://*.amazon.com/*"
or
"<all_urls>"
],
...
@akirattii
akirattii / ArrayBufferToStringOrDom.js
Created July 14, 2016 12:00
From ArrayBuffer to String | From ArrayBuffer of html to DOM
// buf is ArrayBuffer
function ab2str(buf) {
return td.decode(new Uint8Array(buf));
}
function ab2dom(buf) {
let html = ab2str(buf);
let rootEl = document.createElement('html');
rootEl.innerHTML = html;
@akirattii
akirattii / example-WSC.ChromeSocketXMLHttpRequest.js
Created July 14, 2016 12:05
Over the unsafe header restriction of Chrome apps using WSC.ChromeSocketXMLHttpRequest
// First,
// $ git clone https://github.com/kzahel/web-server-chrome.git
// $ ./minimize.sh
// and ...
// load wsc-chrome.min.js in your html
function request(url, headers, cb) {
let xhr = new WSC.ChromeSocketXMLHttpRequest;
let headersLen = headers.length;
let k, v;
@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