Linux Timezone programming HOW-TO

以前在作 NAS (Network Attached Server) 的時候,因為要取得並設定時區,所以去找到的資料.
主要是參考這篇 The GNU C Library – Time Zone Functions.還有一些其他 Linux 程式的方式來解決.
不過 GNU C 的這個 timezone functions 似乎不太 work,我想可能是我不會用吧~~後來是改用 symbolic link 的方式來解決~~
以下用問答的方式來記述:
1.如何取得目前 timezone?

在設計上,可以將 /etc/localtime symbolic link 到 /usr/share/zoneinfo 下的 zone file. 藉著取得真實路徑的函數readlink(),就可以得知是哪裡的 timezone.

2.如何設定 timezone?

同 1, 可以用 symbolic link 的方式來設定

3.和 TZ Environment Variable 的關係

如果有設定 TZ 環境變數,那麼 /etc/localtime 將會失效.
TZ 有特定格式,需要查一下,大多的 embedded system 都是直接利用 TZ 環境變數,而不使用 zone file.

4.如何瀏覽 zone??

可以直接開啟 /usr/share/zoneinfo/zone.tab 來取得列表.
此檔共有四欄: code, coordinates, TZ, comments.
照慣例,以 # 開始的該列為註解.
比較需要用到的兩個欄位: TZ 與 comments.

5.預設值??

預設值可以直接指向 /usr/share/zoneinfo/GreenWich 表示為格林威治標準時間

php adodb

php 的 adodb, 以前寫聊天室的時候有用到,用法很類似 ASP 的 ADODB,所以說是一層 把 Database 操作方法統一起來的 layer.
PHP 本身也有所謂的PEAR DB, 用途與做法也相當類似.
這裡是他的官方網站
下面的程式碼則是在逛官方網站還有這篇的時候,隨手抄下來的(不知道抄來幹麼,我想可能是抄爽的)….

include(“adodb.inc.php”);
$dbconn=NewADOConnection(“mysql”); // or postgresql(pgsql)
$dbconn->Connect(“localhost”, “username”, “password”, “databasename” ) or die(“Unable to connect!”);
$result=$dbconn->Execute( $query ) or die(“Error in query: $query.”. $dbconn->ErrorMsg() );
while( !result->EOF )
{
    echo $result->fields[1].”-“.$result->fields[2].”\n”;
    $result->MoveNext();
}
// $result->RecordCount(); // 取得筆數
// $result->FieldCount(); // 取得欄數
$dbconn->close();

也可以用 Fetch, 把 recordset 換為 object, 然後用 FetchNextObject() 取得下一筆.

while( $row=$result->FetchNextObject() )
{
  echo $row->TITLE. “-” . $row->AUTHOR. “\n”;
}

安裝的時候,放到 php 程式所在目錄下,假設為 adodb 好了,所以

<?
include( ‘adodb/adodb.inc.php’ );
$db=&ADONewConnection( $database_type ); // $database_type can be “mysql” or ….
$db->debug=true;
$db->PConnect(“$server, $user, $pw, $database );
$rs=$db->Execute( ‘select * from aaa’ );
print “<pre>”;
print_r( $rs->GetRows() );
print “</pre>”;
?>

D language?!

很有趣~~
這裡看到所謂的 D Language.
D Language 很類似 C/C++ 甚至也很類似 Java/C#, 不過這四門語言本來就或多或少有相似之處 🙂 現在又加入一個同門師兄弟啦~~真不知該感到欣慰還是悲傷 ^_^
同門師兄弟:
C, C++, Java, C#, D
有點類似又不會太類似:
PHP, Perl, Python