星期四, 12月 29, 2011

unbound 在多個 IP address 的環境下需要另外設定確保 DNS reply 是正確的

unbound 當 DNS resolver 算是還不錯的選擇,不需要設太多複雜的功能。不過這兩天又踩到雷,記錄下來以免之後又爆炸...

遇到的問題是,在 unbounad server 上同一個網路卡上設兩個 IP (這邊舉例為 10.1.1.1 與 10.2.1.1 好了),然後 interface 的部份設 0.0.0.0,不能保證發給 10.2.1.1 的 DNS 查詢會使用 10.2.1.1 的 IP 回答。

unbound.conf.sample 內有提到:

# enable this feature to copy the source address of queries to reply.
# Socket options are not supported on all platforms. experimental.
# interface-automatic: no

實驗性質?XD 還是得開啊...

星期三, 12月 28, 2011

FreeBSD awk 不夠亂...

FreeBSDawk 產生出來每次都是一樣的數字,結果中招...

可以執行下面這段 code測試:

repeat 10 awk 'BEGIN{srand(); print rand();}'
目前沒想到好方法解決,用 openssl rand 產生亂數似乎是個方法...

Cisco ASA 的 site-to-site VPN 的 acl 必須對稱

Cisco ASA 的 site-to-site VPN 必須設定對稱的 access-list (acl),不然就會出現「[Technical] - “Flow is denied by configured rule” message with ASA packet-tracer and traffic being dropped at the VPN phase.」這篇提到的問題。

拜這個問題所賜,ASA 上的 packet-tracercapture 這兩個指令用的比較熟了 \_/

星期一, 12月 26, 2011

FreeBSD 的 /etc/rc.conf...

之前我都是把 ports 安裝軟體的啟動設定 (也就是 XXX_enable="YES"XXX_flags="..." 這些設定) 用 pkg-install 與 pkg-deinstall 去 /etc/rc.conf.local 處理裡面的設定 (就是 ports-mgmt/portconf 對於 /etc/make.conf 的方法)。

星期天下午無意間看 /etc/rc.subr 時看到 /etc/rc.conf.d/"{$_name}" 的設計,看起來之後可以放到 /etc/rc.conf.d/ 下面,直接用 pkg-plist 處理掉就好,整個架構會再簡化一些...

7.4-RELEASE 與 8.2-RELEASE 的 /etc/rc.subr 都有包括這段 code,不確定其他的版本如何...

星期三, 7月 27, 2011

把開發環境升級到 Cassandra 0.8.2...

然後就中獎了...

桌機有 8GB RAM,結果 Cassandra 很開心的吃了 4GB RAM,再加上本來的視窗環境、Google Chrome 之類的東西,就吃掉 80% 左右的記憶體... 接下來跑 VirtualBox 把 XP (2GB RAM) 跑起來,就瞬間 swap 到爆炸 XD

問了一下同事 Gasol,發現要改 /etc/cassandra/cassandra-env.sh 這個檔案,把本來自動計算的部份改成手動設定:
#MAX_HEAP_SIZE="4G"
#HEAP_NEWSIZE="800M"
MAX_HEAP_SIZE="1G"
HEAP_NEWSIZE="200M"
這樣就可以了...

星期一, 6月 06, 2011

Mixpanel 的 track_links

最近開始試著用 Mixpanel,結果中了兩次雷 XD

在「Javascript Integration」裡面有追蹤 link 的功能 (mpmetrics.track_links),以目前提供的功能來說,一定要指定 a 元素讓他處理,不然會有問題...

有時候沒注意到,直接對整個 div 下 mpmetrics.track_links,過沒多久就有人抱怨 Google Chrome 沒辦法點裡面的 link... :o

星期三, 5月 25, 2011

AWS Route53 與 ELB 功能的改進

剛剛看到 AWS 丟出來 Route 53ELB 的新功能,每個都還蠻重要的...

首先是 Route 53 與 ELB 整合,於是 root domain 可以直接用 Route 53 指到 ELB 上面,不用再自己惡搞了。

然後是在「ELB 的 IP 信任問題...」提到的 IP 信任問題,這次提出的 ELB security group 解決了。

最後是 IPv6 的部份,ELB 先支援 IPv6 only 或是 Dual Stack (當然原來的 IPv4 only 還是存在),於是可以提供 IPv6 服務... 不過 X-Forwarded-For 不知道會長什麼樣子。

星期二, 5月 24, 2011

無名 API 中的 Base64 上傳功能...

前幾天去無名 API 說明會,技術面中其中一個比較「有趣」的功能是「Base64 上傳」,在「無名小站 API 文件 - Version 1.2」這邊可以看到 API 文件關於 Base64 的部份。

剛好今天寫 code 的時候回去重新讀 OAuth Core 1.0a,把之前一堆環節串起來,才知道為什麼無名會設計 Base64 上傳...

OAuth Core 1.0a 內提到有三種方式可以傳遞 OAuth Protocol Parameter,而且是有優先順序的,從最優先開始分別是:
  • In the HTTP Authorization header as defined in OAuth HTTP Authorization Scheme.
  • As the HTTP POST request body with a content-type of application/x-www-form-urlencoded.
  • Added to the URLs in the query part (as defined by [RFC3986] section 3).
其中第一種方式沒辦法傳 extra parameter,第二種方式在上傳檔案時會變成 multipart。於是,上傳時要用第三種方式,把所有 parameter (OAuth Protocol 與 Extra) 在簽完後塞到 query string 裡面,而檔案用 POST (multipart) 送出...

由於檔案上傳的部份沒簽到,所以可以在傳輸過程中間被換掉 (整個 request 看起來仍然合法),所以一般會加上一個 extra parameter 傳 POST 資料的 Secure Hash。

但之前 Manic 就跟我抱怨 PHP 上面的 OAuth Library 都遺忘了檔案上傳這塊,他得自己建立 POST body 丟出去 XDDD

於是我就瞬間理解為什麼要用 Base64 上傳了... XD

PS:這是一種可能性,也有可能是 Y! policy 覺得要用 OAuth 直接簽進去才安全,這只有當初定 API spec 的人才知道了...

星期六, 5月 21, 2011

ELB 的 IP 信任問題...

AWS ELBAmazon Web Services 提供的 Load balancing 方案,這個系統設計成 HA 架構,所以不需要自己煩惱要如何用 EC2 做到一樣的事情。而且也因為不需要自己架 server 起來弄,在機器成本上會比較便宜,不過他要照頻寬計費,會依照情況不同而有不同的費用...

他不是 DSR (Direct Server Return) 類型的架構,而是一般 proxy 的架構,也就是 server 會看到 ELB 的 IP,而非使用者的 IP address。這個問題 Amazon Web Services 提供的解法還蠻一般的:將使用者的 IP 加到 X-Forwarded-For header 裡面。到這邊都沒什麼問題...

但是,我沒辦法知道我沒辦法知道 ELB 會從哪些 IP address 連進來,所以我沒辦法設定 trusted IP list。另外一條路是找看看 EC2 的 security group 有沒有支援 ELB,但也找不到... 於是就變成無解的問題了... :o

不過在「ELB and Security Groups」這邊有些討論,像是:
What if all ELBs were members of a special security group, and you could then lock down your webservers by allowing only traffic from that security group? Note: this would be one giant security group that contains the ELBs from all AWS users, not just your security group. Would that suffice? or do you need the security group to be specific to only your loadbalancer?
然後 4 月的時候有 private beta 可以測,到 4 月 28 號的時候收起來,所以這陣子應該有機會看到了...

PIXNET 徵人:PHP 程式設計師多名

要徵:
  • PHP 程式設計師:
    • 工作內容:現有 PHP 程式維護及新功能開發。
    • 工作時間:一般為 10:00-19:00 (一~五)。
    • 就職日:可馬上就職,或 2011 年八月前到職即可。
    • 地點:台北市中山區 (捷運行天宮站旁)。
    • 需求:需熟 PHP 與資料庫操作。
    • 薪資:約 40k/month,其他技能面議另談。
請寄到 gslin at pixnet.tw 與 ieon at pixnet.tw。

星期四, 5月 19, 2011

Perl 5.14.0

有些太新的東西還是不適合拿到工作上用,都是在陪大家踩地雷...

Net::OAuth 中用到 RSA-SHA1 時會使用 Crypt::OpenSSL::RSA,但在 Perl 5.14.0 上面不會動,在「CPAN Testers Reports: Reports for Crypt-OpenSSL-RSA」這邊也還蠻明顯的,整個 Perl 5.14 都掛了。

其實解法很早就有人提出來,不過作者一直沒動:「Bug #65947 for Crypt-OpenSSL-RSA: Bleadperl v5.13.9-540-g0a0b6c9 breaks」。

先繼續龜在 5.12.3 好了...

星期日, 5月 15, 2011

EC2 與 Linode 的差異...

AWS EC2Linode 多了不少工具,在實際使用「雲端」的時候方便不少...

第一個是 EC2 的 firewall 設定包括了 group 的觀念,EC2 上可以設定「同一個 account 下的機器可以互通」這種 rule,在 Linode 上必須自己寫 script 去 Linode API 撈出 IP 表,並設定到 iptables 裡面。但由於是 JSON/XML 格式,沒有辦法很簡單用 shell script 直接搞定,變成要透過 PHP/Perl/Python,而這又造成了要多裝軟體的問題... 不僅如此,就結果而言,還必須用 cron 之類的工具定時更新表格,不然名單裡不會更新。另外 UDP 封包因為 source ip 可以偽造,還是沒辦法信任。

這點在 Gearmanmemcached 這類沒有認證功能的服務是必要功能。而對於 Web server 來說也很重要 (因為要考慮 X-Forwarded-For 的信任問題)

再來是 Web HA 的部份,EC2 支援 Elastic Load Balancing,所以不需要自己刻一堆有的沒的... 而在 Linode 上面只提供了最基本的 HA 功能 (可以設定「當掛掉的時候,允許哪些其他機器可以使用原來的 IP address」的權限) ,這表示必須自己跑 monitor script,在當掉的時候取得 IP address 並提供服務。

另外 EC2 提供 multi-zone,也是 Linode 目前沒提供的。在考慮 HA 架構還蠻重要的...

不過 Linode 比 EC2 最大的優勢就是比較便宜。同樣流量時 AWS 的頻寬費用就可以在 Linode 順便養機器了... 同樣價錢的問題還包括 EBS I/O 的費用,以及 Linode 可以使用比較多的 CPU resource...

另外一個非價錢的因素是 Linode 的 storage 是屬於 persistent (本來就是 VPS,只是多了 Cloud API),而 AWS EBS 用起來還是覺得不太方便,不過這跟 AWS 的 scale 設計有關,不太能算缺點...

星期二, 5月 10, 2011

PIXNET 徵人:System Administrator 一名

要徵:
  • System Administrator 一名
    • 工作內容:現有伺服器 (FreeBSDDebianUbuntu 系統) 維護,包括套件 (ports 與 apt/deb) 維護。另有部份網路設備 (Router、Switch、VPN) 維護。
    • 工作時間:10:00-19:00 (一~五),特殊狀況時 (公告深夜停機維護之類的) 另外補休。
    • 就職日:可馬上就職,或 2011 年八月前到職即可。
    • 地點:台北市中山區 (捷運行天宮站旁),機房於台北市內湖區。
    • 需求:需熟 Unix、Shell Script、Perl。
    • 薪資:約 40k/month,其他技能面議另談。
請寄到 gslin at pixnet.tw 與 ieon at pixnet.tw。

星期一, 5月 02, 2011

把 FreeBSD amd64 的 node.js 升級到 v0.4.7

因為 FreeBSD Tinderbox 編不過,目前 FreeBSD 上的 www/node 是設定 i386 only:
ONLY_FOR_ARCHS= i386
但現在公司幾乎沒有 FreeBSD i386 的機器了,都是跑 FreeBSD amd64...

另外因為有掛 #bsdchat (參考「#bsdchat 搬到 freenode 上,換 UTF-8 編碼」這篇),知道在 amd64 平台上是能夠使用的,目前只有在 FreeBSD Tinderbox 裡編不過... 所以我就去翻一下 bsd.port.mk 內的寫法,加入變數 __ARCH_OK,拐系統「現在是在支援的平台」:(這是透過 portmaster 升級)
sudo portmaster -BDtw -m __ARCH_OK=1 node-*
編完後輸入 node -v 可以看到 v0.4.7

星期五, 4月 29, 2011

用 memcached 實做 mutex lock

本來想在 CPAN 裡面找 Paxos,不過連個影子都沒有 XD

後來放棄 distributed lock,透過 memcachedadd 所提供的 atomic 特性提供很簡單的 mutex,方法在「A simple distributed lock with memcached」有提到,不過這篇文章的標題所提到的 distributed lock 並不太正確,只是普通的 lock...

先暫時這樣,繼續往下寫...

星期四, 4月 28, 2011

公司內部的 AWS 交流分享

下午公司內 jnlin 在介紹 AWS 給技術部門同事:



結果講到 S3 的時候發現某個 bucket name 居然沒被註冊掉 XDDD



Anyway...

星期二, 4月 26, 2011

AWS 台北的聚會...

本文轉自「AWS 台北的聚會…」。

AWS 亞太區的窗口要來台灣,本來是計畫找城邦集團內的人一起聊聊,後來跟 jnlin 提議,直接拉到社群層面辦,讓更多人跳下去用... (而且「前幾天的事情」大家應該會想要找人聊聊?XD)

飲料的部份由敝公司 PIXNET 準備,歡迎來交流。註冊的資訊在:「Amazon Web Service 台北開發者聚會」。

星期日, 4月 24, 2011

在 Coro 內應該用 join 而非 condvar,除非有特別的理由...

AnyEvent 提供的 condvar 當然是沒問題,不過用 Coro 的 join 會更適合。

用法像是這樣:
my @coros;
push @coros, async {
    # ...
};

foreach (@coros) {
    $_->join;
}
這樣可以避免 async 內發生錯誤時沒有更新 condvar 而造成停住...

星期四, 4月 21, 2011

用 Zerigo 的 GeoDNS 服務

之前是自己用 Net::DNS 寫一個,針對來詢問 domain 的 DNS server IP address 查詢地區,然後依照地區決定傳回值,但畢竟自己維護起來總是有個人事成本在,所以一直在看有沒有價錢合理的 solution 可以用。

退伍後在奇怪的地方看到 Zerigo 有推出 GeoDNS 的服務 (還蠻新的,今年二月才推出),價錢還算合理,以功能看起來應該沒問題,就丟給 jnlin 去測試,然後丟合約給法務單位審。剛剛 jnlin 丟出一篇文章稍微提一下:「Zerigo 的 GeoDNS 服務…」。

像是放靜態資料的 s.pixfs.net 就已經丟上去,以台灣查詢的話,傳回的結果會是台灣固網的 server:

;; ANSWER SECTION:
s.pixfs.net. 7009 IN CNAME s.pixfs.net.geo.pixdns.tw.
s.pixfs.net.geo.pixdns.tw. 86210 IN A 60.199.247.98


Linode 的機器查,會指到 CDNetworks 的 CDN 伺服器:

;; ANSWER SECTION:
s.pixfs.net.geo.pixdns.tw. 86400 IN CNAME s.pixfs.net.cdngc.net.
s.pixfs.net.cdngc.net. 30 IN A 66.114.54.30
s.pixfs.net.cdngc.net. 30 IN A 66.114.54.35


據 jnlin 講,美國還可以拆三個區域設定,如果是這樣的話還可以租一堆 Linode 機器來跑 cache server,有機會再來研究看看...

用 AnyEvent、Coro 與 Net::Amazon::S3,同步抓取 S3 的資料...

這幾天用 AWS S3 用的不亦樂乎,為了加快程式執行速度,發現需要不少「撇步」解決,寫下來讓之後接手的人比較容易上手...

首先是 Net::Amazon::S3,用法沒什麼問題,寫成某個 module 的 function:(這邊不太處理發生錯誤的情況,請自己 eval{} 下去處理...)
sub get {
    my $self = shift;

    # S3 的 filename
    my $key = shift;

    my $bucket = $self->s3->new(
        aws_access_key_id => 'xxx',
        aws_secret_access_key => 'xxx',
        retry => 1,
        timeout => 10, # 預設 timeout 30 秒
    );

    my $r = $bucket->get_key($key);

    return $r->{value};
}
接下來用 Coroasync{} 開平行處理:
use Coro;
sub {
    foreach my $key (@allKeys) {
        async {
            my $data = $self->get($key);

            # 這邊是對 $data 處理的 code
        };
    };
}
但你有時候會需要等所有的 async{} 都跑完再處理剩下的事情,這時候就要拿 AnyEvent 的 condvar:
use AnyEvent;
use Coro;
sub {
    my $cv = AnyEvent->condvar;
    $cv->begin;
    foreach my $key (@allKeys) {
        $cv->begin;
        async {
            my $data = $self->get($key);

            # 這邊是對 $data 處理的 code

            $cv->end;
        };
    };
    $cv->end;
    $cv->recv;
}
然後,你會發現打 AWS S3 打太兇時會傳回 500 給你,所以要用 Coro::Semaphore 限制連線數量,並且用 Perl 5.10 之後才有的語法來協助程式管理變數:
use 5.010;
use AnyEvent;
use Coro;
use Coro::Semaphore;
sub {
    state $sema;
    if (!defined $sema) {
        # 如果還沒建立的話開 semaphore,數量定為 32
        $sema = Coro::Semaphore->new(32);
    }

    my $cv = AnyEvent->condvar;
    $cv->begin;
    foreach my $key (@allKeys) {
        $cv->begin;
        async {
            $sema->down;
            my $data = $self->get($key);
            $sema->up;

            # 這邊是對 $data 處理的 code

            $cv->end;
        };
    };
    $cv->end;
    $cv->recv;
}
其實就是現有的東西套一套而已,不過真的還蠻好寫的... 包一包就能正常運作 :o

星期二, 4月 19, 2011

用 AWS SES 寄註冊認證信

因為 yahoo.com.tw 與 hinet.net 都有機制阻擋信件,於是就 jnlin 計畫把認證信丟到 SES 寄,包括 SPFDKIM 慢慢把 quota 養起來...

每千封 USD$0.1,也就是萬封就 USD$1,這還不計頻寬費用。以認證信來說還算 okay,如果要拿來寄 bulk mail 的話就太傷本了... (本來也不是拿來這樣搞的)

星期日, 4月 17, 2011

Perl 透過 Thrift 存取 Cassandra 0.7.x 的資料...

感謝「Accessing Cassandra 0.7.0 from Perl」這篇的作者,不只敘述要如何做,還提供了 sample code,實際操練一次後就知道要怎麼做了。

我另外在「Perl 上的 Cassandra 0.7.4...」有我抄過來練習的 source code,實際操練後發現 Thrift 產生出來的 API 很有 Java 的味道,如果要讓 Perl 社群用的習慣得再包一次...

不管怎樣總算是搞定了 zzzz

星期五, 4月 15, 2011

在 Ubuntu 下建立自己的 python environment

Perl 方法類似,只是要找一下要用哪些軟體做,以及做的細節... 這邊提到的方法沒辦法跨版本 (因為大多數的檔案還是 ln -s 到系統的 python)。

先裝 pip,系統會順便把 virtualenv 裝進去:
apt-get install pip
順便裝 python-dev,因為編某些程式時可能會用到:
apt-get install python-dev
接著就可以產生環境:
virtualenv --no-site-packages python2
然後自己把 .bashrc 內的路徑指過去:(.cshrc 也是類似的方法)
export PATH="/home/gslin/python2/bin:${PATH}"
接下來就可以在裡面用 pip 裝東西:
pip install pycassa
雖然沒辦法裝 2.7,但目前 Ubuntu 10.10 提供的 2.6.6 也還算堪用,方法暫時找到這樣...

ticket...

雖然說總是會有一兩張 ticket 是這樣,但當完兵回來看到十四個月的 feature ticket 沒有動還是決的很無奈... XD

星期四, 4月 14, 2011

把 eval() 包起來,放到 global scope

YUI Compressor 壓縮時發現在 local scope 裡面用 eval() 會造成 YUI Compressor 保留變數名稱。

找了一下資料找到解法 (然後很多投影片都一再的提出「eval is evil」XD),用另外一個 function 把 eval 包起來,丟到 global sope 裡面。像是這樣:
// It's global...
function myEval(c) { return eval(c); }

(function(){
    // Now it's local...
    myEval('...');
})();
當然,這個方法會讓 code 沒辦法看到 function scope 內的資料...

幾個 PSGI 實做...

測的幾個都是 miyagawa 寫的,依照 PSGI/Plack 網站上的順序說明。

Starman,是一套 prefork 的實做,所以適合用在沒辦法被 event-based library 控制的 blocking operation。以 miyagawa 測出來的數據來看,這也是三套裡面最快的。

Twiggy,是一套 AnyEvent 的實做,程式裡如果要用到 blocking i/o 就得想辦法讓 AnyEvent 管理。由於是 event-based,很省記憶體。

Corona,是一套 Coro 的實做,由於 Coro 也可以跟 AnyEvent 配合,這套彈性比 Twiggy 高,但效能就低了一些。

目前是用 Corona (因為 OAuth 那塊需要 Coro::LWP 幫助),要再觀察看看了...

星期三, 4月 13, 2011

用 OAuth 1.0 當作 API service 的 Protocol

最近都在惡搞...

如標題所說的,方法也很簡單,讓 apikey == accesskey (同理,apikey_secret == accesskey_secret),然後針對這些 API key 設定 IP limit,以及這些 API key 可以帶一個 sudo 參數,變身成其他使用者。

如此一來,既有 OAuth 1.0 的 library 可以直接拿來用,不用自己再設計一堆 protocol...

Ubuntu 上裝 s3cmd 1.0.0

Ubuntu 10.10 內建的是 0.9.9.91:「s3cmd (0.9.9.91-1ubuntu1)」,本來想找 ppa,後來發現官方有提供 Debian & Ubuntu repository:「Debian / Ubuntu repository for s3cmd」,直接到 repository 裡面抓 .deb 下來裝...

星期二, 4月 12, 2011

總算是拿到電腦了...

等了三個禮拜總算是來了... 附張灌 Ubuntu 的照片:

HTTP GET 的長度限制

微軟自己就有寫了:「Maximum URL length is 2,083 characters in Internet Explorer」,而 Firefox 從 1.5b 的時候就有人提沒遇到問題 (有人測過 30000bytes:「What's the Maximum URL length in Firefox」)。

想要用 GET 傳資料就比較辛苦點...

星期日, 4月 10, 2011

把一些靜態網站丟到 AWS S3 上...

最近在整理一些自己 hosting 成本很昂貴的站台,像是無名搬家 move.pixnet.tw 這種全靜態,而且平常也不會動內容的站台。

但這種站台因為牽扯到 uptime 的問題 (要避免連到無名的 blog 時不會讀不到 css,而造成看不到搬家訊息),所以在自家的伺服器上架設要放到 F5 上,後端還要有兩台以上的機器確保穩定性,其實維護成本還不少...

丟到 AWS S3 使用 website 功能之後,就不用管太多 (參考「Amazon S3 adds new features for hosting static websites」,加上 S3 本身有 Monthly 99.9% 的 SLA (通常更高),丟上去之後相當舒服...

Some settings of Plack/PSGI + FastCGI/FCGI + nginx...

If you found your Plack/PSGI application doesn't work in FastCGI (FCGI) mode, You might need to check the settings of nginx, to add extra environment to tell application correct path:
include fastcgi_params;
fastcgi_param   SCRIPT_NAME     "";
fastcgi_param   PATH_INFO       $uri;
It would be nice if you have better solution :-)

星期五, 4月 08, 2011

jQuery.getJSON 跨網域時 (JSONP),IE 沒辦法取得資料...

這個問題在很久前就有遇到,之前的解法是在 server side 加上 P3P header 解決 (這是 PIXNET 的 apache 預設會送出的 header 之一),但這方法遇到 server side 不是自己管就掛了...

jnlin 說從「$.getJSON('http://www.example.com/', callback_cb);」改用「$.getJSON('http://www.example.com/?callback=?', callback_cb);」就可以解決 IE 上面沒辦法取得 JSONP 資料的問題,測了一下的確解決了問題...

翻了一下 Google 發現這個問題還蠻亂的,被討論過很多次...

星期三, 4月 06, 2011

PIXNET 的 API 是支援 JSONP 與 HTTPS 的...

官方文件上沒寫,算是某種 undocument function 吧,不過我跟內部討論的共識是「應該要支援」,所以就做下去了...

除了 format=jsonp 以外,另外帶 callback=FUNCTION_NAME 的參數即可。P3P header 有設定,IE 也應該都沒問題。

以換燈泡老闆的帳號為範例:「https://emma.pixnet.cc/users/far?format=jsonp&callback=testFunction」。

在 apt 下升級單一套件

其實方法還蠻簡單的,就是直接下指令重裝即可:
apt-get install php5-cgi
如果要整個系統升級,用老方法即可:
apt-get upgrade
或是:
apt-get dist-upgrade

星期四, 3月 31, 2011

退伍感想 (?)

海巡裡面當兵果然比較沒有那種感覺,畢竟是位在二線的資訊業務單位,比較像是上班... (事情超雜的 MIS?)

接觸到的都是 Microsoft Windows 系統,整天就是處理 XP SP3 奇怪的問題 (當然也學到了不少在 Windows 上面的奇技淫巧),結果一退伍後發現 Ubuntu 播 rmvb 沒問題就把機器換成 Ubuntu 了 XDDD

台東風景很不錯,不過當兵的時候沒那個心情玩,還是要到退伍後才真正玩過看過一次... 下去玩剛好是日本地震那幾天,在 Twitter 上面被 picplz 洗的人抱歉了 :o

不過回想起來,11 個月的「青春」就這樣過去了...

PS:本來想寫更多東西,後來想想,一堆部隊裡的事情好像不太能寫 XD