分类: ‘发芽网开发记录’ 的所有文章

Windows下的用vim编辑javascript: ctags, taglist, javscript设置

2011年01月20号,星期四 作者:半瓶墨水   链接:http://www.2maomao.com/blog/vim-ctags-taglist-javascript/

前提:
1. 安装Ctags,只要把ctags.exe解压到你的系统PATH所在的任意文件夹下就可以,不知道的话就放到system32下吧。其他文件不需要
2. 安装gvim的taglist.vim插件

设置:
1. 打开命令行,输入: cd %HOMEDRIVE%%HOMEPATH% (一般在 C:\Documents and Settings\登录用户名\ 目录下 )
2. 在该目录下建立一个文件名为 ctags.cnf
3. 在该文件里面输入:

--regex-JavaScript=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*new[ \t]+Object\(/\1/o,object/
--regex-JavaScript=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*\{/\1/o,object/
--regex-JavaScript=/([A-Za-z0-9._$()]+)[ \t]*[:=][ \t]*function[ \t]*\(/\1/f,function/
--regex-JavaScript=/function[ \t]+([A-Za-z0-9._$]+)[ \t]*\([^\]\)]*\)/\1/f,function/
--regex-JavaScript=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*new[ \t]+Array\(/\1/a,array/
--regex-JavaScript=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*\[/\1/a,array/
--regex-JavaScript=/([^= ]+)[ \t]*=[ \t]*[^""]'[^'']*/\1/s,string/
--regex-JavaScript=/([^= ]+)[ \t]*=[ \t]*[^'']"[^""]*/\1/s,string/

4. 在.vimrc文件里面加上一行:

let tlist_js_settings = 'javascript;s:string;a:array;o:object;f:function'

好了,配置完成,现在用gvim打开一个包含很多函数定义的.js文件(不要是.min.js的啊),输入:Tlist就可以啦
上图:
vim_taglist_ctags_js1
其他vim+javascript设置: javascript.vim

参考:
* http://stackoverflow.com/questions/1790623/how-can-i-make-vims-taglist-plugin-show-useful-information-for-javascript

绕过Bluehost的数据库连接限制(Django/发芽网)

2010年08月20号,星期五 作者:半瓶墨水   链接:http://www.2maomao.com/blog/work-around-max_user_connections/

最近个把月,发芽网的访问量有所上升,直接后果就是数据库报错,说我的数据库用户链接数超过了max_user_connections

联系了一下bluehost,客服跟我说,最近他们设置了max_user_connections为15, 建议我多用cache方式减少数据库连接,并根据我用的是Django推荐了django-staticgenerator,我看了一下,还不错,但是最近太忙了,时间上估计来不及。

bluehost抱怨了一下连接数太少,顺便想到了一个暂时的解决方案:
1. 在settings.py里面加入了一个DATABASE_USERS的新变量,里面放上很多个用户名,这些用户对发芽网的数据库都有同样的访问权限,同样的密码
2. 在后台的python2.6/lib/site-packages/django/db/__init__.py里面,把获取数据库用户的赋值改成了random.choice( settings.DATABASE_USERS )

暂时来看,应该还是有点效果了,先观察几天再说。

BTW: 给发芽网添加了OpenID支持以后,到现在已经有80个用户使用了OpenID,多数都是Google的,第二位的是Yahoo,呵呵这个结果还不错。

给发芽网添加OpenID支持,Google帐户登陆很方便

2010年05月17号,星期一 作者:半瓶墨水   链接:http://www.2maomao.com/blog/fayaa-openid/

fayaa-openid-1

上周刚刚做好,欢迎小白鼠 🙂
(好像已经有十几个了,大部分都是Google用户)

登陆以后,可以选择生成新帐户(只要稍微改改就行,懒的话直接添个验证码,反正已经有三个人这么做了),或者绑定到老帐户,以后登录发芽网就可以多渠道了。而且,支持绑定多个Openid到一个发芽网帐号哦~~~!

fayaa-openid-2


关于实现

查了一下发芽网的Roadmap,大概八个月前,加入了OpenID的需求,这是个计划了很久的功能,刚刚想到的时候改了一半,结果没做完的工作直接导致了八个月内不敢做其他的更新,看来版本管理还是要做做好。

以下是准备过程:
最初的时候,想用Django-Openid-Auth
后来感觉本地用户还是需要的,就想用Django-Authopenid,被Nonce搞到晕
再后来,想过用Google Friend Connect(谷鸽迁徙香港后放弃)
然后还试过Django SocialAuth
还试过修改gaema
。。。
最终,回到起点,仔细研究了一下python openid的库以及openid的spec,基于python openid自己写了一个
(model那部分代码直接copy了django-authopenid)


PS:
这段时间很少有精力改进发芽网,一半的周末用于来往京津高速回家赔乖女儿乐乐,带她挖沙子是主要任务,呵呵

另外,来北京快5年了,前不久才去了故宫、簋街、南锣鼓巷,长城至今还没有去过,跟猫猫一合计,现在不转转真是对不住自己每天这么辛苦,于是另外一半的周末,一部分时间在北京转转玩玩,另一部分的时间,在睡觉,以及做爱做的事情。。。

代码发芽网重新支持临时代码

2009年11月12号,星期四 作者:半瓶墨水   链接:http://www.2maomao.com/blog/code-fayaa-anonymous-again/

代码发芽网新界面

(上上周做的了,直到今天才有时间写)

代码发芽网改版以后,把临时高亮代码的支持去掉了,也就是说,不管你有没有登录,所有的代码都会发布,别人也看得到

当时考虑的情况是:保不保存都没关系,因为用来高亮的代码都是要贴到网上的,给出了“高亮不保存”按钮反而添乱。

然后有朋友在贴了代码以后,写信给我要求删除;如是者三,我也纳闷,跟其中一位朋友聊聊为啥,才知道有时候贴代码是在本地用的,并不想公开。

想了又想,决定还是尊重用户的选择;为了区分,我加上了一个“临时自用,请不要保存”的选项。

一道老面试题 – 为什么镜子可以颠倒左右却不能颠倒上下?

2009年11月11号,星期三 作者:半瓶墨水   链接:http://www.2maomao.com/blog/interview-question-mirror-reverse/

题目描述如下:

题酷发芽网#155:想象你在镜子前,请问,为什么镜子中的影像可以颠倒左右,却不能颠倒上下?

这道题目其实有很大的迷惑性,面试官是在考察你的逻辑思维能力

有两种答案如下:
1. 因为人的眼睛是左右对称的,而不是上下对称得(这个是有问题的,闭上一只眼,还是同样的结果)
2. 因为镜子里面人的左右是反的,上下是正的(等于把题目重复了一遍)

事实上我也想不到一个很好的回答,只把一条条的想法列在下面,欢迎讨论

  1. 镜子里的影像的“左右”,如果相对于站在镜子前的人来说,根本没有变化,左还是左,右还是右。所以所谓颠倒的左右,是指镜子里的人的左右跟现实中的人的左右相反
  2. 只要镜子放置的位置,能够对于某个参考坐标系“取反”就会产生“颠倒”的效果
  3. 所以我觉得是参照物的不同,上下的参照物是地心,左右的参照物是人的中心
  4. 对于站在镜子前的情况,地心并未被取反(因为地心跟镜子在同一个平面上)。题目还是有限制的“你在镜子前”,否则如果你站在镜子上,或者把镜子顶在头上,镜子就能颠倒上下
  5. 实际上,严格来说,只要镜子稍微偏离一点点,使得地心跟镜子不在同一平面,镜子就能颠倒上下,站在镜子上和头顶着镜子只是一个人能够清楚感受这一点的特例
  6. 但是由于“左旋”跟“右旋”始终是镜像关系,所以左右始终是能颠倒的,不论怎么摆放