
其他(技术文章)
SeaWave
这个作者很懒,什么都没留下…
展开
-
暗印图片
今天在QQ群里有人提到暗印图片(即那种表面上看上去是一副图片,而在浏览器中按CTRL+A全选则会出现另一副图片),很感兴趣,在网上找了找资料,原来浏览器在表现被选中图片时,是用一张交错的蒙版将图片盖住,所以用Photoshop可以方便地将两张图片叠在一起,然后将图片分别用交错的蒙版挖去一半,就能达到效果,改天有兴趣的时候设计一个小程序来做这事也很方便(^-^)原创 2004-08-05 16:59:00 · 2595 阅读 · 0 评论 -
凭什么要这么大的权力?
自然而然的,当我们安装完Windows后,我们就拥有一个管理员帐号,并且毫不犹豫地使用它,在Windows2000里,这个帐号是 Administrator,在XP里,它也存在,但由于在安装过程中会要求我们指定一个新的帐号(张三、李四或王二麻,它具有与管理员同样大的权限),所以一不小心就忘记Administrator的存在,特别地,做为一种(传统)习惯,大多数Adminstrator会忘记设置密码原创 2006-06-02 22:46:00 · 1983 阅读 · 0 评论 -
C#不允许声明函数体内的static变量,为何?
学习C#中……今天发现,C#居然不支持在函数体内声明static变量,这真的是很古怪,难道一个static变量的就一定要让别人知道吗(至少会被类的其他成员知晓)?下边的C#和C++的比较,很明显,C++在这一点上要合理很多,uniqueID这个不断递增、控制着唯一ID的重要变量,永远不会被类里的其他成员无意破坏掉,不知道为什么C#不允许这种“函数体内部的static变量“,狂汗……//原创 2006-05-21 13:08:00 · 3123 阅读 · 0 评论 -
谁主张 谁举证
孟老大的原文:一位作者对COM的严厉批判文中的作者,对COM进行了猛烈的炮轰,但仅从孟老大引用的一些原文来看,这些炮轰不但没有证据,甚至连罪名本身都含糊不清。 “COM的设计可以说是软件史上最严重的一次设计失误,COM的设计违反了软件设计的基本原理”,违反了哪一(几)条“基本原理”?似乎应该一一举出。 "很多常用的软件的BUG越来越多,动不动就死掉或要求发送错误报告什么原创 2006-05-26 10:29:00 · 2101 阅读 · 0 评论 -
约定俗成和精确翻译
孟老大今天的一篇新文,对将“Socket翻译成套接字、array翻译成数组、transaction翻译成事务“颇有微辞(原文:http://blog.youkuaiyun.com/myan/archive/2006/05/21/747696.aspx),这令我先想起了一个臭名昭著的书名翻译“代码大全”,当初我在群里讨论这本书的时候,就真的有人问我是什么语言的代码,VB还是Java,可见这本名著的书名被译得太烂原创 2006-05-22 12:10:00 · 2310 阅读 · 0 评论 -
关闭线程句柄并不代表终止线程
刚才看到一篇文章里实现的简单线程类(原文:http://blog.youkuaiyun.com/wei801004/archive/2006/05/18/744341.aspx),注意到这段代码似乎认为简单地CloseHandle线程就可以终止一个线程,原文的代码如下,注释是我添的:typedef unsigned (WINAPI *PTHREADFUN)(LPVOID lpParameter);clas原创 2006-05-18 18:19:00 · 3797 阅读 · 2 评论 -
声明和实现,是分开好?还是放在一起好?
昨天开始学C#,强迫自己用C#写一个应用(当然是不是工作中急需的,只是练练手而已),发现在C#里,类的声明和实现必须放在一起,这真是#@¥×&×……/// 日志记录器接口interface ILogger { void append(string msg);};/// 创建日志记录器实例的工厂class LoggerFactory { public static ILogger e原创 2006-05-18 17:30:00 · 3839 阅读 · 2 评论 -
“DELPHI与VC口水战”之补白
这里是原文:http://blog.youkuaiyun.com/jiangtao/archive/2001/03/05/1821.aspx 原文写得不错,不但引经据典,还罗列了十几条大多有统计数据的比较,不过,严格地说,DELPHI是一个IDE,它并不代表PASCAL这门语言,而VC也只是一个IDE,它并不代表C++,而MFC也不是它的全部,那么,把DELPHI与VC相比,到底是比什么呢? 如果是比“用原创 2006-05-15 14:01:00 · 3255 阅读 · 3 评论 -
知己知彼,百战不殆
原文地址:http://blog.youkuaiyun.com/danny_xcz/archive/2006/05/16/740486.aspx针对PHP和MYSQL的SQL注入攻击,收藏之,知己知彼,百战不殆。转载 2006-05-16 15:07:00 · 1625 阅读 · 0 评论 -
引用计数错在哪里?
刚才看云风BLOG中《对象和资源的管理》(Trackback地址:http://blog.codingnow.com/mt/mt-tb.cgi/140),颇有不同意见。首先,C++不是C#不是Java,如果非要在C++里专门开一个线程来搞GC,那不如不用C++。C++程序员可以精确控制对象释放的时机,这正是C++的长处,比方说,我有一个Socket对象,我可以保证在析构的时候就Close这个套原创 2006-06-01 17:49:00 · 2261 阅读 · 0 评论 -
奥卡姆剃刀
转自维基百科,原文地址http://zh.wikipedia.org/wiki/%E5%A5%A5%E5%8D%A1%E5%A7%86%E5%89%83%E5%88%80奥卡姆剃刀维基百科,自由的百科全书跳转到: 导航, 搜索奥卡姆剃刀(Occams Razor, Ockhams Razor),又称“奥康的剃刀”,是由14世纪逻辑学家、圣方济各会修士奥卡姆的威廉(Wil转载 2006-11-10 15:07:00 · 1826 阅读 · 0 评论 -
该死的shellext32.dll
忽然发现Explorer打开一个文件夹变成非常慢,文件夹下面有30个以上的文件时,要超过两三秒才能打开,郁闷呀,找了大半天,才发现是我安装SmartSVN的时候,它挂了一个ShellExt32.dll在Explorer里,就是这个有BUG的DLL在作怪。解决办法:备份SmartSVN文件夹下面所有东西,卸载它。试了下在备份文件夹里直接启动SmartSVN,好象还能用,管它的,如果不能用了,改用原创 2009-03-21 11:22:00 · 3989 阅读 · 0 评论 -
腾讯终于知道了
很多年不用QQ了(只用TM),今天下载并安装了QQ2009的预览版,惊喜的发现了两点:1、允许选择将用户信息等冬冬存放在“我的文档”,而不是在QQ的安装路径下面。这说明腾讯终于知道了“并不是所有的人都用管理员帐号来启动QQ”,也就意味着不是所有的人都可以在QQ的安装路径下面做写操作(因为QQ通常安装在Program Files这个特殊目录下面)。在这个版本以前,我只能把QQ的安装目录的安全属性原创 2008-12-26 14:56:00 · 1605 阅读 · 0 评论 -
反转数
今天朋友介绍了一个网站叫http://projecteuler.net/,非常有意思,其中有这么一道题:Some positive integers n have the property that the sum [ n + reverse(n) ] consists entirely of odd (decimal) digits. For instance, 36 + 63 =原创 2007-03-29 23:44:00 · 1768 阅读 · 0 评论 -
印度取经去
看看印度人拿多少薪水 月收入 按 美刀原创 2006-12-05 09:27:00 · 1604 阅读 · 0 评论 -
谁动了我的浏览器
原文地址:http://www.i170.com/Article/31635 (Trackback: http://www.i170.com/article/31635/trackback)by 2f4f587a80c2dbbd870a46481b2b1882 本文遵从GPL协议,欢迎转载。 1、现象是什么? 大约从今年年初开始,很多人就发现,在浏览一些网站的时候,地址栏的url转载 2006-07-27 22:19:00 · 2161 阅读 · 0 评论 -
SQL优化
一个美女程序员朋友今天换Blog了,开篇第一文(http://whitecloud.cnblogs.com/archive/2006/07/13/449879.aspx)就是惊人之作,不过我认为此文颇有“不调查研究就发言”之嫌。原文列举的两条做同样事情的SQL语句,并用了“大幅度提高”这一词,但这只不过是想象而已,以为第二条语句会比第一条语句来得快,那就太低估现代数据库对SQL语句的优化能原创 2006-07-13 22:32:00 · 1443 阅读 · 0 评论 -
PS强人啦
.photo_style{ border-width:1px 2px 2px 1px; border-style:solid; border-color:gray black black gray;}原贴来自猫扑转载 2006-11-17 10:38:00 · 1338 阅读 · 0 评论 -
因果关系、INUS定义和SUPPES定义
原文地址:http://wt.vankeweekly.com/blog/%B4%F3%CA%AB/articles/11884.html因果关系、INUS定义和SUPPES定义我们知道,因果关系对于我们想任何问题和做任何事情,都是非常重要的。甚至有很多人认为,天赋的因果联想能力,是人类得以成为“万物之灵长”的首要条件之一。在哲学上,确实存在怀疑甚至否定因果关系的意见,而且这些意见甚至不转载 2006-11-10 15:13:00 · 5535 阅读 · 0 评论 -
一点忙也帮不上的编译器
前几天,我写了一些关于SOCKET小函数,并按照WinSock API的风格,用一个int型来做为函数的返回值,NO_ERROR(零)表示操作成功,其他值表示错误代码,用了一段时间后,发觉这个风格与我(以及其他同事)的很多其他代码风格不相符,更多的时候,大家是用bool值来做为函数的返回值,true表示成功,false表示失败,所以,我打算改动一下,将函数的返回值由int改成bool。 改原创 2006-05-11 22:13:00 · 2017 阅读 · 0 评论 -
自己做RAS Administration DLL
本文其他部分是MSDN的内容,我自己的心得在这里: MprAdminInitializeDll这个函数的原型,VS2003自带的MSDN里,被定义为无返回值(void),如果按照这个原型去做,会死得很难看。正确的原型是在线MSDN中定义的返回一个DWORD型(NOERROR表示成功) MprAdminAcceptNewConnection提供的用户IP,其实是虚网地址,而原创 2006-05-17 17:12:00 · 2255 阅读 · 1 评论 -
在SQLServer中添加XP特殊帐号Network Service和Local Service
从XP开始,Windows提供了两个特殊帐号“Network Service”和“Local Service”,专用于启动服务,前者较通常的“Local System”帐号权限更低,后者再次之。如果一个服务需要访问SQLServer,通常会使用的NT集成验证来登录数据库,这就要求在SQLServer里创建相应的NT帐户。把Network Server帐户添加到Administrators组里并原创 2006-02-07 23:33:00 · 4031 阅读 · 0 评论 -
接口是没有析构函数的
在MSDN文档里,把Visual C++接口描述如下: Can inherit from zero or more base interfaces. Cannot inherit from a base class. Can only contain public, pure virtual methods. Cannot contain constru原创 2006-02-06 14:28:00 · 2483 阅读 · 0 评论 -
本BLOG的“自定义CSS”
现在这个页面的样式,是利用优快云的BLOG的"自定义CSS"草草而就,完成之后,也想当于了解了一下CSS,发觉功能的确强大,但仍然有些需求无法满足,比方说我就没有找到让文本垂直居中、不允许文本折叠等功能,而这些利用表格是可以轻松完成的,所以,CSS也不能完全替代表格。顺便提一下,优快云虽然允许自定义CSS,但由于在不同的“皮肤”风格下,它的HTML页面输出不完全一致,所以同一套自定义CSS原创 2006-01-26 23:00:00 · 1558 阅读 · 1 评论 -
用C++编制Win32 Service (一)
.Net和Delphi都对Service进行了很好的封装,但是用C++编写Service还是一件很烦琐的事情。先写一些辅助类吧:// 管理Service的句柄class ServiceHandle {public: ServiceHandle(SC_HANDLE h) : h_(h) { if (!h_) throw SysError(); }原创 2006-01-24 10:37:00 · 1626 阅读 · 0 评论 -
用C++编制Win32 Service (二)
名词: Service Control Manager,服务控制管理器,简称SCM。 Service Control Dispatcher,服务控制发送器,简称SCD。 Service Process,服务进程,通常是一个Win32控制台应用程序(exe),由SCM负责启动。 Service Status,(当前)服务状态,当SCM向服务进程查询状态时,原创 2006-01-31 17:50:00 · 2488 阅读 · 0 评论 -
纵横字谜(重构)
今天重次重构了代码,把很多重复的代码提炼成函数,同时增加了游戏存盘的功能。现在开始考虑把游戏存档压缩一下,用ZLIB倒是省事,但发布程序时还要附带这个DLL有点不爽,还是自己写段代码来做压缩工作吧。原创 2004-07-29 14:21:00 · 1877 阅读 · 0 评论 -
纵横字谜(基本框架)
老婆最喜欢玩纵横字谜,比如对南方周末每期的《小强填字》总是津津乐道。最近我闲来无事,不妨做一个电脑上玩的填字,以博老婆一笑,^-^。 首先应该有一个TPuzzleItem类吧?这个表示谜题的单个条目,包括坐标、方向(横向还是纵向)、谜面、谜底等属性,对了,还应该保存解题人输入的答案。这个TPuzzleItem还应该有一些方法(没有方法的类,也就没有存在的必要了),比较重要的就是根据给定的逻辑原创 2004-07-28 12:05:00 · 2897 阅读 · 0 评论 -
LZSS压缩算法
今天完成了一套简单的LZSS算法代码,初步测试了一下(包括计算CRC32的时间),结果如下: 文件类型:Word的DOC文档 文件个数:217 文件总字节数:9,196,346字节(8.77MB) 平均压缩率:70%(压缩后长度是原长度的30%) 压缩时间:8766毫秒(大约是每秒1MB) 解压时间:795毫秒(大约是每秒11MB原创 2004-08-03 19:13:00 · 12396 阅读 · 3 评论 -
写段代码验证哥德巴赫猜想之一:求给定范围的素数。
今天有位朋友去面试,一道题是“写段代码验证哥德巴赫猜想”,觉得很有意思,因为其中涉及到刚接触计算机时搞过的求素数算法,在记忆中,为了提高效率(用空间换时间),应该是保留已求得的素数,然后在判断N的时候,只需用N去依次试除所有不大于N平方根的已知质数,而勿需遍历小于N的所有(奇)数。按上述思路编制的Primes类如下,可做为“验证哥德巴赫猜想”的辅助类(因为这个需求,所以该类的generate(原创 2006-02-08 23:13:00 · 2482 阅读 · 0 评论 -
写段代码验证哥德巴赫猜想之二:验证(附:关于下标值应该定义为有符号数)。
昨天在写Primes的时候,把下标值定义成无符号整型(size_t),结果在一次反向for循环(循环变量从大递减到小)中出现错误:for (size_t i=0; i<primes.getCount(); ++i)for (size_t j=primes.getCount()-1; j>=0; --j)第一行的循环可以正确运行,但第二行的循环将会出错,因为循环条件永远为真(si原创 2006-02-09 21:35:00 · 2433 阅读 · 0 评论 -
新网好象挂了,中国20%的域名将无法正常解析
刚刚好象新网挂掉了,主页也进不去,域名解析服务也不正常,全国可有20%的域名是放在新网的哦。不知道什么时候可以恢复。原创 2006-09-21 17:38:00 · 1414 阅读 · 0 评论 -
开篇第一句
今天的专家头条: 未来几年动态语言谁将成为主流,开篇第一句:“什么是动态语言呢?,可以简单的理解为直接被解释执行的语言称为动态语言。而需要编译环境将程序转换为其它的编码再执行的语言称为静态语言。”这一句让人失去了再看下去的欲望。原创 2006-09-19 20:36:00 · 1354 阅读 · 0 评论 -
将忽悠进行到底:智彗星杀毒软件推出2007
相关链接:http://www.x5dj.com/UserForum/00147207/00152716.shtml转载 2006-08-31 20:36:00 · 3132 阅读 · 3 评论 -
线程终止、请求丢失。
今天写一个小程序,当接收到指定消息时,创建一个SOCKET去连接指定主机,一旦接通,就向主机发送、以及从主机取回一些数据。为了避免阻塞,每当需要连接主机的时候,就创建一个线程,在该线程里调用connect(),连接成功后就用send()发送一些数据,紧接着调用WSARecv()发起一个overlapped的异步取请求,然后线程退出。结果是,负责监视完成端口的线程,根本取不到数据,只是收到一个S原创 2006-04-16 21:48:00 · 1789 阅读 · 0 评论 -
今天从系统中找出的三个BUG
今天从系统中找出三个BUG,都与缓冲区溢出有关,真是教训深刻,这三个BUG一个是我过份信任协作程序传送过来的数据包(虽然是运行在本地机器上的自己编写的程序)而没有检查数据包的合法性,一个是同玿使用了不安全的sprintf函数而又偏偏给出了过小的缓冲区,另一个是另一位同事未检查函数返回值(或未仔细阅读函数编写者的注释)导致在函数失败的时候未成正确捕获。寻找这三个BUG花了很多精力,总结教训:原创 2006-03-06 23:56:00 · 2884 阅读 · 0 评论 -
今天重拾Delphi,感觉好轻松 :)
今天写一个侦听Socket端口的Win32服务,重拾了Delphi,感到一切都是那么轻松,几句话就完成了,而此前用C++封装Window Service,真是写得我手痛想得我心痛。C++的确强大,但太复杂了,复杂到要了解完它的语法就要花掉大量的精力,更不说去使用它了。举例来说: Delphi里一切皆指针,Java里根本没有指针,而C++即有指针也有值传递,非常容易混淆。 J原创 2006-02-27 16:44:00 · 1685 阅读 · 0 评论 -
RUNDLL32简述
一、操作系统 Windows 95/98/ME提供rundll.exe和rundll32.exe,前者用来处理16位的DLL,后者用来处理32位的DLL,而NT/2000/XP/2003则只提供rundll32.exe。除此之外,两个程序的行为没什么不同。二、命令行格式 RUNDLL32.EXE , 例如:RUNDLL32.EXE MyDll.DLL,TheFunction Hello原创 2006-02-19 13:23:00 · 1887 阅读 · 0 评论 -
写段代码验证哥德巴赫猜想之三:重构和优化
前几天写的那段代码,其实有很多可以优化的地方,最简单的就是不用遍历整个素数数组,比方说,给定的偶数是100,则只需要从2至97这个素数范围来计算,97以上的素数(如101)就不需要参与计算了。这个思路需要从已知素数中找到最接近给定偶数的素数,又要用到二分法,所以先把二分法提炼成为一个模板类,以供重用:#pragma once// T: 容器中项目类型// CONTAINER:原创 2006-02-12 15:10:00 · 1540 阅读 · 0 评论 -
我们怎样写注释
代码注释,就是用大白话告诉别人(或者三个月以后的自己),我写的这些计算机程序,它到底想干嘛。除去某些特殊场合,这些大白话通常都用程序员的母语来写,这样可以表达得更清楚——当然方言例外,不是所有的人都知道什么叫“抵拢倒拐”——但是无论这些白话有多白,它总是不可避免会给别人带来很多困扰。首先,很多人(包括我自己)不喜欢在写代码的同时写注释,虽然在读别人代码时常会因为注释太少而恨得牙痒痒。这种己所不原创 2009-05-08 09:18:00 · 2938 阅读 · 2 评论