2010年12月23日 星期四

[Lotus script]-Word 出出出

'將Notes資料輸出並套用至Word範本檔裡面
1.首先建立一個Word的範本檔
使用「插入」、「功能變數」設定欄位作為資料儲存體

使用「插入」、「書籤」設定書籤作為插入位置

2.NOTES表單中對應匯出程式如下:

Sub WordOutOutOut( M_To As String, M_DY As String, M_DM As String, M_DD As String, M_NO As String, M_SP As String, M_SEC As String,M_AH As String,M_Sub As String,M_Body As String,M_MAIN As String,M_BEND As String)
    Dim session As New NotesSession
    Set db=session.CurrentDatabase
    Set wdoc=session.DocumentContext   
   
    DefDocPath="C:\missive_out_sample.dot" '設定路徑
   
    Set oWord = CreateObject("Word.Application")
    oWord.Application.Visible = True
    oWord.documents.Add DefDocPath, False
    Set WordDoc = oWord.activedocument
    '=======Go to bookmark=======
    WordDoc.Bookmarks("TO").Select
    Call oWord.Selection.TypeText(M_To)
    WordDoc.Bookmarks("YY").Select
    Call oWord.Selection.TypeText(M_DY)
    WordDoc.Bookmarks("MM").Select
    Call oWord.Selection.TypeText(M_DM)
    WordDoc.Bookmarks("DD").Select
    Call oWord.Selection.TypeText(M_DD)
    WordDoc.Bookmarks("NO").Select
    Call oWord.Selection.TypeText(M_NO)
    WordDoc.Bookmarks("SPEED").Select
    Call oWord.Selection.TypeText(M_SP)
    WordDoc.Bookmarks("SECURE").Select
    Call oWord.Selection.TypeText(M_SEC)
    WordDoc.Bookmarks("ATTACH").Select
    Call oWord.Selection.TypeText(M_AH)
    WordDoc.Bookmarks("SUBJECT").Select
    Call oWord.Selection.TypeText(M_Sub)
    WordDoc.Bookmarks("BODY").Select
    Call oWord.Selection.TypeText(M_BODY)
    WordDoc.Bookmarks("MAIN").Select
    Call oWord.Selection.TypeText(M_MAIN)
    WordDoc.Bookmarks("BEND").Select
    Call oWord.Selection.TypeText(M_BEND)
   
    ''==========================
    'oWord.documents(1).SaveAs "c:\Tmp\WM20101223.doc"
End Sub

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年11月22日 星期一

天空藍

昨天夜裡的地震
早晨的空氣靜謐的使人煩躁
天空藍的令人心悸
彷彿又回到十年前那場浩劫一樣的場景!
吞噬多少生命的能量?

所幸一切安好

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年11月11日 星期四

I'm PM ∼ 無止盡的需求變更

※既然無可避免會有的損失,就提早在專案執行前加以量化吧!

我們常常進行專案管理的時候會時常需要跟客戶拉扯
關於系統上線驗收後一些修修改改的項目、更有甚者還會有新增功能的要求出來
對於這種情況往往要耗費心力去跟客戶溝通、角力
要掌握好服務客戶跟維護自身利益的分寸常常是兩難
因此我在想是否何不當初一開始就將他量化,反而可以控制損失呢?
例如給予一定的修改時數或次數限制。



--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年10月28日 星期四

平安

2010-10-03 上線



2010-10-028 小改版

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年9月30日 星期四

小白鯊

忽然想開了∼買了 一台摩托車
GSR FI 白


--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年9月18日 星期六


終於找到了新的早晨 卻被歲月橫加阻擾

路途的前方不見未來 而是不斷地追逐過往

那些迴盪不已的殘酷回憶 從沒放過我的跡象

差不多了吧疲於摸索的臉頰上 心裡糾葛悄然滑落

這雨終有一天將會停下吧 它已冰冷地下了太久

這雨為何偏偏選擇了我 能否就此擁我入懷

雨落的彷彿忘了停下 今日依然下個不停

在悄然遞來的傘下 我依偎著那份溫暖

Sid Rain

やっと見(み)つけた  新(あたら)しい朝(あさ)は  月(つき)日(ひ)が邪魔(じゃま)をする

向(む)かう先(さき)は  「次(つぎ)」じゃなくて  「過(すぎ)」ばかり追(お)いかけた

鳴(な)り止(や)まない  容赦(ようしゃ)ない思(おも)い出(で)たちは  許(ゆる)してくれそうにもない

そろそろかな  手探(さぐ)り 疲(つか)れた頬(ほほ)を  葛藤(かっとう)がこぼれ落(お)ちる

雨(あめ)は  いつか止(や)むのでしょうか ずいぶん長(なが)い間(あいだ)  冷(つめ)たい 

雨(あめ)は  どうして僕(ぼく)を選(えら)ぶの  包(つつ)まれて いいかな  

雨(あめ)は  止(や)むことを知(し)らずに  今日(きょう)も降(ふ)り続(つづ)くけれど 

そっと  差(さ)し出(だ)した傘(かさ)の中(なか)で  溫(ぬく)もりに 寄(よ)り添(そ)いながら



--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年8月25日 星期三

取得所有資料表筆數

create   table   #tb
(
Table_Name sysname,筆數 int ,
保留空間 varchar(10),
使用空間 varchar(10),
索引使用空間 varchar(10),
未用空間 varchar(10))
insert into #tb exec sp_MSforeachtable 'EXEC sp_spaceused ''?'''
select * from #tb order by Table_name
go
drop table #tb


--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年8月15日 星期日

晴天、擎天

沒有想到最後是敗在壓力測試上,終究還是輸給了自己消極的態度

堤維西上線失敗!

系統開放上線後不堪大量使用者的湧入而癱瘓~等於是我自己給自己下了一個DOS攻擊的套一樣

痛定思痛、除了面對失敗外更要找出問題的癥結並且克服它。一直以來轉檔寫入SQL以及對SQL 進行查詢就被詬病效能低落,這次真的是吃到苦果了!所以再後來的狀況排除中也將該部主機效能不彰列為查緝重點。首先把AP跟DB拆開馬上發現問題卡在DB上~幾個訂單查詢下去立刻就整個塞住,CPU雖然是滿載但好像一直在虛耗?光是4萬筆的訂單(含關聯、計算)查一次就得4~5分鐘實在令人傻眼。

之後採取幾個改善措施:

1.檢查硬體安裝的正確性、完整性

經由系統人員提醒系統驅動似乎未正確安裝,導致效能無法發揮。

2.檢查SQL Server的設定、規劃

在多處理器、多磁碟機環境下,資料庫「檔案」應採取適當的切割,以有效發揮平行處理的能力。

3.檢查程式的設計、函數使用的方式

在VIEW裡面使用「純量值函數」取得資料似乎是一件不明智的作法,還是改回來用Join的方式比較好!

晴天、擎天
--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年8月9日 星期一

SQl連線數

如何查SQL目前使用者連線數量
 
SELECT cntr_value AS User_Connections FROM master..sysperfinfo as p
WHERE p.object_name = 'SQLServer:General Statistics' And p.counter_name = 'User Connections'


--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年8月1日 星期日

一番綺麗的我

未曾謀面的歌曲,卻有熟悉的旋律~

もしもあの春に
あなたと出逢わなければ
舞い散る花びらはただ白く
見えていたでしょうか?

もしもあの夏を
二人で過ごさなければ
花火の輝きも殘らずに
消えていたでしょうか?

一番綺麗な私を
抱いたのは あなたでしょう
愛しい季節は流れて
運命と今は想うだけ

もしもあの秋に
私が戻れるのなら
隠し通したあの涙さえ
見せてしまうでしょう

もしもあの冬に
あなたを信じていたら
今も二人で寄り添いながら
生きていたでしょうか?

一番綺麗な私を
抱いたのは あなたでしょう
消えない涙の記憶を
運命と人は呼ぶのでしょう

ああ あなたも私を
想うのでしょうか?
二度と戻ることのない
駆けぬけた季節を

一番綺麗な私を
抱いたのは あなたでしょう
あの日心は震えてた
だけど今溢れ出す

一番綺麗な私を
抱いたのは あなたでしょう
時を超えるこの想いは
愛の他何があるでしょう

一番綺麗な私を…

如果在那個春天
沒有與你相遇的話
漫天飛舞的花瓣
也只是所見的一片白色吧

如果在那個夏天
沒有與你度過的話
花火殘留的光芒
也會不留痕跡地消失吧?

最漂亮的我
是被你抱著的那個自己吧
相愛的季節已逝去
現在只能認為是命運吧

如果在那個秋天
我能再次回去
那些獨自吞下的眼淚
能在你面前流下吧

如果在那個冬天
我能相信你
如今兩人能互相依靠著
共同生活下去吧?

最漂亮的我
是被你抱著的那個自己吧
無法刪除的淚水記憶
就是人們所謂的命運吧

你也會
牽掛著我嗎?
無法再回去的
屬於我們的季節

最漂亮的我
是被你抱著的那個自己吧
那天我的心在顫抖
今天卻滿溢而出

最漂亮的我
是被你抱著的那個自己吧
超越時光的這些回憶
除了愛還有什麼呢

最漂亮的我…

花痴刑事第四話~殘念
戶田這張好牌沒有打好阿!
--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年7月25日 星期日

虫工~與我的執念

執念難消
遂 上白駒 馳騁千里
芳蹤渺渺 倩影換長虹

少年聽雨歌樓上。紅燭昏羅帳。壯年聽雨客舟中。江闊雲低、斷雁叫西風。而今聽雨僧廬下。鬢已星星也。悲歡離合總無情。一任階前、點滴到天明。

2010年7月19日 星期一

禁用瀏覽器快取

從標頭來∼

<HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
</HEAD>


從程式來∼

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.MinValue);


--

看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

讓暴走的Windows Services自動重新啟動

關閉服務並延遲十秒後再啟動:

net stop [Services name]
ping -n 10 127.0.0.1
net start [Services name]




p.s.這支Service 是自己寫的沒有什麼相依性。
若是要處理其他Servicre則必須注意有沒有其他服務要先關閉的!
--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年6月23日 星期三

關於DB mail 組態、附件

變更 Database Mail 的組態設定。sysmail_configure_sp
所指定的組態設定適用於整個 SQL Server 執行個體
[@parameter_name = ] 'parameter_name'

要 變更的參數名稱。

[@parameter_value = ] 'parameter_value'

參 數的新值。

[@description = ] 'description'

參 數的描述。



修改附件大小限制:
EXECUTE msdb.dbo.sysmail_configure_sp
'MaxFileSize', '2097152' ;
修改重試次數:
EXECUTE msdb.dbo.sysmail_configure_sp
'AccountRetryAttempts', '10' ;

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年6月15日 星期二

Crystal report 工具列圖示不見了

Crystal report 的工具列圖示不見第一個想到的一定是檢查 crystalreportviewsXX 這個資料夾在不在網頁根目錄下!
但這次我是從XI R2 升到 SP4而已,資料夾它也自動幫我更名了,但開啟網頁就是找不到!

後來查了一下網頁原始檔才發現~Toolbar的圖片參考位置還有一個地方:
果然老外才是王道!

How to Fix crystal report viewer missing toolbar icons (CRXI-R2)

1) Locate images folder of crystal report viewer toolbar in web server (in development PC, it』s C:\Program Files\Business Objects\Common\3.5\crystalreportviewers115)
2) Create C:\inetpub\wwwroot\aspnet_client\ System_Web\2_0_50727 folder if it does not exist
3) Copy crystalreportviewers115 folder includes sub-folders and files to the folder created in step 2), verify crystalreportviewers115 has enough rights for SYSTEM and ASP.NET account to read and execute
4) In IIS, right click the previously defined web site name, create a virtual directory called aspnet_client and map its physical directory to C:\inetpub\wwwroot\aspnet_client.
The newly created virtual directory should be at the same level as the bin directory.

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年6月13日 星期日

關於連線遠端桌面∼


微軟偷改 ∼ -__- #

/console改成/admin。
Vista SP1, 2008, XP SP3之後的mstsc都是這樣。



mstsc /admin
--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年6月12日 星期六

敵人∼日期時間


系統上線果然世什麼事都可能發生,前幾天就為了日期選擇器原的問題大傷腦筋∼由於客戶在自己的機器上安裝OS時將日期時間設為"月日年"導致我們的系統放上去後不太正常,用自製的日期選擇器「使用者控制項」時,會發生格式錯誤、數字亂跳!拜了一下大神後:
改了控制臺、登錄檔(HKEY_USERS\.DEFAULT\Control Panel\International)、ASP.Net全域組態...還是沒效!
(IIS這個死不悔改的傢伙!!)

最終只好先取消元件中的MSAK驗證、並將日期格式明確的下定義:

在Script裡這麼用:ToString("yyyy/MM/dd")
在Gridview裡這麼用DataFormatString="{0:yyyy/MM/dd}
在Bind或Eval裡這麼用:Bind("xxx","{0:yyyy/MM/dd}")



結論:開發程式時,養成好習慣是重要的~

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年5月29日 星期六

預存程序呼叫預存程序?

一般在「預存程序」中呼叫預存程序,回傳的值是執行的狀態代碼,即 int 型態的值。
若是要取得計算的值,必須在預存程序中設定output 的參數,然後以下列方式得值。


EXECUTE @RC = [dbo].[ZGetFPR]
   @tp='MarketingPOShip'
  ,@d= @s output
select @s

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年5月21日 星期五

好東西∼如何將SQL子查詢的多筆結果放到同一個欄位

請把這行放到子查詢後面吧: FOR XML PATH('')

例句:
SELECT
*,(select [ChName]+',' from user_data where [id] <> '' FOR XML PATH('')) as EXp2
FROM [TABLE]
 
 --
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年5月15日 星期六

2010年5月7日 星期五

協作平台試用!

這次為了程式開發人員可共同編輯文件,試著拿出好久沒上去的「Google協作平台」!除了不能線上編輯文件外(你不會去用Google文件喔!),感覺還不錯。剛好適合這個專案使用,還可以設幾個倒數計時器嚇自己!

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年4月2日 星期五

看到想到-公文常用名詞中英對照

檔號 File No.
保存年限 Years of Storage
函 Official Letter
正本受文者 Original to
副本受文者 Copy to
發文日期 Issue Date
發文字號 Issue No.
速別 Level of Urgency
密等及解密條件或保密期限 Confidentiality Class & Release Condition or Confidentiality Period
附件 Attachment, Supplement
隨函 enclosed
主旨 Subject
說明 Explanation

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年3月25日 星期四

看到想到-Important Notes files to save or backup

Important Notes files to save or backup
The following is a list of Notes files that you may want to save or backup in case you ever need to uninstall Notes and then reinstall it at another time. Note You may not have all of these files.
File nameLocationComments
BOOKMARK.NSFNotes\Data directoryContains your saved bookmarks and Welcome Page information.
BUSYTIME.NSFNotes\Data directoryContains your local free time information.
DESKTOP6.NDKNotes\Data directoryThis is your Workspace that maps to your bookmarks.
HEADLINE.NSFNotes\Data directoryContains your Database Subscriptions information.
INSTALL.LOGNotes program directoryContains the configuration information based on the options available when you install Notes. This file is used for comparison when you upgrade to new versions of Notes.
INTERNET.NSFNotes\Data directoryContains information from your newsgroup subscriptions (NNTP).
NAMES.NSFNotes\Data directoryContains your contacts, connections, locations, and Personal Address Book information.
NOTES.ININotes program directory Contains the information you provide when you set up Notes, including the options you select in User Preferences. May also contain information created by your administrator. This file gets deleted when you uninstall Notes.
PERWEB.NSFNotes\Data directoryThis is your Personal Web Navigator database that contains Web browser information.
USER.DICNotes\Data directoryContains all of the words you have added to your personal dictionary through the "Add to Dictionary" option in the Spell Checker.
*.NSFNotes\Data directoryLocal databases that you create are stored in the Data directory.
<yourname>.NSF (local copy)Notes\Data directoryContains your Mail, Calendar, and To Do list. This only shows up in the Data directory if you have a local replica of your Mail file.
<yourname>.IDNotes\Data directoryThis is your User ID file. You need this to access Notes.


--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年3月24日 星期三

[看到想到]-有些事情想到了就去弄清楚~有限公司、股份有限公司的差異

公司與行號差異比較

項目

行號

有限公司

股份有限公司

公司名稱及規定

  1. XX商行

  2. XX企業社

  3. XX實業社

* 本縣市內不得重複

  1. XX有限公司

  2. XX企業有限公司

  3. XX實業有限公司

* 全國不得重複

  1. XX股份有限公司

  2. XX企業股份有限公司

  3. XX實業股份有限公司

* 全國不得重複

資本額

  1. 不限

  2. 特許行業例外

  1. 50萬以上

  2. 特許行業例外

  1. 100萬以上

  2. 特許行業例外

存款(資本)證明及簽證

  1. 50(不含)以下不需任何證明

  2. 50萬以上會計師簽證

  1. 需存款(資本)證明

  2. 會計師簽證

股東人數

  1. 獨資1

  2. 合夥2人以上

1人以上

2人以上但需外聘董事1人及監察人1

股東年齡

成年

  1. 負責人要成年

  2. 其餘可未成年

  1. 全部要成年(創立時)

  2. 一年後才可變更未成年

股權轉讓變更

  1. 不限制

  2. 獨資可變更為合夥

  3. 合夥不得變更為獨資

不限制

  1. 不限制

  2. 一年內原始股東股權不得轉

決議文件及內容

合夥契約書

  1. 股東同意書

  2. 1人任董事並為負責人

  1. 有股東會、董事會

  2. 董事長1人、董事2人以上、監察人1人以上

決議方式

負責人同意或全體合夥人全部同意

要全部股東同意

視屬一般、普通、特別等決議方式之不同有不同比例股權同意即可

股東責任

無限清償責任

以出資額為限

公司設立登記核准

(公司登記證明書)

營利事業登記證

未分配盈餘加徵稅率

盈餘要全部分配無加徵之虞

  1. 盈餘要分配,並於次年六月底前決定分配金額

  2. 未分配之盈餘需加徵10

營業稅率

5

5

營利事業所得稅率

25

25

銷售貨物或勞務時

  1. 免用統一發票

  2. 使用統一發票

使用統一發票

登記手續及費用

簡單、便宜

普通

複雜、費用較高

項目

行號

有限公司

股份有限公司


--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年3月22日 星期一

酹江月

大江東去,浪淘盡,千古風流人物。故壘西邊人道是,三國周郎赤壁。亂石崩雲,驚濤裂岸,捲起千堆雪。江山如畫,一時多少豪傑。

遙想公瑾當年,小喬初嫁了,雄姿英發。羽扇綸巾,談笑間,檣櫓灰飛煙滅。故國神遊,多情應笑我,早生華髮。人生如夢,一尊還酹江月。

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

Domino指令手冊

[Domino  服務器常用命令大全 ]

Broadcast message                  向該服務器的用戶廣播消息
Broadcast message usernames        向該服務器的某一用戶廣播消息
Dbcache Flush                      關閉當前在數據庫高速緩存中打開的所有數據庫。
Drop "username"                    關閉在指定用戶名下運行的當前會話
Drop " username1 " " username2 "   關閉在用戶username1和 username2下運行的會話
Drop All                           關閉所有服務器會話
Exit /Quit                         關閉服務器
Hangup portname                   掛斷指定端口
Help                              顯示服務器命令列表,
     
Load  命令列表
                                   
Load Fixup                       加載並運行 Fixup 服務器任務
Load Object Info Object.nsf      加載並運行共享郵件管理者
Load http                        加載 web服務
Load decs                        加載外部數據連接服務
Load calconn                     加載日曆管理器
Load event                       加載事件管理器
Load sched                       加載日程安排管理器
Load stats                       加載統計信息收集管理器
Load maps                        加載路由表(路由拓撲結構)管理器
Load Router                      加載郵件路由管理器
Load Replica                     加載複製管理器
Load Update                      加載更新管理器
Load Amgr                        加載代理管理器
Load AdminP                      加載管理進程
 
Pull  和 Push  命令 :     
 
Pull servername                   強制與指定服務器進行單向僅拉入複製。
Pull servername databasename      強制從指定服務器單向僅拉入複製指定數據庫文件。
Push servername                   強制與指定服務器進行單向僅推出複製。
Push servername databasename      強制將指定數據庫文件單向僅推出複製到指定服務
器。
 
Replicate  命令:                                                                                        

 初始化與指定服務器之間的雙向複製強制在兩個服務器之間進行複製。發起複製的服務
器(也就是當前正在使用的服務器)首先將其他服務器上的更改拉入進來,然後讓將它的更
改推出到其他服務器。使用該命令可以快速傳遞數據庫的更新,或者解決複製或通訊疑難問
題。     
 
Replicate servername 
在本地服務器和指定服務器之間發起複製。服務器控制台顯示指明複製進行的起始時間的信
息。
 
Replicate servername databasename    
 
在本地服務器和指定服務器之間發起,指定數據庫文件的複製。 
   
Restart server          禁用當前服務器,然後在短暫延遲後重新啟動服務器。
 
Restart Port portname   
禁用指定端口上的事務(或消息)然後在短暫延遲後重新啟動端口。此命令使您不用停止
Domino 服務器就可以停止並啟動端口。
 
Route servername          使用特定服務器發起郵件路由。初始化與指定服務器的待發郵
件的未安排郵件傳送。
Set Configuration setting    在 NOTES.INI 文件中增加或更改設置。
Set Secure currentpassword  
 
口令保護 Domino 服務器控制台如果不輸入口令,則無法使用 Load、Tell、Exit、Quit 和 Set
Configuration 服務器命令,也無法使用那些不是通過「Domino 目錄」中的「程序」文檔
或 NOTES.INI 文件來自動運行的程序。除非使用相同口令再次輸入 Set Secure 命令來清
除口令,否則控制台的安全性將保持有效。
 
Set Secure abracadabra  
若當前沒有有效口令,請設置口令保護控制台。在本例中新口令為「abracadabra」。
如果控制台已經受口令 (這裡為 「abracadabra」)保護,請再次輸入帶有此口令的 Set Secure
命令,來清除該口令。
Set Secure abracadabra sesame    將現有口令「abracadabra」更改為「sesame」。
Set Statistics statisticname        重設累計的統計信息。Statisticname 是命名待重
設的統計信息所需參數。此參數不能使用通配符 (*)。

Show命令列表 :     
 
Show Cluster               顯示所有群集成員及其狀態的列表
Show Config                顯示 Notes.ini文件中參數設置的值
Show Database              顯示指定數據庫的文檔和視圖信息
Show Directory             在 Notes 目錄中顯示每個數據庫的信息
Show Disk                  顯示全部服務器驅動器的磁盤釋放統計信息
Show Memory                顯示此數據庫的內存統計信息
Show Performance           觸發性能統計信息的一分鐘顯示
Show Allports              顯示服務器上的所有啟用或禁用端口的配置。
Show Port                  顯示指定端口的信息
Show Schedule              顯示安排但未執行的命令
Show Server                僅顯示核心服務器狀態信息
Show Tasks                 顯示運行在服務器上的所有任務的狀態信息
Show UserS                 顯示所有活動會話的使用信息
Stop Port Portname          
禁用端口禁用指定端口的事務(或消息)。此命令允許更改端
口,而且不用停止 Domino server 就可以立即生效。
 
Stop Port TCP              禁用名為 TCP 的端口。
Start Port portname        啟用指定端口的事務(或消息)。
Start Port TCP             啟用名為 TCP 的端口
 
 
Tell 命令列表:     
     
Tell serverprogram          將命令串發送給任務。
Tell Router Quit           只關閉 Router 任務。服務器上其他所有任務繼續運行。
Tell Adminp Process All    處理所有新的和更改過的立即、時間間隔、每天和延遲的請
求。
Tell Adminp Process Daily    
處理下列請求:所有新的和更改過的每日請求,以更新「Domino 目錄」中的「個人」文檔。
 
Tell Adminp Process Delayed 
 處理所有新的和修改過的延遲請求。這些請求通常依照「服務器」文檔中的「開始執行日
期」和「開始執行時間」設置運行。
 
Tell Adminp Process Interval        
處理所有立即請求,以及所有依照「服務器」文檔中的「時間間隔」設置執行的請求。
 
Tell Adminp Process New      處理所有新請求。
Tell Adminp Process People    處理所有新的和修改過的請求,以更新「Domino 目錄」
中的「個人」文檔。 By: Freeman Luo    QQ:308226397    Date: May 17, 2008
╰ ╰╰ ╰相約 相約 相約 相約 Domino╮ ╮╮ ╮QQ: 59905501
自由之翼我心飛翔 自由之翼我心飛翔 自由之翼我心飛翔 自由之翼我心飛翔, ,, ,Domino  原來可以這樣 原來可以這樣 原來可以這樣 原來可以這樣。 。。 。
 
Tell Adminp Process Time      處理所有新的和修改過的請求來刪除未鏈接的郵件文件。
Tell Adminp Show Databases  
 顯示 (並在服務器的日誌文件中記錄)下列信息:特定的管理服務器更新的數據庫。 在
所更新數據庫中更新了「讀者」和「作者」域的位置。沒有為其指定管理服務器的數據庫。
Tell Adminp Quit        關閉服務器的 Administration Process。
Tell Amgr Pause         暫停代理的日程安排。
Tell Amgr Resume        繼續代理的日程安排。
 
Tell Amgr Schedule 
 顯示預定在當天運行所有代理的時間安排表。此外,該命令也顯示代理觸發類型、代理預
定的運行時間、代理名稱和代理運行於其上的數據庫名稱。檢查 Agent Manager 的日程安
排表可查到代理是否在 Agent Manager 隊列中等候。
Agent Manger 隊列:
E = 能夠運行的代理  S = 預設運行的代理   V = 等待事件發生的事件觸發代理
觸發類型:
S = 預設運行的代理  M = 新郵件觸發代理    U = 新建 / 更新文檔觸發代理
 
Tell Amgr Status        
快速顯示 Agent Manager 隊列並且在「服務器」文檔中顯示「代理管理器」的設置。
 
Tell Amgr Quit          關閉服務器的 Agent Manager。
 
Tell Clrepl Log         
立即在服務器日誌 (LOG.NSF) 中記錄信息,而不是等待下一個日誌時間間隔。
 
Tell Clrepl Quit      
  關閉服務器上 Cluster Replicator 的所有實例。為了防止 Clrepl 任務在以後的會話中
運行,那麼請刪除 NOTES.INI 文件的 ServerTasks 設置中所有 Clrepl 任務實例。禁用服
務器的 Clrepl 任務只能防止此服務器到其他服務器的複製,而不防止其他群集服務器向此
服務器進行複製。
 
Tell NNTP Newgroup groupname         新建一個新聞組,使用此命令創建在新聞事務期
間沒被自動創建的新聞組。
Tell NNTP Newgroup Delete group_name(s) 刪除指定新聞組。
Tell NNTP Newgroup groupname pathname   提醒 NNTP 將帶有指定群組名和路徑名的群組
添加到它的當前高速緩存列表。通過模板創建群組時使用此命令。
 
Tell NNTP print cache list              打印當前 NNTP 討論群組和相應 Notes 數據
庫的列表。
Tell NNTP Print config               打印當前 NNTP 配置變量和他們的值的列表。
Tell NNTP Quit                         終止 NNTP 任務。
 
 By: Freeman Luo    QQ:308226397    Date: May 17, 2008
╰ ╰╰ ╰相約 相約 相約 相約 Domino╮ ╮╮ ╮QQ: 59905501
自由之翼我心飛翔 自由之翼我心飛翔 自由之翼我心飛翔 自由之翼我心飛翔, ,, ,Domino  原來可以這樣 原來可以這樣 原來可以這樣 原來可以這樣。 。。 。
 
Tell NNTP Show Config              顯示 NNTP 服務器配置設置,此設置在「服務器」
文檔的 NNTP 區段中進行指定。
Tell NNTP Show Groups              顯示服務器的新聞組的名稱和路徑。
Tell LDAP reloadschema             更新 LDAP 服務器上的目錄模式以反映由定製
「Domino 目錄」而引起的更改。
Tell LDAP exportschema             建立或更新 Domino LDAP Schema 數據庫。
Tell Router Delivery Stats         顯示 Router 郵遞的統計信息。
Tell Router Compact               壓縮 MAIL.BOX 並清理開放的 Router 隊列。
Tell Router Show Queues           顯示發向指定服務器的傳送隊列中的郵件。
Tell Router Exit                  終止服務器上的 Router 任務。
Tell Router Use databasename        
創建指定的共享郵件數據庫,並將 NOTES.INI 的 Shared_Mail 的值設置為 2,這樣就能為
了將郵件傳送和郵遞到該服務器而啟用共享郵件數據庫。
Tell Router Quit                   關閉服務器的 Router 任務。
Tell Sched Stats                  顯示空閒時間數據庫中預定和約會的總數。
Tell Sched Show username      在服務器控制台上顯示指定用戶的時間安排。使用此命令
來調查空閒時間數據庫中存在的問題。
Tell Sched Validate               立即校驗服務器上的空閒時間數據庫。
Tell Sched Validate username      校驗指定用戶的信息。
Tell Sched Quit                   關閉服務器上的 Schedule Manager 任務。
Tell Collector Collect            在所有指定服務器上運行統計信息收集,並生成統計
信息報告。
Tell Collector Quit              關閉服務器的 Collect 任務。
Tell Web Help                    列出所有的 Web Navigator 服務器控制台命令。
Tell Web Refresh                 刷新所有的 Web Navigator 的全局設置。
Tell Web Quit                    停止所有運行 Web Navigator 的複本。 
Tell HTTP Restart               更改下列各項中的設置來刷新 Web 服務器的更改。
Tell HTTP Show File Access        顯示計算機及虛擬服務器上有關文件系統保護的信息。
Tell HTTP Show Security 
顯示關於 SSL 和服務器密鑰集文件的信息(包括關於服務器是否啟動 SSL 的信息)。如果
在計算機上設置了虛擬服務器,則會顯示有關虛擬服務器的 SSL 信息。
 
Tell HTTP Show Users               顯示使用基於會話驗證進行用戶驗證的用戶名、IP
地址和會話的過期時間,基於會話的驗證只使用基本驗證。
 
Tell HTTP Show Virtual Servers   顯示運行於計算機上的虛擬服務器的列表。
Tell HTTP Quit                   關閉 Web Server 任務。
Trace servername                 使用 Trace 命令測試與服務器的連接。

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年3月11日 星期四

ASP.Net匯出PDF~Bt iTextSharp

Part.1
首先當然是將iTextSharp載回來加入參考,然後引用:
<%@ Import Namespace=" iTextSharp.text" %>
<%@ Import Namespace=" iTextSharp.text.pdf" %>
<%@ Import Namespace="iTextSharp.text.html.simpleparser" %>
程式:
//--輸出PDF
Response.ContentType = "application/pdf";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AddHeader("content-disposition", "attachment;filename=CusInvNo.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
System.IO.StringWriter stringWrite = new StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

GridView1.DataBind();
StringReader reader = new StringReader(stringWrite.ToString());
Document doc = new Document(PageSize.A4);
PdfWriter.GetInstance(doc, Response.OutputStream);

/*若要將檔案放在Server上
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(HttpContext.Current.Server.MapPath("TEST.pdf"), FileMode.Create));
*/

//0.處理中文~設定中文字型
string fontPath = Environment.GetFolderPath(Environment.SpecialFolder.System) +@"\..\Fonts\kaiu.ttf";
BaseFont BaseF = BaseFont.CreateFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font fontCh = new Font(BaseF, 12);

doc.Open();
//1.將GridView轉為PdfPTable
PdfPTable ptb = new PdfPTable(GridView1.Columns.Count);

//表格標題
for (int h = 0; h < GridView1.Columns.Count; h++)
{
ptb.AddCell(new Phrase(GridView1.HeaderRow.Cells[h].Text, fontCh));
}
ptb.HeaderRows = 1;
//表格內文
for (int i = 0; i < GridView1.Rows.Count; i++)
{
for (int j = 0; j < GridView1.Columns.Count; j++)
{
ptb.AddCell(new Phrase(GridView1.Rows[i].Cells[j].Text, fontCh));
}
}
//2.輸出
doc.Add(ptb);
doc.Close();
後來中文問題~將GridView轉成PDFPTable來解決。

2010年3月10日 星期三

ASP.Net錯誤訊息導頁

Web開發的系統導入後,有時候還是有可能被「厲害的User」弄出錯誤訊息!
以ASP.Net而言就是經典的黃底紅字啦!所以這時候最好做一下錯誤訊息導頁。

一、Web.config設定:

在Web.config的<system.web>中加入
<customErrors defaultRedirect="GenericErrorPage.aspx" mode="On" />

二、攔截網頁設定:
GenericErrorPage.aspx 裡面我是用DBMail來做通知工具,頁面如下:

<%@ Page Language="C#" %>

<%@ Import Namespace="System.IO" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

protected void Page_Load(object sender, EventArgs e)
{
if (Server.GetLastError() != null)
{
//使用asp.net 傳送MAIL
//MailMessage mm = new MailMessage("admin@asp.net","signally@yutian.com.tw","DCM網站錯誤訊息",Server.GetLastError().GetBaseException().Message);

string s = "",ShowMsg="",mm;
mm = (Server.GetLastError().GetBaseException().Message).Trim().Replace("'", "#");

//將錯誤清除
Server.ClearError();

//傳送紀錄錯誤的訊息給管理員。
try
{
//針對已經的錯誤(如:Send Mail)做處理
//SmtpClient sc = new SmtpClient("localhost");
//sc.Send(mm);

//改用DB mail
if (File.Exists(Server.MapPath("~/IsRD")))
{
Response.Write(mm);
}
else
{
ShowMsg = "系統忙碌中、或程式暫時無法執行,已通知系統管理員處理,請稍後再試。";
s = "Exec ZSendErrMsg @tp = 1,@em= '',@mm = '" + mm + "'";
Class1.ExecSQL(s);
Response.Write(ShowMsg);
//Server.Transfer("~/ErrorPage.aspx");
}
}
catch (Exception ex)
{
Response.Write(ex.Message );
}

}
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>伺服器忙碌</title>
</head>
<body>
</body>
</html>
三、利用在跟目錄下放一個叫"IsRD的檔案"來區別是否要攔截訊息∼

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

Visual Studio

從VS2005到VS2008~

雖然微軟有提供專案升級工具,但一個規模不小的專案總是會引用到許多不同的元件。
若再牽扯到版本問題的話就更頭痛了。
(開發環境跟伺服器各要有對應的Web.config檔)

其他還有IIS自己搞的烏龍∼
Web.config的<configuration>裡面會被加入下面會被自動加入xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"
造成編譯失敗。這東西預設是沒有的,所以請將它移除吧
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
 ==><configuration>

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年3月9日 星期二

Xpage-計算欄位使用HTML

Xpage對於計算欄位控制項中的HTML標記,會當作普通文字。若要使其顯示為HTML則要將「內容」→「基本」→「escape」屬性設為"false".

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年3月8日 星期一

[MS SQL Server] - 安裝PDF IFilter

安裝完SQL server預設支援的過濾器沒有PDF,所以要另外下載安裝。
目前Adobe的 IFilter 是出到6版。
http://www.adobe.com/support/downloads/detail.jsp?ftpID=2611

在server上安裝完之後要進入SQL執行指令,它才會被啟用。
sp_fulltext_service 'load_os_resources',1.
This command tells the Microsoft Search Service to load OS specific wordbreakers, stemmers, and such.
sp_fulltext_service 'verify_signature', 0.
Do not verify that the binaries are signed.

重新啟動SQL Server、Index service ... 乾脆重開機 ∼
查一下[sys.fulltext_document_types],看PDF有沒有確實被吃進去。

重建索引。

完工…

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年3月5日 星期五

MSSQL建立全文檢索

幸好當初規劃文件管理系統時是把檔案存在DB的image欄位裡面

現在要做全文檢索方便多了!

0.首先啟用 fulltxt
1.建立全文檢索目錄:
2.建立檢索索引:
3.查詢檢索:

一、啟用 fulltxt指令:sp_fulltext_database enable

建立Fulltext目錄

[資料庫]→儲存體…如下


建立全文檢索

選擇要被檢索的欄位,並指定該欄位的檔案類型。




--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年3月2日 星期二

Xpage-網頁間的資料傳遞?

網頁間傳遞資料最常用的就是Post或者Get,但今天卻突然發現自己不知道Xpage裡面要怎麼做!趕緊查了一下Xpage wiki。
總是有好心人會提供範例:

q = facesContext.getExternalContext().getRequest().getQueryString();
k="UXID";
v=0;
if (q.indexOf(k+"=")>-1) {
    v = q.substring(q.indexOf(k+"=")+k.length()+1, q.length());
    v = (v.indexOf("&")>-1?v.substring(0,v.indexOf("&")):v2);
}
if (v == "insert") return '1';

利用" facesContext"來取得QueryString
然後再用程式去解析字串∼上例是取出"UXID="後面到"&"之前的字串。
因為我是用來做隱藏條件,所以再加一行判斷式若是"insert"則傳回1,表示「可見的!」
 
--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年2月26日 星期五

C#還是比較好用∼補零原來很簡單!

XXX.ToString("00")
XXX如果是月份函數:則原本1,2,3 ... 12
會變成:01,02,03 ... 12

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年2月24日 星期三

Notes-Web化的苦痛:時間選擇器

在Notes還沒有Xpage的時代裡,要將應用程式Web化有幾個特別痛苦的地方。
1.人員名錄選擇器
2.時間選擇器
3.日期選擇器

(↑依照痛苦指數排名)
日期、時間網路上到還有JavaScript的解決方案可以選。
只是要放在Nsf裡面需要一些技巧。而人員名錄就真的只能硬Code了。
自己做子表單、嵌入視界、用JS抓勾選欄位的UNID、再用代理程式撈資料回來…
十分麻煩。雖然之前已經有前輩所作的模組,不過要搬過來要遷就它反而麻煩。
這一部份有空再來整理。先講一下「時間選擇器」搬進Notes裡面的方法。

引用:暗黑執行緒的這篇
http://blog.darkthread.net/blogs/darkthreadtw/archive/2007/09/04/code-javascript-time-picker.aspx
以及所使用的Timepicker模組。

Timepicker模組有兩部份:圖片、JS檔
1.JS檔的部份把程式碼Copy出來,放到Script程式庫然後再於表單的JS表頭引用即可
2.圖片的話必須注意配合放置的路徑。放到NSF檔中的"資源/圖片"裡要引用實在是很
痛苦,而且各AP之間無法共用。所以我是放到"data\domino\icons"下面。
將ImagesPath目錄設為:"/icons/"即可被抓到。
3.在表單中加入這行:
<script type="text/javascript">afa_ExtendTimePicker("AwayTime");</script>
並選取文字~透過HTML即可。

p.s.AwayTime是欄位名稱
完成後如下:

p.s.2
Web開發時,ID不要漏掉。JavaScript很依賴他的!

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年2月23日 星期二

與害偕行,以死自繞~哀溺文

暴力和尚一頁書開扁之前都喜歡調一下書包,這樣揍起人來似乎更有感覺!
這次嗆的這句「與害偕行,以死自繞」之前沒聽過?
原來出自…

哀溺文

零陵之氓鹹善遊。一日,水暴甚,有五六氓乘小船絕湘水。中濟,船破,皆遊。其一氓盡力而不能尋常。其侶曰:「汝善遊最也,今何後為?」曰:「吾腰千 錢,重,是以後。」曰:「何不去之?」不應,搖其首。有頃,益怠。已濟者上岸上,呼且號曰;「汝愚之甚!蔽之甚!身且死,何以貨為?」又搖其首,遂溺死。 吾哀之。且若是,得不有大貨之溺大氓者乎?於是作《哀溺》。

吾哀溺者之死貨兮,惟大氓之為憂。洩濤鼓以風湧兮,浩滉蕩而無舟。不讓祿以辭富兮,又旁窺而詭求。手足亂而無如兮,負重逾乎崇丘。既浮頤而滅膂兮, 不欲釋利而離尤。呼號者之莫救兮,愈搖首以沉流。發被齷以舞瀾兮,魂悵悵而焉遊。龜黿互進以爭食兮,魚鮪族而為羞。始貪贏以嗇厚兮,終負禍而懷讎。前既沒 而後不知懲兮,更攬取而無時休。哀茲氓之蔽愚兮,反賊己而從仇。不量多以自諫兮,姑指幸者而為謀。夫人固靈於鳥魚兮,胡昧周而蒙鉤。大者死大兮,小者死 小。善遊雖最兮,卒以道夭。與害偕行兮,以死自繞。推今而鑑古兮,鮮黨以保其生。衣寶焚紂兮,專利滅榮。豺狼死而猶餓兮,牛腹屍而不盈。民既貿貿而無知 兮,故與彼鹹諡為氓。死者不足哀兮,冀中人之為餘再更。噫!

作者:柳宗元 唐
本作品收錄於:《全唐文/卷0583》
--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年2月21日 星期日

Xpage - 視圖 -自訂超連結

在XPage裡面我們可以很方便的取用視圖內容,呈現在網頁上。
而只要設定幾個步驟就可以用連結的方式開啟文件。那、如果是要開啟自訂的超連結呢?
假設我的世圖中有一欄位DBPath是放電子表單資料庫路徑、eFormName是名稱。
請將來源視圖中的欄位作如下設定:
"[<a href=\\" + DBPath + " target=_blank >"+eFormName+"</a>]"

然後Xpage的視圖直欄作如圖之設定:1.選HTML,2.不要勾產生連結∼

p.s.加前後"中括號"是為了相容傳統Web方式。
--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

HL2_EP2

今年的年假計畫之一就是把HL2再玩過一遍,然後玩EP1、EP2。最重要的是把Alyx替換為Korin模組,變伸Kawaii的Japan妹。替換人物模組時一開始HL2跟EP1都很順利,只要把解壓縮出來的兩個資料夾放到HL2(或Ep1)目錄下就可以了!但是在EP2到一個奇怪的現象!一樣將檔案放到EP2下面後,一開始都正常。但到了Alyx被"獵人"捅了之後,卻又變回原來的模型?後來才知道似乎後半段用的人物模型有差,所以亦須修對得修改檔名才行。

參考:
EP2 FIX: After Alyx is attacked by the Hunter, she switches back to her old model. To fix this, make a copy of all the files in the model folder. Change their names to alyx_ep2. Leave the file type the same. (You should now have a bunch of 'alyx' and 'alyx_ep2' model files in your model folder
把"alyx"都變成"alyx_ep2"就OK了!!
google了半天korin mod hl2 ep2都找不到解答,後來轉而參考其他模組在EP2上如何使用材終於找到答案!
 
 --
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年2月13日 星期六

Notes-如何在Notes client中要求使用者再次輸入密碼

一般在使用Notes client的時候,都是在一開始的時候就輸入ID密碼驗證身份。進入系統後開啟每支AP時,由AP本身的設定去檢查該名使用者是否有權限可以進入或是讀寫…
最近客戶Boss丟了這個問題出來:希望可以在開啟某支AP時要求該名使用者再次輸入一次密碼。乍聽之下有點怪,明明Notes已經有良好的權限控管機制了?不過再代入角色想一下,大概是覺得怕自己已經登入使用中的電腦,被別人偷用。利用他的ID進入存取資料∼好的…那Soluction?

目想到的是利用Lotus Script執行讀取ID的方式來達成:

Sub Postopen(Source As Notesuiview)
'------------------測試強制切換ID-----------------------------
Dim w As New NotesUIWorkspace
Dim s As New NotesSession
Dim uidb As NotesUIDatabase
Dim myID As notesID
Dim CurrentUserName As String
Dim IsAllow As Boolean
Set uidb = w.CurrentDatabase
fNames = w.OpenFileDialog( False, "請選擇ID檔",, "D:\lotus\NotesID")

If Not(Isempty(fNames)) Then
'On Error Goto ErrorHandler
CurrentUserName =s.UserName
Set myID = New notesID( fNames(0) )
If (CurrentUserName = myID.userName ) Then
msgStr$ = "OK!"
IsAllow = True
Else
msgStr$ = "No good!"
IsAllow = False
End If
msgStr$ = msgStr$ & Chr(10) & myID.userName
msgStr$ = msgStr$ & Chr(10) & myID.commonname
msgStr$ = msgStr$ & Chr(10) & myID.internationalPublicKey
'msgStr$ = msgStr$ & Chr(10) & myID.internationalPrivateKey
'ProgEnd:
Else
IsAllow = False
End If
Msgbox msgstr$

If Not ( IsAllow) Then
Call uidb.Close
End If

'ErrorHandler:
'Msgbox "Error:" & Err & "__ID:" & fNames(0)
'Call uidb.Close
End Sub

這是網路上找到的讀取ID檔Class。
NotesID Class
利用它存取ID檔並觸發密碼驗證,之後再比對是否與現行ID相符以達成身份驗證的目的。
p.s.1.寫在postopen中是因為DB必須先開啟,才能用UI去Close
p.s.2.要調用myID.internationalPublicKey才會觸發密碼驗證。

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年2月12日 星期五

Xpage上要如何調用CGI變數

Notes傳統開發Web的時候,可以將欄位名稱設CGI變數名稱,以取得CGI變數資料。
例如使用者IP、HTTPS狀態、Server Name等。
但我們在Xpage上無法再用設定欄位名稱的方式來取得CGI變數資料。
而computeWithForm = both的方式只能用在@Formula上。
所幸我們有現成的程式庫可以達成這需求:
1.到Demo Discussion(討論區範本)中把程式庫:xpCGIVariables搬回來。
2.在程式中我們用Server端的JavaScript去呼叫並取用它:
facesContext.getExternalContext().getRequest().getRemoteAddr());
而我則是把它作成一個「自訂控制項」來方便取用這些CGI資訊
類似傳統上作成「子表單」的方式。


--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年2月10日 星期三

Xpage_檔案上傳救星

從前Notes Web的檔案上傳真是一場惡夢!
現在Xpage來救你了!

在表單中準備好一個"有錢的"欄位檔作存放區。


然後把上傳元件、下載元件都繫結過去就OK啦!


如下:



--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

2010年2月4日 星期四

Notes(NSF檔)中調用圖片及CSS




放在Notes中的圖片要調用
將一般路徑:images/img01.gif
改成: ./img01.gif


Xpage中的空白字元代碼:&#160;


網路上寫好的CSS檔要拿到Notes裡面使用。由於使用Xpage的「自訂控制項」放入Xpage裡面後ID會被改掉,所以CSS檔裡面ID宣告法(用"#"做開頭的定義),必須改為Class(用"."做開頭的定義)的方式。而原本頁面中引用ID的地方,必須再去指定他的Class。
選擇器 {
屬性:設定值;
...
}
p.s.1.頁面中原先使用id宣告的部份若是有多層,則設定Class時也必須手動上層的Class定義加進來。
p.s.2.注意!在修改ID成Class時不要用「全部尋找/取代」的方式,不然會把色彩設定的#也改到。



當使用Xpage出現「未授權檢視此網頁」時,除了注意ACL中
Anonymous是否有加入並給予權限。
另外也檢查一下是否使用正確的ID建立Nsf檔!


--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言