.Net 的安全

ASP.Net 的身分驗證
以組態設定(web.config)即可,不必再使用以前的 cookie.
大致的 web.config 如下

<system.web>
…..
<authentication mode=”Forms|Windows|Passport|None”>
  <form name=”your_form” loginUrl=”secure/login.aspx”/>
</authentication>
<authorization>
  <allow users=”*”/>
</authorization>
<globalization requestEncoding=”utf-8″ responseEncoding=”utf-8″/>
…..
</system.web>

子目錄會自動繼承父目錄的 web.config.
一般子目錄裡的 web.config 只有設定

…..
<deny user=”?”/>
…..

程式裡面則是使用 System.Web.Security.FormsAuthentication 類別以及 Redirect 方法作轉向以及驗證工作.
類別的安全
某些類別有受到系統保護,當無法存取時,會丟出 SecurityException.
有兩種方法可以實現:
1.命令式,為權限建立 instance.

new FileIOPermission( FileIOPermissionAccess.Read, Path).Demand()

2.宣告式,以屬性的方式來宣告,比較固定

<FileIOPermission( SecurityAction.Demand, write=”/tmp”>
void foo()
{
}

簡單說,類別若有”類別Permission”的類別,就可以用”類別Permission”去控制類別是否可以被存取.
AssemblyInfo.cs evidence, 此部分與 gac_util 有關係
Permission Set, Security Policy
安全性原則,用 .Net 工具就可以管理其組態.
Role -> 類似群組
Identity -> 類似 user 帳號
Principal -> Role
PrincipalPermission
非結合 Windows 的方法

GenericIdentity MyIdentity=new GenericIdentity(“myuser”);
string[] MyStringArray={“Mgr”,”Developer”};
GenericPrinpal MyPrincipal=new(….);

結合 Windows 方法
AppDomain.CurrentDomain.SetPrincipalPolicy()
Thread.CurrentPrincipal 取得或給定
或先取 Identity, 再由 Identity取得 Principal
WindowsIdentity.GetCurrent(); 取得目前的 identity
=====
ASP.Net 的認證與控制
基本上都是在 web.config 中指定

<authentication mode=”Forms”>
<form name=”” loginUrl=””/>
</authentication>

mode 可以填 passport, none, windows

<authentication>
<allow users=”*”/>
<deny users=”aaa”/>
</authentication>

Weak reference 與垃圾回收機制

閱讀 RUN!PC 蔡學鏞的文章時隨手記下來的~
WeakReference() 弱參考~ System.GC
不太清楚使用時機.
GC=Garbage collection
支援 GC 的語言有 eiffel, python, ruby, java, c#…
GC 演算法,一般常見的作法就是 “標記,清掃,縮併”.
1. mark and sweep collection
2. compacting collection or copying collection, compact collection 就類似磁碟最佳化,copying collection 就類似把東西搬到另外一個地方去重放.
目前被多數 GC 採用的方法則是上述的综合體 – generation collection.
垃圾收集器中有數個 Generation,一般有3個,可以呼叫 System.GC.MaxGeneration 取得;若要強制垃圾收集器進行蒐集垃圾,可以用 GC.Collect( int generation ) 或 GC.Collect();用 GC.GetGeneration(object obj) 可以得知物件在哪個 generation 中.
Rotor?? 是 SSCLi 的代號.
善用 GC 的方法就是不用的變數早早設置為 null.
可參考:
Richard Jones Algorithms for Automatic Dynamic Memory Management.
http://blogs.msdn.com/joelpob/archive/2004/02/26/80776.aspx
關於蔡學鏞其人,可以參考:
Sleepless in Java
Sleepless 2.0

doxygen

以前試 doxygen 怎麼試都試不出來~後來才知道是註解錯了~~
從 RUN!PC 上看到 Java 的註解方法,用這招就萬無一失了~

/**
* description
* –> 一定要空一行喔!!!
* @param text
* @todo
* @see
* @return
* @throws
*/

想要知道怎麼使用 doxygen 的話,可以參考這篇.
網址:http://www.stack.nl/~dimitri/doxygen/doxygen_intro_cn.html
寫的蠻仔細的,中文參考資料也好像就這麼一篇….

機車皮帶又斷了

星期二的早上, 5/11 騎車上班的途中,到福和橋下的時候,機車突然發出啪啪的聲音,然後油門怎麼催都沒有反應,我知道,這是因為機車的皮帶斷了~~
於是只好和太太把車牽去修理,並請他先搭計程車去上班~~
可能是因為太早了吧,才八點多,雖然這附近有蠻多機車店的,但並沒有任何一家機車店開門~~送太太搭計程車之後,心裡想,把車丟了,先去吃早餐好了~~
來到早餐店,
“老闆,一份烤煎蛋還有一杯奶茶”
“什麼?”
喔~~原來是外籍人士,可能是越南人吧,所以聽不懂…
“一份火腿蛋三明治,一杯奶茶”
“好…”
過了不久,三明治還有奶茶送到.咬了三明治一口,發現裡面有生菜~光這點,口感就與其他家早餐店的三明治不同了,再加上醬料也相當不錯,讓我對這家早餐店的印象不錯…
吃完,回去機車那邊,發現剛好有一家機車店開門了~~
老闆是個年紀有點大的中年人,邊修車的同時,他問我,要不要順便驗一下排氣?
我說好~~
很愉快的花了一千元搞定之後,就快要九點了….
於是就趕緊騎車去上班了~~
運氣還真的是不錯啊~~

ltdl library

可以輸入 info libtool 找 Module loaders for libltdl 就可以得到不少資訊.
簡單說,就是可以製作能動態載入 module/plugin 的 library, 以 linux 來說,底層其實就是 dlopen, dlsym 這些函數
這個 library 其實是一個 wrapper, 跨了好幾個平台: BSD, Linux, Win32…
configure.in 中的設定
AC_LIBLTDL_CONVENIENCE
AC_SUBST(LTLINCL)
AC_SUBST(LIBLTDL)
AC_LIBTOOL_DLOPEN
AC_PROG_LIBTOOL
AC_CONFIG_SUBDIRS(libltdl)
Makefile.am 中的設定
SUBDIRS=libltdl
INCLUDES=$(LTDLINCL)
prog_LDFLAGS=-export-dynamic
prog_LDADD=$(LIBLTDL) “_dlopen” self “_dlopen” fxx.la
prog_DEPENDENCIES=$(LIBLTDL) fool.la
prog 指的是執行檔名稱
而 module/plugin 的 Makefile.am 設定
xxx_la_LDFLAGS=-module
函數蠻多的,可以直接從 ltdl.h 去找或參考 info
對於 Multi-Thread 也有支援.

[亂逛]WxWidget相關軟體

2003年底某天去找 WxWindows (現已更名為 WxWidget) 逛到的一些用 WxWidget 這個 framework 的軟體.
WxWidget http://www.wxwidget.org 官方網站
WxJS http://wxjs.sourceforge.net
WxBasic http://wxbasic.sourceforge.net
WxWorkshop http://wxworkshop.sourceforge.net 開發工具
poedit http://poedit.sourceforge.net 編輯 po 檔的工具,用過的感覺還不錯~~蠻好用的~~
ldaptool http://ldaptool.sourceforge.net LDAP Explorer Tool
text2rtf http://www.wxwidget.org/text2rtf/index.htm 轉換 LaTex 的文檔為 rtf / html / xlp
pgadmin3 http://pgadmin.org/pgadmin3/index.php Postgre SQL 的管理工具
WxBlogger http://homepage.mac.com/codonnell/wxBlogger/Personal Blog, blog 的內容都會轉存為 html 檔.屆時發佈這些 html 檔就行了~~

骨折記

記得 2000 年年初的時候,有一次,因為客戶有問題,處理的一肚子火,於是很生氣,就打牆壁,想說牆壁有貼一塊軟木紙,應該不會有事,就用力打.
結果……好痛……
那時候已經晚上九點多了,強忍痛意騎車去看醫生~~
照了 X 光,醫生說,”是骨折,右手手掌連接小指的那根骨頭斷了~你明天最好去大醫院看~~”
所以只幫我固定了一下~~而我仍然神勇地騎車回家……
隔天去了永和耕莘醫院,醫生看了看就說,”少年仔,跟別人打架喔~~”
我說,”不是….”
醫生說,”不要騙了啦….”
我只好不說話,因為實在不想說出原因…..
於是就打了一個月的石膏…..開始練習左手吃飯,左手打字,左手用滑鼠……
經歷了這件事情以後,我體悟到一件很重要的事情:
就是…..心情不好的時候,絕對不要自殘身體….否則…..會更痛苦…..

在 .Net 上不使用 crystal report.net 的列印方法

因為手頭並沒有 Visual Studio.Net, 理所當然也沒有 Crystal Report.Net…
所以就去找看看是不是有不用 Crystal Report.Net 就可以進行預覽列印與列印的方法.
http://www.ondotnet.com/pub/a/dotnet/2002/06/24/printing.html
這篇是介紹 c# printing 的函數,介紹的相當仔細~
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vboriprintdocumentcontrol.asp
http://samples.gotdotnet.com/quickstart/
http://www.microsoft.com/taiwan/msdn/library/2003/May-2003-tw/printwinforms.htm
這三篇則是微軟的官方資料~
前一篇是以 vb.net 做介紹,用法大致差不多~~
http://www.c-sharpcorner.com/Code/2002/July/WinFormsPrinterSel.asp
這篇則是介紹取得印表機與選擇印表機的方法~~