從核反應式看E=MC2

最近有學生問到:課本用愛因斯坦的質能互換理論解釋為什麼核反應可以產生巨大的能量,但從鈾-235的核分裂反應式卻看不出來反應前後質量有任何變化,因為反應式中反應前後質子數總和與中子數總和並沒有減少,既然質子數沒有減少,反應式中亦無電荷數變化,可見電子數也沒有減少,那麼鈾-235的核分裂反應減少的究竟是那一部分的質量?

U-235核分裂反應式  clip_image002 

這個問題在中學課本中僅是告訴學生:核反應不遵守一般化學反應必須遵守的質量守恆定律,核分裂或核融合反應之後總質量會減少,減少的質量轉變成能量釋放出來,至於減少的是那一部分的質量,大都帶過不談。

要探討這個問題,我們應該按照U-235核分裂反應式實際算算看,  是不是真的質量有改變。要計算之前我們先把一些基本的先備知識準備好。

首先原子質量常用的單位是amu(atomic mass unit),1961年IUPAC以C-12為標準,1個C-12原子質量=12amu

clip_image002[10]

從網路資料查到以amu為單位的反應式中各元素原子質量值(資料來源http://www.wolframalpha.com)

U-235的原子質量為235.043929918(amu)

換算成kg為單位 =clip_image002[12]kg

Ba-144的原子質量為143.922952853(amu)

換算成kg為單位 =clip_image002[18]kg

Kr-89的原子質量為88.917630581(amu)

換算成kg為單位 =clip_image002[16]kg

1個中子的質量clip_image002[6]

反應物總質量(U-235 + 1 neutron)-產物總質量(Ba-144 + Kr-89 + 3 neutrons) = clip_image002[20]kg

反應後質量的確有減少,這減少的部分究竟是從何而來?

待續…

利用Word功能變數設計引導式教學事務文件(二)(建立類似複寫紙功能的自動化文件)

最近有網友問到如何在WORD中產生類似複寫紙功能的文件,也就是只要輸入一次內容可以在文件的特定文字重複產生相同的內容,如同我們手寫收據在底下墊一張複寫紙一般。

這樣的功能我在幾年前幫本校會計室設計了一個具有類似功能的文件範本,有興趣研究的網友可以至此網址下載:http://163.20.144.18/main9/accountingtable/演講鐘點費收據.dot ,下載時請另存新檔並將副檔名改為.dot,因為這是一個word的範本檔案,但是不知道為什麼在下載時會被改副檔名為.doc

image

這個檔案是作為產生來本校演講的講師鐘點費領據證明,使用的方法很簡單,只要在這個檔案用滑鼠左鍵按兩下,word程式(2003以上的版本)便會依據這個範本檔案建立一個新的檔案,因為這個檔案我有設計了功能變數在其中,所以會產生一連串導引使用者填入關鍵文字的對話框。如下

1.引導輸入單位名稱:預設是本校的全名

image

2.引導輸入費用名稱:預設值是講師鐘點費

image

3.引導輸入領據的日期:利用功能變數產生預設的日期為文件建立的當日

 image

4.填完三個引導內容便完成文件如下圖

image

看到這裡讀者應該可以發現一個現象,我們只填一次導引內容可是在文件中,卻發現我們所填的資料出現在上下聯相對的位置,這如同複寫一般的功能是如何做到的?

如果對功能變數操作不熟悉的讀者,請回顧利用Word功能變數設計引導式教學事務文件(一) 這篇文章有一些基本的介紹,其實這個功能只是在FILLIN這個功能變數的應用進行變化,再加然後加上 SET 與 REF 這兩個功能變數進行一些組合變化而已。

讀者在產生的文件中同時按alt + f9 便可將文件中的功能變數呈現出來。

image

簡單解釋這串功能變數所代表之含意:

SET SCHOOLNAME 這句如同我們寫程式時宣告一個變數一樣,這個變數名稱為SCHOOLNAME,在SCHOOLNAME之後要空一格之後代表我們指定給SCHOOLNAME這個變數的值,我們只要再加上一個FILLIN的功能變數組合 { FILLIN 輸入單位名稱 \d 台北縣立清水高級中學 \* MERGEFORMAT } 這句是引導使用者輸入單位名稱,使用者輸入單位名稱的文字便指定給SCHOOLNAME 這個變數。

但是這只是將單位名稱指定給SCHOOLNAME這個變數,並不會呈現在文件中,我們還必須利用 { REF SCHOOLNAME \*MERGEFORMAT  } 這段功能變數才能將SCHOOLNAME的值,呈現在文件中特定位置。REF功能變數類似參考或引用,所以我們只要在文件中任何位置放入{ REF SCHOOLNAME \*MERGEFORMAT  } 這功能變數,都可能把使用者所填入之單位名稱秀出來。複寫的功能即是如此產生的。

ExcelMail3.0群組寄信軟體介紹(四):寫一封中式直書的邀請卡給老同學

電腦是洋人發明的洋玩意,所以一些設計都是按照洋人的使用習慣去設計,例如文字輸入排版都是橫書為主,所以早期要建立中式直書的電子文書並不容易,許多廠商努力去開發一些符合我們輸寫習慣的文字編輯軟體,結果在前任政府以資訊化及世界接軌為由,規定將政府的公文書改為橫式輸寫,英文公文給老外看依西方的書寫習慣理所當然,但中文的公文是給本國人看,為什麼要用西方人的輸寫方式?在我看來是有一點可惜,其實經過這麼多年軟體開發者的努力,現在建立直書文件這些資訊技術並不難,政府為了屈就於資訊技術而捨棄自己原有文化的獨特性,其實非常可惜,直式書寫中文有其獨特的美感與民族文化的意涵。

我們要如何建立一封傳統的中式書信? 用網路上已經有寫出來將橫書文字排列轉換成直書的程式,將內容進行排列再貼至寄信軟體之中寄出。這個方式有一些缺點,利用重新排列的方式來呈現,好處是文字內容可以進行編輯重複利用,但是缺點是不見得所有信件閱讀軟體能夠正確讀出,很可能因為一個字排列錯誤,整個文字內容都錯了。用圖檔傳送也許是比較好的方式,直書的內容不容易跑掉,在word中我們可以利用直書的文字方塊快速建立直書的內容,而word的文字方塊是可以轉成圖檔資料。所以我們朝這個方向去思考問題解決的方案。於是我在ExcelMail中設計一個可以將word文件以信件方式寄出的功能,只要利用word2007插入直書的文字方塊建立信件,再點選轉換成電子郵件,再啟用ExcelMail即可將信件內容載入,執行寄信之功能,寄出即可得到直書信件。

要達成這樣的功能其實沒甚麼秘密之處,重點就是我們的信件內容要讓讀信軟體看得懂,所以我只是將word信件另存成成xml格式的單一網頁內容,再將內容中部分擷取出來,重組為電子郵件的規格而已。 但是這個方法只能在Word2007的版本使用,之前的word2003是無法使用的,因為xml格式的關係。

另外還有一個進階的問題必須克服,在群組寄信中,如果每封信都一樣那還好解決,因為只要完成一個word檔即可。如果希望每封信內容不一樣,不修改word直書的文字方塊內容就不可行。所以我們還必須設計一個功能,可以在word上進行信件內容轉換,讓我們可以用批次修改信件內容的方式,讓每一個收件者收到不同之內容。這個程式功能設計的概念大致如此,我們用一個實際的例子來示範,從這個例子相信讀者也可以看得出來vba作為offfice系列軟體組合黏膠的角色,其功能強大之處。

舉例來說我要辦一個大學同學會,我要寄一封像下圖這樣的邀請卡給大學同學,要如何做?

image

1.首先利用word2007以後的版本建立信件檔案,利用直書的文字方塊建立像以下的檔案,如果有比較漂亮的字型可以選擇一些較古典的字型,讓我們的信件更古色古香。注意信件收件者的抬頭”大名”,這是我們要取代的欄位名稱。

image

存為”同學會邀請函.docx”然後關閉word程式,此檔案為產生批次信件的本體!

2.建立同學通訊錄的Excel工作表如下(我們用不同的網頁郵件信箱,看看收到的信件是否不同),欄位標題分別為

電子郵件
姓氏
大名

image

3.啟動ExcelMail登入郵件帳號,進行寄信群組的建立(可以參考前ExcelMail3.0介紹前二篇文章),參數設定如下圖:

image

注意!與前面範例不同處,我們必須新增一個參數選擇『批次取代前文』,因為我們希望每封信件內容中抬頭是每位收件者的大名,所以我們在通訊錄工作表中選取標題為”大名”這個欄位,然後按下『批次取代前文』這個欄位『選取』的按鈕,將選取區的名稱輸入為”大學同學”。

4.再來我們還必須設定一個選項,在『寄送電子郵件』表單功能列中『設定』選項,勾選『啟用批次word信件功能』/『以封裝檔案寄送』

image

5.設定完所有參數,如果要確認信件沒有錯誤,可以先點選『測試寄信』,寄一封給自己看看是否正確。按下『測試寄信』,在『輸入郵件數』,輸入測試的信件數。

image

在『選取word檔案』對話框中選擇前面所建之”同學會邀請函.docx”

image

因為要啟動word程式,可能要等一會兒才會出現以下對話框,因為我們要用Excel工作表中”大名”這一欄的資料,取代word信件中”大名”二字,所以要告訴程式此資料欄位的抬頭(標題列)是那一列,在此範例為第一列,所以我們按確定即可。

image

程式開始執行寄信,在『信件前文內容』我們會看到寄出去的原始檔案內容,這個是xml格式內容。

image

6.完成寄信我們至gmail帳號看一下成果。信件內容大致沒問題,但是我們信件主旨打錯一個字,還好沒有寄出去,再改一下。

image

7.確定沒有問題之後,我們按下『開始寄信』,重覆剛才的步驟,不過因為是正式寄信,程式會直接將選取區的名單直接寄出,不會再問要寄多少封。完成寄信之後,我們看看各家網頁郵件信箱中呈現的內容是否有所不同。

open webmail 看到的是

image

yahoo 看到的是

image

livemail 看到的是

image

8.經過測試各家的電子郵件服務都可以正確呈現我們利用gmail所寄出的信件。

9.2010/12/25 12:30之前下載ExcelMail3.0之網友,請至增益集工坊重新下載,我已經將新的檔案傳至該網站。

ExcelMail3.0群組寄信軟體介紹(三):批次寄送附加檔

在ExcelMail中我們可以讓每一位收件者收到不同的附件,舉例最近耶誕節快到了,我們要針對不同的對象寄送不同類型的耶誕卡,例如年紀小的我們給他可愛的賀卡,年長的給比較正式的賀卡。

如何進行?

1.首先我們可以先將卡片檔案集中在一個資料夾中,例如我們把卡片檔案(通常是影像檔)儲存於D磁碟機中的名為”賀卡”資料夾,在資料夾中我們儲存兩張賀卡檔案,檔名分別為”可愛的.JPG”與”正式.JPG”。

image

2.我們必須將賀卡的所在的路逕資料加入我們要寄信的Excel工作表中,以下為例:

image

要快速的建立卡片資料,可以使用『資料處理過濾增益集』中的目錄管理功能,可以很快將卡片資料讀入Excel工作表中,在利用篩選與工作表處理將資料指定給特定的人員。

3.啟動ExcelMail登入帳號,進入『寄送電子郵件』,依序設定收件者姓名、email地址、信件主旨,然後選取賀卡所欄位資料,再點選『附加檔案』的『選取』,輸入附加檔案的選取區名稱為”賀卡”。

image 

4.接下來最重要的步驟是:再勾選『批次對應附加檔案』,程式會將選取的資料重新進行批次對應,然後請重新輸入附加檔案的選取區名稱為”批次附加檔案”程式設定最後如下圖所示。

image

5.我們可以先測試寄3封信,看看是否能產生不同的附加檔案信件。進入gmail我們可以看到收到三封寄給自己的信

image

第一封收件者詹安思,賀卡是”可愛的.jpg”

image

第二封收件者練芷蓁,賀卡是”正式.jpg”

image

第三封收件者林允巧,賀卡是”可愛的.jpg”

image

6.確定正確可以執行『開始寄信』

ExcelMail3.0群組寄信軟體介紹(二):依特定條件建立群組的功能

各個郵件軟體都提供群組寄信的功能,ExcelMail結合Excel工作表資料篩選,將資料作為群組的分類依據,舉例來說我要寄信給某次考試不及格同學補考的通知單,如果要在一般郵件軟體利用群組寄信進行個別通知可能不容易,必須把這些人挑出來進行通知,一次兩次還可以,但如果是經常性的例行通知,每次不及格的人都不同,這樣的工作就太麻煩了。

在ExcelMail中我們可以利用資料篩選進行群組建置,而且可將群組以篩選規則來定義,以後只要指定群組名稱,ExcelMail會以規則去找出收件的人員。

如何進行?我們以下表為例,此表為學生某次成績的資料,欄位分別是:電子郵件、座號、姓名、總分

image

1.先啟動ExcelMail在到『寄送電子郵件』的表單,點選『啟動篩選』按鈕。

image

2.在『選取符合篩選條件的收件者』表單中指定『收件者姓名範圍』,再指定『篩選的欄位』,以本例我們以學生的總分欄位(欄位為D)作為篩選的依據,另外指定email資料所在的欄位名稱,以本例為例我們將學生的電子郵件放在A欄,再來取消『用正規表示法比對』的設定,勾選『自動篩選有資料的範圍』與『以篩選規則儲存』選項,在『數值比對以x代表資料格的值』文字方塊中輸入x<60,此代表要篩選出總分是小於60分的收件者,然後按下『執行篩選』,在『篩選結果』會出現符合資料的參照,然後在『輸入儲存範圍名稱』文字方塊中輸入”不及格者名單 ”,再按下『儲存』鈕,即可完成群組的建立,如果不再進行篩選動作,則『選取符合篩選條件的收件者』表單會關閉,回到『寄送電子郵件』的表單。

image

3.回到『寄送電子郵件』的表單中會出現一個名為”不及格名單 “的群組,而且因為是以篩選規則進行進立群組,只要學生分數有異動,再次點選”不及格名單 “群組程式自動會將符合篩選條件的人員找出來,這樣就可以避免要不斷重新建立群組的動作,這個在學校行政群組的建立蠻好用的,學校幾乎每一學年會進行教師職務的異動,每次異動如果使用outlook express的群組功能,必須大費周章調整名單,利用這個只要將人事室提供的新的職務資料貼至篩選欄位,就可以自動完成群組的建置。

image

ExcelMail3.0群組寄信軟體介紹(一):批次寄送個別收信者資料

前言:從Excel2.0與ExcelMail3.0的不同處在於3.0完全是在.NET的平台開發出來,因為Excel2.0用了不少的vb6的控制項,按照未來發展的趨勢,在64位元的環境這些利用vb6所設計的軟體可能無法使用,所以在Excel3.0乾脆全部用VB.NET進行設計,不過因為對於VB.NET的一些語法概念還不是很清楚,所以基本上大部分還是按照Excel2.0中VB6的語法去修改,利用VS2005 進行編譯有一堆警告出現,不過程式是可以執行。評估一下執行效能,看起來VB.NET的程式是比VB6編譯成 native code 的程式慢。

為什麼會想要在Excel上加入信件寄送的功能,主要是當時為了推行資訊化,想要透過電子郵件寄送薪資單,鼓勵同仁使用電子郵件,後來慢慢針對群組寄信的功能進行加強,逐漸發展成現在這個形式。

壹、如何使用ExcelMail3.0

1.舉例我們是公司的會計準備要寄薪資資料給員工,首先在Excel2007中建立薪資工作表,如下表

image

2.到增益集工坊下載ExcelMail3.0安裝之後,在『增益集』功能區中會出現『電子郵件』按鈕。

image

3.點選『電子郵件』之後會出現登入之表單畫面。

image

在3.0中加入使用SSL進行認證的功能,所以可使用GMAIL或HOTMAIL這些需要寄信認證的網路服務,測試過是可以完成寄信。已經預設一些常使用的免費信件服務伺服器,與服務的PORT號。

如果需使用SSL認證請勾選需認證的選項,為避免亂寄垃圾郵件所以還是保留POP3登入認證。

另外ExcelMail3.0不再支援Excel2003,另外郵件分析的功能暫時停止開發。

注意:請參考各家mail服務商關於使用smtp寄信與pop3帳號使用方法,例如使用gmail時輸入帳號名稱必須包括@gmail.com

4.登入之後程式主畫面會出現,首先填入寄件者姓名(例如本範例我們以會計身份寄信)

image

5.再來在薪資工作表中,將收件人的姓名資料選取反白,按下『寄送電子郵件』主表單中『收件者姓名』的『選取』按鈕,建立『收件者姓名』資料的群組資料

image

,在『請輸入收件者選取區域的名稱』輸入對話方塊中輸入此資料區域名稱,此區域名稱即為群組名稱。

image 

如果要連續選收件者姓名資料,請按是即可連續增加收件者姓名資料,如果已經不再選取請按否。

image

完成動作之後,『收件者姓名』下拉選單會出現員工薪資的資料!

image

6.再來在薪資工作表中,將收件人的電子郵件資料選取反白,按下『寄送電子郵件』主表單中『收件者E-Mail地址』的『選取』按鈕,建立『收件者E-Mail地址』資料的群組資料,注意收件者姓名與電子郵件地址必須在工作表中對應,也就是每一位收件者與其電子郵件地址必須在同一列。

image

7.如果每一位收件者的信件主旨不同,將要給收件人的信件主旨資料選取反白,按下『寄送電子郵件』主表單中『信件主旨』的『選取』按鈕,建立『信件主旨』資料的群組資料,注意收件者姓名與信件主旨必須在工作表中對應,也就是每一位收件者與其信件主旨必須在同一列。如果每一位收件者的信件主旨都相同,直接在『信件主旨』的文字方塊中輸入主旨,以此範例信件主旨是12月份的薪資。

image

8.接下來我們將要寫的信件內容直接輸入在『信件前文內容』即可,可以是純文字、也可以是HTML。不過在我們要示範一個特別的範例直接將Excel工作表資料寄給收件者,而且我們不希望收件者收到其他人的薪資資料,要達到此目的我們必須做一個設定。

image

9.先將所有收件者的薪資資料選起來反白,不要選到欄位標題,按下『寄送電子郵件』主表單中『插入選取資料』的『選取』按鈕,建立『插入選取資料』資料的群組資料,注意收件者姓名與插入選取資料必須在工作表中對應,也就是每一位收件者與其薪資資料必須在同一列,否則就會發生慘劇(薪水資料給錯人)

image

完成選取之後在『插入選取資料』的下拉選單可以看到員工薪資群組,但是注意此時還不可以寄信,還必須勾選『批次對應插入選取資料』,否則所有收件者都會收到一份所有人薪資的資料表。

image

10.最後可以進行寄信,建議先執行『寄送電子郵件』主表單中『測試寄信』功能,預防萬一尤其此等重要信件,測試寄信會將信件寄給寄件者的電子郵件信箱,也就是登入的電子郵件帳號。

image

11.執行『測試寄信』時會出現以下對話框,要使用者輸入寄發郵件的數目,預設是一封也就是會把第一個收件者所收到的信件寄給寄件者,如果輸入2,則會將第一個收件者與第二個收件者所收到的信件寄給寄件者。

image

因為我們要寄送Excel工作表資料,所以還會出現一個對話框詢問是否要加上欄位抬頭(標題列)

image

如果回答是,會出現另一個對話框,請使用者輸入標題列是在工作表的第幾列,不一定是第一列可以只依需要指定,在此範例我們是第一列為標題列

image

12.狀態列出現郵件送出,即完成寄信動作。

image

13.我們進入gmail看一下信件內容是否正確?

如果沒有勾選『批次對應插入選取資料』,就是慘劇一樁,每一個收件者收到所有資料,像下圖

image

如果有勾選『批次對應插入選取資料』,則每一個人只收到他本人的薪資資料。

image

14.確定沒有問題可以執行『開始寄信』

『資料處理過濾增益集2.0.2』版本發佈

在Excel中有提供資料剖析的功能,也就是將欄位資料依據特定的規則去分割,例如固定長度或特定的分割符號進行分割,這個在進行資料的再利用蠻不錯的功能,但是缺點就是一次只能1個欄位,而且進行特定長度分割時必須手動去分割資料

image

image image image

 

例如最近在處理學生電腦讀卡的資料(如下資料),要把一個資料長度35的資料,以固定長度1進行分割,如果利用上述的分法則要畫35次分割線,太累了!

GIBDBBDCCCECDIAFBLMDCHNFDCAANGCFACH
IIACEBDCECECAICFEMHCBGMGDADDLNDLACO
GIBABBDCDCECDIDKBNMCCHNHDCDDLNCOACH
IGBBBEDCDDECENCHEMMCAIGHDCCAJNCJACH
GNBCBCDCDCECBOBKEMMDCINHDCAALNCIACG
GIAABBDCDCECDIDKEMNCCHNFDCAANNCIACK
GNABBBDCEECCDODKBMMBBKGKDCBANMBFACO
GIABBCDCECEBDNNDENOC HNFECADNNAHACO
GIABBCDCECCCDOCKCNNABMNKECDDLNBKACO

所以我設計這個功能,在資料處理過濾增益集2.0.2中新增一個分割欄位資料的功能,只要將分割的資料範圍指定,輸入分割的長度即可進行分割。
image image