自我节奏的调整

最近在做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模块的单元测试对于并发测试的需求非常旺盛,希望以后能在代码中处处看到它的使用。

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

【微信运营】“好多肉”公众号运营小感

运营“好多肉”账号订阅号半年有余,并没有投入很大精力,但一直都在利于业余时间坚持着,并打算一直坚持下去。还记得当初给自己定下的目标是,能够成功认证,也就是完全依靠自己的力量攒够500个核心用户,现在离这个目标已经很近很近。从账号的申请到运营至今,有很多感想,raywill一直鼓励我将这信息的水珠收集起来,因为懒于动笔,一直拖延至今。今天提笔总结一下。

申请账号阶段:

1、微信号名字

1) 因为微信号的名字是申请了之后就不能修改的,所以名字一定要慎重考虑。最好是用户搜索多个关键词都能搜到。

举个简单的例子吧:你想做一个通过看美剧能学习口语的订阅号。那么起名时是不是能把英剧也包括进去,叫英剧美剧每日一句。这样不管用户是搜索英剧或者美剧,你的公众号都会出现在列表里,这样会增大你公众号被搜索到的可能性。

2)借用有名APP的名气。

我在申请这个账号的初期,只是想做一个垂直细分领域的小清新公众号。当时很快决定要不做一个多肉植物推广的微信吧,当时的APP Store上有一个很火的应用叫 好多肉。我就取巧用了这个名字。后来的运营过程中有很多用户都反馈就是因为他们用了那个APP所以才想到要来搜索一下看看有没有微信号的。

2、头像

头像就和人的脸面一样,是用户见到你的第一面。用一个能清新表达出你微信号运营内容和主题的头像是非常重要的。希望每个人都能在自己的头像上下功夫、多琢磨。而不是随便找一张图换上。

现在微信头像一个月才能更换一次,这一个月会让你流失掉很多用户,特别是现在同类微信号众多的情况下,用户第一眼的眼缘不好会非常快的就转向其他让他印象更深刻的微信号上。

头像最好概念简明、色块明亮,不要在头像上放太多字,缩小了之后用户根本看不清。另外,微信在公众号介绍页显示的头像是圆形的(如下图),在设计是要考虑,如果下方有文字,一定不要被遮盖了。

好多肉_20131101_111527

3、功能介绍

很多公众号对于功能介绍都不太重视。冷冰冰一句:XXXX品牌官方微信。XX语学习与交流。这对于用户来说都是废话。这种功能介绍都是很不亲切无法吸引用户的。

在功能介绍处最好能用概括性的话语说一说这个账号是做什么的,会推什么信息,文案风格可以灵活调整,用什么样的文案风格主要取决于你这个微信号的受众是谁。他们喜欢看什么样的话,好玩儿的?卖萌的?亲切的?有礼的?这部分也是需要好好思考和雕琢的。

4、被添加后自动回复

我建议每个账号都设计一点被添加后自动回复。这是一个非常好和用户发生交互的渠道,能刺激用户主要和你交互,最重要的是让用户感觉到这是一个会回复的账号,而不是加完了就完了。

以我自己的经验来说,设置了被添加后自动回复和关键词回复后,用户发起的主动交互明显增多了。

推送运营阶段:

1、推送频率

我当真见过每天一推的订阅号。以前和运营微信号的朋友交流,他们的意见是有这个功能干嘛不用。我自己的经验是:推送的频率应该和你账号本身的推送内容结合起来考虑。

另外,可以通过 微信平台的统计功能去仔细观察推送频率和图文转化率之间的关系。推得频繁图文转化率就一定高吗?推得少图文转化率就一定低吗?这个之间是否有严格的对等关系,每个人都可以去做做实验。

试试一个阶段内每天都推送,掉粉率和新增用户率是多少,然后试试每周定时推送两次,掉粉率和新增用户率是多少。数字是最真实的,后台的统计数据会告诉你多久推送一次最好。

特别是现在订阅号被折叠起来,用户完全可以不展开订阅号,不阅读你的文章。那么每天都推送,编辑成本和运营成本是不是会相应的提高呢?

2、编辑、分享

1)文章编辑

文章的长度在150-200字适宜,太长了会让人觉得厌烦。微信端推送的信息应该有碎片化和体量小的特点。字体建议加粗加大,字体太小会影响阅读体验。

编辑完之后,一定要反复测试,包括准备一个iPhone和Android发送到测试账号,预览整个页面。

要注意的点包括:是否有错别字、段落时间是否空行(建议段落之间空行)、是否对齐等。

我关注的很多微信号基本不注重图文编辑,从网页上复制到文本框里直接就发送出去。一篇文章里格式混乱、错别字一堆、颜色不统一。这种文章用户打开就关掉了,怎么可能达到有效传递信息的作用呢?

2)利用摘要

摘要是一个用户能够快速预览整个文章中心内容的地方。有些运营人员会直接复制文章里的半段话或一段话。用户看了一下,发现摘要部分都是牛头不对马嘴,就直接忽略了。

其实摘要部分可以好好编写一下,会提高图文转化率。

3)信息、互动、关系链

《社交红利》这本书里讲到:微信运营最重要的三要素是信息、关系链、互动。其中信息是运营人员来把握的,内容永远是王道!!请精心设计你的内容文案,不要随便摘抄、复制了事。只有持续的提供好内容才能吸引用户分享和转发。

互动是积极的回复用户发送的消息,刺激用户和公众号之间进行交互,以我的经验来说,我会认真回复用户的每一条信息,经常有用户反馈:也,居然会回复也。可见主动与用户互动、积极回复消息会带给用户很大的惊喜,提高用户体验。

关系链是指如何积极引导用户把你推送的图文分享到朋友圈,可以在文章的末尾设置签名,引导用户点击分享按钮。

haoduorou_original

 

4)问卷调查、特色活动

好多肉运营以来举办过两次活动,这里表示惭愧,其实特色活动是一个很好的长粉渠道。简单讲述一下我发起的两次活动及活动给运营带来的影响。

– 问卷调查

53a793c4a30e24020d94574c084e_600_527_副本

在好多肉运营一个月左右,我做一次问卷调查,问卷调查的目的主要是想通过用户的反馈调整推送的内容。

到底给用户推什么?什么才是用户最想看的?我想这可能是每一个做运营的人都会提出的两个问题,并且大家都迫切的想知道答案。

我的建议是:先推送一段时间,积攒一定的用户。你都没用户,你怎么知道大家想看什么呢。一段时间之后,可以通过问卷调查的方式,寻求用户的建议和意见。

分享事实:在运营的初期,我推送的大多是多肉DIY、多肉种类介绍这种趣味性的小文,图文转化率并不高。通过问卷调查,我发现其实关注账号的人大部分都有自己种植多肉,并且他们其实真正想了解的是关于多肉种植和多肉养护方面的文章。而初期我以为这些文章用户会觉得比较枯燥无味,所以几乎没有推送。通过这次问卷调查,我及时调整了图文推送的内容,图文转化率和分享率都有了明显的提升。

具体做法:我由原来的仅仅推送多肉DIY和多肉种类介绍转变为将推送的文章分类。分为多肉养护、多肉种植、多肉介绍和多肉DIY四个栏目。

这样做的好处是:第一、分栏目会让用户对你推送的内容有更明确的主题划分;第二、增加用户想看的内容,极大的丰富了推送的内容;第三、通过在主题前添加栏目的做法,让用户感觉到他们提的意见和建议是有用的,会极大的提升用户对账号的好感度。

-特色活动

捕获

 

第二次活动是做了一个回馈用户的活动,因为我发现很多种植多肉的朋友都有这样、那样的关于多肉如何种植、怎么才能让多肉更健康成长的问题。

所以我利用一个周末的时间,开展了一个“你问?我答!”无偿针对用户提出的各种有关多肉的问题进行回答。

这样做的好处是:第一,积引导了用户和你交互;第二、根据用户提出的问题,可以有效的总结出用户最关心的问题有哪些,下一阶段可以重点推送这些方面内容的文章。

 

分享数据:

用户:拥有优质用户485人,全部为自然增长用户,没有花一毛钱买过垃圾粉。

图文转化率:图文转化率稳定在35%-40%,每月会推出一个当月的多肉植物种植管理指南,这个系列的转化率在80%-92%。

很好奇其他账号运营的图文转化率情况。

 

利用业余时间运营着这个小小的微信账号,每个周末都有半天时间会认真的选择素材、处理图片、测试效果。每天习惯性的打开微信后台查看统计数据、回答用户提出的问题、策划下周要推送的内容。我想我会把这件事坚持下去。我仍然没有忘记我最初定下的那个小小的目标:在广阔的社交海洋中打捞到属于我的那500颗星。在这个过程中学习到很多,收获也很多。在社交网络如此红火的年代,能够加入其中,感受着互联网带来的惊喜是一件非常快乐的事。