l()有什麼不對

話說PHP因為不像JavaScript內建的log函式庫就挺不錯,不同的源碼中總是可以看到自己的log函式。最常見的不外乎是可以印出任意個引數值到error log / stdout / stderr,或是印出第一個引數後回傳之。

誒~但可能是大家都想盡量少打些字吧,我發現這類函式經常被命名為 l()。對,就一個一柱定海的l

是很精簡啦,而且l這字看久也蠻美的 … 但個人認為這並不是一個好名字。為什麼?因為不夠明顯啊。這就有點像C++為什麼要引入static_cast reinterpret_cast啥的來取代C-style cast,要特別留意的東西應該要盡量設計成引人注目會比較好。

基於這項理由,我自己在用的是mango()guava()litchi()

……………….

……………….

真的啦,有code為證:

function mango( $val ) {
    if ( is_null( $val ) ) {
        return 'NULL';
    } elseif ( false === $val ) {
        return 'FALSE';
    } elseif ( true === $val ) {
        return 'TRUE';
    }

    return print_r( $val, true );
}

function guava() {
    $arg_strs = array_map( 'mango', func_get_args() );
    $log = join( ' ', $arg_strs );

    error_log( $log );
}

function litchi( $arg, $label = 'log value:' ) {
    guava( $label, $arg );
    return $arg;
}

說真的,自從我把這些log函式從WTF系列改成這台灣味的水果系列,整個人debug起來心平氣和,修為都提升了呢 🤪

而且另外的好處是很好搜尋啊。大家在提交源碼前相信公司都會要求把不必要的debugging log都拿掉吧?(啥?你們公司不用?塊陶啊~) 這樣只要ag guava就一定能找出所有的debugging log了呢。雖然也可以用ag '\bl\('找到所有的l()呼叫,但這打起來手就癢癢的,沒這麼順暢呢 … (個人因素

我在某次working tips分享中分享了這個小撇步,會後有人漲紅著臉拿了這個給我看:

function 👻( $val ) {
if ( is_null( $val ) ) {
return 'NULL';
} elseif ( false === $val ) {
return 'FALSE';
} elseif ( true === $val ) {
return 'TRUE';
}
return print_r( $val, true );
}
function 💩() {
$arg_strs = array_map( '👻', func_get_args() );
$log = join( ' ', $arg_strs );
error_log( $log );
}

嗯 … 真是超級明顯又好搜尋呢

第三順位症

精實的customer marketing Seattle meetup落幕一陣子了。短短5天中共計3個sub team加上WordPress.com design team lead:Ian Stewart,與元老Andy Peatling聚首,密集地討論了許多重要事項。題目很多,但大致上是圍繞在WordPress.org / .com的使用經驗設計上仍大幅落後新銳如Wix與SquareSpace。我們有些人私底下稱這個叫『設計債』,大約三年前a8c就大動作投資在償還這個設計債,到現在還沒還完。所以,以後哪個傢伙說設計不重要、設計的工作只是把東西弄漂亮,請告訴他這個鐵錚錚的事實:WordPress.com系統層面展現的技術力絕對大幅領先許多競爭對手,但因為長期不把設計當一回事,現在每年成長率都被新銳們遠遠甩在後面,即使我們追了三年也還沒追上。啥?某人還是不聽?好職缺不投嗎 ^.<

言歸正傳。

這次寫這篇文章,是想提一下在討論中聽到的一個有趣的概念,叫『第三順位症』。簡言之,任何落入第三順位的事都有個共通症狀:長期投資,生不出個鳥,丟了又可惜,於是持續消耗資源,卻無法完成。

這應該只是Kirk Wright這廝臨場想出來的詞,但我覺得相當貼切,所以為文記錄一下。

繼續閱讀 “第三順位症"

遠端工作奧義 …

不知不覺間已經迎來遠端工作的第三個年頭。

這陣子因為家務較為繁忙,外出的次數變少,也不太像以前那樣跑去河邊山間馬路邊,而是以舒適的咖啡廳為主。

View this post on Instagram

菠蘿麵包還不錯

A post shared by James Tien (@southp0105) on

View this post on Instagram

久沒外出

A post shared by James Tien (@southp0105) on

三年了,再怎麼混也算資歷略有略有。略有了,就略常被問起一些遠端工作的秘訣。什麼時間規劃啦、外出選點啦、日常裝備啥的,重要是重要啦,但講起真正能讓你上山下海都如魚得水的,想來想去只得一招。

那就是 …

定時大●

大?大什麼大?我說大●啊

哎呀,我真的沒有在開玩笑,請待我娓娓道來。

繼續閱讀 “遠端工作奧義 …"

WordPress.com新衣的內面 …

相信許多人都注意到了,近日WordPress.com已堂堂換上全新春裝(?)

新衣的內面,不是迷人的胴體,而是可總結為以下三點的意義:

  1. 往WCAG網頁無障礙標準推進
  2. 品牌識別
  3. 實作可抽換佈景主題的架構

嗯,聽起來好像是某種意義上的迷人胴體?有興趣看俺叨念一下細節的話,請見全文。

繼續閱讀 “WordPress.com新衣的內面 …"

投資試算好物推薦: Calculator.net

每當到新的一年,我固定會做的事就是根據去年一年的收支情形,重新設定目標後再透過試算工具來制定計畫來達成目標。諸如:

如果在N年後要存到X,現在開始每個月要存多少錢?
如果要存到X,目標年報酬率要設定在多少才能在Y年達到?
如果每個月多還本X元,貸款會早多久還清、節省多少利息?

這些問題自己透過複利公式都可以求得,但網路上試算工具無數,真的沒必要這麼辛苦。這裡推薦一下calculator.net上的Investment calculatorMortgage payoff calculator

前者適用於各種投資目標的試算,後者則是貸款清償試算。

繼續閱讀 “投資試算好物推薦: Calculator.net"

9合1激情過後

『給軟人一碗滷肉飯』

感謝賢妻巧手,沒什麼能比一碗香濃滿載膠質油脂的滷肉飯更讓我能能恢復冷靜了。

每次選舉總是幾家歡樂幾家愁,這次史無前例的馬拉松式9合1大選,在選前N個月各方就開始戰得難分難解,選後的餘音更是比以往繞樑更長更久,實在太多事不吐不快。

以下概括個人對這次選舉的見解,充滿個人觀點的政治文請慎入。

繼續閱讀 “9合1激情過後"