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=)

Wednesday, March 10, 2010

SSH 免打登入密碼設定流程

我想要從 A 主機(192.168.1.200) 登入到 B 主機(192.168.1.250)

先登入 A 主機(假設是用webuser登入), 執行下面的指令
[webuser@A webuser]$ cd /home/webuser/.ssh/
[webuser@A .ssh]$ ssh-keygen -d 之後都按Enter
Generating public/private dsa key pair.
Enter file in which to save the key (/home/webuser/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/webuser/.ssh/id_dsa.
Your public key has been saved in /home/webuser/.ssh/id_dsa.pub.
The key fingerprint is:
8d:10:91:1a:6a:52:20:13:25:2c:58:b8:66:cb:67:e4 webuser@www.example.com

接下來將生成的 key 上傳到 B 主機 (假設是要用 test_user 登入 B 主機)
[webuser@A .ssh]$ scp id_dsa.pub test_user@192.168.1.250:/home/test_user/.ssh/authorized_keys
這樣就完成
要注意一下, 上傳到 B 主機的檔名要改成 authorized_keys, 若 B 主機上已經有 authorized_keys 的檔案, 改成 authorized_keys2 的檔名, 其他依此推類~

最後用下面的指令在 A 主機上測試
[webuser@A .ssh]$ ssh test_user@192.168.1.250
基本上應該是不用輸入密碼就直接登入 B 主機了