夏日部落客BloggerAds《2008‧夏》

2008年4月21日 星期一

拳王爭霸戰

0 意見

 

image

這星期原本打算去士林夜市逛逛,沒想到卻看到百齡高中操場旁,好像有人圍觀,進而一看,沒想到竟然是拳擊比賽,但去的時間似乎已到了比賽的尾聲,不過卻是最精采的重量級比賽,紅色的拳擊手是北體的學生,藍色的拳擊手可能是社會人士,不過在開打時,藍色的呼聲很高,因為身高及手臂的厚實度都佔優勢,不過我知道拳擊其實移動速度是相當重要的,因為小時候是漫畫第一神拳迷,所以誰勝誰負還相當難說,沒想到第一回合就相當精采,紅色選手移動速度優於藍色選手許多,使得藍色選手都攻擊不到要害,反倒是紅色選手卻給了藍色的選手一擊正拳,讓藍色選手直接倒地,站起時又重心不穩,此時場內傳出劇烈的歡呼聲,因為我相信有90%的人都是抱著看精采鏡頭的人吧,反正被打的又不是我的這種心態,不過剛剛的倒地情形讓我已經確定是紅色獲勝,經過3~4回合的激鬥,在結束前的幾秒,發現兩位選手突然有放空,對看著對方的情形,我想是他們應該是很累了,所以才突然放空,最後比數是27比6,紅色獲勝。

這種拳擊比賽在台灣似乎不太盛行,不過看現場的感覺是熱血沸騰阿,縱使比賽選手的程度,比國際級或電視上看的,有相當大的差距,但或許這就是中國人的"溫和"吧,雙方都沒有使出大絕招,可能也怕見血吧,但看免錢的比賽的我,認為算是賺到了,回來之後查了相關新聞,5/25號還有一場比賽,若還是免錢的話我願意去看,因為聲光效果實在是很棒的。

 

相關新聞:

http://news.pchome.com.tw/sport/cna/20080418/index-12085251085405118007.html

2008年4月17日 星期四

C# 複製檔案進度列實作 (Copy file + Progress Bar)

0 意見

應用程式常常會有搬移檔案的動作,但複製檔案時若沒有處裡,很容易造成使用者介面沒回應的畫面,此外若涉及複製大檔案,通常需要顯示進度列,便於使用者知道現在的複製進度,是要繼續下去或者是去取消,這一類的問題,有幾個要注意的問題(1)UI的同步更新問題,(2)非同步複製檔案的實作,我相信這問題已經是老掉牙的問題,但是我在網路上找到的例子大都是這一個使用C#在进度条中显示复制文件的进度 (大部分都是貼這個範例),我大概看過且稍為用了一下(我的開發平台是VS2008),發現有一個問題是他在更新ProgressBar的時候,會有InvalidOperationException[Cross-Thread operation not vaild... 的問題產生,這問題可以上Google稍微查一下就發現問題所在,所以我稍微改寫了一下,畫面及程式碼如下:

Copy

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        int totalSize;  //Total Size
        int position;   //Position
        const int BUFFER_SIZE = 4096;
        byte[] buffer;
        FileStream fileWriteStream;
        FileStream fileReadStream;
        public Form1()
        {
            InitializeComponent();
        }

        private void ctrlCopy_Click(object sender, EventArgs e)
        {
            string strFile = "";
            position = 0;
            totalSize = 0;
            OpenFileDialog openDialog = new OpenFileDialog();
            if (openDialog.ShowDialog() == DialogResult.OK)
                strFile = openDialog.FileName;
            else
                return;

            // Reset Status in order to prevent another copying process
            this.totalSize = 0;
            this.position = 0;
            if (this.buffer != null) this.buffer = null;
            if (this.fileWriteStream != null) this.fileWriteStream.Close();
            if (this.fileReadStream != null) this.fileReadStream.Close();

            //Delete file which aready exists.
            if (System.IO.File.Exists("c:\\copyedFile.bin"))
                System.IO.File.Delete("c:\\copyedFile.bin");

            this.fileReadStream = new FileStream(strFile, FileMode.Open, FileAccess.Read);
            this.fileWriteStream = new FileStream("C:\\copyedFile.bin", FileMode.Append, FileAccess.Write);
            totalSize = (int)fileReadStream.Length;
            this.progressBar1.Maximum = totalSize;

            //Copy file while larger than 4KB.
            if (totalSize > BUFFER_SIZE)
            {
                buffer = new byte[BUFFER_SIZE];

                // Async Invoke
                fileReadStream.BeginRead(buffer, 0, BUFFER_SIZE, new AsyncCallback(AsyncCopyFile), null);
            }
            else
            {
                this.fileReadStream.Close();
            }
        }
        // Asynchronously copy file
        private void AsyncCopyFile(IAsyncResult ar)
        {
            int readedLength;

            // Lock FileStream
            lock (this.fileReadStream)
            {
                readedLength = this.fileReadStream.EndRead(ar);   // When stream endread, get readed length
            }

            // Write to disk
            this.fileWriteStream.Write(buffer, 0, buffer.Length);

            // Current stream position
            position += readedLength;

            // Response UI
            MethodInvoker m = new MethodInvoker(SynchProgressBar);
            if (this.progressBar1.InvokeRequired)
            {
                this.progressBar1.Invoke(m);
            }

            if (position >= totalSize) // Read over.
            {
                this.fileWriteStream.Close();        //Close FileStream 
                this.fileReadStream.Close();
                return;
            }

            // Continue to read and write
            lock (this.fileReadStream)
            {
                int leftSize = totalSize - position;

                if (leftSize < BUFFER_SIZE)
                    buffer = new byte[leftSize];

                this.fileReadStream.BeginRead(buffer, 0, buffer.Length, new AsyncCallback(AsyncCopyFile), null);
            }
        }

        private void SynchProgressBar()
        {
            this.progressBar1.Value = position;
        }
    }
}

不過細看有一些細節的部份要處裡,如檔案小於4KB時要如何處理,若要將此方法包成物件,要如何用delegate or event傳給上層UI... 這些問題就交給各位看官嚕。 此外有些觀念也是很重要的,在此附上連結: http://www.cnblogs.com/c2303191/articles/826571.html

2008年4月14日 星期一

HtmlTextWriter 實作簡介

0 意見

HtmlTextWriter使用動機

最近剛好在研究html由程式產生,發現在.net framework下有一個實用簡單的類別-HtmlTextWriter,藉由這個類別可以快速的由程式中寫出Html碼,命名空間是 System.Web.UI,如果在WinForm下使用,請引用(Reference)System.Web.dll。

HtmlTextWriter與Html32TextWriter
HtmlTextWriter支援Html4.0標準,而Html32TextWriter支援Html3.2標準,在msdn中一般不建議將採用Html32TextWriter,它為支援低版本的瀏覽器而設計的,所以建議採用HtmlTextWriter物件,由名稱上也可猜測這類別比較正統,沒有多餘的贅字。

 

TextWriter - StringWriter, StreamWriter 簡介
在介紹HtmlTextWriter使用前,必須先介紹一些相關的類別,因為HtmlTextWriter本身並不支援輸出的功能,必須由TextWriter的類別來實現輸出的功能。

TextWriter: 表示可以寫入一連串連續字元的寫入器,這個類別是抽象的。

StringWriter: 實作TextWriter以便將資訊寫入字串。資訊儲存在基礎 StringBuilder 中。

StreamWriter: 實作以特定的編碼方式將字元寫入位元組資料流的TextWriter。 

HtmlTextWriter初始化

HtmlTextWriter在建構時必須要接串接TextWriter,本身不提供輸出的方法或屬性。

建構子: public HtmlTextWriter (TextWriter writer)

輸出成檔案

System.IO.StreamWriter streamWriter = new System.IO.StreamWriter("C:\\htmlSample.htm");
System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(streamWriter);

streamWriter.toString();

streamWriter.Close();

在C:下可看到htmlSample.htm檔案

輸出成字串:

StringWriter strWriter=new System.IO.StringWriter();
HtmlTextWriter htmlWriter=new HtmlTextWriter(strWriter);

獲得輸出結果 string result =  strWriter.toString();

HtmlTextWriter常用方法

1. void RenderBeginTag(HtmlTextWriterTag tagKey)
    用於Html開始標籤,如<body>,HtmlTextWriterTag是列舉類別,內部有所有Html 4.0的列舉標籤,如果要增加body標籤,就是RenderBeginTag(HtmlTextWriterTag.Body)

2. void RenderEndTag() 
    與RenderBeginTag對應,有幾個RenderBeginTag就必須有幾個RenderEndTag。如下面的例子:
<html>
    <head></head>
    <body></body>
</html>
上面一段是html基本架構,使用HtmlTextWriter生成就是
   htmlWriter.RenderBeginTag(HtmlTextWriterTag.Html);
   htmlWriter.RenderBeginTag(HtmlTextWriterTag.Head);
   htmlWriter.RenderEndTag();   //End of Head
   htmlWriter.RenderBeginTag(HtmlTextWriterTag.Body);
   htmlWriter.RenderEndTag();  //End of Body
   htmlWriter.RenderEndTag();  //End of Html
3. void AddAttribute() 
   用於增加標籤的屬性,例如<img>標籤的url屬性、width屬性等。注意:AddAttribute必須出現在RenderBeginTag的前面

ex:
   htmlWriter.AddAttribute("url","../xxx.gif");
   htmlWriter.AddAttribute("width","50");
   htmlWriter.AddAttribute("height","50");
   htmlWriter.RenderBeginTag(HtmlTextWriterTag.Img);
   htmlWriter.RenderEndTag();

輸出: <img url="../xxx.gif" width="50" height="50" />。

4.void AddStyleAttribute()

    由於Html並不是很嚴謹的語言,所以上面的函式就可實作所須輸出的字串,但建議還是採用以下範例,以下3個例子,所產生的字串都相同,也能正確輸出


(a)
htmlWriter.AddAttribute("style", "margin:0px; color: #ff0; overflow: auto");
(b)
htmlWriter.AddStyleAttribute("margin", "0px");
htmlWriter.AddStyleAttribute("color", "#ff0");
htmlWriter.AddStyleAttribute("overflow", "auto");
(c)
htmlWriter.AddStyleAttribute(System.Web.UI.HtmlTextWriterStyle.Margin, "0px");
htmlWriter.AddStyleAttribute(System.Web.UI.HtmlTextWriterStyle.Color, ""#ff0");
htmlWriter.AddStyleAttribute(System.Web.UI.HtmlTextWriterStyle.Overflow, "auto");
輸出: Style="margin:0px; color: #ff0; overflow: auto"
我採用的是第三種方法,是因為它有提供對應的列舉,不想全部手動自己寫。

5. void Write()和void WriteLine() 
   產生Html標籤以外的所有信息。

此外,若是從WinForm上的顏色轉換到網頁上的顏色,可採用此函式System.Drawing.ColorTranslator.ToHtml(Color c);

實作 Web 跑馬燈

 image

private void SaveMessageToHtml1(string htmPath)
{
    System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(htmPath);
    System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(streamWriter);

    // Html
    htmlWriter.RenderBeginTag(System.Web.UI.HtmlTextWriterTag.Html);

    // Head
    htmlWriter.RenderBeginTag(System.Web.UI.HtmlTextWriterTag.Head);
    htmlWriter.RenderEndTag(); // End of Head

    // Meta
    htmlWriter.AddAttribute("http-equiv", "content-type");
    htmlWriter.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Content, "text/html; charset=UTF-8");
    htmlWriter.RenderBeginTag(System.Web.UI.HtmlTextWriterTag.Meta);
    htmlWriter.RenderEndTag(); // End of Meta

    // Body
    htmlWriter.AddStyleAttribute(System.Web.UI.HtmlTextWriterStyle.FontFamily, "Arial");
    htmlWriter.AddStyleAttribute(System.Web.UI.HtmlTextWriterStyle.Margin, "0px");
    htmlWriter.AddStyleAttribute(System.Web.UI.HtmlTextWriterStyle.Color, System.Drawing.ColorTranslator.ToHtml(Color.Yellow));
    htmlWriter.AddStyleAttribute(System.Web.UI.HtmlTextWriterStyle.BackgroundColor, System.Drawing.ColorTranslator.ToHtml(Color.Black));
    htmlWriter.AddStyleAttribute(System.Web.UI.HtmlTextWriterStyle.Overflow, "auto");
    htmlWriter.RenderBeginTag(System.Web.UI.HtmlTextWriterTag.Body);

    // Marquee
    htmlWriter.AddStyleAttribute(System.Web.UI.HtmlTextWriterStyle.Position, "relative");

    htmlWriter.AddStyleAttribute(System.Web.UI.HtmlTextWriterStyle.Top, "25%");
    htmlWriter.AddStyleAttribute(System.Web.UI.HtmlTextWriterStyle.Height, "100%");
    htmlWriter.AddStyleAttribute(System.Web.UI.HtmlTextWriterStyle.FontSize, string.Format("{0}px", "20"));
    htmlWriter.AddStyleAttribute(System.Web.UI.HtmlTextWriterStyle.Overflow, "hidden");
    htmlWriter.AddAttribute("behavior", "scroll");
    htmlWriter.AddAttribute("direction", "left");

    htmlWriter.AddAttribute("loop", "-1");
    htmlWriter.AddAttribute("scrollamount", this.scrollOffset.Text);
    htmlWriter.AddAttribute("scrolldelay", this.scrollDelay.Text);
    htmlWriter.RenderBeginTag(System.Web.UI.HtmlTextWriterTag.Marquee);
    htmlWriter.Write("Hello! This is Web Brower-Marquee");

    htmlWriter.WriteLine();
    htmlWriter.RenderEndTag(); // End of Marquee
    htmlWriter.RenderEndTag(); // End of Body
    htmlWriter.RenderEndTag(); // End of Html

    streamWriter.ToString();
    streamWriter.Close();
    htmlWriter.Close();
    streamWriter.Dispose();
    htmlWriter.Dispose();

    // 除錯用
    System.Diagnostics.Process.Start("IEXPLORE.EXE", htmPath);
}

Reference:

http://www.cnblogs.com/tonyqus/archive/2005/02/15/104576.html

MSDN

2008年4月8日 星期二

SQL Server 2005 Backup 介紹

0 意見

最近對SQL Server的備份有些需求: 希望能夠定期備份資料庫,且希望備分檔名是XX_yyyyMMdd.bak 的格式,這樣輩分的檔案就會對應備份的日期,不會被抹寫掉,此外還要能夠備分到另一台主機上。

我的平台是SQL 2005,備份的方式其實很簡單,首先先簡易說明SQL提供的備份方式,有下列四種:

SQL Server provides four different methods for backing up your database:

  • A full backup makes a complete backup of your database. You will almost always need to start your backup strategy with a full backup of your database.
  • A file backup is useful when your database is so large that a full backup would take too long.
  • A transaction log backup creates a copy of all changes made to the database that are currently stored in the transaction log.
  • A differential backup stores all changes that have occurred to the database since the last full backup.

我這邊僅介紹第一種full backup,這種方式不適合資料量很大的資料庫,操作方式如下。

image

針對要備份的資料庫,點擊滑鼠右鍵,會跳出選單,選擇紅框部份,進入畫面後,選擇下圖紅框部份

image

接著,就會進入編輯備份的工作,重點在於Steps的選項中,必須新增新工作(實際要備份的工作),

image

這邊可以編輯Script做進階的動作,而我備份的檔名正好需要用到此功能,以下是我備份到本機的方式。這邊有一個小細節要注意,N這個參數代表是本機磁碟的意思,所以一定要有的,此外單引號要注意,不然也會有錯誤。

image

下圖是我備份到網路磁碟的方式。

image

接著設定排程都有介面可以設定,這邊也不再贅述。這樣就簡易的設定可以完成一個簡單的備份工作。

此外,設定完成後,實際執行此工作是由SQL Server Agent完成的,可以觀察到Jobs多了一項剛剛新增的工作,如果想測試剛才的設定是否可以正確執行,可以選擇Start Job就會執行此項目的設定,若有錯誤則可以觀看歷史紀錄檔,也可以以進入屬性進行修改。

image 

參考連結:

http://www.devx.com/getHelpOn/10MinuteSolution/16507/1954

http://blog.sjzj.com.cn/article.asp?id=689

http://www.sqlteam.com/tag/sql-server-backup-restore

2008年4月7日 星期一

DirSync 備份軟體介紹

0 意見

image

先前跟同事買了一台IBM T42 MB,由於在這台筆電上花的時間越來越多,而且思考到如果在此台NB 開發新的套件或模組,一但只要電腦不小心毀損,那裡面的心血結晶,不就附諸流水,所以備份是很重要的,但又不想每次是思考我哪些東西備分過哪些沒有備份過,用"純手動"的方式備份,每次都這樣備份會令人抓狂,所以今天介紹一個備份軟體 DirSync,簡單又實用,而且是不用安裝的綠色軟體,首先,你必須建立job,一個job代表一個備份的事項,你可以針對job設定備份的方式,目前提供的方式有五種,但最常用的是(a)(b),將有新增的部份做備份及更新,ex:從NB備份(source)到PC or USB HD(target),source有的檔案是a b c d 這三個檔案,而d這個檔案從source被刪除,target有a c d的檔案,則選用(a)選項,那備份後target,則會有 a b c d 這四個檔案,可是若選擇(c),則target 只會有a b c 這三個檔案,選項(d)則是可以source - target 互相備份,選項(e)是用來還原,允許較舊的檔案複寫較新的檔案,每個選項下都會有說明,所以並不會很難懂,此外也支援排程的備份功能,若有這需求的人不妨去試試。

2008年3月10日 星期一

電子琴入手

0 意見

Piano

最近開始學鋼琴,原本想用紙鍵盤,一招半式闖天下,但是發現在練習的時候沒有力回饋及聲音的回饋,就算彈錯的也不知道,所以還是必須要破費買壹台簡單的電子琴,在同事勸敗的情形下,我思考後,發現沒有樂器是不可能把音樂練好,所以早已在Y拍上物色簡易實用的電子琴,可是在下手前,突然靈光一閃,我小姪女好像先前有在學鋼琴,沒錯~~ 又是姐夫,所以上星期我就打電話去詢問,果然不出我所料,電子琴就這樣入手嚕,目前學鋼琴的花費是學費0元,樂器0元,運氣可以說是相當好,接者就是要靠自己不斷的練習啦,不過最後還是要說一句:有姊夫真好~~。

電腦賽車方向盤入手

0 意見

 

Drive

最近入手一個電腦賽車方向盤(當然不是我買的是我的姊夫送我的...  有姊夫真好),雖然這東西已經不是什麼新鮮事,可是拿到的時候還是有一種新鮮感,可能是小時候的欲望被喚醒,從小家裡就沒有電動可以玩,最多也都是自己存了幾百元去買電腦遊戲,從來沒有想過這種東西會出現在我的生命中,雖然當天貼心的姊夫已經準備了幾款遊戲,但我晚上安裝完成後總是無法進入畫面,隔天,我又再試了一次還是不行,後來一問之下,原來這遊戲還需要破解,破解這...  當然不是問題,進入遊戲後,開始試開,方向盤的震動及互動還頗有真實感,讓還是機車族的我,能稍微過過開快車的乾癮,謝啦~~姊夫。

 

Digital Signage 實作及介紹

0 意見

螢幕分割畫面: 通過直覺式操作,定義畫面分割格的大小及定位。

image 

媒體庫畫面: 加入媒體庫資料,分門別類便於管理。

image

播放設定檔設定畫面: 針對每個分割格的節目設置及排程。

image

實際撥放畫面:

image

特色介紹:

  • 支援多種格式:播放格式包括影音檔(MPEG-1/2/4, ASF, RMVB, VOB, AVI, MP3…)、圖片(JPEG, BMP, GIF, PNG…)、Flash (FLV, SWF)、Power Point (PPS)、動態文字及網頁圖片連結。
  • 支援多重窗格:多重分割畫面,由使用者自訂,沒有限制。
  • 支援多螢幕輸出:可透過顯示卡搭配多個螢幕輸出。
  • 簡易的使用者頁面:使用者介面一致化,操作簡易。
  • 穩定度:系統穩定度經過長時間的驗證。
  • 播放紀錄備存:將播放的媒體檔案時間,次數,時段,等相關資訊寫入資料庫備查。

2008年3月7日 星期五

Mr.Brown 內湖店 (基湖店)

0 意見

  MrBrown 

自從購入小黑(IBM-T42),就常常到處去各咖啡廳享受外出的氣息,因為能看看外面的街景,又能專心做自己想做的事,但是有全台市比較免費無限上網的地點並不多,Mr. Brown是比較有名的,然而先前已經去過中山二店,發現上網的感覺還不錯,但是插作都是兩孔的為主,上次能剛好找到ㄧ個三孔的的也是運氣相當好,而這次我來到Mr.Brown 內湖店 (基湖店),發現這一家有點小,且提供插座的位置,都是圓桌為主,且有點小,讓我對這裡有些不是十分滿意,不過,從圖中可以看到如果右側的沙發座位上要是有插座,那不知道該有多好,在詢問店員後,店員說:不好意思,右側沙發座並無提供插座,當下覺得很可惜,雖然這裡小,但是來的人也不多,顯得鬧中取靜的感覺也是很棒,但身為學理工的我,在未經我求證下說沒有插座,並未讓我採信,因為在大樓施工的過程中強編通常會預留插座,所以在店員不注意的時候,將沙發推開看牆壁的縫隙,發現... 是有插座的(但是是裸裝的,就是沒有蓋板的插座),但別高興的太早,有插座不一定有電,且又是兩孔的插座,這次我當然準備好三轉二的插座且心中盤算插座有電的機率室80%以上,果不出奇所然,有電~~,太棒了,這次經驗讓我又再一次證明,當直覺告訴自己,偶而要順從自己的直覺,旁人的說明不一定完全正確,就算他是店員,也不一定正確。

2008年3月4日 星期二

Tasty 西堤-南京店

0 意見

        去西堤吃東西對我已經不是啥新鮮事,不過這一次是跟家人一起去聚餐,所以還蠻難得的,所以想說把吃的感覺寫下來,第一次到西堤的時候,是我在研一的時候,那時候覺得這一頓飯要500~600元實在有些貴,身為一位讀書人實在是有傷到口袋深度,現在就覺得還OK(可能我也習慣台北的物價),廢話不多說,去吃西堤的人應該都知道這是吃排餐的吧,就是一道一道一直上(開胃菜->前菜->莎拉->湯->主菜->甜點->飲料),除了開胃菜大家都一樣,其他的都可以自己選擇,下圖雖然是我這次點的菜單,不過幾乎西堤的餐點我都品嚐過,可能也是因為連鎖店的關係吧,似乎換菜單頻率不高,接下來,就是我的美食評鑑...

開胃菜(鮮蝦蘆筍): 如果有去的人都吃的到,我就不贅述,特別的是醬料部分,感覺味道濃而不膩。

前菜(焗烤磨菇+麵包):分開來說都還有一定水準,吃法是建議麵包沾磨菇醬,吃起來不錯吃,不過讓我有想起吃我家牛排用麵包去沾玉米濃湯,雖然質感上西堤絕對是略勝一籌,但似乎不是很特別,且味道也部份也有些許類似。

Antipasto    

沙拉(鮮蝦沙拉):沙拉底座部份是用馬鈴薯泥來堆積的,不過馬鈴薯泥裡還有夾雜馬鈴薯塊及花枝塊,想必這是要增加口感及咬勁,所以吃起來的口感不至於像吃馬鈴薯泥一樣單調,至於蝦子,就一般沒有什麼特別的,而另外的水果沙拉,重點也是他的醬料,酸酸甜甜的(酸的部份比較偏重),不過怕吃酸的我,吃下後卻發現他的味道很清爽,很快就褪去,在口中逗留的時間不久,所以也不不會覺得膩,相當不錯。

Salad

湯(海鮮湯):其實在點這道菜時有些後悔,因為上一道才吃海鮮沙拉,這樣吃的東西就有重疊(個人喜歡什麼都嚐一些些),不過湯的選項裡又沒啥我想選的,所以就不小心點了這個,但是後來有偷喝家人的南瓜濃湯(官網上並沒有此道菜),我覺得南瓜濃湯似乎略勝我ㄧ籌,喝起來的感覺有點像玉米濃湯,不過有南瓜,所以味覺的豐富程度優於玉米濃湯,南瓜的相甜融入湯中,與奶油的香味相輔相成,所以喜歡喝玉米濃湯的人建議點選這一道。

  Soup   

主菜(酥烤牛排):這部份比較看個人的偏好,雖然我個人認為來西堤就要吃牛排,但這見仁見智,他的煮菜我幾乎都有嚐試過,但我最後還是覺得牛肉好吃,至於酥烤牛排口感上是屬於比較嫩的,所以我選擇他(本人喜歡吃軟不吃硬),如果不吃牛肉的人建議可以選擇肋排,淋上檸檬汁的豬肋排,也不錯,其他部份,因為我個人偏好程度不高,就不多說嚕。

   Main

甜點(巧克力袋冰淇淋):不用考慮就選這道就對了,法式三風味 香榭奶酪都不是對手,不信你就點點看,在跟朋友互換吃,你就知道我說的是中肯的,連我家人也是這樣認為的。

 Cake

 

附註:素食菜單,網頁及餐廳都沒有提供圖片資訊(我只能說去西堤強烈不建議點選素食套餐,因為菜色感覺不是很突出,且西堤本來就不是要賣素的,只是提供一個方便,讓朋友或家人中有素食者也能同時在西堤進餐。選擇素食套餐,沒有菜色可以選擇,能選擇的部份只有飲料,其他的都是預設的。以下是實圖(有漏了一些但大致上是這樣)。

素食

第一次接觸鋼琴

0 意見

 

Piano

 

       小時候,家裡並不會重視我的才藝,我小時候也不懂才藝是什麼,能當飯吃嗎? 好玩嗎? 有什麼好處? 所以小時候唯一的才藝就是把學校的書給念好,聽爸媽的話這就是我最好的才藝,但漸漸長大之後,發現自己除了書本上所教導的知識有些似懂非懂,其他的似乎一概都不是很明白,舉凡琴棋書畫樣樣不精通,還記得小時候在高中以前,我的工藝課在班上都是屬一屬二的,回頭想想是在工藝課時,不管什麼作品都很專心去完成,但有時看到別班同學的作品就知道本身的創意度還是有待加強,但我很喜歡作品歷經的過程,因為最後是可以獲得別人的肯定,直到現在漸漸要步入三十而立,發現自己會的才藝真的很少,雖然當別人在彈吉他把妹的時候,每次都會暗自期許我也要學,但種種原因,很快的我就遺忘了~~ 所以才藝部分還是一事無成。

最近,我似乎再彌補過往的一些遺憾,物質部份,精神部份,由於我對物質的慾望並不是很高漲,所以這部份很快就短暫的滿足我,但精神部份,似乎想要填滿幼時沒有擁有的,雖然現在學這些對我的工作 事業 愛情 沒有幫助,但是想學一個東西並不要都要有實質的報酬,再加上有朋友願意教我,我更該努力學習,而我第一首要學習的歌- 背叛,其實我對學啥沒有太大的意見,短期目標是要完整的將一首歌按照心中的旋律彈出。

        昨日,朋友幫我將背叛的簡譜寫好,當我看到四分音符,回想到我國中 國小在音樂教室的情景,我發現我從小似乎對音樂就沒有啥天份,也或許是我沒有認真看待過,昨天他從基礎到不行的樂理開始敎我,我發現我如果要將一首歌談好,可能還有一段不短的路要走,但是我相信我可以完成這個挑戰。

手機管理軟體-玩轉手機

0 意見

mobTime

最近我的手機(K750i)裡的簡訊已經快要滿出來了,可是有些簡訊我又不想刪除,那意思就是希望-簡訊能備份在電腦裡,之前有幫別人稍微用過,但是要買額外的傳輸線,阮囊羞澀的我,當然不把這個列為第一個解決方案,於是在網路上找到解決方法,這個軟體叫做-玩轉手機,它個功能跟介面可以說是還不差,尤其是看它支援的手機更是讓我覺得嚇一朓,當然有Sony Ericsson  NOKIA Motorola 及 Samsung,但我不知道每個連線上是不是都沒問題,這可能需要有實機的鄉民才有辦法測試,但是我的小K是沒問題的,讓我覺得他這套軟體很貼心,至於相關使用及說明,網路上已經有人說明的很詳細,我這邊也不需贅述。

有需要的人可以參考 連結如下:http://blog.xuite.net/tim13/vampire/4778066

此外若有鄉民測試連線成功的手機也回報一下,謝嚕。