TeaMeow 的懶人教室 —— 條件式

這裡是我本身會寫的懶人作法,有時候會讓程式更簡潔,通常是 PHP 或者 JS 都可以用。


如果⋯⋯

你可以把「如果怎樣,這個值就怎樣的」方式縮短,例如原本:

if($Foo)
{
    $Bar = 'OK';
{
else
{
    $Bar = 'Not OK';
}

可以變成

if($Foo)
    $Bar = 'OK';
else
    $Bar = 'Not OK';

更可以變成

$Foo = ($Bar) ? 'OK' 
              : 'Not OK';

必須⋯⋯

有時候你會用「IF 去框住,例如必須大於多少,才可以」的方式,大概是:

function Foo($Bar)
{
    // 必須大於 50 才執行下面語句
    if($Bar > 50)
    {
        $Msg  = 'Im Really OK.';
        $Time = time();
    }
}

可以改成

function Foo($Bar)
{
    // 直接在開頭就先做了斷
    if($Bar > 50) return;

    $Msg  = 'Im Really OK.';
    $Time = time();
}

如何解決時區問題?

螢幕快照 2015-08-02 下午5.10.19

原本是想說在資料庫裡存上「時間微調」,例如「GMT +8」就會存上「480(正整數)」(將小時換成分鐘)

接著在需要呼叫時間的時候用下列方式去回傳:

$TimeOffset = 480;

date($TimeFormat, $Time + ($TimeOffset * 60) * 60)

原理很簡單,就是將 Unix 時間加上「正」或是「負」來微調時間,模擬 +00:00 或是 -00:00 之類的時區

但是後來發現網路上有人說這樣做並不可行,例如英國在三月到十月之間,時區為 BST (GMT + 1)

這個時候我們所做的「時間微調」就廢掉了,這是想玩死誰。


最後

這個時候還是只能投靠原 PHP 的函式了,那就是 DateTime 函式

然後就必需存像這樣的字串在資料庫裡:"Asia/Taipei", “Pacific/Nauru",

這裡是他的用法

$DateTime = new DateTime($TimeStamp, $TimeZone);
echo $DateTime->format('Y-m-d H:i:s');
$Datetime->setTimezone(new DateTimeZone('Asia/Taipei'));
echo $DateTime->format('Y-m-d H:i:s');

兩個迴圈會比一個迴圈快嗎?探討 Avane 迴圈。

2015-07-27 20.55.04

Avane 是一個 TeaMeow 開發的模板引擎,這次又遇上了一個有趣的問題:

兩個迴圈,會比一個迴圈的效能還要快嗎?

也許你會想:「這什麼蠢問題,兩個怎麼可能比一個快」,但是基於我腦殘的實驗精神,

我決定來揭開我心中的這個心結,不過也許你開始發現了,這所謂的「兩個迴圈」一定是用在不同的地方,

沒錯,那麼就開始研究吧。閱讀更多»

Avane 的速度慢了原生 require 的三十倍?

avane-logo

是時候該提到 Avane 的速度性能問題了,Avane 大概是在一年前出生的,

那個時候還沒想到「性能」的問題,只有想到關於編譯器(Avane 有自己的編譯器,看這裡暸解更多)

還有怎麼處理跟快取而已,但是最近發現就算 Avane 有快取,速度怎麼還是慢 PHP 原生的 Require 四分之一倍!?閱讀更多»