2011年1月18日星期二
2010年11月24日星期三
关于Out of Memory Exception: System.Drawing.Image.FromFile的解决
微软的说法是对的“图片格式已经损坏或这个GUI+什么云云”,但是用图片阅读器能打开!怎么算是损坏呢??? 浪费了我2小时时间,最后还是这样莫名其妙的解决了!有点无语。。。
可见,对比法,充分的测试用例是很有必要的!
2010年11月14日星期日
珍惜最后的日子
这里的人,这里的事情,马上就要和我没有关系了。可能有所留恋,可能不会太久,太多时候还是孤独奋战,就算来帮手也不能根本改变我的处境还是孤独,一个人的激情,能有多持久呢?显然,没有强大的动力,很难坚持。坚持一年多了,跟自己关系不大理想,如果成了可能我是所谓的功臣,如果败了我就是帮凶,现在像个帮凶,我要离开这里,不要做帮凶!
珍惜在这里的最后日子!
2010年9月27日星期一
记录网站迁移过程
中秋休整了2天后,在同事上班前的最后一个晚上也是boss回公司的前一天通宵完成网站迁移工作!1个人一个晚上没太多准备搞定了,还算顺利!这次升级升级了系统2008 R2,升级了数据库到2008,升级了IIS到7.5,从而某种程度上提高了网站的性能!
期间耗时最多的2个地方是:
一是:安装php商城的时候死活认不出mysql,最后把全部扩展一起拷贝到system32下,瞎整好了!现在还是不太明白,看来php得研究下了!
二是:数据迁移比较麻烦,图片啊数据库文件啊!我采用的是各个击破的模式,一个个网站的迁移,一项一项的迁移!
期间需要动态的修改DNS的A记录!
这次升级完成了网站文件的动静分离!算是一个小小的进步,另外硬件上提升了不少,磁盘作了RAID1,自己这方面的知识也提高了点!
之后的工作是艰巨的!技术团队还很不完善,路漫漫啊!
人的问题现在成了最大的问题!可以也会成为我前途今后考虑的重点!现在你是将帅,你也是兵兵!全面发展是好事也是坏事,我想漫漫的培养自己的管理意识,全局意识!想好做好最好的自己!
做技术的可能就这个命吧!boss的画饼已经不起作用了!不只是希望得到那么点点,需要更多更多!
ps:一则广告,最近公司招人。需要前端工程师一枚,.net工程师一枚(1~2年经验,牛逼的应届生也可),有兴趣的哥们发生邮件至xyingjie[at]gmail.com,细谈。期待你的加入!
2010年9月15日星期三
刘军宁∶中华文明到了最危险的时候!
外国人喝牛奶结实了,中国人喝牛奶结石了。日本人一天一杯牛奶,振兴了一个民族,中国人一天一杯牛奶,早熟了一个民族。
段子里提到的事例表明,中国在今天面临的根本危机是道德危机。这个危机不是表现为信仰与道德的真空,而是表现为信仰与道德变成精神废墟。具体地说,中国在今后以至于更长的一段时间内,最大的最根本的危机是与信仰与道德有关的精神危机。纵然是严刑峻法也已经无法改变这样一个最直观的事实∶中国是世界上最大的真贪官、假商品、假文凭、假发票、真(假)防伪商标等的最大生产国。每次官民冲突、每个建筑物的垮塌、每个环境灾难背后无不暴露出巨大的道德亏空。由于种种原因,从数千年乃至数十年以来整个社会的道德赤字与坏账还在加速积累。中国发生的没有道德底线的事情,目不暇接,更多的、正在发生的甚至不为人们所知。
最近各种灾难与事端的密集爆发,说明中国已经到了道德亏空的密集还账期。许多中国人的道德底线已荡然无存。信仰的缺失与道德的赤字正在转化成一桩桩人为的灾难。整个社会开始为多年累计的信仰危机和道德沦丧承受沉重的代价,而这仅仅是个开始。信仰危机还在探底过程中。按照目前的趋势,中国人的道德状况还会进一步恶化。在现在的中国,没有信仰、不讲道德的人如鱼得水,有信仰讲道德的人寸步难行。中华文明到了最危险的时候,因为中国人到了最缺失信仰与道德的时候!
从现在到未来的相当一段时间内,中国人将继续生活在道德与信仰的废墟中。说是废墟,而不是真空,是因为废墟中尚有很多有价值的东西,生活在废墟中的许多个体还是有信仰有道德的,只是由权力主导的道德与信仰系统因坍塌而在整体上变成一个废墟,整个社会也因此陷入一种信仰崩溃和道德失范的混乱状态。目前的信仰与道德危机是数千年的旧正统与六十年的新正统作为价值系统的坍塌所引发的精神危机。尽管这两种价值系统在现实中常常互相支撑,但是丝毫也未能扭转各自主体已经瓦解与坍塌的现状。分别历时数千年与六十年的精神主体结构为什么会瓦解与坍塌?我以为,这是因为这两种价值都不能提供信仰与道德规范的终极源泉。本质上,它们都是国家机器用来巩固政权维持统治的宣教手段。它们不是民间自发认可的,而是通过国家机器强加的价值系统。任何不是自由选择的信仰都是伪信仰。
中国历史上的道德纲常多半是统治者强加的道德。而且这些道德都是为统治机器服务的,不论是历史上的三从四德还是现时代的标兵楷模。这是中国长期道德危机的根本原因所在。把掌权者的主义当做国民的信仰,并禁止其它信仰,必然导致全社会在信仰上的丧失,导致国民道德与精神的全面退化。中国的危机,从十九世纪中叶起,就已经不仅仅是体制的危机,更是精神的危机,是国家主导的价值系统崩溃所引发的道德与信仰的危机!
中国在传统上是个世俗社会,绝对多数人没有整全的信仰。可以说,信仰的问题在中国从未真正解决过。与世界上的许多国家相比,不论是传统的儒家思想,还是后来的马克思主义,都是世俗的意识形态。近来大行其道的国学,作为中国传统文化的缩影,其中也难觅宗教的踪影。专制极权是导致中国人缺失信仰的主要根源之一。在每个王朝后期的政权危机背后的,本质上都是人心的危机、信仰的危机、道德的危机。统治本身就没有道德基础,政治权力自然不允许公民树立信仰与道德。为什么许多国人无信仰无道德底线?因为有信仰要付出的成本太高;为什么不道德?因为讲道德的代价太大。问题是,如果没有信仰、没有道德,全民将承受代价将最大化。没有信仰即没有正义。没有信仰的社会,即是正义失落道德匮乏的社会。
几千年旧的信仰被暴力革命打得落花流水,几十年的疑似信仰又落了空,真正的信仰却领不到准生证。这就是现状。在中国,信仰与道德的失落与长期占统治地位的意识形态有关。这样的意识形态把物质摆在第一位,完全排斥精神、宗教、信仰。如果一个社会真有一群先锋队的话,如果这个先锋队的成员又不能自由信仰的话,那么这个社会的主体就没有信仰。一种主义,一种政治意识形态,通常只代表一种理想,一种利益诉求。信仰不同于理想。乌托邦的理想梦境不可能作为人们心目中牢不可破的“信仰”。信仰也不同于科学。任何主义只要一旦被宣称为是科学,就不具有成为信仰或宗教的可能。因为科学是经验的。要么说它是科学,要么说它是信仰。把经验的东西当作信仰是虚假的信仰。
现在许多国人对目前在精神、道德和信仰领域出现的危机已似乎有了比较普遍的共识,但是对造成危机的原因却有重大的分歧。有一种观点认为,中国人今天的道德与信仰状态是市场经济和资本主义造成的。这种看法是非常错误的。我认为,中国人今天的道德与信仰状态不是经济发展与生活富裕导致的,而是对道德与信仰的禁锢造成的,是权力对道德的压制造成的。阻碍自由信仰的不是市场,不是金钱,而是政治权力。没有市场经济,中国照样有信仰危机;没有市场,人都活不下去了,精神还空虚吗?如果不空虚,那也是动物意义上的不空虚。信仰危机与市场经济无关。在世界范围内,市场经济与宗教信仰从来都并行不悖。倒是在实行计划经济和公有制的地方,信仰与宗教都荡然无存。不是市场阻止信仰,而是权力阻止信仰。况且,中国还不能算是一个市场经济的国家。中国的燃油价格和许多商品的价格是发改委定的,中国的民企五百强利润总和不及两个国企,能说中国是市场经济体吗?相反,在中国,市场经济像信仰自由一样,都受到了政治权力的严重阻碍。若不是中国有了一点点市场经济,中国今天更是信仰的荒漠。表面上看,国人没有信仰与贪图货利是联系在一起的。但是我们不该就此得出货利或金钱是导致信仰失落的原因。抢劫犯盗抢珠宝,我们能说是珠宝造就了盗窃犯吗?我们能以销毁珠宝来作为根治抢劫行为的解决方案吗?
为什么信仰会繁荣或衰败?答案隐藏在信仰自身的属性之中。人和其他动物的根本区别在于人有信仰,而其他动物没有。道德的源头是信仰。没有信仰就没有道德底线。信仰是一个人活着的精神寄托。没有真正的信仰,人们就没有正义感责任感,就会无所顾忌,无所敬畏,无有廉耻。信仰指向的是“意义”,并赋予人的生命以意义。因为人的存在是需要意义的。信仰不是现实的,而是超现实的;不是经验的,而是先验的。信仰是人对于无限、永恒、生命的终极价值与意义的追求。信仰涉及的是相对于经验科学而言的超验真理。信仰深深植根于人性之中。因为人在本性上总是在探寻意义,挣脱有限走向无限,趋向超越。信仰必须是由衷的、自觉自愿的、认可、相信、敬仰、崇拜和追求。依靠强迫、利诱、欺骗不能产生真正的信仰,也不能维持和改变信仰。信仰与道德的短缺,归根到底是自由的短缺。
所以,真正的信仰必须是自由选择的信仰,而不是政治权力强加的信仰。信仰是理性与信念的产物,而不是强制与暴力的产物。同样,强制与暴力也不可能阻止信仰。因此,不仅要尊重与保护信仰自由,而且应该把信仰自由钦入到政治制度、政治秩序中去。只有信仰自由,才能产生好的信仰,才能淘汰抑制不良的信仰;没有信仰自由,只有坏的信仰。没有超验,没有信仰,就没有个人的自由。道德问题离不开自由,离不开相应的政体。自由是道德赖以存活的氧气,不论公德与私德。没有自由,任何德性都将窒息。所以,我们说人需要信仰,不是说需要被统治机器强加一个信仰,不是“被信仰”,而是每个人去自由选择自己的信仰,寻找自己的精神锚地。
如果说货利是人类生存的物质支柱,信仰则是人类生存的精神支柱。那么,在中国,解决信仰危机的方案,不是去通过拆除人类生存的物质支柱来加固精神支柱,不是放弃经济发展,而是归还属于每个人的思想、信仰自由。一个国家的未来,在于其精神的根基与力量,而不在于政府权力。中国的精神重建,中国的有限政府,中国的市民社会都离不开信仰自由。一个国家的根本力量,不在于其物质的或军事的力量,而在于其精神的、信仰的力量。没有信仰自由、没有精神信仰的国家,再大也是小国!没有信仰自由,不论人均GDP多高,国民在精神上和道德上依然是贫困的。国人常说,财大压身,对一个国家也是如此。没有精神与信仰的厚度,也难有物质财富的高度。即使有了,也会被压垮!有了信仰自由,一个人、一个社会信仰什么就会有答案,大家就会自由地去选择、去获得自己的信仰。唯有自由选择的信仰才有可能成为真正的信仰,中国人才有可能走出现在的精神废墟,藉由信仰自由获得真正的信仰与道德!
2010年9月11日星期六
概念:NOSQL数据库
- 键-值存储库(Key-Value-stores)
- BigTable实现(BigTable-implementations)
- 文档库(Document-stores)
- 图形数据库(Graph Database)
2010年8月26日星期四
运用NCrawler、HtmlAglityPack、NPOI抓取网页
其次研究下NCrawler的demo,理解其处理流程,基本接口的功能。NCrawler是很方便扩展的,只要实现自己的IPileStep即可,另外个人觉得propertyBag[index],这个索引相当的有用,在应用的时候,我增加了一个新的propertyBag["html"]方便在自己的IPipleStep下处理html,提取想要的数据保存至excel中。
再次其中遇到一个htmlAglitypack的问题,初次使用了,他的demo也超级简单,当html不是太规范的时候,htmlAglitypack -》 selectnodes 是失效的,不起作用的, 我遇到的情况是下载的html中 包含大量的 ‘\r\n’,全部replace后,再处理,过滤,问题就不大了!
最后提取的数据是保存到excle里面,NPOI真的很好用,对基本的需求基本都OK,他的文档例子也超级丰富,我只看了现在需要的例子,全面的发掘他的功能还有看有没有机会了。
NCrawler的作者真的超级热情的,提问很快就会被答复 ,如果你有疑问,在其codeplex,讨论区,可以先搜索想要找的答案,一般的类似blacklist,正则过滤,等都能找到,要是没有就new post吧。
总结下,这次抓取了某网站的某些数据近万条,开发到测试历时2天,自己感觉还是比较满意,特别是最后优化抓取速度的时候,采用blacklist + InMemory 方式速度提高了N倍。。。
也小小满足了吧。
夜深了。。。
再看看,Solr,Solr.net... 研究下这个超级的FullTextIndex Server。。。
加油!
2010年8月21日星期六
30个提高Web程序执行效率的好经验
- 尽量避免使用DOM。当需要反复使用DOM时,先把对DOM的引用存到JavaScript本地变量里再使用。使用设置innerHTML的方法来替换document.createElement/appendChild()方 法。
- eval()有问题,new Fuction()构造函数也是,尽量避免使用它们。
- 拒绝使用with语句。 它会导致当你引用这个变量时去额外的搜索这样的一个命名空间,with里的代码在编译时期是完全未知的。
- 使用for()循环替代for…in循 环。因为for…in循环在开始循环之前需要Script引擎创建一个含有所有可循环属性的 List,需要多检查一次。
- 把
try-catch语句放在循环外面,不要放在循环里面,因为异常是很少发生的,放在外面避免每次都要执行 它们。 - 甚至圣经里都提到过这个 – 不要全局的。全局变量的生命周期贯穿整个脚本的生命周期,而本地变量的存在范围随着本地命名空间的销毁而消失。当在函数或其它地方引用一个全局变量时,脚 本引擎需要搜索整个全局命名空间。
-
fullName += 'John'; fullName += 'Holdings';执行速度快于fullName += 'John' + 'Holdings'; - 如果你需要把多个字符串连接起来,最好是把他们做成一个数组,然后调用join()方法实现这个操作。这种方式在生成HTML片段时尤其 有效。
- 对于简单的任务,最好使用基本操作方式来实现,而不是使用函数调用实现。例如val1 < val2 ? val1 : val2;执行速度快于Math.min(val1, val2);,类似的,myArr.push(newEle);慢于myArr[myArr.length] = newEle;
- 将函数的引用作为参数传递到setTimeout()和setInterval()里优于将函数名作为字符串参数传递(硬编码)。例如,setTimeout(”someFunc()”, 1000)执行效率慢于setTimeout(someFunc, 1000)
- 当进行遍历操作时避免使用DOM操作。通过像getElementsByTagName()这 种方法得到的DOM元素队列都是动态的;有可能在你还没有对它遍历完成时,它已经被改变。这有可能导致死循环。
- 当你对对象的成员(属性或方法)进行反复操作时,先存储对它们的引用。例如var getTags = document.getElementsByTagName; getTags(’div’);
- 在任何的代码段里,在局部变量范围外存放一个这个局部变量的引用。例如
function foo(arr) {
var a = ’something’;
//变量 ‘a’ 对于下面的一段就是范围外变量,这个变量的引用在很多情况下会有用处。
for (var i = 0, j = a, loopLen = arr.length; i < loopLen; i++) {
//do something
}
} - for(var i=0; i < someArray.length; i++) {…}的执行效率慢于for (var i=0, loopLen=someArray.length; i<loopLen; i++) {…}。
- 在HTTP头信息里加入缓存控制过期和最大存活时间标记。
- 优化CSS。要使用<link>方式,而不要使用@import方式。请参考这个优秀的文档http://www.slideshare.net/stubbornella/object-oriented-css
- 使用CSS技术来优化图片资源
- 用GZip方式压缩 .js 和 .css 文件。如果你使用的是Apache,在 .htaccess 里设置压缩方式,你的HTML, XML 和 JSON 也同时会被压缩。
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/json - 使用JavaScript压缩工具。除了使用YUI和JSMin外,你还可以试一试Google Closurehttp://closure-compiler.appspot.com/home (感谢: James Westgate, 一位读者)
- 优化每个页面上的各种资源,把它们拆分到各个子域上,这么它们就能够并行下载。请参考http://yuiblog.com/blog/2007/04/11/performance-research-part-4/
- 将CSS样式表放在页面的最顶端,这样能方便包括IE在内的浏览器进行解析。
- 尽量将DOM结构保持的越简单越好。DOM的体积会影响相关的操作效率,像查找, 遍历,DOM改动都有影响。document.getElementsByTagName(’*').length这 个值越小越好。
- 注意你使用的选择器。例如,如果你想获取一个
ul下的直接子元素,使用jQuery(”ul > li”)而不要使用jQuery(”ul li”) - 当切换元素的可见性时(display),请记住:element.css({display:none})的 速度快于element.hide() 和 element.addClass(’myHiddenClass’)。 除非在一个循环里,我选择element.addClass(’myHiddenClass’), 这样会使代码更简洁 – 不要使用 inline CSS 和 JavaScript。
- 当你使用完对DOM的引用变量后,要把它置为NULL。
- 使用AJAX时,GET的执行效率高于POST。所以要尽量使用 GET 方式。只是要注意一点,IE只允许你用GET传送2K的数据。
- 小心使用脚本动画。没有硬件的支持,动画会执行的很慢。尽量避免使用那些没有实际价值的动画效果。
- 如果你的background-image对于这个图片的容器太小的话,请避免使 用background-repeat。如果你的背景图片需要来回填充很多次才能充满背景,那么将background-repeat属性设置成background-image 和repeat-x 或 repeat-y来 达到填充背景的效果的做法是不明智的,这种填充方式的效率特别的低。你应该尝试使用一个足够大的图片来做background-image并 且使用background-repeat: no-repeat。
- 布局时不要使用<table>。 <table>在浏览器完全把它画出来之前需要反复绘制好几次。因为DOM中<table>是很少见的一种之后输出的会影响之前输出的显示效果的元素。对于表格数据来说,你可 以使用table-layout:fixed; 这是一种更有效的现实算法,根据CSS 2.1技术说明,这种写法可以让表格一行一行的输出。
- 尽可能的使用原始JavaScript。限制JavaScript框架的使用。
--
道不远人,人自远。
2010年8月19日星期四
2009年7月16日星期四
2009年5月19日星期二
DIV+CSS网页布局常用的方法与技巧
DIV+CSS网页布局常用的方法与技巧
CSS布局常用的方法
float:none|left|right
取值:
none:默认值。对象不飘浮
left:文本流向对象的右边
right:文本流向对象的左边
它是怎样工作的,看个一行两列的例子
xhtml代码:
Example Source Code
<div id="wrap">
<div id="column1">这里是第一列</div>
<div id="column2">这里是第二列</div>
<div class="clear"></div> /*这是违背web标准意图的,只是想说明在它下面的元素需要清除浮动*/
</div>
CSS代码:
Example Source Code
#wrap{width:100;height:auto;}
#column1{float:left;width:40;}
#column2{float:right;width:60;}
.clear{clear:both;}
position:static|absolute|fixed|relative
取值:
static:�默认值。无特殊定位,对象遵循HTML定位规则
absolute:�将对象从文档流中拖出,使用left,right,top,bottom等属性相对于其最接近的一个最有定位设置的父对象进行绝对定位。如果不存在这样的父对象,则依据body对象。而其层叠通过z-index属性定义
fixed:�未支持。对象定位遵从绝对(absolute)方式。但是要遵守一些规范
relative:�对象不可层叠,但将依据left,right,top,bottom等属性在正常文档流中偏移位置
它来实现一行两列的例子
xhtml代码:
Example Source Code
<div id="wrap">
<div id="column1">这里是第一列</div>
<div id="column2">这里是第二列</div>
</div>
CSS代码:
Example Source Code [www.52css.com]
#wrap{position:relative;/*相对定位*/width:770px;}
#column1{position:absolute;top:0;left:0;width:300px;}
#column2{position:absolute;top:0;right:0;width:470px;}
他们的区别在哪?
显然,float是相对定位的,会随着浏览器的大小和分辨率的变化而改变,而position就不行了,所以一般情况下还是float布局!
CSS常用布局实例
单行一列
Example Source Code
body{margin:0px;padding:0px;text-align:center;}
#content{margin-left:auto;margin-right:auto;width:400px;}
两行一列
Example Source Code
body{margin:0px;padding:0px;text-align:center;}
#content-top{margin-left:auto;margin-right:auto;width:400px;}
#content-end{margin-left:auto;margin-right:auto;width:400px;}
三行一列
Example Source Code
body{margin:0px;padding:0px;text-align:center;}
#content-top{margin-left:auto;margin-right:auto;width:400px;width:370px;}
#content-mid{margin-left:auto;margin-right:auto;width:400px;}
#content-end{margin-left:auto;margin-right:auto;width:400px;}
单行两列
Example Source Code
#bodycenter{width:700px;margin-right:auto;margin-left:auto;overflow:auto;}
#bodycenter#dv1{float:left;width:280px;}
#bodycenter#dv2{float:right;width:420px;}
两行两列
Example Source Code
#header{width:700px;margin-right:auto;margin-left:auto;overflow:auto;}
#bodycenter{width:700px;margin-right:auto;margin-left:auto;overflow:auto;}
#bodycenter#dv1{float:left;width:280px;}
#bodycenter#dv2{float:right;width:420px;}
三行两列
Example Source Code
#header{width:700px;margin-right:auto;margin-left:auto;}
#bodycenter{width:700px;margin-right:auto;margin-left:auto;}
#bodycenter#dv1{float:left;width:280px;}
#bodycenter#dv2{float:right;width:420px;}
#footer{width:700px;margin-right:auto;margin-left:auto;overflow:auto;clear:both;}
单行三列
绝对定位
Example Source Code
#left{position:absolute;top:0px;left:0px;width:120px;}
#middle{margin:0px190px0px190px;}
#right{position:absolute;top:0px;right:0px;width:120px;}
float定位一
xhtml代码:
Example Source Code
<div id="wrap">
<div id="column">
<div id="column1">这里是第一列</div>
<div id="column2">这里是第二列</div>
<div class="clear"></div>/*用法web标准不建议,但是记住下面元素需要清除浮动*/
</div>
<divid="column3">这里是第三列</div>
<divclass="clear"></div>/*用法web标准不建议,但是记住下面元素需要清除浮动*/
</div>
CSS代码:
Example Source Code
#wrap{width:100;height:auto;}
#column{float:left;width:60;}
#column1{float:left;width:30;}
#column2{float:right;width:30;}
#column3{float:right;width:40;}
.clear{clear:both;}
xhtml代码:
Example Source Code
<div id="center"class="column">
<h1>Thisisthemaincontent.</h1>
</div>
<div id="left"class="column">
<h2>Thisistheleftsidebar.</h2>
</div>
<div id="right"class="column">
<h2>Thisistherightsidebar.</h2>
</div>
CSS代码:
Example Source Code
body{
margin:0;
padding-left:200px;/*LCfullwidth*/
padding-right:190px;/*RCfullwidth CCpadding*/
min-width:200px;/*LCfullwidth CCpadding*/
}
.column{
position:relative;
float:left;
}
#center{
width:100;
}
#left{
width:200px;/*LCwidth*/
right:200px;/*LCfullwidth*/
margin-left:-100;
}
#right{
width:190px;/*RCwidth*/
margin-right:-100;
}
--
道不远人,人自远。
设计时如何把握网页布局
最开始,网页呈现在你面前的时侯,它就好像一张白纸, 它需要你任意挥洒你的设计才思。在开始的时侯,你需要明白,虽然你能控制一切你所能控制的东西,但假如你知道什么是一种约定俗成的标准或者说大多数访问者 的浏览习惯,那么你可以在此基础上加上自己的东西。你当然也可以创造出自己的设计方案,但如果你是初学者,那么最好明白网页布局的基本概念。
1.页面尺寸
由于页面尺寸和显示器大小及分辨率有关系,网页的局限性就在于你无法突破显示器的范围,而且 因为浏览器也将占去不少空间,留下给你的页面范围变得越来越小。一般分辨率在800x600的情况下,页面的显示尺寸为:780x428个象素;分辨率在 640x480的情况下,页面的显示尺寸为:620X311个象素;分辨率在1024X768的情况下,页面的显示尺寸为:1007x600。从以上数据 可以看出,分辨率越高页面尺寸越大。
浏览器的工具栏也是影响页面尺寸的原因。一般目前的浏览器的工具栏都可以取消或者增加,那么当你显示全部的工具栏时,和关闭全部工具栏时,页面的尺寸是不一样的。
在网页设计过程中,向下拖动页面是惟一给网页增加更多内容(尺寸)的方法。但我想提醒大家除非你能肯定站点的内容能吸引大家拖动,否则不要让访问者拖动页面超过三屏。如果需要在同一页面显示超过三屏的内容,那么你最好能在上面做上页面内部连接,方便访问者浏览。
2.整体造型
什么是造型,造型就是创造出来的物体形象。这里是指页面的整体形象,这种形象应该是一个整体,图形与文本的接合应该是层叠有序。虽然,显示器和浏览器都是矩形,但对于页面的造型,你可以充分运用自然界中的其它形状以及它们的组合:矩形,圆形,三角形,菱形等。
对于不同的形状,它们所代表的意义是不同的。比如矩形代表着正式,规则,你注意到很多ICP 和政府网页都是以矩形为整体造型;圆形带表着柔和,团结,温暖,安全等,许多时尚站点喜欢以圆形为页面整体造型;三角形代表着力量,权威,牢固,侵略等, 许多大型的商业站点为显示它的权威性常以三角形为页面整体造型;菱形代表着平衡,协调,公平,一些交友站点常运用菱形作为页面整体造型。虽然不同形状带表 着不同意义,但目前的网页制作多数是接合多个图形加以设计,在这其中某种图形的构图比例可能占的多一些。
3.页头
页头又可称之为页眉,页眉的作用是定义页面的主题。比如一个站点的名字多数都显示在页眉里。这样,访问者能很快知道这个站点是什么内容。页头是整个页面设计的关键,它将牵涉到下面的更多设计和整个页面的协调性。页头常放置站点名字的图片和公司标志以及旗帜广告。
4.文本
文本在页面中出现都数以行或者块(段落)出现,它们的摆放位置决定者整个页面布局的可视性。在过去因为页面制作技术的局限,文本放置的位置的灵活性非常小,而随着DHTML的兴起,文本已经可以按照自己的要求放置到页面的任何位置。
5.页脚
页脚和页头相呼应。页头是放置站点主题的地方,而页脚是放置制作者或者公司信息的地方。你能看到,许多制作信息都是放置在页脚的。
6.图片
图片和文本是网页的两大构成元素,却一不可。如何处理好图片和文本的位置成了整个页面布局的关键。而你的布局思维也将体现在这里。
7.多媒体
除了文本和图片,还有声音,动画,视频等等其它媒体。虽然它们不是经常能被利用到,但随着动态网页的兴起,它们在网页布局上也将变得更重要。
--
道不远人,人自远。
2009年5月14日星期四
centos 感觉不错~
--
道不远人,人自远。
2009年5月13日星期三
几种主流语言的泛型比较
几种主流语言的泛型比较
第一种支持泛型的语言是ADA(一种Pascal语言的后代,差不多是军方的专用语言).而把泛型发扬光大的的是C++(主要是借助泛型实现的模板).
作为一种提高代码重用的技术,泛型被越来越多的语言所支持.
java,C#,Delphi都开始先后支持了泛型技术.我就在这里比较和评论一下C++,java,C#,Delphi几种泛型技术的特点.
实现时机 是否会生成参考类 效率 约束 兼容性 泛型运行时信息
C++ 编译时 会 高 基本算没有 好 基本算没有
Java 编译时 不会 高 有 好 很弱
C# 运行时 不会 一般 有 一般 强
Delphi 编译时 会 高 有 好 强
先从实现的时机和是否生成参考类来说.
C++主要是通过源代码替换机制来实现泛型的.也就是说C++的泛型和宏差不多. 也就是说会为每个泛型实例生成参考类.
Java主要是通过编译器把泛型类全部变成object来实现的.而泛型类的方法是编译通过打包等技术进行类型转换的.例如List<T>实际上永远都是List<object>,不会生成新的参考类.
C#则主要是通过在虚拟机中加入泛型技术来达到对泛型的支持的.List<T>在虚拟机中只是List<T>.不会生成参考类. 只有在JIT编译的时候才会生成参考类的机器代码.当然T的类型不一样具体在虚拟机中的实现也不一样.当T是值类型的时候会生成参考类.但我们这里主要讨 论大部分情况,.NET中多数情况下用引用类型的时候多得多.
Delphi在编译角度讲则更像C++,是通过代码替换机制生成参考类来实现泛型的.但Delphi的类型限制更严格.没有指定类型的约束的时候是不允许使用特定的方法或者操作符等的.具体在后面的约束中讲.
效率方面
C++的效率就高一些.编译期间生成原生代码效率和正常手写代码一样高.
java的效率也比较高.生成的代码和手写代码几乎也是一样的.但打包拆包的类型转换会影响一点效率.
C#编译速度就快一些.但执行的时候要JIT编译器来处理泛型.会在一定程度上影响执行效率.
Delphi和C++相似.效率也是很高的.
约束
C++的模板约束能力比较差.相当于没有.主要是通过代码替换.替换后的代码能便通过就通过了.通不过就报编译错误.不过未来的C++0X标准加入了模板约束.
Java通过编译器保证泛型的约束.
C#通过运行时检查来保证约束.
Delphi通过编译器来保证泛型约束.
兼容性.
C++没有虚拟机,原生代码基本不存在兼容性问题.
java是通过编译器把所有类型都换成object.虚拟机都不用改,和旧的虚拟机完全兼容.兼容性非常好.
C#因为是要虚拟机支持的,所以再旧的.NET Frame虚拟机上不能执行新的泛型代码.
Delphi和C++类似,都是原生代码.所以基本不存在兼容问题.
泛型运行时信息.
C++本身运行时信息就弱的可怜.加之泛型利用代码替换的技术实现,所以基本不具有泛型技术的运行时信息.
Java虽然通过把所有的类型都替换成object实现了良好的兼容性,也有泛型的约束,但是却带来了无法获取运行时信息的难题.因为在Java虚拟机看来都是object,没有分别.
C#虽然通过虚拟机技术支持泛型带来兼容性不好的问题.但是运行时信息却及其强.
Delphi虽然实现技术和C++类似,因为有泛型约束,并且不是象java那样靠虚拟机执行无法区分object.所以Delphi的泛型对运行时信息一点都没有影响.
--
道不远人,人自远。
2009年5月12日星期二
OpenCms 启动指导
1. 启动MySQL 服务进程。
2. tomcat/bin/找到startup.bat, 双击该命令启动Tomcat 服务。
3. 手工启动Apache 服务(如果您安装了IIS之类的)。
4. 访问URL:http://localhost,进入默认站点的首页。
5. 访问URL:http://localhost/system/login/,进入工作区的登录页面。
6. 在登录页面输入用户名Admin 和密码admin(密码第一个字符小写),进入工作区。
--
道不远人,人自远。
集成Apache、Tomcat 和OpenCms 的意义
高了站点的整体性能。
2) OpenCms 中的动态资源将由Tomcat 管理,使Tomcat 从处理静态资源中解放出来。
3)可以去掉地址中的两个opencms 部分。
--
道不远人,人自远。
2009年5月10日星期日
正则表达式语言元素(9)
下表列出了用于修改正则表达式的子表达式。
| 构造 | 定义 |
|---|---|
| (? imnsx - imnsx ) | 对诸如不区分大小写这样的选项进行设置或禁用以使其在模式中间打开或关闭。有关特定选项的信息,请参见正则表达式选项。在封闭组结束之前,选项更改将一直有效。请参见有关分组构造(?imnsx-imnsx: ) 的信息,它是一个更为巧妙的形式。 |
| (?# ) | 插入到正则表达式内部的内联注释。该注释在第一个右括号字符处终止。 |
| # [至行尾] | X 模式注释。该注释以非转义的 # 开头,并继续到行的结尾。(请注意,必须激活 x 选项或 RegexOptions.IgnorePatternWhitespace 枚举选项才能识别此类注释。) |
--
道不远人,人自远。
正则表达式语言元素(8)
替换构造
下表列出了用于修改正则表达式以允许进行二者之一/或匹配的特殊字符。
| 替换构造 | 定义 |
|---|---|
| | | 与以 |(竖线)字符分隔的术语中的任何一项匹配;例如, cat|dog|tiger。使用最左侧的成功匹配。 |
| (?( 表达式 )yes|no) | 如果表达式在此位置匹配,则与"yes"部分匹配;否则,与"no"部分匹配。"no"部分可省略。表达式可以是任何有效的子表达式,但它将变为零宽度断言,因此该语法等效于 (?(?=expression)yes|no)。请注意,如果表达式是命名组的名称或捕获组编号,则替换构造将解释为捕获测试(在本表的下一行对此进行了描述)。若要避免在这些情况下产生混淆,则可以显式拼出内部 (?=expression)。 |
| (?( name )yes|no) | 如果命名捕获字符串有匹配,则与"yes"部分匹配;否则,与"no"部分匹配。"no"部分可省略。如果给定的名称不与此表达式中使用的捕获组的名称或编号对应,则替换构造将解释为表达式测试(在本表的上一行进行了描述)。 |
--
道不远人,人自远。
正则表达式语言元素(7)
下表列出了用于将后向引用修饰符添加到正则表达式中的可选参数。
| 后向引用构造 | 定义 |
|---|---|
| \ 数字 | 后向引用。例如,(\w)\1 查找双写的单词字符。 |
| \k<name> | 命名后向引用。例如,(?<char>\w)\k<char> 查找双写的单词字符。表达式 (?<43>\w)\43 执行同样的操作。可以使用单引号替代尖括号,例如 \k'char'。 |
请注意八进制转义代码和使用相同表示法的 \number 后向引用之间的多义性。有关正则表达式引擎如何解析多义性的详细信息,请参见反向引用。
--
道不远人,人自远。