分类目录归档:快乐人生

商业的秘密

最近发生了一些不大不小的事,老余说你应该写一写留作纪念,想想也是,站在黑漆漆的电脑屏幕前洞察到的人性,当然值得大书特书。

具体事情按下不表,得出的经验如下:

1、洞察人性最好的方法就是杀入商场,没有什么比利益的诱惑更能激发出人性的黑暗面。

2、天底下没有永远的朋友或永远的敌人,你看好的背后可能捅你刀子,你憎恨的也许反而有做事的边界。都不重要,重要的是你要想好自己的底牌和后招。

说白了,一切都是博弈。你推我挡,玩得一手好太极,不动声色之下牢牢握住自己的底牌和后招方为上策。

3、做人不能太贪婪,太贪婪什么都得不到,做人也不要太聪明,聪明反被聪明误。

4、凡做过必留下痕迹,墨菲定律是对的,你害怕它发生的往往最终会发生,所以做坏事之前自己先掂量掂量善后能不能做好,否则干脆别做。

5、渠道的力量不可忽视,不会借助别人力量来做事的人做不了大事,也永远无法成功。

 

【Photoshop】PS习作

自学Photoshop已经有一段时间了,将一部分习作整理在此。这些图片分别应用在了我自己的淘宝店铺,以及自己独立运营的微信公众号“好多肉”中,虽然还都比较简单,但是还是很自豪滴~嘻嘻~

Aliexpress 速卖通店招(自己开的店铺):

Dazzling_earrings_3x1

 

discounts

模仿的天猫双11专题页头

x11

自己运营的微信公众号“好多肉”做活动时做的宣传图,运用于文章封面:

好多肉

开奖啦

帮一个法语老师做的法语在线课程宣传图:

TCF

有需要psd源文件的同学可以在文章评论里留言哦~~~

 

 

 

【Photoshop】2014年12月3号!一个值得mark的日子!

老余说今天值得记上一笔,因为我人生中第一次用技术赚到了钱!实实在在的,用自学了好久的Photoshop帮别人做了一张banner图。

吭哧吭哧的做了2小时,得报酬50,不多,但足以让我乐了个半死。持续学习,并有产出,产出还有人愿意商用。这真是世界上最快乐的事。

有图在此,纪念我的第一次!

小明明banner

为谁而生

一个企业,首先要知道的是为谁而生。企业的直接客户是谁,潜在客户是谁,客户的特征是什么,这是否是一块盐碱地,还是一片蓝海?

即使是传统成熟行业,作为一个新入者,如果他还有所追求,为谁而生这个问题一定是淌出来的,而不是想出来的。

不怕路远,路难,方向要对。为谁而生这个问题想对了,路就走对了,企业的价值观也会依附于它。而这个问题想错了,企业之路必然会更加崎岖不平。

X毕业一流大学,光学专业,从事的是照明行业。他的企业之路颇有意思。2年前他想做一件照明领域的工具产品,提供给别人用。却又发现如果做出来了,用户在哪里却不知道。于是转型,借着微信的东风专注于创建照明领域的内容开发,主要就是通过微信公众号,结合志愿者模式做内容传播,前半年主要靠自己,后来逐步有了影响力,开始有大量志愿者通过公众号平台聚集到一起,从事更多翻译和创造性的工作。有了这个基础,事业开始步入正轨。
照明行业,聚集了众多中小企业,从上游芯片厂商到中游设计到下游施工队,整体比较浮躁浅薄,国内产业以抄袭为主。鲜有人静心想为行业做点什么,内容贡献就更不用提。这便是X的机会。
建立行业影响力后,这些中小企业就增加了一个媒体渠道,这时候公司就能够有一些基本的现金流。但是,仅仅是媒体渠道,还不足以让体现一个公司的理想,一个有理想的公司,应该是能够变革行业的。下一步怎么走?玩法很多。

Hello!Nepal!

从尼泊尔归来已经快一个月了。我和raywill都没有撰文记录一下,实为可惜,在尼泊尔发生了几件有意思的事儿,记录在此:

1、在加德满都经历了第一次停电,后来才知道尼泊尔并没有自己的电力系统。这个国家的电能由印度供给,基本属于印度一拉闸,这里就完蛋的状态。尼泊尔每个区都会在每个时段定点停电。尼泊尔的每个旅馆都会在贴上旅客须知告知大家:抓紧时间充电哦~

2、尼泊尔所有的路都没有红绿灯和指示牌,那么是否会出现交通堵塞呢?当然了!想什么呢你,当然会堵塞,可是有意思的是,不管路上怎么赌,我都不曾见过一个尼泊尔人生气,骂街,吵架的。大家永远乐呵呵的在灰尘漫天,拥挤不堪的路上奔驰。

3、在加德满都逛猴庙的时候我遭遇了惊醒一幕,被一个猴子狠狠的抓了一把背,导致直到现在背部还留着一道特别醒目的大抓痕。因为这件事,我和老余还体验了一把尼泊尔的医院。被抓的当下老余猴子身上带有病毒,坚持让我去医院给医生看看,我们在好心肠的旅馆前台小哥的带领下,杀到了一个看上去像烂尾楼的建筑门口。我和老余面面相觑:这能是医院?Bingo!这里就是如假包换的医院了,我心里一阵嘀咕,这个烂尾楼一样的地方能给看好么,事实证明,花了不到5块钱人民币买了一针疫苗,在众目睽睽之下,医生充满鄙视的给我打了一阵,她心里一定在想:不就给猴挠了一下么,有什么好来医院的!小题大做!后来我们才知道,尼泊尔的医疗条件很差,医疗系统还处在十分不健全的时代,这个被我瞧不起的烂尾楼已经是加德满都很不错的公立医院了。医院里没有一个人会说英语哦~感谢当地热情的大爷大妈帮我和老余翻译。

4、在博卡拉登山经历了毕生最狼狈的时刻,在大暴雨中浑身湿透手脚并用的爬山,我都很奇怪我们居然都没有滑下悬崖摔死。一众人都冷得浑身哆嗦,老余买了一瓶威士忌,每个人都猛灌了几大口,活过来了。

5、头一次尝试在海拔3000米洗冷水澡,绝对的清新亮,透心凉。最后都不知道在干嘛了,听着自己上下牙齿的磕巴声,面色发白的冲出洗澡间,居然也就没有感冒,不知道是不是那针猴疫苗的功能呢?

6、在博卡拉的lakeside遭遇了一大群中国人,导致我一直有错觉我是不是在颐和园泛舟。

自我节奏的调整

最近在做OceanBase RootServer重构后的测试,主要测试工具是用我们牛逼QA开发出的obtest神器。

测试结果总是不太稳定,各种细节错误且不完全复现,很耗人。导致积极性下降。

调整策略:测试期间给自己安排一些优化/重构的活儿,穿插着做事情。

自主做事最精彩

写了两年半的OceanBase,知识体系却依然没有完善,思考原因:缺乏实践。OceanBase中大家都是螺丝钉,各自负责一亩三分地,别人地里种了什么虽然能看个大致,比如施的什么肥,打的什么桩,搭的什么架子,种的哪种秧,但若问为何是这种肥,怎么非得打个桩,架子斜着搭,却又种南瓜秧,则是问着我了。知其然,不知其所以然,是学习OceanBase的最大的难题。

企图从分析源码的角度来体会作者意图的方式失败了。总是不得要领,收益甚浅。

还是祭出老办法:好记性不如烂笔头。动手写码,写一个简单一些的NoSQL系统出来。俗话说,麻雀虽小五脏俱全,只要这个系统能完整做下来,一定会受益甚丰。

于是,MacrayKV诞生。取这个名字是因为这个项目带上了Macduan学弟一起做,我的id是Raywill,俩名字一凑,macray,读起来还蛮上口的。KV则表示key-value存储的意思。就这样了。

没多少天就发现,自主做事最精彩!创新的激情在自主做事的情况下能得到最大激发。比如今天:

基于tcmalloc写了一个线程安全的全局内存分配器,写完之后必须测试一下。为了测试线程安全的特性,必须使用多线程编程。淘宝多隆写的tbsys系统库提供了比较好的多线程封装,用起来已经比较方便了,但在测试代码中多处用多线程时则会发现有大量的冗余代码。每一个需要并发的代码片段都需要创建一个类和一个回调方法,把并发的代码填在回调方法里面。这么做有两个坏处:(1)打乱了测试代码的连贯性。 (2)代码冗余不易维护。(3)还得记忆多线程封装库的用法,我记性太差,每次都要查。

今天早上突发奇想,能不能有一种类似intel #progrm parallel这样的directive呢?这种想法很大程度上是受了前不久coolshell上《数据即代码:元驱动编程》这篇文章的影响。摸索了三十分钟,一个C++的宏方案出台,相当好用:

TEST_F(ObTCFactoryTest, mt_basic_test)
{
  // 第一次并发测试
  BEGIN_THREAD_CODE(my_run, 50)
  {
    for (int i = 0; i < 1000000; ++i)
    {
      Base *b1 = base_tc_factory_t::get_instance()->get(0);
      ASSERT_TRUE(NULL != b1);
    }
    base_tc_factory_t::get_instance()->stat();
  } END_THREAD_CODE(my_run);


  // 一些同步测试代码
  // put your code here


  // 第二次并发测试
  BEGIN_THREAD_CODE(my_run2, 50)
  {
    for (int i = 0; i < 1000000; ++i)
    {
      Base *b1 = base_tc_factory_t::get_instance()->get(0);
      ASSERT_TRUE(NULL != b1);
    }
    base_tc_factory_t::get_instance()->stat();
  } END_THREAD_CODE(my_run2);

}

其实现也是极简的:

#define BEGIN_THREAD_CODE(class_name, thread_count) \
  class _##class_name : public tbsys::CDefaultRunnable \
  { \
    public: \
    _##class_name() { _threadCount = thread_count; } \
  void run(tbsys::CThread *thread, void *arg) { \
    UNUSED(thread); UNUSED(arg); \

#define END_THREAD_CODE(class_name) \
  }};\
  _##class_name my_##class_name; \
  my_##class_name.start();  my_##class_name.wait();

 

more code details here

然后,我就把这个方案移植到了OceanBase,得到了@郁白 的大力赞扬。OceanBase UpdateServer模块的单元测试对于并发测试的需求非常旺盛,希望以后能在代码中处处看到它的使用。

希望自己坚持下去,马上做,做精彩。

单双号

2013年10月18日起的3天,北京实行更为严格的机动车限号规则:单双号。雾霾已经来临,就在外面。200米对面的央视大楼轮廓若隐若现,如梦如幻。

9.16日到10.7日都是在家度过的,嗓子不适问题基本消失。如今,雾霾笼罩了北京,我的嗓子又逐渐开始不适起来。这是体质问题,也是体制问题。格局一旦形成,它带来的后果是必然的。所以,对于我们年轻人来说,“布局”才是最重要的。它耗费不了多少时间,却能影响一生。然而,如何布局?眼见利益、长远利益平衡博弈而已。

号外:团队进入备战状态已经1月有余,每年一次的双十一大考,何时从容应对?大约是因为有需求才有动力吧。平日里做功能,临考前做性能,跟高中时候的考试有几分相似呢。不过,高中时候的优等生临考前却总是最轻松的。