RSS Feed
  1. 天涯社区之我见

    December 1, 2011 by lazy

    今天发布的天涯轻,理念上是打通论坛/微博/博客/无线这几大主打产品的通道,
    更快的发布,web 与移动的结合。那天涯轻到底能不能让天涯轻得“飞”起来呢?我不知道。

    我也趁今天这个发布之日,说说自己的一些想法。

    先来看看天涯目前的产品线:
    主要的有:论坛,微博,博客和无线。其他还有一大堆例如:来吧,问答,应用,游戏等等,姑且不列。

    抛开目前天涯的战略和布局不谈(因为我其实也不知道天涯到底是什么战略)就说说我自己对目前天涯的分析,如果是我,我会怎么做?

    分析:

    天涯的用户,来源与 web 1.0 时代的用户。那个时候的人们上网,追求的是马甲,潜水,是一种虚拟的身份。人们可以在网络上畅所欲言一舒己见。天涯的内容都是由匿名者发布匿名者回复而走红的,所以大家都说天涯是草根的观点。天涯的特色在于能顶住压力,敢言其他网站不敢言,能时时引爆热点,最后加上自有的独特完善的线上下运营机制(说实话天涯在线下的关系做得比线上更好),才成就了辉煌。

    如果 2.0 的定义是用户创造内容,那天涯肯定是最早最大的 2.0 网站了,可惜不是。天涯的特性跟目前我们所看到的 web2.0 是大相径庭的。天涯是注重内容而轻视用户关系的。而当前的2.0更讲究Social,每个人都是一个“个媒体”,并且渐渐在向实名制的方向发展(例如微博认证、微博达人、企业微博等)。

    好了,傻子都能看出来了,天涯目前的论坛结构形式,并不适合做 2.0。但是,不做2.0完全跟不上时代啊,别人都蹭蹭的流量上去了,钱都要到手了,天涯还在原地干瞪眼,显然不能忍啊。于是有了天涯微博,还成了用户登陆后的首页,bia 在论坛旁边甩都甩不开,接着现在又有了换汤不换药的天涯轻。

    我只想说,如果不看清自己的本质,放弃自己的特色和优势,非去跟别人屁股走,永远都走不好,反而把自己的嘴里的肉丢了。因为你的用户群在你这里的习惯不是那样子的。web2.0 特质就是最终同一领域赢者通吃,没什么瓜分天下的情况。Facebook,  Twitter, Tumblr ……

    要是我,我可能会这么做:

    当今国内的 web2.0 站点如此之多,国内的新浪微博(腾讯,网易),豆瓣网(开心网,人人网),点点网(新浪轻博客,网易LOFTER),天涯不如打开自己,不要死咬着“天涯用户”的观念,让所有人都可以用他们常用的网站 API 登录进来,轻用户关系而重内容沉淀。(我说的轻用户关系不是说不管用户的交互,而是没必要什么都自己去做一套抢山头,多利用现成的网络关系)

    天涯提供的一个大平台,大家畅所欲言,包容万象,有深度,有活力。把原来天涯的特色发挥出来(能言他人不敢言,能顶住压力,完善良好的线上下运营机制以及推波助澜的能力),论坛着重沉淀有深度的精华内容。天涯就是一个 web2.0 的精华集中营。而不是像微博这种早上见下午没的“快餐”性质的东西,甚至连一天时间都留不到就石沉大海了。最后要着重数据挖掘,把精华内容(帖子)以良好的形式展现甚至推送给用户,而不是现在的全人工。同时,每个人的发言又能反向发布到他们自己的来源网站(微博、博客、轻博客),这看起来是为他人做嫁衣,其实是变相给天涯带来了流量和声誉。

    我认为这样才是真赢!陷入现在的死圈子里,总想着拉用户,论坛有了,要给用户弄微博,再弄无线,弄客户端。什么都想自己整一套,结果就是什么都做不好。

    归根结底,天涯就是论坛,论坛就是天涯。

     

    以上纯属瞎扯,各位看官轻拍。(经常在一段时间后回头看自己写过的东西,觉得无比的2B,然后立即删掉毁灭我曾经2B的证据。估计这篇也不会保留多久 :p )


  2. Install Trac on CentOS

    October 23, 2011 by lazy

    好吧,我承认我是来除草的。

    近两年没写 blog 了,当然更没有写技术相关的文章。主要是这两年没有做太多的新技术尝试,基本处于维护以前做的线上网站和代码的状态。

    自从八月份入职以后,开始学习一些新的东西。但是对于公司的开发团队的工作流程不太适应,很多时候很依赖QQ,个人认为作为一家较大的IT企业来说也不合适。(毕竟内心还是很鄙视 QQ 的,话说最近都被 QQ 逼良为娼地开始用 Windows 了)

    从来的第一周就建议经理可以尝试一下 Trac + SVN 的方式来管理团队开发,因为之前工作过的两家公司都如此管理并且效果还不错(虽然可能许多国外公司都已经放弃这种途径而采取 Git + Redmine 了)。经理同意开始从小团队范围试用一下,于是准备着手在公司服务器上安装,结果…… 公司竟然是用 Windows 在跑 VisualSVN,作为未转正的新人更不可能让我去服务器上装东西。本来想让 QA 部门的同事直接装个 Trac for VisualSVN 了事,结果种种原因未能安装,反倒是给了我一台 CentOS 的虚拟机让我自己试着玩。

    • 首先,这台机器没有外网,其次,它不能直连到公司的内网,必须通过机房另外一台机器中转。
    • 连 yum 都用不了,这让用惯了 apt-get install 的我感觉寸步难行。
    • Apache/SVN/MySQL/Trac 都要下源码 scp 上去自己编译安装。
    • 配置文件和各种 module 放置的位置也都跟 debian 系的不一样。

    自己下载编译配置 Apache 搞了半天,结果还只能本机访问,公司访问不过去。所以说用蛋疼菊紧已完全不足以形容了,简直可以说是蛋黄都快流出来了。于是乎就暂时放下了折腾这台 CentOS 的念头,一放就几周过去了……

    上周部门开例会以后,感觉如果能把  Trac+SVN 搭建起来还是会对团队整体的工作流程有巨大改善的。目前的流程不仅冗余,而且容易出错。并且尝试一些新鲜的东西对团队活力来说也是有好处的。

    于是下定决心,排除万难,一个字 —— 搞!

    Trac 安装配置

    1. 由于之前的 Apache 痛苦经历,决定直接放弃。Trac 我用它自带的 tracd server;SVN 也使用自己 svn 协议,不用 webdav;

    2. 下载安装 Trac 所需的三个包 Trac 0.12.2, Babel 0.9.6, Genshi 0.6 并 scp 上传到服务器;

    3. 服务器上直接解压 make install (此处注意 Babel 和 Genshi 先于 Trac 安装,以便让 Trac 支持多语言);

    4. trac-admin 新建/初始化项目

    trac-admin project_name initenv

    因为现在 Trac 支持多项目的管理了,我将项目都统一放在 /var/trac 这个路径下面。另外现在 initenv 的时候不再需要输入 svn 相关信息了,可以稍后自己配置;

    5. 配置 trac 用户

    创立一个 password 文件,我是用 htdigest 生成的(用 htpasswd 也可以),方式如下:

    htdigest [ -c ] passwdfile realm username

    [ -c ] 参数是新建这个 passwdfile。可以直接将这个 password 文件放到具体某个项目文件夹里。也可以放到上一级的 /var/trac 下,针对多个项目使用这同一个 password 文件;

    5. 启动 tracd 服务

    tracd -p 8080 -d --auth="project_relative_path,pwd_file_relative_path,realm"

    这里注意,我写的是 relative path(相对路径),用绝对路径好像行不通。

    如果想针对所有的项目都使用同一个 password 文件,则将 project_relative_path 用 * 取代;

    6. 浏览器输入 http://hostname:8080

    这时应该可以看到这里列出你刚才 init 的项目了。点进去以后,用刚才创建的 password 文件里的用户登录,可以选择偏好并设置语言,由于我们先安装了 Babel,所以多语言支持应该没问题了。

    至此基本的 Trac 安装完成。

    配置 SVN 并整合到 Trac

    1. 我没有新装 svn, 因为发现这台虚拟机上已经有了,版本是 1.6.11

    于是直接用,创建一个 svn repository:

    mkdir /var/svn/repo
    cd /var/svn
    svnadmin create repo
    chown -R nobody:subversion  repo
    chmod -R g+rws repo
    

    2. 测试刚才建立的库,既然抛弃了 Apache,就用 svn 自带的协议 svn:// (或者 svn+ssh://)。

    接下来设置访问权限:

    先编辑 /var/svn/repo/conf/svnserve.conf ,把下面这一行的注释去掉:

    # password-db = passwd

    接着编辑 /var/svn/repo/conf/passwd ,将用户名密码设置好,类似以下格式:

    harry = harryssecret
    sally = sallyssecret

    另外在 svnserve.conf 里的这一行:

    anon-access = none

    表示的是 anonymous 用户的权限,需要自己设置一下,可选 none, read 和 write。一般的公司项目都会选择 none,即匿名用户没有任何权限。

    启动 svnserve:

    svnserve -d -r /var/svn/

    然后 svn checkout 试一下,应该没什么问题了

    svn co svn://localhost/repo

    3. 修改 $project_name/conf/trac.ini,在这一行填上 svn 地址,注意是路径,即 /var/svn/repo

    4. 访问 http://localhost:8080 会比刚才之前多了一个导航:browse source

    至此 SVN 与 Trac 整合就算完成了。

    5. 遇到的问题与解决:

    在上述第4步的时候,我发现进入 trac 后有个报错:

    python svn ImportError: No module named svn

    我的 python 与 svn 的 binding 似乎有问题,看了 TracWiki 里的 TracSubversion trouble Shooting,直接在终端试了一下

    $ python
    Python ...
    >>> from svn import core

    果然报错。

    文档上说是要安装 python-subversion,说明上面就写着如果是 debian 系统,直接 apt-get install python-subversion ,尼玛,哥用的是坑爹的 CentOS 啊,还不能用 yum 啊!!!上网找了一圈,愣是没找着这个包的源码。

    这篇文章 里看到一个 quick fix。于是下了 subversion 的源码,试了一遍:

    $ cd /usr/src/subversion-1.6.1/
    $ make swig-py
    $ make check-swig-py		### Perform checks
    $ make install-swig-py
    

    也是出错,无法 configure/make 通过,有 error。

    这时我已经基本崩溃了,突然,发现这台 CentOS 里当前 python 版本是 2.5.x,另外还有一个 python2.6,于是用 python2.6 试了一下 xxxxx,没有问题。顿时菊花一松。

    于是就想将 python2.6 作为 CentOS 的默认 python 命令调用。

    在 debian 类系统里是更改系统默认调用是 update-alternatives –config xxxxx。CentOS 是 /usr/sbin/alternatives –config xxxx 。如果没有该项,则可以先 install,格式类似:

    $ /usr/sbin/alternatives --install "/usr/bin/python" "python" "/usr/local/bin/python2.6" 2

    但是我试了好几次都没法将默认的 python 设置成 2.6 的那个。于是放弃先,直接删掉 /usr/bin/python 做了一个 ln

    $ rm -rf /usr/bin/python
    $ ln -s /usr/bin/python2.6 /usr/bin/python

    这时刚才那个 quick-fix 的几个命令也都可以顺利执行了,于是去访问 trac,按理来说应该没什么问题了,但是。。。无法启动 tracd 服务了,会报一堆关于 python 的错误。

    我猜是因为当时编译 Trac 的 python 是2.5的,现在用 2.6?(这个以后需要确认),于是我解决这个问题的办法就是,很黄很暴力地,直接将 Trac/Babel/Genshi 三个包全部用新的 python2.6 重新 make install 了一遍。

    问题解决。

    SVN sync

    来由:

    1. 因为公司的 SVN 需要放在前面提到过的那台 VisualSVN 机器上,以方便进行统一管理。但是我没有权限去动那台机器。
    2. Trac 必须跟 SVN 装在同一台物理机上,暂时不支持远程 SVN。

    解决方案:

    在虚拟机上建立 Trac 和 SVN,并将公司的 SVN repo 同步到这台虚拟机上来,通过修改 post-commit ,让每次提交代码后运行 svnsync 保持两个 svn repo 同步。

    步骤:

    (实在懒得写了,这篇已经是我有屎以来写得最长的一篇 blog 了,列为 TODO: 好了,下面随便摘要一下)

    在 VM 上新建一个 repo,并设置好 password,(参考上面 svn 的配置)。

    cp repo/hooks/pre-rexxx.tmpl repo/hooks/prexxx

    删除掉下面的内容,替换为 exit 0

    记得,要给这个文件可执行的权限

    svnsync init svn://localhost/repo http://xx.xx.xx.xx/svn/repo

    svnsync sync svn://localhost/repo

    此时 VM 里的这个 repo 就可以视作是远程服务器的一个 svn 备份了,不要 checkout 并提交到 vm 的这个 repo,操作都在 http 那台上面进行。然后随时执行(不论在那台机器上)

    svnsync sync svn://localhost/repo

    都将会把  http 的代码同步到 vm 上,可以编辑 http 机器的 post-commit,每次提交都做一次 svnsync

    这样曲线救国地解决成了 VM 上的 trac 只能访问本机的 svn 的问题

    (more…)


  3. Test blogging using Yupoo

    January 10, 2010 by lazy




    背影
    lazyone上传于Yupoo, 由相机Canon EOS 500D拍摄.

    测试 Yupoo 发送至 Blog 功能。

  4. Create your own twitter clients

    January 8, 2010 by lazy

    昨天在 @dupola 同学的提示下,成功添加了我们工作室自己的 twitter 客户端。

    如下图所示,我们工作室的 twitter 页面里最新的几条 tweets 都是由 ”viivlabs” 这个客户端来发送的,点击 “viivlabs” 链接会跳转到我们工作室的网站。看起来这样也是个不错的宣传方式呢。

    实现步骤:

    1. 参考小众软件的这篇文章:Dabr 安装 – Twitter 手机版网页程序安装教程

    2. 注意在 Twitter 注册自己的第三方程序的时候,写好你自己喜欢的客户端名字,把 Application Website 换成你自己的网站。Callback URL 就写你安装的 Dabr 的地址。

    3. 现在登录你的 Dabr,然后通过 Sign in with Twitter/OAuth 这里登录。现在试推一下吧 =)一切正常的话,客户端应该就会显示为你自己创建的客户端名字了。


  5. Add PHPdoc to your VIM

    January 6, 2010 by lazy

    VIM 是我最喜欢的文本编辑器(没有之一),今天看了一篇文章:Unix manual pages for PHP functions (需自行翻墙阅读),才知道现在类 Unix 系统的 Manual 也可以添加对 PHP doc 的支持了,同时它也可以让你的 VIM 支持快速查找文档。在我的 MacBook 上试了一下,效果不错。

    其实安装方法很简单,在你的终端里输入:

    $ pear install doc.php.net/pman

    如果你的 pear 版本较老,必须先 “discover” 到 doc.php.net 这个频道,然后再运行上面的命令:

    $ pear channel-discover doc.php.net

    安装完成后就可以在终端里输入 pman [function name] 来查询文档了。

    ——————————- 分割线 ——————————

    让你的 VIM 支持快速查找 PHP 函数文档也很简单,现在只需要在你的 vimrc 文件里加上一行就搞定了:

    set keywordprg=pman

    现在把你的 VIM 光标移到某个 PHP 函数上,输入 “K” (大写的哦),看到了吗? :D


  6. Install Trac on DreamHost VPS

    November 2, 2009 by lazy

    最近在一个 DreamHost 的空间上用 1-click install 安装了一个 Trac。在这里记录一下配置用户登录的方法。

    在 DH 上用 1-click install 安装完的 Trac 是没有用户认证系统的,DH 使用的是 FastCGI 方式,似乎只能通过配置 Apache 的 htpasswd 来实现登录,而不是通过 Trac 本身的用户登录系统。

    ssh 登录到 VPS,输入如下命令:

    $ htpasswd -c /somewhere/trac.htpasswd admin
    New password:
    Re-type new password:
    Adding password for user admin
    

    这样,第一个用户 “admin” 就设置好了。接下来你可以设置第二个,第三个用户的名字和密码,这时就不需要 “-c” 的参数了,因为文件已经建立好了。例如 :

    $ htpasswd /somewhere/trac.htpasswd john
    New password:
    Re-type new password:
    Adding password for user john
    

    按照 Trac 的官方文档,接下来应该是修改 Apache 配置文档。但是由于是 VPS,我不太清楚怎么改 Apache 的配置,所以我就把如下这段加到了 trac 路径下的 .htaccess 文件里(本来按照文档,这短代码是应该放在 <Location> tag 里的,但是我看到 Apache error log 里似乎不支持 location。所以我就直接把 tag 去了):

    AuthType Basic
    AuthName "Trac"
    AuthUserFile /somewhere/trac.htpasswd
    Require valid-user
    

    到这里基本算配置完了。现在你登录任何一个你的 trac 页面,浏览器都会弹出登陆窗口。你就可以用你刚才添加的任意一个用户登录了。

    接下来的工作就是因人而异了,可以在 Trac 的 Admin panel 里添加各个用户的具体权限了,通过 ssh 登录 VPS 后可以通过如下命令给登录的用户添加/删除 TRAC_ADMIN 命令:

    $ trac-admin /path/to/projenv permission add authenticated TRAC_ADMIN
    $ trac-admin /path/to/projenv permission remove authenticated TRAC_ADMIN
    

    拥有这个权限后,Trac 界面的 “Admin” tab 才会显示出来。具体的用户权限文档可以参考 TracPermissions.

    最后是看看 conf/trac.ini 这个文件,很容易看懂,可以配置很多关于 Trac 的东西,例如 header logo 图片,footer 文字,邮件服务器等等… 我有点懒,就不写了。


  7. Weddings

    October 17, 2009 by lazy

    十月份才过了一半,已经参加了3个婚礼了。

    今天下午到了香港,参加第4个 ── Anthony 和 Winnie 同学的婚礼。(我是不是有点太积极了。。。?)总之看到两位前同事终于永结连理,心里很开心。而且这次他们在教堂举行婚礼,还没参加过这种婚礼呢,期待明天 :)

    晚上跟小安和XPH吃完饭后,上网把公司的事情做完,还是香港好阿,facebook, twitter 再也不用 ssh 了,不过这家酒店的网速很一般。

    干完活一看还早,自己出去晃了晃。走到重庆大厦附近,看到N多有色人种围在一起不知道是打闹还是干嘛,警察都来了。(为什么重庆大厦这边聚集这么多印度人和黑人?)

    最后走到了星光大道,对岸香港岛的夜景真的不错,但是尴尬的事情就是没有相机!(上次来香港也没带~囧)这次争取在香港买台 EOS 500D + 狗头,不知道身上的钱够不够阿。。。纠结~~

    如果买了相机再来上相片!没买的话此博就太监吧~


  8. Hello world!

    August 2, 2009 by lazy

    帮老爸做网站,用信用卡买了一个 (mt) 的空间,于是顺便自己注册了这个域名(购买空间时注册域名只需$5),买了一年,在网上找了个 discount code,于是 $200 打8折,加域名总共是 $165 ,这价格在经济萧条的如今可真不算便宜。

    lazyone.org 这个域名其实大学刚毕业那会儿就想注册了,只是一直觉得没什么必要,而且也没申请信用卡,所以自己的 blog 也就到处漂泊…… 期间至少经历了5,6个 BSP。本打算将原来的 wp 数据都导入这里,但是想想算了,当这里是一个新的开始吧。

    说说 (mt)  的空间服务,我购买的是 grid service,使用了一段时间,发现其实要从易用性和可定制性上来说,比 DreamHost 差远了,动不动在你的用户名前面加一坨字符串,类似 “db078_username” 这样的,真的让我有点抓狂。而且 1-click install 的程序少的可怜,目前仅有三个(wordpress, drupal, zencart)。 Subversion 是通过 svn+ssh  的方式来实现 …… 总之是让用惯了 DreamHost 的我非常之不习惯。除了 UI 做得比 DH 多下了些功夫,其他的我还真没看出来有什么好,这美刀花得我有点心疼~

    归根结底,还是看空间的速度和稳定性吧,用一段时间看看,不行再迁移回 DH。