IMS

IP多媒體子系統(IP Multimedia Subsystem;IMS)產品組合,使服務供應商更易提供個人化多媒體服務,以連結無線、有線與有線電視寬頻服務的各種裝置,此IMS整合服務網路升級產品預計於2006下半年上市。

北電表示,IMS解決方案是一重視存取(access-aware),並支援3GPP(IMS)、3GPP2(MMD)、Packet Cable 2.0與TISPAN標準。此外,北電IMS整合服務網路採用北電無線行動閘道器Wireless Mobility Gateway 6000 (WMG 6000)與多媒體應用伺服器(AS 5200),兩者皆以北電IMS標準為核心。而WMG 6000符合新興IMS語音呼叫持續性(Voice Call Continuity)標準,可使服務供應商連結3G無線網路與無線公眾(WLAN)網路,為消費者及企業用戶提供無縫隙與安全的通訊體驗。

IMS整合服務網路提供包括來電顯示、來電等候、來電保留、快速撥號、來電過濾、簡訊與路徑選擇、即時訊息(IM)先進電話功能。

資料來源:北電IMS強化行動性與寬頻支援

撰寫網頁程式注意事項

這篇寫的不錯 將一些寫網頁程式該注意的事項都列出了

利用明確的指定方式來取得頁面傳來的變數

不管是 GET 或 POST 的參數,我會希望明確地指定它的型態,例如 id 應該是整數, content 是文字等。而且我也常常發現有人把接到這些變數後,沒有事先做處理就直接串到程式中,這是非常危險的一件事情!

最明顯的例子就是 SQL Injection 了,我想這應該不用多說了。總而言之,不要過份相信用戶端傳來的資訊,把它轉換成你能掌握的型態再用吧。

資料庫的連結每個頁面只作一次

資料庫連結是網站頁面常做的事情,但是儘可能不要讓一個頁面產生太多的資料庫連結。我們可以利用 Singleton 模式來取得資料庫連結物件,這樣可以確保程式裡只會用到一個資料庫連結;當然需要連結不同資料庫的話就另當別論。

所以我們要確定資料庫會在頁面初始化時連結,頁面結束時關閉。這樣有單一的入口與出口,程式也就不容易出現奇怪的問題。

相同的邏輯不要寫兩遍以上

如果發現有兩支程式會用到相同的程式邏輯時,不要猶豫,把它抽出來變成類別或函式 (最好是類別,原因在下一則) 。因為如果哪一天需要更新程式的邏輯時,你只需要更改一支程式即可。對健忘的人來說,這點尤其重要。

我就遇過有人把產生選單的邏輯重複寫在十多支程式裡,結果有次客戶要求要修正其中一個地方,可憐的維護人員 (就是我啦) 就得一支一支地去翻出來改。

利用物件來管理錯誤

我這裡指的錯誤是任何預期中的狀況,也就是你不希望使用者操作的方式,例如編號不存在或是檔案大小超過限制等。

當錯誤發生時,不要立刻結束,應該利用錯誤上升機制來讓通知上一層的程式,最後再由頁面控制程式來決定要如何處理錯誤。我常常會遇到有人在函式裡利用 exit 離開程式,但是這時候頁面的資料庫或其他物件等等都還沒釋放掉;雖然程式平台可能會幫你做,但那總是很難預期。

所以我建議不要使用函式,而改為使用物件的方法,然後利用類似 PEAR::isError() 來判斷是否執行成功;如果失敗的話就把錯誤往上丟,直到頁面能夠控制為止。

該釋放的要記得釋放

不管是物件還是資料庫,都應該在頁面結束前將它們銷毀或關閉,而不要過於依賴程式執行平台。網頁程式是很多人會同時存取的,如果沒有正確地將資源即時釋放掉的話,久而久之就會造成系統效能上的不穩定。

而釋放的動作要什麼時候做呢?記住一句話:誰開的就誰負責關。例如上面頁面控制程式開啟資料庫連結,那就在頁面控制程式的最後把資料庫連結關閉。類 別建構函式產生的物件,就在類別解構程式裡銷毀。函式開的頭,當然就在函式尾收掉;不過有個例外,那就是這個函式如果本身就是要回傳產生的物件時,那就不 能把它給釋放囉,而是要改為呼叫這個函式的程式來釋放。

利用樣版技術

樣版是用來分離程式邏輯與視覺頁面的,也常常有人用 MVC 這個模式來稱呼它。然而兩者分離除了不相互干擾外,其實還有一個好處:那就是程式可以在錯誤發生後,決定要顯示的結果。就像上面提到的錯誤管理,當我們在 頁面控制程式取得錯誤訊息時,我們就可以而用置換樣版來避免掉頁面的錯誤,或者是導向別的處理程式。

這點我覺得 PHP 的 Smarty 就考慮得很好,因為它是後期頁面綁定 (Binding) ,而不會像傳統樣版引擎在前期就把頁面拉進程式處理,導致錯誤發生時徒然浪費處理時間 (當然要看怎麼設計的) 。

徹底瞭解開發環境的性質

網頁程式和一般應用程式 (例如視窗應用程式) 在本質上是有差異的,這些差異不僅是在操作上,就連執行的過程都非常的不一樣。雖然現在有 AJAX 或其他技術可以縮小彼此的差距,但是它還是建構在 HTTP 這個無狀態協定之上。身為網站程式開發人員,其實應該要瞭解這些基礎,而不要只熟稔某些已經被包裝過的技術就顯得自得意滿。

最簡單的就是伺服端程式與用戶端程式之間的溝通,例如 PHP 和 JavaScript 。我常常在網路上看見有人問道:要如何讓 PHP 和 JavaScript 之間的變數互通?如果瞭解 HTTP 執行的過程,那麼你就會自己發現這些問題的答案。

資料來源: 網站製作學習誌

Oracle資料如何匯出成文字檔

# sqlplus username/password@TNSName   (1)
SQL> set pagesize 50000   (2)
SQL> set linesize 1000   (3)
SQL> spool member.txt   (4)
SQL> select id ||’[,]‘|| name ||’[,]‘|| age from member;   (5)
SQL> spool off   (6)
說明:
(1) 進入sqlplus。
(4) 將螢幕的內容輸出到member.txt。
(6) 結束輸出螢幕資料到檔案。
(2) 將螢幕長度設為每頁50000行,如果資料超過螢幕,輸出到檔案時,系統會在每頁開頭加入header,所以把螢幕每頁的長度設到超過資料筆數。
(3) 將螢幕寬度設為每行1000個字元,如果資料每行超過螢幕寬度,會自動折行,輸出到檔案就不是一行一筆資料,所以將每行的長度加大。
(5) 從table member抓出欄位id、name、age的資料,各欄位資料以[,]分開,欄位的分隔符號不限一個字元。

資料來源 : 史帝芬心得筆記

Oracle資料如何匯出成文字檔

# sqlplus username/password@TNSName   (1)
SQL> set pagesize 50000   (2)
SQL> set linesize 1000   (3)
SQL> spool member.txt   (4)
SQL> select id ||’[,]‘|| name ||’[,]‘|| age from member;   (5)
SQL> spool off   (6)
說明:
(1) 進入sqlplus。
(4) 將螢幕的內容輸出到member.txt。
(6) 結束輸出螢幕資料到檔案。
(2) 將螢幕長度設為每頁50000行,如果資料超過螢幕,輸出到檔案時,系統會在每頁開頭加入header,所以把螢幕每頁的長度設到超過資料筆數。
(3) 將螢幕寬度設為每行1000個字元,如果資料每行超過螢幕寬度,會自動折行,輸出到檔案就不是一行一筆資料,所以將每行的長度加大。
(5) 從table member抓出欄位id、name、age的資料,各欄位資料以[,]分開,欄位的分隔符號不限一個字元。

資料來源 : 史帝芬心得筆記

Apache 啟動失敗

# /etc/init.d/httpd start
啟動 httpd:httpd: Could not determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName
[失敗]

// 查詢error_log (/var/log/httpd/error_log),出現下列錯誤
mod_unique_id: unable to find IPv4 address of “h39-203-70-33.askey.com.tw”

//解決方法 加入host
# vi /etc/hosts
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
203.70.33.39 h39-203-70-33.askey.com.tw localhost

安裝 Oracle、Make教學

//安裝 Oracle xe Server
#rpm -ivh oracle-xe-univ-10.2.0.1-1.0.i386.rpm
#/etc/init.d/oracle-xe configure

//安裝 Oracle xe Client
#rpm -ivh oracle-xe-client-10.2.0.1-1.0.i386.rpm

//設定Oracle Home, Sid, Path
# vi /etc/profile
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
ORACLE_SID=XE
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC ORACLE_HOME ORACLE_SID

//Make Apache
#tar zxvf httpd-2.0.46.tar.gz
#mv httpd-2.0.46 /usr/local/
#cd /usr/local/httpd-2.0.46/
#./configure –enable-so –prefix=/usr/local/httpd
#make
#make install

//Make Curl
#tar zxvf curl-7.14.1.tar.gz
#mv curl-7.14.1 /usr/local/
#cd /usr/local/curl-7.14.1/
#./configure –enable-http –enable-thread –enable-crypto-auth –enable-cookies –prefix=/usr/local/curl
#make
#make install

//Make PHP
#tar zxvf php-4.3.11.tar.gz
#cd /usr/local/php-4.3.11/
#./configure –with-oci8 –with-oci8-instant-client=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/ –enable-so –with-apxs2=/usr/local/httpd/bin/apxs
–prefix=/usr/local/php –with-curl=/usr/local/curl/
#make
#make install
#cd /usr/local/php
#ln -s /usr/local/php/bin/php /usr/bin/
#ln -s /usr/local/php/bin/pear /usr/bin/
#php -v
#cp /usr/local/php-4.3.11/libs/libphp4.so /usr/lib/httpd/modules/

//設定 載入PHP module
#vi /etc/httpd/conf/httpd.conf
LoadModule php4_module modules/libphp4.so
AddType application/x-httpd-php .php

「教」比「打」更重要!

管教方式不當,孩子更容易行為偏差!

父母常有的教養迷思

教養迷思一:「天生氣質」不代表一切都無法改變!

很多人都以聽過老一輩的人說過「壞骨(台語)」的形容詞,用在他們覺得怎麼教都教不乖的孩子身上。然而,孩子的天生氣質難道就注定了一切嗎?

國外曾有研究,一對雙胞胎,被兩個不同家庭領養,初期兩個孩子的行為很相似,半夜經常吵鬧,但經過兩個家庭的不同對待、教養方式之後,一個孩子越吵越厲害,另一個卻越來越乖。由此顯示,經過行為教養的調整,孩子的脾氣與情緒表達方式的確是可以改變的。

教養迷思二:一犯錯立刻打,才能立竿見影!

在學校的訓導處,常能看到闖禍的孩子站在老師跟前,而心急的家長一趕到,二話不說就「海扁」孩子一頓,彷彿有著恨鐵不成鋼的椎心之痛!

孩子犯了錯,是該懲罰。然而最重要的目的,是要讓孩子知道他犯了錯,而且是什麼樣的錯,會有什麼嚴重的後果。這些必須是可以明白的道理,而不是讓他以為犯錯的結果就是吃一頓飽拳!

若仔細留意,你會發現沒有一個教育專家會贊成用暴力處罰的方式來作為「教養方式」。因為家長的行為模式是孩子的示範,如果每每家長都用體罰來教 導,孩子會無形中學會一種處理事件最快速方法及技巧,就是一個拳頭過去,便可將一個人制服,以為這樣就解決了一個錯誤,一個問題,而失去了判斷是非的能 力。

該怎麼教孩子?

1. 父母的教養態度要一致

有不少家庭常常上演這樣的情況:爸爸方才肯定的點頭,媽媽馬上回頭嚴肅的說:「不可以」;媽媽鼓勵讚美聲剛出,爸爸隨即奚落兩句;爸爸吃飯時和孩子親密的對話,媽媽就都罵:「吃飯不要說話」…!

這樣的情形,往往讓孩子無所適從;而若一直沒有改善,更有可能造成孩子的反感,甚至父親母親的話都不想聽,只依自己的想法來行事;或者孩子會變得懦弱,至此,孩子的行為調整會更難。

建議父母們,當夫妻雙方在教養理念上有所出入時,先靜觀另一方如何處理,事後再做協調,尋求合理合宜的共識,切勿因管教問題在孩子面前起爭執,或演出全武行,那可會加深孩子的罪惡感。

2. 為人父母要以身作則

根據研究,教育最大的困難,在於父母無法以身作則佔最大!父母是孩子學習、模仿的模範,試問,當媽咪爸比叫孩子上床睡覺時,自己的視線依然留戀在 電視機前,孩子會真的聽話去睡嗎?他只會覺得:「爸媽可以看,我就得去睡覺,不公平!」;當媽咪爸比自己也不吃青椒、紅蘿蔔,光跟孩子說這兩種食物有多 好,孩子也一樣不會肯吃!

在孩子的成長過程中,「模仿」佔了最大的部分,因此當父母言行不一致時,孩子會從迷惑到變成不信任,甚至學會用「說謊」來敷衍父母,將成為親子關係中最大的殺傷力。

3.不必打罵,只要堅持原則!

相信許多家長都有這般經驗,臨出門前對孩子的百般耳提面命、交待再三,孩子也點頭如倒蒜,快樂達成出門的種種協議。但一旦面臨孩子無理的破壞「規則」時,家長卻常屈於孩子的哭鬧,成了破壞原則的共謀,也因為「不能堅持」的這份因素,使得家長與孩子的抗爭時常上演。

一再「得逞」的孩子無法了解、尊重別人,驕傲、自私為所欲為的行為,常常就在這種不經意中形成了。在孩子建立許多生活自理與行為態度時,「堅持原則」在行為制約學習上,是幫助孩子養成良好習慣的最佳方法,否則在家長搖擺不定、標準不一的態度下,孩子根本無從判定是非對錯!

叮嚀

在經濟的不景氣,以及現代人自我意識的提升中,越來越多人選擇不育,使得每一個得來不易的小寶貝,都成為老人家或父母心中的寶,捨不得他痛、捨不得他被罵!甚至,吃飯時只要是孩子喜歡的,整盤端給他,大人們一口都不敢吃!

如此下來,孩子當然會養成「唯我獨尊」的性格,他如何能懂什麼是尊重他人?如果要等長大再來教,不但調整不過來,對孩子的心理也不好。他會覺得奇 怪,為什麼小時候什麼都可以,長大以後通通不行!?因此,媽咪爸比們,教養孩子要趁早,而且從己身做起,才是對孩子最好的教養態度。

本文來自 Tenchi 的步絡閣

設定MySQL連線數

#查詢目前MySQL Process 狀況

mysql> show processlist;
#查詢目前MySQL max connections

mysql> show variables like ‘max_connections’;

#設定MySQL max connections

mysql> set GLOBAL max_connections=200;
但因為MySQL重開後, max_connections的設定值就會被清掉

可在 /etc/my.cnf裡設定 set-variable = max_connections=200

存檔後,重新啟動MySQL即可

MySQL my.cnf

在 /usr/share/mysql/ 下會有 my-huge.cnf, my-large.cnf, my-medium.cnf 及 my-small.cnf 幾個檔案,根據伺服器的硬體選擇適合的檔案:

  • my-huge.cnf: 適合 1GB – 2GB RAM的主機使用。
  • my-large.cnf: 適合 512MB RAM的主機使用。
  • my-medium.cnf: 只有 32MB – 64MB RAM 的主機使用,或者有 128MB RAM 但需要運行其他伺服器,例如 web server。
  • my-small.cnf: 記憶體少於 64MB 時適用這個,MySQL 會佔用較少資源。

資料來源: Real-Blog