星期五, 10月 31, 2008

程式問題開始收費

鳥毅不過是個半吊子兩光肉腳網管,最近有許多的程式問題進來,因為在下程度很差,所以每個問題都要很久才能做出來。尤其是用ZedGraph畫統計圖,我也不過是玩過一次,怎麼好像變成ZedGraph開發者了?


最近狠下心把公司的桌機也裝Ubuntu,所以手邊沒有.Net的開發環境了,當然之後要維護舊系統還是得裝。

為了維護生活品質,即日起學楚狂人對於程式問題開始收費,一題2000元新台幣起,視難度而定。

如果不爽可以找高手問呀!網路上像大河馬、Qing、GSLin、HLB、Zonble、獨孤木、XDite...隨便找都幾十個高手,而且都是以Coding為業,保證技術一流的啦。

星期三, 10月 29, 2008

pfSense架設頻寬管理器的問題

最近除了試用舊硬公司的頻寬管理器外,也一直在校調pfSense的效能。

事實上,pfSense 1.2版的功能仍然不太夠,建議安裝1.2.1 Prerelease Snapshots版本,不但有QoS的Wizard(Traffic Shaper Wizard),還有更多的套件(Packages)可安裝。鳥毅就裝了bandwidthd、darkstat、snort等。

據說以前還有人寫HAVP的套件,不過後來沒維護了。HAVP的架設可以參考免費的企業防毒牆,可以在pfSense上自行安裝HAVP,但是transparent proxy那行指令就不能寫在pf.conf,而要自己寫成pfSense的rule,因為難度太高,我就沒去試,歡迎有成功的朋友告訴小弟一聲。

pfSense 1.3版主要增加了多IP的設定,可以在一張網卡設定不同subnet的IP,雖然同樣透過virtual ip,但介面上可以選擇。另一個特點是Dashboard的畫面對各種流量一目了然,頗有專業Firewall的樣子。可惜1.3版還有相當多問題,有些功能根本無法使用,所以不建議安裝。

鳥毅沒有在VPN採用pfSense最主要的原因,就是我不知道怎樣把企業VPN兩端設成transparent,又能使用NAT達成QoS,這點舊硬公司的代理商工程師確實很熟,稍微想一下就設定出來。(敝公司尚未正式採購,若有哪位仁兄能提供pfSense的設定方法,小弟自掏腰包請吃簡餐)

星期二, 10月 28, 2008

關於頻寬管理器

國內的頻寬管理器大都是某一間兩個中文字的公司所代工(他們沒付我廣告費,姑且稱之為"舊硬"吧),另一間廣為網咖所採用的公司請恕小弟沒測試到。

舊硬公司早期是純代工,所以友X公司相同型號的頻寬管理器或UTM,都是舊硬公司OEM。現在掛舊硬公司自己品牌的頻寬管理器,大約只要友X的2/3不到價格,所以敝公司當然直接買舊硬的產品。

順便提一下Fortigate,雖然號稱有QoS,但仔細看手冊才發現,許多功能都必須進入console操作,又是專屬OS,實在不好用,不建議拿來當做頻寬管理器。

舊硬公司的QoS,雖然說也是靠iptables,但是功能相當齊全,還有許多報表,鳥毅自己肯定做不來。其實pf的功能理論上比iptables先進,但這幾年iptables一直進步,功能上和pf不分高下(參考:pf vs iptables)。iptables的指令相當地精簡,對於用慣ipfw/ipf/pf的鳥毅而言是天書,所以架Firewall仍舊以pf為第一考量。

這次使用的地點在於VPN的兩端,因為企業VPN FTTB非常貴,2Mb每個月9000元,若升到4Mb每個月15000元,十分划不來。導入QoS後,只會讓使用者降速而不會斷線,同時整合原有的pfSense功能,只需要一台機器。

工程師的設定方法與鳥毅想像中不同,企業主站是wan1,wan2是原有adsl上網,分公司則是dmz,其中dmz設定為transparent,再把原有gateway設成wan1的IP。如此一來,user的使用習慣不變,但是所有的進出頻寬都受到這台機器管控。(不知道transparent用iptables是怎麼設定的?)

差點忘了說價錢,這台PXHome賣69000,PXHome商店的筆X王賣63000,還不到一年的頻寬費,划得來。

星期一, 10月 27, 2008

將過大的mailbox移到收件匣

最近由於某些新進同仁都使用WebMail,但又不砍信,造成Mail Server繁忙,只好請他們自行砍信/移信。有些皮比較癢公務繁忙的同仁沒空處理,只好抽空寫支小程式處理。

由於Openwebmail的限制,不能用maildir,只能維持使用mailbox,這是系統loading高的主因。由於許多原因以及沒有功能更齊全的webmail前提下,只能暫時如此處理。本來要用比較熟悉的Java寫,但是搜尋之下並沒有功能完整的library,而Python內建就支援mailbox處理,在缺乏其他支援/資源的情況下也只能硬著頭皮寫。因為我比較懶,裏頭有用到一個date parser,使用前請先安裝。

這裏的環境針對FreeBSD + Postfix+Openwebmail,sendmail/qmail應該也適用,我在Ubuntu開發,所以在Linux"應該"也能正常執行。

完整程式如下:
#!/usr/bin/env python
# coding: utf-8

import datetime
import mailbox
import email.Errors
import os
from stat import ST_SIZE
#由於python沒有內建的Date Parser,所以找了一個dateutil parser, http://labix.org/python-dateutil
#FreeBSD ports裏在 /usr/ports/devel/py-dateutil
from dateutil.parser import parse

def mailbox_apart(inputfile, outputfile, splitdate):
inbox = mailbox.mbox(inputfile);
mboxNew = mailbox.mbox(outputfile);

for key, message in inbox.iteritems():
timex = parse(message['date']);
timex = datetime.date(timex.year, timex.month, timex.day);
if cmp(timex, splitdate) < 0:
mboxNew.lock();
mboxNew.add(message);
mboxNew.flush();
mboxNew.unlock();
# Remove original message
inbox.lock();
inbox.discard(key);
inbox.flush();
inbox.unlock();
inbox.close();
mboxNew.close();
return;

def read_passwd_and_do_it(passwordfile, daysago):
f=open(passwordfile, 'r');
for line in f:
line=line.lstrip();
if not line.startswith('#'):
x=line.split(':');
userid=x[0];
homedir = x[5];
if homedir.startswith('/home'):
inxfile = '/var/mail/'+userid;
outxfile = homedir +'/mail/saved-messages'
try:
size = os.stat(inxfile)[ST_SIZE];
if size > critial:
mailbox_apart(inxfile, outxfile, daysago);
except (IOError, OSError), e:
pass;
except mailbox.ExternalClashError, e:
pass;
except Exception, e:
print e;
f.close();
return;

#主程式
#超過多大的檔案才處理,此處是500M
critial = 500000000;
#超過幾天的mail才移
removedays = 30;
#帳號檔
passwdfile = '/etc/passwd';
today = datetime.date.today();
theDate = datetime.date(today.year, today.month, today.day);
aMonthAgo = theDate - datetime.timedelta(days=removedays);
read_passwd_and_do_it(passwdfile, aMonthAgo);

本程式提供給有此需求的朋友,版權為GPL

快速開機的電腦

剛看到關於 快速開機電腦 的新聞,想到家中那台MOD開機實在有夠久。

雖然說MOD有搖控器可以關掉,但實際上並不是真正關掉電源,變壓器和機體本身都持續發熱,在能源不足的21世紀,並不是好做法;因此我都直接拔插頭。雖然MOD後頭有個電源開關,但若只關這個開關,變壓器還是很熱。

現在的Mac/Vista也都有"假的"快速開機,利用休眠狀態裝做是快速開機。Vista 30秒開機?新電腦開機3分鐘還差不多咧~

希望18個月後,真的能有30秒開機完成,可以快速反應的電腦。

星期五, 10月 24, 2008

Moonlight Firefox Plugin

因為同事傳來的連結是Silverlight,用Ubuntu打不開,於是找到Moonlight Downloads

雖然網址是aspx,不過確是用apache架站,果然不愧是mono呀...

CrossOver Chromium -- 在其他平台跑Chrome開放版

張阿駕那看到的,CrossOver推出免費的CrossOver Chromium,讓Intel平台的OS X和Linux可以使用Chromium(OpenSource版的Chrome

在Ubuntu上安裝最簡單,下載後點兩下就裝好了,但保證中文有問題。因為對應的字型沒安裝,只要把Windows裏的mingliu.ttc和kaiu.ttf複製到 /opt/cxchromium/share/wine/fonts ,就可以看到中文。不過最好還是到 "選項"->"偏好設定"->"變更字型及語言",把字型設定為"新細明體"或"細明體"比較保險。

不知為何,跑起來不覺得很快,在VirtualBox裏跑個XP,再用seamless模式跑可能還比較快。

星期四, 10月 23, 2008

沒有同工同酬這種事

由於技術不再進步,開始往職場心得開始寫,以前的奇異果系列也將歸於此類。

前幾天看到私立學校老師抗議退休金不公平 ,心中的OS就是 別鬧了好嗎?

電視新聞的報導比較清楚,這群老師要求同工同酬,表示學校有公私立之分,教育沒有公私立之分。拜託,能考進公立學校,不是考試比較強就是背景比較硬,你的立足點相同嗎?

像鳥毅這種在私人企業上班的人,能要求和公務員相同待遇嗎?比當老師累的行業比比皆是,這世界沒有同工同酬這種事;腦袋要清醒點,想多賺點錢就去創業吧!

星期五, 10月 17, 2008

我看Chrome

最近jedi發表了一篇再看 Google Chrome,我有些不同的看法。

基本上他寫的都沒錯,我有一台四年前P4M 1.8Ghz的筆記型電腦,同樣裝768MB 的記憶體,跑起Chrome速度也不快。但是用Core 2 Due + 2GB RAM的電腦呢?快得像飛一樣!

所以我和jedi或xdite等人不同,我公司的桌機早在Chrome推出第一天就改設Chrome為預設瀏覽器,沒有ADBlock也不要緊,因為速度快得可以忽略廣告造成的延遲。

事實上,以四年多前時脈低於2.0Ghz的機種而言,用Firefox 3也不快,只有Opera很快!但小弟功力不足,Opera的畫面怎麼調都看不順眼,所以只是偶爾拿來測試。Chrome預設字型改為新細明體後,網頁看起來和IE幾乎一樣,當然MSDN除外:P

我個人的感覺是:Google 抓對方向了!Chrome的行為大部份學自Safari/Firefox,不需要複雜的設定讓一般大眾快速上手,對於希望成為市場霸主的公司,這才是正確的目標呀!

星期四, 10月 16, 2008

Fortigate手冊錯誤

拿到申請Hinet資安艦隊2.0的贈品 Fortigate 60B,要設定多組IP,出現錯誤訊息:IP addresses cannot be part of the same subnet. 意思是說多組IP不能在同一個網段。

找了最新版3.0 MR7的管理手冊寫必須用CLI command啟用同網段多IP功能:
#config system global
(global)# set allow-interface-subnet-overlap enable
(global)#end
但是卻一直出現
Command fail. Return code -61

找到3.0 MR7的CLI手冊才知道,這個指令已經廢了,改成:
#config system settings
(settings)#set allow-subnet-overlap enable
(settings)#end

Fortinet得多加油,官方管理手冊這樣就遜掉了呀...

星期二, 10月 14, 2008

對狹長的景色不滿

最近因為測試裝了狹長的景色,鳥毅實在很懷念插屁作業系統。若不是最近太忙,又需要64bit OS測試VM,早就把這個電腦速度殺手請出去。

昨天被流力博士找去,問我為什麼他的VAIO吃了1.6GB,把所有的程式都關掉,記憶體居然不會釋放!重新開機後,終於回到850MB。這....印象中作業系統只是程式的載體呀?忽然懷念起DOS,真怪XD

近況報告

最近超沒力寫Blog,上星期很忙,沒想到這兩天更忙!目前已如鳥毅預料,三個月完全沒寫code了,以後就是專職的網管:D

朋友建議我把pfSense進階設定另外架個Blog,名字叫「免費企業多功能UTM/防火牆/頻寬控制器」。但是最近實在沒空仔細研究pfSense的細部功能(pfSense 1.3幾乎有鳥毅要的所有功能,可惜還有不少Bug,真要用得跳下去修code)。今天還找了一間公司借測新軟的頻寬管理器。不是替新軟廣告,只是查了資料發現新軟是自行研發Embedded Linux,而且不少廠牌的頻寬管理器都找新軟OEM,借測心得改天再寫。

下午不知是哪位同仁向CEO放炮,害美女經理被要求survey視訊會議可行性,找廠商的重責大任自然又落到鳥毅的肩上。很難得部門秘書看不下去(電動打到膩了?還是股票漲心情好?),跳出來幫鳥毅約了三家廠商(我自己也約了一家),所以明天行程全滿Orz

希望下次有空寫pfSense QoS測試報告時能把申請HiNet資安艦隊2.0送的FortiGate 60B測試結果順便寫出來。(為什麼這次沒有其他贈品可選呢?殘念)

星期三, 10月 08, 2008

敝小站的PageRank升到3

布丁說得沒錯,放久了PageRank就會愈來愈高,最近都沒寫什麼營養的東西,居然也升到3。現在這個不景氣的時刻,Pagerank再高也沒用,不如有份在股溝的工作比較實在吧:P

Mono 2.0 has been Released

剛看到 http://freesf.tw/modules/news/article.php?storyid=3606 ,果然有微軟在幫忙進展很快呀!
Mono 2.0 Release Notes裏提到:Microsoft Compatible APIs
  • ADO.NET 2.0 API for accessing databases.
  • ASP.NET 2.0 API for developing Web-based applications.
  • Windows.Forms 2.0 API to create desktop applications.
  • System.XML 2.0: An API to manipulate XML documents.
  • System.Core: Provides support for the Language Integrated Query (LINQ).
  • System.Xml.Linq: Provides a LINQ provider for XML.
  • System.Drawing 2.0 API: A portable graphics rendering API.
專屬的部份就不管了:P

可以直接用System.Windows.Forms 執行程式,這對Java UI確實會造成很大的殺傷力,畢竟Java Swing設計得太複雜,雖然有NetBeans的加持仍然不是初學者能快速上手的環境。

另外對於asp.net 2.0與ado.net 2.0的完成,C# 3.0與 VB 8的compiler都是具有代表性的里程碑。不知道是否能把Asp.net 2.0搬到FreeBSD/Linux上呢?看來今天有不少東西可以玩了呀!

星期二, 10月 07, 2008

年紀漸大 找工作不易

看到石頭成老大 生活記事::我因為CMMI的事,而被公司解雇了,頓時想到早上看到超過35歲找工作難銀行開始裁員

雖然說法令規定雇主不得對求職者或員工有年齡歧視,事實上正常的老板不可能想找成本比較高的員工,除非是找替死鬼。看來石頭成老大也是有話直說的好漢,若要比黑,大概沒人比鳥毅黑,想到這鳥毅不禁替自己的飯碗捏把冷汗;最近才想希望明年能存夠錢買台車代步,又遇到經濟不景氣...

昨天某視新聞有提到,中高齡轉業要放低身段,待遇不要想比照從前。就算鳥毅願意和剛畢業一樣領3萬多,可能還是沒人想用。希望鳥毅被裁員時,不用像石頭成老大大家搶著要,只要有人願意用就好呀!

星期一, 10月 06, 2008

你的程式N-Tier了嗎?

鳥毅退伍後,找的第一間公司是負責銀行端末系統的公司,有點類似獨孤木以前做的,但規模比較小。當時年少無知,以為企業內部的程式都應該長得像那樣,分層控制流程,也就是N-Tier設計。

由於有位朋友待在國內某間頗具規模的入口網站,當時向鳥毅招手,半年後鳥毅就投身到portal混了年餘,與N-Tier說拜拜,致力於高流量下還能動的web開發(因為寫得爛,能動就不錯了)。此時最大的好處,就是身邊的同事都是高手(我最爛),而且熟FreeBSD/Linux的人很多,不像現在有問題都找不到人問。

由於coding程度太差,又不耐操,後來受不了跑到目前的公司當個小網管。這間公司都用微軟的Solution,所以當然傾向於用Visual Studio拖拉。微軟的IDE特點就是快,不但跑起來快,開發時程還真是短;用VS2005/2008配合SQLServer,拉一拉一個MIS程式就做出來,這是以前沒接觸過FoxPro/PowerBuilder的鳥毅未知的世界。

此時問題就來了:一間100人以上的公司,不可能只有一個MIS寫程式。每個人寫程式都直接存取Database對嗎?其實這間傳產公司的IT主管也不是IT出身,在鳥毅來之前連套Database都沒有,後來才買套SQLServer 2000供MIS使用。到美麗的MIS小姐加入本公司後,她和原先MIS先生的風格迥異,兩個人的code也沒有共用(原因別問我),而且都是直接存取Database,造成兩個人的程式功能大幅重複,而且時常為了資料交換而有爭執。Client/Server更大的問題在,不過這不在討論之列。

要問我是誰的錯嗎?嗯....是微軟的錯:P VisualStudio一開始的設計就是Quick & Dirty,到現在Enterprise Library的架構都一直在變,也沒有類似JavaEE的Solution(應該沒有吧...我不熟:P,只有找到);所以造成MIS必須自己設計N-Tier的架構。(這一段是寫給MIS看的,微軟別怪我

微軟的N-Tier似乎和LINQ畫上等號(),雖然在下不怎麼認同,但至少是個好的開始。現在又多了ASP.Net MVC,不知未來如何?

總之,若你是公司的IT主管,請注意元件的共用與源碼的共用,N-Tier是建構在Business Logic上而不是資料流上,不要用Database去思考程式。

唉,我這個小小網管似乎想太多了,優秀的年輕同事聽到交大把email外包給gmail就想到長官一定會擔心被人說太閒,不懂長官的心,難怪我會黑呀!

星期四, 10月 02, 2008

FreeBSD 6.X升級到7.0的錯誤訊息

有一台電腦從FreeBSD 6.X升級到7.0,結果每次登入登出都會出現:
login: in openpam_dispatch(): pam_nologin.so: no pam_sm_authenticate()
查了以後發現是/etc/pam.d裏的檔案不會因為mergemaster或make installworld更新。
解決方法:
#cd /usr/src/etc/pam.d
#make install