作者归档:船长

there is no attribute “onClick”

上网加速入口的代码在W3C标签检验器检查时发现了 there is no attribute “onClick”错误. 通过搜索才发现原来XHTML 1.0 Transitional标准不允许attribute中包含大写字母, 将代码中<li id=”search1_tab” class=”btn1″  onClick=”setTab(‘search’,'search1′)”>Google</li>中的”onClick改成onclick后才通过. 类似常见的attribute还有onMouseOver,onFocus等, 虽然大写的好看一些, 但为了通过W3C检验只能改成小写.  当然如果你使用的是html标准的代码(如百度和google使用的代码), 大小写的属性不会带来问题.

发表在 站长文档 | 留下评论

上网加速入口 带加速度的网站

经常上网, 经常要打开不同的页面. 如在淘宝中搜索一个手机的价格, 然后在百度中搜索这个手机的参数. 如果可以把网上经常使用的功能整合在一起, 上网不是方便很多? 于是有了制作一个这样网站的想法. 上网加速入口诞生了 — 带着”少一个点击, 多一点直观 加快你的上网速度”的理念.
现在上网加速入口的功能还非常简单, 看起来更像个导航网站, 以后有时间会不断加强它的功能, 让它有更完善 — 关键词:为上网加速!!!

发表在 信息处理 | 留下评论

浏览器操作系统?

现在越来越多的工作已经从本地电脑转到网上了, 网页的重要性慢慢地凸现出来.
google已经推出了很多原先微软指掌着的软件服务, 不同的是google把这些软件从硬盘搬到了网页里面. 如google的日程安排软件Calender, 记事本Notebook, 计算器, 文本处理Docs等等. 这些让我相信或许终有一天, 作为网络终端的个人电脑一开机, 没有其它的, 只有一个google网页. 在个人电脑里完成的所有工作在网页上也一样可以完成. 不是吗? 不是越来越多的网页网络游戏推出了吗?

真的会这样吗? 昨天看到的一个火狐输入法让我开始动摇这个本已慢慢要坚固了的信念.
“火输(火狐输入法)是一款集成于FireFox浏览器中文拼音输入软件.” 只能在FF中使用. 我刚一听到这一介绍, 当即被雷到了. 一个输入法只能在一个浏览器中使用! 这有什么意思???

但仔细一想, 我开始反问: 如果”火输”是一种输入法, 那FF是什么? FF将是一个操作系统!!! 是的. OS不应该是网页, 因为网页终还是要一个浏览器中打开的. 网页最多是applications, 而浏览器才是真正的operating system!!! (到时windows和linux应该只能算是一种firmware吧…)

不是吗? 你看看现在FF的各种插件, 有FTP下载上传, 有的记事本, 有todo list, 有音乐播放器, 甚至也有大量游戏… 而且FF里面还有google和新浪, 如果FF是系统, 这些不都是它的应用软件吗?

所以, 也许不是网页, 而是浏览器, 在未来会主宰个人电脑. 也许这也是为什么google, 要在跟Mozilla合作这么多年后, 推出自己的浏览器Chrome的原因吧.

发表在 信息处理 | 留下评论

再读李想

这两天一直在读李想的blog和其它想关的文章.

李想应该是所有站长中把执行做得最好的一位.
他网站的成功, 来源于他对 目标-执行-成果 这一简单结构的信仰. 为了达到目标, 他会去做, 而且全力以赴!

读了这些文章, 到现在明白了三点:
1.不一定要当天才. 不一定要做最前卫的事情. 李想做的都是已经有人在做的网站. 但他靠自己的努力把这些网站做得更大.
2.达到目标须要坚持不懈的努力执行. 学习完成目标的能力, 在无数方法中找到真正可以下手的方法.
3.网站须要流量, 特别是刚开始的时候.
和流量相关的关键词: 美女, 免费, 下载. 第一数字平台泡泡网可以做娱乐, 因为娱乐的人流有可能会关注数码产品. 把流量带到网站了, 就迈出了第一步!!

发表在 成败几何, 站长文档 | 留下评论

丁磊成功纪要

1.学生时代的丁磊勤奋好学, 热衷编程技术.
2.毕业后丁磊毅然放弃电信的工作, 到当时比较开放的广州做程序员
3.在中国网络发展的初期的1997年, 26岁的丁磊靠自己写程序积攒和朋友借来的50万创办网易公司. 公司取名叫“网易”,希望上网变得容易一点.
4.丁磊写出免费邮件系统, 靠这个程序挣了几百万元.
5.公司借由自己的9G硬盘, 推出20M免费个人空间服务, 籍此取得CNNIC的1998年度最佳网站排名第一名. 丁磊开始在网站上卖广告, 当年网站利润达400多万元.
6.正值网络泡沬期的外国投资商看好这个中国排名第一的网站. 排队给丁磊送钱. 2000年网易在美国上市.
7.刚上市科技股开始崩盘, 网易一度面临摘牌. 丁磊企图卖掉网易, 但没成功.
8.之后网易加入 网络游戏《大话西游》,手机短信等业务, 令公司起死回生.
9.网易股价一路上升. 2003年, 持股超过50%的丁磊成为中国首富.

丁磊的话:
我觉得“创新”是个很危险的事情. 微软公司的很多产品都不是自己发明的,譬如window,word和excel等等,都是follow别人的,但是它不断地做,不断地改进,就做成功了。

美国可口可乐,这么多年就做可口可乐;吉列这么多年来一直只做刮胡须刀;把一个产品做深做精很重要。

人的一生总会面临很多机遇,但机遇是有代价的。有没有勇气迈出第一步,往往是人生的分水岭。

发表在 成败几何 | 留下评论

Google又露马脚了!

在igoogle页面中, 发现每个gadgets的标题栏有"最大化"的按钮了!!! 和windows/苹果/linux等其它操作系统上的程序窗口差距又小了很多, 只等时机成熟加上file/ edit/ tools等菜单选项了.

发表在 信息处理 | 留下评论

责任

深山, 初秋, 傍晚.
“长官,这是在死者大脑发现的.”巡警递过一个包裹. 包裹満是灰尘的, 好像很久没被打开过了.
长官慢慢地打开, 发现里面躺着一个稚嫩的小身体, 接触了空气, 慢慢地伸展开小手小腿, 瞪着大眼睛腼腆地看着两位警官.
“是一个梦!”巡警接过后惊喜地叫了出来, 开始用手抚摸它的肚皮. 小东西咧嘴笑了起来, 兴奋地手舞足蹈.
长官从包里掏出一个发光的仪器, 对着小东西扫了一下, 光线透过了晶莹的身体.
“环海南…”巡警跟着仪器发出的光线慢慢地念道.
“放下吧.”长官一边收起仪器一边说.
巡警似乎没有听见, 一边看着鼓起双腮吸自己食指的梦, 一边笑呵呵地对长官说:”你看, 它一定饿了.”
长官转过身来. 这时巡警夺回了自己的食指, 正用双手作魔爪状捏爪小东西的小脸, 搞得小东西双手不停地在胸前拍打反击不算, 还多次试图抬起小腿抵抗. 战况十分激烈.  巡警似乎玩的很开心, 脸上映着红光, 发出的笑声和梦的笑声夹杂在一起.
“被遗弃的梦太多了…”长官似乎若有所思. 但看到夕阳, 沉吟的脸马上消失了:“今天还有几处?”
“8个. 下一个在北城区. 好像是那个吃安眠药的小女孩.”
“走吧!”长官推下了后车厢门.
巡警找了个块柔软的草地, 依依不舍地将小东西放在那里. 小东西瞪在大眼睛迷惑地看着巡警, 咧着的嘴好像还在期待巡警的新花样.
“轰”的一声, 发动了的汽车顺着路向山外开去.
飞驰着的警车压过一块石头, 巡警和长官在车内跳了一下. 后车厢飘出一张沾着血迹的小纸条. 纸条在空中荡漾了两下, 停在了路面上.
上面歪歪扭扭地写了一行字:”她走了, 带走了我的一切. 我的生命已经没有任何意义…”
草地上一直一声不响地看着车尘慢慢消失的小东西突然眉毛动了一下, 大哭了起来. 哭声填満了整个空寂的山谷.

发表在 我思我在, 某时雨集 | 一条评论

上海

地铁的门一开, 大家以让我惊奇的速度冲进去争座位. 两个老人和提着大包的我都只能一起站着. 但我对这两位老人的同情也没持续多久– 当我在下一站看着她们用很不好看的姿势凶猛霸占离自己身子很远的座位时我甚至开始怀疑那些抢座位的青年都是她们的亲生子女…
在公车上抱着小孩的母亲也只能站着. 坐在她旁边的女孩竟不时带着微笑用爪子去挑逗那小孩稚嫩的脚掌…她(以及车内所有坐得稳如泰山的人)达到化境的心安理得和车内汽油散发出来的臭味夹杂在一起让我感到呕心.
下车后我靠近一十来岁的男孩, 本想打听一下附近有没有超市, 一开口那男孩就急退2米多远, 似乎他亲眼见过同学因为避得太慢而被路人一口吃掉的. 也许又会是她妈妈见过, 然后在在他睡觉前讲陈述于他听. 我同情这位能把故事讲得有声有色的母亲. 因为正如公车上那位母亲一般, 她们根本就没见过真好人.
在这里住了一年多的妹妹, 终也没有出来接我, 虽然我转了两三次车. 在大雨瓢泼中. 在陌生的马路上.
这一切不禁让我怀念起许昌来…

发表在 某时雨集 | 3 条评论

用Benchmark测试不同ruby代码的运行速度

如果比较功能相同的几组代码的运行速度, 可以使用ruby语言里的Benchmark模块.
(开始前 设置中文环境, $KCODE = ‘u’)
比如, 连接两个字串, 如:
str1 = "中国"
str2 = "一定强!!!"

可以使用+
?> str1 + str2
=> "中国一定强!!!"
也可使用
>> "#{str1}#{str2}"
=> "中国一定强!!!"
还可以使用<<
>> str1 << str2
=> "中国一定强!!!"
(注意这种方法会改变str1的值,
>> str1
=> "中国一定强!!!")

如果想要知道这三种方法哪一个速度更快, 就可以使用Benchmark比较.
先定义三个不同的方法:

def joined_by_plus(str_a, str_b)
    500000.times do; str_a.dup + str_b; end
end

def joined_by_uniting(str_a, str_b)
    500000.times do; "#{str_a.dup}#{str_b}"; end
end

def joined_by_adding(str_a, str_b)
    500000.times do; str_a.dup << str_b; end
end

因为这三种方法速度都很快, 比较一次的时间很难分出上下, 所以每种方法都做500000次.
因为<< 会改变变量, 所以在第三个方法中使用了str_a.dup, 备份出一个str_a来测试, 其它二个方法虽然从理论上不须要这个dup, 但为了时间上的公平, 也给它们加上了.

下面是测试代码:
require ‘benchmark’

Benchmark.bmbm(10) do |t|
  t.report(‘加号连接’) { joined_by_plus(str1, str2) }
  t.report(‘放进引号’) { joined_by_uniting(str1, str2)}
  t.report(‘使用<<’) { joined_by_adding(str1, str2)}
end

bmbm是Benchmark的测试方法, 这是双重测试, 用来提高精确度. 里面参数10用来调节标签在结果里的显示占位宽度, 不对结果产生影响.
report(‘加号连接’)里的参数是为相应测试的标签名, 用来区别测试结果.

下面就是结果:

Rehearsal ————————————————
加号连接   1.800000   0.580000   2.380000 (  2.435614)
放进引号   2.080000   0.590000   2.670000 (  2.706669)
使用<<       2.000000   0.580000   2.580000 (  2.635540)
————————————— total: 7.630000sec

                   user     system      total        real
加号连接   1.810000   0.600000   2.410000 (  2.476613)
放进引号   2.050000   0.600000   2.650000 (  2.656080)
使用<<       1.960000   0.600000   2.560000 (  2.567434)

因为使用了bmbm方式, 所以会有两个结果, 第一个是演习结果, 第二个是真实结果.  如果使用bm方法, 将只会有一组结果.
结果有user时间, 系统时间, 总时间和实际花费的时间. 单位为秒.

从结果可以看出, 使用+连接两个字串时速度最快, 而放进引号的方法最慢. 不过从结果也可以看出即使进行500000执行的结果也相差在0.3秒之内, 平时换用问题不大.

看来不是这一次, 希望下次你在自己的Benchmark试验中, 会发现给你的程序带来巨大速度提供的代码.

发表在 Ruby on Rails | 留下评论

用ruby语言以句子为单位拆分一个字串

目标, 用ruby语言以句子为单位拆分一个字串. 如:
给出字串:
s="这是一个句子,另一个句子.一个新句子!难道这不是另一个句子吗?"
将它分拆为:
 ["这是一个句子,"], ["另一个句子."], ["一个新句子!"], ["难道这不是另一个句子吗?"]
样式.
测试前将ruby的$KCODE环境变量设置为’u', 启动UTF8编码支持中文.
$KCODE=’u’
尝试1:
>> s.split(/\.|,|\?|\!/)
=> ["这是一个句子", "另一个句子", "一个新句子", "难道这不是另一个句子吗"]
等同于:
>> s.split(/[.,!?]/)
=> ["这是一个句子", "另一个句子", "一个新句子", "难道这不是另一个句子吗"]
虽然分开了句子, 但失去了标点.

>> s.split(/([.,!?])/)
=> ["这是一个句子", ",", "另一个句子", ".", "一个新句子", "!", "难道这不是另一个句子吗", "?"]
用括号将正则组成一组, 标点出来了, 但和句子是分开的.

改用scan
>> s.scan /.+?[.,?!]/
=> ["这是一个句子,"], ["另一个句子."], ["一个新句子!"], ["难道这不是另一个句子吗?"]
成功了!!

如果一定要这样:
>> s.scan(/(.+?(\.|\?|\!))/).collect{|p|p[0]}
=> ["这是一个句子,另一个句子.", "一个新句子!", "难道这不是另一个句子吗?"]
也是可行的.

发表在 Ruby on Rails | 留下评论