Text Banner

有看過類似這種字嗎??
好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好
好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好
好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好
好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好
好好好好好好好好好好好好好好好好好好好好好頂頂頂頂頂頂頂頂好好好好好好好
好好好好好好好好好好好好好好好好頂頂頂頂頂頂頂頂好好好好好好好好好好好好
好好好好好好好好好好好好好好好好好好好好好頂頂好好好好好好好好好好好好好
好好好好好好好好好好頂頂頂頂頂頂頂好好好頂頂好好好好好好好好好好好好好好
好好好好好好好頂頂頂好頂頂好好好好好好好頂好好好好頂好好好好好好好好好好
好好好好好好好好好好好好頂好好好好好頂頂頂頂頂頂頂頂頂好好好好好好好好好
好好好好好好好好好好好好頂好好好好好頂頂好好好好好頂頂好好好好好好好好好
好好好好好好好好好好好好頂好好好好好頂頂好好好好好頂頂好好好好好好好好好
好好好好好好好好好好好好頂好好好好好頂頂頂頂頂頂頂頂頂好好好好好好好好好
好好好好好好好好好好好好頂好好好好好頂好好好好好好頂頂好好好好好好好好好
好好好好好好好好好好好好頂好好好好好頂好好好好好好頂頂好好好好好好好好好
好好好好好好好好好好好好頂好好好好好頂頂頂頂頂頂頂頂頂好好好好好好好好好
好好好好好好好好好好好好頂好好好好好頂好好好好好好好頂好好好好好好好好好
好好好好好好好好好好好好頂好好好好好頂好好好好好好頂頂好好好好好好好好好
好好好好好好好好好好好好頂好好好好好頂頂頂頂頂頂頂頂頂好好好好好好好好好
好好好好好好好好好頂頂頂頂好好好好好頂好頂頂好好好好頂好好好好好好好好好
好好好好好好好好好好頂頂頂好好好好好好頂頂頂好好頂好好好好好好好好好好好
好好好好好好好好好好好頂頂好好好好好好頂頂好好好好頂頂好好好好好好好好好
好好好好好好好好好好好好好好好好好好頂頂好好好好好好頂頂好好好好好好好好
好好好好好好好好好好好好好好好好好頂頂好好好好好好好頂頂頂好好好好好好好
好好好好好好好好好好好好好好好好頂好好好好好好好好好好頂頂好好好好好好好
好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好
好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好
因為好玩的關係
所以就自己寫了一個
原理:
1.首先我先應用 Graphics.MeasureString() 去算出字大略的大小
2.依據大小建立 bitmap
3.應用 Graphics.FromImage() 由 bitmap 那邊得到 Graphics
4.然後畫上文字 (DrawString)
5.再利用 bitmap 特有的 GetPixel() 去一個點一個點判斷,並應用 StringBuilder 去 append 字串
6.輸出~~
下載
下載檔案

位於網路上芳鄰的.Net程式無法執行

把程式放到網路上芳鄰上,然後到太太的電腦上執行.
可是卻會出現安全性警告.
我猜想是安全性設定的問題,果然沒錯~
但 Windows Me 上沒有 2000/XP 的”Microsoft .NET Framework 1.1 組態”程式,那該怎麼辦呢??
我用Google找了一下,發現了這篇文章
提到可以手動使用 caspol.exe 去設定~
看了一下以後,我用了這行

caspol -machine -chggroup LocalIntranet_Zone FullTrust

就搞定了~~
其實應該要指定程式碼群組會比較好說~
不過想想,以後再研究吧~~
^_^

.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

在 .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
這篇則是介紹取得印表機與選擇印表機的方法~~

Windows Installer XML

今天看到 Taiwan C!Net 的一篇新聞: http://taiwan.cnet.com/news/software/0,2000064574,20088766,00.htm
想不到,微軟居然 release 專案到 http://sourceforge.net去,蠻破天荒的~~@_@
專案的名稱是 Windows Installer XML (WiX),而網址在: http://sourceforge.net/projects/wix/
是的,看專案名稱就知道這是一個有關 installer 的專案.
以下從原網站貼過來,並翻譯了一下.

The Windows Installer XML (WiX) is a toolset that builds Windows installation packages from XML source code. The toolset supports a command line environment that developers may integrate into their build processes to build MSI and MSM setup packages.

Windows Installer XML (WiX) 是一組用來從 XML 源碼裡建立 Windows 安裝套件的工具組.這個工具組提供了一個命令列的環境,讓使用者可以將製作 MSI 與 MSM 安裝套件的步驟整合到自己的開發程序裡面.

下載以後,稍稍的玩了一下,發現用法很簡單(難的是 .wxs 的內容,有點小複雜,目前也已經有人在 SourceForge 開了專案要來解決這個複雜的部分)~~
步驟大致是這樣的:先用 notepad 製作出一個 .wxs , 這個 .wxs 其實是一個特殊的 .xml,提供了所有 package 所需要的資訊.然後再使用 candle 這個指令將 .wxs 轉為 .wxiobj 中介檔.
你可以使用 notepad 去觀察 .wxiobj ,你會發現其實他也是一個 .xml 檔案,只是更讓人看不懂~~最後再使用 light 指令,就可以產生出 .msi (installer)或 .msm (installer module)檔案了.這裡也提供了另外一個有趣的工具叫 dark, 它是一個反向工程的工具,用來把 .msi 或 .msm 轉為 .wxs
仔細看一下上面提到的三個工具的名字: candle, light, dark 翻譯成中文正好就是蠟燭,點亮,吹滅. 很有趣不是嗎?! 🙂
WiX 專案發起人的 blog
Using the WiX Toolset to Integrate Setup into Your Development Process

ndoc

簡介
雖說 Visual Studio.Net 已經可以為 c# 程式製作說明文件,但是如果不想安裝這個龐然大物,卻又想要享受這樣的便利,那麼該怎麼辦呢??
其實,.Net Framework 內的 compiler: csc 已經具有這樣的選項.只要在編譯的時候指定了這個選項,那麼,compiler就會自動將程式中我們依照規定所加上的註解擷取為一個 xml 檔案,裡面就是說明文件啦~~
那麼,什麼是”依照規定所加上的註解”呢??
原來這個東西的正名應該是[XML Documentation in C#].它是一份由微軟所訂定的白皮書,裡面載明應該要怎麼註解.
他最主要的用意是讓開發者能夠為程式做一些註解,而不必在程式整個完成之後才去做 API 說明文件這個苦工.像是 Java, C/C++…等等都有類似的工具可以幫忙做掉這件事.

Continue reading “ndoc”

.Net 的資源檔

資源檔的格式可以直接是 .txt 文字檔
.txt 可用 resgen 轉為 .resources
.txt 的格式很簡單,就是這樣

xyz=aaa

然後可再用下列命令編為 assembly (注意:可依據 locale “/c” 喔!)

al /out:your_app.resources.dll /V:1.0.0.0 /c:zh-TW /embed:your_app.zh-TW.resources,your_app.zh_TW.resources,private

一般來說,製作多國語系資源檔時,與 ap 放在同一層的就是 en 這個 locale.
程式內的寫法: new ResourceManager(“your_app”,this.getType().Assembly );

A Sneak Preview of Visual C# Whidbey

A Sneak Preview of Visual C# Whidbey
不小心在MSDN找資料的時候逛到的,花了一點時間去看,發現多了不少功能….
語言方面,支援了generic, partial types, anonymous methods, Iterators, Alias Qualifier (Global Namespace Qualifier), Static Classes, ….
編譯器也增加了不少新選項…
最令人吃驚的應該是RAD tool 部分了,這次增加了 Refactoring 的功能,不再讓 JBuilder 專美於前~~然後還有 Expansion(自己用xml定義intellisense?!), 自動美化程式, profile, 更 powerful 的 intellisense, 自行定義介面顏色, msbuild, object browser, 新的介面控制項,還有加強開發工具的一堆功能….
看來微軟可真的是下足本了!!
p.s.ASP.Net 看來也有不少改進,可以參考這裡
補充:
人家有翻譯好的,看起來更快樂
MSDN 網站:
http://www.microsoft.com/taiwan/msdn/library/2003/dec-2003/WebDevInWhidbey.htm
這邊可能還有別的文章喔~~
Move-to.Net:(可能需要登入)
http://move-to.net/Comm/Whidbey/1346.aspx
http://move-to.net/Comm/Whidbey/1347.aspx