bad sector

才剛步入2014年半個月就發現了harddisk 有bad sector... =.=, 還好它還在保養期內可以換一個吧, 不過保養只開星期一至五, 是要找一天請半天假換一個吧!



picasa flash player - fix for picasa flash player not working

昨天發現了之前用來播相簿的Picasa flash player沒有正常的播放相片, Google 一番後發現很多人也有著同樣的問題, 由於新的Picasa web 版面沒有了內嵌播放的HTML 碼,開頭都有點迷茫, 不過就在網上討論區找尋解決方法時,發現了只要用上https://picasaweb.google.com/lh/myphotos?noredirect=1 就可以去回舊的Picasa 版面 (其實在login 後,在新的版面也有一個小小的link 可以轉回舊有的版面), 在那裏就可以重新找回內嵌播放的HTML碼...


成功找到新的html碼,重為一個I.T人就當然看看有沒有什麼的分別吧!

先看看舊的代碼..
<embed 
pluginspage="http://www.macromedia.com/go/getflashplayer" 
width="218"
src="http://picasaweb.google.com.hk/s/c/bin/slideshow.swf" 
height="192" 
flashvars="host=picasaweb.google.com.hk&captions=1&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com.hk%2Fdata%2Ffeed%2Fapi%2Fuser%2YOURID%2Falbumid%2F##ALBUMID##%3Fkind%3Dphoto%26alt%3Drss" 
type="application/x-shockwave-flash">
</embed>

再看看新的
<embed type="application/x-shockwave-flash" 
src="https://static.googleusercontent.com/external_content/picasaweb.googleusercontent.com/slideshow.swf" 
width="218" 
height="192"
flashvars="host=picasaweb.google.com&hl=zh_TW&feat=flashalbum&RGB=0x000000&feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2FYOURID%2Falbumid%2F##ALBUMID##%3Falt%3Drss%26kind%3Dphoto%26hl%3Dzh_TW" 
pluginspage="http://www.macromedia.com/go/getflashplayer">
</embed>

首先最明顯的分別當然是src的不同了,那就先試試原本的link,在browser打入原本的link, 竟然係出了404!?, 好就再試一試把hk移除,這一次它卻會redirect去新HTML碼中的那一條link呢, 那應該是hk那一個domain 沒有在server side 中設定好適當的redirect,雖然只要移除hk的部份就應該可以redirect去新link,但為了避免在那一天Google又把那redirect設定移除,還是乖乖地換上新link比較好.

除了src的分別外,另一個分別是flashvars中放user的一part,之前是放用戶名稱的,但新的代碼卻換上了一組相信是用戶ID的數字呢,這個應該是除了link的改動後另一個致命傷了..
flashvars="host=picasaweb.google.com&hl=zh_TW&feat=flashalbum&RGB=0x000000&feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2FYOURID%2Falbumid%2F##ALBUMID##%3Falt%3Drss%26kind%3Dphoto%26hl%3Dzh_TW"

最後把這兩part改好後,個picasa flash player又重新正常運作了 :)


ES合金 ESP01 - 功夫貓黨太郎

五月時取回來了的貓太郎,由於太懶的關係,所以現在才出post 呢!

功夫貓黨可以說是小時候其中一套喜歡看的動畫,當長大後,竟然有它的玩具再出來,絕對是會有買下來的衝動呢! :)


很巨型的包裝
有很多的配件呢
換一下Post


新的後備電源

太約兩年前換上iphone後買了支MI pow 的後備電源,不過可惜它已經壞了 :(, 只能差到20%電...20%真係唔知想點,而老婆B也想換上一個足夠差兩次的,所以就又上網留意一下,隨著智能電話的普及,現在真係多了很多的行動電池的選擇,而且電量也越出越大,如果打開團購的網站更是常常找到一些又平又大的,不過我還是對那些有點不放心,因為又唔知佢入面舊電係什麼芯來的,看新聞都會聽到有時電池會爆炸,所以還是俾多一點多少少買有牌子的吧..

最初的選擇是想買eneloop的,不過找了很多地方也找不到,如果在panasonic shop買,價錢去到4xx又有點兒貴呢,最後在Studio A 看到Verbatim 的,拿上手又不算重,而且價錢也可以接受(238大元,還比支powertube平), 而且牌子係日本三菱,雖然都係made in China, 但感覺上質量應該可以接受的,所以最後都係買了它吧, 不過希望唔會咁快壞就好了 :)

三菱品牌及規格
電池及其叉電線
單USB輸出
電池提示, 


socket in C (windows platform)

基本上在離開大學之後,就再也沒有寫過C了,但因為之前有一點很簡單的東西想用c來試一下,所以就很快地寫了個C socket program出來作出測試,當然多年前在課堂上學過的東西, 現在己經忘記了, 雖然在網上很快就可以找到問題的所在,但還是在這裏記一下,留一個記錄比較好..

首先,需要加上以下的code:
#ifdef WIN32
 #include <winsock2.h> 
#else
 #include <sys/socket.h>
 #include <sys/un.h>
#endif

用上這種寫法就可以保證了無論是否windows platform都能連繫上正確的library來呼叫socket 的function.

不過在windows 的環境下,在開socket前,是需要先call WSAStartup 的,否則call socket時便會連不上了

  WSADATA wsaData;
  int ws_result = WSAStartup(0x202, &wsaData);

除了這一點外,還有WSAGetLastError 都是很有用的, 因為它是會把return 連絡不上的error code
int e = WSAGetLastError();

sample program to check port on different protocol
#include <stdio.h>
#ifdef WIN32
 #include <winsock2.h> 
#else
 #include <sys/socket.h>
 #include <sys/un.h>
#endif

#define TESTHOST "x.x.x.x"
#define TESTPORT x

int main(int argc, char * argv[])
{
 char buffer[8193]; 
 int mysocket, len; 
 struct sockaddr_in dest;
   
 WSADATA wsaData;
 int ws_result = WSAStartup(0x202, &wsaData);
 
        // TCP/UDP
 if (argc > 1){
 mysocket = socket(AF_INET, SOCK_STREAM, 0);
 printf("Using SOCK_STREAM\r\n");
 } else {
 mysocket = socket(AF_INET, SOCK_DGRAM, 0);
 printf("Using SOCK_DGRAM\r\n");
 }
 
 printf("mysocket = %d\r\n", mysocket);
 memset(&dest, 0, sizeof(dest));
 dest.sin_family = AF_INET;
 dest.sin_addr.s_addr = inet_addr(TESTHOST);
 dest.sin_port = htons(TESTPORT);
 
 int result = connect(mysocket, (struct sockaddr *)&dest, sizeof(dest));
 printf("host : %s\r\n",TESTHOST);
 printf("port : %d\r\n", TESTPORT); 
 printf("connection result = %d\r\n", result);
 
 int e = WSAGetLastError();
 printf("due to = %d\r\n", e );
 
 if (result >= 0){
  printf("connected!\r\n");
 } else {
  printf("FAIL!!!!!\r\n");
 }
 
 close(mysocket);
 WSACleanup();
}