Friday, June 22, 2012

[QML] Detect mouse hover to change hover effect on ListView item

How can we do it ?

There are lots of trick to achieve this goal :
First, we use the onEntered, onExited signal of MouseArea to change the hover's opacity :

ListView {
    id: viewer
    width: 100
    height: 300
    model: 10
    delegate : viewerDelegate
}

Component {
   id: viewerDelegate
   Item {
      width: 100
      height: 30
     
      Rectangle {
         id: hoverFocusLightRect
         anchors.fill: parent
         color: "#lalala"
         opacity: 0
      }
     
      MouseArea {
            anchors.fill: parent
            hoverEnabled: true
            onEntered: {
                hoverFocusLightRect.opacity = 0.6;
            }
            onExited: {
                hoverFocusLightRect.opacity = 0;
            }
      }

      Text {
         anchors.fill: parent
         verticalAlignment: Text.AlignVCenter
         horizontalAlignment: Text.AlignHCenter
         text: index
      }
   }
}

Second, we use onPositionChanged instead of onEntered :

MouseArea {
            anchors.fill: parent
            hoverEnabled: true
            onPositionChanged: {
                hoverFocusLightRect.opacity = 0.6;
            }
            onExited: {
                hoverFocusLightRect.opacity = 0;
            }
      }

Both of these are ok, but if we press on one item , and leave the click on the other one, the onExited signal on pressed item won't be trigger, so the hover won't disappear.

The better method is to just use one boolean variant to enabled the hover effect :

ListView {
    id: viewer
    property bool enabledHover: false
    width: 100
    height: 300
    model: 10
    delegate : viewerDelegate
}

Component {
   id: viewerDelegate
   Item {
      width: 100
      height: 30
     
      Rectangle {
         id: hoverFocusLightRect
         anchors.fill: parent
         color: "#lalala"
         opacity: viewer.enabledHover ? 0.6 : 0
      }
     
      MouseArea {
            anchors.fill: parent
            hoverEnabled: true
            onPositionChanged: {                          (or onEntered)
                    viewer.enabledHover = true;
            }
      }

      Text {
         anchors.fill: parent
         verticalAlignment: Text.AlignVCenter
         horizontalAlignment: Text.AlignHCenter
         text: index
      }
   }
}

So the hover effect will display correctly, and the weird thing that show more than one hover will be disappear.

Build NSS & NSPR

1. 首先 download mozilla-build 並執行安裝 exe
2. 點選安裝目錄下 (C:\mozilla-build) 的 start-msvc9.bat
3. Download NSS (Network Security Services) src 與 NSPR (Netscape Portable Runtime) library :
a. Latest release for nss with nspr : https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/
b. NSS release note : http://www.mozilla.org/projects/security/pki/nss/release_notes.html
c. Build instruction : 你可以利用 CVS (Concurrent Versioning System)來 download nss 與 nspr 的 src 與 library, 並且按照 instruction 來 build nss, 不過用上面說的 gmake 來 compiler 需要先下載 gmake, 但有嘗試用 gmake 來 build 但會有些 c file 無法 include 到其需要的 header path, 所以可以用 make build, 這樣就可以成功了
1) export CVSROOT=":pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot"
2) cvs login
3) 看你要 donwload 哪一版的 version 打上
cvs co -r NSPR_X_X_X_RTM NSPR
cvs co -r NSS_X_X_X_RTM NSS

另外一個比較清楚的安裝與 build 的步驟如下
1. 將 nss 與 nspr 的 zip 解壓所到 c:\Temp 下
2. 點選 start-msvc9.bat
3. 打上 export OS_TARGET="WINNT"
4. 打上 export BUILD_OPT="1"
5. 打上 export HOME="/c/Temp" (or another folder with read / write access)
6. 改面目錄位置到 /c/Temp/nss-3.x.x/mozilla/security/nss
7. 打上 make nss_build_all
8. 大約等上幾分鐘後, 你 build 出來的目路會放在 C:\Temp\nss-3.x.x\mozilla\dist\WINNT5.1_OPT.OBJ\bin 下

Reference : http://support.mozilla.com/en-US/questions/687296#answer-112220


Wednesday, June 08, 2011

VeriSign issue on Firefox



這是幫其他家公司的 certificate 為 Firefox 的 xpi 做 sign 的動作時發生的一個問題

原因出在這個 certificate 的 primary authority 的等級太高, 為 G5















左邊的是新的certificate , 看到他 VeriSign Primary Certification authority 的等級為 G5

右邊是我們公司的 certificate

而這個影響到我們要為 xpi 做簽章的動作,

當我們利用 xxx.pfx 做出 sign xpi 所需要的 db 檔後,

Sign 完後的 xpi , 經由 Firefox 安裝後會出現 -206 的錯誤

經由古歌大師的開導, 這個等級的 primary certification 在 Firefox 中, 預設是不讓 developer 所使用的

如下圖

所以如果將第三個選項打勾, 則用此等級的 certificate sign 過的 xpi 就可以安裝成功

結論 :

請 ODM 廠商給一個能讓 Firefox 通過的 certificate 吧~

因為我們無法要求使用者在安裝我們 Plugin 前去勾選這個選項, 讓我們能夠正確的安裝~

Reference : http://www.ivan-site.com/2010/11/signing-an-xpi-using-a-verisign-code-signing-certificate/

ps. 上面 reference 有題到我們可以將 G5 的 primary certification 上面再包一層不是此等級的 certification, 但是不知道怎麼做, 而且萬一破壞了ODM 的 certificate , 到時後翻臉不認帳, 得不償失阿~

Wednesday, April 28, 2010

Win 7 更換序號

1. 用"以系統管理員身分執行" 打開 cmd 程式
2. 輸入 "slmgr.vbs -ipk "
3. 完後要 active window, 輸入 "slmgr.vbs -ato"

之後可用 slmgr.vbs /dli 查看是否有更換成功 (會顯示序號的某一部份)

Wednesday, March 24, 2010

XMLHttpRequest status == 0 ?

這是我在測試一個簡單的 Ajax 的 sample 測試出來的..

function RequstSend()
{
var XmlHttp = new XMLHttpRequst();

var url = "Test.cgi";
XmlHttp.open('GET', url, true);
XmlHttp.send(null);
XmlHttp.onreadystatechange = function() {
if (XmlHttp.readyState == 4)
{
if (XmlHttp.status == 200)
{
alert(XmlHttp.responseText);
}
}
};
}

在 XmlHttp.status 預期成功的話會收到 200 OK 的訊息, 而 XmlHttp.responseText 會收到 Server 傳過來的內容.
但是幾次的測試下, 發現 status 都回傳 "0", 而且 responseText 內容都是空的,
而用 firebug 查看了一下 XmlHttp 的 statusText property, 結果又是顯示 "OK" 的字樣
想說都已經 OK 了, 怎麼 status 不是預期的 200, 而內容又為何會空的呢 ?

後來我想是不是我連結 page 與我去 request 的 page (test.cgi) 所在的角色並不同呢 ?
結果就發現..因為我連結測試網頁, 在 browser 上所顯示的 url 是以檔案路徑的方式去拿取 (ex: file:///D:/www/index.html) 而對於 request 的 page 來說像是去要另外一個 server 上的 file 一樣.

所以若是 url = "http://youraddress/test.cgi" 所得到的 status == 0 , responseText 為空的; 若是 url = "test.cgi" 所得到的 status == 0, responseText 為整個檔案內容, 而不是我們預期出現的 response 內容.

所以我們若是連結我們的 page , 以 http://youraddress/index.html , 而 test.cgi 放置與 index.html 放置同一個 directory, 則以 http request 回來的 status 就是 200 OK, 而內容也是我們預期 server 回應的內容了.

Reference link : Using XMLHttpRequest

IIS7 + CGI , 讓cig程式執行

再上一篇有教學如何在 win7 中, 將 IIS 與 php 配合使用
而這裡要介紹如何將 cgi 程式能夠在 windows 上的 web server 作用..

首先你先要裝 ActivePerl

然後再 IIS server manager 的中間的功能檢視, 選擇 "處理常式對應"

在右邊選擇 "新增指令對應", 並鍵入

要求路徑 : *.cgi

執行檔 : C:\Perl\bin\perl.exe "%s" %s

名稱 : (自行取)

要求限制中的指令動詞 : GET,HEAD,POST

確認後會跳出, 是否允許ISAPI擴充成式 ?.... 按下"是"

接這就寫一個簡單的 cgi 程式來測試一下是否行

Link : cgi 範例程式

Tuesday, March 23, 2010

解決 IIS 7 + php in win 7 中, 設定 "處理常式對應" 的錯誤

網路上很多教學如何設定你的 web server :

IIS7 + ASP + PHP 安裝指南,Vista x32 版 2009/02 update
Doc : MigratingPHPApplicationstoIIS7


其中一步要設定指令碼 php5isapi.dll 路徑,

然而在 win 7 中, 路徑並沒有像在 xp 一樣點選站台右鍵內容, 在主選單中的 "應用程式設定" 中設定, 而是在功能檢式中的 "處理常式對應" , 再點選右鍵, 選擇 "新增指令碼對應" 設定

但是當我要點選 "處理常式對應" 此設定的時候, 會發生一個問題

如下圖所式 : 後來在網路上查了一下...

預設 handlers 的 overrideModeDefault 是 "Deny" 的

所以, 首先你要先找到 applicationHost.config 的位置 (在 "執行" 打上 "%windir%\system32\inetsrv\config\"), 然後更改檔案中,
<section name="handlers" overridemodedefault="Deny"> </section>
overrideModeDefault 的值 deny 改為 Allow, 然後就可以點選應用常式處理來作設定的動作了..

Saturday, March 06, 2010

將 source code 貼在你的 blog 上 - SyntaxHighliger 2.1

使用 Syntaxhighlighter 來將你的 source code 以整齊, 且有行號的方式來貼在你的 blog 上
ex :

<script type="text/javascript">
var test;
funciton foo()
{
alert('Hello world!');
}
</script>

目前版本 2.1

其實就是將 SyntaxHighlighter 所提供的 script 與 css 加入 blog 架構中

可以參照 SyntaxHighlighter/Usage

目前有支援到的 code 有這些 : SyntaxHighlighter/Brushes

而所需要的 script 和 css 檔案可以參照官網上的 ftp 檔案
ex :

<script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js" />

src 位置就是目前最新版本的 file

這邊有幾個蠻詳細的網站, 講的蠻詳細, 因此我就不需要再多解釋了
SyntaxHighlighter出2.1版了
在 Blogger 中插入美觀的程式碼 ~ 使用syntaxhighlighter 2.0 實戰

當然官網也可以逛一逛瞜..
SyntaxHighlighter

幾個需要注意的地方是...
在以

<pre class="brush:your_language">
... your content
</pre>

包起來的內容中,如果有需要以 tag 的方式呈現, 則你的左括號 "<" 需要以編碼的方式呈現 (&lt;), 右括號 ">" 就不需要, 不過要一起編碼也可以 (&gt;)

Thursday, March 04, 2010

[Javascript] call function

在javascript 中若要使用 var.foo() 的方式 call var 的 foo()
則可以這樣寫 :

Friday, January 29, 2010

Aptanan 使用心得

在用 Aptana 來撰寫 javascript
用 Firefox 開啟 sample 時, firebug 會出現一些 exception 如下...

[Exception... "'JavaScript component does not have a method named: "onLocationChange"' when calling method: [nsIWebProgressListener::onLocationChange]" nsresult: "0x80570030 (NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED)" location: "JS frame :: file:///C:/Users/jack.yang/AppData/Roaming/Mozilla/Firefox/Profiles/y7waiq2b.default/extensions/firebug@software.joehewitt.com/components/firebug-channel-listener.js :: anonymous :: line 198" data: no]

[Exception... "'JavaScript component does not have a method named: "onLocationChange"' when calling method: [nsIWebProgressListener::onLocationChange]" nsresult: "0x80570030 (NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED)" location: "JS frame :: file:///C:/Program%20Files/Mozilla%20Firefox/components/nsSessionStore.js :: sss_observe :: line 320" data: no]

[Exception... "'JavaScript component does not have a method named: "onLocationChange"' when calling method: [nsIWebProgressListener::onLocationChange]" nsresult: "0x80570030 (NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED)" location: "" data: no]

而在網路上有人提供解決方案...

這是在 firefox add-ons 裡有裝 flashGot 這個 extension.

將他 disable 就不會有 exception message 出現了

Friday, November 27, 2009

Window explorer context menu

你想要在電腦按右鍵之後的 menu 選單出現你想要的軟體, 來打開你的檔案嗎 ?

你可以這麼做...

1.Open the registry ("執行"-> regedit)
2.到此路徑 [HKEY_CLASSES_ROOT\*\shell]
3.在 shell 中, 新增一個機碼, 此資料夾名稱為你想要在 menu 上出現的名稱
ex: Open AAA
4.在 Open AAA 下再新增一個機碼, 此資料夾名稱為 "command"
5.在 command 中有一個"(預設值)"的字串, double click, 並輸入你的數值資料,
輸入的內容為你的軟體exe檔的位置
ex: "C:\Program Files\ABC\AAA.exe" "%1"

這樣就完成了!!

這裡附上一個圖示範例



另外你也可以寫一個 .reg 檔, 來自動完成上面的動作

Write.reg
-----------------------------------------------
REGEDIT4
[HKEY_CLASSES_ROOT\*\shell\Open AAA]
[HKEY_CLASSES_ROOT\*\shell\Open AAA\command]
@="\"C:\\Program Files\\ABC\\AAA.exe\" %1"

如果想要移除, 也可以寫的 .reg 來自動移除

Remove.reg
-----------------------------------------------
REGEDIT4
[-HKEY_CLASSES_ROOT\*\shell\Open AAA]

Wednesday, November 25, 2009

Windows environment variable

* %ALLUSERSPROFILE%:All Users設定檔的資料夾位置。
* %APPDATA%:目前使用者的Application Data資料夾位置。
* %CD%:目前的工作資料夾。
* %CLIENTNAME%:目前使用者的NETBIOS電腦名稱。
* %CMDCMDLINE%:處理目前命令提示字元視窗命令的cmd.exe的完整路徑。
* %CMDEXTVERSION%:目前Command Processor Extensions的版本。
* %CommonProgramFiles%:Common Files資料夾的路徑。
* %COMPUTERNAME%:電腦名稱。
* %COMSPEC%::命令提示字元視窗的解譯程式路徑,通常與%CMDCMDLINE%相同。
* %DATE%:目前的系統日期。
* %ERRORLEVEL%:最近執行過的命令的錯誤碼;非零的值表示發生過的錯誤碼。
* %HomeDrive%:使用者目錄的磁碟機。
* %HomePath%:使用者家目錄。

source : http://www.blogger.com/post-create.g?blogID=29967203
* %HOMESHARE%:目前使用者共用資料夾的網路路徑。
* %LOGONSEVER%:目前使用者所登入的網路控制器名稱。
* %NUMBER_OF_PROCESSORS%:電腦的處理器數量。
* %OS%:作業系統名稱,其值固定為Windows_NT。
* %Path%:執行檔的搜尋路徑。
* %PATHEXT%:作業系統是為執行檔的副檔名。
* %PROCESSOR_ARCHITECTURE%:處理器的架構名稱,例如x86。
* %PROCESSOR_IDENTFIER%:說明處理器的文字(不一定會有此環境變數)。
* %PROCESSOR_LEVEL%:處理器的model number。
* %PROCESSOR_REVISION%:處理器的revision number。
* %ProgramFiles%:應用程式目錄,預設是C:\Program Files。
* %PROMPT%:目前解譯程式的命令提示字串。
* %RANDOM%:顯示0到32767之間的十進位整數亂數。
* %SESSIONNAME%:連上終端伺服器的session names。
* %SystemDrive%:系統磁碟機,預設是C:。
* %SystemRoot%:系統根目錄,預設是C:\WINNT或C:\WINDOWS。
* %SystemDirectory%:系統目錄,預設是C:\WINNT\System32或C:\WINDOWS\System32。
* %Temp%、%Tmp%:暫存檔目錄。
* %TIME%:目前的系統時間。
* %UserDomain%:包含使用者帳號的網域名稱,或者電腦名稱。
* %UserName%:使用者帳號名稱。
* %USERPROFILE%:目前使用者的設定檔路徑。
* %WinDir%:Windows目錄,預設是C:\WINNT或C:\WINDOWS。

Wednesday, May 27, 2009

soft power 軟實力

在 [幽默一定強] 一書提到...

所謂 "軟實力" 指一國以制度上,文化上,政策上的優越性或道德性,展現其吸引力;也泛指他人願意購買,稱許,學習,仿效的文化,組織,機制,產品...等。

Wednesday, April 01, 2009

BSTR簡介和內部結構

[轉載] BSTR詳解一 - BSTR簡介和內部結構
COM是一種跨編程語言的平台,需要提供語言無關的數據類型。多數編程語言有自己的字符串表示。
  • C++ 字符串是以0結束的ASCIIUnicode字符數組
  • Visual Basic字符串是一個ASCII字符數組加上表示長度的前綴。
  • Java字符串是以0結束的Unicode字符數組。
需要定義一種通用的字符串類型,可以很容易的匹配到不同編程語言。C++中,就是BSTR
2.1 BSTR 簡介
"Basic STRing"的簡稱,微軟在COM/OLE中定義的標準字符串數據類型。對於C++Windows頭文件wtypes.h中定義如下:
typedef wchar_t WCHAR;
typedef WCHAR OLECHAR;
typedef OLECHAR __RPC_FAR *BSTR;;
2.2 BSTR實現
COM中,字符用16-bit OLECHAR表示,這樣使COM可以支持各種code pages,包括Unicode。對於windows系統,可以簡單理解為OLECHAR使用的就是Unicode OLECHAR串與單字節字符串很類似,是一個以null結尾的buffer。唯一的區別是每個字符佔兩個字節,而不是一個
0 1 2 3 4 5 6 7 8 9 0 1
| H | E | L | L | O | \0|
^
OLCHAR
Figure 1. Format of an OLECHAR string.
使用以Null結尾的簡單字符串在COM component間傳遞不太方便。因此,標準BSTR是一個有長度前綴和null結束符的OLECHAR數組。BSTR的前4字節是一個表示字符串長度的前綴。BSTR長度域的值是字符串的字節數,並且不包括0結束符。由於是Unicode串,所以字符數是字節數的一半。這種方式的優點是允許程序員在BSTR串中間嵌入NULL字符。但是,BSTR的前四個字節表示長度,而OLECHAR數組的前四字節表示前兩個字符。這種情況下,對於C++程序,如何實現BSTROLECHAR的交換?答案是COM提供了兩個BSTR分配用的APISysAllocString / SysReallocString。函數返回的指針指向BSTR的第一個字符,而不是BSTR在內存的第一個字節。
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
0a000000 | H | E | L | L | O | \0|
^
BSTR
Figure 2. Format of a BSTR.
下面是SysAllocStringSysFreeString的偽代碼。
BSTR SimpleSysAllocString( const OLECHAR * sz)
{
if ( sz == NULL) return NULL;
BYTE* buf = new BYTE[sizeof(INT32) + (wcslen(sz)+1)*sizeof(OLECHAR) ];
if(buf == NULL)
{
return NULL;
}
else
{
INT32 len = wcslen(sz) * sizeof(OLECHAR);
*((INT32*) buf) = len;
wcscpy( (WCHAR*)(buf+sizeof(INT32)), sz);
return (BSTR)(buf+sizeof(INT32));
}
}
VOID SimpleSysFreeString( BSTR bstr)
{
if(bstr != NULL)
{
BYTE* start = (BYTE*)bstr - sizeof(INT32);
delete []start;
}
}

Tuesday, March 31, 2009

Convert between 'CString' and 'std::string'

source : How to convert between 'CString' and 'std::string'?

'std::string' to 'CString':

std::string s("Hello");
CString cs(s.c_str());



'CString' to 'std::string':

CString cs ("Hello");

// Convert a TCHAR string to a LPCSTR

CT2CA pszConvertedAnsiString (cs);

// construct a std::string using the LPCSTR input

std::string strStd (pszConvertedAnsiString);



std::string cannot always construct from a LPCTSTR i.e. the code will fail for UNICODE builds.

As std::string can construct only from LPSTR / LPCSTR, a programmer who uses VC++ 7.x or better can utilize conversion classes such as CT2CA as an intermediary.

Monday, January 19, 2009

MSN Errors debug

Recently, my MSN didn't get on line, and the error message code shows 81000306.

So, I check up from search page, and find out some resolutions to compete it.

1. error code 81000306 This one tells us to wait for couple minutes and it did works, though it's not suitable for impatient person. : (

2. MSN Errors I found an interesting blog for debugging the MSN errors. ( This solution seems didn't work on this problem >"<, but there are some trick to solve others. )

So check these out..~

Saturday, January 10, 2009

Dreamer : inspired from true story

It's so cold in today's morning...
When I wake up by the shining sun though in my dorm, I do some regular exercises on usual and because today is Sunday, so I also clean up my room to keep it neat.

So when I do all the thing in the morning, and I turn on the TV to watch my favorite channel, ESPN, to see what some games I like is undergoing. Today's NBA game is Nicker vs. Rocket, I'm not interesting. So I change the channel to movies, and look up some pretty good movie stories from Star Movies, though I don't like they have too much ads between the movie play.

And I see the good one, Dreamer: inspired from true story . I think I will like this story material , because I think the true story have its reality and it did have happened before that will inspire everyone to find some good enlightenment. These kind of movies always touch my heart to look to the positive way. I think this one did and I recommend you to see it.

Monday, July 28, 2008

Typhoon Fung Wong

Last one day,the typhoon which brings a large rain and wild wind came to Taiwan. Since the last typhoon Kalmaegi had damaged the southern Taiwan, this "Fung-Wong" didn't bring too much rain. This typhoon,however, get a great influence on whole area due to the its semi-diameter cover Taiwan.
My serving place also have policy to deal this situation. We closed the water gate to prevent the water rise sharply. Using the wooden-blocker to put in front of the glasses auto-door. We also get the potted plants inside to avoid them blow away. Nevertheless, I saw a pig tree was pulled out on our back garden,laying on the ground with roots exposed.
Everything we do is to hope that bad thing will not happen to us. Hope all these elders here will peace to get over this typhoon.

Friday, June 20, 2008

Collectable booklist website

aNobii

    Recently I surfed the Internet and saw this website incidentally. I thought it is really great for me. One reason because I do love reading and really want a place to help me keep these books I have read. The place that I give me returns for this book and write some comments. Another is I want to share my thought with everyone after I finish this book.


This a great site. I recommend to you.

Sunday, May 04, 2008

仁濟春酒晚會

剛近來安老所這個大家庭,第一次參與所內的活動就是參加新春年後的春酒晚會。這是與仁濟這個「大家族」一起所舉辦的晚會活動,有來自仁濟總院的老長官們,還有台北仁濟院附設醫院的同仁,以及新莊仁濟療養院的員工,當然還有我們仁濟院附設仁濟安老所的員工以及我們替代役。第一次見到其他單位的人,比起安老所的人數,我們真的算是小小地一群。雖然如此,但是我們的聲音可不小,在晚會中,我們的啦啦隊呼可是讓在場的每個人都為之一亮。而這次的晚會,特別的是每個單位都需要表演至少一個節目出來,而我們則是最後一個表演的節目,不曉得是不是因為把我們的節目當做壓軸。
在晚會中,我看到了其他單位的表演,有表演勁歌熱舞的,也有表演魔術的,還有一位同仁表演日本舞蹈,真是五花八門、精彩絕倫,也讓我覺得仁濟這裡真是人才濟濟。還是大家為了獎金而替別賣命呢?不過這也讓我這個頭一次參加春酒的人見識到大家一起同樂的熱鬧氣氛。
我們安老所的表演,選擇的是伴著音樂的旋律與歌詞的意境,搭配著肢體的表演,所呈現出來的舞蹈,姑且稱做為創意的民族舞蹈。這是我們利用平常午休的時間還有下班的時間,所練習而成的「月圓花好」。雖然只是短短的三四分鐘的表演,我們團員們可是卯足了勁要討好我們的長官們。有人提議要拋媚眼,也有人想要飛「娥」撲長官的,各式各樣的花招,不外乎是想要為我們團員爭取個好獎金。
當然,我自己本身也有參加表演,對於面對一兩百多人的演出,雖然以前也是有過經驗,但是這次不太一樣。主要是,表演的內容是我不擅長的跳舞,而且又是這麼彆扭的舞蹈,讓我在表演時都一直漲紅著臉在演出。不過也因為這個表演,讓我與安老所的阿姨們和替代役的學長相處也更融洽了。
雖然說這次的晚會節目,我們是最後一個出場表演的,不過大家還是很賣力地,展現自己平常練習的成果。而我則是害羞地一直笑開著嘴,也不管表演的怎麼樣,只希望自己的演出,大家不要因為是最後一個節目,而失去耐心去看這個表演了。
晚會中也有很多的抽獎活動,我們安老所的人也有蠻多人得獎的,雖然說自己連一個小獎都沒有,這是美中不足的地方,但也見識到長官們加碼獎金毫不手軟的場景。最後,大家也都在歡樂中享受了美好的一晚,我們也吃的盡興,玩得盡興,度過了愉快的春酒晚會。在安老所還有三百多個日子,或許能仍會再碰到類似的活動而需要參與表演,我希望每一次的參與都是有趣愉快的,也相信這會是當兵日子的難忘回憶。