網頁

2015年2月20日 星期五

iOS開發筆記 - What is ObjC

之前老是在Other linker flags設定-ObjC,總是不大懂為什麼,查了下,在Technical Q&A QA1490 - Building Objective-C static libraries with categories中提到如下:

The -ObjC Linker Flag

Passing the -ObjC option to the linker causes it to load all members of static libraries that implement any Objective-C class or category. This will pickup any category method implementations. But it can make the resulting executable larger, and may pickup unnecessary objects. For this reason it is not on by default.
看起來簡單的解釋是:要載入其他用Objective-C寫的靜態library,要設定這個flag。而這個flag也有造成執行檔肥大的問題。

這倒讓我想到那有可能不用這個設定嗎???

參考網址:
What does the -ObjC linker flag do?
Technical Q&A QA1490 - Building Objective-C static libraries with categories

2015年2月18日 星期三

不錯的字型

http://free.com.tw/input-fonts

照著做就好 XD

取得使用者目前的時區

最近一個網站的對象是整個美國,加上有每日記錄的問題,發生了使用者在同一個做記錄,卻沒多久就變隔一天的窘境,查了半天看起來strtotime預設用的是UTC,除非特別寫進去要parser的字串中或設定php.ini,但重點在我不能固定在一個時區,歸納了有底下幾個需求
  1. 要取得使用者目前所在的時區
  2. 要能使用者各自有各自的時區
  3. 使用者之間不能互相影響
PHP 5.3.x 的 strtotime() 時區設定 警告訊息修正這篇可以知道,改時區大概有兩種種方式(其實不只)
  1. php.ini中設定date.timezone
  2. Function: date_default_timezone_set
這邊合乎需求的是date_default_timezone_set。試用過後,發現只有在設定後才會有效果。http呼叫重新來過時,又是用系統設定,不會互相影響。

再來要取得目前使用者時區,看了不少方式,都是取得目前系統時間再做差異比較,不過這方式很多細節要處理,最後找到這個jsTimezoneDetect,很容易使用,程式碼如下:

var timezone = jstz.determine();
function get_user_timezone(target)
{
    if( target != null && target.length != 0 )
        target.val(encodeURI(timezone.name()));
    return timezone.name();
}

要注意的是,不能在function中使用,宣告的變數要在最外頭,也不能放在jQuery.ready裡頭,jstz才可以存取到。

這樣就可以利用get_user_timezone取得時區名稱,如:Asia/Taipei。jstz會幫忙做轉換,也會計算日光節約時間等,省掉不少麻煩。

相關函式庫:
jsTimezoneDetect
tamaspap/timezones
jquery.detect_timezone


參考網址:
How to get client's timezone?
Get user's timezone using javascript/jQuery and PHP
PHP5 time zone solution
Auto-detecting user's timezone
List of Supported Timezones
Getting the Time Zone from a Web Browser
Detect user timezone using javascript
How to initialize javascript date to a particular timezone
Generating a drop down list of timezones with PHP

IANA - Time Zone Database

Date/Time based on user's location

查詢時間、請輸入國家、地區或主要城市的中文或英文名稱
Time Zones

2015年2月16日 星期一

Javascript學習筆記-Go back and reload

最近有個狀況,就是使用Ajax後,Browser似乎只會cache舊資料,Ajax成功後所更新的並記在sessoin或cookie的資料,要reload才會被cache住,這造成網頁資料的問題,尤其是買賣時的comfirm後,又按”回上一頁”按鈕,網頁上的資料有問題,最後做了個結論

  • 要能夠按下”回上一頁”按鈕後,網頁要能reload

得到這個網址的解決方案:How to refresh page after clicking "Back" button??

大概的解決方式是

  1. 設定hidden參數,預設為no
  2. 有參數更動時要設定參數為yes
  3. 在onload時檢查hidden參數是否為yes

Code如下:
<input id="refreshed" name="refreshed" type="hidden" value="no" />
<script>
onload = function () {
    var e = $('#refreshed');
    if (e.val() == 'yes') {
        e.val('no');
        location.reload();
    }
};
function set_reload() {
    $('#refreshed').val('yes');
}
</script>

需要設定為yes時,就call set_reload。

蠻簡單的變形,想像力果然才是限制 @@

參考網址:
How to refresh page after clicking "Back" button??