2008-12-29

Outlook Automation


因為gmail實在太強了 所以 想把所有的信 都用gmail的當做備份+搜尋的地點

因為,公司的mail 有自動轉寄功能

所以,先前設定所有寄給我的信 都會轉到我的 gmail 帳號一份

但是,針對自已寄出的信 就沒輒了~

基本上 想的方式是這樣:

* 每次寫信 or 回信時 把 gmail account 加到 BCC 內 再寄出

不過,每次都要加 也很煩人(且 outlook 要加 bcc 比較麻煩)

so, 就想說 excel 的 macro 有沒有辦法做到

基本上,就滿簡單的

基本想法如下:

方法A: 自訂寫信、回信的功能,在 outlook 裡面 去定義 macro並編輯它
會進入 VBA 的程式寫作介面,在裡面 去定義macro要做什麼事
舉例來講,我定義了這樣一個函式後,再到 outlook 工具->自訂->指令 把這function加入 outlook 的 menu,以後 我只要點這按鈕,就會啟動一個新信件編輯視窗,並且 default就有bcc 自已~ 很簡單吧

Sub MinChuanNewMail()
Set myOlApp = CreateObject("Outlook.Application")
Set myItem = myOlApp.CreateItem(olMailItem)
myItem.BCC = "minchuan@cht.com.tw"
myItem.Display
End Sub

不過,回信的部分 要處理 就要再研究一下

方法B: handle outlook 發信的 event - 在 發信前 將 gmail account 加到 bcc

基本上,針對 ThisOutlookSession 這個 Application object的 event 進行 handle 就行了
像是這樣:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Item.BCC = "minchuan.wang@gmail.com"
End Sub

夠簡單吧!!

不過,這個有一個問題
Default 這樣的巨集 會被outlook停用 ><~
所以 暫時解法是 將 macro 的信任等級調低
不然,就可能要透過 macro sign 的機制,把macro簽署過 這樣outlook 才會信任 :Q

--
reference: http://msdn.microsoft.com/en-us/library/aa246142(office.11).aspx


閱讀全文...

2008-12-28

Introduction to Google Apps


今天閒來無事 想說 來研究一下 GAE(Google Application Engine, http://code.google.com/appengine/)

其實,GAE 就是 hosting 的概念,由 Goole提供web computing related resources, 讓end-user開發的程式可以deploy在上面,目前支援由python開發的程式,並且 也有google proprietary的db可以供使用哦~

不過,沒先看GAE 倒是先找到了一個叫 Google Apps的東西(http://www.google.com/apps/intl/en/business/index.html)

這個東西的話~ 就是 Application Service Provider(ASP)的概念,google提供給組織層級的service(例如,email, calendar, docs, chat, sites...)

說白一下,假設 現在我開了一家公司,但是 我不想維護公司自已的 mail server 及其它應用系統,但是 又想讓我這家公司的員工 都有自已的email帳號 如 xxx@chuan.com、個人的網頁 如 xxx.sites.chuan.com 這怎麼辦 ?

google 提供了這樣的一個服務(有免費版 及付費升級版)

做法很簡單

1. 先到 google apps 去申請使用,過程中 會問你組織的 domain name為何
我的例子是用 minchuan.co.cc
2. 接著 google 會要你去證明你是 minchuan.co.cc 這個 domain 的 owner
證明方法很簡單,只要在 minchuan.co.cc 這個domain下面,加一筆 cname record 指到google 即可(google 會有一個類似驗證碼的機制來 mapping這些設定,以我的例子 google叫我加了一筆 google4e740b3f14f0a2b7.minchuan.co.cc 的 dns record 指到 google),透過這方式 可以確認 你的確是這 domain 的 owner

Domain Name Type/Pri Value
-------------------------------------------------------------
google4e740b3f14f0a2b7.minchuan.co.cc CNAME google.com

3. 上述確認後,接下來如果你要讓 google 提供你 mail service
一樣,只要在 minchuan.co.cc 的 dns record 裡面,加上數條google 提供的 MX record記錄,這樣 以後寄到 xxx@minchuan.co.cc 的信 都會因為這些 MX record 的關係,寄到 google 的 mail server 以下是 MX 的相關設定

Domain Name Type/Pri Value
-------------------------------------------------------------
minchuan.co.cc MX 1 aspmx.l.google.com
minchuan.co.cc MX 5 alt1.aspmx.l.google.com
minchuan.co.cc MX 5 alt2.aspmx.l.google.com
minchuan.co.cc MX 10 aspmx2.googlemail.com
minchuan.co.cc MX 10 aspmx3.googlemail.com

4. 另外,也有考慮到讓你組織的各個用戶 用比較「公司化的domain」來登入google的服務
例如,你想讓user以 http://mail.minchuan.co.cc 來登入他們的 web mail及其它服務時
(default google 是提供這種網址: http://mail.google.com/a/minchuan.co.cc )
若你加了下述的 dns record,就可以讓 user 以這樣的 url 來登入使用服務

Domain Name Type/Pri Value
-------------------------------------------------------------
mail.minchuan.co.cc CNAME ghs.google.com

5. 以上~ 還滿不錯的 適合小公司來使用

6. 附註: 目前我是使用 www.co.cc 提供的 dns 服務
他可以讓你擁有一個 domain 並且管理該 domain 下面的 dns record 哦~
BTW, 這個服務 好像有點不穩 ><~


閱讀全文...

2008-11-04

WSS 客製方法 (Windows Sharepoint Services)


專案使用了 Windows Sharepoint Services 已經有五年的時間了

最初是我建置+管理

目前 已經將它移交給別人管帳號跟系統

最初只有 for 單一個 project 使用

但,又不想使用 MS 提供的畫面及Template,所以 在 93年時,用硬幹的方法
修改MS的aspx檔案:
C:\Program Files\Common Files\Microsoft Shared\web server extensions\60\TEMPLATE\1028\STS\default.aspx

把它改成這樣:



在 WSS 當中,有主網站、子網站的功能

主網站目前是 for GSP Project 使用
子網站曾經有提供給 GSN 使用
目前要再加一個「農委會客服」的案子

但是,專案一多 這單一個客製檔案 沒辦法 for 其它專案使用

偏偏,WSS 又無提供為每個 Site, SubSite 客製首頁的功能(要做到很細 不是只有加 Web Part而已...)

因為目前我們的 WSS 我已經把它轉到 VM 上,最初的想法 是想透過 VM 的複製,針對每個Project就給它一個 VM,也實際做出來了
但是,VM 還是要有管理、上Patch、甚至申請public / private IP 的需求
會加重原本系統管理的負擔

so, 最後 終於試到一個辦法, 使用 office front page extension 的方式,居然可以直接針對子網站去做網頁的編輯

這大概是最適當的作法了 :)

下面這個 site, 就是我下午客製出來的哦 :)


閱讀全文...

2008-11-03

MS SQL Server 2000 Audit


最近因為公司的資安查核,所以 研究了一下 MS SQL Server 2000 要如何建立稽核軌跡(Audit Trail),大概找了幾類的方法,整理說明如下:

------------------------------------------------------------------
A. enable SQL Server login audit (through SQL Server Enterprise manager)
------------------------------------------------------------------

ref: http://www.microsoft.com/technet/security/prodtech/sqlserver/sql2kaud.mspx

notice: SQL Server 要重啟才生效
login audit 資訊會寫在 windows 的 app event log 裡

1. 在這個畫面做設定,安全性 -> 選要做 Login 的稽核層級為何



2. 重啟SQL Server

3. 接著,後續的login記錄,就會記錄在 windows event log 內 (歸於 application這個類別)



------------------------------------------------------------------
B. enable SQL Server 「c2 audit mode」:
------------------------------------------------------------------

ref: http://www.microsoft.com/technet/security/prodtech/sqlserver/sql2kaud.mspx

SQL Server 內建有一 C2 audit mode, 預設是沒打開的

打開方式如下:
1. 在 command mode 裡下下列的指令
C:\Documents and Settings\Administrator>osql -E
1> exec sp_configure
2> go

1> exec sp_configure 'c2 audit mode','1'
2> go
DBCC 的執行已經完成。如果 DBCC 印出錯誤訊息,請聯絡您的系統管理員。
設定選項 'c2 audit mode' 從 0 變更到 1。請執行 RECONFIGURE 陳述式來安裝。
1> reconfigure
2> go

2. 重啟 SQL Server
3. 接著,SQL Server即會以 c2 的標準做 log, log 檔會以 .trc (trace)存在
C:\Program Files\Microsoft SQL Server\MSSQL\Data 下
4. .trc 可用 sql profiler 來看
5. 目前正在錄的 .trc 無法直接開,可先將 sql server restart 後,該 .trc 即可開啟
.trc 檔會做 log rotate,被rotate 掉的 .trc 也可以直接開來看

效果如下,可以稽核 對DB的一些Command及登入資訊,不過使用這種方式要注意,它可能會拖慢DB的速度,所以若要打開此選項,一定要先測試過,看看目前的交易量及設備容不容許將這選項打開。



另外,何謂 C2 等級的 audit log?

根據美國國防部的一個標準:
DoD 5200.28-STD, "Department of Defense Trusted Computer System Evaluation Criteria"
http://www.boran.com/security/tcsec.html
有將電腦系統依安全的程度,分為下列等級,C2即是其中的一級:

* DISCRETIONARY PROTECTION
Class (C1): Discretionary Security Protection
Class (C2): Controlled Access Protection
* MANDATORY PROTECTION
Class (B1): Labeled Security Protection
Class (B2): Structured Protection
Class (B3): Security Domains
* VERIFIED PROTECTION
Class (A1): Verified Design
Beyond Class (A1)

C2何底要求為何,依該標準,簡述如下:
Systems in this class enforce a more finely grained discretionary access
control than (C1) systems, making users individually accountable for their
actions through login procedures, auditing of security-relevant events, and
resource isolation.
實際的要求,要來的細的多,要參考該標準文件才行。

------------------------------------------------------------------
C. 使用 Server Side Trace 的功能 來客制 trace 有興趣的 sql server operation
------------------------------------------------------------------

ref: http://www.microsoft.com/technet/security/prodtech/sqlserver/sql2kaud.mspx
(與 SQL Profiler 原理一樣)

其實,這就好像用 SQL Profiler 一樣,選自已有興趣的event,來錄製相關的

上述的 C2 log 也是用一樣的原理,差別在於 C2 audit log 是 SQL Server建好的套餐

如果覺的那樣的 log 太多了,則 你以用 server side trace 的方式,來挑想log的部分記錄即可

------------------------------------------------------------------
D. 使用 DBCC command --> 但是 結果很難看.. 不是人可以看的
------------------------------------------------------------------

指令: DBCC log ( {dbid|dbname}, [, type={0|1|2|3|4}] )

PARAMETERS:

Dbid or dbname - Enter either the dbid or the name of the database in question.

type - is the type of output:

0 - minimum information (operation, context, transaction id)
1 - more information (plus flags, tags, row length)
2 - very detailed information (plus object name, index name, page id, slot id)
3 - full information about each operation
4 - full information about each operation plus hexadecimal dump of the current transaction log's row.

by default type = 0

可以下下列的指令試看看

DBCC log (master)
DBCC log (master, type=4)

效果如下:



------------------------------------------------------------------
E. 使用SQL Server 2000 內一個沒被寫在文件的function: fn_dblog
------------------------------------------------------------------

-- entire tlog
select * from ::fn_dblog(NULL, NULL)
-- selection of tlog
select * from ::fn_dblog('129:148:1', '129:150:6')
Note: 129:148:1 is LSN

Select * from ::fn_dblog('', '') where [Begin Time] >= '02/03/08'

------------------------------------------------------------------
F. 使用 3rd party tool, 來觀看 SQL Transaction Log - 以 Lumigent Log Explorer for SQLServer 為例
------------------------------------------------------------------

用上述的 DBCC, fn_dblog 內建指令,很明顯的 雖然可以 Query 出log,但是,那些log
根本就不是人可以看的懂的

但是,MS 官方也沒有這種可以讓人看Transaction Log的工具 (真怪)

所以,只得求助於 3rd party 軟體

將 Lumigent Log Explorer for SQLServer 的 cliet 端、Server端(需與SQL Server裝在一起)裝好後,即可針對 Transaction log做查看分析的動作、還可以把單獨的Transaction挑出來、Rollback 哦 :)

另外,這個軟體,只是幫你 parsing transaction log,所以非transaction類的部分(如, Query的操作) 沒有辦法呈現出來。
若要 Audit 到對 DB 的 insert/update/delete/query ...的話,則要打開 c2 audit mode 或是使用 server side trace or sql profile 來記錄相關的操作

Demo 畫面如下:


閱讀全文...

2008-09-18

Soring Algorithm - Python Implementation


最近在看Python

剛好上次竹講了一堆sorting 的 algorithm

由於 我忘了差不多了 所以呢~ 再複習一下 順便用 python 來 implement

做了, QuickSort, MergeSort, HeapSort
為何叫 QuickSort --> 看程式碼的長度就知 它是 O(nlogn)排序法裡 程式碼最簡單的吧 :Q 哈

Python 寫出來的程式,有沒有比較整齊乾淨啊~ 呵呵

Quick Sort:


Merge Sort:


Heap Sort:


閱讀全文...

2008-09-08

Web 的技術愈來愈複雜啦~


最近比較有再重新接觸Web的東西

感覺自已已經有點退流行了~ 所以 得看一看 呵

最近有看的、有接觸到的名詞

* LAMP - 架了 Linux + Apache + MySQL + PHP 來玩,這個太多人用了 至少要玩看看
當然很快的看了PHP, MySQL 就偷懶直接用 PHPMyAdmin 來管理
寫了一個很無聊show報表的東西,報表的圖是用 Google Chart API 來畫的
真的超簡單的 :Q

* 重看了 XHTML(HTML 4.01), CSS, JavaScript

實際上,XHTML 出了這麼多年,我還是第一次看 ><~
CSS 跟 JavaScript 也是,以前沒真的大量用過 啥 selector, class, 有的沒的 還是第一次套
不過,真的覺的 web 的技術、client 端的東西 愈做愈屌了..

* 好好了看了 perl 5, 不過 說真的 看完又忘的差不多了

* Ruby on Rail(RoR)、Djando(python based web development framework) Web 快速開發

Rail 快速開發之前是知道,也很無聊的有試玩一下,不過就是半調子
Djando 是我最近才知道的,是based on python 來寫網頁
python 愈來愈紅了! 可能要看一下 他是2007年評選最佳的程式語言

* Java Script library: YUI, jQuery, jQuery UI

* JSON, Java Script Object Notation
其實就是 java script 裡面用來表示 object literal 的方法
格式像是 { name: minchua; gender: male; age: 29; }
因為不像 XML 要一堆tag, 且 可以直接用java script引用,所以 目前也是很多人拿來用的Web資料交換格式

* Google Solution:
- Goole Ghart API - 超屌 Java Script畫一堆漂亮的圖
- Google Gears - offline browsing solution
- Google App Engine - 提供infrastructure, 可host python-based 的 web cgi program..

* Social network
- Open ID - 可做跨 authentication domain 的 single-sign-on
- Open Social - 規範一套標準的 java script api, for 站台間資訊交換、連結


閱讀全文...

2008-06-25

公司價值評估


一些重點:

公司活動 = 營業活動 + 投資活動 + 融資活動(融通資金)

公司價值 = 獲利性 * 獲利持續性(獲利成長性) * 風險性(獲利風險性)

獲利能力 = 營業績效 * 投資績效 * 融資績效

濩利能力 可看 ROE(股東權益報酬率),為一好指標

透過杜邦分析,可將ROE(獲利能力) 拆解為

ROE = 稅後淨利 / 股東權益
= (稅後淨利/營收) * (營收/資產總額) * (資產總額/股東權益)
= 淨利率 * 資產週轉率 * 權益乖數


營業績效 ->
可看損益表的 稅前淨利率 (業內+業外)
若要看本業表現 則看 盈業利益率
損益表內的毛利率的高低,決定了公司可針對產品做差異化及管銷作為的空間
(若毛利太低的話,管銷研發空間不大)
(毛利 = 營收-直接可歸屬於產品本身的成本)

投資績效->
可透過 資產負債表+損益表 得到相關資訊
主要是看 資產週轉率 = 營收/資產總額
藉以看到公司運用資產的能力 (週轉率當然愈高愈好,表資產有效率的運用)

融資績效(影響) ->
即財務槓桿比率,通常可用 Debt(負債)/EQ(股東權益) 比來表達
可由資產負債表(balance sheet)得到相關資訊
財務項桿比率愈高,相對風險愈大 對市場及營業績效的表現愈敏感 (有槓桿加乘效果)

--

EBIT(息前稅前淨利) 反映公司去除 負債成本後 之獲利狀況

資產負債表重點:
- check 資產規模 (大者,吸收風險能力較強)
- check 資產結構 (固定資產比率愈高,表示該行業為資本密集,退出不易,受景氣影響也很大(因不管營收高、低,設備的運轉、成本 都有一定的 overhead在)
- check 公司償債能力 (流動比率、速動比債、利息保障倍數)
- check 長期資產(資金用途)的資金來源為何 (切忌以短支長,以短期借款購置長期資產,
因長期資產發揮效益 創造淨現金流入的時間通常較長,若以短支長 會有資金調度上的問題)

損益表重點:
check 營收變化 對 EBIT 變化的影響 (影響愈大 表該公司風險愈高)
check EBIT 對 EIT 變化的影響 (影響愈大 表該公司借款所帶來的利息因素愈高,不景氣時 有可能獲利都被利息吃光了)


閱讀全文...