Primates's profilePrimatesPhotosBlogListsMore Tools Help

Primates

Begin... ... 这就是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
     from table a,(
          select max(adddate) adddate
          from table where table.title=a.title) b
 

4. 说明:外连接查询(表名1:a,表名2:b)

SQL: select a.a, a.b, a.c, b.c, b.d, b.f
     from a LEFT OUT JOIN b ON a.a = b.c;  

5. 说明:日程安排提前五分钟提醒

SQL: select *
     from 日程安排
     where datediff(''minute'', f开始时间, getdate())>5   
  

6. 说明:两张关联表,删除主表中已经在副表中没有的信息

SQL: delete from info
     where not exists(
           select *
           from infobz
           where info.infid=infobz.infid );


7. 说明:——

SQL: SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE
     FROM TABLE1,(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE
                  FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND
                        FROM TABLE2
                        WHERE TO_CHAR(UPD_DATE,''YYYY/MM'') =
                              TO_CHAR(SYSDATE, ''YYYY/MM'')) X,
                       (SELECT NUM, UPD_DATE, STOCK_ONHAND
                        FROM TABLE2
                        WHERE TO_CHAR(UPD_DATE,''YYYY/MM'') =
                              TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, ''YYYY/MM'')
                              || ''/01'',''YYYY/MM/DD'') - 1, ''YYYY/MM'') ) Y,
                   WHERE X.NUM = Y.NUM (+)AND X.INBOUND_QTY
                                 + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND ) B
                   WHERE A.NUM = B.NUM; 
8. 说明:——

SQL: select *
     from studentinfo
     where not exists(select * from student where studentinfo.id=student.id)
           and 系名称=''"&strdepartmentname&"''
           and 专业名称=''"&strprofessionname&"''
     order by 性别, 生源地, 高考总成绩;

学位让你沦落:有史以来最狂妄的演讲

演讲人 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
u to do something for me. Please, take a ood look around you. Look at the classmate on your left. Look at the classmate on your right. Now, consider this: five years from now, 10 years from now, even 30 years from now, odds are the person on your left is going to be a loser. The person on your right, meanwhile, will also be a loser. And you, in the middle? What can you expect? Loser. Loserhood. Loser Cum Laude.

  "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)

网站盈利再论

昨天,再次和网上的同行讨论有关网站盈利的问题。

闲话少说,客户的网站唯一的目的就是为客户带来利润。从利润的来源说,无非就是销售的增加。销售的增加可以通过以下几种形式:

  1. 加大销售力度——传统的模式
    • 依靠刺激销售人员的积极性,在已有的销售范围内提高一定的销售量;
    • 提高终端营销的利润,一般一个企业不可能做到全面控制整体销售;大部分都是采用本地化策略,依靠当地的代理或者其他形式的终端销售,只要给她们提供一定的经济支持,基本上都能很好的配合企业的营销;
    • 提高广告的宣传力度,这种形式在企业初期或者转型期最为常见。常见的广告宣传模式有:电视广告,报纸杂志广告,有广告公司代理广告的投放或者分发;
  2. 提高企业自身的形象
    • 一般在有国难或者地区灾难的时候,往往一些企业伸出援助之手。这和明星义演的效果差不多,还有一些企业配合国家政策扶持一些弱势群体,为企业做宣传。
    • 形象的好坏往往是“居高临下”的,所谓的临下就是面对弱势群体或者企业产品的最终用户中那些经济消费能力较弱的群体,免费送“药”就是其中的例子。
  3. 目前企业宣传中的盲点
    • 企业仍然需要宣传,他们更多的考虑到传统媒体或者传统宣传方式,这是他们的首选。
    • 新型的网站宣传方式,已经渗透到企业当中,但是认知率不高;
    • 大多数网站建设者往往只把自己考虑为自己是“建设者”,没有考虑到网站使用者的利益。这就是网站设计者目前面临的局面。企业愿意雇用几个司机开车,也不愿意雇用一个人来维护网站。
    • 现在有不少网站建设者把自己作为“网站使用者”的角度来考虑问题,但是这种方式很容易造成“越厨代庖”的局面,而且在沟通上的成本很大。
  4. 如何做好一个网站
    • 首先考虑到该客户的行业规则;
    • 考虑该客户行业的发展动态;
    • 客户在行业中所处的位置和经营思路;
    • 总之,首要的条件是——先从行业的角度来考虑。

市场?技术?需求?

中国,一个封建信仰被打破,而另一个需要建立但还没有建立的信仰在目前不被人们所认同的时候,金钱、物质的需求成了最直接的... ...

因此,急功近利是目前大多数人的要求,更是我目前所遇到的。

接到一个网站项目,无论这个项目多大,客户不知道自己做成什么?该如何做?一句话——让我自己看着办,而且要求很高——不是时间上很紧(一两天就搞定),要么就是不可能实现的功能。

中国内地的市场很大,而且很多人都想做网站,他们很迫切的需要。但是,他们又不知道自己如何利用网站,仅仅只是知道网站很好,至于如何能与自己结合的问题,没人考虑,在他们认为,这些问题是网站设计人员的问题。似乎网站设计人员应该、也必须能够做好。

==================

一个网站的考虑:

如果您觉得您的公司或者您个人很有必要需要一个网站的话,应该首先这么考虑——一下的提示不是从技术的角度考虑,而是从网站需要者考虑:

  • 您目前所从事的工作属于哪个行业?
    • 该行业有哪些特殊性,需要您以文字的形式备案,以作网站设计时的参考;
    • 该行业有没有“视觉”要求(行业的视觉要求,就是该行业的一些vi标准,中国的汽车行业协会要求所属单位尽量使用“深蓝色”为行业形象图形的底色;饮食行业大多采用橙色作为底色;农业基本上都是绿色为底色......)
    • 该行业有没有协会,协会由没有“标志”?
    • 可以参考该行业已有的协会网站或者同行网站做比较、参考;
  • 您的经营规模大小
    • 不要贪多、求全。作为行业的一个单位,不可能包括行业中的所有;
    • 自己可以参考同行的网站,选定一些适合自己的内容,按照您对本行业的认识,先预期做一下内容上的分类;
  • 您要做的网站所要达到的目的
    • 做网站,无外乎就是一个宣传的目的,这是一个共识。我这里讲的“目的”就是您与其他网站或者同行有什么更为细致的目的——是突出特色的目的。就好比饭店,所有的饭店无外乎都是为了盈利,但是有些饭店突出“农家菜”,有些突出“火锅”;好比“谭鱼头”、“小肥羊”、“肯德基”...... 他们都有各自不同的特色。
  • 网站将来谁来维护
    • 网站的产权当然属于您了,所有的内容也是为您服务的。但是,您并不是专业的网站制作者。好比,你并不是报社的编辑,您不可能为您的公司自己花精力撰写新闻稿、宣传稿,您更不懂得如何操作和维护网站。您需要委托一个专门为您提供技术支持和内容支撑的人员或公司。
  • 不要急功近利
    • 不要今天看了这篇文章,或者看到同行有了网站,你就想明天就拥有自己的网站。(您也许很有钱,加上现在做一个网站的费用不是很高,您会很自然的告诉设计者——能不能下个星期就给我做好,我马上付钱,似乎您有了钱,就有了一切)
    • 网站的设计要比一本杂志复杂的多,一个设计有水准的网站,不是一天两天搞出来的,更不是一两个星期就能出笼的。一个网站设计者,他是一个脑力劳动者,需要的是创意和思路,而商业社会的弊病就是抹杀创意和思路。很多设计者在走出学校后,随着阅历的增加,99%的设计者的创业逐年递减,最后改行。创意更不是随手就能来的——这种人才少得可怜,在中国这种人才就那么几个,您给的报酬根本用不起。
    • 把您的要求很坦白的告诉设计者,充分考虑好时间。我想,每一个设计者,都会很认真地考虑您的要求的。
  • 良好的沟通
    • 沟通是双向的,很多生意场的人,觉得沟通应该是别人和自己的“单向沟通”。很多不会与人沟通,却很强调沟通。很多人都觉得我本人“不善于沟通”,其实,我自己认为多少有那么点“缺点”,可也不能全怪我。我所考虑问题的角度是以我所认识的角度考虑的,除了技术上的因素不能也无法做到沟通外,其他方面的,我很需要有一个了解,但是我不清楚该如何了解。就好比,您根本就不知道该问我那些技术上的细节。可是当我开始发问的时候,有些人干了一辈子了,并不能很好描述自己所从事的职业。
    • 我很想有一个轻松的环境。我作为设计者,我很想有一个轻松的环境,让我充分的了解您的行业和您所从事的职业,这不仅对网站设计有所帮助,更能起到融入的作用。

开始了

今天,开始自己的事情,给自己做。

名称:时代电脑,本来想叫作"时代科技",但是,为了大众化,能够让大众一目了然,还是叫作"时代电脑".为此,不太迷信的我,也开始在网上找了一些算命命名方面的东东,"时代电脑"命相上的解释如下:

时代电脑 43 数暗示为(总笔画数是43):

雨夜之花,外祥内苦,忍耐自重,转凶为吉。 (吉带凶)

"时代科技"的命相解释如下:

时代科技 32 数暗示为(总笔画数是32):

池中之龙,风云际会,一跃上天,成功可望。 (吉)

......

哎,需要不需要相信这些东西呢?

解放

今天,就要准备辞职了。这种准备了将近3个多月的事情,终于今天可以实施、实现了。

这几天精神很好,这已经不是我第一次辞职了。不过,回想起2004年,一种刻骨铭心的感觉... ...

2004年,回到铜川的第一年,我把自己的一切一切都归置于十分低调的气氛中,不张扬,远离了很多身边的人,努力去认识需要认识的朋友。这似乎是一种病态的思维,但是没有办法,2004年我所处的工作环境,已经不允许我多想什么,只能以一种更高的高度来考虑我的整个人生,而非眼下的些许细节事务。

2004年,让我更多的了解了铜川的整个情况,一个蓄谋已久的想法再次让我蠢蠢欲动,曾搅得我不能入眠。

2004年,回想起来,我都无法想象我曾那么的低调。的确,似乎有些病态的做作。这是我这一生的体会最深的一次,还好,多亏思想已经游离了我的身体,让我把眼光放得更远、更远,让我终于在储备了几年的能量得以与发酵,最终在今天开始释放。

此次辞职,以及将来所要做的,已经再三的考虑好,也很周全。

2005年5月27日,有一种事务开始在铜川出现,这仅仅只是一个起点... ...

Le't go beging ... ...

网站盈利研究3

看了王建硕网站成功的关键一文,我很有感触。这和我前不久的结论几乎一致。

1:没有自己的技术,就不能实现自己的意图。

技术不是最重要的,意图才是重点。像hao123如此简单的网站能够获得成功,除了意图外,靠的就是运气。几乎没有任何技术含量,唯独提供的就是很简单不过的导航而已。hao123的成功,不可能被复制。

要想为用户提供一定的方便,那就需要提供“功能”,而功能从技术上讲,是要一定的技术含量的。没有技术,你只能空想一些你想要做的、想要提供给用户的功能。请别人做?首先是沟通的问题,还有就是版权等等一系列的问题。

2:技术无论好坏

技术是比较重要的,但是,不能只靠高技术。有很多功能,有时候完全可以很简单的实现

3:线下的运作是关键

网络是一个无国界,天马行空的场所,唯一的优势是提供信息。而具体的运作需要的是网下的操作。这个细节是花费精力最大的。

4:坚持/恒心

这个就没得说了。做什么事情都一样,需要的是恒心、毅力。

5:目的明确

网站的内容一定要目的明确,功能明确。

6:资金的保证

资金的保证不是为了网站的存在,而是为了网下的运作消耗。

ps:顺便贴一个网站

比尔盖茨的11点忠告

1.生活是不公平的,你要去适应它。
2.这个世界并不会在意你的自尊,而是要求你在自我感觉良好之前先有所成就。
3.刚从学校走出来时你不可能一个月挣6万美元,更不会成为哪家公司的副总裁,还拥有一部汽车,直到你将这些都挣到手的那一天。
4.如果你认为学校里的老师过于严厉,那么等你有了老板再回头想一想。
5.卖汉堡包并不会有损于你的尊严。你的祖父母对卖汉堡包有着不同的理解,他们称之为“机遇”。
6.如果你陷入困境,那不是你父母的过错,不要将你理应承担的责任转嫁给他人,而要学着从中吸取教训。
7.在你出生之前,你的父母并不像现在这样乏味。他们变成今天这个样子是因为这些年来一直在为你付账单、给你洗衣服。所以,在对父母喋喋不休之前,还是先去打扫一下你自己的屋子吧。
8.你所在的学校也许已经不再分优等生和劣等生,但生活却并不如此。在某些学校已经没有了“不及格”的概念,学校会不断地给你机会让你进步,然而现实生活完全不是这样。
9.走出学校后的生活不像在学校一样有学期之分,也没有暑假之说。没有几位老板乐于帮你发现自我,你必须依靠自己去完成。
10.电视中的许多场景决不是真实的生活。在现实生活中,人们必须埋头做自己的工作,而非像电视里演的那样天天泡在咖啡馆里。
11.善待你所厌恶的人,因为说不定哪一天你就会为这样的一个人工作。

然后你才可能有比尔盖茨这样的家

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)。但这些标记是基于什么标准呢?
问题二:
最近在网上看到一个ConvertUTF.c,实现了UTF-32、UTF-16和UTF-8这三种编码方式的相互转换。对于Unicode(UCS2)、GBK、UTF-8这些编码方式,我原来就了解。但这个程序让我有些糊涂,想不起来UTF-16和UCS2有什么关系。

查了查相关资料,总算将这些问题弄清楚了,顺带也了解了一些Unicode的细节。写成一篇文章,送给有过类似疑问的朋友。本文在写作时尽量做到通俗易懂,但要求读者知道什么是字节,什么是十六进制。
0、big endian和little endian

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称作“大尾”和“小尾”。
1、字符编码、内码,顺带介绍汉字编码

字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算机的内码。早期的计算机使用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的字节,就可以将下两个字节作为一个双字节编码,而不用管低字节的高位是什么。
2、Unicode、UCS和UTF

前面提到从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上一切规范的基础。
3、UCS-2、UCS-4、BMP

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之外。
4、UTF编码

UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下:
UCS-2编码(16进制) UTF-8 字节流(二进制) 
0000 - 007F 0xxxxxxx 
0080 - 07FF 110xxxxx 10xxxxxx 
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx 

例如“汉”字的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却要用于实际的传输,所以就不得不考虑字节序的问题。
5、UTF的字节序和BOM

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来标记文本文件的编码方式的。
6、进一步的参考资料

本文主要参考的资料是 "Short overview of ISO-IEC 10646 and Unicode" (http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html)。

我还找了两篇看上去不错的资料,不过因为我开始的疑问都找到了答案,所以就没有看:
"Understanding Unicode A general introduction to the Unicode Standard" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter04a)
"Character set encoding basics Understanding character set encodings and legacy encodings" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter03)

我写过UTF-8、UCS-2、GBK相互转换的软件包,包括使用Windows API和不使用Windows API的版本。以后有时间的话,我会整理一下放到我的个人主页上(http://fmddlmyy.home4u.china.com)。

我是想清楚所有问题后才开始写这篇文章的,原以为一会儿就能写好。没想到考虑措辞和查证细节花费了很长时间,竟然从下午1:30写到9:00。希望有读者能从中受益。

 
作者Blog:http://blog.csdn.net/fmddlmyy/

网站利润研究(3)

2:创建具有盈利点的网站

网站的“技术”与“内容”都要以“市场”决定。一切的一切,都是市场说了算,而不是“技术”与“内容”之间的争论。市场决定着网站的内容,技术提供内容的表现形式。

尤其是现代,在成千上百的网站中,靠着干巴巴的技术,很难吸引用户;即便是你的内容再好——只要有一个技术稍微比你好的网站把你的网站内容引用,你的也就会消失得无影无踪。网站之间的引用,是很常见的,尤其是中国,对于版权意识淡薄的用户来说,广大的用户不在乎这个内容来自哪里,而只关心如何方便快捷的看到内容。

www.123hao.com 这个网站,技术含量很低,基本上就是纯静态的。但是也同样拥有了广大的用户群。为什么?我这里不想多说,只提一下——2000年至今乃至往后5、6年,中国还是处于网络成长期,还未到发展期。

ps:几个网络技术盈利点的网站:http://www.donews.net/keso/articles/101420.aspx

网站利润研究(2)

1.2:功能类网站

功能类网站是自从有了网络以来,一直保持着青春和强有力生命力的一种网站形式。也是唯一能够盈利的网站形式。这一点,被很多人忽视。据我的了解,很多人想做网站,往往告诉我——内容是主要的,技术是次要的,或者是无所谓的——没有几个朋友能够清楚地告诉我技术对于网站的重要性,也许我认识的都是些“短视”的朋友吧。

Google靠的是技术,Yahoo、Sohu、Msn等等国际性的大网站,每一个都是靠的技术领先,才会拥有更多的用户和收益。诚然,我很清楚的知道,技术是为了市场服务的,而不是为了内容服务。我们不能单单把“内容”作为重点,而是把“市场”作为重点。

我曾经合作过的一个老头,他也难得50多岁的老人,还有精力搞网站开发——技术方面可以说几乎是零。他总是认为,技术不重要,内容才重要。我没有和他过多的争辩——他至今还只是一个外行。无论他的发展远景如何如何,他最终依然是一个短视类的,既没有技术,又没有内容的网站。呵呵,他唯一的本事是很谙熟“良弓藏,猎狗烹!”

如果没有网站动态内容技术的出现,目前互联网不可能有如此的繁荣;如果没有Email的存在,上网与不上网也无所谓;如果没有网络游戏的技术的可行性,同样也不会有为了上网而犯罪的青少年;一切的一切,都是因为技术上的进步,才有了网络的进步。任何内容的表现形式,必须依靠技术上的保障。

1.3:中介类网站

这类网站几乎不需要什么技术,主要依靠email广告,为各家网站提供一些个人信息,从事中介服务,基本上都是文字类的广告、求租、出售、收购之类的。他们可以说是从传统的报纸媒体“中缝广告”的形式转到了互联网而已。这类网站主要用户是那些小个体等经商的人,而不是广大普通用户。

网站利润研究(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 ):

Imports System.Text.RegularExpressions

2  Namespace MiniData
3    Public Class MiniDataPress

4       Function WordPress(ByVal Textstr As String) As String
5            Dim ObjRe As Regex
6            ObjRe = New Regex("<")
7            Textstr = ObjRe.Replace(Textstr, "&lt;")
8            ObjRe = New Regex(">")
9            Textstr = ObjRe.Replace(Textstr, "&gt;")
10          ObjRe = New Regex("@@")
11          Textstr = ObjRe.Replace(Textstr, "@")
12          ObjRe = New Regex("'")
13          Textstr = ObjRe.Replace(Textstr, "’")

14          ObjRe = New Regex("\n")
15          Textstr = ObjRe.Replace(Textstr, "</p><p>")
16          Textstr = "<p>" + Textstr + "</p>"
17          WordPress = Textstr
18      End Function

19   End Class
20   End Namespace

==========

这里,我创建了一个命名空间 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 {
 margin: 4px;             /*  P标签的段前、段后以及左右边距为 4PX
 font-size: 12px;         /* 段内默认字号为 12px
 text-indent: 23px;     /* 段前缩进 23px
}

=============

以上是我只对一些安全性而作的过滤,但是面对众多的政治性的过滤词,我觉得这种方式太繁琐。

还没有一个值得在这里记载的方法,因此,本文标题是“有待商榷”。希望高手能给与指点。

作为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参数的命名很有意思... ... 值得学习。

 
Photo 1 of 14
More albums (1)