旌旗博客

2010-10-22

windows下smarty中的date_format格式化乱码问题

Filed under: 未分类 — rocky @ 17:08

环境:Windows XP Professional SP3中文版,Apache 2.2,PHP 5.2.14,smarty 2.6.18

代码:<{$time|date_format:"%Y年%m月"}>

输出:乱码如:2010年%m月�G

原因:默认的locale是

LC_COLLATE=C;LC_CTYPE=Chinese_People's Republic of China.936;LC_MONETARY=C;LC_NUMERIC=C;LC_TIME=C
解决方法:在调用smarty前用 setlocale(LC_CTYPE, "C"); 把LC_CTYPE设置成"C”就可以了。

2010-08-12

Patch for anonymous’ comments bug on drupal

Filed under: I.T. — 标签: — rocky @ 17:15

  You may allow anonymous post comments on drupal system by granting those rights to anonymous roles. But there is a bug which preventing the anonymous’ comments to display with the posts or in the comment block. You could apply the patch below to fix the bug. It should work for version 6.16 to 6.19.

Index: modules/comment/comment.admin.inc
===================================================================
--- modules/comment/comment.admin.inc    (revision 281)
+++ modules/comment/comment.admin.inc    (revision 282)
@@ -57,7 +57,7 @@
     array('data' => t('Time'), 'field' => 'timestamp', 'sort' => 'desc'),
     array('data' => t('Operations'))
   ));
-  $result = pager_query('SELECT c.subject, c.nid, c.cid, c.comment, c.timestamp, c.status, c.name, c.homepage, u.name AS registered_name, u.uid, n.title as node_title FROM {comments} c INNER JOIN {users} u ON u.uid = c.uid INNER JOIN {node} n ON n.nid = c.nid WHERE c.status = %d'. tablesort_sql($form['header']['#value']), 50, 0, NULL, $status);
+  $result = pager_query('SELECT c.subject, c.nid, c.cid, c.comment, c.timestamp, c.status, c.name, c.homepage, u.name AS registered_name, u.uid, n.title as node_title FROM {comments} c LEFT JOIN {users} u ON u.uid = c.uid INNER JOIN {node} n ON n.nid = c.nid WHERE c.status = %d'. tablesort_sql($form['header']['#value']), 50, 0, NULL, $status);
 
   // build a table listing the appropriate comments
   $destination = drupal_get_destination();
@@ -215,7 +215,7 @@
  *   The comment do be deleted.
  */
 function comment_delete($cid = NULL) {
-  $comment = db_fetch_object(db_query('SELECT c.*, u.name AS registered_name, u.uid FROM {comments} c INNER JOIN {users} u ON u.uid = c.uid WHERE c.cid = %d', $cid));
+  $comment = db_fetch_object(db_query('SELECT c.*, u.name AS registered_name, u.uid FROM {comments} c LEFT JOIN {users} u ON u.uid = c.uid WHERE c.cid = %d', $cid));
   $comment->name = $comment->uid ? $comment->registered_name : $comment->name;
 
   $output = '';
@@ -287,7 +287,7 @@
   comment_invoke_comment($comment, 'delete');
 
   // Delete the comment's replies
-  $result = db_query('SELECT c.*, u.name AS registered_name, u.uid FROM {comments} c INNER JOIN {users} u ON u.uid = c.uid WHERE pid = %d', $comment->cid);
+  $result = db_query('SELECT c.*, u.name AS registered_name, u.uid FROM {comments} c LEFT JOIN {users} u ON u.uid = c.uid WHERE pid = %d', $comment->cid);
   while ($comment = db_fetch_object($result)) {
     $comment->name = $comment->uid ? $comment->registered_name : $comment->name;
     _comment_delete_thread($comment);
Index: modules/comment/comment.module
===================================================================
--- modules/comment/comment.module    (revision 281)
+++ modules/comment/comment.module    (revision 282)
@@ -936,7 +936,7 @@
 
     if ($cid && is_numeric($cid)) {
       // Single comment view.
-      $query = 'SELECT c.cid, c.pid, c.nid, c.subject, c.comment, c.format, c.timestamp, c.name, c.mail, c.homepage, u.uid, u.name AS registered_name, u.signature, u.signature_format, u.picture, u.data, c.status FROM {comments} c INNER JOIN {users} u ON c.uid = u.uid WHERE c.cid = %d';
+      $query = 'SELECT c.cid, c.pid, c.nid, c.subject, c.comment, c.format, c.timestamp, c.name, c.mail, c.homepage, u.uid, u.name AS registered_name, u.signature, u.signature_format, u.picture, u.data, c.status FROM {comments} c LEFT JOIN {users} u ON c.uid = u.uid WHERE c.cid = %d';
       $query_args = array($cid);
       if (!user_access('administer comments')) {
         $query .= ' AND c.status = %d';
@@ -957,7 +957,7 @@
     else {
       // Multiple comment view
       $query_count = 'SELECT COUNT(*) FROM {comments} c WHERE c.nid = %d';
-      $query = 'SELECT c.cid as cid, c.pid, c.nid, c.subject, c.comment, c.format, c.timestamp, c.name, c.mail, c.homepage, u.uid, u.name AS registered_name, u.signature, u.signature_format, u.picture, u.data, c.thread, c.status FROM {comments} c INNER JOIN {users} u ON c.uid = u.uid WHERE c.nid = %d';
+      $query = 'SELECT c.cid as cid, c.pid, c.nid, c.subject, c.comment, c.format, c.timestamp, c.name, c.mail, c.homepage, u.uid, u.name AS registered_name, u.signature, u.signature_format, u.picture, u.data, c.thread, c.status FROM {comments} c LEFT JOIN {users} u ON c.uid = u.uid WHERE c.nid = %d';
 
       $query_args = array($nid);
       if (!user_access('administer comments')) {

2010-08-10

七年之痒

Filed under: 未分类 — rocky @ 20:57

    2010年6月大学同学举行了毕业十周年同学聚会,时间如白马过隙,人生有几个十年啊。可以说这个十年是人生中最一个黄金十年了,而回首往事,却发现自己好像虚度了。

    2000年7月毕业进入新浪,那时还是叫四通利方,在万泉河小学的几层楼里,每天上午都能透过窗户看学生们升旗、做早操。当时我在研发中心参与新浪点点通SinaTicker的开发,SinaTicker是一款可以滚动显示新浪新闻的软件,还集成了新浪股票、邮件、SinaPager服务。后来打杂做了较短一段时间发布系统的部署等零活,再转做新浪的IM软件SinaPager。新浪那段时间变动挺多,起先是扩张,2001年互联网冬天的时候裁员。我做SinaPager的时候有段时间已是我一个人在做了,对整体架构重新构建的同时,那段时间对ATL、COM/DCOM比较着迷,用DCOM做了更新一版的集成SinaTicker和SinaPager的统一客户端,可惜那时自从王志东时代之后公司对客户端已经不太重视了。再接着转做Sina Online(SOL),是个集成拨号器的IE内核的浏览器。至2002年10月离职,在新浪的2年多时间,感觉有很大的自由度,做了很多东西,虽然没有太大的成绩,但个人得到了很多的锻炼,还是有点小小成就感的。缺憾的是在新浪的那段时间感觉没有导师做更好的指导,自己自由发展可能看不准方向,容易长歪了,不是正途。

    从大三大四时候开始我就在外面找软件开发的兼职了,贴补生活费用的同时也见识了很多。那时候去过清华学生创业公司,还跟人去忽悠丁磊找项目做。出去玩玩还真是挺不错的,好过在宿舍无聊看电视打游戏。刚毕业在新浪工作的时候,比较拮据,也试图在外面找零活做过,后来在一家做电信软件的公司做过一段较长期的兼职。

    2002年9月我就是通过做一个兼职项目接触了一个韩国老板,由此从新浪离职后与另一个同事到韩国工作了有2个多月时间,终于在圣诞节前回了北京。然后开始参与组建BTB Wireless中国分公司。那时BTB的主要项目是做智能手机或PDA上的手机浏览器,还有铃声图片等移动增值业务。在中国公司这边,开始我主要负责KVM产品和linux浏览器产品,KVM产品在三星的第一款linux手机i519上成功发布。2003年初,公司准备在symbian上做浏览器,我提出了开发平台无关的浏览器引擎。到8月份,中国这边正式分成两个division,一边是做SP服务和外包系统维护服务,我这边是mobile solution division,负责手机浏览器产品。我们努力自己开发整个平台无关的手机浏览器引擎,当时我们成功地在linux、windows、symbian、smartphone等多个平台上运行了这个浏览器,后来还移植到了CDMA的feature phone上。到2005年6月公司最后决定停止了浏览器产品项目,直接原因是一直得不到正式的商业应用。很可惜,我们4个人2年时间的投入,最后得到的还是个并不特别稳定的半成品。

    浏览器产品部门解散后,2005年7月我转入公司刚开始的葡萄音乐网任副总。这是个不小的转变,从做软件转向做网站,从技术管理转向做高层管理。考虑了一段时间后决定迎接这个挑战。最早在大学开始我就伴随着网络成长,大学时的telnet的BBS,到新浪的网络软件,到浏览器的开发,其实和网站都有莫大的关系。之前觉得做网站没有技术含量,但后来对大容量高并发集群服务很感兴趣。我真正做互联网是从葡萄开始的。但实际上在葡萄音乐网期间我并没有做出成绩出来,最后葡萄音乐网由于版权纠纷而关张,我也于2007年7月离职走上创业之路。

    从2000年到2007年这7年,我从工程师成长为副总,不乏自己的努力,对技术的深深的热爱。但我感觉我走的这条路,有点太曲折了,薪水职位的上升与能力的上升并不同步。相对来说当年在新浪还是比较有成长环境的,管理等比较正规,有培训机会,也有很多锻炼实践机会,也许我在新浪能安心再奋斗几年的话,可能发展会更好一些,当然如果有比较好的导师的话就更完美了。又或者如果我能在这7年里能去学个MBA之类的,也许也会使自己的发展之路更坚实一些。不过现实就是现实,这7年下来,的确自己应该好好做个职业的转变了。无论自己是否真的准备好了,创业的机会就在眼前,只待放手一搏了。

2010-08-09

创业三年之2009年

Filed under: 未分类 — rocky @ 20:37

    公司在2009年继续以每年翻番的速度扩张,年末时在编正式员工数已经达到30人,加上合同工和实习生已经有40人了。各部门组织架构也已较为成熟,有组织明晰的研发/测试部门、产品/市场/销售/设计部门、运营部门等三大业务部门,加上行政/财务后勤辅助部门;以CEO、市场/销售副总、研发总监、副主编组成高层管理层。

    由于原CEO因故需在家较长期休养并之后离职,我从2008年11月就开始复任CEO,主要负责管理、行政、财务等工作。这一年的主要变化和成果有:

    1. 以运营部门为先行,推动所有业务部门实施了绩效考核制度。

    2. 与项目合作方共同商议决定,我5月份开始实际操作合作项目管理。在接下来的半年时间里,我主要推动了目标导向机制,以S.M.A.R.T.方式制定客观目标,推进产品管理、运营管理的考核。

    3. 2009年的项目目标成功达到,客户终验时又一次得到高层领导和项目组的极大肯定。项目在业绩也达到了相当的影响力和知名度。

    4. 完善财务预决算机制,制定可执行的预算表,加上员工信息管理、工资管理等,形成简单实用的内部财务管理系统。财务出纳机制基本定型。现金流情况也得到很大的改善,不再为生存问题时刻担忧了。

     5. 研发部门的两个研发组,加QA组,已稍具规模。技术总监一职在2009年4月开始也由专人担任,不再由我兼任。技术总监也是同学,是我少数几个比较看重的技术人才之一,由他掌舵技术部门之后我轻松了很多。

    这一年的主要问题有:

    1. 没有在大好形势下勇于拓展新的业务领域,并切实实施。每个稍具眼光的人都会指出公司的项目单一,但我们同样在最初就已意识到,但却像在温水里的青蛙一样没有把危机感真实地落实到现实中并转化为动力。我作为公司的CEO无疑具有不可推卸的责任。

    2. 高层管理层之间的沟通太少,公司核心层实际上可以说是一盘散沙,没有高效协作可言。

    3. 人员扩张使的同时,我开始完全放权给中层领导,按说在较成型的公司都是这样做的,但实际上创业型公司的组织架构应该更扁平化,这样才更利于巩固公司队伍,凝聚公司文化,提升决策效率。到后来有些员工我很少和他们谈话,有时候甚至连名字和人都对不上号了。

    4. 组织没有得到更优化配置,有因人设事情况。此情况出现在产品/市场/销售/设计部门,实际上该部门还负责了一部分的运营工作,如果不具体考察人员情况的话,会觉得很怪异。按此模式进行,该部门将有可能出现发展瓶颈。

    2009年华丽丽的过去,公司热热闹闹的包下一个咖啡厅办了年会,按例又请到了客户的高层领导到场给我们加油鼓劲。没吃多少东西,大家就纷纷过来敬酒,那天我喝醉了。

创业三年之2008年

Filed under: 未分类 — rocky @ 15:54

     2008年确立了与研究院长期合作的意向,我也找到了两个大学同学,以赠送股份拉入伙,这样我们三个人以一位负责技术,一位负责管理行政财务,一位负责市场销售的合作方式开始了公司的新的一页。

    起初三个人意气风发,各自在负责的一块领域拼搏,打算就此干下一番大事业来。2008年,我们的业务已从最初单纯的开发升级为开发、运营、设计、测试等较为整体的解决方案提供,业务水平也算突破简陋的小作坊而进化为稍正规的小作坊了;公司也形成了一定的文化特质:平等、活力、创新;与客户的合作关系进入热恋期,两方面的团队成员打成一片,工作进展顺利;公司的员工趋于稳定,人数翻番,当时的一些员工1年之后就上升为中层领导了,为以后的人力资源扩张打下了良好的基础;财务行政能力也得到了本质上的改善,有了专业的会计和专职的行政人员。

    但2008年也暴露出我们管理的问题来,我虽然之前做过高层管理,但基本可以说还是一窍不通。我觉得主要问题在于:

    1. 缺乏核心的领导者。按说我作为创始人和最大股东理应担负起这样的责任来,但我自知没有系统成熟的管理理论实践经验,在此问题上我退缩了,我担起了CTO和董事长的角色;然后因为我因为实际情况还是更有威望,而担任CEO的同学又太nice了,被我们两个性格比较强势的人压得无法正常行使CEO的权力来,最终使得他打了退堂鼓。

    2. 缺乏管理经验。三个人都没有经过系统成熟的高层管理培训,都在摸着石头过河。读个有用的经管课程对于成长为一个好的领导者还是非常必要的。

    3. 没有建立起良好的高层架构和沟通机制。三个人合作,在没有形成核心的状况下,职责定义不是特别明确,沟通协调起来颇为困难,每个人按照自己的处事方式随性行事,感觉有点一团乱麻,三个人无法形成合力。定期沟通会议也不能有效解决问题,经常对提出的一件事各持看法,吵吵个把小时,最后的结果就是此事由谁负责,还是让他自己决策,这样即使是个小事情也要耗费三个人好长的时间。

    但无论如何,2008年公司打下了一个较为良好的基础,上了一个台阶。2008年10月,公司也搬到了宽敞明亮的办公楼里,交通非常方便,正面就是燕京八景之一的蓟门烟树,几乎每个来访的客人都会站在会议室的落地窗前感叹环境真好。

创业三年之2007年

Filed under: 未分类 — rocky @ 12:46

    2007年7月一个机会使得我终于下决心从一个工作了5年的小外企离职。离任时,这家公司已然风雨飘摇,当时我任副总,说实在的,尽管有这样那样的外部因素,当时做高层管理的2年时间内我没有找到感觉,很多该思考该做的事情没有做好。有时间有心情的时候再好好写写那段经历吧。

    因为中移动研究院的项目契机开创了亿腾泰科公司,应该说比一些草根创业者幸运一些,至少在生存条件上来说相对有保障一些,但幸福也许是一样的,痛苦却各有各的不同。也许没有经历过创业的人很少会对创业的艰辛有那么深切的体会,为筹资四处举债度日,为节省每一块钱而殚精竭虑,顶着炎炎烈日去找办公地点,一有时间就得静下心来写代码经常写到临晨3点,这样的日子劳累的不只是身体更是精神。而就算对工商税务的老爷们可以忍受的话,连包括我对之颇有好感的招行在内的很多银行都还会嫌你的注册资金少而拒绝给你开户,这些让没有上百万资产或太子背景的我们受人前人后白眼之后只能学学阿Q了。幸运的是,我有一个贤内助,遇到了一个不错的客户,有好多同学朋友鼎力支持,前同事们也比较给面子,终于使得我历经艰辛后能够将公司的牌子竖了起来。

    2007年底我们终于有了相对不错的办公环境,尽管办公桌椅都是从旧货市场淘来的二手货,尽管办公室里冬天得用电热器对着背吹才能让人不用再裹着羽绒服在打字,尽管没有会议室开会得去避风塘,但是我们毕竟有了固定场所,不再是皮包公司了,不用在研究院的会议室打游击,也不用在平房里被巨大的蚊子叮咬,还申请下来税控机可以开发票了。07年的项目成功完成,项目得到了研究院各级领导的好评。款项也顺利到帐了,甚至多给了十几万,当然我是好人主动给退了回去,呵呵。

    但到2007年底公司的几个前同事小伙先后各奔前程,我基本已是光杆司令了。

2010-07-11

通过SSH翻墙

Filed under: 未分类 — rocky @ 15:12

翻墙的方式有很多。第一篇章我们先来介绍下通过SSH翻墙。

SSH翻墙优势:相对比起TOR(洋葱头)翻墙,SSH拥有非常稳定的带宽与快速的登录。假使你拥有SSH账号,你将独立享受翻墙乐趣而不必担心会被封。相对于VPN,SSH拥有价格上的绝对优势,并且其仅仅代理浏览器和指定工具,不是全局代理,不影响即时聊天与游戏速度。

SSH翻墙缺点:相对比起TOR(洋葱头)翻墙,其可能不是免费的,网上出现的免费用不了几天就会被封。速度取决于你的网络与代理服务器的速度,因此使用前强烈建议先试用。其因不同浏览器有不同的设置,初次使用需要相应设置。

首先你需要下载 PLINK( 本站下载官方下载 )

在下载来的 PLINK.EXE 目录下创建一个文本文档(本地下载版我已创建),命名为 pLink.bat 用记事本打开,输入以下内容:

plink -N Username@qiang.be -pw Password -D 127.0.0.1:1080

Username:为你的SSH账号
qiang.be:为服务器域名或IP
Password:为你的SSH密码

运行 pLink.bat 批处理文件(首次使用选择 Y 回车)

出现以上图面即SSH登录成功。该窗口不能关闭。

OK,现在你使用Firefox可以顺利翻墙了。

在我们在Firefox地址栏中,输入 about:config ,点击  我会确保小心,修改里面的一项数值,改成 network.proxy.socks_remote_dns=true 就可以了。

 

配置Firefox浏览器

如果你正使用Firefox 浏览器阅读本文,点击此处一键安装代理服务器管理扩展。

免费SSH帐号

立即安装,并重新启动Firefox。在弹出的对话框中选择gfwlist (P.R.China),确定。

免费SSH帐号

Firefox 主界面右上角新增“福”字图标,点击“福”。

免费SSH帐号

下拉菜单选择 “代理服务器 – 编辑代理服务器”。

免费SSH帐号

按图片内容修改 ssh -D一栏的配置参数。

image

还需在下拉菜单选择 “代理服务器 – 选择代理服务器”,使用ssh -D作为代理服务器。

image

 

就先写到这儿吧,有空再好好整理整理有关翻墙的内容。

本文参考了http://qiang.be/?p=1

2009-12-31

别了2009

Filed under: 未分类 — rocky @ 17:14

    2009的互联网越来越走向局域网的路子了,GFW越来越有劲了,绿坝粉墨登场,现在开始搞域名白名单了。facebook、picasa、twitter纷纷被墙,tor翻墙也越来越困难了。今年国内的网站最风光的应是开心网了吧,发展势头超强,恭喜炳皓啊。

  公司的人数已达40余人,略超出了年初人员规划。组织架构稳定了,运营模式确立了,流量达到了年初的目标,也开始产生收入了。今年的成绩为明年扩大营收打下了很好的基础。

   接近年底的时候进股市了,还想起08年初预言08年要跌到1600,等稳定半年入市。现在进去比原计划晚了半年,看K线图好像是错过了好时机。不过股市这东西,一定不能看的太重,要不然不是你在玩股,很可能是股玩了你啊。

   最大的事情就是儿子希希终于出生了,正一天天健康快乐的长大,每天下班回家抱抱儿子感觉可幸福了。

   2010年是成长的一年。

2009-08-17

农民开拿退休金

Filed under: 未分类 — rocky @ 14:56

2009-08-07

谈谈工作环境的计算机安全须知

Filed under: 未分类 — rocky @ 13:43

  经常能听到周围的同事中招的噩耗,其实电脑安全并不难,如果你做了10%的努力,就能避免90%的中招风险。以下是我的一点小建议:
    1. 如果可能的话,建议用linux作为工作环境,推荐Ubuntu,工作用是可以胜任的。相信gnawux同学就基本不会中招吧。

    2. 安装系统时不要连网线,安装杀毒软件和防火墙,关掉不必要的服务(建议禁用Alerter、ClipBook、Computer Browser、Messenger、Telnet、Terminal Services、Workstation),用ghost备份。

    3. 联网升级杀毒软件。

    4. 到mozilla官方网站下载最新版firefox。除非万不得已(如一些网上银行),不用IE访问任何网站(也许移动Labs除外?)。

     5. 不要安装其他软件,如果非得安装就一定要到官方网站下载,不要搜到一个下载的网页就迫不及待打开下载安装,那样会很快上天堂的。

  另外可参考我以前的一篇文章:关于计算机安全。记得用firefox打开任何网页!

« Newer PostsOlder Posts »

Powered by WordPress