總網頁瀏覽量

2012年11月3日 星期六

吾日三省吾身

開始上班之後常常覺得時間不夠,

不夠學新技術、不夠玩(...)、不夠吾日三省吾身。

今天參加完php conf的感想

恩...全然聽不懂。

但,我想學習這些新技術並不是這麼重要的

重要的是必須跟上世界的腳步,

知道解問題時有哪些利器可用。

這樣就完全足夠了。

當真正需要用的時候,

再下去學習也不遲。



技術鑽研得太深,

往往看不到更宏觀的架構問題;

BUG追得越底層,

往往忽略真正的問題在於源頭。

越忙的時候,

越應該找個時間整理下思緒,

把視思維到宏觀的角度來思考。

才能做出綜觀全局的判斷,

才不會只看著前方的岔路在煩惱,

而忽略了回到上一個岔路重新選擇的方式。

2012年10月30日 星期二

三個臭皮匠

浴室(廁所)真是一個發人省思的好地方。

剛剛洗澡時思緒突然天馬行空起來,

我在想line之類的即時通訊軟體如何處理巨量的使用者訊息呢,

(最近在做performance testing)

接著又想到當初LINE大打廣告,也不見任何收費機制,

有些評論便指出此舉是為了搶佔市場,

待市佔率成熟時不管推出什麼商業模式使用者都較容易買單。

現下,

LINE也不出所料推的出了插圖收費機制,

我又想了,

像我這樣窮酸摳門的人,這一輩子肯定半毛都不會貢獻給LINE吧!

但又為什麼這種80%利潤來自20%的商業模式能夠運行不衰呢

歸根究底,

個體無法代表全體阿。

所以說,

不管是認為一個IDEA可不可行,

一個程式邏輯漂不漂亮,

還是,一個商業模式work不work,

都不是單單一個人就能決定的。

無怪乎討論、分享的動作是如此重要,

即便是被認為理所當然的事,

都有可能從別人的腦袋中迸出意想不到的思考模式。

而透過如此不斷的增廣見聞,

才能打開被自己侷限住的視界。

2012年10月26日 星期五

Be careful using COUNT in pig


I’m running some pig script to count the number of rows.
And found that the COUNT function ignore rows in bag which has null in first field.
I change the field order and take experiments bellow
 
--------- source file ----------
A       E       G
        F       H
B       F       I
 
 
[Experiment#1]
--------- pig ----------
A =load '/user/myspn/exp' using PigStorage() as (X:chararray, Y:chararray, Z:chararray);
B = group A by (X,Y);
C = foreach B generate group.$0, group.$1, A, COUNT(A);
dump C;
--------- result ----------
(,F,{(,F,H)},0)
(A,E,{(A,E,G)},1)
(B,F,{(B,F,I)},1)
 
 
[Experiment#2]
--------- pig ----------
A =load '/user/myspn/exp' using PigStorage() as (X:chararray, Y:chararray, Z:chararray);
D = foreach A generate Y, X, Z;
B = group D by (Y,X);
C = foreach B generate group.$0, group.$1, D, COUNT(D);
dump C;
--------- result ----------
(F,,{(F,,H)},1)
(E,A,{(E,A,G)},1)
(F,B,{(F,B,I)},1)
 
 
In experiment#1 we see that the group function still works fine but COUNTs nothing.
So the conclusion is making sure that the first field of rows to be count is not null.

2012年9月27日 星期四

NETGEAR WDNA3100網卡 + DSL-6641K上網問題

這個也是卡關了兩小...
本來預期是沒有難度的
不知為什麼連得到但就是無法上網
後來解決了但也不曉得原因是什麼= =

總的言之
中華電信的人給DSL-6641K的設定相當陽春
加密法選的是WEP 64bit
擺明讓人偷連XDDD
不過秉持能用就好,其餘不管的一般user觀念
我未曾想去動他
沒想到最後把它改成WPA2就輕鬆連上了
真不曉得為什麼= =

簡而言之
NETGEAR WDNA3100網卡 + DSL-6641K不能選WEP加密法
不然就是老死上不了網,完畢

UPDATE:
改完之後還是只能機率性上網,不然就要等long long time
到官網下載最新版的driver就沒問題啦

卡關兩天的編碼問題= =

這件事原本我們所想的是遠遠的單純
至今才恍然大悟...

起初
我們的網頁資料是透過PIG跑hadoop map reduce job得到結果並存在HDFS上
再透過sqoop export至mysql
最後display到網頁
然而資料中city值卻會出現亂碼

因此我們認為在PIG call UDF時得到的的資料就不是UTF-8的編碼
導致最後呈現在UTF-8網頁上會有問題

[Solution1]
改UDF,將回傳值convert至UTF-8

然而發現JAVA本身就是Unicode
這樣回傳回來的應該沒問題阿!!

後來發現原來我們的MySQL character set都是latin1
所以是不是因為將UTF-8值塞入至latin1造成亂碼呢

[Solution2]
將Column編碼改成UTF-8
並將原本存的值CONVERT成UTF-8看是否會正常顯示
結果還是失敗= =

跟據了解MySQL存值是Binary Safe的
所以設定column的編碼只是告訴他用什麼碼來解讀
因此所存的值應該是沒有問題
那到底問題在哪呢
只剩下取值階段解譯錯了
所以進到MYSQL調整client,connection,results的字集設定

mysql > set character_set_client =utf8
mysql > set character_set_connection =utf8
mysql > set character_set_results =utf8
mysql > show variables like 'char%';


+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

這樣行了吧
結果卻是無奈

幾番排列組合後結果依然沒有進展
後來從新連入後才發現!!
這些值無法on the fly 改變
所以...

[Solution 3] !!!正解阿!!!

edit /etc/my.cnf 加入下面的設定,並RESTART MYSQL
[mysqld]
#   character-set-server=utf8
#   collation-server=utf8_general_ci
   init-connect='SET NAMES utf8'
[client]
   default-character-set=utf8
service mysqld restart

哦~~資料庫都不用動,讀出來的資料都頭好壯壯啦!!!
為了這件是蠢了兩天XD

UPDATE:
不想改資料庫設定的話
也可以從程式下手,在query前先下SET CHARACTER_SET_RESULTS=utf8即可

2012年8月3日 星期五

里程碑:第一天上班

第一天好新鮮好緊張
先到人資所在處所報到繳交文件後,主管沒過多久馬上來把我領走
很熱心地介紹了一些公司的部門、地理位置
接著帶我去IT部門灌電腦
回來之後由於缺乏電腦支持就拿了幾本書來讓我看看
下午馬上參加weekly meeting
自我介紹免不了,接著就是觀察還不錯的meeting氣氛
很多不懂的一一pick up

中午吃飯跟一大群人去吃,感覺還不錯,只是還有點生疏就是了
晚上主管來說沒事就先走了不要硬撐XD
也沒錯因為根本沒電腦呀!

第二天早上電腦好了,順便抱了新同事的電腦下去灌
開始摸一大堆不懂的事情,除了很多技術要學
HR也很"熱心"發了一些LEARNING= =
還要考試!
這天研究linux比較多,因為不會的太多

第三天早上上了tim的shell script
很糗完全不會連vi開起來怎操作都不知道
更不用說寫daeman
下午all hands看max用很奇特的英文講有趣的故事,還不錯!
這天估計明天放假就待到9點才走,品嘗山大王滋味,哈

第四天....空白,快跳過

FRIDAY~! 明天又放假了,呵呵
今天先學習shell script,把daeman寫好,test看看有沒有問題
結果有ㄟ!!!!
研究一個早上沒結果
最後下班前問tim原來也有其他人碰到
馬上解掉此問題= =
果然還是問人快啊!
下午聽Jeff介紹即將光速參與的project~!
有一堆東西要學呢
Git看看先囉

下禮拜繼續挑戰!