周末闲来无事,加上心情不错,决心突破一下Extjs给我留下的心理障碍,过了这道坎。重新下载了extjs 2.2的文件包,然后开始狂搜入门文章,真的是太少了。然后开始找几个看起来比较顺眼的demo,猛看源代码。

要上手当然要有个程序来下手,前两天简单做过的关于Getting Things Done的那个工作任务管理程序真是再适合不过了,功能简单,貌似有用,界面少,却可以独立成站,而且已经有了成型的思路(甚至成型的程序),上手要容易很多,只要把精力关注于Extjs上面就可以了。

进入开发环境,用现成的项目复制出一套Django的运行环境,把用户注册登录和任务管理的部分复制过来,稍微改点配置,建立数据库,运行测试服务器,OK,可以跑起来了。

然后把extjs的js文件,css文件和图片文件复制过来,正式开工。

 

Continue reading »

  • Share/Bookmark
 

Extjs版的SimpleLife靠一段落,接下来要攻克的就是Adobe Air了。这个东西出来的时间已经很长了,前面看它的开发方式一直云里雾里,下手似乎有些困难,但是唯一的印象就是,通过AIR可以直接把HTML和JS写的网站包装成客户端程序来运行。既然如此,那用Extjs的富客户端方式写的网站岂不是可以直接移植成客户端程序?果然有如此好事?

于是,又是一番疯狂搜索,看了一些AIR的入门文章,写了一个HelloWorld的网页,根据网上的说明,建个目录,写个application.xml的起始文件,下载了AIR SDK,无需安装,解压后直接把bin目录配置到系统环境变量的Path里面去,在命令行窗口里进入网页所在目录,运行adl application.xml,哇,果然很帅啊。

接下来,把SimpleLife里面的index.html(整个网站就这么一个html文件),以及用到的Extjs相关的文件全部拷过来,把js里面读写数据涉及到的URL全部加上域名变成绝对路径,再启动,哇塞,真的可以启动起来啊!

 

Continue reading »

  • Share/Bookmark
 

Mysql优化经验之一:奇怪的索引

On 2008年12月19日, in 技术文章, by 非鱼

自从学会了使用slow-query-log这一招以后,便经常关注一下这个日志里面的内容,执行的太慢的索引总要想办法清理掉不是?昨天晚上搞了三个多小时,才算是搞明白了一点东西。

以前总以为在where和order by所用到的字段上建个索引就OK了,有了索引Mysql就不会去物理数据里进行查询和计算,其实,远远不是这么回事。

在slow-query-log里面出现最多的一类语句是:select * from topics where category_id=1 and createdon>’2008-12-10′ order by createdon,id limit 6,很简单,不是吗?id是主键,索引当然不用我去关心,category_id和createdon分别建立了索引,可是这条语句执行的还是非常慢。(表里数据10万条,空间450M左右,文章content字段是text,比较大。)

执行explain以后,显示使用的索引是category_id,没有使用createdon,难道mysql执行的时候只能使用一个索引?于是想到建立联合索引,根据网上文章的说明,对于这条语句来说,给category_id和createdon建立联合索引是最有效的,查询和排序的时候都可以用到索引,而且对于where category_id=1 order by createdon这样的语句这个联合索引也是最有效的。于是删除了createdon的索引,给这两个字段建立联合索引,再执行,还是很慢,再explain,索引使用没有问题了,但是Extra里显示using filesort。为什么呢?一位朋友说可能是sort_buffer不够大,加大了这个配置以后无效,还是这样。后来在排序条件中把id删掉,只保留createdon,Extra里就没有using filesort了,测试查询运行时间从0.15秒降到了0.001秒。那好吧,放弃排序字段里的id字段,虽然可能会有搜索出来的内容有点影响,但是并不是什么至关重要的数据。

slow-query-log里出现最多的另一条语句是:select * from dts where (in_id=1 or out_id=1) and createdon>’2008-12-10′ order by createdon,id limit 1,三个字段分别建立了索引。使用explain查看结果,显示使用的索引是createdon,需要扫描的行数是9万多,(表内数据70万,空间150M左右),但是如果我删除createdon这个条件,只用前面两个or的话,explain显示最终使用的索引是in_id和out_id的union索引,也就是自动联合了两个索引,需要扫描的行数只要25行就能找到结果,执行速度当然不在同一个级别上了。见鬼了,为什么多了一个条件mysql反而会去使用更差的索引呢?

后来在完整语句的基础上加上use index关键字,select * from dts use index(in_id,out_id) where (in_id=1 or out_id=1) and createdon>’2008-12-10′ order by createdon,id limit 1显示最终使用的索引就是两个id了。但是这条语句是django的ORM自动生成的,我也改不了。后来想到再加一个限定条件上去试试:select * from dts where user_id=1 and (in_id=1 or out_id=1) and createdon>’2008-12-10′ order by createdon,id limit 1,结果显示最终使用的索引就变成了user_id,虽然不如使用两个id的union index效果更好,但是已经远远好于createdon的索引了,需要扫描300多行取得结果。整条语句的实际执行时间从1.8秒缩短到0.0015秒。

问题虽然已经解决,原理却不甚清晰,是否有更好的解决方案也不知道,还得再研究研究,测试测试。

  • Share/Bookmark
Tagged with:  

2008年,终于要过去了

On 2008年12月18日, in 生活杂谈, by 非鱼

2008年注定了是不平凡的一年,1月的大雪,停电停车停飞机,带来了上千亿的经济损失。5月的地震,我们这一代所能目睹的最惨烈的人间悲剧,夺去了十万人的生命,经济损失上万亿。当人们终于盼来了奥运,喜庆之气还没来得及散去,又被奶粉事件惊扰了人们的美梦,实际经济损失至今难以计量。当中国的股市经历了一年的下跌,终于显现出见底征兆的时候,突遇历史罕见的全球金融危机,经济损失已经是其次的,由此带来的失业问题和相继而来的民生问题,才是更加重要的问题。

2008年是困难的一年,虽然我们早已料到了这个开头,却没有料到会以如此困难的形式结束这一年。临近年底,企业纷纷开始裁员,身边的许多朋友都传出企业开始大规模裁员的消息,不裁员的,也面临着减薪保职的境地。

将来还会有比今年更困难的时候吗?当然有,那就是2009年。大规模裁员只是冰山之一角,停止招聘才是最要命的问题。企业裁员也不过几十人,几百人,最大的跨国企业也不过一万人,而一旦所有的企业停止招聘,今年毕业的600万大学生如何解决?廉价的数以百万计的大学生涌向市场,给整个就业环境和社会待遇所带来的冲击,恐怕现在谁也计算不出来。通货膨胀与收入下跌一起出现的时候,如何保证社会安定就成了头痛的问题。

今年几乎没有什么好事发生,工作中和生活中都是这样,最悲惨的莫过于在最高点买了房子,成了最后一个接棒的傻子。让人欣慰的是今年公司发展的还算不错,至于明年能不能保持这样的能力,还很难说。公司取消了大型的年会,节流第一。

今年的春节来的早,就让2008年早一点过去吧。

很想知道今年的春节联欢晚会还能出什么让人开心的节目。

  • Share/Bookmark
 

你是不是感觉每天活的压力很大,总觉得每天有很多很多的工作压在身上,总有处理不完的事务,一件事情还没搞定,又来了一件,一件一件堆积在一起,手边总有些处理到一半的事情扰乱你的思维,而你在做每一件事的时候都提心吊胆,生怕自己忘记了另外几件重要的事。每天疲于应付,加班到深夜也干不完,回到总是头昏脑胀的只想蒙头大睡。

现在已经有了一个新名词给这类人命名:穷忙族!你是穷忙一族吗?如果是的话,《Getting things done》这本书就是为你准备的。GTD这个名词就是从这本书而产生的,而GTD已经成了个人日程和事务管理的标准,而GTD软件也成了现在智能手机的标准配备和最常用的软件。但是实际上,GTD这本书里所讲的日程管理方法,跟手机里的GTD软件所提供的任务、日程、会议安排还是有很大差距的,而且书里所提倡的随时添加随时清理的任务列表,靠手机来实现目前也过于繁琐,这主要是因为手机的输入问题和由于屏幕大小问题带来的列表显示的问题。

另外,,《Getting things done》这本书的内容着实有些催眠,本人在第三遍看此书的时候,仍然只能对第一部分的方法论提起精神读下来,对后面几部分对每一步骤的细枝末节的深究看着看着就走神,或者睡着,实在是有些吃力。

实际上,本书讲的内容和方法还是相当简单易行的,首先,你需要这样几个列表:

Continue reading »

  • Share/Bookmark
Tagged with:  

Windows live writer实在是太强大了

On 2008年12月16日, in 技术文章, by 非鱼

Windows live writer推出了RC版(其实是整个Live软件包系列了,包括Mail,Messenger等等),下载了1M大小的安装包,安装过程中又经过漫长的自动下载安装,自动更新了已经安装的这三个组件(其它组件我都没选)。菜单里的Beta字样没有了,看来离正式版不远了。

启动MSN messenger,似乎没有什么明显的变化,还导致原来的外挂不能用了。打开live writer,整个界面看上去变化不大,但是编辑器下面把关键字框从高级里面拿了出来,不用每次写文章都要点开高级去写Tag了,而且,这个Tag是可以自动提示的。以前用过的Tag只要打第一个字就会弹出自动提示,直接点选就可以了。

live writer有许多专门针对wordpress的功能,相当强悍。

Continue reading »

  • Share/Bookmark
Tagged with:  
Page 1 of 212