莎士比亞(William Shakespeare)

  哥本身是個不喜歡看書的人,不過當兵之後發現沒學些新東西很不踏實,黃庭堅哥哥也說過三日不讀書,便覺面目可憎,照照鏡子好像真的沒那麼帥了…於是就去硬買了幾本書來翻翻,看到莎士比亞這種假掰的書特價一本不到100就索性買下來,感覺看過以後又可以拿來說嘴一番,由於我的英文實在是廢,所以只能看看中譯本。

  這本莎士比亞全集共有13個故事章節,故事內容不外乎是男女情感、兄弟情誼、父女情節等等,比較讓我有感覺的故事有幾個,

  • 馴悍記(The Taming of the Shrew)
      故事主要是描述一個強悍的女主角凱賽琳娜,被一位彼特魯喬的人轉化為溫柔、聽話的賢淑妻子,故事精采在於,一開始彼特魯喬的低姿態,對比凱賽琳娜的潑婦性格,但最後兩個立場卻顛倒過來,以及彼特魯喬在馴悍的不同階段所採取不同的策略,整個故事的鋪陳讓人不自覺得讀下去,有機會應該找這個電影來看看。
  • 威尼斯商人(The Merchant of Venice)
      威尼斯商人主要是講三個大男人的情感糾葛,三個男生分別為夏洛克(壞人)、尼安東(好人,Gay)以及巴薩尼歐(中立,Gay的伴侶),簡單介紹,夏洛克是放高利貸的,尼安東是錢很多商人,巴薩尼歐是擺闊少爺,這件故事完全是因為要擺闊的少爺沒錢想跟好友安東尼擋郎,但是尼安東買股票被套牢,所以只好逼得尼安東要去跟夏洛克借高利貸,來贊助他的(心上人)好友巴薩尼歐,也因此尼安東和夏洛克簽署了一份合約,就是尼安東要在一個星期內還給夏洛克3000金幣,違約的話就要讓夏洛克隨意割身上一塊肉,安東尼想反正他只要等滿載貨物的船回來,自然有錢能還,就爽快答應,不過人算不如天算,原本以為錢可以正常周轉,沒想到一個風暴(馬習會)把安東尼的貨船吹沉了,而痛恨尼安東的夏洛克就想履行的合約條款,此時良心發現的闊少爺,為了感激安東尼當初幫他把馬子,特地趕回來救援,而闊少爺雖然沒用,但是聰明的老婆卻在暗中幫助他,協助尼安東免去服刑的命運。
  • 李爾王(King Lear)
      李爾王這個故事讓我印象深刻的不是劇情有多感人,而是,這根本就是八點檔才會出現的劇情,一個有錢但是老糊塗的國王,和三個女兒的故事(大女兒貢娜莉、二女兒蕾岡和小女兒克蒂莉亞),這故事的壞蛋就是大女兒和二女兒,為了爭奪家產先是給老國王灌迷湯,等財產到手就把老國王給趕出去,而小女兒則是因為說實話,卻被老國王討厭而被放逐,之所以會覺得是八點檔劇情在於,老國王被女兒趕出家門後就發瘋了,而小女兒有著不錯的老公,趕回來王國來治癒老國王,而清醒後的老國王,因為憤恨不平一心想報仇,在此時小女兒又不信在戰役中被俘導致死亡,老國王又瘋了,而兩個姊姊也因為紅杏出牆,愛上同一個男人,大姊狠心把二姊毒死,而被戴綠帽的老公不爽,也把大姊殺了,這種劇情原來在4~500年前就有了,莎士比亞不愧是一代宗師。

上面對於故事的介紹或許有點對莎士比亞不敬(XD),不過故事就是這樣,每個人有每個人的解讀方式,而我想莎士比亞全集除了希望給讀者一些思想上啟發之外,我想寫作技巧可能是另外一個可以關注的地方,每個故事中鋪陳手法,都會讓讀者不由自主想繼續閱讀下去,不過我看得是中譯本,所以可能是翻譯的人文筆太好也有可能,總之,是一本世界名著,看過可以拿來說說嘴。

隨手筆記

IQueryable和IEumerable相信是很多開發人員常用到的類別,並配合linq或是lambda來做資料處理,
不過每當資料要呈現時,總免不要排個序取個分頁,當欄位是固定的時候或許還能這樣寫

var query  = data.OrderBy(p=>p.col1);

不過如果欄位很多樣的時侯就糗了,尤其當要排序的欄位是從client送上來的,多半會傳欄位名稱,無技可施的情況下你可能會寫出這樣的程式碼

switch(colname){
    case col1:
            query  = data.OrderBy(p=>p.col1);
            break;
    case col2:
            query  = data.OrderBy(p=>p.col2);
            break;
    ......
    default:
            query = data.OrderBy(p=> p.id);
}

這時侯你就會希望linq本身提供的排序要是也能吃欄位名稱就好了…

當然我也是不例外,linq不吃字串排序使用起來實在是太不直覺了,還好皇天不負苦心人,終於讓我在google,stackoverflow的問題海中找到了,這篇主要就是要記錄這段短小精悍的程式碼,不過一開始提到的IQueryable和IEumerable的實作上是有一些差異,不囉嗦看程式碼

public static class LinqExtensions
{
    
    public static IOrderedQueryable<T> OrderBy<T>(this IQueryable<T> source, string propertyName)
    {
        return (IOrderedQueryable<T>)OrderBy((IQueryable)source, propertyName);
    }

    public static IQueryable OrderBy(this IQueryable source, string propertyName)
    {

        var x = Expression.Parameter(source.ElementType, "x");

        var selector = Expression.Lambda(Expression.PropertyOrField(x, propertyName), x);

        return source.Provider.CreateQuery(

            Expression.Call(typeof(Queryable),
                            "OrderBy",
                            new Type[] { source.ElementType, selector.Body.Type },
                            source.Expression, selector));
    }

    public static IOrderedQueryable<T> OrderByDescending<T>(this IQueryable<T> source, string propertyName)
    {
        return (IOrderedQueryable<T>)OrderByDescending((IQueryable)source, propertyName);
    }

    public static IQueryable OrderByDescending(this IQueryable source, string propertyName)
    {

        var x = Expression.Parameter(source.ElementType, "x");

        var selector = Expression.Lambda(Expression.PropertyOrField(x, propertyName), x);

        return source.Provider.CreateQuery(

            Expression.Call(typeof(Queryable),
                            "OrderByDescending",
                            new Type[] { source.ElementType, selector.Body.Type },
                            source.Expression, selector));
    }
}

有了這個上面這段程式碼就可以直接寫成

var query = data.OrderBy(colname);

網路上有很多種寫法,不過這種目前應該是最佳解,理由是,很多的OrderBy的寫法都是直接回傳IQueryable,而直接回傳IQueryable也沒有不好,不過你會無法接著使用ThenBy、ThenByDescending的方法。另外,當你將IQueryable實體化的時候,資料就變成了List,但是很多時候你要排序的結果都是List Array,而上面的方法就無法使用了,因此我就依樣畫葫替IEnumerable寫一段請小心服用

    public static class LinqExtensions
{
        public static IOrderedEnumerable<TSource> OrderBy<TSource>
                                                (this IEnumerable<TSource> source, string propertyName)
    {

        PropertyInfo prop = typeof(TSource).GetProperty(propertyName);
        if (prop == null)
        {
            throw new Exception("No property '" + propertyName + "' in + " + typeof(TSource).Name + "'");
        }
        return source.OrderBy(x => prop.GetValue(x, null));
    }

    public static IOrderedEnumerable<TSource> OrderByDescending<TSource>
                                                (this IEnumerable<TSource> source, string propertyName)
    {
        PropertyInfo prop = typeof(TSource).GetProperty(propertyName);
        if (prop == null)
        {
            throw new Exception("No property '" + propertyName + "' in + " + typeof(TSource).Name + "'");
        }
        return source.OrderByDescending(x => prop.GetValue(x, null));
    }
}

藉由這兩個擴充方法,你就可以在linq中展現各種排序神技。(GitHub)

土壤學

  筆者本身是土壤環境科學系畢業的,看科系名稱也能知道土壤科學是我們系主要擅長的專業,在深入探討土壤學之前,可能要先讓大家了解什麼是土壤?土壤如何形成、土壤的功用、土壤學所涵蓋的範圍以及土壤對人類的影響,另外,順便簡介一下土壤環境科學系到底學些什麼,有什麼出路。

土壤的形成

  想必有上過國中地理或是高中地球科學的人都知道,土壤是由岩石風化而來的,而不同的母岩風化而成的土壤也造就土壤不同的特性,而土壤特性除了深受母岩特性影響外,也會受到氣候、時間、地型以及生物等因素影響,而綜合上述因子所形成的土壤,主要被分為12大類,又叫做12土綱,土綱之下還可以再細分為亞剛、土系等分類,而土系則是土壤分類中最小的單位,寫到這裡就不得不提一下,台灣這塊寶島除了永凍土(Gelisols)之外的土綱都找的到,可說是研究土壤得天獨厚的背景。而關於12土綱還有這些成土因子的交互作用,在此就不贅述,等以後有機會在介紹。那什麼是土壤呢?土壤就是由礦物粒子如砂粒、坋粒、黏粒組合而成的粒子堆,這些粒子最大不超過2mm,而這堆粒子組成的系統內所含有的固體、液體、氣體都是土壤泛指的區域。

土壤的功用

  土壤的功能何其多,舉凡續要所有植株,小至雜草、蔬菜,大至果樹、神木,都必須仰來土壤才得以生長,以下就點單舉幾個例子:
- 糧食生產、提供生命延續的動力
- 生物棲息空間(ex:蚯蚓、微生物…)
- 無機質、有機質的循環
(ex:無機質(N、P、K等元素)=>植物=>(雞、牛、人)=>死亡 => 腐生菌、分解者 =>無機質)
- 水資源調節、淨化
- 建材
- ….

土壤科學

  土壤科學涵蓋的範圍相當廣泛,例如土讓物理、土壤化學、土壤微生物、土壤調查、土壤環境生態…等等。因此很難用一篇文章就能完整敘述土壤科學,但是概括來說,所有需要和土壤交互作用的行為,都在土壤科學討論的範圍。

土壤與人類

  太陽是地球能量的來源,而要將能量轉化至有機物的代謝循環中,只能依靠植物的光合作,而土壤又是植物生長不可或缺的重要因子,因此,土壤也成為了延續人類生命中的關鍵一環。近年來人類科技的進步,卻也同時帶來了許多的汙染,很多人可能不了解土壤是何其珍貴的資產,不論是再少的量土壤生成都需要數百萬年,而恣意汙染的結果,不僅同時污染了水源,同時也將這些有毒物質帶進了代謝的循環中,最讓人痛心的是,多數的土壤污染都是不可逆的,即便是經過土壤整治也僅能降低其汙染的程度,真正要恢復到可以種植作物的狀態,可能又是個幾十萬年的事情,站在土壤科學的立場,要將水汙染藉由土壤吸附重金屬的改良方法,本人更是嗤之以鼻。

小結

  藉由本篇文章相信大家對土壤科學系有了初步的了解,如果有要進入本系的學弟妹,也可以藉由這篇文章來一窺一二,以本系的實驗室來看,除了瞭解上述的土壤基本特性外,接下來會再分為不同專精研究,例如與作物高度相關的植物營養、植體分析、作物病蟲害防治,而與土壤微生物相關的則會在繼續專研菌種鑑定、微生物肥料、微生物土壤改良,與土壤化學相關的,除了基礎土壤化學特性的分析如:pH、EC、Eh等等之外,近年來還將黏土礦物結合電化學的技術,或是利用黏土礦物修飾標靶藥物等等。而有另外一部分的人則是研究環境污然整治,例如如何將土壤中六價鉻還原成三價鉻降低毒害。土壤科學能發展的路向相當多樣,以系上學長的就業狀況來看,除了一部份的人繼續深耕農業領域外,也有投入化學分析的產業(ex:SGS),環境工程領域,肥料製造等等,當然如果你有興趣也是可以當軟體工程師…。

Life after people

  這影片一開始雖然假設的不合理,但是其中間的鋪陳又有幾分可信,尤其是利用蘇俄廢棄的大樓,來做為立證更添加了不少真實感,不過我想這部片拍攝的原因應該不是探討這問題,而是再給驕傲的人類一點警訊,從小我就不認為人定勝天,因為我了解人的軟弱和無知,從遠古人類發現火開始,就是想武裝自己,掩飾自己的害怕,像是利用火來照明,驅逐野獸等等…直到現在人類不斷的發明建築、武器、建造水塔等等..其實都是因為懼怕大自然所做出的行為模式.建築我想是從穴居而來的.目的在於抵抗大自然的風雨雷電,武器的發明雖然一部分是抵禦外敵,但是現在的衛星、導彈其實是在防禦外來的隕石以及人類未知的生物,扯的好像有點遠..
  影片中令我印象深刻的部分是植物對建築的侵蝕與佔領,地球上最能主宰地球的,不是有智慧的人類,也不是數量龐大的螞蟻,更不是活的比人類還久的蟑螂,而是屹立不搖的植物,在地球的分類上我想植物才是最高皆,其擁有的適應性不是任何生物能夠批敵的,而其擁有的破壞力也是人類所發明的任何工具無法超越的,試想一個堅硬的水泥建築植物照樣能在上面鑽洞生存,一樣能使之崩姐,人類的水泥山林無法與自然永久並存,但植物卻可以生生不息的與地球共存,地球可以沒有人類但是不能沒有植物.
  我想在人類消失後的這部影片中,作著不斷的將人類認為可以永序的東西,不斷的反駁並提出合理的解釋大自然的反撲方法,像是水壩的水力發電,再工程師的眼裡似乎可以永久的運行,但是影片中就提出,其冷卻水會因為螺類的的繁殖使的水管受阻,進一步讓機體過熱使的機器停止運轉,而無法在發電.人類看似能永久的東西,我想只是在我們腦中極短的時間尺上能運行吧,畢竟人類的歷史也不過短短的3000年,我們始終很難去思考超過百萬年的世界,只能期望在我們有知的歲月中,能看到更長更遠的地球發展.
  最後,看完這部片讓我體會到不少事情,人類只不過是星球輪迴中的一個分支,人類消失後,很快的地球又會找回那原始的狀態,所謂物極必反的道理再適用也不過,姑且不談我們對這地球是破壞還是幫助,但至少我們再地球的歷史上曾經存在過那麼的幾千年,也說不定我們就是地球安排的重要角色之一,很多的可能與不可能,畢竟這個存再那麼久的問題不是三言兩語就能說完的.

2009-03-22

第11個小時

  這部片名說實在有些令人匪夷所思,內容主要是在描述人類在經濟、工業發展的同時對地球,我們所居住的星球,所造成的破壞和對於環境和我們人類所帶來的影響和毀滅,影片中訪問到各個不同領域的專家,無論是海洋、土壤、生態、森林等等…。
  影片主軸大致上是圍繞著二氧化碳所帶來的溫室效應,但我更有興趣的是那些專家所說的話,例如他們現在關心的不是人類是否會滅絕,而是我們現在的行為馬上立刻的使其他物種滅絕,還有便是,大自然一年對地球二氧化碳的循環,要是換算成經濟利益,大概是需要33億美金,然而這樣的利益是遠大於這些植物被開採作為買賣所帶來的利益更大,這也是經濟學家EMBA等人士在分析如何使經濟能在有所成長時,而忽略的成本,還有就是隨著地球的溫度不斷的上升,北極的凍土也會因此溶解,我在乎的不是冰山的溶化,而是當凍土溶化後,土壤中所含有具有內苞子的微生物也會因此甦醒,我無法預測這對人類或是整個地球生態所帶來的破壞,這些微生物的甦醒可能會導致人類進入另一個黑暗時代,也或許,重生地球的鑰匙就在這些永凍土裡,還有就是,隨著地球的暖化,當深海的溫度也升高,將會導致水資源自淨的能力消失,當海水不在產生對流,海洋就像死水一般,一個生物的溫床儼然成為墓地,而這些都只是我們工業、經濟發展所帶來的結果,第11個小時這片名取的很有趣,思考過後便發現,我們對地球的破壞速度是快的無法掌握,說不定還能藉此推翻愛因斯坦的光速理論,影片中有提到一個很有意思的想法就是,大自然中任何生物的排泄物實際上都是別的物種的食物,而我們工業、經濟發展的目標這就是最好的模範,地球的生態本身就是個循環是個回收,而我們的工業發展卻是只能製造無法回收的垃圾,快速累積使的地球也無法產生淨化的效果。
  人類的技術進步的確使我們有了方便的生活。但我們的生活環境卻沒有因此進步,就拿我人生短短不到20年的經歷來說,還記得小時後父親曾經帶我到農田旁的小排水道撿撿貝殼抓抓小魚,而現在呢?不要說是撿貝殼就連叫我腳要伸到那骯髒的排水道可能都要考慮一翻,現在的都市生活有其方便性,但不能否定較接近原始生活的鄉村也應該有其存在的價值,倘若人的慾望能降低,能夠拋下這些我們不需要的需求,相信對地球的生物,不,應該說對我們人類自己都能帶來正面的力量,從高爾的不願面對的真相到這部第11個小時,無非就是要我們、政府、企業能對我們的家園地球正在遭遇迫害的同時,能夠有所啟發,有所改變,經濟成長的追求我想已經不再是在這個生死存亡的關頭所需作的優先考慮,而是思考如何讓地球現在所受到的困境能有所舒緩,我們就算無法避免走向毀滅的道路,但是我們也必須加長無論是兩倍甚至二十倍的人類的歷史,也能讓人類之後的生物了解,我們是有努力過的。

2009-05-18