从浙大饮水机想到的

之前突然看到有人在 V2EX 上面谈论饮水机开微博的讨论,自己点进去看了一下,的确挺有意思。大概是一个浙大的研究生因为自己每次饮水机没水都没有提醒,导致加热设备空转,同时还可能屡次碰到没有热水的情况,自己很闹心(原因是因为我当时看到它发微博就只有两个事件,一个是没水了,一个是水烧开了),同时又喜欢玩微博,喜欢编程,还同时懂集成电路设备,就整了这么一个——应该是一套系统。

我看的那个时候只有几千粉丝,当时就觉得有些不可思意,从宣传的角度来说,在一个普通微博开通后——即便是机器猫小叮当,短短的3天时间内,粉丝暴增几千,而且不通过发夸张、搞笑、暴力、xx、心灵鸡汤微博,大量@别人,也不通过刷粉买卖,实在是有些蹊跷。而且,在发微博的第2天,就在V2EX,还有新浪微博某个醒目的位置出现了,更让人匪夷所思。

且不说他实用性有多大,至少不够惊世骇俗,因为和ifttt比较起来,还是有些太过于小家子气了,且貌似没有任何商业价值。所以在没有任何判断证据的基础之上,我凭直觉相信这又是一次可以认为炒作。

说了这么多,我的目的倒不是反对什么,而是在思考——这次应该是双赢。

继续阅读

关于语盒的收费方式

语盒的收费方式其实很简单,按推送账户的数量时间收费,多一个推送用户,使用时间多一点,就要多交一份钱,如果你中途觉得不好,行,自主降级,然后把升级的费用转化成时间,加到账户上面去。

用户等级 一个星期(168小时) 一个月(30天) 一个季度(90天)
VIP0 ¥2 ¥8 ¥20
VIP1 ¥2 ¥8 ¥20
VIP2 ¥3 ¥12 ¥30
VIP3 ¥3 ¥12 ¥30
用户等级 推送账户数量 升级费用(一次性)
VIP0 1个有效账户 (默认)
VIP1 2个有效账户 ¥3
VIP2 3个有效账户 ¥4
VIP3 4个有效账户 ¥5

当然,如果你选择一次性支付一个月,要比每个星期便宜2天的费用;如果一次性支付一个季度,会比支付一个月便宜14天的费用,这个策略也是跟市场上学的:比如我去联通办宽带,如果年付,则比月付少两个月的钱,还不要初装费;买2L的可乐,总比600ml的可乐要的单位毫升的价格便宜,这个也是一样的道理,问我为什么?经济学俺不懂,但是知道通货膨胀,贬值……

之所以我还保留了星期支付的方式,不是因为代码不好改,或者说懒,或者说给用户一种某种意义上的“比较”(老罗在他的2010演讲中也说过这种“价格比较”),而是留给用户一种选择,而不是绑架用户。 继续阅读

关于黑莓开发中的local i18n的冲突问题

昨天早上醒来,有人邮件我说,客户端报一个 错误 Uncaught Exception:java.lang.Error

我想,又是什么黑莓的问题吧,所以就草草的回复了这个事情,后来发现,报告的人挺多的,而且都是安装了新浪微博的最新的黑莓客户端导致的,这下紧张了,记得看《创业家》里面有一句话,”永远不要和(新浪)微博竞争“,这回不但竞争了,还TMD冲突了,这下玩完儿了。

火速解决这个问题!首先是在模拟器上测试,立刻发现是

import net.rim.device.api.i18n.ResourceBundle;
...
public static ResourceBundle sm_local = ResourceBundle.getBundle(localResource.BUNDLE_ID, localResource.BUNDLE_NAME);
public static final String[] fsm_apnListString =
{
	sm_local.getString(yblocalResource.APN_LIST_NULL),
	sm_local.getString(yblocalResource.APN_LIST_CMNET) 	+ " cmnet",
	sm_local.getString(yblocalResource.APN_LIST_UNINET) 	+ " uninet",
	sm_local.getString(yblocalResource.APN_LIST_3GNET) 	+ " 3gnet",
	sm_local.getString(yblocalResource.APN_LIST_CTNET) 	+ " ctnet",
};

其中运行到第一个就不行了,调试的时候直接代码中断到这一行,继续运行,就抛出所谓的 java.lang.Error 异常了。我第一感觉就是,和新浪客户端的ID重复了,只是一种感觉,没有依据,就找到 localResource.java 这个文件:

public interface localResource {
    // Hash of: "local.local".
    long BUNDLE_ID = 0xxxxxxxxxxxxxxxxL;
    String BUNDLE_NAME = "local.local";
...

把这个值告诉了开发新浪微博黑莓客户端技术人员,因为我没有看到那个 // Hash of: “local.local”. 的提示,认为RIM会把把包的资源路径加入进来参与生成的,比如什么com.yuchting.yuchberry.client 等等字符串标示。

但是惊人的是,在新浪技术人员的查看下,发现咱两的ID是一致的,当时我就蒙了——怎么可能?后来想到的原因,很可能是他们新加入的模块的开发工程师和我看了同一套教程,都命名为 local.local 那么这个字符串的标示的hash不就一样了么?

于是吧local.local 换成了 local.yblocal 就OK了,大量的替换,svn的版本处理迎面扑来。

RIM 的RUNTIME 没有android context 的概念,完全都是JVM大环境下的操作,读取另一个已经注册的资源的不存在的符号,当然会over。不管怎么样,这个事情在我积极的更改、发布之后就告一段落了,虚惊一场,虽然最后在晚上10点发布完毕之后还出了点小插曲,总归于要结束了,可以好好睡一觉了……

第二天……

可是事情还没有完,早上起来,发现微博粉丝多了40个,下午到了60个,注册用户两天上升100多个,同步数稳步上升,好现象!很happy,准备把安卓版本的上传附件功能写完了。

随手打开GAE,靠!发送邮件的 quota 又到限制了,刚刚才把GAE的Billing关闭(不然每周$2.1,实在受不了),总不能让我又开开吧,昨天才研究了php怎么发送邮件,今天就要赶上自己写一个?为啥都在我刚刚研究的时候就出问题了呢?谁给我测试时间?

急急忙忙的吧php的发送邮件功能添加上,前两天才研究的BlueHost 邮件系统,开了一个邮件帐户 noreply@yuchs.com ,php发送邮件代码,立刻派上用场,直接上!

<?php
	if(!isset($_GET['to']) ){
		echo "<H1>403 FORBIDDEN</H1> ";
		exit;
	}
	
	$to		= $_GET['to'];
	
	if(!preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $to)){
		echo '\'' . $_GET['to'] . '\' is not mail address form.';
		exit;
	}
	
	$from	= "noreply@yuchs.com";
	$reply	= "yuchberry@gmail.com";
	
	$messageID = '<' . rand() . '-' . date("Y_m_d_H_i_s") . '@yuchs.com>';
		
	$headers  = 'MIME-Version: 1.0' . "\r\n".
				'Content-type: text/plain; charset=utf-8' . "\r\n".
				'From: '. $from . "\r\n".
				'Reply-To: '. $reply . "\r\n".
				'Message-Id: '. $messageID . "\r\n";
				
	$subject = "=?UTF-8?B?".base64_encode("语盒官方服务提醒")."?=";
 
	$content = '你的语盒使用时间已经快到了,稍等一段时间后服务器会暂停服务。'."\r\n".
				'你可以登录官方网站 http://www.yuchs.com/ 进行时间的充值,继续使用,或者查看FAQ,进行自架服务器使用。' . "\r\n".
				'感谢你对语盒的关注和支持!' . "\r\n".
				"\r\n".
				'语盒开发者敬上!';

    $result = mail($to, $subject, $content, $headers);  
	
	if($result){
		echo 'OK';
	}else{
		echo 'Failed';
	}
	
?> 

这段代码是不是要求在自己的web主机上开启一个邮件帐户,我现在还是不知道,反正我是在web主机上加了一个邮件帐户 noreply@yuchs.com ,总之能解决问题就行。乒乓五四又一天过去了,终于,帐户邮件又能发送了。

哎,一天的劳命哪~

“不可避免”的Jobs

【转自 点点开发者日志

如今在IT界,不知道乔帮主的,几乎很少了,一般闲聊,或者争辩的时候,总会拿出乔帮主的某某经历做自己的论据;或者看着昂贵 iphone 成为街机,等等等等,都无法避免他的影子出现在自己的周围,就像那天看见因为乔布斯辞职,新浪微访谈中,有人问周鸿炜,你认识乔布斯么?你见过他么?他对你产生影响么? 周说,每个人都无法逃避他的影响。

今晚不想看书,不想写程序,刚看完乔布斯的斯坦福大学演讲,比较激愤。

之前,我对乔布斯的唯一印象,就是《Pirates of Silicon Valley》里面那个追求自身价值近乎于宗教般执着的疯子,比片子里面阴险的比尔盖茨更让人受不了。我倒是比较崇拜沃兹尼克,一个技术达人——当时我的人生定位就是做一名技术,或者说,一个木匠,一个工程师。或许是那部片子拍的比较片面,而且是1999年拍的,那个时候没有ipod,没有iphone,ipad等等,也许拍的不是很全面吧。

之后,我对他的就不怎么了解了,今天偶尔看到他的演讲,说说我的看法。

首先是演讲的声音,我之前总以为,老大应该是比较沙哑,具有穿透力的声音,该像《教父》里面的马龙白兰度那样让人觉得害怕,敬畏。还有之前唯一亲眼见过的身价过亿的大Boss,也是声音洪亮,低沉,让男人皮软,让女人撒娇。可是乔布斯却是比较中性的声音,和他的白胡子秃顶完全不相匹配,那应该是年轻人的幼稚的声音,应该是小伙子的表白的声音。这点,我相当无法理解。

然后是“演讲稿”,的确,乔布斯作为一个大学毕业的邀请发言嘉宾,必须得有像样的演讲,那么演讲稿必然不可少;要在短短的十几分钟内把自己的人生前面有价值的东西告诉后生们,必须得有长时间的准备,必须要演讲稿,这点无可厚非,但是——这里的“但是”转的有点大,我曾经参加过国内两所顶级大学之一毕业典礼,典礼上也邀请了一名校友企业家,也上台做了十几分钟的演讲,没有演讲稿,没有层次,没有组织,一顿乱侃,说了自己的找投资的经历,说做技术就得到处让人知道你做的技术,不然人家打电话相互询问好友是不是可以投资的意见的时候就不知道你的价值,云云,我是如此的仔细倾听这个演讲(因为我是旁听的毕业典礼,所以很仔细地听),都只能听出这一点点他自认为有价值的内容,其他的同学们呢?好了,不说了,不然晚上要喷火,睡不着了。

再者是演讲内容,不得不承认——相当精彩,相当让人有回味的余地,我得出的结论就是3点:

  1. 不能逼迫自己从事不喜欢的事情,做自己喜欢并且认为有价值的事情。
  2. 与死神见一面之后才能懂得更多
  3. 成为一个饥饿的疯子,疯狂的向未知领域觅食

这些都是在各种励志、创业的期刊书籍里面常见得到的,乔布斯巧妙的将其结合自己的经历,再说一遍,非常具有说服力。当你看得这些书,这些演讲越多的时候,你就难免会发现他们相互关联的地方,再听,就都一个样了,然后,就会发生共鸣,共鸣,就会模仿着去做。

也许,人生就是在学习、模仿之中成长,只不过在最辉煌的时候,做出了那一点点创新,之后,很多人都因为那些创新而记住了你,然后你又重新被人学习、模仿,然后创新,万物轮回。

乔帮主,一路好走,你当初所说的改变世界,你已经做到了,现今人们几乎无法避开你所带来的影响了。

PS:写完这个日志之后,老乔竟然挂了,哎最后一句“一路好走”实在不吉利。

第一次团队会议

【转自 点点开发者日志

前天晚上,也就是2011年的8月19日的晚上,我和团队一起通过YY畅想了一下未来。

没错,我在画饼,因为自从语盒研发加入两位团队成员以后,就不是在为自己一个人负责了,而是为了了整个团队。之前我一个人,很自由,因为我喜欢编程,也喜欢写完程序后,很对人因为这个产品而感激我的那种奇妙的感觉,哪怕我不要钱也会干,也的确到目前为止,赚取的费用完全交给了主机出租商,或者买了开发机,所剩不多,我等于没有拿到一分劳务费,就仅仅自己爽了一把。

可是现在不同了,因为我一个人无法画出很好的UI,必须请人帮忙,这个时候我又没有多少钱可以支付,只能给他画饼;我一个人也做不了论坛,网站,多平台等等,都需要人来帮我,唯一的办法就只能是画饼。

画饼的过程是相当刺激的,相当有迷惑人的,就像吸鸦片,可是带来的后果,如果没有达到预期的目标,可以想象,是更加的失望,更加让人觉得我这个人信誉全无。

也就在同一天的上午,刚刚经历过自己的第一个团队(公司)被全权收购,老板兼创始人成为了同事,一起划到新公司的名下,还好,名字没了,团队还在。我本来很想写一下自己从一开始进入公司当萝卜,再经历过一次性涨一倍的工资的辉煌,再到最后被收购的全部过程,可是,提起十指,却不知如何说起。

正所谓成功的经验都不同,失败却都差不离,但此时一时很难想起,到底有哪些问题的存在,哪些根本性的问题导致公司最后的散去,市场变化?产品无创新?这些都无法一一列举,但有一个原因却一直提醒着我,创世人自身的屡次判断失误和不作为,是导致最后崩溃的最最重要的原因。

我并不是之前团队的创始人——连之一也不是,所以我可能无法了解到,这些判断的失误,是什么最终导致的,可是他的不作为,我是看在眼里,力荐过几次,都没有凑效。正所谓:

创业如逆水行舟,不进则退!

时刻地提醒自己,如果你不想踢他个10比0,那么你连赢这场球的机会都没有——也许就是那种“置于死地而后生”的悲凉之苦吧。

语盒团队阐述了每个人的创业原因,阐述了对于未来3个月的期望,同时小小的争论了一下关于盈利模式,或者说商业模式的制定,有些所谓的创业经教导我们说,在创业之初,就应该把商业模式想好——不是找VC都需要一个神马《商业计划书》么?但是我现在还真的找不到一个固定商业模式,能够从头到尾的指导一个团队从小到大。但团队成员或许更加看好这个东西。

是找VC,还是做产品研发?是拿个小的基本收入,还是饥饿的度过艰苦的研发初期?

很难否定,这次创业,不会是从上一个失败走到另一个火坑。也就不乏新团队的第一次谈话从最初的商业模式,找到一个靠山VC之类的话题说起——拿着商业模式+产品,去找一个VC,然后把钱忽悠到手,拿着牛逼的工资,做着自己喜欢的事情。

但是直觉告诉我,这个现在行不通,不用别的什么理由。

那种“悲凉”的感觉又从心中泛起。自从看过《亮剑》(小说版),《狼图腾》,《乔家大院》,《我的团长我的团》,《再见萤火虫》等等一些列能够人无法回首的小说电影之后,一颗孤独、悲凉、壮烈的精神种子就在心中种下了,我自己的心提供了土壤,它在茁壮成长。

总会想到失败,总会想到一个人在很小的房间里面蓬头垢面的开发,总会想到吃着馒头喝着粥,总会想到老婆离我而去,总会想到自己生病之后拼命的争扎……没有万人空巷,没有欢呼一片,更没有奔驰宝马惊涛骇浪。

哪怕让父母真心的开心一次都可能成为奢侈的愿望。那个在《狼图腾》中出现的断臂滴血怒视猎人的狼,一直出现在我的脑海中,那个真的是我自己的命运?

天道酬勤,别无他法