祖父走了

這是我這幾天 MSN 的暱稱: 悄悄地祖父走了,正如他悄悄地來, 揮揮衣袖,不帶走一片雲彩。
是的,祖父就這樣走了.
祖父走的很突然,他的子女都不太能接受這個事實 (從他們口裡還一直念,祖父平常身體很好等等的話,可以聽出來他們的不捨.)
仔細回想,人的生死真的是很難以預料,平時就應該要做好準備.
祖父因為跌倒而送醫,但是跌倒一事可大可小.
星期六下午,他是到圳溝旁邊,想要抽幾根木頭,可是卻腳滑跌落圳溝,圳溝約 2 公尺高,因此而大腿骨斷掉,從外觀可看到一大片瘀血.當時,由於鄉下人家白天經過的人很少(多半都出外工作或移居外面),祖父呼救了約一個小時,才被剛好要出門的鄰居聽見,趕緊救起送新店耕莘醫院.
星期一下午轉台北石牌榮總.
星期一晚上,手術很成功.
星期二早上發生手術後併發症,下午送加護病房,傍晚的時候,情況不妙,決定回家,當晚約八點五十分回到磺窟城祖父家中.
其他情況,誠如我妹所說:

不再贅述.
對祖父唯一的抱歉,就是沒能趕緊生個曾孫出來.
抱歉,祖父,順風.

最大公因數/輾轉相除法

在某論壇看到討論最大公因數的討論串,裡面有提到輾轉相除法.
老實說,當我看到最大公因數,我只想到暴力法.
從 1…n 開始 iterate, 能整除,表示是因數,把這些數字記起來,於是我們得到兩個集合.這兩個集合的交集,表示是共通因數,最大者則為最大公因數.
完全忘記有輾轉相除法這玩意兒,一時興起,port 到 c# 試試看.
using System;
using System.Collections;

public class MyClass
{
    public static int GCD( int a, int b )
    {
        if( a % b == 0 )
            return b;
        return GCD( b, a%b );
    }
    
    public static void Main()
    {
        int num1=1230, num2=460, num3=10;
        
        int result1 = GCD( num1, num2 );
        int result2 = GCD( result1, num3 );
        
        Console.WriteLine( "The GCD of {0} and {1} is {2}", num1, num2, result1 );
        Console.WriteLine( "The GCD of {0} and {1} is {2}", result1, num3, result2 );
        
        RL();
    }
    
    #region Helper methods
    private static void RL()
    {
        Console.ReadLine();    
    }
    #endregion
}

祖父跌倒骨折

今天下午接到媽媽的來電,說祖父跌倒了.
我心想不妙,老人家最怕跌倒.
前幾天去何同學家的時候,才聊到他母親去花蓮慈濟作義工,晚上休息洗澡的時候,不小心跌倒,手腕那邊有粉碎性骨折的樣子.
趕到新店耕莘醫院以後,聽嬸嬸姑姑他們的談話,瞭解了一下狀況.
原來是因為去圳溝邊想要拿木頭出來,卻不小心腳滑而跌倒.
幸好村莊裡的人外出聽到呼救聲,才趕緊聯絡人把祖父救了起來.
隨後送往醫院.
不過這次情況看起來不是很妙,X光片也還沒洗出來….
真是令人擔心.
以前以為祖父是個很小心的人,這次怎麼這麼不小心呢??
唉~~

Asp.Net 與 tortoisesvn

早上去看tortoisesvn的時候,發現已經釋出新版,看了一下新版的發行公告,發現新版的tortoisesvn已經解決討厭的 asp.net 問題了.

The “_svn” hack is now officially supported: since some versions of ASP.NET don’t allow directories beginning with dot (e.g., “.svn”, the standard Subversion working copy administrative directory), TortoiseSVN now treats the environment variable SVN_ASP_DOT_NET_HACK specially. If this variable is set (to any value), it will use “_svn” instead of “.svn”. Note that once the environment variable is set, working copies with standard “.svn” directories will stop working, and will need to be re-checked-out to get “_svn” instead.

簡單的說,只要設置環境變數:SVN_ASP_DOT_NET_HACK 就行了.
不知道 subversion 是不是也是一樣的設置方法.

我的生命靈數

在朋友的 blog 上看到的:我的生命靈數
看到了,就要作一作.

靈  數: 6
這個數字顯示
好好利用這個階段調整工作目標,改善自己不良的習慣,改進溝通技巧和人際關係,將負面的觀念引導到正面,並且學習一種適合自己的身心療法,記得要心存大愛,多多耕種你的善念和善行,為進入下一階段的幸運作好準備!
這個階段對於感情的穩定很有幫助,尤其新的戀愛會很好,是充滿浪漫的時段。另外,分享會使得你更成熟,更加富有,因為這會讓你四散的能量再度聚合起來,發揮出力量,讓你的內心告別貧乏,逐漸豐美,記得好好和身邊的朋友一起分享美好的希望與成果喔!

相當不錯的參考.

mono 與 SELinux

重灌 server 並啟用 SELinux 以後,發現 asp.net 應用程式無法啟動.
原本不想碰 SELinux 的,不得已,出來混的早晚都要還,只好硬著頭皮去K.
經過研讀文件之後,大致上對 SELinux 有一定的瞭解.
SELinux 本身純粹是作安全性的加強,所以不管是 user, file, directory, socket, process…等等的,都另外有了 security context,作為安全性的第二道防線.
當系統要存取這些資源的時候,首先會使用原有的 unix permission 去作檢查,接著 SELinux 會再依照 security context 作第二道檢查,當檢查沒問題之後,才會允許存取.
SELinux 裡面有所謂的 identity, domain, type, security context, target context 等等物件…
大致上來說, identity 決定身份, domain 決定 process 能幹麼, type 決定 process 以外的物件可以幹麼, security context, target context 則是 identity + domain + type 的組合. policy 則用來定義 security context, target context 可以存取哪些物件. (這些組合,真的很讓人頭暈.)
存取的指令也蠻多的:

  • 要看檔案目錄的 security context, 可以加上 -Z (ls -Z)
  • 要看process的 security context, 也可以用 -Z (ps axZ)
  • 要看自己的security context,可以用 id
  • 要改security context, 可以用 chcon
  • 要 reset security context, 可以用 restorecon

整個研讀完之後,發現應該是 policy 問題.
今天下午用Google去找到 v14, i08: Tuning Your SELinux Policy with Audit2allow” href=”http://www.samag.com/documents/s=9820/sam0508a/0508a.htm”>這篇文章,發現有這麼個工具 – audit2allow,他是在 policycoreutils 套件裡面的指令,可以根據 warning message 產生 policy,省掉不少編寫的麻煩.
為了要能重新編譯 policy, 你需要安裝 selinux-policy-targeted-sources 這個套件

yum install selinux-policy-targeted-sources

再使用 audit2allow 這個指令,從 dmesg 裡面分析 warning, 並將產生以後的 policy 寫入到 mono.policy 檔案中.

audit2allow -d -o mono.policy

接著把 mono.policy 更名為 local.te, 放到 /etc/selinux/targeted/src/policy/domains/misc/ .
放完之後,切換到 /etc/selinux/targeted/src/policy
強制 selinux 重新編譯 policy

make load

最後重新啟動我的 Apache server,就大功告成了.
參考資料:

ThreadAbortException

原來呼叫 Response.End() 就會丟出 ThreadAbortException.
害我以為是我程序出現錯誤了呢…
Google 幫忙一下,原來也有人碰到同樣情況:
Impersonation Failure : ASP.NET – ThreadAbortException
其實還不只是 Response.End(), Server.Transfer() 與 Response.Redirect() 也有機會發生此狀況,因為他們內部也呼叫了 Response.End().
比較正確的作法應該還是先呼叫

Response.Flush();
Response.Close();

會比較好些.
這是那篇文章所提供的參考資料: