Primates's profilePrimatesPhotosBlogListsMore ![]() | Help |
|
PrimatesBegin... ... 这就是Primates(灵长目) 网站再讨论最近,总算有时间能够写点东西了.
======================
网站方面,应该还是有些内容可以有所作为的.
最近的目标,做一个"功能型"网站.力争把自己的想法做出来. 冲动?小店开张了,虽然不是很好,但是毕竟是开始了。
=========
有关硬件产品的销售问题:还需要仔细研究,寻求一种利益最大化、社会效益最大化的模式。传统的模式有待商榷。
......
有关主营内容的问题:现在就是缺少帮手,一个人忙不过来,精力有限。苦于找不到一个合适的帮手,造就很想带一个徒弟,但是人在那里呢?没问题——冲! 防止IT项目延迟的18条军规1 详尽的需求分析 。 2 当面临项目开始时的问题时,您需要正视并处理这些困难和有争议的问题而不应该逃避 。 3 选择正确的技术。 正确的技术能够使您有最大的机会在现有的人力 4 设计一个产品的结构,这个结构要有很好的模块化特性,并且简单易懂。要花时间在设计功能模块和界面上,并且对这些模块和界面进行封装和组织。 5 一旦您知道了您将需要做些什么,您就可以着手准备项目计划。 6 回顾和项目相关的标书,合同和其他高层文件。 如果您的计划表明合同得不到执行,那么为了避免以后的严重问题就必须进行重新谈判。 7 检查设计和代码。 8 确定优先次序。 a) 确保首先将精力放在最紧急的事情,其次是最重要的事情,如果还有余下的时间再去做不太重要的事情。重要的是从客户角度考察事情的优先次序。 b) 确保问题得到充分的解决。 9 处理需求的变化。 不管变化如何小,您都要进行必要的处理,将这种变化的结果反馈给客户或者市场部门。项目发生延迟更确切的说是人们常常认为项目会发生延迟,不要期望在没有更多时间和资源的情况下做更多的事情。 10 让人们努力并机智地工作是问题的关键。 用时间和功能命名交付的产品要比仅仅使用数字命名更好。 您应该相信团队成员,相信他们明白需要做什么,并且会全力以赴做好它。 11 减少风险。 a) 不要仅仅为了使用新的技术语言或者方法而使用它们。 b) 尽量避免不同的语言或技术混用。 c) 减少对其他项目和组织的依赖性。 d) 在项目计划中要包含充分的权变措施。 项目延迟常常是由于一些主要的风险因素,例如新技术的失败或供应方延迟提交产品。 12 不做无用功,如果可以COPY一些有用的功能就不必重写。 13 采用稳固的编程方式。 a) 在开发工具中应用最高级的警告功能。 b) 应用错误检查工具来发现内存泄露,通用代码错误和其他潜在缺陷。 c) 养成在写完程序之后立即测试的习惯。 d) 记下测试出的程序错误并编写报告。 e) 使用可靠的结构和算法。 14 减少“设计-编程-测试“循环的时间长度。 15 在测试方面不惜时间。 16 定期进行产品发布。 您得到的反馈越多您的客户最后拒绝您的产品的可能性就越小。 17 为了防止您的项目延迟,您必须承担领导的责任,进行切实的领导。 a) 担负起责任,不责备他人,不找借口,勇于承认错误并改进。 b) 不要任由他人责备,也不要寻找不具说服力的借口。 c) 为了整个项目团队能顺利工作,您必须做一些领导应该做的事情,即使这些事情并不让人惬意。 d) 如果您知道问题所在就立刻着手解决这些问题而不要无视问题的存在。 e) 要做全局把握整个项目的人。 18 为了节省时间一定要舍得花时间。 如果您有方法能够为整个项目节省时间,那么就采用这种方法,尽管它可能会使工作暂时落后于预定计划。 SQL高手篇:精妙SQL语句介绍1. 说明:复制表(只复制结构,源表名:a,新表名:b) SQL: select * into b from a where 1<>1; 2. 说明:拷贝表(拷贝数据,源表名:a,目标表名:b) SQL: insert into b(a, b, c) select d, e, f from b; 3. 说明:显示文章、提交人和最后回复时间 SQL: select a.title, a.username, b.adddate 4. 说明:外连接查询(表名1:a,表名2:b) SQL: select a.a, a.b, a.c, b.c, b.d, b.f 5. 说明:日程安排提前五分钟提醒 SQL: select * 6. 说明:两张关联表,删除主表中已经在副表中没有的信息 SQL: delete from info
SQL: SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE SQL: select * 学位让你沦落:有史以来最狂妄的演讲演讲人 Larry. Ellison是Oracle的CEO。 Larry. Ellison 在耶鲁大学2000届毕业典礼上发表了以下世人看来最为狂妄、不受欢迎但又是现实真实状况的演讲。 [演讲内 耶鲁的毕业生们,我很抱歉——如果你们不喜欢这样的开场。我想请你们为我做一件事。请你---好好看一看周围,看一看站在你左边的同学,看一看站在你右边的同学。 请你设想这样的情况:从现在起5年之后,10年之后,或30年之后,今天站在你左边的这个人会是一个失败者;右边的这个人,同样,也是个失败者。而你,站在中间的家伙,你以为会怎样?一样是失败者。失败的经历。失败的优等生。 说实话,今天我站在这里,并没有看到一千个毕业生的灿烂未来。我没有看到一千个行业的一千名卓越领导者,我只看到了一千个失败者。你们感到沮丧,这是可以理解的。为什么,我,埃里森,一个退学生,竟然在美国最具声望的学府里这样厚颜地散布异端?我来告诉你原因。因为,我,埃里森,这个行星上第二富有的人,是个退学生,而你不是。因为比尔·盖茨,这个行星上最富有的人——就目前而言---是个退学生,而你不是。因为艾伦,这个行星上第三富有的人,也退了学,而你没有。再来一点证据吧,因为戴尔,这个行星上第九富有的人——他的排位还在不断上升,也是个退学生。而你,不是。 ......你们非常沮丧,这是可以理解的。 你们将来需要这些有用的工作习惯。你将来需要这种'治疗'。你需要它们,因为你没辍学,所以你永远不会成为世界上最富有的人。哦,当然,你可以,也许,以你的方式进步到第10位,第11位,就像Steve。但,我没有告诉你他在为谁工作,是吧? 根据记载,他是研究生时辍的学,开化得稍晚了些。 现在,我猜想你们中间很多人,也许是绝大多数人,正在琢磨,'我能做什么? 我究竟有没有前途?'当然没有。太晚了,你们已经吸收了太多东西,以为自己懂得太多。你们再也不是19岁了。你们有了'内置'的帽子,哦,我指的可不是你们脑袋上的学位帽。 嗯......你们已经非常沮丧啦。这是可以理解的。所以,现在可能是讨论实质的时候啦—— 绝不是为了你们,2000年毕业生。你们已经被报销,不予考虑了。我想,你们就偷偷摸摸去干那年薪20万的可怜工作吧,在那里,工资单是由你两年前辍学的同班同学签字开出来的。事实上,我是寄希望于眼下还没有毕业的同学。我要对他们说,离开这里。收拾好你的东西,带着你的点子,别再回来。退学吧,开始行动。 我要告诉你,一顶帽子一套学位服必然要让你沦落......就像这些保安马上要把我从这个讲台上撵走一样必然......(此时,Larry被带离了讲台) Graduates of Yale University, I apologize if you have endured this type of prologue before, but I want yo "In fact, as I look out before me today, I don't see a thousand hopes for a bright tomorrow. I don't see a thousand future leaders in a thousand industries. I see a thousand losers. "You're upset. That's understandable. After all, how can I, Lawrence 'Larry' Ellison, college dropout, have the audacity to spout such heresy to the graduating class of one of the nation's most prestigious institutions? I'll tell you why. Because I, Lawrence "Larry" Ellison, second richest man on the planet, am a college dropout, and you are not. "Because Bill Gates, richest man on the planet -- for now, anyway -- is a college dropout, and you are not. "Because Paul Allen, the third richest man on the planet, dropped out of college, and you did not. "And for good measure, because Michael Dell, No. 9 on the list and moving up fast, is a college dropout, and you, yet again, are not. "Hmm . . . you're very upset. That's understandable. So let me stroke your egos for a moment by pointing out, quite sincerely, that your diplomas were not attained in vain. Most of you, I imagine, have spent four to five years here, and in many ways what you've learned and endured will serve you well in the years ahead. You've established good work habits. You've established a network of people that will help you down the road. And you've established what will be lifelong relationships with the word 'therapy.' All that of is good. For in truth, you will need that network. You will need those strong work habits. You will need that therapy. "You will need them because you didn't drop out, and so you will never be among the richest people in the world. Oh sure, you may, perhaps, work your way up to No. 10 or No. 11, like Steve Ballmer. But then, I don't have to tell you who he really works for, do I? And for the record, he dropped out of grad school. Bit of a late bloomer. "Finally, I realize that many of you, and hopefully by now most of you, are wondering, 'Is there anything I can do? Is there any hope for me at all?' Actually, no. It's too late. You've absorbed too much, think you know too much. You're not 19 anymore. You have a built-in cap, and I'm not referring to the mortar boards on your heads. "Hmm... you're really very upset. That's understandable. So perhaps this would be a good time to bring up the silver lining. Not for you, Class of '00. You are a write-off, so I'll let you slink off to your pathetic $200,000-a-year jobs, where your checks will be signed by former classmates who dropped out two years ago. "Instead, I want to give hope to any underclassmen here today. I say to you, and I can't stress this enough: leave. Pack your things and your ideas and don't come back. Drop out. Start up. "For I can tell you that a cap and gown will keep you down just as surely as these security guards dragging me off this stage are keeping me down . . ." (At this point The Oracle CEO was ushered off stage。 (T113) 网站盈利再论
市场?技术?需求?中国,一个封建信仰被打破,而另一个需要建立但还没有建立的信仰在目前不被人们所认同的时候,金钱、物质的需求成了最直接的... ... 因此,急功近利是目前大多数人的要求,更是我目前所遇到的。 接到一个网站项目,无论这个项目多大,客户不知道自己做成什么?该如何做?一句话——让我自己看着办,而且要求很高——不是时间上很紧(一两天就搞定),要么就是不可能实现的功能。 中国内地的市场很大,而且很多人都想做网站,他们很迫切的需要。但是,他们又不知道自己如何利用网站,仅仅只是知道网站很好,至于如何能与自己结合的问题,没人考虑,在他们认为,这些问题是网站设计人员的问题。似乎网站设计人员应该、也必须能够做好。 ================== 一个网站的考虑: 如果您觉得您的公司或者您个人很有必要需要一个网站的话,应该首先这么考虑——一下的提示不是从技术的角度考虑,而是从网站需要者考虑:
开始了今天,开始自己的事情,给自己做。 名称:时代电脑,本来想叫作"时代科技",但是,为了大众化,能够让大众一目了然,还是叫作"时代电脑".为此,不太迷信的我,也开始在网上找了一些算命命名方面的东东,"时代电脑"命相上的解释如下: 时代电脑 43 数暗示为(总笔画数是43): 雨夜之花,外祥内苦,忍耐自重,转凶为吉。 (吉带凶) "时代科技"的命相解释如下: 时代科技 32 数暗示为(总笔画数是32): 池中之龙,风云际会,一跃上天,成功可望。 (吉) ...... 哎,需要不需要相信这些东西呢? 解放今天,就要准备辞职了。这种准备了将近3个多月的事情,终于今天可以实施、实现了。 这几天精神很好,这已经不是我第一次辞职了。不过,回想起2004年,一种刻骨铭心的感觉... ... 2004年,回到铜川的第一年,我把自己的一切一切都归置于十分低调的气氛中,不张扬,远离了很多身边的人,努力去认识需要认识的朋友。这似乎是一种病态的思维,但是没有办法,2004年我所处的工作环境,已经不允许我多想什么,只能以一种更高的高度来考虑我的整个人生,而非眼下的些许细节事务。 2004年,让我更多的了解了铜川的整个情况,一个蓄谋已久的想法再次让我蠢蠢欲动,曾搅得我不能入眠。 2004年,回想起来,我都无法想象我曾那么的低调。的确,似乎有些病态的做作。这是我这一生的体会最深的一次,还好,多亏思想已经游离了我的身体,让我把眼光放得更远、更远,让我终于在储备了几年的能量得以与发酵,最终在今天开始释放。 此次辞职,以及将来所要做的,已经再三的考虑好,也很周全。 2005年5月27日,有一种事务开始在铜川出现,这仅仅只是一个起点... ... Le't go beging ... ... 网站盈利研究3看了王建硕的网站成功的关键一文,我很有感触。这和我前不久的结论几乎一致。 1:没有自己的技术,就不能实现自己的意图。
2:技术无论好坏
3:线下的运作是关键
4:坚持/恒心
5:目的明确
6:资金的保证
ps:顺便贴一个网站 比尔盖茨的11点忠告1.生活是不公平的,你要去适应它。 然后你才可能有比尔盖茨这样的家 Win2K下安装IIS 配置asp+cgi+php+mysql安装win2K,安装IIS ,其中Indexing Service, FrontPage 2000 Server Extensions, Internet Service Manager (HTML) 这几个别装,还有其它的一些,总之不用的都别装。(根据安全原则,最少的服务+最小的权限=最大的安全。) 首先,打开internet管理器(开始-->程序-->管理-->Internet服务管理)如果照上面所安装的,里面有一个默认站点和一个smtp的服务项选默认站点,删除其下面的所有目录。(按你键盘上的delete键)停掉iis,最简单的方法:开始-->运行-->打入net stop iisadmin 选择Y回车 (启动的命令是:net start w3svc)把C盘的Inetpub目录彻底删掉(停掉iis后才能删),在其它盘新建一个目录在IIS管理器中将默认站点的主目录指向刚才新建的目录如果你需要什么权限的目录可以自己慢慢建,需要什么权限开什么。 (特别注意写权限和执行程序的权限,没有绝对的必要千万不要给,默认是没给的,所以你不用研究,呵呵..) 应用程序配置:在IIS管理器中删除必须之外的任何无用映射,留下ASP, ASA和其他你确实需要用到的文件类型,(除了cgi,php,其它的我想你都没用,删除htw, htr, idq, ida……)不知道在哪删吗??方法:打开Internet服务管理->选择站点->属性->WWW服务->编辑->主目录->配置->应用程序映射,然后就开始一个个删吧(没有全选的,真麻烦)。接着在刚刚那个窗口的应用程序调试书签内将脚本错误消息改为发送文本(除非你想ASP出错的时候用户知道你的程序/网络/数据库结构)错误文本写什么?随便你喜欢,自己看着办。点击确定退出时别忘了让虚拟目录继承你设定的属性。 为了对付日益增多的cgi漏洞扫描器,还有一个小技巧可以参考,在IIS中将HTTP404 Object Not Found出错页面通过URL重定向到一个定制HTM文件,可以让目前绝大多数CGI漏洞扫描器失灵。其实原因很简单,大多数CGI扫描器在编写时为了方便,都是通过查看返回页面的HTTP代码来判断漏洞是否存在的,例如,著名的IDQ漏洞一般都是通过取1.idq来检验,如果返回HTTP200,就认为是有这个漏洞,反之如果返回HTTP404就认为没有,如果你通过URL将HTTP404出错信息重定向到HTTP404.htm文件,那么所有的扫描无论存不存在漏洞都会返回HTTP200,90%的CGI扫描器会认为你什么漏洞都有,结果反而掩盖了你真正的漏洞,让入侵者茫然无处下手,不过从个人角度来说,我还是认为扎扎实实做好安全设置比这样的小技巧重要的多。 Win2000的账号安全是另一个重点,首先,Win2000的默认安装允许任何用户通过空用户得到系统所有账号/共享列表,这个本来是为了方便局域网用户共享文件的,但是一个远程用户也可以得到你的用户列表并使用暴力法破解用户密码。很多朋友都知道可以通过更改注册表Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous = 1来禁止139空连接,实际上win2000的本地安全策略(如果是域服务器就是在域服务器安全和域安全策略中)就有这样的选项RestrictAnonymous(匿名连接的额外限制),这个选项有三个值: 0:None. Rely on default permissions(无,取决于默认的权限) 1:Do not allow enumeration of SAM accounts and shares(不允许枚举SAM帐号和共享) 2:No access without explicit anonymous permissions(没有显式匿名权限就不允许访问) 0这个值是系统默认的,什么限制都没有,远程用户可以知道你机器上所有的账号、组信息、共享目录、网络传输列表(NetServerTransportEnum等等,对服务器来说这样的设置非常危险。 1这个值是只允许非NULL用户存取SAM账号信息和共享信息。 2这个值是在win2000中才支持的,需要注意的是,如果你一旦使用了这个值,你的共享估计就全部完蛋了,所以我推荐你还是设为1比较好。 好了,入侵者现在没有办法拿到我们的用户列表,我们的账户安全了……慢着,至少还有一个账户是可以跑密码的,这就是系统内建的administrator,怎么办?我改改改,在计算机管理->用户账号中右击administrator然后改名,改成什么随便你,只要能记得就行了。改了超管理用户名后,在Terminal Service的登录界面还是可以看到的(你登录过就自已记住啦),修改方法:运行regedit,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\winlogon项中的Don't Display Last User Name串数据改成1,这样系统不会自动显示上次的登录用户名。 为了安全,你还可以打开TCP/IP筛选,桌面上右击网上邻居->属性->右击你要配置的网卡->属性->TCP/IP->高级->选项->TCP/IP过滤,这里有三个过滤器,分别为:TCP端口、UDP端口和IP协议TCP端口,点击"只允许",然后在下面加上你需要开的端口,一般来说WEB服务器只需要开80(www),FTP服务器需要开20(FTP Data),21(FTP Control),3306(Mysql),3389(远程终端控制,如果你的主机托管在别人机房里,不能直接*作,就需要这个)邮件服务器可能需要打开25(SMTP),110(POP3),我对端口没研究,但如果照本文所提供的服务,你只要开以上几个就行了。(80,20,21,25,3306,3389) --cgi支持 下载activeperl (可到www.perl.com下载最新版) 1、解压,运行install.exe,默认是安装在 C:\PERL 下,不过为了方便,请最好安装到 C:\USR 目录下,(这样写 Perl 解释器的路径就可以直接用 #!/usr/bin/perl 了,可以保持单机环境和网络环境路径一致。 安装时一路按Y即可。) 2、安装好后,按照下面三步来修改注册表: 运行 RegEdit,搜寻: HKEY_LOCAL_MACHINE\System\Currentcontrlset\Services\W3svc\Parameters\scriptMap\ 键名, 然后增加键名:".cgi",键值:"C:\USR\BIN\perl.exe %s %s" 和键名:".pl",键值:"C:\USR\BIN\perl.exe %s %s" (不懂得建?那么:在右边的框内--->点右键--->新建-->字符串值 名称改为.cgi,双击该键即可输入数值数据,也就是上面说的键值) 因为要让这台主机支持php,所以顺便在这里添加上php和php3的支持(以后新建站点时可省事) 增加键名".php",键值:"C:\php\php.exe %s %s" 增加键名".php3",键值:"C:\php\php.exe %s %s" OK,重启后即生效!cgi支持搞定!以后新建站点后,在应用程序配置里面默认就会加上php和cgi的支持(不给这个权限的话删掉就是了)。 cgi支持搞定!
--mysql支持 下载mysql (可到www.mysql.com下载最新版本) 1、解压,运行setup.exe完全安装,默认安装路径为:c:\mysql; 2、安装完成后,打开“开始”按钮中的“运行”,输入命令:C:\mysql\bin\mysqld-nt.exe --install,并执行; 3、开始-->程序-->管理工具-->服务-->找到mysql-->启动它; 4、mysql安装完成,重启win2000 5、重启后打开C:\mysql\bin\winmysqladmin.exe,在第一次用它时,需要建立管理员名及密码,分别设置用户名和密码,设定后,系统托盘会出现一个“红绿灯”的小图标(以后系统启动时均会自动加载)。 6、OK,mysql支持搞定!
--php支持 下载PHP (可到www.php.com下载最新版本) 1、将 php 4.0.4 解压到 c:\php; 2、将PHP目录内的 php.ini-dist 文件拷贝到WinNT目录内,改名为 php.ini; (这是php的配置文件,无需更改即可运行,我没仔细研究) 3、根据需要修改 php.ini 文件内容,如要使用 session 功能,请建立 c:\tmp 目录,并将 php.ini 文档内 session.save_path 的值设置成为绝对路径:c:/tmp; 4、将PHP目录内的 Php4ts.dll 文件复制到 WinNt\System32 目录内; 5、在控制面板中的管理工具里启动“Internet 服务管理器”(IIS); 6、打开站点属性,在 'ISAPI 筛选器'选项中, 增加新的筛选器,用 'PHP' 作为筛选器名称,在“可执行文件”栏中填入php4isapi.dll及其路径 (c:\php\sapi\php4isapi.dll)。 7、在属性的"文档"选项中"启用默认文档"加入"index.php"; 谈谈Unicode编码 简要解释UCS/UTF/BMP/BOM这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题: 使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢? 我很早前就发现Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)。但这些标记是基于什么标准呢? 查了查相关资料,总算将这些问题弄清楚了,顺带也了解了一些Unicode的细节。写成一篇文章,送给有过类似疑问的朋友。本文在写作时尽量做到通俗易懂,但要求读者知道什么是字节,什么是十六进制。 big endian和little endian是CPU处理多字节数的不同方式。例如“汉”字的Unicode编码是6C49。那么写到文件里时,究竟是将6C写在前面,还是将49写在前面?如果将6C写在前面,就是big endian。还是将49写在前面,就是little endian。 “endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。 我们一般将endian翻译成“字节序”,将big endian和little endian称作“大尾”和“小尾”。 字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算机的内码。早期的计算机使用7位的ASCII编码,为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。 GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。 GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。 从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。 有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。 这里还有一些细节: GB2312的原文还是区位码,从区位码到内码,需要在高字节和低字节上分别加上A0。 在DBCS中,GB内码的存储格式始终是big endian,即高位在前。 GB2312的两个字节的最高位都是1。但符合这个条件的码位只有128*128=16384个。所以GBK和GB18030的低字节最高位都可能不是1。不过这不影响DBCS字符流的解析:在读取DBCS字符流时,只要遇到高位为1的字节,就可以将下两个字节作为一个双字节编码,而不用管低字节的高位是什么。 前面提到从ASCII、GB2312、GBK到GB18030的编码方法是向下兼容的。而Unicode只与ASCII兼容(更准确地说,是与ISO-8859-1兼容),与GB码不兼容。例如“汉”字的Unicode编码是6C49,而GB码是BABA。 Unicode也是一种字符编码方法,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。Unicode的学名是"Universal Multiple-Octet Coded Character Set",简称为UCS。UCS可以看作是"Unicode Character Set"的缩写。 根据维基百科全书(http://zh.wikipedia.org/wiki/)的记载:历史上存在两个试图独立设计Unicode的组织,即国际标准化组织(ISO)和一个软件制造商的协会(unicode.org)。ISO开发了ISO 10646项目,Unicode协会开发了Unicode项目。 在1991年前后,双方都认识到世界不需要两个不兼容的字符集。于是它们开始合并双方的工作成果,并为创立一个单一编码表而协同工作。从Unicode2.0开始,Unicode项目采用了与ISO 10646-1相同的字库和字码。 目前两个项目仍都存在,并独立地公布各自的标准。Unicode协会现在的最新版本是2005年的Unicode 4.1.0。ISO的最新标准是10646-3:2003。 UCS规定了怎么用多个字节表示各种文字。怎样传输这些编码,是由UTF(UCS Transformation Format)规范规定的,常见的UTF规范包括UTF-8、UTF-7、UTF-16。 IETF的RFC2781和RFC3629以RFC的一贯风格,清晰、明快又不失严谨地描述了UTF-16和UTF-8的编码方法。我总是记不得IETF是Internet Engineering Task Force的缩写。但IETF负责维护的RFC是Internet上一切规范的基础。 UCS有两种格式:UCS-2和UCS-4。顾名思义,UCS-2就是用两个字节编码,UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码。下面让我们做一些简单的数学游戏: UCS-2有2^16=65536个码位,UCS-4有2^31=2147483648个码位。 UCS-4根据最高位为0的最高字节分成2^7=128个group。每个group再根据次高字节分为256个plane。每个plane根据第3个字节分为256行 (rows),每行包含256个cells。当然同一行的cells只是最后一个字节不同,其余都相同。 group 0的plane 0被称作Basic Multilingual Plane, 即BMP。或者说UCS-4中,高两个字节为0的码位被称作BMP。 将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节,就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。 UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下: 例如“汉”字的Unicode编码是6C49。6C49在0800-FFFF之间,所以肯定要用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 110001 001001, 用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。 读者可以用记事本测试一下我们的编码是否正确。 UTF-16以16位为单元对UCS进行编码。对于小于0x10000的UCS码,UTF-16编码就等于UCS码对应的16位无符号整数。对于不小于0x10000的UCS码,定义了一个算法。不过由于实际使用的UCS2,或者UCS4的BMP必然小于0x10000,所以就目前而言,可以认为UTF-16和UCS-2基本相同。但UCS-2只是一个编码方案,UTF-16却要用于实际的传输,所以就不得不考虑字节序的问题。 UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。例如收到一个“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59。如果我们收到UTF-16字节流“594E”,那么这是“奎”还是“乙”? Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是Byte Order Mark。BOM是一个有点小聪明的想法: 在UCS编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。 这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。 UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF(读者可以用我们前面介绍的编码方法验证一下)。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。 Windows就是使用BOM来标记文本文件的编码方式的。 本文主要参考的资料是 "Short overview of ISO-IEC 10646 and Unicode" (http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html)。 我还找了两篇看上去不错的资料,不过因为我开始的疑问都找到了答案,所以就没有看: 我写过UTF-8、UCS-2、GBK相互转换的软件包,包括使用Windows API和不使用Windows API的版本。以后有时间的话,我会整理一下放到我的个人主页上(http://fmddlmyy.home4u.china.com)。 我是想清楚所有问题后才开始写这篇文章的,原以为一会儿就能写好。没想到考虑措辞和查证细节花费了很长时间,竟然从下午1:30写到9:00。希望有读者能从中受益。 网站利润研究(3)2:创建具有盈利点的网站
网站利润研究(2)1.2:功能类网站
1.3:中介类网站
网站利润研究(1)开始着手张罗自己的事情了,以往的经历已经让我迫不及待了——该放弃的需要放弃。 网站,是我将来的内容之一,但并不是全部。研究几年的网站盈利的模式,就要开始自己的历程了。 1:网站的分类
1.1:内容类网站
Google的遗憾最近,看到不少朋友的网站,同时和他们做了一些交流。得到一下几个遗憾: 1:几乎所有的人都不了解如何通过网站得到利润; 2:大家都在一窝蜂的使用同样的方式“想”得到利润,跟风现象严重; 3:没有人好好的研究过这个行业。 ============== 通过Google是最近几年风行的一种利润获取方式之一。这种方式其实是Google参考以往广告点击方式,回报个人网站的一种方式。在以前,不少的网站早就如此做了,国人为此作了不少的努力,很多的个人网站打开后,往往到处都是广告或者弹出式的页面。 其实,我也知道,不少的个人网站的主人,他们把自己的网站做大作强仅仅只停留在一种想象中——就是幻想,并没有真正的努力过。这一点,我不能否认,因为对于大部分人来说,短期的利益是值得考虑的,如果自己的网站几年后就倒闭了,大不了自己再办一个网站,重新换一个面孔再去骗取用户的点击。 也许我个人的性格使然,我一直想努力做一个自己的、长期的、有价值的个人网站。同样,我的个人网站会放上Google的广告,但我并不会刻意的去点击他,也不会勉强用户去点击。 JavaScript:Window.ShowModalDialog使用手册基本介绍: showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDialog() 方法用来创建一个显示HTML内容的模态对话框。 window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。 使用方法: vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures]) vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures]) 参数说明: sURL -- 必选参数,类型:字符串。用来指定对话框要显示的文档的URL。 vArguments -- 可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。 sFeatures -- 可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。 ---------------- 1. dialogHeight: 对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。 2. dialogWidth: 对话框宽度。 3. dialogLeft: 离屏幕左的距离。 4. dialogTop: 离屏幕上的距离。 5. center: { yes | no | 1 | 0 } : 口是否居中,默认yes,但仍可以指定高度和宽度。 6. help: {yes | no | 1 | 0 }: 是否显示帮助按钮,默认yes。 7. resizable: {yes | no | 1 | 0 } [IE5+]: 是否可被改变大小。默认no。 8. status: {yes | no | 1 | 0 } [IE5+]: 是否显示状态栏。默认为yes[ Modeless]或no[Modal]。 9. scroll: { yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。 下面几个属性是用在HTA中的,在一般的网页中一般不使用。 10. dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。 11. edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。 12. unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。 参数传递: 1. 要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如: ------------------------------- parent.htm modal.htm ------------------------------- 2. 可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如: ------------------------------ parent.htm modal.htm JavaScript:window.open的使用方法以及参数说明一、window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二、基本语法: window.open ( pageURL , name , parameters ) 其中: pageURL 为子窗口路径 name 为子窗口句柄 parameters 为窗口参数(各参数用逗号分隔) 三、示例: 脚本运行后,page.html 将在新窗体 NewWindow 中打开,宽为100,高为400,距屏顶0象素,屏左0象素,无工具条,无菜单条,无滚动条,不可调整大小,无地址栏,无状态栏。 请对照上例中涉及的为常用的几个参数,除此以外还有很多其他参数,请见四。 四、各项参数 其中 yes/no 也可使用 1/0;pixel value 为具体的数值,单位象素。 参数 取值范围 说明 alwaysLowered yes/no 指定窗口隐藏在所有窗口之后alwaysRaised yes/no 指定窗口悬浮在所有窗口之上 depended yes/no 是否和父窗口同时关闭 directories yes/no Nav2和3的目录栏是否可见 height pixel value 窗口高度 hotkeys yes/no 在没菜单栏的窗口中设安全退出热键 innerHeight pixel value 窗口中文档的像素高度 innerWidth pixel value 窗口中文档的像素宽度 location yes/no 位置栏是否可见 menubar yes/no 菜单栏是否可见 outerHeight pixel value 设定窗口(包括装饰边框)的像素高度 outerWidth pixel value 设定窗口(包括装饰边框)的像素宽度 resizable yes/no 窗口大小是否可调整 screenX pixel value 窗口距屏幕左边界的像素长度 screenY pixel value 窗口距屏幕上边界的像素长度 scrollbars yes/no 窗口是否可有滚动栏 titlebar yes/no 窗口题目栏是否可见 toolbar yes/no 窗口的像素宽度 z-look yes/no 窗口被激活后是否浮在其它窗口之上XHTML的应用DOCTYPE是document type的简写。主要用来说明你用的XHTML或者HTML是什么版本。浏览器根据你DOCTYPE定义的DTD(文档类型定义)来解释页面代码。XHTML1.0提供了三种DOCTYPE可选择: (1)过渡型(Transitional ) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> (2)严格型(Strict ) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> (3)框架型(Frameset ) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> ============================== 设定一个名字空间(Namespace) 直接在DOCTYPE声明后面添加如下代码: <html XMLns="http://www.w3.org/1999/xhtml" > 声明你的编码语言 为了被浏览器正确解释和通过标识校验,所有的XHTML文档都必须声明它们所使用的编码语言。代码如下: <meta http-equiv="Content-Type" content="text/html; charset=GB2312" /> 这里声明的编码语言是简体中文GB2312,你如果需要制作繁体内容,可以定义为BIG5。 用小写字母书写所有的标签 XML对大小写是敏感的,所以,XHTML也是大小写有区别的。所有的XHTML元素和属性的名字都必须使用小写。否则你的文档将被W3C校验认为是无效的。例如下面的代码是不正确的: <TITLE>公司简介</TITLE> 正确的写法是: <title>公司简介</title> 同样的,<P>改成<p>,<B>改成<b>等等。这步转换很简单。 为图片添加 alt 属性 为所有图片添加alt属性。alt属性指定了当图片不能显示的时候就显示供替换文本,这样做对正常用户可有可无,但对纯文本浏览器和使用屏幕阅读机的用户来说是至关重要的。只有添加了alt属性,代码才会被W3C正确性校验通过。注意的是我们要添加有意义的alt属性,象下面这样的写法毫无意义: <img src="logo_unc_120x30.gif" alt="logo_unc_120x30.gif"> 正确的写法: <img src="logo_unc_120x30.gif" alt="UNC公司标志,点击返回首页"> 给所有属性值加引号 在HTML中,你可以不需要给属性值加引号,但是在XHTML中,它们必须被加引号。 例:height="100",而不能是height=100。 关闭所有的标签 在XHTML中,每一个打开的标签都必须关闭。就象这样: <p>每一个打开的标签都必须关闭。</p> <b>HTML可以接受不关闭的标,XHTML就不可以。</b> 这个规则可以避免HTML的混乱和麻烦。举例来说:如果你不关闭图像标签,在一些浏览器中就可能出现CSS显示问题。用这种方法能确保页面和你设计的一样显示。需要说明的是:空标签也要关闭,在标签尾部使用一个正斜杠"/"来关闭它们自己。例如: <br /> <img src="webstandards.gif" /> 经过上述七个规则处理后,页面就基本符合XHTML1.0的要求。但我们还需要校验一下是否真的符合标准了。我们可以利用W3C提供免费校验服务(http://validator.w3.org/)。发现错误后逐个修改。在后面的资源列表中我们也提供了其他校验服务和对校验进行指导的网址,可以作为W3C校验的补充。 工作日志(随想)中国人的制度就是怪异。 1:作为一个管理层,应该注意的是各种考核指标的曲线,而非某一刻(某一天)发生的事情。 2:管理,在我认为,管理的是事情,而非人。如果你的手下没有完成任务,除了他个人原因外,领导层应该好好总结一下,看看工作环境是否满足这些任务的完成; 3:因此,我们在做一个B/S系统的时候,就目前中国的国情,没有做到合理的科学化的管理。只不过是把“人治”电子化了。而非真正的做到科学的管理。 ... ... =============== 因此,做好一个B/S系统很难,很难。没有科学的流程,没有具体的要求... ... 构建稳健的B/S系统——词语过滤机制 (有待商榷)最近,问了很多业内的朋友,询问有关如何有效控制过滤用户输入的内容。结果却让我大失所望,很多业内的同行,长期以来并没有在意这个问题,尤其是那些只做B/S系统的人,基本上就是敞开式的接受任何用户的输入。 要构建一个稳健的系统,那么必须考虑操作者的任何的可能性。比如,在以ASP.NET为平台的系统上,如果在输入框中输入"<"或者">"(尖括号),那么势必引起 .NET 安全机制的的警告,系统不会执行下去。同时,如果操作者在输入框里面输入"'"(英文状态下的单引号),势必会造成数据库语言的错误... ... 还有更多的是因为政治的需要,需要过滤或者替换的一些词语。这些,都是需要程序员的努力,做到系统的稳定和社会的稳定。 为此,我们可以单独写一个类,如下( VB.NET ): 1 Imports System.Text.RegularExpressions 2 Namespace MiniData 4 Function WordPress(ByVal Textstr As String) As String 14 ObjRe = New Regex("\n") 19 End Class ========== 这里,我创建了一个命名空间 MiniData,定义了一个 MiniDataPress 类。主要是利用 "正则表达式" 类 (RegularExpressions) 的替换方法。我这里写的仅仅只是一个例子。 其中,自定义 WordPress 方法是用来过滤用户输入的。这里面,执行的顺序应该是有讲究的。 对于 asp:textbox 控件为单行属性的输入框,不会有"换行符"的现象存在;还有,如果像"姓名"之类的输入框,中文姓名我们必须要去除文字之间的的空格,如: "张 三" (汉字之间有空格) 要成为 "张三" (无空格),而对于英文名称,单词之间又必须有一个空格,如: " Report Abouse" ,这就不需要处理。 还有就是为了系统安全,我们必须去除掉"<"、">"、"@@"(数据库控制命令前缀)、"'"(单引号)... ... 另外,为了排版的问题,很多人喜欢把 "换行符" 替换成 "<br>",根据我的经验,这样不是很好,因该替换成 "</p><p>",因为一个换行,是上一段文字的结束和下一段文字的开始,然后再给所有内容的开始和结尾分别加上<p>与</p>,补齐标签。这就是上面第14行到第17行的处理方式。出来的形式应该是: <p>开始.......</p><p>第一段文字........</p><p>第二段文字... ...</p><p> ... ... </p> 这样子的形式,很容易在 CSS 当中设置 p 的样式,可以做到每个段落的起始行缩进两个字符 (12号宋体的话应该是 24px 的缩进量),符合中国人的习惯。如: p { ============= 以上是我只对一些安全性而作的过滤,但是面对众多的政治性的过滤词,我觉得这种方式太繁琐。 还没有一个值得在这里记载的方法,因此,本文标题是“有待商榷”。希望高手能给与指点。 作为MSN测试版本,有几个Bug我们再看属于自己的博克首页的时候(默认IE浏览器),如果你使用IE浏览器的[查看]菜单下的[源代码]子菜单,系统会按照默认的写字板打开源代码。使用写字板的“查找”,输入查找的“<%”关键字,你会发现源代码中有一下的字样: <table id="_ctl0_SpaceTable" width="<%=TableWidth%>" cellspacing="0" class="shdr"> 红色字体部分,是标准的ASP/ASP.NET表示层中获得变量值的书写方式,但是,所不同的是它被双引号引用,这也许是作者的笔误,因为双引号引用的部分,不会被IIS解释器解释的。或许是作为测试期间已经发现的不良问题的暂时解决方式。不得而知。 另外,在源代码里面,我们还可以看到 <a href="http://space.../personalspace.aspx?_c11...=" title='我的共享空间概况'>主页</a> 中的红色字体部分,URL参数的命名很有意思... ... 值得学习。 |
|
||||||||||||||
|
|