文章检索
-
三系统安装 二氧化碳排放量 互联网森林 凤凰 前田约翰 塑料瓶 姓 岳阳 开源 张家界 扫地机器人 无效字符 来历 氏 电话骗局 简单法则 自由行 致命 致癌 节能灯泡 设计方式 说法 长沙 马子 骗子 android C# CMake CMS Durpal ExtJS Godaddy Google Code Google Sync Joomla js页面 linux mac opensuse roomba twitter window wordpress XHTML XML
WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.
twitter
- @yegle 自己买个剪卡器吧,一次成功,嘿嘿
持续关注
Categories
广而告之
Category Archives: 软件技术
CMake编译Qt
貌似有个CMake教程上说过“不要使用CMake编译Qt”,原因是Qt有自己的QMake,用CMake会费时费力,不过为了能把所有工程采用同样的编译方式,还是尝试了一下,的确很麻烦。 首先需要下载Qt SDK,因为打算用VS2010编译,所以下载了everywhere的4.7b2版本(注意:4.6.3不支持2010,强编会出错,4.7b2静态编译也会有同样的问题,估计正式版会有改善吧) 编译整体还是比较简单的 把VS目录下的vcvars32.bat复制到qt目录下 打开控制台,首先运行vcvars32.bat configure –platform win32-msvc2010 nmake 等待N长时间编译完成,真的非常长时间 编译结果6G,保留bin,include,lib目录即可 4.7的编译有个缺点就是所有路径都是完整路径会写死,且不能选择编译结果的输出路径,所以要是打算多次编译一定要确定好目录,否则会很麻烦。 然后写一个简单的CMakeLists.txt文件: #Project Name PROJECT(BookStar) SET(QT_FOLDER D:/qt-4.7.0-b2) # include directories INCLUDE_DIRECTORIES(inc ${PROJECT_BINARY_DIR} ${QT_FOLDER}/include) # lib directories LINK_DIRECTORIES(${QT_FOLDER}/lib) # source SET(SRCS src/main.cpp src/mainwindow.cpp ${MOCS} … Continue reading
绕过CMake无法编译zlib的问题
最近研究CMake,发现如gtest,zlib这些项目都支持CMake,于是拿来编译了一下,gtest一切正常,zlib则是windows下正常,Ubuntu下出了问题 CMake Error at lib/zlib/CMakeLists.txt:65 (message): You must remove lib/zlib/zconf.h from the source tree. This file is included with zlib but CMake generates this file for you automatically in the build directory. 到zlib目录下干掉zconf.h,在重新编译: Scanning dependencies of target zlib Linking C … Continue reading
正点下班1.5发布
正点下班是我在Android下开发的第一款软件,可以说是练手之作。它的功能非常简单,就是提醒你下班时间到了。功能上有点类似闹钟,但因为工作时间每天相对固定,比如8小时或者9小时,所以它可以更快捷,基本是一次点击,等待提醒就可以了。 1.5版增加如下特性: 兼容Android 1.5即API Level 3 增加取消当前闹钟的设置,之前没有这个,一旦不小心开了闹铃就只有关机一途,实在汗。。。。 解决由于关机导致闹钟失效的问题。主要是设置了一个BOOT的BroadcastReceiver,每次启动机器会自动将闹铃重新设置 修改配置界面为标准界面。之前竟然不知道Android还有专用的Preference XML,这次换上 修改主界面采用倒计时方法,毫秒级的,那位朋友着急下班可以不时看看:) 下面是一段文字广告: 无辜男员工:我上班是动态时间又要打卡,以前常常搞不清楚几点下班,现在有了正点下班,上班时候运行一下,下班就会自动提醒我,再也不用无偿加班了:) 狗头专家:你可能认为这就是一款闹钟软件,但你会每日为下班时间定闹钟吗?当然不会,因为又要算下班时间,又要一堆的手机设置,太复杂了。正点下班没有这些问题,一键搞定下班提醒,方便,舒心。 无辜女员工:太方便了,自从用了正点下班,在无后顾之忧,上班也变轻松了,你看,脸上的小痘痘都没有了:〉 最后,一如既往,正点下班也是一款开源软件,可以通过以下网址获取到所有代码: http://code.google.com/p/jee-android
VeryCD拦截自定义协议分析
一般来说,我们通过注册自定义协议,可以在浏览器中通过链接方式自动打开客户端程序。 不过,如果没有客户端程序就会导致无法访问的页面错误,如何才能够判断自定义协议在本地没有被注册,并弹出客户端的安装提示呢? 新装系统以后,意外发现VeryCD可以在没有安装eMule的时候会弹出提示,效果如下: 于是做了一点研究,希望能够实现一样的效果。 VeryCD网页采用YUI库,多数自定义的js都是以编号结尾如:group.js.r23406,不知道是不是使用YUI压缩的结果,如上图的对话框代码集中在footer.js.r23406中,大概的流程: 首先,在页面初始化时,所有ed2k://的link设置click事件。 然后,在click事件中创建IE2EM.IE2EMUrlTaker对象,该对象好像是为了处理如上图中“复制选中的链接”的功能。该对象应该是在eMule安装时注册的,所以在没有安装时会导致异常,在异常catch中,显示如上的对话框。 最后,如果用户选择下载则跳转页面到下载页面,如果选择已安装,则设置Cookie。 但不知道为什么,VeryCD在网页上特别做了浏览器类型判断,非IE的浏览器中不显示该对话框,所以在如Firefox,Chrome这些浏览器中只是不下载,什么反应都没有。 基本来说,VeryCD就是通过尝试创建客户端的ActiveX控件,在失败时弹出安装提示。 该方法的缺点是,只对IE有效,因为其他浏览器并不支持ActiveX控件,所以无论是否安装都会导致异常,这也可以解释为什么VeryCD特别在网页上判断浏览器类型,并对其他浏览器进行了屏蔽。
多层压缩等于不压缩?
从网上下了一个东西,zip的压缩包 解压是55个zip压缩包 再解压是55个rar的分卷压缩包 再解压才是真正的文件 一般压缩文件就是为减小文件个数,压缩文件占用的空间,那么如此多层的压缩当然是目的当然是进一步减少文件的大小了,那么效果如何呢?以此为例,如下表: 原文件大小 273,156,452 字节 Zip压缩 272,770,342 字节 7z压缩 274,608,539 字节 多层压缩 273,152,780 字节 大概是因为原文件本来就做过压缩的缘故,多层压缩的结果只使文件缩小了不到4K,而zip单次压缩的结果更优。 当然这只是一个特例,但也说明多层压缩未必能进一步缩小文件大小,所以请勿再作如此麻烦的事情了:)
又上了名字空间的套
在做一个XML的XSL,原XML如下: <?xml version="1.0" encoding="utf-16"?> <book version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns="http://docbook.org/ns/docbook"> <info> <title>test</title> <author> <personname> <othername>Unknown</othername> </personname> </author> <bibliosource>Unknown</bibliosource> </info> </book> 制作的XSL: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="info"> <xsl:value-of … Continue reading
XHTML解析的实体问题
我在《集成Html Tidy》一文中说过使用HtmlTidy转换HTML以方便使用XML解析器解析,事实上,并没有那么简单,随便解析几个XHTML就会碰到解析异常的问题,错误是“Reference to undeclared entity ‘nbsp’”。 查找原因发现,在XML中,除了< > & ' "以外,其他如 之类的实体必须通过DTD或其他方式定义。Html Tidy转换出的XHTML并没有显式定义这些实体,而是采用类似以下的定义: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 在这个DTD中会定义如&nbps;之类的实体,但由于需要到W3C的网站上去获取这些定义,所以XML解析器默认会忽略这些定义,就导致没有定义的异常。 不过在.net中提供了XmlResolver类帮助处理这种情况,而我们需要做的就是重写这个类,并将XHTML中定义的DTD重新指向我们指定的某个位置,如上的情况操作如下: 1. 下载http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd 2. 将下载的dtd作为资源放入程序中 3. 重写XmlResolver类,增加判断,当传入的路径为"-//W3C//DTD XHTML 1.0 Transitional//EN" 时就以流方式返回资源中的DTD 4. 创建XmlReader,并将重载的XmlResolver设置在XmlReader中 5. 使用该XmlReader装载解析XHTML 完成以上步骤,再解析XHTML就不会再有异常出现了。当然XHTML的DTD定义不止这一种,为了兼容起见,最好将所有的DTD定义都按以上的步骤加入程序中。 具体实现代码可以参考我的开源项目:Page Releaser
UrlRewritingNET实现URL Rewrite
在asp.net中实现URL Rewrite,除了IIS本身带的URL Rewrite Module以外,还有很到其他的解决方案,比如UrlRewritingNET。 UrlRewritingNET号称除了文件扩展名Rewrite需要IIS支持以外,其他所有操作都不需要IIS设置,这当然对虚拟主机的网站来说是非常便利的。 下面看看怎么来部署UrlRewritingNET: 1. 首先将下载的dll放置到bin目录 2. 修改Web.config,增加UrlRewritingNET的相关配置如下: <?xml version="1.0"?> <configuration> <configSections> <section name="urlrewritingnet" requirePermission="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"/> </configSections> <urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" defaultProvider="RegEx" xmlns="http://www.urlrewriting.net/schemas/config/2006/07"> <rewrites> <add name="category" … Continue reading
HTML页面之间的参数传递的局限性
动态网页传递参数比较简单,如果想在HTML之间传递参数就需要一点技巧,摘录两种方法如下: 采用字符串解析的: /* *函数功能:从href获得参数 *sHref: http://www.cscenter.com.cn/arg.htm?arg1=d&arg2=re *sArgName:arg1, arg2 *return: the value of arg. d, re */ function GetArgsFromHref(sArgName) { var sHref= document.location.href; var args = sHref.split("?"); var retval = ""; if(args[0] == sHref) /*参数为空*/ { … Continue reading
实现HTML的简单压缩
PageReleaser需要一种HTML的压缩算法,Google了很久,发现如果只是简单去除空白和注释的话,使用XLinq就可以轻易的实现 先看看MSDN是怎么说的: 一种常用方案是读取缩进的 XML,在内存中创建一个没有任何空白文本节点(即不保留空白)的 XML 树,对该 XML 执行某些操作,然后保存带缩进的 XML。在序列化带格式的 XML 时,只保留 XML 树中有意义的空白。这是 LINQ to XML 的默认行为。 另一个常见的情况是读取和修改已经有意缩进的 XML。您可能不想以任何方式更改这种缩进。若要在 LINQ to XML 中执行此操作,您要在加载或解析 XML 时保留空白,并在序列化 XML 时禁用格式设置。 简单的说,XDocument载入时,默认使用LoadOptions::None,自动去掉XML的空白;保存时,默认使用SaveOptions::None,自动格式化XML。 也就是说,使用XDocument将一个HTML文档打开什么也不作就保存,其实等于实现了HTML的格式化。 而如果在保存时,使用SaveOptions::DisableFormatting参数,看似要保存XML的空白,由于载入时所有空白都被删掉了,其实等于删除了所有空白,于是去掉空白就这样实现了。 至于删掉注释也很简单,只是需要注意,一般页面嵌入JavaScript会使用注释节点包裹,需要例外处理。 整个HTML压缩代码如下: var nodes = from s in doc.DescendantNodes() where … Continue reading