Skip to content

Instantly share code, notes, and snippets.

@s-aska
s-aska / localizer.js
Created June 14, 2011 11:05
localizer.js
// before html
// <html lang="ja">
// <span data-text-ja="タイムライン">Timeline</span>
//
// var localizer = new Localizer();
// localizer.localize();
//
// after html
// <span data-text-ja="タイムライン">タイムライン</span>
@s-aska
s-aska / sample_ajax_with_csft.js
Created June 15, 2011 07:18
ajax with csrf_token
// https://github.com/tokuhirom/Amon/blob/master/lib/Amon2/Plugin/Web/CSRFDefender.pm
function ajax(option) {
this.token_name = 'csrf_token'; // 実際は別のところでsetupしておく
if ("data" in option && "type" in option && option.type.toLowerCase() == 'post') {
if (!this.token) {
this.token = $('input[name=' + this.token_name + ']:first').val();
}
option.data[this.token_name] = this.token;
}
return $.ajax(option);
@s-aska
s-aska / sort.js
Created June 15, 2011 13:34
ul sort
var lis = [];
this.parts.tasks.find('> li').each(function(i, ele) {
lis.push($(ele));
});
lis = lis.sort(function(a, b) {
return b.data('updated') - a.data('updated');
});
for (var i = 0; i < lis.length; i++) {
lis[i].appendTo(this.parts.tasks);
}
@s-aska
s-aska / MIME-Parser-Delux.pm
Created July 5, 2011 03:03
MIME::Parser::Delux
package MIME::Parser::Delux;
use strict;
use Encode;
use Encode::Alias;
use Encode::Guess qw/euc-jp shiftjis 7bit-jis/;
use File::Temp qw/ :seekable /;
use MIME::Parser;
use MIME::WordDecoder;
use MIME::Words qw(:all);
@s-aska
s-aska / delayHover.js
Created July 19, 2011 19:30
jQuery hover delay
function delayHover(element, over, out, delay) {
var timer;
$(element).hover(function(){
if (timer) {
clearTimeout(timer);
timer = null;
} else {
over.apply(this, arguments);
}
}, function(){
@s-aska
s-aska / gist:1094456
Created July 20, 2011 06:32
How to Build One Page Apps
How to Build One Page Apps
実サービス(9月下旬完成予定)を例にOne Page Appsの作り方を紹介します。
One Page Apps(Single Page Application)とは1枚のHTMLで構成されたWebアプリケーションでTweetDech等が有名です。
一日中開いたままでもバックグラウンドで同期が走り、必要に応じて通知やDOMの再構成が行われ、オフライン中の操作はスタックされ、通信回復後に再同期が行われる様なクライアントアプリケーションに非常に近い実装が必要になります。
実用的なアプリケーションにする為には標準のUIだけでは力不足ですし、開発効率を保つ為には肥大化しがちなJsコードをうまく整頓するコツも必要です。
@s-aska
s-aska / gist:1095068
Created July 20, 2011 14:34
initElements
function initElements(context) {
$('*[data-init]', context).each(function(){
var ele = $(this);
var methods = ele.data('init').split(',');
for (var i = 0, max_i = methods.length; i < max_i; i++) {
app.exec(['initElement', methods[i]], [this]);
}
});
}
function initElementClick(element) {
@s-aska
s-aska / test_psgi_error.t
Created July 28, 2011 10:09
PSGI Error Test
# 500
test_psgi
app => builder {
enable "StackTrace", no_print_errors => 1; # no warning in make test.
MyApp->handler
},
client => sub {
my $cb = shift;
my $req = HTTP::Request->new( GET => 'http://localhost/foo/error' );
$req->header('Accept' => 'text/html'); # get stack trace message
my $zip;
open my $fh, "<:encoding(cp932)", $ken;
while (my $row = $csv->getline($fh)) {
next if $zip->{$row->[2]};
$zip->{$row->[2]}++;
$model->insert( 'minotaur_zip', {
zip => $row->[2],
pref => substr($row->[0], 0, 2),
address1 => $row->[7],
address2 => $row->[8]
@s-aska
s-aska / blowfish.pl
Created August 12, 2011 11:31
blowfish
#!/usr/bin/env perl
use strict;
use warnings;
use Crypt::CBC;
use Crypt::Blowfish;
my $key = shift;
my $val = shift;