廣告

2025 年 1 月
 12345
6789101112
13141516171819
20212223242526
2728293031  

彙整

機器人世足賽-模擬假摔還真像

最近世足賽已經進入八強階段,今年的冷門也算不少,亞洲國家很可惜的無緣進入八強,但是以先天條件如身高、體能等來說,也算表現的不錯了!

沒想到機器人界,也辦了一場足球友宜賽,參加隊伍有兩隊,所以不是第一就是第二,而且都是德國贏!?

假摔技倆都用的不錯,還有守門員劈腿……………這個厲害……………

http://chinese.engadget.com/2010/06/30/robocup-soccer-2010-finals-show-impressive-realism-by-feigning-i/

DELPHI 7 下將文字存成UTF8格式

上網找到下面的程式碼,修了一下測試,真的可以耶!!!!最近的程式剛好有UTF8編碼的困擾,使用這方式轉是方便多了,不過還要測試會不會有問題。

討論區:http://delphi.ktop.com.tw/board.php?cid=30&fid=76&tid=89562

procedure TForm1.Button1Click(Sender: TObject);
var
  S:UTF8String;
  F:TextFile;
  TntEdit1: TStringList;
begin
  TntEdit1 := TStringList.Create;
  TntEdit1.Add(‘我是天才我是天才我是天才’);
  S:=UTF8Encode(TntEdit1.Text);
  AssignFile(F, ‘C:\test.txt’);
  Rewrite(F);
  Write(F,#$EF+#$BB+#$BF); //UTF8??
  Write(F,S);
  CloseFile(F);
end;

 

結果去開C:\test.txt 來看,真的直接就是UTF8編碼,在XP下看中文也正常,沒有亂碼。

1

 

  Write(F,#$EF+#$BB+#$BF); 中 #$EF+#$BB+#$BF 的意義

=======================================================================

http://60.248.128.85/bbs/dv_rss.asp?s=xhtml&boardid=63&id=491&page=3

這是一篇程式員寫給程式員的趣味讀物。所謂趣味是指可以比較輕鬆地瞭解一些原來不清楚的概念,增進知識,類似於打RPG遊戲的升級。整理這篇文章的動機是兩個問題:

問題一:

使用Windows記事本的「另存為」,可以在GBK、Unicode、Unicode big endian和UTF-8這幾種編碼方式間相互轉換。同樣是txt文件,Windows是怎樣辨識編碼方式的呢?

我很早前就發現Unicode、Unicode big endian和UTF-8編碼的txt文件的開頭會多出幾個字元,分別是FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)。但這些標記是基於什麼標準呢?

問題二:
最近在網上看到一個ConvertUTF.c,達到了UTF-32、UTF-16和UTF-8這三種編碼方式的相互轉換。對於Unicode(UCS2)、GBK、UTF-8這些編碼方式,我原來就瞭解。但這個程式讓我有些糊塗,想不起來UTF-16和UCS2有什麼關係。

查了查相關資料,總算將這些問題弄清楚了,順帶也瞭解了一些Unicode的細節。寫成一篇文章,送給有過類似疑問的朋友。本文在寫作時盡量做到通俗易懂,但要求讀者知道什麼是字元,什麼是十六進制。

0、big endian和little endian

big endian和little endian是CPU處理多字元數的不同方式。例如「漢」字的Unicode編碼是6C49。那麼寫到文件裡時,究竟是將6C寫在前面,還是將49寫在前面?如果將6C寫在前面,就是big endian。還是將49寫在前面,就是little endian。

「endian」這個詞出自《格列佛遊記》。小人國的內戰就源於吃雞蛋時是究竟從大頭(Big-Endian)敲開還是從小頭(Little-Endian)敲開,由此曾發生過六次叛亂,其中一個皇帝送了命,另一個丟了王位。

我們一般將endian翻譯成「字元序」,將big endian和little endian稱作「大尾」和「小尾」。

1、字元編碼、內碼,順帶介紹中文字編碼

字元必須編碼後才能被電腦處理。電腦使用的缺省編碼方式就是電腦的內碼。早期的電腦使用7位的ASCII編碼,為了處理中文字,程式員設計了用於簡體中文的big5和用於繁體中文的big5。

big5(1980年)一共收錄了7445個字元,包括6763個中文字和682個其它符號。中文字區的內碼範圍高字元從B0-F7,低字元從A1-FE,佔用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。

big5支援的中文字太少。1995年的中文字擴展規範GBK1.0收錄了21886個符號,它分為中文字區和圖形符號區。中文字區包括21003個字元。2000年的GB18030是取代GBK1.0的正式國家標準。該標準收錄了27484個中文字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。現在的PC平台必須支援GB18030,對嵌入式產品暫不作要求。所以手機、MP3一般只支援big5。

從ASCII、big5、GBK到GB18030,這些編碼方法是向下兼容的,即同一個字元在這些方案中總是有相同的編碼,後面的標準支援更多的字元。在這些編碼中,英文和中文可以統一地處理。區分中文編碼的方法是高字元的最高位不為0。按照程式員的稱呼,big5、GBK到GB18030都屬於雙字元字元集 (DBCS)。

有的中文Windows的缺省內碼還是GBK,可以透過GB18030升級包升級到GB18030。不過GB18030相對GBK增加的字元,普通人是很難用到的,通常我們還是用GBK指代中文Windows內碼。

這裡還有一些細節:

  • big5的原文還是區位碼,從區位碼到內碼,需要在高字元和低字元上分別加上A0。

  • 在DBCS中,GB內碼的存儲格式始終是big endian,即高位在前。

  • big5的兩個字元的最高位都是1。但符合這個條件的碼位只有128*128=16384個。所以GBK和GB18030的低字元最高位都可能不是1。不過這不影響DBCS字元流的解析:在讀取DBCS字元流時,只要遇到高位為1的字元,就可以將下兩個字元作為一個雙字元編碼,而不用管低字元的高位是什麼。

2、Unicode、UCS和UTF

前面提到從ASCII、big5、GBK到GB18030的編碼方法是向下兼容的。而Unicode只與ASCII兼容(更準確地說,是與ISO-8859-1兼容),與GB碼不兼容。例如「漢」字的Unicode編碼是6C49,而GB碼是BABA。

Unicode也是一種字元編碼方法,不過它是由國際組織設計,可以容納全世界所有語言文字的編碼方案。Unicode的學名是"Universal Multiple-Octet Coded Character Set",簡稱為UCS。UCS可以看作是"Unicode Character Set"的縮寫。

根據維基百科全書(http://zh.wikipedia.org/wiki/)的記載:歷史上存在兩個試圖獨立設計Unicode的組織,即國際標準化組織(ISO)和一個軟體製造商的協會(unicode.org)。ISO開發了ISO 10646項目,Unicode協會開發了Unicode項目。

在1991年前後,雙方都認識到世界不需要兩個不兼容的字元集。於是它們開始合併雙方的工作成果,並為創立一個單一編碼表而協同工作。從Unicode2.0開始,Unicode項目採用了與ISO 10646-1相同的字庫和字碼。

目前兩個項目仍都存在,並獨立地公佈各自的標準。Unicode協會現在的最新版本是2005年的Unicode 4.1.0。ISO的最新標準是10646-3:2003。

UCS規定了怎麼用多個字元表示各種文字。怎樣傳輸這些編碼,是由UTF(UCS Transformation Format)規範規定的,常見的UTF規範包括UTF-8、UTF-7、UTF-16。

IETF的RFC2781和RFC3629以RFC的一貫風格,清晰、明快又不失嚴謹地描述了UTF-16和UTF-8的編碼方法。我總是記不得IETF是Internet Engineering Task Force的縮寫。但IETF負責維護的RFC是Internet上一切規範的基礎。

3、UCS-2、UCS-4、BMP

UCS有兩種格式:UCS-2和UCS-4。顧名思義,UCS-2就是用兩個字元編碼,UCS-4就是用4個字元(實際上只用了31位,最高位必須為0)編碼。下面讓我們做一些簡單的數學遊戲:

UCS-2有2^16=65536個碼位,UCS-4有2^31=2147483648個碼位。

UCS-4根據最高位為0的最高字元分成2^7=128個group。每個group再根據次高字元分為256個plane。每個plane根據第3個字元分為256行 (rows),每行包含256個cells。當然同一行的cells只是最後一個字元不同,其餘都相同。

group 0的plane 0被稱作Basic Multilingual Plane, 即BMP。或者說UCS-4中,高兩個字元為0的碼位被稱作BMP。

將UCS-4的BMP去掉前面的兩個零字元就得到了UCS-2。在UCS-2的兩個字元前加上兩個零字元,就得到了UCS-4的BMP。而目前的UCS-4規範中尚未任何字元被分配在BMP之外。

4、UTF編碼

UTF-8就是以8位為單元對UCS進行編碼。從UCS-2到UTF-8的編碼方式如下:

UCS-2編碼(16進制)
UTF-8 字元流(二進制)

0000 – 007F
0xxxxxxx

0080 – 07FF
110xxxxx 10xxxxxx

0800 – FFFF
1110xxxx 10xxxxxx 10xxxxxx

例如「漢」字的Unicode編碼是6C49。6C49在0800-FFFF之間,所以肯定要用3字元模板了:1110xxxx 10xxxxxx 10xxxxxx。將6C49寫成二進制是:0110 110001 001001, 用這個比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。

讀者可以用記事本測試一下我們的編碼是否正確。

UTF-16以16位為單元對UCS進行編碼。對於小於0x10000的UCS碼,UTF-16編碼就等於UCS碼對應的16位無符號整數。對於不小於0x10000的UCS碼,定義了一個算法。不過由於實際使用的UCS2,或者UCS4的BMP必然小於0x10000,所以就目前而言,可以認為UTF-16和UCS-2基本相同。但UCS-2只是一個編碼方案,UTF-16卻要用於實際的傳輸,所以就不得不考慮字元序的問題。

5、UTF的字元序和BOM

UTF-8以字元為編碼單元,沒有字元序的問題。UTF-16以兩個字元為編碼單元,在解釋一個UTF-16文本前,首先要弄清楚每個編碼單元的字元序。例如收到一個「奎」的Unicode編碼是594E,「乙」的Unicode編碼是4E59。如果我們收到UTF-16字元流「594E」,那麼這是「奎」還是「乙」?

Unicode規範中推薦的標記字元順序的方法是BOM。BOM不是「Bill Of Material」的BOM表,而是Byte Order Mark。BOM是一個有點小聰明的想法:

在UCS編碼中有一個叫做"ZERO WIDTH NO-BREAK SPACE"的字元,它的編碼是FEFF。而FFFE在UCS中是不存在的字元,所以不應該出現在實際傳輸中。UCS規範建議我們在傳輸字元流前,先傳輸字元"ZERO WIDTH NO-BREAK SPACE"。

這樣如果接收者收到FEFF,就表明這個字元流是Big-Endian的;如果收到FFFE,就表明這個字元流是Little-Endian的。因此字元"ZERO WIDTH NO-BREAK SPACE"又被稱作BOM。

UTF-8不需要BOM來表明字元順序,但可以用BOM來表明編碼方式。字元"ZERO WIDTH NO-BREAK SPACE"的UTF-8編碼是EF BB BF(讀者可以用我們前面介紹的編碼方法驗證一下)。所以如果接收者收到以EF BB BF開頭的字元流,就知道這是UTF-8編碼了。

Windows就是使用BOM來標記文本文件的編碼方式的。

6、進一步的參考資料

本文主要參考的資料是 "Short overview of ISO-IEC 10646 and Unicode" (http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html)。

我還找了兩篇看上去不錯的資料,不過因為我開始的疑問都發現了答案,所以就沒有看:

  1. "Understanding Unicode A general introduction to the Unicode Standard" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter04a)
  2. "Character set encoding basics Understanding character set encodings and legacy encodings" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter03)

我寫過UTF-8、UCS-2、GBK相互轉換的軟體包,包括使用Windows API和不使用Windows API的版本。以後有時間的話,我會整理一下放到我的個人首頁上(http://fmddlmyy.home4u.china.com)。

我是想清楚所有問題後才開始寫這篇文章的,原以為一會兒就能寫好。沒想到考慮措辭和查證細節花費了很長時間,竟然從下午1:30寫到9:00。希望有讀者能從中受益。

=======================================================================

澎湖學藝回來新竹開黑沙糖為主題的冰店-家竹黑砂糖冰品

澎湖學藝回來新竹開黑沙糖為主題的冰店

家竹黑砂糖冰品
地址:新竹市北大路283號
電話:03-5253523

實體照片,讓我流好多口水阿,不知道會不會太甜,有機會來去試吃。

DSC_1283_009 DSC_1202_001 DSC_1219_002 DSC_1226_003 DSC_1231_004 DSC_1239_005 DSC_1244_006 DSC_1252_007 DSC_1270_008

馬與驢子

從前,有個人趕著一匹馬和一頭驢子上路。

路途中,驢子對馬說:“你若能救我一命,就請幫我分擔一點我的負擔吧。”馬不願意,驢子終因精疲力竭,倒下死了。

於是,主人把所有的貨物,包括那張驢子皮,都放在馬背上。這時,馬悲傷地說:“我真倒楣!我怎麽會受這麽大的苦呢?這全因不願分擔一點驢的負擔,現在不但馱上全部的貨物,還多加了一張驢皮。”

出處 : http://3w.epochtimes.com/b5/1/11/11/c6891.htm

==================================================

恩,在職場上面,到底是要把阻礙你升遷的人搞死?還是要和平共處?這個故事還真發人醒思。

VMWare WorkStation Shrink(壓縮) 磁碟方式

如果使用 VM WorkStation 建立虛擬磁碟的方式是用動態方式,則系統會依檔案越來越多而動態增加硬碟的容量,不會一次開足硬碟空間,也就是說假設我開40G空間,但是安裝完xp實際上虛擬硬碟空間只佔5G左右,不會直接就佔40G硬碟空間。不過動態模式的效能就會差一點………………

如果我應用程式越裝越多,相對的硬碟容量也越來越大,但是如果此時已經清了垃圾,也刪了應用程式,可是卻發現VM佔硬碟的空間沒變,這時候就要使用 VM tools 內的 Shirk(壓縮)功能來釋放虛擬硬碟空間。

使用此功能前建議先刪除所有的快照,然後關閉虛擬機器的作業系統,對該作業做磁碟重組:

1

2

做完磁碟重組後,再做 Shirk(壓縮) 的動作,本來這個系統佔硬碟空間23G,壓縮釋放空間後,剩下12G,有效,但是時間還滿久的就是了,建議睡前給他做,起床應該就差不多好了。

1

這邊指的壓縮倒是跟OUTLOOK EXPRESS壓縮的功能感覺是一樣的,用來釋放空間用,而不是像壓縮軟體RAR ZIP是真的在壓縮空間。

中華電信50M/5M光纖上網服務喊卡

光是這句話,就充滿矛盾 ==> 由於內部決定加速推動光纖上網10M用戶昇級至20M,中華電信停止了今年計劃推出的50M/5M服務。

到底是要增加國內網路頻寬速度?還是阻礙?我看是後者居多,內政部的考量不知道是啥,可能不知道中華電信要推50M/5M?只喊20M/2M?如果真的是這樣,那中華電信就有問題,如果內政部知道要推50M/5M,那內政部就有問題…………推啥都無所謂,費用再便宜點才是真的……

========================================================================

中華電信50M/5M光纖上網服務喊卡

文/蘇文彬 (記者) 2010-06-24

由於內部決定加速推動光纖上網10M用戶昇級至20M,中華電信停止了今年計劃推出的50M/5M服務。

由於光纖用戶推廣策略轉變,中華電信停止推出50/5M光纖上網服務的構想,全力推動10M光纖上網用戶昇速至20M,讓國內想使用較高上傳速度的用戶期望落空。
原本中華電信因應國內寬頻用戶更高上傳速度的需求,計劃今年推出比現有50M/3M上傳更快的50M/5M服務,以此吸引寬頻用戶往更高速率服務昇級。但據瞭解,中華電信內部調整行銷策略,已決定停止規劃推出50M/5M服務。
中華電信數據分公司協理劉伴和表示,原本中華電信要向NCC提出光纖上網50M/5M速率,但因為策略改變,決定先以推動現有光纖10M/2M用戶昇級至20M/2M為優先,目前已暫停推出50M/5M速率服務。
光纖上網50M/5M服務暫停後,國內光纖寬頻用戶若要使用5M上傳頻寬必需申請100M/5M服務,但該服務電路月租費加上網路費高昂,至少2000元以上,並且受限於光纖網路鋪設有地區上的限制,用戶申請該服務不一定可以安裝。
目前中華電信Hinet在國內約有160多萬光世代用戶,其中多數為10M速率,20M用戶只有2萬戶,中華電信現階段除了繼續吸引ADSL用戶昇級使用光世代用戶外,也希望吸引既有10M光世代用戶昇級至20M,同時也希望加速更多ADSL用戶昇級至光世代服務。
據中華電信的預計,在國內光纖上網用戶不斷增加下,最快在今年第三季光纖上網用戶數便可能超越ADSL成為主流固網寬頻技術。目前國內光纖上網用戶整體已有186萬戶,而ADSL則有245萬戶,兩者間仍有60萬戶的落差。

一個專門在介紹 VMWare 虛擬機器的 BLOG

一個專門在介紹 VMWare 虛擬機器的 BLOG

http://vaemon.com/

邏輯問題

有三個人去旅行,要夜宿時呢找了一間旅館,旅館老闆跟他們每人收了100元,
這三個人進房後,老闆請服務生拿50元退回去給他們,服務生走在半路上想50元3個人不好分,
於是自己暗摃了20元,到了房間後還給這3個人每人10元。
3個人收下找的錢後,等於每人出了90元,3*90 等於 270,
270加上服務生暗摃的20 等於 290。
好啦,原來有300元 為什麼只剩290元,少的10元那去了?

======================================================================

這種題目,會讓人邏輯混亂……………

這題陷阱在於,90*3=270是算出房客實付金額(包含被服務生a走的20),而三名房客身上有老闆退的錢共30元,才是正確的算式。

所以房客實付的金額270不包含老闆退的30,但包含了被服務生a走的20元,題目的算式確是用 270+20,整個邏輯錯誤…….

"FoxitReaderOCX.ocx failed to load" 問題解決方案

無法用GOOGLE瀏覽器直接開啟 PDF 檔,找了一下網路,有了答案。

===================================================================================

http://www.cnblogs.com/codingmylife/archive/2010/04/20/1716687.html

"FoxitReaderOCX.ocx failed to load" 問題解決方案

      剛換了WIN7,前段時間一直用火狐在網上搜論文看。 我用的Foxit Reader做PDF閱讀器,它的火狐瀏覽器插件很好用。 但這剛換了WIN7,用火狐打開PDF文件時居然出現如題的錯誤對話框。 後google得到解決方案:

      在Foxit官網下載火狐插件,是Fzip格式的。 打開Foxit Reader,點擊Help –> Install Updates 。 選中下載下來的Fzip格式插件安裝,如果出現找不到Firefox的錯誤時。 關閉Foxit Reader,然後:

  • npFoxitReaderPlugin.dll從"..\Foxit Reader\plugins\"拷貝到"..\Mozilla Firefox\plugins"。
  • FoxitReaderOCX.ocx從"..\Users\USER\AppData\Local\Temp"拷貝到"C:\Windows\System32"。
  • 在管理員權限下的命令行提示符中運行"regsvr32 FoxitReaderOCX.ocx"。

      這樣再用火狐在線打開PDF文檔時就可以在瀏覽器中看啦!

mrxsmb 8003錯誤訊息

最近在DC server 上看到這個訊息:

1

查了一下,微軟官方說法,我是用第三種方式修改regedit,修改後就沒再看過這種訊息,應該算是有用吧。

症状

Windows NT 主域控制器 (PDC) 和 Windows NT 客户计算机在同一物理子网和同一域上。客户计算机可连接至 PDC 上的网络共享。在 Windows NT PDC 的“事件查看器”中显示下列系统事件:

事件 ID: 8003

说明:主浏览器从 >Windows NT client< 计算机收到一个服务器声明,认为它是 >NetBT< 传输上的域的主浏览器。主浏览器停止或要求作出一个选择。 在 Windows NT 客户机的“事件查看器”中显示下列系统事件: 事件 ID:8009 说明:浏览器不能设置其自身为主浏览器。当前认为它是主浏览器的计算机是 >PDC<。 事件 ID:8019 说明:浏览器不能设置其自身为主浏览器。浏览器继续试图设置其自身为主浏览器,但将不在“事件查看器”中记录任何事件。

原因

如果 Windows NT 客户计算机的子网掩码不正确或与 PDC 不同,将会出现这种情况。客户计算机试图设置其自身为子网的主浏览器,但没有成功。

解决方案

要纠正该问题,可以更改 TCP/IP 协议设置以纠正子网掩码。

updata 2006/11/27:

新增5种解决的方法:

1.禁用基于tcp/ip的netbios.

2.启用自带的防火墙,或许会有效.

3.[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\
Parameters]"MaintainServerList"="FALSE"

4.禁用Computer Browser服务,这服务禁用的效果大概是在lan里面时,你无法访问别人或别人无法访问你,好像是开share之类的访问吧?

5.微软和思科的方法:RESOLUTIONTo stop the 8003 error messages, make sure the routers on the network are not forwarding UDP broadcasts, keeping browser elections on NetBT local to each subnet and enable WINS or lmhosts on the network for netbios name resolution. NOTE: Switches configured for VLAN’s (virtual segmentation) have to be configured on a per VLAN basis to prevent UDP broadcast propagation.