biggates的心得

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  20 随笔 :: 1 文章 :: 14 评论 :: 0 Trackbacks

2008年1月4日 #

     摘要: 我们都知道很多用户协议其实都是霸王条款,但是大家往往都没有仔细研究。今天突然心血来潮,想考察一下著名的SNS的用户协议。那么,就从本人深恶痛绝的校内网开刀吧!  阅读全文
posted @ 2008-07-28 22:30 biggates 阅读(119) | 评论 (3)编辑

     摘要:

以前一直用 IE Tab 解决部分网站不兼容 Firefox 的问题,但是也只能提供方便的预览,调试起来也是非常麻烦。今天发现一个 Firefox 插件……

  阅读全文
posted @ 2008-06-20 21:48 biggates 阅读(101) | 评论 (0)编辑

最近遇到了在 C# 中调用非托管 dll 的问题,集中在托管/非托管的内存控制部分。
用VC++ 6.0 写的 dll 中,要求调用方释放内存,并会释放掉传入的内存(这个大家应该不陌生吧)。

由于时间问题,不可能重写 dll 。因此对此进行了简单研究。
下面摘录相关的URL链接,具体情况待研究成果出来再慢慢写:

Call Unmanaged Code By Vyacheslav Biktagirov
http://www.csharphelp.com/archives/archive52.html
http://www.csharphelp.com/archives/archive63.html

http://en.csharp-online.net/Call_unmanaged_DLL_functions_and_control_the_marshaling_of_data
这里实际上就是个目录,包含了以下页面:
Marshaling Data with COM Interop : http://msdn.microsoft.com/en-us/library/9f9f3yxf.aspx
Copying and Pinning : http://msdn.microsoft.com/en-us/library/23acw07k.aspx
Buffers Sample : http://msdn.microsoft.com/en-us/library/x3txb6xc.aspx
Memory Management with the Interop Marshaler : http://msdn.microsoft.com/en-us/library/f1cf4kkz.aspx
Default Marshaling Behavior : http://msdn.microsoft.com/en-us/library/zah6xy75.aspx


另外还有如下页面:
http://forums.msdn.microsoft.com/zh-CN/csharpgeneral/thread/b5f2857d-6dd2-4888-9185-5597f83df610/
posted @ 2008-06-19 23:29 biggates 阅读(179) | 评论 (0)编辑

这回和上次那个差不多,不过使用于两段代码来回切换的情况,并且同样适用于C、C++、C#、JavaScript、Java等拥有 // 和 /**/ 两种注释方法的语言:

//*
这里是第一部分
/*/
这里是第二部分
//
*/

示意:
使用第一部分代码:
//*
serverStream.ReadTimeout = 5000;
serverStream.WriteTimeout 
= 5000;
/*/
serverStream.ReadTimeout = Timeout.Infinite;
serverStream.WriteTimeout = Timeout.Infinite;
//
*/

删除开始的那个 '/' , 使用第二部分代码:
/*
serverStream.ReadTimeout = 5000;
serverStream.WriteTimeout = 5000;
/
*/

serverStream.ReadTimeout 
= Timeout.Infinite;
serverStream.WriteTimeout 
= Timeout.Infinite;
//*/


posted @ 2008-06-12 16:22 biggates 阅读(16) | 评论 (0)编辑

     摘要: 其实这个问题也没啥难度,不过到网上找了很久,用 between 的也有,用 minus 的也有。不过用这几种方法都没能成功的完成带排序的分页查询。最后还是在Oracle官网找到了解决的办法……  阅读全文
posted @ 2008-05-11 23:35 biggates 阅读(58) | 评论 (0)编辑

     摘要:
最近在试图使用 ExtJS 构建系统,没想到一开始就卡住了。非常郁闷,……  阅读全文
posted @ 2008-04-07 21:34 biggates 阅读(277) | 评论 (2)编辑

     摘要: 由于众所周知的原因,IE在处理 padding 样式的时候总是让我们不那么顺心。
通过查询,找到了一种Hack方法:……  阅读全文
posted @ 2008-04-01 23:27 biggates 阅读(208) | 评论 (0)编辑

     摘要: 最近使用到汉字到拼音的转换,因此在众多搜索结果干扰项中探得此文。由于原文思路清晰,观点独特,故转载于此。本文实质上使用的是查表法,全文内容基本上是字典的获取方法,...  阅读全文
posted @ 2008-03-13 23:35 biggates 阅读(125) | 评论 (0)编辑

书写(和调试)大段大段的代码的过程中,经常遇到频繁的注释和取消注释的麻烦吧。今天在Ajaxian上学到一招,可以非常方便地对代码进行注释和取消注释:

foo();
/*
bar();
baz.foo = 200;
return{
  dolly:clone()
}
// 
*/

简单地说,就是把表示区块注释的 /* 和 */  改成  /* 和 //*/ ,代码的修改量只有一个 // 而已。

之后,只要在 /* 的前面加上或删除一个 / ,就能切换整块注释的状态了。

foo();
//*
bar();
baz.foo 
= 200;
return{
  dolly:clone()
}

// */
posted @ 2008-02-28 17:52 biggates 阅读(303) | 评论 (5)编辑

今早接到通知,MySpace 已经启动了对 OpenSocial Library 的 JavaScript 的支持。

据称,MySpace.cn 将在三月底完成 JavaScript 的支持工作。届时广大的中国用户就可以享受到更多的Widget了。

MySpace 的 API 可以在如下地址获得:http://developer.myspace.com/community/myspace/opensocialref.aspx

posted @ 2008-02-27 15:43 biggates 阅读(218) | 评论 (0)编辑

以下是来自 TIOBE 的 2007 年度语言总结。Python 荣获 "2007年度最佳语言" 称号。

  • Python 荣获 "年度最佳程序设计语言" 称号。虽然评分差距不大,但是最后 Python 还是以 2.04% 的评分年增长率夺得头筹。与 C# 等语言不同,似乎没有什么显而易见的原因导致 Python 能获得如此巨大的进步。12月份, Python 有史以来第一次超过了 Perl ,这意味着 Python 已经成为系统级的 "标准"。而事实上,Python 也成为了系统管理员和编译经理们的最爱。对于 Python 来说,由于 Python 3 即将发布,2008 年又将迎来一次新的飞跃。

  • 从 2007 年的数据我们可以发现一些有趣的现象:首先,不具备自动垃圾收集机制的语言正在迅速地衰落,以 C / C++ 最为显著(二者差不多都下跌了 2%)。其次,虽然表面上风平浪静,脚本语言之间的竞争也越来越激烈:新的脚本语言不断涌现。2006年 Ruby 进入了我们的视线;2007年 Lua 紧随其后;现在 Groovy 和 Factor 这些新生儿也进入了前 50 。所谓 "长江后浪推前浪,前浪死在沙滩上",并没有一种脚本语言能够长久地占领鳌头。

  • 2007 年进步最大的语言:Lua 从 46 上升到 16; Groovy 从 66 上升到 31; Focus 从 78 上升到 41, 还有 Factor 从无名小卒晋升到了 45 名。

  • 同样,也有失意者:ABAP 从 15 名下跌到 29,IDL 从 23 名跌到了 48。

  • 在 2007 年初,TIOBE 作出了这样的预言:

      • C# 和 D 将会取得很大胜利;而Perl 和 Delphi 将失败。

    C# 的确非常成功,Perl 也的确失败了。然而 D 语言 和 Delphi 的预言则完全错误:D 语言一点动静都没有,而 Delphi 仍然停留在前 10 名。

    • 关于 2008 年的预言:
      • C、C++ 和 Perl 将继续衰退;
      • Java 和 C# 将毫无悬念地成为两大最受欢迎的语言;

    C 和 C++ 将由于缺乏自动垃圾收集机制而继续衰退,尤其是在 Microsoft 不再主动支持 C++ 的情况下,C++ 会获得更坏的影响。Perl 现在似乎已经没什么悬念了。Java 和 C# 在 2007 年做的非常好,相信 2008 年将会继续保持强劲的势头。至于其他可能进入前 20 的语言,现在还很难进行预测,不过 TIOBE 看好 ActionScript 和 Groovy 。

    posted @ 2008-01-14 11:58 biggates 阅读(99) | 评论 (0)编辑

         摘要: 这几天用到一个软件,未注册版有100条的限制。根据About信息里提供的信息联系原作者,没有任何回应。无奈之下尝试自行 Crack 。现将过程摘录如下:...  阅读全文
    posted @ 2008-01-13 22:14 biggates 阅读(35) | 评论 (0)编辑

         摘要: 根据 Gadget 的设计,我们可能会需要在用户不用手动改变设置的情况下,主动地改变某些用户的设置(比如在 "推箱子" 这个 Gadget 中,每过一关就自动更新 "从指定关卡开始" 这个属性)。

    要使用 setprefs 功能,我们需要在 Gadget 中包含以下内容:...
      阅读全文
    posted @ 2008-01-09 18:03 biggates 阅读(171) | 评论 (0)编辑

         摘要: XML 中的 标签里的属性指定了这个 Gadget 的属性,比如标题、作者、联系方式,等等。我们来看下面的例子:...  阅读全文
    posted @ 2008-01-08 13:55 biggates 阅读(124) | 评论 (0)编辑

         摘要: 毫无疑问,一些 Gadget 需要用户提供一些信息才能按照用户所期望的运行,比如一个 RSS 阅读器需要用户指定 RSS 源的地址,一个"推箱子"游戏可能需要用户指定开始的关卡(这样可以不用每次都从第一关开始),等等。这些 "设置" 是在 XML 文件中用 <UserPref> 标签指定的,当 Gadget 运行的时候,它们被解析成 <input> 标签。各个用户的设置是永久保存的,并且不会被泄露出去(当然,如果在 Gadget 里面使用,这些数据还是有被泄露的可能。这就是为什么加载第三方 Gadget 时会出现警告的原因)。

    我们来看一个例子...  阅读全文
    posted @ 2008-01-07 11:00 biggates 阅读(136) | 评论 (0)编辑

         摘要: 从上一篇的 Hello World 中可以看到,一个Gadget实际上就是一个标准的XML文件。在标签里面,就是整个Gadget的内容了。它包括三个部分:

    标签里面是整个 Gadget 的"工作区",这里的内容通常包含了一个 Gadget 的外貌(通过HTML / CSS)和功能(多数通过 Scripts )。
    标签里面是一个用户可以进行修改的选项。比如一个 RSS 阅读器就需要一个来保存用户指定的 RSS 源的地址。注意,如果需要多个选项,那么就需要添加多个 标签。
    标签里面是这个 Gadget 的描述,比如 Gadget 的标题、作者、分类什么的。用户是无法更改它的。
    我们来看一个实际的例子:...  阅读全文
    posted @ 2008-01-06 09:55 biggates 阅读(168) | 评论 (0)编辑

    本文翻译自http://code.google.com/apis/opensocial/docs/

    我们可以通过两种方法访问 OpenSocial API :在客户端可以使用JavaScript;在服务器端可以使用RESTful API。

    JavaScript API

    JavaScript API 集中于 opensocial.* namespace ,它提供了三个方面的功能:

    • People -- 关于个人信息和人们之间的关系
    • Activities -- 使我们能够查看并编辑人们的活动的更新情况
    • Persistence -- 通过一个简单的键-值存储结构,使应用程序无需与服务器频繁交互(a simple key-value data store to allow server-free stateful applications)。

    使用JavaScript API,我们可以达到以下目的:

    • 无需维护自己的服务器即可构建自己的应用程序
    • 构建包含服务器端组件(用于离线处理,或访问其他网站)的应用程序
    • 构建全新的应用程序
    • 在已有的SNS网站内容中使用现有的Web Applications
    • 向已有的Google Gadgets中添加社交功能
    • 构建能在不同的SNS网站中运行的应用程序

    JavaScript API 使用的是标准的 Web 技术:

    • 在opensocial.* namespace 中封装了一系列方法
    • 可以使用任意的标准 JavaScript 程序设计技术,以及第三方提供的 JavaScript 库
    • 为了支持富 AJAX 交互,该 JavaScript API 包含了一整套非同步回调机制

    RESTful Data APIs

    RESTful Data APIs 提供了与 JavaScript API 互补的功能,使我们能够在自己的服务器上访问people, activities,以及其他数据。

    RESTful data APIs 也使用了标准的 Web 技术:

    • 服务器间基于 RESTful AtomPub 协议进行交互
    • 通过 OAuth 进行用户验证
    posted @ 2008-01-05 09:36 biggates 阅读(282) | 评论 (1)编辑

    本文部分信息来源于http://www.awflasher.com/flash/articles/swfobj.htm,并且这里也有SWFObject的完整的使用说明。

    SWFObject是一个用于在HTML中方面插入Adobe Flash媒体资源(*.swf文件)的独立、敏捷的JavaScript模块。该模块中的JavaScript脚本能够自动检测PC、Mac机器上各种主流浏览器对Flash插件的支持情况。它使得插入Flash媒体资源尽量简捷、安全。而且它是非常符合搜索引擎优化的原则的。此外,它能够避免您的HTML、XHTML中出现object、embed等非标准标签,从而符合更加标准。

    SWFObject目前被大量运用于各大视频网站中,如YouTube新浪视频6间房等(注:6间房使用的是FlashObject,实际上就是SWFObject。由于Adobe紧抠"Flash"的名字,故而改名。详见这里)。

    使用SWFObject时,需要事先包含 swfobject.js 文件(废话),之后使用如下方法建立一个SWFObject实例:

    
    
    var so = new SWFObject(swf, id, width, height, version, background-color [, quality, xiRedirectUrl, redirectUrl, detectKey]);

    这里是一个简单的例子:

     1<script type="text/javascript" src="swfobject.js"></script>
     2        
     3<div id="flashcontent">
     4  This text is replaced by the Flash movie.
     5</div>
     6
     7<script type="text/javascript">
     8   var so = new SWFObject("movie.swf""mymovie""200""100""7""#336699");
     9   so.write("flashcontent");
    10
    </script>
    11
    posted @ 2008-01-04 23:27 biggates 阅读(54) | 评论 (0)编辑

    首先来看看http://code.google.com/apis/gadgets/docs/gs.html#GGE  这是GGE,Google Gadgets Editor, 一个在线的Gadget编辑器,Google提供了edit和preview两个tab来便于我们进行编辑,并且可以把这个GGE作为一个Widget添加到iGoogle主页,真的是不错的一个东西。

    同样,这里也提供了一些常见的Gadget作为模板供我们修改,比如著名的"Hello World":

    1<?xml version="1.0" encoding="UTF-8"?>
    2<Module>
    3<ModulePrefs title="hello world example" />
    4<Content type="html">
    5<![CDATA[Hello, world!]]>
    6</Content>
    7</Module>

    可以看到,一个Gadget实际上就是一个XML文件。我们可以使用HTML来进行Gadget的布局,也可以使用Javascript来给Gadget添加动态的效果。

    http://code.google.com/apis/opensocial/docs/javascript/index.html 这里是OpenSocial的API。

    posted @ 2008-01-04 23:19 biggates 阅读(255) | 评论 (0)编辑

    注册申请刚刚通过,用这一篇简单的文章做一个测试。

    在左边公告栏中看到的是 iTechTag 技能云。

    为了显示这个,把CSS拿出来小改了一下。

     

    本文使用Windows Live Writer发布。

    posted @ 2008-01-04 14:41 biggates 阅读(19) | 评论 (0)编辑