Skip to content

Instantly share code, notes, and snippets.

@kawanet
kawanet / setTimeout.js
Last active December 11, 2015 01:58
This waits 1 msec with jQuery Deferred or with traditional setTimeout.
// 何かDOM操作する(この時点ではまだ描画されない)
$('#status').text('処理を開始します');
// setTimeoutを使ってDOM描画を待つ
setTimeout(function() {
// 1ミリ秒後に開始する重い処理
}, 1);
@kawanet
kawanet / unescape.js
Created January 15, 2013 07:33
This does unescape &#xHHHH; \uHHHH on HTML/JSON/YAML etc. An Unicode escape decoder.
var cache = {};
var regex = /\\u[0-9a-f]{4}|\&(\w+|\#([0-9]+|x[0-9a-f]+))\;/g;
var ignore = /[\x00-\x20\>\<\&\"\']/;
var func = function (match) {
var ret = cache[match];
if (! ret) {
var head = match.charAt(0);
if (head == "&") {
var p = document.createElement("p");
p.innerHTML = match;
@kawanet
kawanet / lazybuild.js
Created January 15, 2013 07:35
JavaScript property lazy build lazy initialization getter method
var seq = 0;
var Foo = function () {
this.seq = ++ seq;
};
var Bar = function () {
this.fooB = new Foo();
};
Bar.prototype = {
fooA: new Foo(), // shared
get fooC() {
@kawanet
kawanet / xmas.js
Last active December 11, 2015 03:19
Xmas - Feel Christmas on every website
var walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT);
var buf = [];
while(walker.nextNode()) {
var src = walker.currentNode;
if (! src) continue;
var text = src.data;
if (! text.length) continue;
text = text.replace(/[\s\r\n\t]+/g, '');
if (text.length < 1) continue;
if (! src.parentNode) continue;
@kawanet
kawanet / strftime.js
Last active November 26, 2022 01:52
strftime - JavaScript implementation for strftime() function of ISO C90 + α
const en_US = {
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
AM: "AM",
PM: "PM",
};
const literal = {
@kawanet
kawanet / languageName.m
Created January 30, 2013 03:32
languageNameForLanguageCode:(NSString*)targetLang inLanguageCode:(NSString*)displayLang // this convert language code (ex. en, fr, ja) to language name (ex. English, français, 日本語)
/****
NSLog(@"%@", [self languageNameForLanguageCode:@"fr" inLanguageCode:@"en"]); // French
NSLog(@"%@", [self languageNameForLanguageCode:@"ja" inLanguageCode:@"fr"]); // japonais
NSLog(@"%@", [self languageNameForLanguageCode:@"en" inLanguageCode:@"ja"]); // 英語
****/
- (NSString*)languageNameForLanguageCode:(NSString*)targetLang inLanguageCode:(NSString*)displayLang
{
CFLocaleRef displayLocale = CFLocaleCreate(kCFAllocatorDefault, (CFStringRef)displayLang);
CFStringRef displayName = CFLocaleCopyDisplayNameForPropertyValue(displayLocale, kCFLocaleLanguageCode, (CFStringRef)targetLang);
@kawanet
kawanet / array_to_regexp.js
Created May 8, 2013 14:33
文字列の配列を、記号エスケープしつつ、正規表現オブジェクトに変換する JavaScript 関数
/**
* @param {array} array - Array of strings. ex. ["aaa", "bb.cc", "(ddd)"]
* @returns {Number} - RegExp object escaped and joined. ex. /aaa|bb\.cc|\(ddd\)/
*/
function array_to_regexp(array, opt) {
var re = array.sort(function(a, b) {
return b.length - a.length;
}).map(function(str) {
return str.replace(/\W/g, function(match) {
@kawanet
kawanet / hiragana-katakana.js
Last active December 19, 2022 23:56
カタカナをひらがなに変換する JavaScript 関数、 ひらがなをカタカナに変換する JavaScript 関数
/** カタカナをひらがなに変換する関数
* @param {String} src - カタカナ
* @returns {String} - ひらがな
*/
function katakanaToHiragana(src) {
return src.replace(/[\u30a1-\u30f6]/g, function(match) {
var chr = match.charCodeAt(0) - 0x60;
return String.fromCharCode(chr);
});
@kawanet
kawanet / 1-load-sdks.html
Last active December 17, 2015 07:58
Twitter ツイートボタン、Facebook いいねボタン、Google +1 ボタン、LinkedIn ボタンを非同期に表示するための HTML・JavaScript コード
<!-- JavaScript SDK の非同期読み込み。Facebook のみ App Id が必要 -->
<script src="http://platform.twitter.com/widgets.js" async></script>
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1&appId=123456789012345" async></script>
<script src="http://apis.google.com/js/plusone.js" async></script>
<script src="http://platform.linkedin.com/in.js" async></script>
@kawanet
kawanet / s3mirror.js
Last active July 22, 2016 22:43
Download a file and directly upload it to Amazon S3. ファイルを外部のウェブサーバからダウンロードして、そのまま S3 にアップロードする。
/*! s3mirror.js */
var knox = require("knox");
var http = require("http");
var opts = {
source: 'http://www.example.com/title.png',
knox: {
endpoint: 's3-ap-northeast-1.amazonaws.com', // tokyo region
key: '<api-key-here>',