2092

lynnerfrank 活跃等级: 1

活跃等级
1

编辑推荐
0

精品故事
0

注册时间
2007年10月18日

查看信息
故事
日记
最新动态

快捷操作
加为联系人
发小纸条

   

lynnerfrank 活跃等级: 1 的好看簿

写故事 发起活动
任何能弄清楚到底需要什么的项目,在工程上都是容易实现的。无非克服技术点而已。(反之,需求模糊的东西,就很难顺利完成。这也是 MMO 游戏业抄袭成风的根源。毕竟抄袭让我们知道该做些什么。)

--摘自云风的blog
http://blog.codingnow.com/2008...


这一点深有同感,做软件最怕的就是需求不清楚
上个星期五突然接到猎头的电话,说有SUN和Nokia的两个职位,按说换工作这事一直还在犹豫,后来想想最近也比较闲,去看看也好。结果昨天SUN就通知我去面试了,可我连职位的具体内容都不知道,猎头mm光想挣钱了,忘了发给我了,算了,去吧。
上午杀到清华科技园,是SUN中国工程院,听名头挺大,好像规模也比较小,两层楼。
有两个人面试我,问了些项目的经历,偏重linux方面的,原来这个职位是作solaris和java方面,会作一些涉及到solaris本身和一些j2ee的项目,联想到我们公司有个部门号称内部的外包公司,专接其他部门的小项目。我猜测SUN中国工程院估计也是接一些小项目作。也许大部分的外企设在中国的研发中心都是这种模式,很难涉及到核心,看来俺们公司还算不错的。
面试的过程自己感觉不太好,没什么准备,而且java根本不熟,其实也没有太重视,那边太远了,今天花了2个小时才到。
等等Nokia吧,不过听说也是作一些比较边缘的项目,不过好歹离家近。


最近在尝试做个显示实时股票信息的google gadget,就不用每次去新浪财经看了
先找到一个查询股票信息的web接口,是新浪的:
http://hq.sinajs.cn/list=sh000...

然后返回
var hq_str_sh000001="上证指数, 5188.795,5180.514,5060.334,5200.926,5026.127,0,0,37373433,63741545967,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2008-01-21,11:35:51";
然后eval一下即可
原以为简单,没想到问题来了:
google gadget API 本来有:
_IG_FetchContent(src, callback)
可以异步读取远程内容,但使用时发现取内部实现是先发给google的server, server会每小时读取并且做cache,然后直接把cache返回给browser, 显然实时性不够,幸好这个API有第三个参数,可以设刷新cache的时间间隔,于是就:
_IG_FetchContent('http://hq.sinajs.cn/list=sh000...

 callback, {refreshInterval:0});
没想到google把这个url发给server的时候,加了设cache时间的参数,但是不知何故竟然一起发给了新浪,后来变成:
http://hq.sinajs.cn/list=sh000...

当然新浪返回的不对了
没办法,试了jQuery
$.get
总是报exception
$.getScript
也是自己加了额外参数,导致新浪返回不对

后来只好自己hack了
要是直接这么用是可以的:
<head>
<script type="text/javascript" src="http://hq.sinajs.cn/list=sh000..."/>
</head>
但是显然如果让用户动态设定要查询的股票代码的话,就需要动态加载javascript了,google了一下,发现了段代码,其实动态在dom的head节点加个script的element就行了
然后把element的onreadstatechange(IE) or onload( firefox)设成回调的函数即可

javascript在firefox,IE的一点不同

l = [1,2]
[e1,e2] = l

firefox:
right, e1 = 1, e2 = 2
IE:
wrong, e1 not define
这两天看了看comet,写点儿体会

http server push
原理大概是browser和server建立一个长时间的连接,等待server push事件
这个跟ajax polling不一样的地方是ajax是定时起异步的request去查询server上有没有什么事件,这样达不到实时性,并且增加了server不必要的load

当然也是有副作用的,一般传统的web server(Apache)会fork process or thread per request, 这样如果每个request都是长连接,就不可能同时支持太多client. 所以event-based web server 是最好的选择.

event-based server, is single thread, with a event loop, every new connection, read or write will trigger new event. process active client one by one. However, it need everything is async, or will block other event.
select, epoll, kqueue(BSD)
epoll or kqueue is best, shorter time for check many socket, and kqueue will reach a const time when more clients.

but it's good for such "http-server-push" case.

orbit is one such solution
1. it implement a simple http server, and a message sever.
2. http server only handle request to listen http push, other request will forward to real web server.
for example, orbit have following config:
[global]
proxy.enabled = 1
proxy.keepalive = 0

[proxy]
/chat -> ORBITED
/ -> http://127.0.0.1:8080
 
all the request by chat

(contiued ...)

remove some characters in a string:
'<><><><abc>'.remove('<>')

added in python2.3
old code:
seq = [4,5,6]
for i in range(len(seq)):
  do_something(i, seq(i))

new code:
seq = [4,5,6]
for i, item in enumerate(seq):
  do_something(i,item)

more elegant

more:
for i, j in zip(seq1, seq2):
  do_something(i,j)
#same with itertools.izip

new_list = map(lambda x: x*x, seq)
#itertools.imap

for j in reversed(seq)

summary:
enumerate, zip(izip), map(imap), reversed,
filter, reduce, itertools.izip ...

>>> vec1 = [2, 4, 6]
>>> vec2 = [4, 3, -9]
>>> [x*y for x in vec1 for y in vec2]
[8, 6, -18, 16, 12, -36, 24, 18, -54]
>>> [x+y for x in vec1 for y in vec2]

原来还可以这样
squid 应该是一个反向代理服务器的实现,并且提供缓存和load balance?
mogileFS, 分布式的文件系统, 不知道有没有python的接口? perl是有的

python 中还有这种用法

> "%(sender) send %(msg)s" % { 'sender':'Frank', 'msg' : 'Hello'}

> "Frank send Hello"

岂不是已经具备了简单的模板特性

今天在看erlang, 看了好几天了,fp好像也没有想象中难, 熟悉递归就好了。
刚看了一篇写联发科的文章, 太牛了, 俺的公司够呛阿
http://tech.sina.com.cn/t/2007...
今天还是挺闲的,跟平时一样
1
第一页  共1页  最后一页


您的IE浏览器的版本过低,低版本的浏览器在处理javascript文件时存在问题,无法支持Ajax功能,全面使用好看簿,IE浏览器的版本至少为6.0SP2,请使用更高版本的IE浏览器