作者归档:vicalloy

django的js/css压缩组件Django Compressor

为了加快网站的加载速度,我们通常要多js和css进行压缩处理。这些js和css的压缩工作如果都手动处理,费时费力。
Django Compressor 可以实现js/css的自动压缩。Django Compressor在易用性方面做的非常好,按照 文档 做简单的设置后就可以正常工作。强烈建议大家去将文档完整的看一遍(文档很短)。
使用的时候,只需要将css/js放到 compress 标签中 Django Compressor 即可自动进行处理。在debug模式时, Django Compressor 不会对做任何处理。在非debug模式时,Django Compressor会自动对js/css进行压缩,并将压缩后的问题输出到django的 STATIC_ROOT 目录。所以请务必保证 STATIC_ROOT 目录进行了正确的设置。

{% load compress %}
{% compress  [ [block_name]] %}

{% endcompress %}
{% compress css %}

{% endcompress %}

coffeescript、less 支持

在开发阶段coffeescript和less可以直接使用js来处理,在正式发布时处于加载速度的考虑需要预先编译成js和css。 Django Compressor 提供 COMPRESS_PRECOMPILERS 设置,根据type类型进行预处理。

COMPRESS_PRECOMPILERS = (
    ('text/coffeescript', 'coffee --compile --stdio'),
    ('text/less', 'lessc {infile} {outfile}'),
    ('text/x-sass', 'sass {infile} {outfile}'),
    ('text/x-scss', 'sass --scss {infile} {outfile}'),
)

“似水流年”近期情况

推广情况

网站在6月1日上线,并在上线后创建了一个乔布斯的时间线作为网站使用演示。网站上线后将乔布斯的时间线分享到新浪微薄。在博客上写博客公布网站。python.cn网站将“似水流年”作为django项目进行推荐。由于我的博客以及微薄的关注人数并不多,宣传效果一般。python.cn为网站带来的流量相对来说还不错。

网站现状分析

让人比较尴尬的一点是用户创建时间线的积极性并不是太高。即使只是简单创建,并未添加内容的时间线也没几个。我想这应当和网站的访客类型有这不小的关系。我的博客与python.cn的访客都以技术人员为主,这在一定程度上和“似水流年”的目标用户是不匹配的。就我个人对网站的预期定位以粉丝群体与历史爱好者为主。创建和管理好一个时间线是非常花精力的一件事,如果缺乏一定的热情是很难坚持做下去是。对偶像的热爱可以很好的支撑时间线的维护热情。对历史爱好者而言,时间线良好的视觉效果对历史事件的整理有着先天的优势。
就我的实际使用而言,尽管我花了不少的精力在时间线的编辑功能上,但时间线的创建成本还是太高。为创建一个时间线你需要花费不少的时间收集相关的资料,除此之外资料的录入也并不省心。要想降低时间线的创建成本似乎只能用些自动方法抓取内容生成时间线,但我并不太想这么做。过多自动生成的内容会降低网站内容的质量。一个内容质量过低的网站只是单纯的增加网络上的信息噪声而已。

近期开发计划

  • 社会化分享按钮(已添加)
    • 微博有着超强的信息传播能力。虽然不确定是否真会有人使用分享功能,但感觉加上还是有些必要。
  • SEO的相关优化
    • 时间线的加载基于AJAX实现,这将导致搜索引擎无法正确抓取时间线信息。出于SEO的考虑,网站讲增加文字版的timeline查看页面。
  • 协作编辑功能
    • 一人编辑过于辛苦,如果是团队维护则要轻松不少。感觉类似功能对粉丝团体将比较有用。
  • 自动生成微博的时间线
    • 输入微博用户名,自动抓取微博数据生成时间线。作为网站的一个工具应用出现,相关数据不混入网站首页。

时间线网站“似水流年”上线

网站地址: http://jstwind.com
在很早前就想做这么一个关于时间线的网站了,并在今天年初开始真正开始行动。中途因为各种原因将这件事情给搁置了,直到最近才重新启动。目前还只是完成了基础功能,细节方面也未能调教到自己满意的程度。不过不管怎么说,网站总算是基本可用了。欢迎大家上去看看,去制作自己感兴趣的时间线。
目前网站上只有一个关于 乔布斯 的时间线。事件的编辑比我预想的还要花时间,这也让我更希望能早些加入时间线的协作编辑功能。
这是我在继 LBForum 之后真正有在用心做的一个私人项目。项目后台代码方面的工作量倒还好,主要的工作都花在了前端上。事件的编辑是一项非常繁琐的工作,因此花费了不少时间来使用AJAX来提高事件编辑的易用性。项目代码托管在 github 上。项目地址在以前的博客里发布过,如果你感兴趣的话可以去找找。
最后把用到的主要技术和服务列一下,接下来一段时间可能会将其中用到一些技术写成博客:

  • 网站部署在 webfaction ,采用apache+mod_wsgi的方式进行部署。
  • 由于webfaction在国内的访问速度并不理想,静态资源托管在sina的 SAE 平台上。因为申请了SAE的开发者认证,每月有1.5w的免费云豆资源,闲着也是闲着。
  • 域名在 godaddy 购得。在使用优惠码后,一年的费用不足$2。
  • 域名的DNS解析用的是 DNSPod 。 DNSPod在易用性方面确实做的很不错。
  • 使用 腾讯企业邮箱 。 或许很多人对腾讯比较反感,但腾讯的产品确实都还做的不错。使用腾讯企业邮箱的重要原因之一是免费。
  • 服务端的开发技术依旧用的是 Django 。使用自己熟悉的技术可以大大的加快开发进度。
  • 前端用的是 twitter-bootstrap 。bootstrap目前已经有烂大街的趋势了,不过这东西确实好用。为减少bootstrap的痕迹,下一步考虑给jstwind换个配色方案。
  • JS的基础库用 JQuery 。现在JQuery基本上已经是JS标准的一部分了。
  • 时间线的JS控件用的是 Timeline JS 。虽然这个JS组件还有不少让我不太满意的地方,但这个组件胜在漂亮,而且作者非常勤奋,github上提的issue基本上在一天内就会有回复。
  • 文件上传用的是 jQuery-File-Upload 。纯JS实现,不依赖Flash即可实现文件的批量上传。缺点是如果客户用的浏览器版本太老就无法使用批量上传功能了。
  • Django的第三方APP方面用的就比较多了,其中包括 django-userena、django-taggit等,以及部分我自己写的与修改的APP。第三方APP的详细列表可以查看项目中的 requirements.txt 文件

越南岘港见闻

如果说朝鲜是60~70年代的中国,越南则更像是改革开放后90年代的中国。越南犹如一只刚解开封印的猛兽正准备撒腿狂奔。感觉越南正重复着中国的道路,中国的现在或许就是越南的将来。经济腾飞与其背后的社会问题都将是越南今后将所需要面对的。
刚完成了一次去越南的旅行。这是我的第一次出国经历,对我而言这是一次不错的旅程,第一次可以近距离感受另外一种文化。
从上海出发,在经历了3个小时的飞行后到越南岘港,入住皇冠假日酒店(Crowne Plaza Danang)。据导游说该酒店由华人开设。酒店的大多住户都是中国游客,另外则是少量的欧洲人,日韩游客似乎几乎没有。酒店的工作人员基本上都能说中文,所以在酒店里完全不用担心语言的问题。该酒店为五星级酒店,酒店有自己的私有海滩。岘港的海滩的很干净,沙很细,踩在上面很舒服。最重要的是目前到岘港的游客并不多,你可以肆意的享受这片碧海南天。
第一天下午去会安古城。会安距离岘港并不远,大概也半小时的车程。越南的路况很好,房子却建的比较乱。当地居民的房子象是散落在土地上,似乎就完全没有规划过。对中国来的我们而言,越南的房子都建成了奇怪的长条形。在越南作为法国殖民地期间曾有个奇怪的规定,房子宽度不能超过3米。房子虽对宽度有规定,却对长高没有限制,于是房子都成了窄长窄长的。到如今法国殖民的日子已经远去,但历史的印记并不会这么快的褪色。
会安曾是东南亚重要的贸易港口。因为临近中国的原因,这里免不了留下浓浓的中国痕迹。现在这里已经成了纯粹的旅游城市,街道上都是咖啡店以及旅游纪念品小店。这里的游客还是以中国人于西方人为主。
越南的人均收入并不高。我们本地导游的月收入为175美元,而且据说这在当地已算是高收入了,大巴司机与交警的收入为130美元。有人会觉得越是落后的地方民风越纯朴,这或许有一定道理,但越南并不是一个民风纯朴的地方。在会安我们计算价格的时候将货币的位数搞错(多给了一个零),若不是我们及时发现小贩就直接很自然的“接受”了我们的错误。在这里宰游客是很理所当然的一件事。在会安农贸市场上买水果的时候如果你只是简单的对半砍是完全不够的,我们的柠檬最终以开价的1/3成交。
中国曾被称为自行车王国,那越南则可以称为摩托车王国。这里到处都是摩托车,汽车都很少。越南的公交非常的不发达,在越南的几天就没怎么看到公交车。汽车对普通家庭而言,则又太贵,于是摩托车就几乎成了本地人出行的唯一选择。
在越南的最后一天去了当地比较有名的24粉小时与当地最大的超时big-C,最后去韩江大桥边的memory咖啡虚度光阴。有人说什么好地方被中国人发现,立马就会被毁掉。岘港目前还未开通到中国的直航航班,所以岘港暂时安全。不过目前岘港已开始大修酒店,按越南的发展速度来看,不出2年岘港必将迅速的繁华起来。如果你喜欢清净喜欢蓝天碧海,现在还可以抓紧时间感觉去岘港,再过几年就晚了。
有时在想,或许自己被技术人员的思维禁锢,实在太缺乏所谓的经济头脑。我看好越南的发展,如果我有足够的经济头脑则应当要有实际的行动来参与进去。比如更详细的调查越南的背景知识,了解越南当前的政策,看是否有什么途径可以投资(投机)。对于经历过经济市场化的我们而言,至少在某些方面比越南本地人还有些优势。






开始使用Todoist作为任务管理

我一向不是一个很有计划的人,为此带来的副作用是事情一多就变得有些焦虑什么都不想做。最近开始尝试做些改变。在尝试了一些任务管理工具后最终锁定Todoist
Todoist是一个很简单的小工具,支持创建子任务,支持tag。Todoist在细节处理方面做的很不错,恰到好处的AJAX应用,外加丰富的快捷键,使用起来比较舒服。
我觉得TODOLIST除作为备忘录、记录提醒的功能外更重要的是一种解决问题的方法。

  • 将问题添加到TODOLIST时,给了自己一些时间重新思考的时间,看这件事是否重要,是否值得去做。
  • 将一个大问题分解为若干个小问题,本身是一个思考问题解决方法的过程。

管理者到底是干什么的

引子

最近前JAVAEYE的老大Robbin写了一系列管理方面的文章。Robbin曾多次在论坛上表示过对CSDN的不屑,却不想在两年前上演了JAVAEYE被CSDN收购这一出。想必其中各种滋味只能是如鱼饮水冷暖自知了。
不管怎样,看Robbin最近的文章,感觉在CSDN的这两年对Robinn而言还是有不少的收获。在这两年间Robbin完成了从一个创业者到管理者的转变。

正文

管理者到底是干什么的,应该干些什么。下面是一些还有待整理的零碎想法。

  • 为下属创造良好的工作环境
    • 道家推崇不治之治,最优秀的管理者应当让人感觉不到被管理。就如党宣传的那样“人们的公仆”。管理者应当是一个后勤的角色,而不是高高在上。管理者应当主动协调跨部门的工作,尽量避免组员因公司政治而影响工作。积极为组员争取应当的利益,保证组员的积极性。
  • 乐观的心态和强大的内心
    • 困难总是难免,很少会有事情是一帆风顺,也很少有事情是必定成功。但如果一件事情做之前就不被看好,那多半都得失败。管理者应当成为团队的精神支柱。管理者应当有乐观的心态和强大的内心将问题一肩扛下,让团队成员相信希望就在前方。
  • 原则
    • 管理者应当有自己的原则有自己的底线,知道哪些问题可以妥协哪些问题不可以妥协。一个没有原则的人很难让人信任,也很难会有说服力。
  • 识人,发挥每个人的长处
    • 管理,说到底还是在和人打交道。人无完人,合适的人做合适的事。管理者需要摒弃个人偏好,尽量去发掘每个人身上的亮点。在发挥每个人的优势的同时将缺点的副作用减到最低,做到物尽其用。
  • 招到合适的人
    • 很多管理书籍中都提到招聘的重要性。一个不适合团队文化的组员会给团队带来极大的副作用。对已有组员你可能只要认命,然后尽量做到“物尽其用”,但至少在招聘时你应当尽量避免让这样的悲剧发生。
  • 远见与决策
    • 战略与战术。你可能每场仗都打的很漂亮,最后却输了,这就是战略与战术的区别。如果方向错了,走的越远错的越多。管理者应当有足够的远见,知道该往哪走。
  • 2、8原则,知道什么是真正重要的事
    • 相比普通员工,管理者不可避免的要处理更多的琐事,因此更应当知道哪些事情是重要的。根据2、8原则,真正重要的事情不会太多。应当用80%的精力去处理20%重要的事情。重要的事情又分为紧迫以及战略意义上的重要。

其他

留不住新员工的公司

Robbin的文章中有一句“留不住新员工远远比留不住老员工可怕”,深表认同。铁打的营盘流水的兵,很多公司领导认为只要公司的核心员工不流失就没关系。但如果一个公司如果无法留住新员工,至少说明这个公司是缺乏足够的活力,无法吸引到优秀的人才。或许危机不会立刻出现,但公司已经很难继续前进。

关于生命体(生物?)的一些随想

记忆

记忆就像无数的抽屉。人们将“东西”随意的对方在这些抽屉里,并为这些抽屉打上各式各样的标签。人们通过标签来查找并取用。有些抽屉用来堆放临时物品,用过即弃,或是有新东西要放时就将原抽屉里的东西丢掉。对哪些经常需要用到的东西,就多打上些标签并放到显眼的地方。
有时候我们也会随意的翻弄着这些抽屉,把抽屉里的东西拿出来加工成新物品,这就是所谓的思考。
只是记忆远比抽屉来的复杂,我们总在不经意间打开某些抽屉。我们不知道自己的抽屉里到底都存放着些什么,也不知道还能翻出些什么。

生命

某日公交上放着“张自忠”将军的记录片,讲述着张自忠殉国的过程。这本是个悲伤故事,该有些更积极的联想,我却莫名的联想到了生命起源之类的问题。
所谓的生命体其实是个很奇特的东西。
给生命体一个简单的定义:一个有机物的整体,可以按照一定的方式演化出和自己类似的新个体,游戏的规则只有一个,将自己的火种一直传下去。(注:扩展下去,一个物体只要能持续的自行演化就可算作生命。)
死亡也是一个很奇特的东西:这些叫生命的有机体可以以一定的方式同外界进行物质交换来,实现自身的更新。有时候这种更新会停止,即所谓的死亡。就拿人来说,窒息等方式可以让一个人死亡。死亡前后,这个生命体的物质组织结构几乎没有什么变化,却无法再次启动。
如果有一个造物主,最开始他有的只有一些最基础的“乐高积木”(夸克),从某天起他开始摆弄这些积木。将这些积木组合成更复杂的东西,于是有了更多的元素以及星球啥的,然后有了地球。日升日落,高山流水。不过这个世界还是太寂寞,于是这个造物主想玩些新东西,让这个世界以更复杂的方式自行演化。于是他开始了一个新的游戏,进化。游戏的规则很简单,活下去。这游戏一直从几亿年前玩到现在。游戏发展到今天,游戏的参与者又在游戏中玩着所谓改造世界的游戏。

热力学第二定律告诉我们这世界总在向最大混乱的方向发展。把糖丢到水里,糖很快就会化在水里,所谓的熵增加了。但当水蒸发后,糖又从水里析出。或许死寂是宇宙的最终归宿,但至少在这过程中各种物质还会上演着各种分分合合。而且我也不太相信所谓的死寂。死寂的宇宙就如化入水中的糖,终会以自己的方式从水中析出。

生命游戏

DNA出错可以产生“变异”,生命体可以通过这些“变异”进行进化。程序出错就基本上跑不起来了,所以要让程序自行进化很难。不过不知道是是否能做出一些基于生命进化的游戏。设置合理的规则,然后让程序产生一定数量的“生命体”。这些“生命体”为空间、资源等进行争夺和厮杀。这些“生命体”和世界中的“生命体”一样可以繁衍和进化。
游戏的规则必须很简单,又必须给予“生命体”足够的成长空间。生命的意义就是因为不可预见性才变的有意思。让这些“生命体”自由的成长,看“他们”到底能给我们带来些什么。

free youself

有时候会忽然想到一些非常“奇怪”的词语。也许是距离产生美,越是“奇怪”的词越容易按照自己的方式进行注解。会有类似“格物致知”这样词的出现或许正是同样的道理。
free youself

  • 解放思想,以开放的心态去认识这个世界。
  • 人本就有无限的可能,抛弃自己为自己设定的边界。
  • 事情很多,但重要的事情不多。让自己从琐事中解脱出来,看清真正重要的事情。

迁移到python3

python3自2008发布以来,已经历经了快4个年头。python3发布初期的速度慢,第三方开发库少的问题已得到了很好的改善。似乎已经没有太多的理由死抱着python2不放了。
考虑到目前的大多系统还都跑在python2.x上,直接迁移到python3还是有些冒进。最理想的方式是新代码都可实现python2&python3的兼容,日后可以平滑升级。下面的一些资料可以帮助你实现到python3的迁移。

黑客News

在SAE上架了个wordpress博客,用来做阅读分享。
黑客News 是一个关于“互联网、编程、创业”的团队博客。我们在这里分享我们认为有价值的文章以及我们认为有趣的东西。
全文转贴导致互联网上有着太多的重复、垃圾信息,因此博客上只发布原创内容。对于第三方的优秀文章,我们将只写内容摘要或推荐理由。