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 變化的影響 (影響愈大 表該公司借款所帶來的利息因素愈高,不景氣時 有可能獲利都被利息吃光了)


閱讀全文...