Front

Semantic-UI和其他几个前端框架

本来是想介绍Semantic-UI的,但如果只介绍这个框架,没什么内容,框架相关feature站点上有不需要说,所以干脆列出自己常用的几个前端框架,算是做个阶段性总结。

本文的核心是侧重于HTML/CSS的框架,JS框架或以JS为核心的框架不讨论(比如YUI);多屏已是既定事实,虽然不是所有开发都要考虑自适应,但有自适应功能至少说明了这框架短期内不会被淘汰,所以不带自适应功能的框架不讨论(比如flaminwork);非开源、不可商用,或是需要付费的框架不讨论(比如easyframework)。…

Continue Reading
Product

新版Worktile试用

Worktile,目前的定位是“团队协同工具”。最初的印象,是去年在G+上看到有人批评其山寨Trello的痕迹过于明显,本来想试用的,毕竟山寨的是我每天都在用的产品,但当时手里事情太多,也就先放一边了。这周36kr对它做了报道,看截图是已经度过单纯山寨Trello阶段了,于是申请了测试资格。

产品是偏Geek的路线:后台是NodeJS+Express的架构,前端是Bootstrap框架——有加载自适应css文件,但改变宽度后显示很混乱——Markdown编辑器、事件Timeline、Emojo表情,各种小细节走的都是技术范。主要的卖点是…

Continue Reading
Python Tech

ajenti的安装及插件制作

ajenti是Web方式的服务器管理平台,包含一系列常用运维工具,例如文件操作、服务管理、流量/磁盘空间实时监控等。这些工具本身倒是没什么亮点,我自己都写过。使用ajenti主要因为它是Python写的,修改扩展非常简单,我给它加了几个插件,省掉许多以前需要ssh连服务器进行操作。其次是它的界面交互做得不错,非专业人员也能使用,如果以后有多人管理的需求也能用上。本文分享安装和插件制作的步骤。

Install

Continue Reading
Front Python

用Django和Backbone.js生成表单

Django带了Forms框架,但如果不用Model Form,就要把在Model中定义的字段再写一遍。而且现在项目中都会用到前端工具包/框架,比如Bootstrap,于是as_table/as_ul/as_p就不能直接用了,每个字段都要手动写到HTML里。我之前是用django-crispy-forms这个模块来简化。

Backbone.js是一个基础框架,没有生成表单的功能,但有一个依赖于Backbone.js,很好用的Forms框架——…

Continue Reading
Other

四生

一、《太平廣記,狐十》

熙寧初,昌國縣有鐘氏者,為人剛直有識量,博學五經明解三藏。夜分行及觀音院前,遇大雨,於院門避雨。見一綠眼黑狐,為火龍所逐,幾為所焚。鐘氏欲救之,乃開廟門,縱狐入。復攔於門前,火龍徘徊不進,須臾遂自消散。狐出而謝之,謂曰:“吾修行已逾千載,術成後與乾坤並久,壽享長春,法身不朽,此等奪之天地造化之事,自然難容,故降天火燒之,是為火劫。君乃無罪之人,天火不敢傷,然今脫我之劫而自當之,恐招天譴。”…

Continue Reading
Tech

用NodeJS实现APNS

APNS(Apple Push Notification service)可以给ios设备推送通知,直观表述就是当某个app在后台运行时,能弹出提示消息。相比Android来,只有这一套方案所以少了很多调研成本。标题写NodeJS,只是因为我们的生产环境是NodeJS,我也用其他语言调过,测试的库是这三个:node-apns(NodeJS) / PyAPNs(Python) / apns(Ruby)。本文的重点不是针对代码(因为确实没什么代码量),而是描述如何在Apple开发者中心请求证书、生成PEM文件、读取PEM文件和证书对APNs的沙盒发送请求,设备接收到Notification后进行处理这一系列流程的入门文章。…

Continue Reading
Tech

MongoDB无法启动的解决方法

遇到MongoDB突然无法启动,第一反应是删除mongod.lock。这个文件在MongoDB的数据库目录下,默认是/data/db。这是最常见的问题了,产生原因是MongoDB没有正常结束(比如被kill -9杀掉或是其他意外情况导致中断)。

还一些其他情况会导致MongoDB无法启动。本文讨论的无法启动,是指:使用/etc/init.d/mongodb start或是sudo service mongdb

Continue Reading
Python Tech

Django+又拍云+file-uploader快速实现批量上传

最近做的工作都和Django没什么关系,或者都是比较底层的算法,不方便share,所以分享一些老东西。

之前写过Django用uploadify实现图片批量上传,从反馈来看,问题很多。现在uploadify更新到了3.2版,仍然是用swf来实现批量上传,代码还是老样子一团糟。作为替代换成了file-uploader,虽然是multipart/form-data来实现批量上传,不如swf的方式通用。但我不需要兼容老版本浏览器,做的都是富js应用,更看重代码的可扩展性,file-uploader更合适。…

Continue Reading
Python Tech

Avro用php请求python服务的例子

Avro是Hadoop项目之一。主要用来支持数据密集型应用,它定义了一种数据格式并在多种编程语言中支持这种格式。我们最主要是用来操作Cassandra,其次是以RPC的方式,实现语言之间的相互调用。

架构中有很多轻量的python脚本,比如,PHP接收到一个URL,需要调用Python脚本,去取这个URL的标题,然后返回。之前是用cli从命令行直接调用,效果不是很好,经常会卡死,有时还会占用PHP的端口导致php-fpm无法启动。这种场景又不能用RabbitMQ之类的异步处理。所以用Avro实现了一个简单的调用,跑了一个多月,目前一切正常,现在分享相关代码。…

Continue Reading
Python Tech

Ubuntu安装Cassandra并配置多节点

Cassandra是一套分布式数据库,设计思想比较接近Big Table和Amazon Dynamo。从08年开源到现在,经历了Digg的悲剧,Twitter的调教,最新版本1.1版,已经开始进入平稳发展期了。我们现在有很多结构简单但读写频繁的数据,基于性能(跑分王)扩展性(多Cluster)等方面的考虑,用Cassandra搭了一个ring,目前为止运作正常。本文介绍在Ubuntu中安装Cassandra,用两台服务器做为两个节点搭建出一个ring,最后用pycassa把MySQL中的数据导入Cassandra。…

Continue Reading