請記得:
效率=(有效工作量/時間)*意願
意願 ::= {0 | 1}
人在意願為零的時候,喜歡用理由來阻止有效工作量的產出,反之,當意願不為零的時候,會為了有效工作量而找方法。
我國小老師有說過,國中以後的學習跟學校、老師無關,這讓我學會比較獨立的思考學習這件事情,事實上也是,我高職混樂隊也沒讀幾天書,二、三年級公假佔了 半個學期,在樂隊當幹部,副社長,跟著其他人拿著請假單去教官室蓋章,後來教官乾脆拿印章叫我們自己蓋,我們已經翹到老師有點火了,我在這個期間很認真的 把樂器學好,這是唯一的收穫,因為我想要,所以我認真做,結果就是除了打擊樂器之外,管樂部份能夠演奏的有九成,除了西洋樂器之外,國樂的笛與蕭都會演 奏,想當初吹嘴搭在我唇上,光吹出聲音也搞了快一個月,長笛也差不多,單簧片樂器也是,雙簧片類的樂器也是,會與不會是熟練的問題。
我智商也沒真的比較高,智力測驗維持在普通人的階段,甚至還比我專科同學低,但,結果沒比較差,因為我想要寫程式,所以我一直在這方面下功夫,我同學跑去 當CE幫嘉利修理刷卡機,我跑去當RD寫程式,認真的練習,公司也沒教我什麼,就找一堆工作讓我搞,找一堆麻煩讓我解,搞專案讓我寫規格,放一堆火讓我 救,在離開公司之前在公司被稱為C語言之神,金融風暴來襲,我同學被嘉利裁員,女朋友跑了,他重新燃起想要學寫程式這件事情,問我,如何進行?
我就開了一些書單,叫他去找類似的書本看,領政府失業救濟金期間,我叫他去上Microchip的課程,他問我可不可以去職訓中心上課,OK,上完了一堆 課程之後,我叫他隨便找一家小公司當RD寫軔體,不問薪水的做幾個月,再換,到一家做電梯控制的公司上班,再換,做RFID讀卡機、Tag的公司寫軔體, 他的進步絕對比我快,摸索的時間比我短,對一個有意願的人來說,提點就好。
你要問我對沒意願的人怎麼辦?
我會說:「朽木不可雕也」,等意願回來再說,能怎麼辦?
拿皮鞭抽他嗎?
我國小老師影響我的另外一句話是:「天助自助者」,我補習班老師有說過真話,老師每年教的內容都大同小異,能不能上好學校,是學生的問題,老師能干涉到什麼程度?
拿棍子打嗎?
搞清楚,體罰是會被告的!
凡事都有一定的先決條件,滿足這些條件,事情自然就會進行,正如船到橋頭自然直一樣,這是自然的現象,每個人的程度或許有差別,但,這些差別都代表之前的 投入程度的差異,對於一個學過一種樂器的人,另一種樂器的學習或許可以沿用以前的經驗衍生,比如說黑管與薩克斯風,遇到長笛,發音方法差異很大,但按鍵指 法卻類似,投資時間下去練習,有結果並不意外,一切都是自然的結果,我學長最後搞到連爵士鼓、電子琴、吉他BASS都會,有本書的作者30歲才開始練習鋼 琴、體操,他本業是程式設計師勒。
反過來說想要有結果,去分析構成的要素,滿足他,要素到齊了,等老天爺放行,結果自然就會出來,正如盡人事,聽天命,如果人事不盡,天命又能怎樣呢?
人阿~有意願是替困難找方法,沒意願是替目標找麻煩。
我補習班的老師萬老最恨別人說他是天才,他跳級入學,年紀輕輕的就從大學畢業,一路上研究所、博士很快的完成,他認為,說他天才是汙辱他的努力,天才的能力是天給的,他的成就是他努力掙來的,用天才來隨便搪塞這成就是種侮辱。
正如誇讚小孩漂亮,被讚美的是他的父母與老天幫忙,而讚美小孩懂事、乖巧、努力讀書成績好是對小孩的努力鼓勵一樣,請不要搞錯了。
練習可以帶來品質的提升與時間的縮短,直接就影響效率,但是,意願卻是會直接決定要不要練習這件事情,決定要、不要做是各自的事情,反正個人造業個人擔, 放棄遠慮而狂解近憂也都是自找的,成功像沙漏,一點一滴的墊高,雖然社會上一堆靠爸團體,但是,請記得他長輩也是累積過來的,只是付出的投資在現在收割而 已。
2011年8月23日 星期二
ESL 廣播抓下來了~XD
2011年8月16日 星期二
上市公司基本資料的抓取程式
今天晚上完成上市公司基本資料的抓取,底下是螢幕截圖,把這些公司的基本資料存到資料庫內等待以後的處裡,也算個練習而已吧,目標是自動把財報抓過來算,然後產生一個統計、警報的系統出來,很晚了~明天早上再檢查資料庫等收成~Ya。
生命應該用在努力工作上嗎?
從前有座雙峰山,雙峰上各有間廟,廟中都有個和尚,要喝水兩個和尚都要下山取水。
左峰上的和尚左戒,閒暇時開始鑿井,右峰和尚右戒笑左戒吃飽太閒在鑿井,不過就是一小段路,怎麼跟鑿井相比呢?
三年後左戒在廟旁取水,省下的時間參佛、整理寺院,右戒還是要下山取水,忙碌的喊忙,所以是左戒笨嗎?
小A非常努力的把從資料庫拿下來的檔案,經過數道工法做成了一份圖表精美的Excel檔,每週燒掉一天多的時間來完成這份報告,他常常忙得不可開交,非常忙碌、勤勞的工作。
3年前小A也遇過類似的事情,就是ioMeter的報告,每次遇到要提測試報告的時候,就非常忙碌的把文件中的欄位搬來搬去、剪剪貼貼的搞成一份報告,當時我就幫忙寫一個自動報告產生程式並且附上原始碼,提醒要改自己改,有問題可以問,我希望小A能夠學會自己寫這類的報告程式,3年過去了,報告不一樣了,但症狀還是一樣,都是為了省鑿井的時間,卻願意花一輩子時間去山下提水,然後再來喊工作多到做不完,沒時間陪家人。
今天我稍稍寫了個程式讓事情加速,從原本每週一天多的時間消耗,變成每週只需三分鐘以下(還可以更快,列出目錄下的檔案全做,而不是一個一個的輸入),並且附上了原始碼,3年之後有可能進步嗎?
功能就是統計審查狀態,做出圖表,並且按照廠商排序,我是輸出網頁,圖表是HTML5+Javascript做出來的,圓餅圖是套網路現成的Source搞出來的,所以也沒做多少東西,頂多就類似一個頁面的CGI。
人工整理則需要先計算總數,分別計算各審查狀態的數量,在Excel上做出表格,然後是圖表,一份報告當然是還好,按照BOM表的數量每一個成品料都要玩一次呢?
然後是資料筆數從十幾個,進步到數十個,到現在的數百個零件呢?
所以一開始先是燒掉幾小時,再來是一早,然後一天,現在一天半,以後是兩天、三天、四天、還是五天?
其它事情什麼時候做?
左峰上的和尚左戒,閒暇時開始鑿井,右峰和尚右戒笑左戒吃飽太閒在鑿井,不過就是一小段路,怎麼跟鑿井相比呢?
三年後左戒在廟旁取水,省下的時間參佛、整理寺院,右戒還是要下山取水,忙碌的喊忙,所以是左戒笨嗎?
小A非常努力的把從資料庫拿下來的檔案,經過數道工法做成了一份圖表精美的Excel檔,每週燒掉一天多的時間來完成這份報告,他常常忙得不可開交,非常忙碌、勤勞的工作。
3年前小A也遇過類似的事情,就是ioMeter的報告,每次遇到要提測試報告的時候,就非常忙碌的把文件中的欄位搬來搬去、剪剪貼貼的搞成一份報告,當時我就幫忙寫一個自動報告產生程式並且附上原始碼,提醒要改自己改,有問題可以問,我希望小A能夠學會自己寫這類的報告程式,3年過去了,報告不一樣了,但症狀還是一樣,都是為了省鑿井的時間,卻願意花一輩子時間去山下提水,然後再來喊工作多到做不完,沒時間陪家人。
今天我稍稍寫了個程式讓事情加速,從原本每週一天多的時間消耗,變成每週只需三分鐘以下(還可以更快,列出目錄下的檔案全做,而不是一個一個的輸入),並且附上了原始碼,3年之後有可能進步嗎?
功能就是統計審查狀態,做出圖表,並且按照廠商排序,我是輸出網頁,圖表是HTML5+Javascript做出來的,圓餅圖是套網路現成的Source搞出來的,所以也沒做多少東西,頂多就類似一個頁面的CGI。
人工整理則需要先計算總數,分別計算各審查狀態的數量,在Excel上做出表格,然後是圖表,一份報告當然是還好,按照BOM表的數量每一個成品料都要玩一次呢?
然後是資料筆數從十幾個,進步到數十個,到現在的數百個零件呢?
所以一開始先是燒掉幾小時,再來是一早,然後一天,現在一天半,以後是兩天、三天、四天、還是五天?
其它事情什麼時候做?
2011年8月14日 星期日
資料收集者的福音~網頁表格殺手,又是Perl發功(股票)
你是不是對一些公司基本面感到興趣?
你是不是很懶的去抄那一堆資料?
你還在用手算?
各位認識小弟的股友們有福了,信我,沒辦法給你上天堂,也沒辦法給永生,但是,讓你多空出點時間陪家人這小事還是做得到,底下的是Perl寫的webTableKiller,這網頁表格殺手主要功能就是把網頁上面的資料抓下來,讓後面串接的Script可以快速的取得網頁的資料,我是拿Yahoo的股市當祭品做出來。
Perl的特色是垮平台都可以使用,也可以找Perl2Exe轉成Windows執行檔(不建議)。
$./webTableKiller <網址> <取出目標欄位的.CSV檔案>
你是不是很懶的去抄那一堆資料?
你還在用手算?
各位認識小弟的股友們有福了,信我,沒辦法給你上天堂,也沒辦法給永生,但是,讓你多空出點時間陪家人這小事還是做得到,底下的是Perl寫的webTableKiller,這網頁表格殺手主要功能就是把網頁上面的資料抓下來,讓後面串接的Script可以快速的取得網頁的資料,我是拿Yahoo的股市當祭品做出來。
Perl的特色是垮平台都可以使用,也可以找Perl2Exe轉成Windows執行檔(不建議)。
$./webTableKiller <網址> <取出目標欄位的.CSV檔案>
#!/usr/bin/perl use LWP; use HTML::TreeBuilder; use Text::Iconv; my $url="http://tw.stock.yahoo.com/d/s/company_3115.html"; if(defined $ARGV[0]){ if($ARGV[0] =~ /^http/){ $url=$ARGV[0]; } } my $showAll=0; my @getList; my $getLists; if(defined $ARGV[1]){ if($ARGV[1] =~ /\.csv$/i){ if(open(FH, "<$ARGV[1]")){ @getList=; close FH; } } } foreach (@getList){ $getLists.=$_; } my $ua=LWP::UserAgent->new; my $res=$ua->get($url); die "Can't get $url ", $res->status_line unless $res->is_success; my $html=$res->content; $converter = Text::Iconv->new("big5", "utf8"); $html = $converter->convert("$html"); #print "$html\r\n"; my $root=HTML::TreeBuilder->new_from_content($html); my $layer=0; &parserLookDown($root,$layer); sub isOnList{ my $currentPos=shift; my $count=0; foreach(@getList){ if($_ =~ /$currentPos/){ #print "$currentPos/\t$_\n"; $count++; } } return $count; } sub parserLookDown{ my $root=shift; my $layer=shift; $layer++; my @tables=$root->look_down(_tag=>'table'); for my $i(0 .. @tables-1){ my $tmp=$tables[$i]->as_trimmed_text; my @trs=$tables[$i]->look_down(_tag=>'tr'); for my $j(0 .. @trs-1){ my @tds=$trs[$j]->look_down(_tag=>'td'); for my $k(0 .. @tds-1){ if($tds[$k]->as_HTML =~ /table/){ &parserLookDown($tds[$k],$layer); } my $tmp=$tds[$k]->as_trimmed_text; $_=~s/\ //g; if(@getList > 0){ my $currentPos="$layer,$i,$j,$k"; if(&isOnList($currentPos) > 0){ print "$tmp,"; } }else{ print "($layer,$i,$j,$k)$tmp,"; } } if(@getList <= 0){ print "\r\n"; } } } } $root->delete;
2011年8月11日 星期四
軔體版本管理的逆襲
今天被問到我軔體版本發行管理的問題,這問題存在許久,之前因為手邊工作滿檔,就不理會它,過了這麼久還是發作,所以今天花一天寫一個網頁程式來管理軔體的版本。
目標是讓使用者在檔案伺服器上建立資料夾、貼上檔案,網頁就跟的更新,不用寫程式,寫網頁,一次搞定,懶惰的使用案例。
1. 為了以後維護方便,所以乾脆在Linux 的 file server上加上Web Server,但,基於辦公室中其他使用者在用Windows,只好開samba讓那些人存取,而中心思想則是利用路徑、檔名去做出一個相對應的表格頁面,好讓其他人可以查表、看照片(光看料號誰看的出來阿~),搞清楚是哪個硬體上的軔體,順便看一下目前到底有多少版本,發行了哪些版本。
2. 以XML為介面,伺服器上的CGI程式不管顯示的部份,也就是說CGI只會吐出XML的資料而已,可保留以後擴充及修改的彈性,畫面組成靠客端瀏覽器運作,可以節省主機的運算時間,好讓客戶端給我分攤一些運算,另外一方面,主要是我之前玩一堆Javascript跟JQuery,所以這方法比較熟練一點~XD,而且這方法目前還是主流。
3.明天就要寫SOP文件跟把我寫的一些軔體檔案放上去,算收工了吧 ~ XD
PS. 用PERL+Javascript+HTML真的快的跟鬼一樣,一天就收工了~~XD
目標是讓使用者在檔案伺服器上建立資料夾、貼上檔案,網頁就跟的更新,不用寫程式,寫網頁,一次搞定,懶惰的使用案例。
1. 為了以後維護方便,所以乾脆在Linux 的 file server上加上Web Server,但,基於辦公室中其他使用者在用Windows,只好開samba讓那些人存取,而中心思想則是利用路徑、檔名去做出一個相對應的表格頁面,好讓其他人可以查表、看照片(光看料號誰看的出來阿~),搞清楚是哪個硬體上的軔體,順便看一下目前到底有多少版本,發行了哪些版本。
2. 以XML為介面,伺服器上的CGI程式不管顯示的部份,也就是說CGI只會吐出XML的資料而已,可保留以後擴充及修改的彈性,畫面組成靠客端瀏覽器運作,可以節省主機的運算時間,好讓客戶端給我分攤一些運算,另外一方面,主要是我之前玩一堆Javascript跟JQuery,所以這方法比較熟練一點~XD,而且這方法目前還是主流。
3.明天就要寫SOP文件跟把我寫的一些軔體檔案放上去,算收工了吧 ~ XD
PS. 用PERL+Javascript+HTML真的快的跟鬼一樣,一天就收工了~~XD
2011年8月3日 星期三
Perl LWP 股票資料收集
這是一支跑去Yahoo股市查列出股票的股利政策的程式,自動計算、分析是最後的結果。
這個程式是先跑去抓某個網頁的股票代碼列表(有點舊)然後再去呼叫上面那一支程式把歷史股利政策全抓下來。
# 抓取網頁中的 link use LWP; use HTML::TreeBuilder; use Text::Iconv; # 取得命令列中的網頁位址,放入 $url 中 #my $url=shift || die "您沒有輸入 url 網址!\n"; my $stock=2357; if(defined $ARGV[0]){ $stock=$ARGV[0]; } my $url="http://tw.stock.yahoo.com/d/s/dividend_".$stock.".html"; my $ua=LWP::UserAgent->new; my $res=$ua->get($url); die "Can't get $url ", $res->status_line unless $res->is_success; my $html=$res->content; $converter = Text::Iconv->new("big5", "utf8"); $html = $converter->convert("$html"); #print "$html\r\n"; my $root=HTML::TreeBuilder->new_from_content($html); my @names=$root->look_down(_tag=>'TITLE'); foreach my $line(@names){ my $name=$line->as_trimmed_text; my @items=split(/\-/,$name); print $items[0],",",$items[1],",\r\n"; } my @links=$root->look_down( _tag=>'table', ); for($j=0; $j<=$#links; $j++){ if($j == 9){ #print "\t$j=", $links[$j]->attr('href'),' ', $links[$j]->as_trimmed_text, "\r\n"; my @items=$links[$j]->look_down(_tag=>'tr'); #print "Item $j\r\n"; foreach my $item(@items){ my @datas=$item->look_down(_tag=>'td'); foreach my $data(@datas){ my $tmp=$data->as_trimmed_text; $tmp =~ s/\ //ge; $tmp =~ s/\ //ge; print $tmp,","; } print "\r\n"; #print "$j\t", $item->as_trimmed_text,"\r\n"; } #print "$j=", $links[$j]->as_trimmed_text, "\r\n"; } } $root->delete;
這個程式是先跑去抓某個網頁的股票代碼列表(有點舊)然後再去呼叫上面那一支程式把歷史股利政策全抓下來。
# 抓取網頁中的 link use LWP; use HTML::TreeBuilder; use Text::Iconv; # 取得命令列中的網頁位址,放入 $url 中 #my $url=shift || die "您沒有輸入 url 網址!\n"; my $url="http://www.tej.com.tw/webtej/doc/uid.htm"; my $ua=LWP::UserAgent->new; my $res=$ua->get($url); die "Can't get $url ", $res->status_line unless $res->is_success; my $html=$res->content; $converter = Text::Iconv->new("big5", "utf8"); $html = $converter->convert("$html"); #print "$html\r\n"; my $root=HTML::TreeBuilder->new_from_content($html); my @links=$root->look_down( _tag=>'td' ); #my @links=$root->query('tr'); for($j=0; $j<=$#links; $j++){ my $tmp=$links[$j]->as_trimmed_text; #my $tmp=$links[$j]->attr('str'); $tmp=~s/\D//ge; if(($tmp < 9999)&&($tmp ne "")){ #print $tmp, "\r\n"; my $var=`perl yahooStock01.pl $tmp`; print "$var\n"; } } $root->delete;
2011年8月2日 星期二
perl讀取Win32剪貼簿
這是剪貼簿讀取的範例程式:
#!/usr/bin/perl use Win32::Clipboard; $clip = Win32::Clipboard->new(); $val = $clip->Get(); print "Clipboard: [ $val ]\n";
訂閱:
文章 (Atom)