【python】Snow leopardにcythonをpipでインストール【mac osx】

2011年11月21日月曜日 15:31 By Unknown , In

やろうと思ったらコケました。。

以下のようやったらイケましたよ。
easy_installの場合も多分一緒。

% sudo su -
% env ARCHFLAGS="-arch i386 -arch x86_64" pip install cython

【Django】DynamicにFormsetを生成するJavaScriptのライブラリを作ったよ【Mootools】

2011年11月14日月曜日 18:57 By Unknown , In , ,


DjangoのFormsetを動的に増やしたり削除したり並び替えたりしたかったんです。。

調べたとろこjQueryにしかそういうライブラリがなかったので、Mootools好きな私と致しましては居ても立ってもいられず、こうしてライブラリを作成した次第でありますです。

って事で、内容に関する説明は面倒なのでしませんw
みんな頑張っていじくって使い方模索してね!
気が向いたらドキュメント書きますー。

[Django Dynamic Formset with Mootools]
https://bitbucket.org/odoku/django-dynamic-formset-with-mootools/

あ、一応動くと思うけど例に漏れずあんまりテストしてないのでお気をつけを。。

[ScreenShots]



【JavaScript】時間と秒の相互変換【Mootools】

2011年11月10日木曜日 12:05 By Unknown , In ,

Mootools大好きっ子(jQuery大嫌いっ子)の僕だよ!

JSってなんか時間まわりの使い勝手がイマイチな気がするのです。
PHPが使いやすいってだけなのかもしれませんけども。。

という訳でお題の通り「時間と秒の相互変換」を行う関数を書きました。
普通に関数書くのじゃつまらないので、StringクラスとNumberクラスに盛り込んでみましたとさ。

Number.implement({
    secToTime: function(hour) {
        if (arguments.length == 0) hour = true;
        
        var sec = this.toFloat();
        
        if (hour) {
            var hours = ("0" + Math.floor(sec / 3600).toString()).slice(-2);
            var minutes = ("0" + Math.floor(sec % 3600 / 60).toString()).slice(-2);
            var seconds = ("0" + Math.floor(sec % 60).toString()).slice(-2);
            return hours + ':' + minutes + ':' + seconds;
        } else {
            var minutes = ("0" + Math.floor(sec / 60).toString()).slice(-2);
            var seconds = ("0" + Math.floor(sec % 60).toString()).slice(-2);
            return minutes + ':' + seconds;
        }
    }
})

String.implement({
    timeToSec: function() {
        var regexp = /^(?:(?:(\d+):)?(\d+):)?(\d+)$/;
        var timeString = this.toString();
        var matches = timeString.match(regexp);
        if (matches == null) return false;
        
        var sec = 0;
        if (matches[1]) sec += matches[1].toInt() * 3600;
        if (matches[2]) sec += matches[2].toInt() * 60;
        sec += matches[3].toInt();
        
        return sec;
    },
    secToTime: function(hour) {
        if (arguments.length == 0) hour = true;
        var sec = this.toInt();
        return sec.secToTime(hour);
    }
})

var sec1 =       '60'.timeToSec();
var sec2 =    '30:00'.timeToSec();
var sec3 = '01:00:00'.timeToSec();

console.log(sec1); // 60
console.log(sec2); // 1800
console.log(sec3); // 3600

var time1 = sec1.secToTime();
var time2 = sec2.secToTime();
var time3 = sec3.secToTime();

console.log(time1); // 00:01:00
console.log(time2); // 00:30:00
console.log(time3); // 01:00:00

time1 = sec1.secToTime(false);
time2 = sec2.secToTime(false);
time3 = sec3.secToTime(false);

console.log(time1); // 01:00
console.log(time2); // 30:00
console.log(time3); // 60:00

あんまりテストしてないけど、多分大丈夫◎