2014年7月 ’ 的文章存档

Android几种推送方案的比较

当开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据。要获取服务器上不定时更新的信息一般来说有两种方法,第一种是客户端使用Pull的方式,隔一段时间就去服务器上获取信息,看是否有更新的信息出现。第二种就是服务器使用Push的方式,当服务器端有新信息了,则把最新的信息Push到客户端上。

虽然Pull和Push两种方式都能实现获取服务器端更新信息的功能,但是明显来说Push方式更好。因为Pull方式更费客户端的网络流量,同時也耗费电量。

在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相对比较麻烦。

在Android手机平台上,Google提供了C2DM(Cloudto Device Messaging)服务。Android Cloud to Device Messaging (C2DM)是一个用来帮助开发者从服务器向Android应用程序发送数据的服务。该服务提供了一个简单的、轻量级的机制,允许服务器可以通知移动应用程序直接与服务器进行通信,以便于从服务器获取应用程序更新和用户数据。C2DM服务负责处理诸如消息排队等事务并向运行于目标设备上的应用程序分发这些消息。

C2DM操作过程图:

111

但是这个服务存在一些问题:

1)C2DM内置于Android的2.2系统上,无法兼容老的1.6到2.1系统;
2)C2DM需要依赖于Google官方提供的C2DM服务器,由于国内的网络环境,这个服务经常不可用,如果想要很好的使用,App Server必须也在国外,这个恐怕不是每个开发者都能够实现的。
阅读全文

我眼中的各种编程语言

所有的编程语言我都讨厌。曾经我想自创一门语言,但我没搞明白到底需要一门什么语言,所以也从未开始过。 许多时候,你没法选择使用哪种语言。不管我在用哪种语言,我都尝试去接受它的优点和缺点。

Java

喜欢Java的人肯定喜欢打字。我指的就是敲打键盘上的键。你得不断地重复又重复。

设计Java系统的人是个疯子,他解决问题的方式就是,设计模式。如果你把设计模式看作是这个语言中解决问题的一种方式,那么你会发现Java里有许多这样的设计模式。

另一方面,Sun的这些家伙的确是费了点心思在Java规范上的,这使得它能运行在嵌入式系统上,所以这块我们还是坚持在使用它。我很难相信Python或者C在我的手机桌面系统上运行。

还有,那些个目录又是怎么回事?我必须得使用Eclipse,因为只有它知道怎么跳过那1000个字长的路径名。如果我在应用的同一个目录下放10个类,会不会 伤害到某些人?

C

C是精确的。当我用C写程序的时候,如果搞定了,我知道它是靠谱的。它就像是用一把小刷子在画一幅巨作。在这么详细的层面上写代码需要一种不同的心态。当你坐下来写C的时候,在动手之前你就得规划好到底怎么写。否则后面肯定得费很多工夫去改。

如果你的经验足够丰富,内存泄露这种事就不太会找上门。它的第二特性——malloc/free总是形影不离。你不能忘了任何一个。否则就像是忘了冲水或者关灯。你就这么做就是了。

有句话说得好,如果你打算给房子上漆,一把好刷子可远远不够。我猜你肯定想要个大滚轴。如果让我写一整个应用或者系统,能不用C的话我肯定不用。

C程序想要进行改动可得费老劲了。当我写算法的时候,我知道第一遍肯定是不会对的,所以我通常都先用Python写,搞定了之后再翻译成C的。

C++

它就是个有string类的C。同时还有数组,列表,队列等东西,你可以用它们来实现你想要的。一言以蔽之:别想着自创新模板。这太困难了。除了这个,C++还改良了一下C,用C++你可以写出非常不错的软件。它这个额外的特性使得它可以用于一些大型系统上,只要大家都还遵循同样的约束的话,难度还不算太大。

JavaScript

这是个没人喜欢的语言。不过它喜欢你。当你刚开始学习它的时候,你可能会写出一些非常糟糕的代码,把对象用作字典,别的对象作KEY,不过这样也是OK的,因为这些代码运行起来也没有什么问题,只要浏览器还支持JavaScript就好。

JavaScript没有连接器,因此所有的代码都共享一个命名空间,不过还好大家都知道这一点,所以还能一起和谐相处。

CoffeeScirpt

CoffeeScirpt是一个解释器,它将那些长得像Ruby的奇怪的语言逐行地翻译成JavaScript。它是一个拥有所有外来语法的JavaScript——括号,方括号,额外关键字移除。只有代码的基本含义还保留着。

CoffeeScirpt挺不错的。如果你要写很多代码的时候,它能让你提高至少25%的效率。你可以一次在屏幕上看到更多行的代码。

当你用CoffeeScript写代码的时候,你得时刻记住这是要生成JavaScript的。问题就在这。你得先去学习JavaScript。项目来的新人都得先学JavaScript,然后才能学CoffeeScript,最后才能去学习项目代码。

node.js

我也希望能爱上它。我觉得我给过它机会了。它的回调让我无法忍受。我知道会有这么一天,因为某个原因,其中一个回调并没有出现,然后我的应用就会堵在那一直等待。真是要了命了。

还有一点就是,它几乎没有内建任何东西。如果你要做某件事情,总是会有一大堆模块来实现这个功能的。该选哪个呢?如果出现问题了,哪个模块会有人来支持?

Scala

Scala是一门函数式,强类型的语言,它会编译成JVM代码。

我是在工作中学的Scala。有一家初创公司的生产系统用的是它,我是在后期才加入他们的。

这让我看到了Scala丑陋的一面:类型推导。类型推荐被它用到了极致。每个对象都有类型,不过想确定它是什么类型的,你得检查不同分层上的好几个文件才行。Scala也继承了Java的文件夹的坏毛病,因此你要查找某个类型的话得进入好几层目录才能找到对应的那个文件。

简而言之,Scala是极好的——对于那些最初的开发人员而言。新加入的成员为了熟悉现有的代码,得有一个很长的学习曲线。

Erlang

Erlang也是我曾经想爱上的一位。我真的努力了。它是一门美丽的函数式语言,它可以写出很精致的小模块,它们以一种精确的方式进行通信,你的系统可以运行10年以上,因为它能处理未知问题,如果必要的话还会重启,然后继续运行。

不过它的结构太复杂了。开发似乎要停留在伯克利发明socket的那个年代。当前时代所需的东西几乎一样都没有。为什么开发一个简单的WEB服务需要费这么大的工夫?

Go

Go很容易学习,对于新人而言也是如此。它使用40年前的语言概念来构建一个健壮的异步系统,但它让你能像写同步代码一样编程。你可以不费吹灰之力写出1000个可以安全工作的线程。

在库支持方面它仍需要改进。当我想做某事的时候,该用哪个库——github上2011年的那个,还是2013年开始的那个半成品?一个是官方主页链接的,不过它的官方主页看起来并不是最新的。好吧,我觉得我还是自己写一个吧。。。

还有,为什么追加元素到数组里也这么费劲?

Python

在Python里,不管你想做什么都会有一个对应的库,如果你用的是Linux,它绝对是不二选择,因为它可以一键安装。

如果你想做些数字处理或者科学运算,选择Python吧,你值得拥有。

Python中的字符串即可能是文本的也可能是二进制的,因此你得上来就学习下文本编码的东东。

Python 3

Python 3和Python有许多共同的特性,不过它却是门不同的语言。由于它比较新,因此支持的并不是很好。我也想使用它,不过总会有那么一个库,它是只支持Python 2的。

出处:deepinmind

英文原文链接

MySQL中like语句及相关优化器tips

背景

         MySQL中在对某个字段做包含匹配时可以用like。

先看这个结构和结果

 

CREATE TABLE `tb` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`user_id` bigint(20) DEFAULT NULL,

`title` varchar(128) NOT NULL,

`memo` varchar(2000) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `title` (`title`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

 

mysql> explain select * from tb where title like ‘%abcd%’;

+—-+————-+——-+——+—————+——+———+——+——+————-+

| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra       |

+—-+————-+——-+——+—————+——+———+——+——+————-+

|  1 | SIMPLE      | tb    | ALL  | NULL          | NULL | NULL    | NULL |    1 | Using where |

+—-+————-+——-+——+—————+——+———+——+——+————-+

1 row in set (1.65 sec)

 

由于like用的是 ‘%xx%’, 不符合前缀匹配的规则,因此用不上索引title,只能作全表扫描。
阅读全文

好消息!SAE开通备案服务啦!

告诉大家个好消息!各位翘首企盼的备案服务终于来了!SAE将成为业内首个支持备案的PaaS平台!

公测期间,将先给北京地区用户提供备案服务,其它地区年内陆续开通。

由于备案系统首次对外开放,大家在使用过程中难免会遇到一些问题,还请大家给予谅解,并希望您积极反馈。

备案服务详情:http://ba.sinacloud.com/

普通用户服务限额不超过5次,机构用户服务限额不超过10次,企业用户服务限额不超过20次,请大家根据自身需要申请机构认证,或提升账户等级到企业级。

1

转发微博通知http://weibo.com/1662047260/BeKFChzpq 还可赢精美抱枕哦!

感谢大家的支持!

四层和七层负载均衡的区别

(一)

  简单理解四层和七层负载均衡:

  ① 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器。

② 所谓的四到七层负载均衡,就是在对后台的服务器进行负载均衡时,依据四层的信息或七层的信息来决定怎么样转发流量。 比如四层的负载均衡,就是通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。七层的负载均衡,就是在四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。
阅读全文

Linux下取代top的进程管理工具 htop

一、htop 简介

This is htop, an interactive process viewer for Linux. It is a text-mode application (for console or X terminals) and requires ncurses.

Comparison between htop and top

  • In ‘htop’ you can scroll the list vertically and horizontally to see all processes and complete command lines.
  • In ‘top’ you are subject to a delay for each unassigned key you press (especially annoying when multi-key escape sequences are triggered by accident).
  • ‘htop’ starts faster (‘top’ seems to collect data for a while before displaying anything).
  • In ‘htop’ you don’t need to type the process number to kill a process, in ‘top’ you do.
  • In ‘htop’ you don’t need to type the process number or the priority value to renice a process, in ‘top’ you do.
  • ‘htop’ supports mouse operation, ‘top’ doesn’t
  • ‘top’ is older, hence, more used and tested.

htop 是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses。

与Linux传统的top相比,htop更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。
阅读全文

SAE月刊:第5期——掌上SAE(iOS客户端)来啦!

SAE月刊2014年第5期
Sina APP Engine 易用、可靠、高效、安全
本期特讯
新浪云计算公开课 掌上SAE(iOS版本)经过一段时间的内测后,于7月1日下午正式发布!掌上SAE是Sina App Engine推出的移动APP,目的是让用户更加便捷的管理应用,管理帐户信息,了解应用各项数据及应用服务状态。
掌上SAE(iOS版本)目前有四大功能:
1.应用管理;2.数据分析;
3.应用账单;4.通知提醒。
如果你已经使用过web版SAE创建过应用,可以通过掌上SAE更方便的实时监测管理应用。
安装下载掌上SAE后,即可获得1张2000云豆优惠卡!
Android版本还在开发中,敬请期待!
苹果官方下载地址,请点击
【详细】
前沿消息
2014可信云服务大会7月15日在京举办!

中国云计算的奥斯卡盛典来了!工信部、财政部、发改委、国采中心领导及各大云厂商领导将出席盛典,共话云计算未来。届时还将颁发“可信云年度云服务奖”。
新浪研发总经理@符庆明 先生、SAE总监丛磊先生@kobe 将发表主题演讲。
免费报名地址:
【详细】
深圳沙龙分享:《在云中移动–SAE》

7月5日下午,SAE团队中Web开发负责人朱明明@Lazypeople 为大家带来了主题为《Let’s run on SAE!》的精彩分享。在SAE平台上,应用程序易于构建和维护,并可根据访问量和数据存储需要的增长轻松扩展。目前还有开发者扶持政策,通过开发者认证后,每年最高可获得3600元的扶持额度。讲义下载:
【详细】
技术资源
SAE技术微博精选(最新)
1.《linux 信号量》
2.《用HTML5实现的各种排序算法的动画比较》
3.《从输入 URL 到页面加载完成的过程中都发生了什么事情?》
4.《《The best career advice I’ve received》
5.《MySQL在大型网站的应用架构演变》
6.《JavaScript Promise启示录》
7.《PHP程序的执行流程》
8.《免费学习工具:Online Python Tutor》
9.《XSS 前端防火墙》
10.《程序员必须知道的10大基础实用算法及其讲解》
11.《MySQL主从复制原理、主从复制(异步)、半同步复制、基于SSL复制》
12.《11 个很有用但鲜有人知的 Linux 命令》
13.《程序员必须进行的10项投资》
14.《Swift语言主流学习资源》
15.《在线学习Java免费资源推荐》
16.《10款效果惊艳的HTML5应用和源码》
17.《RESTful API 设计指南》
18.《Instagram的技术架构》
19.《JavaScript装逼指南》
20.《基于Java的简易缓存系统》
21.《如何写好CSS?》
22.《MySql注入科普》
23.《如何编写好的jQuery代码》
24.《优化临时表使用,SQL语句性能提升100倍》
访问SAE 扫描二维码 扫一扫,获取优质技术资源
关注微信:Sina APP Engine
关注新浪微博

如果您有任何疑问或建议,请联系我们,欢迎发邮件到saemail@sina.cn,或到开发者论坛交流反馈。

 

基于HBase的消息队列:HQueue

1. HQueue简介

HQueue是一淘搜索网页抓取离线系统团队基于HBase开发的一套分布式、持久化消息队列。它利用HTable存储消息数据,借助HBase Coprocessor将原始的KeyValue数据封装成消息数据格式进行存储,并基于HBase Client API封装了HQueue Client API用于消息存取。

HQueue可以有效使用在需要存储时间序列数据、作为MapReduce Job和iStream等输入、输出供上下游共享数据等场合。

2. HQueue特性

由于HQueue是基于HBase进行消息存取的,因此站在HDFS和HBase的肩膀上,使得其具备如下特点:

(1)支持多Partitions,可根据需求设置Queue的规模,支持高并发访问(HBase的多Region);

(2)支持自动Failover,任何机器Down掉,Partition可自动迁移至其他机器(HBase的Failover机制);

(3)支持动态负载均衡,Partition可以动态被调度到最合理的机器上(HBase的LoadBalance机制,可动态调整);

(4)利用HBase进行消息的持久化存储,不丢失数据(HBase HLog和HDFS Append);

(5)队列的读写模式与HBase的存储特性天然切合,具备良好的并发读写性能(最新消息存储在MemStore中,写消息直接写入MemStore,通常场景下都是内存级操作);

(6)支持消息按Topic进行分类存取(HBase中的Qualifier);

(7)支持消息TTL,自动清理过期消息(HBase支持KeyValue级别的TTL);

(8)HQueue = HTable Schema Design + HQueue Coprocessor + HBase Client Wrapper,完全扩展开发,无任何Hack工作,可随HBase自动升级;

(9)HQueue Client API基于HBase Client Wrapper进行简单封装,HBase的ThriftServer使得其支持多语言API,因此HQueue也很容易封装出多语言API;
(10)HQueue Client API可以天然支持Hadoop MapReduce Job和iStream的InputFormat机制,利用Locality特性将计算调度到存储最近的机器;

(11)HQueue支持消息订阅机制(HQueue 0.3及后续版本)。

3. HQueue系统设计及处理流程

3.1. HQueue系统结构

HQueue系统结构如图(1)所示:

v

 

图(1):HQueue系统结构

(1)每个Queue对应一个HTable,创建Queue可以通过Presharding Table方式创建,有利于负载均衡。

(2)每个Queue可以有多个Partitions(HBase Regions),这些Partitions均匀分布在HBase集群中的多个Region Servers中。

(3)每个Partition可以在HBase集群的多个Region Servers中动态迁移。任何一台Region Server挂掉,运行在其上的HQueue Partition可以自动迁移到其他Region Server上,并且数据不会丢失。当集群负载不均衡时,HQueue Partition会自动被HMaster迁移到负载低的Region Server。

(4)每个Message对应一个HBase KeyValue Pair,按MessageID即时间顺序存储在HBase Region中。MessageID由Timestamp和同一Timestamp下自增的SequenceID构成,详细信息参见《Message存储 结构》部分。

3.2. Message存储结构

Message存储结构如图(2)所示:

a1

 

图(2):Message存储结构

其中:

(1)RowKey:由PartitionID和MessageID构成。

  • PartitionID:一个Queue可以有多个Partitions,目前最多支持Short.MAX_VALUE个 Partitions。Partition ID可以不在创建Message对象时指定,而是在发送消息时设定,或者不指定而使用一个随机Partition ID。
  • MessageID:即消息ID,它由Timestamp和SequenceID两部分组成。Timestamp是消息写入HQueue 时的时 间戳,单位为毫秒。SequenceID是同一Timestamp下消息的顺序编号,目前最多支持同一Timestamp下 Short.MAX_VALUE个Messages。

(2)Column:由Column Family和Message Topic构成。

  • Column Family:HBase Column Family,此处为固定值“message”。
  • Message Topic :HBase Column Qualifier,消息Topic名称。用户可以根据需要将Message存储在不同的Topics之下,也可以从Queue中获取感兴趣的Topics消息数据。

(3)Value:即消息内容。

3.3. HQueue消息写入及Coprocessor处理流程

HQueue利用HQueue Client API写入消息数据,为保证消息唯一和有序,HQueue利用Coprocessor处理用户写入消息的MessageID,然后立即放入HBase MemStore中,使其可以被访问到,最后持久化的HLog中。具体的处理逻辑如图(3)所示:

a4
阅读全文

你不是书读得少,你是经典读得少

问题的由来

每次去方所,看着高高的书架,满眼的书,一方面很庆幸,这个时代对爱书的人来说,是幸福的,一方面也很难过,这些书都像一个个陷阱,很多人陷在其中,而不自知。这就像现在的互联网一样,信息通畅,人人都可以发出自己的声音,各种论调都可以看到,但有价值的东西也被隐藏的更深了,不练就一双火眼金睛很难发现他们,互联网像一湾深海,如果没有高超的游泳技术和掌控能力,不想被互联网淹死,就只能远离它。

有一个现象,自信息革命以来,整个世界范围内,在各自领域内取得瞩目成就的年轻人大多集中在互联网和商业领域,而人文科学几乎找不到年轻人的身影了。可能很多人会说,人文科学需要经历和积累,心智成熟之后才会有所成就。先不说什么叫心智成熟,有什么样的评判标准,先看看近代历史上的一些人在他们年轻的时候都干了些什么:

维特根斯坦写《逻辑笔记》的时候,24岁,尼采写《悲剧的诞生》时,28岁,写《查拉图斯特拉如是说》时39岁,卡夫卡写出《变形记》刚刚30,叔本华30岁就写出了《作为意志和表象的世界》完成自己的哲学使命,《共产党宣言》出版的时候,马克思也才刚刚30岁……

再看看国内的:

陈寅恪36岁,就与梁启超、王国维、赵元任并称“清华四大导师”,胡适26岁任北大教授,萧红去世时,也刚刚30多岁,却已经在中国现代文学史留下了几部耀眼的作品……

上面提到的这些人本身具有的某种超越常人的品质肯定是不容置疑的,但是光有品质是远远不够的,对人类来说,每个时代人的品质应该是差不多的,不存在有的时代人的品质高,有的时代人的品质低,如果只从生物进化的角度来说,现在的人的身体素质与大脑发育应该是超越过去的,但现实的情况是,在当代做出巨大成就的艺术家与思想家却乏善可陈。这当然跟环境有关,跟这个时代有关。

有位前辈说过:

你的问题是想得太多,而书读得太少

我想换个说法:你不是书读得少,你是经典读得少

我们这个时代,留给思考者的空间越来越小了,思考者要接受的挑战越来越难了。
阅读全文

打造你自己的程序员品牌

John SonmezSimple Programmer的创始人、作者与程序员,关注于如何让复杂的事情变得简单。他是一位专业的软件开发者、架构师与讲师,感兴趣的领域包括测试驱动开发、如何编写整洁的代码、敏捷方法学等。John坚信可以通过简单的方式来解决复杂的问题、大多数优雅的解决方案都是很简单的。近日,John撰写了一篇文章,谈到了如何打造程序员自己的品牌,在社区中引起了不小的反响。

你的职业是一位软件开发者,但这并不意味着你不用关注于品牌问题。事实上,如果你想让自己的职业生涯更上一层楼,那么你需要通过打造自己的个人品牌来积极地对其进行梳理。

本文将会帮助你打造属于自己的个人品牌,不过首先我需要对品牌的构成进行一个总体的介绍(品牌并不仅仅只是个Logo)。我还会介绍如何通过定义你的职业来打造出一个高效的个人品牌。最后,本文将会介绍打造你自己的个人品牌所要做的4件事。

何为品牌?

在打造自己的个人品牌前,我们需要清楚品牌到底是什么。大多数人都觉得品牌就是个Logo而已。虽然很多品牌都有Logo,不过品牌却并非仅仅是Logo而已。Logo只不过是品牌的一个小小的构成元素之一。品牌其实是一种承诺。品牌都与期望相关。在打造品牌时,你实际上是在构建关于你和你的公司的一些期望,你承诺要兑现这些期望。想想诸如星巴克这样的流行品牌吧。你觉得星巴克这个品牌所做出的承诺是什么?当你走进星巴克时,你会对菜单上有哪些东西、服务员招待你的方式、甚至是使用了哪种灯光抱有一些期望。星巴克这个品牌之所以如此成功并不是因为它的Logo。相反,星巴克对你和其他顾客所作出的承诺本身才是构成品牌的重要元素。

我认为一个品牌要具备如下4个组成部分:

  • 信息——品牌代表什么?
  • 视觉效果——品牌的视觉表现是怎样的?
  • 一致性——品牌所传递的信息是不是一样的,我能否信赖?
  • 重复曝光——品牌是否经常出现,我能够认出来?

缺乏这4个方面的品牌注定要失败。一个品牌必须要有一个清晰一致的信息、从视觉上能够被人所识别,这样才能达到效果。

后面将会对这4个组成部分进行深入的分析,不过现在我们来谈谈何为个人品牌。

个人品牌

如果能从卖方的角度来看待问题,那就能更容易地理解何为个人品牌了。

先不将你的职业看作是你现有的这份工作,试着将自己当作提供软件开发服务的卖方。如果你现在为某人工作,那么你目前就只有一个客户。如果从卖方的角度来思考,那么个人品牌就显得更具意义了。个人品牌指的是关于你提供的服务所做出的承诺与期望。为了打造一个良好的个人品牌,你需要选择好合适的职业。比如说,你可能会选择NoSQL数据库这个领域。也许你希望自己成为一名NoSQL数据库专家。或许你是一位测试驱动的JavaScript开发专家,精于向JavaScript开发者传授如何为其代码编写高效的测试。你的职业与市场的契合度越好,你的品牌在这个特定的市场中就会越响亮。当垃圾处理机坏了,你打电话叫修理工时,你是不是会叫ABC Plumbing或是Garbage Disposal Fix-it Man呢?如果专业技能良好,那么通过打造个人品牌你会取得更大的成功。

信息的打造

品牌的一个主要构成就是信息了,信息是品牌所要表达的东西。没有信息的品牌什么也不是,因为它无法沟通。信息应该传达出品牌的内涵以及品牌所要表达的期望与承诺。如果实在想不出个人品牌的信息是什么,那么可以先看看你会提供什么价值。作为一名软件开发者或是软件开发公司,你会提供什么价值。为什么会有人雇佣你呢?信息背后就是你所提供的价值。你是金钱能够买到的最棒的前端开发者么?你学习新技术的速度比其他人快么?你能提供哪些独特的价值使得雇主会雇佣你而不是其他人?

视觉效果

虽然说Logo并不是构成品牌的唯一元素,不过显然它是大多数品牌的一个重要组成部分。一个好的品牌都有很好的视觉效果,你也不例外。显然,首先你应该创建自己的Logo。既可以使用公司名,也可以使用自己的名字。这两种方式都很有效。比如说,我使用Simple Programmer作为自己的品牌,同时也为这个品牌创建了一个Logo。

没必要花很多钱来设计Logo,可以在Fiverr网站上花5美元就能搞定一个,效果还非常不错。还可以在oDesk上找人帮你做一个,都非常便宜。你的品牌还应该有一个一直使用的不错的颜色主题,我建议在你的在线资料与博客上都使用相同的颜色主题。

保持一致性

信息与Logo的事情搞定后,你需要坚持不断地使用他们从而打造真正的品牌。一致性是构建个人品牌的一个非常重要的组成部分。想想那些你熟知的个人品牌,这些品牌会成天变化么?在访问喜欢的技术站点时,你是不是知道要看什么以及何时会看到新的内容呢?

曝光

如果缺乏频繁的曝光,那么你就无法树立品牌。如果你只看到或听到一两次某个品牌,那么它是不会在你的脑海中留下印记的,也不会有任何效果。为了树立自己的品牌,你需要频繁地向同样的人曝光你的信息与视觉效果。有很多方式可以曝光你的品牌,比如说:

  • 创建并维护一个活跃的博客
  • 为杂志撰写文章或是在其他博客上发表文章
  • 在用户组与会议上发表演讲
  • 在播客或其他媒介上出现
  • 写书,自己写或是按照传统的出版流程来
  • 为开源做贡献
  • 创建YouTube视频或教程

一开始,你也许只能完成上面列出的一小部分,不过在打造了品牌后,你会得到更多的机会,做更多的事情,甚至还能做一些上面没有列出来的事情。重要的是你真的要为他人提供价值才行。如果提供了价值并且以一致的方式利用好你的信息与品牌,那么你就会打造出良好的品牌认知度并为自己创造出更多、更棒的机会。

文章来自:infoq