顯示具有 網際網路 標籤的文章。 顯示所有文章
顯示具有 網際網路 標籤的文章。 顯示所有文章

2011年7月6日 星期三

Facebook 以及 Google+ 你準備選邊了嗎?

最近谷歌宣佈Google+計劃進入測試階段,絶大部份應邀請參與這項測試的先進以及網友們在試用了之後,也都迫不及待的極力推薦谷歌的這項產品,把社交網路(Social Network)炒得沸沸揚揚的,同時也造成網路上不小的騷動。似乎為數不少的網友已經開始引領期盼Google+的正式上線!您呢?

(Credit: Josh Lowensohn/CNET)

從這兩天的新聞可以嗅到Facebook以及Google兩大陣營互相較勁的味道了!根據CNet的報導,Facebook已經準備在他們的總部發佈有關新服務的簡報,這些新服務包括平板電腦應用程式、照片分享、音樂欣賞(可能跟Spotify有關),甚至提到以Skype為基礎的視訊服務(Video Chat Service)等等。
這一連串的變化,都是肇始於谷歌發佈的Google+計劃!這個計劃給整個社交網路帶來了進步的契機,沒有谷歌的這個刺激,Facebook不會有如此快速的轉變!顯而易見的,這個社交網路這塊大餅提供這兩大陣營多麼大的動力!
在這之前,雖然有零星的相關產品出現,但是對Facebook都沒構成什麼威脅。但這一次就不同了,Google+計劃的出現,把原來一家”獨佔”的局面打破了;這整個事件對使用者來說應該算是一項利多,必竟經過這兩年,Facebook並不是那麼的長進;但是從另外一個角度看來,龜步的Facebook也並非一無是處,經過了這兩年的淬鍊,已經可以說是相對的穩定了;或許,在冒然投入Google+的懷抱之前,先瞭解一下Google+的優點、強項再”下手"不遲!

2011年7月3日 星期日

Google+ 計劃

Google的Google+計劃現在已經到了測試(Field Trial)的階段了。既然已經進行測試,它的使用說明也已經上線;因此,現在雖然我們沒辦法試用、一窺究竟,也只能到它的官網瞭解一下。
Google+的說明,可以看到它包含了下面幾個重要的元件,這些組成元件可以在Google+計劃的官網上看到詳細的說明。在英文版的官網則可以看到它的Demo畫面。
  • 社交圈(Circles)
  • 話題靈感(Sparks)
  • 視訊聚會(Hangouts)
  • 即時上傳 (Instant Upload)
  • 閒聊(Huddle)
Google似乎把目前使用在網路以及行動裝置上的互動工具做了一個整合,其中包含了即時通、視訊以及社交網站等等。 在乍看之下,它們幾乎可以對應到Facebook的功能;但是它給人的第一個印象是它使用了一個非常不錯的概念--圈圈(Circles)。 圈圈(Ciucles)的概念,說穿了就是集合的概念,或者是說是一種分類!它可以說非常的接近我們一般的日常生活。在學校上課有同學、老師,是一個或多個圈圈;在工作場所有同事、客戶又是另外一個或多個圈圈;下了班、放了學又有各自的朋友、親人等等好幾個圈圈...,這些圈圈有可能有交集、聯集,或一點關係也沒有。 在Facebook上,要分類也不是一個大問題,"建立名單"之後,把朋友放進去也就解決了,但是因為它並沒有內建的相關功能,所以感覺上不是那麼的好用。 再者,Google應該會不會把它們的產品晾在一邊!Google勢必會把它們現有的工具或服務(例如,網路搜尋、Gmail、Gtalk、Google定位、Picasa以及快訊等等)整合到Google+裡。 相信Google+計劃是蠻值得期待的!

2009年5月2日 星期六

POP3的基本作業(Basic Operation)提到了幾個基本的操作;而事實上這幾個操作都包含在POP3 == RFC 1939一文中所提到的POP3Client類別(Class)裡。這個類別原來是用C#(C Sharp)寫的,最近亞伯特把它整理了一下,同時也改寫成VB以及VC++以供參考。 連接POP3伺服器函數(Function) Connect() 這個函數使用型別為TcpClient的物件(tcClient)來連接POP3伺服器;在連接的同時,這個函數會建立一個型別為NetwrokStream的物件(nsStream),這個物件用夾提供網路存取資料的功能;呼叫它時,必須提供伺服器稱(例如HiNet的郵件伺服器,ms1.hinet.net)以及埠號(按照POP3,通常是110)。函數在結束時呼叫函數GetResponse(),這個函數負責透過nsStream讀取伺服器回應的訊息,並且判斷連結是否成功: [VB 的程式碼] Public Function Connect(ByVal Server As String, ByVal Port As Integer) As Boolean '--- 連接伺服器/Connect to POP3 server ------------------------------     Try     tcClient = New TcpClient(Server, Port)     nsStream = tcClient.GetStream()     nsStream.ReadTimeout = 15000     Catch         Throw     End Try     Return GetResponse() End Function [VC#的程式碼] public bool Connect(string Server, int Port) {     //--- 連接伺服器/Connect to POP3 server ------------------------------     try     {         tcPOP3Client = new TcpClient(Server, Port);         nsStream = tcPOP3Client.GetStream();         nsStream.ReadTimeout = 15000;     }     catch (SocketException)     {         throw;     }     return GetResponse(); } [VC++的程式碼] bool CPOP3Client::Connect(String^ Server, int Port) { //--- 連接伺服器/Connect to POP3 server ------------------------------     try     {         tcPOP3Client = gcnew TcpClient(Server, Port);         nsStream = tcPOP3Client->GetStream();         nsStream->ReadTimeout = 15000;     }     catch (...)     {         throw;     }     return GetResponse(); } 登錄POP3伺服器函數Logon() 它藉著呼叫函數Request()執行登錄的動作 ;Request函數是透過nsStream把要求傳給伺服器,然後呼叫GetResponse()函數取得回應的訊息,並且藉由該訊息判斷是否登錄成功: [VB 的程式碼] Public Function Logon(ByVal Username As String, ByVal Password As String) As Boolean '--- 登錄郵件伺服器/Logon POP3 server -------------------------------- '     Return Request("USER", Username) And Request("PASS", Password) End Function [VC#的程式碼]  public bool Logon(string UserName, string Password) { //--- 登錄郵件伺服器/Logon POP3 server --------------------------------     return Request("USER", UserName) && Request("PASS", Password); } [VC++的程式碼] bool CPOP3Client::Logon(String^ UserName, String^ Password) { //--- 登錄郵件伺服器/Logon POP3 server --------------------------------     return Request("USER", UserName) && Request("PASS", Password); } [VB 的程式碼] Private Function Request(ByVal Command As String) '--- 傳送指令給伺服器/Request POP3Server -----------------------------     Dim bytCommand() As Byte = Encoding.ASCII.GetBytes(Command & vbCrLf)     nsStream.Write(bytCommand, 0, bytCommand.Length)     Return GetResponse() End Function [VC#的程式碼]  private bool Request(string Command) { //--- 傳送指令給伺服器/Request POP3Server -----------------------------     Byte[] bytCommand;     bytCommand = Encoding.ASCII.GetBytes(Command + "\r\n");     nsStream.Write(bytCommand, 0, bytCommand.Length);     return GetResponse(); } [VC++的程式碼] bool CPOP3Client::Request(String^ Command) { //--- 傳送指令給伺服器/Request POP3Server -----------------------------     array<Byte>^ bytCommand;     bytCommand =Encoding::ASCII->GetBytes(Command + "\r\n");     nsStream->Write(bytCommand, 0, bytCommand->Length);     return GetResponse(); } 讀取伺服器回應訊息的函數GetResponse() 如前所述,GetResponse()是透過nsStream讀取伺服器的回應訊息;所以GetResponse()不但要正確的取得伺服器的回應,而且要判斷該訊息是成功(+OK)的訊息或者是失敗(-ERR)的訊息。 [VB 的程式碼] Public Function GetResponse() As Boolean '--- 讀取伺服器回應的資料/Get response from POP3 server --------------- Dim iBytes As Integer Dim bOk As Boolean     Try         '--- 讀取資料/Getting Data --------------------------------------         iBytes = nsStream.Read(bytData, 0, bytData.Length)         strResponse = Encoding.ASCII.GetString(bytData, 0, iBytes)         bOk = strResponse.StartsWith("+OK")         '--- 多行的處理/For multi-line -----------------------------------         If (strResponse.IndexOf(vbCrLf) < (iBytes - 2)) Then             Do While Not (strResponse.EndsWith("." & vbCrLf))                 iBytes = nsStream.Read(bytData, 0, bytData.Length)                 strResponse &= Encoding.ASCII.GetString(bytData, 0, iBytes)             Loop             strResponse = strResponse.Substring(0, strResponse.Length - 3)             strResponse = Unfolding(strResponse)         End If         If bOk Then strResponse = strResponse.Substring(3) _                                         Else strResponse.Substring(4)         strResponse = strResponse.TrimStart()     Catch         bOk = False     End Try     Return bOk End Function [VC#的程式碼]  private bool GetResponse() { //--- 讀取伺服器回應的資料/Get response from POP3 server ---------------     int iBytes;     bool bOK = false;     try     {         //--- 讀取資料/Getting Data --------------------------------------         iBytes = nsStream.Read(bytData, 0, bytData.Length);         strResponse = Encoding.ASCII.GetString(bytData, 0, iBytes);         bOK = strResponse.StartsWith("+OK");         //--- 多行的處理/For multi-line -----------------------------------         if ((strResponse.IndexOf("\r\n") < (iBytes - 2)))         {             while (!strResponse.EndsWith(".\r\n"))             {                 iBytes = nsStream.Read(bytData, 0, bytData.Length);                 strResponse += Encoding.ASCII.GetString(bytData, 0, iBytes);             }             strResponse = strResponse.Substring(0, strResponse.Length - 3);             strResponse = Unfolding(strResponse);         }         if (bOK) strResponse = strResponse.Substring(3);         else strResponse.Substring(4);         strResponse = strResponse.TrimStart();     }     catch (IOException)     {         bOK = false;     }     return bOK; } [VC++的程式碼] bool CPOP3Client::GetResponse() { //--- 讀取伺服器回應的資料/Get response from POP3 server ---------------     int iBytes;     bool bOK = false;     try     {         //--- 讀取資料/Getting Data --------------------------------------         iBytes = nsStream->Read(bytData, 0, bytData->Length);         strResponse = Encoding::ASCII->GetString(bytData, 0, iBytes);         bOK = strResponse->StartsWith("+OK");         //--- 多行的處理/For multi-line -----------------------------------         if ((strResponse->IndexOf("\r\n") < (iBytes - 2)))         {             while (!strResponse->EndsWith(".\r\n"))             {                 iBytes = nsStream->Read(bytData, 0, bytData->Length);                 strResponse += Encoding::ASCII->GetString(bytData, 0, iBytes);             }             strResponse = strResponse->Substring(0, strResponse->Length - 3);             strResponse = Unfolding(strResponse);         }         strResponse=bOK?strResponse->Substring(3):strResponse->Substring(4);         strResponse=strResponse->TrimStart();     }     catch (...)     {         bOK = false;     }     return bOK; }  

2009年4月20日 星期一

POP3 的三章--基本作業 (Basic Operation)

在先前的POP3 == RFC 1939文中提到 "...只要看RFC 1939的第三頁到第五頁,就大致上把它主要規則的描述看完了...",但是在該文中,並沒有提及該部份詳細的內容!以下是針對該部分所做的補充,把POP3的第三章基本操作 (Basic Operation) 介紹一下。(英文斜體的部分是POP3的原文,中文的部分僅供參考) Initially, the server host starts the POP3 service by listening on TCP port 110. When a client host wishes to make use of the service, it establishes a TCP connection with the server host. When the connection is established, the POP3 server sends a greeting. The client and POP3 server then exchange commands and response (respectively) until the connection is closed or aborted.  POP3伺服器會監聽TCP的埠號第110 (這也就是POP3的預設通訊埠)。當用戶端的電腦想要使用POP3的服務時,它會透過TCP與伺服器連線。連線成功之後,伺服器會向用戶端電腦送出問候語,表示伺服器已經可以正確的提供服務。接下來,伺服器與用戶端就可進行直接的交談。 Commands in the POP3 consist of a case-insensitive keyword, possibly followed by one or more arguments. All commands are terminated by a CRLF pair. Keywords and arguments consist of printable ASCII characters. Keywords and arguments are each separated by a single SPACE character. Keywords are three or four characters long. Each argument may be up to 40 characters long. POP3所使用的命令並沒有大小寫之分,而且有可能會有一個以上的參數;所有的命令都是以CRLF (Carriage Return + Line Feed) 結束的。這些使用三到四個字元的命令關鍵字以及它的參數之間是以空格分開,同時都是可列印的ASCII字碼;至於參數可以長逹40個英文字元。 Responses in the POP3 consist of a status indicator and a keyword possibly followed by additional information. All responses are terminated by a CRLF pair. Responses may be up to 512 characters long, including the terminating CRLF. There are currently two status indicators: positive ("+OK") and negative ("-ERR"). Servers MUST send the "+OK" and "-ERR" in upper case. POP3伺服器的回應除了包含一個狀態的指示及一個關鍵字之外,可能再加上其它的資訊;整個回應的長度可以長達512個字元;同樣的,所有的回應都是以CRFL結束目前所使用的狀況指示有以下兩個:表示正常的 "+OK" 以及表示失敗的 "-ERR";它們都必須以大寫表示Responses to certain commands are multi-line. In these cases, which are clearly indicated below, after sending the first line of the response and a CRLF, any additional lines are sent, each terminated by a CRLF pair. When all lines of the response have been sent, a final line is sent, consisting of a termination octet (decimal code 046, ".") and a CRLF pair. If any line of the multi-line response begins with the termination octet, the line is "byte-stuffed" by pre-pending the termination octet to that line of the response. Hence a multi-line response is terminated with the five octets "CRLF.CRLF". When examining a multi-line response, the client checks to see if the line begins with the termination octet. If so and if octets other than CRLF follow, the first octet of the line (the termination octet) is stripped away. If so and if CRLF immediately follows the termination character, then the response from the POP server is ended and the line containing ".CRLF" is not considered part of the multi-line response. 如果伺服器的回應包含多行的話,除了最後一行是以 ".CRLF" 當結尾以外,其它每一行都是以 "CRLF" 為結尾的。此外,在多行回應的狀況下,如果是以"."為開頭,其後接的是CRLF,則它被視為是最末行;如果其後接的是CRLF以外的字元,則"."這個符號是可以被忽略的。 A POP3 session progresses through a number of states during its lifetime. Once the TCP connection has been opened and the POP3 server has sent the greeting, the session enters the AUTHORIZATION state. In this state, the client must identify itself to the POP3 server. Once the client has successfully done this, the server acquires resources associated with the client's maildrop, and the session enters the TRANSACTION state. In this state, the client requests actions on the part of the POP3 server. When the client has issued the QUIT command, the session enters the UPDATE state. In this state, the POP3 server releases any resources acquired during the TRANSACTION state and says goodbye. The TCP connection is then closed. 一但用戶端電腦與伺服器建立連線,而且伺服器對用戶端電腦送出問候語之後,就進入了驗證階段。在這個階段,用戶端電腦必須表明使用者的身份。驗證成功之後,則可以進入傳輸階段;在這個階段,用戶端電腦可以對伺服器要求所需要的資訊。最後,當用戶端送出QUIT命令之後,進入更新階段;這時伺服器向用戶端道別,並結束連線。 A server MUST respond to an unrecognized, unimplemented, or syntactically invalid command by responding with a negative status indicator. A server MUST respond to a command issued when the session is in an incorrect state by responding with a negative status indicator. There is no general method for a client to distinguish between a server which does not implement an optional command and a server which is unwilling or unable to process the command. 這段的意思大概就是說,伺服器對於它沒有辦法處理的命令一概回應"-ERR";用戶端基本上沒有辦法由它的回應判斷錯誤的原因。 A POP3 server MAY have an inactivity autologout timer. Such a timer MUST be of at least 10 minutes' duration. The receipt of any command from the client during that interval should suffice to reset the autologout timer. When the timer expires, the session does NOT enter the UPDATE state--the server should close the TCP connection without removing any messages or sending any response to the client. POP3伺服器可以有一個計時器,這個計時器的設定值至少為十分鐘。在接收到用戶端的任何要求的同時,將會把這個計時器復歸;如果在這個計時器的計時結束時,尚未進入更新階段,則伺服器應自動中斷連線 ;在中斷連線時不會移除任何訊息,也不會給用戶端任何回應。

2008年7月12日 星期六

Gadget & Widget

中文版(點這裡)

The Gadgets of Google and Widgets of Yahoo are desktop tools which are composed by Javascript mainly, and provide handy/fun functions. Both of Google and Yahoo provide support information on their own website. Visit Google Desktop and Yahoo! Widgets for more details. It is quite different between Gadgets and Widget for installation. Administrator privilege is needed for installing Google Desktop and user privilege for Yahoo! Widget. I brought this up is because that the laptop I'm using belongs to the company and I do not possess administrator privilege. It seems that The Yahoo! Widget is my only choice!

Make Your Choice Carefully

Just a small part of those Gadgets or Widgets on their websites were developed by their own teams, most of desktop tools were composed by so-called "third party", it might just like you or someone else. And the quality might different between those little desktop tools. You might know that it takes system resources while running (on a computer). It is possible that a Gadget/Widget grabs system resources more than you thought if the author (of the desktop tool) did not consider about system performance carefully.

Develop Your Own Desktop Tools/ A Platform for Practicing Javascript Programming

Have you ever thought about what inside these desktop tools are? Google and Yahoo provide a lot of resources for developers. And they might intent to interest you for your taking part in developing their desktop tools. Google provides a SDK (Software Develop Kit) and lots of information on websites. Yahoo supplies a tool application Widget Converter, for packing/unpacking Yahoo! Widget, and tutorial documents and reference manuals. Furthermore, you can decompress those Gadgets and Widgets that download from their websites as example programs, if you are interested.

Different Between Gadget and Widget
Google Gadget Yahoo Widget Remark
Pack File Zip File/Flat Format File Zip File Widget converter is for Flat format Yahoo! Widget.
Ext. File Name Widget gg
Type of Main File *.kon Main.xml XML(Extensive Markup Language) format
Tool App. Widget Converter SDK (Software Develop Kit)

2008年6月15日 星期日

火狐狸 3 (Firefox 3)即將登場!

功能強大的火狐狸3(Firefox 3)的即將在六月十七號登場。
Mozilla已經把下個星期二(June 17)定為火狐狸的下載日(Download Day)。希望在下載日當天24小時內,為單日軟體下載次數締造新的金氏世界記錄(Guinness World Record)!
(下載自CNet)
Firefox 3它標榜比以前更安全、更快速以及更聰明。它的新功能中最讓人期待的應該是它所說的 "閃電般的執行效率(Lightning fast performance)" 以及它的安全功能。呃,Lightning fast performance....!\:0
不管如何,亞伯特十分的樂意看到這個由支持原始碼開放的機構所開發出來的軟體,不但是好用,而且足以跟微軟抗衡!就讓咱們拭目以待吧..... 想要在第一時間下載Firefox3,或者支持免費、開放原始碼的軟體,可以到下面這個網站去聲援它。留下您的email帳號,Mozilla會把相關的訊息通知您哦!
Download Day 2008

2008年6月1日 星期日

簡單易用的線上(Web-Base)影像編輯軟體FotoFlexer

基本上,要用Photoshop得先付上一筆銀子,可能還得花一些磞子到補習班去上個幾個小時的課程,學一些基本技巧。甚至,有些人可能學一大堆用不上的東西,過久了也忘了!這些在日常生活上,平民百姓之家都是正常得不得了的事情。 像我們這種買不起Photoshop,但是做報告、網頁需要處理影像檔,或是想要小小的修飾一下自己的照片,卻苦苦找不到適當軟體可以使用的升斗小民有福了! 最近CNet就一口氣介紹了三款Free(免費)的影像處理軟體, Paint.NET FotoFlexer GIMP 有興趣而且想練練英文聽力的不妨參考一下的CNet上的影片...

拜軟體技術的進步之賜,Web-Base的應用程式造福了不少的網民。像是Google Document就是一個很好的例子。在上述的三款應用軟體中,亞伯特就特別的試用了FotoFlexer,它就是一款Web-Base Application。使用者不用下載、安裝就可操作這個應用軟體了!而且只需要簡單的操作,就可以達到不錯的效果....

經過亞伯特小試了之後發現,修改過的影像好像有"縮水"的現象!亞伯特上載的影像是2048X1536;結果,經過編輯之後,下載回來的卻只有638X479!未免差太多了.... :0<

不過,話說回來,至少它是Free的!不是很滿意,但勉強可以接受吧...

它還支援多國語言的,其中就包括繁體中文,不錯吧!只要在首頁的下方選擇繁體中文就行了(小遺憾是,代表繁體中文的旗子用錯了!:0<)。

至於登錄,您只要使用email的帳號註冊之後,就可以馬上使用了。你所要編輯的影像檔案,可以是放在網路上的相簿,像是MySpace、facebook或是Picasa等等,當然您也可以直接把您的圖檔上傳到FotoFlexer去編輯,應該是蠻方便的。

有空的話不妨三款都試試看,再把心得分享一下哦!:0)