Sunday, December 12, 2010

不同瀏覽器之間 SESSION 資料的共用

因為遊戲開發的需要, 要先用某個瀏覽器到 facebook 先取得自己帳號產生的 $_SESSION, 之後再到開發平臺使用這個 $_SESSION 資料

目前的想法就是用網址參數來傳遞 SessionID
ex: 網址?SID=xxxxxxxxxxxxxxxxxxxxxxxxxx

步驟分兩個 script 來解釋: create_session_data.php 和 get_session_data.php

/* create_session_data.php */
session_start();
$_SESSION = array('a' => 123, 'b' => 'askdjf;');
echo session_id();
/* get_session_data.php */
session_id($_GET['SID']);  // 從 SID 這個參數取得 session_id,
                           // 並設定使用該 session_id
session_start();           // 之後就可以直接使用該 session_id 內的資料

Sunday, December 05, 2010

PHP 一些 HASH 函式比較

最近測了一千萬筆的數字 (1234567 ~ 11234567) 拿去做 HASH
測試後的時間消費如下

$i 代表數字

md5($i);           // about 56 seconds.
hash('md5', $i);   // about 20 seconds.
crc32($i);         // about  7 seconds.
hash('crc32', $i); // about 13 seconds.
sha1($i);          // about 55 seconds.
hash('sha1', $i);  // about 20 seconds.
僅供參考~

伺服器規格我就不列了, 重點是在其時間的差異比較
hash('md5', $i) 的成績真的很優秀

Sunday, November 07, 2010

GetEnvironmentVariable 與 SetEnvironmentVariable

/* 讀取系統的環境變數 */
TCHAR EnvVar[ 1024+1 ] = {0};
::GetEnvironmentVariable(_T("Path"), EnvVar, _countof(EnvVar));
MessageBox(EnvVar);

/* 取得目前的 working directory */
TCHAR CurrentWorkingDir[MAX_PATH] = "";
if (!::GetCurrentDirectory(sizeof(CurrentWorkingDir) - 1, CurrentWorkingDir))
{
  MessageBox(CurrentWorkingDir);
}
else
{
  ::GetLastError();
}

/* 設定系統的環境變數 */
SetEnvironmentVariable(_T("Path"), EnvVar);

Tuesday, July 27, 2010

Google 翻譯 API

<!-- Google翻譯的API -->
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
// load Google 翻譯的 API
google.load("language", "1");
// 處理翻譯
function translate()
{
  var lang = $j('#google_translation_language').val();
  switch (lang)
  {
    case 'zh-TW':
    case 'en':
    {
      var text = $j('#auction_item_description').html();
      google.language.translate(text, "ja", lang, function(result) {
        if (!result.error) {
          $j('#auction_item_description_translated').html(result.translation);
          $j('#auction_item_description_translated').removeClass('hidden');
          $j('#auction_item_description').addClass('hidden');
        }
        else alert(result.error.message);
      });
      break;
    }
    case 'original':
    default:
    {
      $j('#auction_item_description_translated').addClass('hidden');
      $j('#auction_item_description').removeClass('hidden');
    }
  }
}

Sunday, July 11, 2010

顏文字測試

※下のAAのズレない環境が標準です。
|     |\|/ |     |   |
| ∧ ∧  |/⌒ヽ、| ∧_∧ | ∧∧ |
|(,,゚Д゚)||,,゚ Θ゚)|(; ´Д`)|(=゚ω゚)|

         /\
        ../  ./|
      ∴\/./
     _, ,_゚∵ |/
   (ノ゚Д゚)ノ    なんでカラーページが無いねん!!
  /  /
 ̄ ̄ ̄ ̄ ̄ ̄

  <⌒/ヽ-、___
/<_/____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∧_∧
  ( ´・ω・) ショボーン
  _| ⊃/(___
/ └-(____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄

大概這樣的 CSS 語法就夠用了吧~

Update: IE 還是死...就隨便它去死吧~

Sunday, June 06, 2010

針對 XHTML strict 的標準而改變的 HTML 撰寫習慣

img 的 border 改用 style 來寫, 所以我索性直接在共用的 css 檔內寫 img { border: 0; }

td, th 內的 width 也要用 style 來寫...

a 的 target 不能用, 那就用 onclick="this.target='_blank';"
雖然蠻彆扭的, 也覺得 XHTML 這樣訂也蠻怪的 =3=
不過用這樣的方式也 OK 啦, 反正也不會少塊肉
倒是瀏覽網頁的人不開 javascript 的情形下不會開新視窗就是了, 哈哈
另一種方式是把 a 設一個 class, 我是設 class="new_win", 再用 jQuery 下 $(document).ready(function(){ $('.new_win').attr('target','_blank'); });

input 元件一定要被 tag 包起來, 像是 div, p, td 之類的... (這也蠻莫名其妙的啦=3=)