迷失网络

如果你误读成“迷失公园”或“迷失侏罗纪”,那你可能真的迷失网络了。
随笔 - 88, 评论 - 1932, 引用 - 106

导航

关于

lostinet@lostinet.com这个油箱不能用了。因为空间没了,lostinet.com指向为127.0.0.1 。。。

标签

每月存档

最新留言

广告

【第1页/共2页,25条】
首页
前页
1

使用了 VWD 的一些问题.

下载VWD 

今天安装了一下 VWD , 发现AspNet2.0Beta1有一个兼容性的Bug。这个问题主要是

<head id=”head1” runat=server> 在asp.net1.1之前是 HtmlGenericControl ,而在 Asp.Net2 中是 HtmlHead , 并且这个 HtmlHead 不是继承 HtmlGenericControl 的。

这就导致了这个文件不能编译过去:

Parser Error Message: The base class includes the field 'htmlHead', but its type (System.Web.UI.HtmlControls.HtmlGenericControl) is not compatible with the type of control (System.Web.UI.HtmlControls.HtmlHead).

解决方法当然有,不过很麻烦。希望能从 AspNet2 上直接把这个问题解决掉。

posted on 2004-06-30 02:41:00 by lostinet  评论(6) 阅读(2380)

VWD (Visual Web Develop) 2005 Beta1 的截图.

进入 http://blog.joycode.com/lostinet/gallery/885.aspx 浏览10张的界面的图

posted on 2004-06-29 22:06:00 by lostinet  评论(5) 阅读(2328)

被ASP.NET的权限问题害了一晚.

今天要在 SPS 里做个东西.不过一直都是这个错误:

System.TypeLoadException: 因为格式无效,未能从程序集 CuteChat, Version=1.0.0.0, Culture=neutral, PublicKeyToken=da0fc3a24b6f18ba 中加载类型 CuteChat.ContextBoundModel.AspectObject。 at CuteChat.SPLib.ChatWebPart.WriteInternal(HtmlTextWriter output) at CuteChat.SPLib.ChatWebPart.RenderWebPart(HtmlTextWriter output) in l:\solutions\cutechat\extends\forsharepoint\cutechat.splib\chatwebpart.cs:line 45
 
呵呵。我实在是不知道为什么会出这个错误的。因为这个类在其他地方完全能正常使用。
 
当然,测试了一晚也不是说没有结果的。当我修改到web.config的的时候,情况变了。把WSS_Minimal改为Full并且重启动IIS就解决了。
 
不过这个错误提示和最后改权限的做法好象没有怎样对应啊。难道是低权限不能继承 ContextBoundObject ?..
 

posted on 2004-06-23 02:13:00 by lostinet  评论(4) 阅读(2612)

对于微软拼音2003,我的看法。

看了 关于中文输入的一点小建议 里面的回复。我就装了MSPY2003。

其实我很早就想换微软拼音。不过就是因为一直都有一个很大的问题。(这个问题也就是很多其他输入法的问题)

就是它想智能一点,往往会把它认为你常用的字自动排到前面去(非常没有规律),而且没有提供选项来禁止“这么智能”的动作。

而这样的结果是,一个拼音里有几个字都是很常用的,但是位置却经常换来换去。这真的很多手!

我的一个建议是,在 1 的前面放一个常用字选择。这个字是用空格来选的。这样的话,其他字的编号就不用变了。

还有一点就是按Shift来切换中英文的问题。Shift是很常用的键,被它这么一搞,我很经常搞错中英文输入。这也很麻烦。同样,没有办法设置这个多余的行为。

 

当然,各人有各人的习惯,为什么就不提供选项去改变它呢 ?

posted on 2004-06-22 17:47:00 by lostinet  评论(102) 阅读(33728)

DHTML 中的绝对定位。

下面的东西显示了在复杂的情况下,
怎样最好地在一个Element的旁边显示某个DIV。

要测试它,请点 ClickMe

当然,你可以滚动窗口,使这个按纽靠窗口的 左/上/右/下 的情况,观察菜单的弹出方位。

全部代码:

posted on 2004-06-18 16:14:00 by lostinet  评论(13) 阅读(3442)

两年前写的 C++ 的 JString

记得我刚出来的时候,还没有学DotNet呢。

那时主要是用ASP和DHTML,语言是JScript 。 本来打算重操旧业-学C++的。

不过写惯了脚本,就十分讨厌C++里操作字符串那么麻烦。所以就做了这个东西。

后来到了2002年11月时,我发现DotNet上手竟然那么的容易。。(我发现里面的东西和JScript,VB是很相似的。。) , 后来就转到DotNet中了。也不继续弄C++了。

所以我一个朋友学C++时,我硬把他拉到 C# 阵营里了。

不过今年过了后,我还是重新补充C++的知识的,毕竟学DotNet多了,需要学其他的东西补充一下。

这一个类体现了我对C++中内存管理的理念。 对于性能,我实在是不太要求。能保证是常规性能的1/4就够了。(总比C#的快吧,JScript的字符串操作都那么慢了,我还不是在用:)

当然,这些都是针对应用程序的角度去用的。 如果要做个被广泛应用的XMLParser之类的东西,当然还是用优化的方法好。

我想知道网上有没有类似的东西,或者开源项目?我比较感兴趣。

posted on 2004-06-18 10:08:00 by lostinet  评论(10) 阅读(2707)

实现在Remoting中传递DataRow。

我使用Remoting也有很长的一段时间了。一直以来,我心中最痛的就是 DataRow不能序列化!

这使我无法这样地写 DataRow GetEmployee(int empid) , 而必须改为 DataTable GetEmployee(int empid) ;

自从发明了CBM后,这个也变成可能了。详细的代码如下:

这个代码的原理是,在客户端与服务器端通信的时候,如果发现有DataRow需要传输,则先把,这个参数换成null,

然后把DataRow打包在某个DataSet中,通过CallContext来进行传输。传输完毕后,再进行解包,把参数换会DataRow。

如果你有兴趣测试这个代码,可以到 http://www.contextboundmodel.net/ 里下载 CBM 的源代码。

posted on 2004-06-17 15:05:00 by lostinet  评论(8) 阅读(2310)

怎样把所有的dll都打包进一个exe中给客户运行?

通常,写一个WinForm的程序都会引用多个dll的。如果把这个WinForm发布出去,那么一个目录下就有很多个dll了。

如果希望只发布一个client.exe,那么应该怎样做呢?

做法很简单,就是把dll以资源的形式打包进 exe 里就好了。

然后问题就在于,你怎样才能在运行时加载这些dll。

一个可行的方法是,在程序运行的时候,一次过把这些dll都load出来,然后用AppDomain.Load来加载它。

但是这样有一个不好的地方,就是启动速度太慢。

AppDomain提供了一个事件,叫 AssemblyResolve ,这个事件是告诉你,DotNet找不到它想找的Assembly了。

通过关联这个事件,比较一下ResolveEventArgs.Name是否是你打包的那些东西,就能在需要的时候才加载dll了。

例子在这里下载 ResOfDll.zip

当然,如果你开发的是dll,并且引用别人的dll,也可以这样做。不过难点在于,你必须保证在需要使用其他dll的类之前,关联了AssemblyResolve这个事件。(这个可以在所有使用 其他dll的类 的类的静态构造方法中,执行一段代码来保证这个条件)

posted on 2004-06-15 11:22:00 by lostinet  评论(20) 阅读(6768)

终于把OLE里的定义抽了出来了。

一直都想找IOleClientSite等接口的定义。不过找光了机器上的tlb文件都不行。

后来竟然发现,System.Windows.Forms.dll 里就有了。

这是我把它们抽出来的结果,不过还没有经过任何测试! nativedeclare.cs.txt 

使用这个的用途是实现OLE里某些接口,然后可以脱离IWebBrowser2来直接 HOST MSHTML 了。

(想一想,用这个可以用程序截取某某网站的截图!)


5555,实在太感谢 IAMROBOT 了。http://www.mvps.org/emorcillo/vb6/tlb/olelib.shtml 里的tlb倒入后完全可以正常使用:)

posted on 2004-06-10 11:36:00 by lostinet  评论(14) 阅读(5599)

托管的 ElementBehavior ?

我想不少人都知道 ElementBehavior 是什么回事。通常,我们是用 *.HTC 的形式,用脚本来编写它的。

但实际上,我们可以用C++,VB,甚至是用DotNet来编写ElementBehavior。

这个请看 MSHTML.IElementBehavior 的 BUG 里的例子。

用 DotNet 来写有什么好与不呢?

优:配合DotNet的类库,功能强大,使用DotNet语言优点(强类型,编译验证。。)。
缺:客户端必须装DotNet。
待补充。。。

那么用 DotNet 来写 Behavior 有什么用途呢?

一:可以写个非常强大的基于HTML的编辑器。(我怀疑VS.NET设计ASP.NET的界面就是用这个的。。)
二:结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。 写Behavior能起复用的效果。(例如鼠标移动变色这种东西)
待补充。。。

资源:
MSDN - Binary Behavior

posted on 2004-06-08 15:48:00 by lostinet  评论(5) 阅读(1440)

MSHTML.IElementBehavior 的 BUG

IHtmlElement2 提供一个方法 addBehavior , 使用这个方法,我们可以编写托管的Behavior (用C#,VB)

但是在实际的尝试中,却发现其中有BUG。使用addBehavior后抛出 ExecutionEngineException 。这个是一个超级的Exception。使DotNet强制关闭,无法拦截。

后来这个问题在 http://itwriting.com/phorum/read.php?f=3&i=288&t=288 里有了描述。

里面给的解决方案是重新定义 IElementBehavior 。

我整理了一个简单的例子出来,下载 WinHtml.zip 

从例子中看到 WinHtml.IElementBehavior 与 mshtml.IElementBehavior 中有一个不同处 : Notify 方法的参数类型不同。

这个就是导致异常的原因。不过按MSHTML的文档来看,mshtml.IElementBehavior的定义应该是对的。难道这是DotNet的BUG?

posted on 2004-06-08 15:35:00 by lostinet  评论(6) 阅读(2934)

向非托管环境公开 WinForm.Net 的控件。

shensr 在他的 在ActiveX Form中加载.Net Control 提到了通过用传统的Window的父子关系来把 WinForm.Net 的 Control 嵌进 VB 的方法。

这个方法不错。

看来我想的把控件嵌到Html里的想法有了着落了。

 

posted on 2004-06-08 13:46:00 by lostinet  评论(0) 阅读(2676)

一个开源的可以使用在AOP角度的关于AssemblyEmit的DotNet工程。

博客园那边的朋友对为类生成动态代理的技术比较感兴趣。

如果有兴趣的话,可以看看这个  http://rail.dei.uc.pt/

posted on 2004-06-07 15:10:00 by lostinet  评论(4) 阅读(1401)

PASSPORT 的注册又支持自定义的email地址了。

我的PASSPORT是很早前注册的。当时可以用我自己的Email地址。

后来我想帮一个朋友注册一个时,发现只能支持 @hotmail.com 了。

今天想上去弄个新的邮箱,发现PASSPORT又支持自定义的邮件地址了。

不过有没有人知道,怎样申请一个 ???@msn.com 的邮箱?

posted on 2004-06-07 10:10:00 by lostinet  评论(42) 阅读(6115)

WinForm 的 Control.Invoke

Control.Invoke 的作用是发送一条Windows消息到控件的线程上执行指定的Delegate。

如果委托出现异常,那么就直接把这个异常拦截掉,然后在调用Control.Invoke的线程上抛出。

我倒是希望有个选项把这个拦截去掉。如果出现错误,直接在控件的线程上抛出,然后显示错误。这多好啊。

否则的话,出现错误,根本就没有提示。也不好调试。

 

posted on 2004-06-07 09:22:00 by lostinet  评论(3) 阅读(2986)

C# 中的 @ 除了用在字符串,还用在标识符的命名/使用上。

只是偶而的发现。我在C#规范里好象没有见过这个的。还没有知道的可以了解一下:
public object @object
{
   get
   {
      return this;
   }
}
而使用它呢?
object something=theclassobj.@object

 

posted on 2004-06-04 11:47:00 by lostinet  评论(4) 阅读(1521)

结合 MSHTML 与 WebBrowser 生成美观实用的 WinForm 应用程序。

我用WinForm开发也有一段时间了。我觉得目前的WinForm开发速度是够的,但是一些原本在HTML就很容易做到的事情,在WinForm中就很难实现了。 这个主要的原因可能是WinForm复用控件的能力非常强,但是可用的控件却非常少。一般买回来的控件不但贵,而且也不是太好扩展。

作为一个学了多年HTML的人,我当然希望在WinForm中依然能使用HTML的特征,例如强大的CSS!,自动排版伸缩的特征,(CSS与排版可以更方便打印!),以及脚本的编写。(有时候写脚本比写WinForm的程序更爽。具体情况具体做)。

要做这个其实不难。但是要灵活运用则不容易了。

通常,使用WebBrowser控件的人,只是简单地使用MSHTML调用WebBrowser里的东西。也就是说,这个调用是单项的,只考虑到修改HTML来显示某种东西。

今天我写这个随笔的意图是告诉大家怎样把用户在WebBrowser里的操作反馈给WinForm

做这个反馈的基石是 DotNet 的 InteropServices 。通过把DotNet的某个对象,传到HTML DOM里去,然后用脚本来操作该DotNet对象。

要做到这个,核心是:

  1. 获取 WebBrowser.Document ,它实现了mshtml.IHtmlDocument /2/3/4/5 (其中IHtmlDocument2最有用)
  2. 这个Document是 System.Runtime.InteropServices.Expando.IExpando,通过它来设置和获取Document的一些动态命名的成员。

例子中的代码是:
mshtml.IHTMLDocument2 doc2=(mshtml.IHTMLDocument2)browser.Document;
System.Runtime.InteropServices.Expando.IExpando ex=(System.Runtime.InteropServices.Expando.IExpando)doc2;
System.Reflection.PropertyInfo piform1=ex.AddProperty("Form1");
piform1.SetValue(doc2,this,null);//从此,在HTML的document.Form1就是这个WinForm的Control了。你可以用脚本来调用Form1 !

有了这些交互,我们可以实现的东西实在太多太多了。

我做了一个简单的例子,在这里下载 http://www.lostinet.com/files/WinHtml.zip

我下一步应该是研究一下,怎样直接把WinForm的Control动态地嵌进这个HTML里。(不是用 《 OBJECT 》来部署的形式)

posted on 2004-06-04 11:26:00 by lostinet  评论(73) 阅读(23545)

ASP.NET IHttpModule 的例子

朋友要求到。帖一个实现 IHttpModule 的例子:

要应用这个例子,需要在 web.config/machine.config 里添加 IHttpModule 的注册。详细看 DotNet SDK 里的 httpModules 的配置节。

当然 appSettings 也要注册连接字符串。

 

posted on 2004-06-03 09:45:00 by lostinet  评论(49) 阅读(5174)

用 NDoc 来生成文档。

这个在这里出现过。不过好象没有太正式的介绍。

NDOC-http://ndoc.sourceforge.net/ 是一个帮助你把 xx.dll 以及 xx.dll.xml 这两个文件 或者是从vs.net.sln中导入 来生成在线文档和 xx.chm 的工具。

基本的用法是在 vs.net 的工程属性里,编译那里选择文档输出为 xx.dll.xml ,然后编译。那么程序中的注释编译后就成 xx.dll.xml 了。

用 NDOC Add 这个 xx.dll 和 xx.dll.xml 然后修改下面的一些选项,就可以compile了。通常这个会编译到一个单独的 doc\ 中。里面有一打堆的 .html 和 .hhp 等一些文件 。 当然还有 xx.chm 文件(要先安装HTMLHELP)。

效果如下

http://www.contextboundmodel.net/doc/index.html

编译出来的chm如下

http://www.contextboundmodel.net/doc/cbm.chm

posted on 2004-06-03 09:41:00 by lostinet  评论(4) 阅读(2287)

element.Index !

刚才看了 Kaneboy 的 用Lostinet的ContextBoundModel来实现前置和后置条件检查 中的例子。

发现里面用到 ParameterInfo 时,定位它的位置是用 param.Position 。

这个我以前则没有留意到啊。所以我循环的时候不是foreach的,而是for(int i=0;i<ps.Length;i++)的(走弯路了。)。。

其实这个用于定位的属性在很多类都有,可是命名却不同。

例如: DataColumn.Ordinal , DataGridItem/DataListItem/Repeater.ItemIndex ,  ListViewItem/ColumnHeader/TreeNode/MenuItem.Index
以及 ParameterInfo.Position

有了这些属性,循环时可以直接用foreach了。

很可惜的就是 DataRow 没有这个。所以每次都是for(int i=0;i<rows.Length;i++)

posted on 2004-06-02 15:32:00 by lostinet  评论(0) 阅读(1071)

【第1页/共2页,25条】
首页
前页
1

Powered by: Joycode.MVC引擎 0.5.2.0