Home

2012年10月25日 星期四

How to change the language of Oracle SQL Developer's user interface? 如何變更 Oracle SQL Developer 的語言介面

From: Polin Wei

Oracle 出了一個免費的 SQL Developer 工具: Oracle SQL Developer
但在中文的 windows 7 下執行,其操作介面也很貼心的將它翻譯成了中文(反而有看沒有懂)該如何將它切換成英文介面呢?

只要修改 %SQLDEVELOPER_HOME%\sqldeveloper\bin\sqldeveloper.conf 這個檔案,增加下面兩行即可

AddVMOption -Duser.language=en
AddVMOption -Duser.country=US
 
再重新執行後就可以看到英文的操作介面了 

2012年10月15日 星期一

PPS在Win7中文亂碼解決方法,使用AppLocale讓PPStream網路電視正常顯示中文

From: Polin Wei

PPS網路電視軟體啟動後,選單及文字部份是亂碼,且檔案無法正常下載,如果您下載 PPS 並安裝啟動之後,出現的選單都是亂碼,那麼您可以試試看以下方法。

使用 Microsoft AppLocale 公用程式

這是不必變更非 Unicode 應用程式的語言 (系統地區設定) 就可以執行舊版應用程式。
詳情請見官方下載網頁,下載點:官方下載點

它是一個 msi 檔案,直接滑鼠雙按就會出現安裝視窗,這是 Microsoft 的套件不是什麼私人軟體,請放心安裝吧!安裝完畢之後在應用程式集中可以找到 AppLocale 的捷徑,點選後啟動,會出現 AppLocale 設定精靈。

step 1:
歡迎畫面,簡單的介紹這支程式,按 “下一步” 開始設定。

step 2:
點選 “瀏覽” 以選擇 AppLocale 要套用的程式。當然就是指 PPStream 囉!

step 3:
沒意外的話!AppLocale 會偵測到 PPS 網路電視所使用的語言為 “簡體中文”,接著按 “下一步”。

step 4:
勾選 “建立捷徑” 選項,在下方輸入方塊填入捷徑的名稱,按下 “完成” 就順利地完成設定,下次開啟 AppLocale 時就會以簡體中文模式啟動 PPStream,原本的亂碼就可以變成簡體中文。雖然這樣無法變成真正的 PPStream繁體中文版,不過總比顯示亂碼還好了。

2012年9月29日 星期六

jQuery plugin: Validation 表單驗證

From: Polin Wei

表單驗證往往是網站開發者常所需要撰寫的功能之一, jQuery 的 plugin:validation是一個不錯的工具,撰寫的程式很少,功能卻能符合所需。 首先,先準備一般 HTML 的表單

<form id="userform" name="userform" method="post" class="validateform">
<table width="600" border="0" cellspacing="3" cellpadding="1" class="table">
 <tr>
  <th>欄位名稱</th>
  <th>內容</th>
 </tr>
 <tr>
  <td>姓名 *</td>
  <td><input type="text" name="username" id="username"  required/></td>
 </tr>
 <tr>
  <td>信箱 *</td>
  <td><input type="text" name="useremail" id="useremail" size="35" value="" class="required email"/></td>
 </tr>
 <tr>
  <td height="50">&nbsp;</td>
  <td>
   <input class="submit" type="submit" value="Submit"/>
  </td>
 </tr>
</table>

然後再啟動驗證即可

<script type="text/javascript">   
$().ready(function() {
 //設定驗證
 $("#userform").validate();
});
</script>

但有時為了作一些處理,在 Form 裡我們並沒有<input class="submit" type="submit" value="Submit"/>,如:

<form id="userform" name="userform" method="post" class="validateform">
<table width="600" border="0" cellspacing="3" cellpadding="1" class="table">
 <tr>
  <th>欄位名稱</th>
  <th>內容</th>
 </tr>
 <tr>
  <td>姓名 *</td>
  <td><input type="text" name="username" id="username"  required/></td>
 </tr>
 <tr>
  <td>信箱 *</td>
  <td><input type="text" name="useremail" id="useremail" size="35" value="" class="required email"/></td>
 </tr>
 <tr>
  <td height="50">&nbsp;</td>
  <td>
   <a id="fsubmit" name="fsubmit" class="sexybutton"><span><span><span class="save">儲存</span></span></span></a> 
   <a id="freset"  name="freset"  class="sexybutton"><span><span><span class="reload">重設</span></span></span></a>
  </td>
 </tr>
</table>

這時 jQuery 要改成

<script type="text/javascript">   
$().ready(function() {
 設定驗證
 var frmValidate=$('#userform').validate({
  rules:{
   username: {
    required: true,
    maxlength: 10
   }
  },
  messages:{
   username: {
    required: "請輸入您的中文姓名"
   }
  }
 });
 
 $('#fsubmit').click(function() {
    var chkResult=frmValidate.form();
 });
});
</script>

這樣才能成功

 

進階閱讀: MIS Workplace 資訊空間

2012年9月4日 星期二

PHP 與 Microsoft AD(Active Directory)作認證

From: Polin Wei

Windows Server AD 是一個 LADP 伺服器,可讓您將資訊儲存在目錄服務中,在資料庫中進行查詢,並可以使用他來作為身份的認證授權。

使用PHP撰寫程式難免會遇到需要作身份認證的問題,除了自行撰寫這部份程式的選擇外,PHP 的函式庫中亦提供了標準的 LDAP 函式,如果公司組織中已經有架設 Windows 2K/2003 網域的環境 ,將身份認證的工作交由 Windows AD 亦是一個不錯的選擇。
在寫此程式前,請先到php.ini檔,打開php_ldap.dll的功能(預設是關閉的),否則執行時會出現未定義函數的錯誤訊息。(打開後記得要重啟apache服務,功能才會生效)
ldap.png
PHP可以一筆一筆撈出AD資料(ldap_first_entry / ldap_next_entry),然後將每一筆資料的欄位屬性解析出來(ldap_get_values)。

實作如下:
案例環境說明:
1.公司組織內有一個Windows 網域,名稱為: domain.com。
2.domain.com 的網域有兩部網域主控站(DC)分別為:dc.domain.com、dc2.domain.com。
3.PHP版本:5.2.1 由下載 AppServ 2.5.10 安裝

PHP程式碼範例:

$domain = 'domain.com'; //設定網域名稱
$dn="dc=domain,dc=com";

$user = 'administrator'; //設定欲認證的帳號名稱
$password = 'password'; //設定欲認證的帳號密碼

// 使用 ldap bind 
$ldaprdn = $user . '@' . $domain; 
// ldap rdn or dn 
$ldappass = $password; // 設定密碼

// 連接至網域控制站
$ldapconn = ldap_connect($domain) or die("無法連接至 $domain");

// 如果要特別指定某一部網域主控站(DC)來作認證則上面改寫為
//$ldapconn = ldap_connect('dc.domain.com) or die("無法連接至 dc.domain.com"); 
// 或 
// $ldapconn = ldap_connect('dc2.domain.com)or die("無法連接至 dc2.domain.com"); 

//以下兩行務必加上,否則 Windows AD 無法在不指定 OU 下,作搜尋的動作
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);

if ($ldapconn) 
{ 
 // binding to ldap server
 echo("連結$domain 
".$ldaprdn.",".$ldappass."
");
 $ldapbind = ldap_bind($ldapconn, $user, $password);     
 //$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);     
 //$ldapbind = ldap_bind($ldapconn);     
 // verify binding     
 if ($ldapbind) 
 {         
  $filter = "(sAMAccountName=$user)";        
  $result = @ldap_search($ldapconn, $dn, $filter);        
  if($result==false) 
   echo "認證失敗(找不到 $user)";        
  else 
  {            
   echo "認證成功...";             
   //取出帳號的所有資訊             
   $entries = ldap_get_entries($ldapconn, $result);
   $data = ldap_get_entries( $ldapconn, $result );
   
   echo $data ["count"] . " entries returned\n";
   
   for($i = 0; $i <= $data ["count"]; $i ++) {
    for($j = 0; $j <= $data [$i] ["count"]; $j ++) {
     echo "[$i:$j]=".$data [$i] [$j] . ": " . $data [$i] [$data [$i] [$j]] [0] . "\n
";
    }
   }        
  }    
 } 
 else 
 {         
  echo "認證失敗...";     
 } 
}
//關閉LDAP連結
ldap_close($ldapconn);


進階閱讀:

PHP 與 Microsoft AD(Active Directory) 認證

2012年5月3日 星期四

SQL Server 2008 Express 的安裝與別名(alias)設定

From: Polin Wei

關於Express的版本

  • SQL Server Express (x86 和 x64)
單純只有SQL Server Express資料庫系統。與with Tools, with Advanced Services兩版本最大差異就是沒有SQL Server Management Studio 2008 Express(SSMSE)管理工具。也就是說,如果你的這台資料庫伺服器只需要讓遠端Client連接進來進行相關作業,根本不會有本機使用SSMSE管理工具的機會,那就很適合這個版本,小又單純。
  • SQL Server Express with Tools (x86 和 x64)

這是2008 Express + SSMSE管理工具的版本。也就是你有需要在資料庫伺服器本機做一些組態設定…等相關操作,那你就安裝這個版本。
  • SQL Server Express with Advanced Services (x86 和 x64)

除了SQL Server Express與SSMSE管理工具外,還提供「全文索引」及「報表伺服器」兩大功能。

SQL Server 2008 Express的限制

在開始進入安裝之前,我們要先了解2008 Express的一些限制。在2008 Express中除了進階軟體功能的限制外(例如:壓縮),另外更重要的就是硬體上的限制,在功能差異方面,請參考上一節的註解「SQL Server 2008版本功能差異」。而2008 Express硬體的限制延續2005 Express一樣的限制:
  • CPU數目:1
  • 記憶體上限:1 GB
  • 64位元支援:Windows on Windows (WOW)
  • 資料庫大小:4 GB
2008 Express 的限制是「單一mdf檔案的大小」有限制,所以如果你預計你的資料庫大小會超過4 GB時,除了購買正式版外,在2008 Express上你可以多開幾個資料庫檔案避開這部分的限制,例如:products.mdf、members.mdf,但唯一麻煩可能是程式就要設計成 「跨資料庫存取」的方式。

SQL Server 2008 Express 安裝前環境準備

在開始安裝SQL Server Express之前,必須先準備好作業系統.NET Framework環境,所以我們必須先行下載以下套件(最好依順序安裝):

  • Microsoft .Net Framework 3.5 SP1:下載點(啟動載入器)、下載點(完整套件)
  • Windows Installer 4.5:下載點 (需重開機)
  • Windows PowerShell 1.0:
    x86 版 Windows XP Service Pack 2 的 Windows PowerShell 1.0:下載點
    x64 版 Windows XP Service Pack 2 的 Windows PowerShell 1.0:下載點
    x86 版 Windows Server 2003 Service Pack 1 的 Windows PowerShell 1.0:下載點
    x64 版 Windows Server 2003 的 Windows PowerShell 1.0:下載點
    Itanium 版 Windows Server 2003 Service Pack 1 的 Windows PowerShell 1.0:下載點
    x86 版 Windows Vista 的 Windows PowerShell 1.0:下載點
    x64 版 Windows Vista 的 Windows PowerShell 1.0:下載點

要比較注意的只有PowerShell一項,請選擇正確的版本對應的PowerShell,進入下載面畫後,你可以依需求切換PowerShell的語 系版本,也就是說,假設我不要使用繁體版本,我習慣看英文,那就可以選擇安裝英文版本的PowerShell,安裝之後,以後只要有關 PowerShell的任何訊息都會以英文來顯示。重點是,對應的作業系統版本要對,語系看你喜好。

另外只有一種情況下可以不安裝 PowerShell,只有單純安裝「SQL Server Express」這個版本時,可以不下載及安裝PowerShell,其他兩個2008 Express版本(with Tools及with Advanced Services),或單獨安裝SSMSE管理工具,都需要安裝以上三個套件。

SQL Server 2008 Express 安裝

  • SQL Server Express Service Pack 1:下載點
    Microsoft SQL Server 2008 Management Studio Express:下載點
  • SQL Server Express with Tools:下載點
  • SQL Server Express with Advanced Services:下載點
  • SQL Server Expres Service Pack 1:下載點
  • Microsoft SQL Server 2008 線上叢書 (2009 年 5 月):下載點
  • 範例和範例資料庫 (英文):下載點
2009年4月7日SQL Server Express推出Service Pack 1,所以你安裝with Tools及with Advanced Services版本,切記,安裝之後一定要快上Service Pack 1,依照基本預計值應就可以安裝成功。

SQL Server 2008 Express 的「執行個體」

「執行個體」,簡單說,你就把執行個體看成每一個「資料庫的名稱」,例如,我這次安裝的資料庫名稱叫「SQLEXPRESS」,然後,我在同一台電腦再安裝一次SQL Server 2008,然後我給他執行個體的名稱為「SQLBruce」。然後只需在使用時(SSMSE、網頁、應用程式都一樣)指定你所要「連接」的資料庫執行個體名稱,這些程式就知道要跟那一個資料庫來進行連接及處理的動作。

預設執行個體:此執行個體是藉由執行它的電腦網路名稱來識別。一部電腦中只能有一個是預設執行個體。它能讓較早SQL Server版本來使用SSMSE來連線到預設執行個體。

具名執行個體:此執行個體是以電腦的網路名稱加上執行個體名稱來識別,格式為{Computer Name}\{Instance Name},例如:

DS\SQLExpress
DS\SQLBruce
以上是標準使用{Computer Name}\{Instance Name}的格式。

192.168.1.10\SQLExpress
192.168.1.10\SQLBruce
你也可以使用IP來代替{Computer Name}部分。

DS.yourdomain.com\SQLExpress
DS.yourdomain.com\SQLBruce
你也可以使用Domain來代替{Computer Name}部分。IP與Domain在遠端連線時會使用到。

.\SQLExpress
.\SQLBruce

這個重要,這個「‧」(點)代表「本機」的意思。如果你是在本機作業,那就可以使用這個簡寫「‧」來代替{Computer Name},例如,你的資料庫與網站是在同一台伺服器,那麼網站內與資料庫連接相關程式碼,就可以使用這個「‧」來簡化程式碼

SQL Server 2008 Express 別名設定

若要以輸入192.168.1.10 來取代 192.168.1.10\SQLExpress 登入資料庫則需要作下列步驟
  • Protocals For SQLEXPRESS 的 TCP/IP 要Enable,與將 IPAll 的 TCP Port 設為1433
  •  啟用 Client Protocals 的TCP/IP ,讓外來的電腦可連入這台主機的 SQL Server 2008 Express
  •  設定別名(Alias)192.168.1.10就可以登入為192.168.1.10\SQLEXPRESS
  • 啟動 SQL Server Browser 的 Services
  •  別忘了將防火牆對 SQL Server 2008 通訊的 1433 port 開啟
  •  遠端電腦要連入時,就可以在伺服器用192.168.1.10 取代192.168.1.10\SQLEXPRESS 登入了

 截圖請看 http://mis.elaborate-host.net/modules/tad_book3/page.php?tbdsn=203
參考:http://blog.kkbruce.net/2009/08/microsoft-sql-server-2008-express.html#.T4vlPtmd0ug

2012年2月18日 星期六

PL/SQL Function 函數建立說明

From: Polin Wei

建立子程序的語法有以下幾個重點:

  • 語法是CREATE PROCEDURE,可加入OR REPLACE來自動取代現有的子程序。
  • IS保留字也可以改成AS。
  • 跟合法的區塊語法一樣,BEGIN和END也是必須的,但不用DECLARE來宣告,只要在CREATE PROCEDURE...IS 之後宣告即可。

當您提交一個CREATE PROCEDURE指令到SQL*Plus後,會發生以下事情:

  • 程式碼會儲存在Data Dictionary,無論程式碼是否解析成功,可以從VIEW:USER_OBJECTS 查詢。
  • 程式碼的語法會被解析,然後決定它是「合法」(VALID)還是「不合法」(INVALID)。
  • 如果是VALID,就會得到Procedure created的訊息,而子程序也可以被執行。
  • 如果是INVALID,就會得到錯誤訊息,這時子程序不可以被執行。

PL/SQL Function 建立的語法如下:

 

1
2
3
4
5
6
7
8
9
10
CREATE [OR REPLACE] FUNCTION function_name
[ (parameter [,parameter]) ]
RETURN return_datatype
IS | AS
[declaration_section]
BEGIN
executable_section
[EXCEPTION
exception_section]
END [function_name];

傳入的參數有三種型態:

  • IN - The parameter can be referenced by the procedure or function. The value of the parameter can not be overwritten by the procedure or function.
  • OUT - The parameter can not be referenced by the procedure or function, but the value of the parameter can be overwritten by the procedure or function.
  • IN OUT - The parameter can be referenced by the procedure or function and the value of the parameter can be overwritten by the procedure or function.
繼續閱讀