2012-12-22
hichannel radio 列表
hichannel的網路電台服務應該是目前大家收聽來源的大宗,中華電信也陸續將一些站台加上DRM,今天興起用程式算了一下,當下未加保護的有53台,已保護的有44台。
不過部份的站台是兩者兼具的,例如:BestRadio 高雄港都電台是"RADRM012",其實使用"RA000012"也是可以的,收聽時的連結可以使用mms://bcr.media.hinet.net/RA000012、http://bcr.media.hinet.net/RA000012,以下是當下hichannel的網路電台列表:
Aliyang原住民族網路廣播電台=RADRM032
AppleLine 蘋果線上=RADRM001
ASIAFM 亞太電台=RADRM002
ASIAFM 亞州電台=RADRM003
ASIAFM 衛星音樂台=RADRM004
BestRadio 台中好事=RADRM010
BestRadio 台北好事=RADRM013
BestRadio 花蓮好事=RADRM011
BestRadio 南方之音=RA000044
BestRadio 高雄港都=RADRM012
BravoFM 台北都會音樂台=RA000081
Classical 台中古典音樂台=RADRM041
E-Classical 台北愛樂=RA000018
Flyradio 飛揚調頻=RADRM019
HitFm聯播網 中部=RA000035
HitFm聯播網 北部=RA000036
HitFm聯播網 宜蘭=RADRM065
HitFm聯播網 南部=RA000034
ICRT=RA000038
IC之音=RADRM037
igo 531=RADRM006
KISS RADIO 大眾廣播電台=RA000040
KISS RADIO 網路音樂台=RA000042
needs RADIO=RADRM039
NEWS98新聞網=RADRM073
Nice923 宜蘭生活廣播=RADRM086
POP Radio 台北流行音樂電台=RA000080
RTI央廣 FM=RADRM060
RTI央廣 亞洲頻道=RADRM059
RTI央廣 音樂=RADRM061
RTI央廣 國語=RADRM063
RTI央廣 歐美及方言=RADRM062
uni radio 環宇電台=RADRM020
WowRadio文藻網路音樂台=RADRM078
大千電台=RADRM067
大愛網路電台=RADRM017
大漢之音=RADRM021
中廣流行網 i like=RADRM009
中廣音樂網i radio=RADRM007
中廣新聞網=RADRM008
中廣寶島網=RA000005
太陽電台=RADRM064
古都電台=RADRM085
台灣之聲=RADRM046
正聲大發台=RADRM095
正聲太保台=RADRM093
正聲北港台=RADRM091
正聲台中一台=RADRM088
正聲台中二台=RADRM089
正聲 台北調幅台=RADRM015
正聲 台北調頻台=RADRM016
正聲台東台=RADRM096
正聲宜蘭台=RADRM097
正聲音樂派=RA000098
正聲高雄台=RADRM094
正聲雲林台=RADRM090
正聲嘉義台=RADRM092
全國廣播=RADRM068
全國廣播音樂網=RADRM047
快樂聯播網-台北=RADRM082
快樂聯播網-高雄=RADRM084
快樂聯播網-嘉義=RADRM083
佳音現代聖樂網=RADRM031
佳音經典音樂網=RADRM030
佳音電台=RADRM029
奇美古典音樂網=RADRM014
青春線上=RADRM079
非凡音電台=RADRM071
城市廣播網-台中城市廣播=RADRM028
城市廣播網-台北健康電台=RADRM027
飛碟電台=RA000072
真心之音廣播電台=RADRM033
高屏溪客家廣播電台=RADRM045
崑山科大 EKHO Radio迴音線上=RADRM087
最愛生活頻道=RADRM022
復興廣播電台 第一網=RADRM024
復興廣播電台 第二網=RADRM025
復興廣播電台 短波網=RADRM026
新客家廣播電台=RADRM048
漢聲光華網 中波=RADRM075
漢聲光華網 短波=RADRM077
漢聲廣播電台=RADRM074
漢聲廣播電台 全國調頻網=RADRM076
臺北廣播電臺 都會資訊頻道=RADRM070
臺北廣播電臺 喔海洋頻道=RADRM069
寶島客家廣播電台=RADRM023
寶島新聲廣播電台=RADRM066
寶島聯播網 高雄主人電台=RADRM043
警廣 台中台=RADRM053
警廣 台北台=RADRM050
警廣 台東台=RADRM058
警廣 台南台=RADRM054
警廣 全國交通網=RADRM049
警廣 宜蘭台=RADRM057
警廣 花蓮台=RADRM056
警廣 高雄台=RADRM055
警廣 新竹台=RADRM052
2012-11-11
新發現 - 正聲音樂派
[EzNetRadio] 這兩天才發現收聽某些站台會有些問題,修正完後在測試每個站台的狀況時,發現一個不知是何時出現的站台"正聲音樂派",正聲給我的刻板印象是個有夠老的電台,實際上是不是我想的那樣就不得而知了。
正聲音樂台的性質和KISS RADIO網路音樂台的特性很像,就是一直的播送著音樂,發現這個站台剛好替補了我對KISS RADIO網路音樂台的需求。
正聲音樂台的性質和KISS RADIO網路音樂台的特性很像,就是一直的播送著音樂,發現這個站台剛好替補了我對KISS RADIO網路音樂台的需求。
2012-10-01
VMware vSphere Client 登入 ESXi5 錯誤
工作的地方目前選用VMware ESXi 5做為虛擬化的解決方案,但是第一次裝完vSphere Client登入Server時會產生這個錯誤訊息
解決的方法如下:
完成安裝後就應可正常登入ESXi Server。
2012-09-28
proftpd.conf 設定多行DefaultRoot
參考:
工作文件的交換存放在FTP Server上,並選用ProFTPD,為了調整權限東找西找,找到了上面的文章,可以在proftpd.conf設定多個DefaultRoot,也快速解決我的問題,格式如下:
DefaultRoot 路徑 群組
ex:
DefaultRoot ~ jailed
DefaultRoot ~/../.. othergroup
工作文件的交換存放在FTP Server上,並選用ProFTPD,為了調整權限東找西找,找到了上面的文章,可以在proftpd.conf設定多個DefaultRoot,也快速解決我的問題,格式如下:
DefaultRoot 路徑 群組
ex:
DefaultRoot ~ jailed
DefaultRoot ~/../.. othergroup
2012-08-29
ZyXEL-GS2200-48 溫度&風扇OID
工作需求順便做個紀錄。
- 風扇轉速監測OID
- 1:FAN1 2:FAN2 3:FAN3
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.1.1; Value (Integer): 1
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.1.2; Value (Integer): 2
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.1.3; Value (Integer): 3 - Current:
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.2.1; Value (Integer): 6420
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.2.2; Value (Integer): 6436
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.2.3; Value (Integer): 5986 - MAX:
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.3.1; Value (Integer): 6561
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.3.2; Value (Integer): 6529
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.3.3; Value (Integer): 6094 - MIN:
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.4.1; Value (Integer): 6192
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.4.2; Value (Integer): 6315
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.4.3; Value (Integer): 5895 - Threshold:
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.5.1; Value (Integer): 2320
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.5.2; Value (Integer): 2320
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.5.3; Value (Integer): 2320 - Status:
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.6.1; Value (OctetString): NORMAL
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.6.2; Value (OctetString): NORMAL
.1.3.6.1.4.1.890.1.5.8.53.9.1.1.6.3; Value (OctetString): NORMAL - 溫度監測OID
- 1:MAC 2:CPU 3:PHY
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.1.1; Value (Integer): 1
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.1.2; Value (Integer): 2
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.1.3; Value (Integer): 3 - Current:
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.2.1; Value (Integer): 47
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.2.2; Value (Integer): 45
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.2.3; Value (Integer): 43 - MAX:
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.3.1; Value (Integer): 52
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.3.2; Value (Integer): 49
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.3.3; Value (Integer): 47 - MIN:
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.4.1; Value (Integer): 37
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.4.2; Value (Integer): 37
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.4.3; Value (Integer): 36 - Threshold:
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.5.1; Value (Integer): 85
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.5.2; Value (Integer): 85
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.5.3; Value (Integer): 85 - Status:
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.6.1; Value (OctetString): NORMAL
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.6.2; Value (OctetString): NORMAL
.1.3.6.1.4.1.890.1.5.8.53.9.2.1.6.3; Value (OctetString): NORMAL
2012-08-24
下載hichannel影片的方法其中之一
軟體需求:Google Chrome + NetTransport
[2013/11/03] 下載hichannel影片的方法其中之二
- STEP1:開啟Google Chrome 並啟用"開發人員工具"
- 在開發人員工具功能表,點選"Network"功能
- 設定搜尋功能,keyword為"stream.do"
- 環境整備好就可以進入hichannel.hinet.net囉!
- 選定你想下載的影片,選好就按吧!
- 基於這個連結有效時間的問題,建議在影片下載緩衝時就先按停止。再來看我們找到了什麼,下圖可以看到我們已直接取得影片的完整連結。直接點擊可以另開分頁直接觀影片,有另行處理的需求就接著看吧。
- 按滑鼠右鍵可拷貝完整連結又或另開分頁並打開連結
- 拷貝下來的url有時候會遇到需要再處理的狀況,以下圖為例,發現影片url的部份已被urlencode了,所以最好自行改回,如圖中反白的部份,並將原來的"http"改成"mms",再把完整的連結拷貝起來,就可使用其他軟體進行下載囉。
- 有類似功能下載軟體有不少,這裡以NetTransport為例
- 新增下載工作後,將剛剛修正的url貼在"URL"欄位裡,
並注意分割數最好設定為1,之前曾設成5過但是載下來的檔案有點問題最多試過4分割可正常下載並合併,但是如果有人試過不正常還是設為1吧。
- 最後就等待吧。從新增到開始下載會等個一下下,麻煩給個耐性,如果連結沒失效的話過一下子就會開始下載了。
- 如果遇到連結已失效就再重來一次吧!!
P.S 技術要討論教學相長才會進步但是請合法使用。
[2013/11/03] 下載hichannel影片的方法其中之二
2012-08-22
取回mysql的控制權
忘了mysql的root密碼嗎?還是廠商裝的機器但是又不給mysql的root密碼?其實都沒關係,下面的方法可幫你以root的身份登入mysql但是不需密碼,既然可以登入,變更root的密碼又或是新增另一個等同root權限的帳號,就由您決定囉!
P.S linux環境必須可取得root的權限,以root登入、su或是sudo皆可。
P.S linux環境必須可取得root的權限,以root登入、su或是sudo皆可。
- 環境CentOS-5.3 + mysql5
- $> /etc/init.d/mysql stop
- $> /usr/libexec/mysqld -u root --skip-grant-tables &
- $> mysql
- mysql> use mysql;
- mysql> update user set password=password('新的密碼') where user='root';
- mysql> flush privileges;
- mysql> \q
- ps -ax
- kill -9 mysql ID
- /etc/init.d/mysql start
2012-07-29
Delphi URL轉換
透過Delphi來取得連結時通常會出現兩種格式:
1. mms%3a%2f%2fwms.media.hinet.net%2fkapok%2fFartytail%2fFartytail_1_1200k.wmv%3fhichA209DCC4-886C-4786-9227-3FC3BA059785
2. mms://wms.media.hinet.net/kapok/Fartytail/Fartytail_1_600k.wmv?hichA209DCC4-886C-4786-9227-3FC3BA059785
為了將 1 、2 的格式互換,除了自行處理外,Delphi也提供其他的選擇:
1. mms%3a%2f%2fwms.media.hinet.net%2fkapok%2fFartytail%2fFartytail_1_1200k.wmv%3fhichA209DCC4-886C-4786-9227-3FC3BA059785
2. mms://wms.media.hinet.net/kapok/Fartytail/Fartytail_1_600k.wmv?hichA209DCC4-886C-4786-9227-3FC3BA059785
為了將 1 、2 的格式互換,除了自行處理外,Delphi也提供其他的選擇:
- Indy IdURI
uses IdURI;
...
S := TIdURI.URLEncode(str);
S := TIdURI.URLDecode(str); - HTTPApp.pas
uses HTTPApp;
...
S := HTTPEncode(str);
S := HTTPDecode(str);
2012-02-24
hichannel影片下載
最近最熱的就是NBA的轉播,通常hichannel都會提供完整賽事錄影,但是目前都只提供一個星期免費收看時間,所以下載下來再慢慢看變成是個好的選項。
目前使用過兩個方案,一個是在linux上使用的mimms,另一個是在Window使用的NetTransport,兩個試過後都可以完整的下載,載下來的wmv檔發生了個小差異,以尼克對暴龍那場來講,前面打得真的悶啊,所以就想直接看最後的4分鐘,但是差異出現了,都以Window Media Player 11來播放載下來的wmv檔,發現以mimms下載的檔案無法直接拉到想看的時間點,但是以NetTransport下載的卻可以,不曉得差異在那裡,接著再以VLC進行測試,兩支檔案都可以跳到想看的時間點,不過以NetTransport載的檔案還是順一點。
後來突然想到以PotPlayer來測看看,終於有看到差異點,以mimms下載的檔案在開啟後,檔案長度是一直在增加,和以網路播放時buffer時的狀況相似,但是以NetTransport下載的檔案卻沒有這個現象,開啟檔案後即可知道完整的播放時間,應該是如此才造成Window Media Player無法跳著看吧?
目前使用過兩個方案,一個是在linux上使用的mimms,另一個是在Window使用的NetTransport,兩個試過後都可以完整的下載,載下來的wmv檔發生了個小差異,以尼克對暴龍那場來講,前面打得真的悶啊,所以就想直接看最後的4分鐘,但是差異出現了,都以Window Media Player 11來播放載下來的wmv檔,發現以mimms下載的檔案無法直接拉到想看的時間點,但是以NetTransport下載的卻可以,不曉得差異在那裡,接著再以VLC進行測試,兩支檔案都可以跳到想看的時間點,不過以NetTransport載的檔案還是順一點。
後來突然想到以PotPlayer來測看看,終於有看到差異點,以mimms下載的檔案在開啟後,檔案長度是一直在增加,和以網路播放時buffer時的狀況相似,但是以NetTransport下載的檔案卻沒有這個現象,開啟檔案後即可知道完整的播放時間,應該是如此才造成Window Media Player無法跳著看吧?
2012-02-21
2012-02-17
林來瘋效應的受害者+1
2012-02-15
林來瘋癱瘓Hichannel??
最近林書豪的好表現吸引著一堆子人搶看直播和Hichannel的重播,應該其他電視的重播也是一樣搶著看。但是最近的出現了以前從沒遇過的狀況。今天NBA尼克v.s暴龍的比賽好像只有愛爾達直播,所以就只能開電腦看球,結果竟然在球賽期間是連不進Hichannel直播伺服器的,真是有誇張到,之前王建民的球賽轉播也沒遇過這種情形?也許是這場賽事只有愛爾達轉播的原因吧?所以只有用手動的方式直接測試直播伺服器,註冊的6個IP只剩一個IP可以正常連進去,不過還好還有一台可以不然就看不到精采的逆轉勝了~~YA。
這樣的情況也發生在Hichannel的完整賽事隨選上,最近常是連不上就算連上了也會卡住,晚間8~11點尤其嚴重,只能說林書豪真的太神了~~~~
這樣的情況也發生在Hichannel的完整賽事隨選上,最近常是連不上就算連上了也會卡住,晚間8~11點尤其嚴重,只能說林書豪真的太神了~~~~
2012-02-13
google chrome在Xwindow環境下會當機??
最近在Debian裡把Xwindow給裝起來,因為不用再開兩台機器。也許有人會問幹嘛不用VM咧?因為機器太low跑不太動了,10年的NB+7年的桌機...
需求其實很簡單,只要browser + terminal就可以了,browser首選就是google chrome了,因為window環境常用的書籤都在上面。
之前在NB上裝了ubuntu一樣也是使用chrome,就有時常當掉的問題,那時其實也不以為意,後來在桌機上也有一樣的狀況,就算更新到目前最新的v17.xx版也是一樣當給你看,到目前使用Debian+xfce4狀況也並沒有改善。一般的瀏覽是還好,遇到像flash或youtube之類的就頻率增加許多,但反觀firefox就穩定許多沒有上述的情形,目前還沒試出到底是什麼問題,真怪。
[2012/02/14]也許找到問題了??
之前的測試,在基本安裝後接著安裝chrome,實際上系統上並未真正安裝Flash Player,但是若是連接到adobe的網站,偵測到的資訊它又顯示chorme已支援Flash Player,但是若想要對FlashPlayer觀看相關資訊或是啟動硬體加速之類的就當給你看。我想下面也許是問題點:
對chrome放棄之後,就一直使用Firefox,但是Firefox就真的無法顯示Flash所以必須手動安裝Flash Player,在下載解壓縮後會產生一個額外的檔案libflashplayer.so,這個檔案必須放在你Firefox安裝目錄下的plugins目錄裡,ex:/usr/local/firefox/plugins/libflashplayer.so,或是個人目錄下的.mozilla目錄裡,才能讓Firefox可以正常的顯示flash的影片或動畫。
那為什麼以chrome連至adobe的網站為什麼遠端的資訊顯示著chrome已內建了Flash player,但是好像又功能不全咧??在chrome安裝目錄 /opt/google/chrome/ 裡有個檔案 libgcflashplayer.so,我想這個檔案是造成adobe網站回應已內建的原因。雖已內建plugin但卻沒有其他的檔案,才造成功能不全又當機頻頻吧?
在Firefox環境下安裝完成FlashPlayer後再來使用Google Chrome,目前已不再有當機的狀況且穩定許多,有鑑於此,在Linux環境使用chrome還是必須安裝Flash Player,在安裝完全後看的設定的都一切正常。
測試系統環境是Debian6.0.3 + xfce4 + chrome v17.0.963.46 + FlashPlayer v11.1.102.55。
需求其實很簡單,只要browser + terminal就可以了,browser首選就是google chrome了,因為window環境常用的書籤都在上面。
之前在NB上裝了ubuntu一樣也是使用chrome,就有時常當掉的問題,那時其實也不以為意,後來在桌機上也有一樣的狀況,就算更新到目前最新的v17.xx版也是一樣當給你看,到目前使用Debian+xfce4狀況也並沒有改善。一般的瀏覽是還好,遇到像flash或youtube之類的就頻率增加許多,但反觀firefox就穩定許多沒有上述的情形,目前還沒試出到底是什麼問題,真怪。
[2012/02/14]也許找到問題了??
之前的測試,在基本安裝後接著安裝chrome,實際上系統上並未真正安裝Flash Player,但是若是連接到adobe的網站,偵測到的資訊它又顯示chorme已支援Flash Player,但是若想要對FlashPlayer觀看相關資訊或是啟動硬體加速之類的就當給你看。我想下面也許是問題點:
對chrome放棄之後,就一直使用Firefox,但是Firefox就真的無法顯示Flash所以必須手動安裝Flash Player,在下載解壓縮後會產生一個額外的檔案libflashplayer.so,這個檔案必須放在你Firefox安裝目錄下的plugins目錄裡,ex:/usr/local/firefox/plugins/libflashplayer.so,或是個人目錄下的.mozilla目錄裡,才能讓Firefox可以正常的顯示flash的影片或動畫。
那為什麼以chrome連至adobe的網站為什麼遠端的資訊顯示著chrome已內建了Flash player,但是好像又功能不全咧??在chrome安裝目錄 /opt/google/chrome/ 裡有個檔案 libgcflashplayer.so,我想這個檔案是造成adobe網站回應已內建的原因。雖已內建plugin但卻沒有其他的檔案,才造成功能不全又當機頻頻吧?
在Firefox環境下安裝完成FlashPlayer後再來使用Google Chrome,目前已不再有當機的狀況且穩定許多,有鑑於此,在Linux環境使用chrome還是必須安裝Flash Player,在安裝完全後看的設定的都一切正常。
測試系統環境是Debian6.0.3 + xfce4 + chrome v17.0.963.46 + FlashPlayer v11.1.102.55。
2012-01-18
Navicat 有兩種UTF8的模式嗎??
這兩天在幫老婆大人轉檔的過程中發現了個怪問題,其實以前就有遇過只是沒去深入去探究可能的原因,下面是測試的畫面:
圖1、圖2是用mysql-4.1.22-w32.exe以系統預設安裝後的狀態,圖3、圖5、圖7則是三個Navicat上建立的Connection,不同的只是在Encoding的部份設定不同,但是設定的不同卻造成了相同也不同的結果,圖4、圖6、圖8分別是各Connection連線後,以Navicat提供的Console功能,執行show variables like '%c' 所show出的MySQL對於character set的狀態。
圖3與圖5的Encoding設定分別是950 (ANSI/OEM - Traditional Chinese Big5)和65001 (UTF-8),但是玄了,從各別的Console畫面圖4、圖6卻是完全相同,各個character set都沒有變更,再以實際的連線去select資料出來看,卻又沒辦法正常顯示對方連線時可正常顯示的資料。
圖5與圖7的Encoding設定都是UTF-8,但是圖7的UTF-8是勾選 Use MySQL character set而成的,原則上兩個連線都是以UTF-8為character set,但是從Console畫面圖6、圖8來看使用Use MySQL character set的選項才有辦法造成真的UTF-8的存儲使用環境。在實際連線測試select資料也是同樣無法正常顯示對方連線時可正常顯示的資料。
就目前來講這樣的測試還無法證明什麼,到底是MySQL的問題還是Navicat的Bug,不過自己覺得MySQL的character set的問題真的是個大麻煩,但也因為Navicat這個對UTF-8的怪原因,讓人浪費了不少zZZ的時間,不過至少知道一個結果..那就是如果要使用Navicat將原先Big5編碼的資料庫轉為UTF-8編碼時,UTF-8 Connection properties 的 "Use MySQL character set" 一定要勾啦!!
圖1.mysql.exe 直接連接畫面1(MySQL預設狀態) |
圖2.mysql.exe直接連接畫面2(MySQL預設狀態) |
圖3.localhost-Big5 Connection |
圖4.localhost-Big5 Console |
圖5.localhost-UTF8 Connection |
圖6.localhost-UTF8 Console |
圖7.localhost-UTF8-Defaule |
圖8.localhost-UTF8-Defaule Console |
圖1、圖2是用mysql-4.1.22-w32.exe以系統預設安裝後的狀態,圖3、圖5、圖7則是三個Navicat上建立的Connection,不同的只是在Encoding的部份設定不同,但是設定的不同卻造成了相同也不同的結果,圖4、圖6、圖8分別是各Connection連線後,以Navicat提供的Console功能,執行show variables like '%c' 所show出的MySQL對於character set的狀態。
圖3與圖5的Encoding設定分別是950 (ANSI/OEM - Traditional Chinese Big5)和65001 (UTF-8),但是玄了,從各別的Console畫面圖4、圖6卻是完全相同,各個character set都沒有變更,再以實際的連線去select資料出來看,卻又沒辦法正常顯示對方連線時可正常顯示的資料。
圖5與圖7的Encoding設定都是UTF-8,但是圖7的UTF-8是勾選 Use MySQL character set而成的,原則上兩個連線都是以UTF-8為character set,但是從Console畫面圖6、圖8來看使用Use MySQL character set的選項才有辦法造成真的UTF-8的存儲使用環境。在實際連線測試select資料也是同樣無法正常顯示對方連線時可正常顯示的資料。
就目前來講這樣的測試還無法證明什麼,到底是MySQL的問題還是Navicat的Bug,不過自己覺得MySQL的character set的問題真的是個大麻煩,但也因為Navicat這個對UTF-8的怪原因,讓人浪費了不少zZZ的時間,不過至少知道一個結果..那就是如果要使用Navicat將原先Big5編碼的資料庫轉為UTF-8編碼時,UTF-8 Connection properties 的 "Use MySQL character set" 一定要勾啦!!
2012-01-17
MySQL Big5 to UTF8 快速轉碼
延伸閱讀:Navicat 有兩種UTF8的模式嗎?? <-- 有要做的人一定要先看
昨天要幫老婆大人把客戶從MySQL dump出來的資料,從原先的Big5轉成UTF8再塞進去MySQL裡。原始檔案有將近900M,有點大所以大部份的編輯軟體都拿他沒輒,所以就開到Linux裡用iconv直接轉,轉是轉完了但是總會有"\?"的問題造成匯入不成功,去問了一下G大這有可能是換行字元的問題,為了快速找到解決方案就先把問題的研究先放著,解決問題優先。
昨天要幫老婆大人把客戶從MySQL dump出來的資料,從原先的Big5轉成UTF8再塞進去MySQL裡。原始檔案有將近900M,有點大所以大部份的編輯軟體都拿他沒輒,所以就開到Linux裡用iconv直接轉,轉是轉完了但是總會有"\?"的問題造成匯入不成功,去問了一下G大這有可能是換行字元的問題,為了快速找到解決方案就先把問題的研究先放著,解決問題優先。
[Navicat]是一套資料庫管理工具支援多種資料庫,可下載試用。它本身提供Data Transfer的功能可以直接讓線上的資料庫轉到另一個資料庫或輸出成檔案。轉換細節如下:
環境:Server: VMwarePlayer3.1.5 + Debian6.0.3 + MySQL 5.1.49
Client: WinXP with SP3 + Navicat10
- 在Navicat環境下,建立兩個Connections,一個Encoding設成950 (ANSI/OEM - Traditional Chinese Big5),另一個設成65001 (UTF-8)
- 點選 Tools -> Data Transfer -> General,設定Source Connection為Big5的那個,當然Target Connection就得設成UTF8的那個了,Database依需求設定
- 在Data Transfer畫面下點選Advanced,依照你的需求增減相關的選項,在本例中我將Include character set及Use hexadecimal format for BLOB取消。Include character set如果設定會把目的table也設成Source table的character設定,所以取消;至於Use hexadecimal format for BLOB則是因為我的資料庫有使用到BLOB的欄位,轉換時會造成錯誤,所以取消。
- 接著就按Start等待結果啦~
2012-01-15
Delphi7 Lite
在網路上找東找西時,看到了這個東東[Delphi7 Lite],甚至 Embarcadero.Delphi.XE2.Lite 都也有。就去載了D7LiteFullEdition來踹踹看和CD安裝有和差別,載下來也不過7xMbyte,從資料來看除了已加入一些patch外也再加入一些加強版的套件,裝完後給我的感覺就是一個加強版的D7,接著再把常用的Component裝起來,和安裝版沒什麼差別也沒有異樣,把之前寫的Code拿來重編也都正常無誤。
會看到它是為了找看看在Delphi上是否有支援Hash這個東東,因為在Perl上常用到也覺得粉好用,是的找到了在IniFiles裡有個THashedStringList可以做得到,而彼岸的網友也把THashedStringList和TStringList做了效能上的比較他使用的環境是D7.2+XPSp2,這個D7.2引起我的興趣,因為好像沒聽過有出7.2版,挖著挖著連D7.3版都出現了。從一開始的新鮮到後來的佩服,佩服他們對於某些東西的深度了解並實行。現在常找到的技術文章有極大多數都是彼岸的大作,這樣的情況其實已經持續了多年,這岸的我們應該要警惕。
會看到它是為了找看看在Delphi上是否有支援Hash這個東東,因為在Perl上常用到也覺得粉好用,是的找到了在IniFiles裡有個THashedStringList可以做得到,而彼岸的網友也把THashedStringList和TStringList做了效能上的比較他使用的環境是D7.2+XPSp2,這個D7.2引起我的興趣,因為好像沒聽過有出7.2版,挖著挖著連D7.3版都出現了。從一開始的新鮮到後來的佩服,佩服他們對於某些東西的深度了解並實行。現在常找到的技術文章有極大多數都是彼岸的大作,這樣的情況其實已經持續了多年,這岸的我們應該要警惕。
2012-01-09
Delphi XE2 UTF8測試
由於Delphi7不支援UTF8,造成程式中對於UTF8字元處理及顯示上的不便,因而興起測試一下目前新版本的支援度如何。在測試前先在網路上看一下網友使用的狀況,其中看到一條消息就是XE2已經有內建支援Regular Expressions了,真是讓人高興啊!!
目標主要測試TMemo、TComboBox、TiniFiles及RegularExpressions對UTF8的支援度。有畫面有真象。測試的過程有發現一些事,應該不算新鮮事應該也許早在Delphi2009就支援了。
- 一開始當然是先編個最基礎的空AP玩玩,看完真的很大便,Debug版要6M,找了半天弄個了Release版也要1.5M,哇~真是粉大~~,可能剛從D7過來的關係不太適應。
- TEncoding,使用TMemo和TStrings讀寫檔案時,可指定寫入檔案的編碼如:TEncoding.UTF8,預設好像是TEncoding.ANSI,問了一下G大好像在Delphi2007就支援了,也有看到用Delphi2009寫的Code。這樣就不必每次要先準備好對的格式的文字檔來stand by了。
Ex:
Memo1.Lines.SaveToFile('xx.ini',TEncoding.UTF8);
-參考資料 - TIniFile差點讓人從椅子上掉下來,一開始使用D7慣用的語法去開*.ini,慘了讀不出UTF8格式的,但是ANSI的卻可以。心裡幹譙一陣嘀咕著要改怎不全部一起改咧?後來想想那麼大的公司應該沒那麼笨吧?
開始到程式安裝的地方把Inifiles*.*的檔案挖出來,找到"System.IniFiles.pas",到裡面去找TEncoding這key word,還好讓我在TMemIniFile class找到。使用方式和TIniFile一樣,只是在宣告時要把TIniFile改宣告TMemIniFile就可以指定TEncoding.UTF8了。
Ex:
oIni: TMemIniFile;
oIni:=TMemIniFile.Create('.\xx.ini',TEncoding.UTF8);
-參考資料 - Regular Expressions是最讓人喜出望外的,在其他部份測試完要進行RE的部份時,正不知如何下手就直接問G大吧,結果找到[Embarcadero原廠資料],原來XE2的RE是承自於TPerlRegEx,讓原先的TPerlRegEx的user可以完全無痛更換開發環境,而且直接支援UTF8String解決了原先D7+TPerlRegEx對UTF8的處理問題。
既然可以直接使用TPerlRegEx就不作他想了,使用上必須宣告uses System.RegularExpressionsCore,不可宣告uses RegularExpressions。在實際使用上目前發現有一點和D7版的不同,原本熟悉的SubExpressions[n]不見了,取而代之的是Groups[n],至於其他像replace、split有沒差異?因為少用就沒測了。
Ex:
uses System.RegularExpressionsCore;
oRE: TPerlRegEx;
-參考資料
其他XE2還有些特異功能像FireMonkey、跨Mac、支援x64等,因為沒環境就先不測了。
結論:綜合以上各點已滿足自己小小的需求,讓人粉想換個開發環境,唯一的缺憾就剩執行檔吃了歐羅肥的問題了。
2012-01-08
Delphi7上Unicode的問題
Delphi7是我慣用的開發工具,之前完全不考慮更換版本的最大原因就是新的版本真的是越來越肥了,重點讓人最不爽的是會在系統上裝一堆不曉得用不用得上的東東,就像MS的VisualStudio一樣。
這次在改寫[EzNetRadio]時加入了一個新平台[Now.in],在Web上的編碼UTF-8已是主流,Hichannel和Now.in皆然,不過Hichannel站台名稱上不會使用特殊字元所以在轉換及顯示上不會有問題,反之Now.in則不然,使用者強調的個人化造成站台名稱格式大相逕庭,而且有為數不少ANSI無法顯示的特殊字元,因此興起將EzNetRadio增加支援Unicode的功能。
Delphi7在Object、procedure及function的使用上,皆以AnsiString、String為主,但是Unicode的處理都必須使用WideString。在EzNetRadio中有使用到IniFile、MainMenu、PopupMenu及站台資料快速截取的靈魂TPerRegEx都必須要支援WideString及WideStringList包括Delphi7內建的字串處理函式,麻煩大了。
TntUnicodeComponents解決了*.ini上Unicode字元顯示在MainMenu及ComboBox的問題,支援WideString的IniFiles也在網上找到解決方案WideIniFiles,至於TPerlRegEx踹了半天都解決不了就只有先放棄了。
Delphi7在Unicode上是有一些解決方案,但還是缺東缺西的,像我這樣玩票的開發人員要自行開發或修改元件還是免了,因為頭髮會掉更多。
把花了一天做的測試弄個Sample以免下次又要重來。
下載:Sample.zip
這次在改寫[EzNetRadio]時加入了一個新平台[Now.in],在Web上的編碼UTF-8已是主流,Hichannel和Now.in皆然,不過Hichannel站台名稱上不會使用特殊字元所以在轉換及顯示上不會有問題,反之Now.in則不然,使用者強調的個人化造成站台名稱格式大相逕庭,而且有為數不少ANSI無法顯示的特殊字元,因此興起將EzNetRadio增加支援Unicode的功能。
Delphi7在Object、procedure及function的使用上,皆以AnsiString、String為主,但是Unicode的處理都必須使用WideString。在EzNetRadio中有使用到IniFile、MainMenu、PopupMenu及站台資料快速截取的靈魂TPerRegEx都必須要支援WideString及WideStringList包括Delphi7內建的字串處理函式,麻煩大了。
TntUnicodeComponents解決了*.ini上Unicode字元顯示在MainMenu及ComboBox的問題,支援WideString的IniFiles也在網上找到解決方案WideIniFiles,至於TPerlRegEx踹了半天都解決不了就只有先放棄了。
Delphi7在Unicode上是有一些解決方案,但還是缺東缺西的,像我這樣玩票的開發人員要自行開發或修改元件還是免了,因為頭髮會掉更多。
把花了一天做的測試弄個Sample以免下次又要重來。
下載:Sample.zip
2012-01-02
多物件procedure共用-以Button為例
物件procedure共用在網路上有找到兩種方法:
第一種方法,只要把Button的OnClick方法指向Sample1Click即可,但是第2種方法除了必須指向Sample2Click之外,還必須設定各Button的tag屬性,以tag作為判斷的區別,目前使用上傾向第2種方法。
第一種方法,只要把Button的OnClick方法指向Sample1Click即可,但是第2種方法除了必須指向Sample2Click之外,還必須設定各Button的tag屬性,以tag作為判斷的區別,目前使用上傾向第2種方法。
procedure TForm1.Sample1Click(Sender: TObject); begin if Sender = Button1 then ShowMessage('Sample1-Button1') else if Sender = Button2 then ShowMessage('Sample1-Button2'); end; procedure TForm1.Sample2Click(Sender: TObject); begin case TComponent(Sender).Tag of 1: ShowMessage('Sample2-Button3'); 2: ShowMessage('Sample2-Button4'); end; end;
Delphi ComboBox AutoComplete
在Delphi7的ComboBox,可以透過鍵盤輸入中文或英文達到快速尋找的目的,但是如果要透過程式達到一樣的效果,可以如下方式達成:
環境:Delphi7
ComboBox1.ItemIndex:=ComboBox1.Perform(CB_FINDSTRING, -1, LongInt(PChar('要找的字')));
環境:Delphi7
ComboBox1.ItemIndex:=ComboBox1.Perform(CB_FINDSTRING, -1, LongInt(PChar('要找的字')));
訂閱:
文章 (Atom)