2008-07-26

遠端升級 FreeBSD 6.3 to 7.0 之驚險萬分

其實我們家老大已經有提供很完整的升級流程,且試過幾台照著做都正常,就公司內部的文件管理系統出了點小問題...

  1. MySQL daemon 沒先停掉會有危險性,因為要幹掉所有的 ports 重裝,但是因為沒先停 daemon 造成 script 一下去後,不明原因 MySQL stop 爛掉
  2. 因為要幹掉所有的 ports 之前會先跑一段 script 把 /var/db/pkg 裡所有的 ports 備份起來,然後再升級完 Base system 後去完整重裝成 7,結果賽手把備份出來的檔案弄掉了,最後還好這台機器有每天備份,才從 dump file 裡挖出 /var/db/pkg 的資訊重做一份 ports 備份檔
  3. 這台機器是有另外獨立線路(不是走公司 gateway),所以前面好不容易救回 ports 備份檔確連不出外網,本來以為是哪個東西搞爛,後來想起是線路問題設定它先走公司 gateway,終於現在恢復正常繼續安裝 ports
  4. 如果必須要裝 MySQL 4.0 會有雷,因為 MySQL 4.0.27 有重大弱點通報,所以如果沒下"export DISABLE_VULNERABILITIES=true"是安裝不了的;所以到了 php5-mysql client 安裝的部份就造成 php5 找不到 mysql 所以就"順手"裝了 mysql5(推論是這個原因),這真是個超級大雷阿~ 囧
原本想說是不是用前一天的 dump (24號) 把系統 restore,後來想到這樣今天(25號) 新增的所有文件就全滅了,那我星期一就準備被砍了,還好那時沒衝動;後來又想說那 restore 到原本的備份 HDD 再救資料,想的非常的複雜,後來還好看到這篇才知道可以只挖特定目錄(resrote -if),所以很快的10幾分鍾內把 /var/db/pkg/ 先挖出來,才弄回 ports 備份檔

總之一整個晚上是驚險萬分加提心吊膽阿,目前看起來正常的在安裝 ports 中了;應該可以順利趕在星期一上班前升級完成。

這個故事告訴我們:
  • 出包不要急,想好對策再出手;
  • 就算有文件可以參考,也要仔細瞭解每一步驟再幹嘛(就是重覆做了備份 ports 那步造成 ports 備份檔遺失)
  • 深夜問題多,早點睡最好!!
晚安!!

2008-07-24

FreeBSD 安裝 diablo-jdk from PORTS

再更早些時候,要在 FreeBSD 上裝 JDK 根本上是個痛苦的事,因為 Sun 要求檔案必須要到他們網站下載,而且要下載還得要註冊,非常的不便。

救世主 FreeBSD Foundation 提供了編好的 binary 檔,只要上去抓下來直接 pkg_install 就搞定,不過這種安裝對於之後要做系統升級還是有點不方便就是。

當然現在我們可以透過 PORTS 直接安裝 diablo-jdk,不過還是有點小地方要注意一下

  • 若不想系統被硬上一堆 X 套件,
    cd /usr/ports/java/diablo-jdk15/
    vim Makefile
    USE_XORG+= xi xp xt xtst #Mark 掉這行
  • 如果在 diablo-jdk 的 option 有選擇 tzupdate,要自行到 Sun 網站下載最新版,這個網站要註測(暗!!)
  • 要連上 FreeBSD Foundation 抓相對應的 diablo-jdk-caffee
以上的檔案要放在 /usr/ports/distifiles/ 這樣 make 才找的到,升級時也是要更新相對應的版本放到同一目錄,然後就跟通常升級套件的方式一樣:portupgrade diablo-jdk*

另外 Foundation 已經推出 FreeBSD 7 的 jdk1.6 版,不過目前為止 PORTS 裡最新的 diablo-jdk 只有 1.5,另外如果是舊 32bit 的使用者就抓 x86 版,新的 64bit 版就抓 amd64 那版

2008-07-21

36 紀元活動結束

之前有提到過 36 紀元這個拍照活動,可以參考這篇這篇

現在活動結束,且照片也洗出來補上了,我在 Yam 那邊的 Blog 也寫了一篇總結整理,各位可以直接由那邊連結到我這個活動的每一篇 blog,

如果懶的一篇篇看想直接看所有照片的,也請到我的 Picasa

FireFox Plug-in Adblock plus 的

今天一早發現我的 FireFox 在處理"特定"網站時 CSS 跟 JavaScript 整個都出不來,剛好該網站是公司自己開發的,所以一時以為是程式改爛了,但是改用 IE 看又正常,所以再請同事用 FF 開發現別人都正常,只有自己的不正常,所以可以定義為個案。

FireFox 有很多很好用的套件來 Debug,我先後用的 FireBug 跟 Web Developer,後來發現一個很怪的現象,就是 Web Developer 無法解析出該網站的 CSS,也就是使用它的"編輯CSS功能",這很奇怪,表示 CSS 根本沒被載入,然後我再用它來觀看"處理後的原始碼",發現另一個驚人的狀況:"<link style="display: none;" href="http://xxx.xxx.com.tw/xxx.css" rel="stylesheet" type="text/css">",同樣的在 JavaScript 的部份也會出現 style="display:none;" 的問題,標紅字的部份是原本原始碼裡不存在的 code,這也代表該網站 Load 完後的 CSS & JavaScript 完全不會被 Browser 處理(難怪我的頁面鳥掉了)

一開始以為是 Web Developer 的問題,試了各種設定甚至是停用元件也都解決不了,後來查到這個網站有講到 Adblock 的好用即有可能誤判,我才想到有沒有可能是 Adblock 搞鬼

於是將頁面切到有問題的網站,點開 Adblock 的控制窗,果然發現一個"/ad"的過濾條件,這下一切就真相大白了,/ad 開頭的範圍太廣了,瞬間當然 ad 開頭的相關 css 跟 js 的 require url 全部中招,本來是想把這個 filter 拿掉,後來還是直接將自己的 domain 加進 Adblock 白名單就好。

這個故事告訴我們,Plug-in 好用歸好用,一個不小心中招 debug 起來還真是困境阿 @@

如何在 web.config 裡讀入另一個外部設

有大概 study 過 .NET 的人應該都知道在 .NET 上會有一支叫 web.config 的檔案,這支以 XML 的方式描述,裡面定義了 .NET 程式執行階段的一些變數宣告還有環境設定,這部份簡單來說就像我們在寫 PHP 時會定義一支像是 config.php 同樣的用意(只是 web.config 更複雜點)

而前陣子需要在 .NET 環境裡食作一個在 PHP 的機制,透過 cron 另外組出一支 php 的 DB 設定檔,然後在 config.php 最開頭 require,以便讓 config.php 裡的 define 值可以用那支動態組成的 php(註一)

實作:

首先我們要產生一支類似的外部設定檔樣板,其樣式如下
<?xml version="1.0" encoding="utf-8"?>
<appSettings>(註二)
<add key="MY_KEY" value="MY_VALUR" />
</appSettings>
之後在原本的 web.config 裡做以下調整
<appSettings> -> <appSettings file="db_config.config">
之後在原本的 web.config 裡做以下調整


這樣就可以在程式裡使用到該外部設定檔裡的值,而且也可以再以 .NET 寫一支類似的程式產生設定檔並 compiler 成 .exe,再以 windows server 的排程功能將它排程

註一:
web.config 的 <appsettings> 這個 tag 裡定義的事,簡單來說就是我們會在 config.php 裡幹的事是一樣的

參考資料:請看這裡

2008-07-02

Bass 課目前狀態

最近的兩堂課都開始上樂理,我是拿邱培榮著的摸透電貝士去請教

目前講解了幾個主要大方向,像是大小調、和弦公式、順階和弦等基礎樂理,另外就是幾個公式要背一背,再根據 Key 套進公式取得整組和弦的音階做變化等等

這次再加上以琴用琴弦跟琴格間的關係來推演,就清楚多了;如果以之前學古典看五線譜來說,要去推這個也是可以,只是因為都看絕對音,也就不會太在意這些;最後摸透和弦後再根據曲風的 pattern,就可以推演出自己的 Bass line 做音階變化

不過呢,目前還在打基礎功夫的階段,連爬琴格都還爬不穩就是 XD