为啥急功近利反而赚不到钱——给拜金主义者的忠告

★引子

  最近2个月积压了好多邮件没回。元旦前突击回了一批,其中有好几封来信是咨询职业发展规划。有感于此,俺决定聊聊这方面的话题。
  前天发了篇《回顾历史上的加州淘金热——给比特币矿工的忠告》,表面上是讲比特币挖矿,其实这篇博文是一个引子,用来引出后续的几个话题。今天先说话题之一:为啥一味追求赚钱,(多数情况下)反而赚不到钱?

★直接路线 VS 间接路线

  不晓得俺博客的读者中,有多少比例是军事爱好者。假如你是军事爱好者并且对军事理论有一定的接触,那么你一定听说过赫赫有名的《大战略——间接路线》(俺的网盘上有电子版)。这本书通篇都在强调“间接路线”的重要性,并举出历史上很多重大战役作例证。其作者李德·哈特因为此书被誉为“军事理论教皇”。
  可能有的同学会奇怪,为啥扯到军事方面?因为俺觉得:军事领域和经济领域有诸多相似之处。下面举几个例子,让大伙儿体会一下两种路线的差异。

◇MySpace VS Facebook

  在2006年之前,MySpace 还是社交网络的老大,而 Facebook 只是新来的小弟。但是情况在2006年开始逆转——现在的 Facebook 如日中天,而 MySpace 已经彻底废掉了。造成这种逆转有很多原因,其中一个重要原因是,MySpace 在2005年底被默多克的新闻集团(News Corporation)收购。
  收购 MySpace 之后,默多克急于从它身上赚到钱,定下了很高的盈利指标。为了达成盈利指标,MySpace 页面上开始充斥大量的广告,使得用户体验变差。与之对比,当时的 Facebook 老板扎克伯格(Mark Zuckerberg)强调“不急于赚钱”,Facebook 的广告策略比较收敛。
  默多克急于赚钱,采用“直接路线”,结果把前途大好的 MySpace 葬送了。他事后承认:收购 MySpace 并没有买错,只是没有管理好。

◇易趣 VS 淘宝

  前面说的是“直接路线”失败的例子。再来说说“间接路线”成功的例子。2004年的时候,易趣占有 C2C 90% 的市场,处于垄断地位,而淘宝只是2003年刚刚成立,尚不成气候。
  马云的狡猾之处在于,他没有急于让淘宝赚钱。当时淘宝的运作属于赔本赚吆喝——不但要砸进去很多市场推广费用,而且不收交易手续费。列位看官可别小看了这个“免交易费”,这可是淘宝的杀手锏。当时的易趣要收交易费,所以这个杀手锏直接导致易趣的用户大量转移到淘宝。等到淘宝垄断了市场之后,单单支付宝的“浮纯金”就让马云赚翻了。
  假设马云急于赚钱,也像易趣那样收取交易费,说不定淘宝还没做大就死掉了。

◇为啥间接路线更有效?

  在军事领域,假设你是进攻方,选择直接路线(走直线、走近路、走康庄大道),表面上似乎占了便宜,其实不然;不妨换位思考一下,防御方又不傻,也会在直接路线上设置更强的防御力量。所以在军事史上,直接路线的失败案例反而更多;相反,历史上那些传奇般的战例,几乎全都是采用“间接路线”达成。
  在经济领域,一个很容易想到的点子,你想到了,别人也想到了。所以在直接路线上,你会碰到非常多的竞争者。于是,人满为患的康庄大道反而变成羊肠小道,而人迹罕至的羊肠小道却如同康庄大道

★红海 VS 蓝海

  在前一篇博文中,俺已经稍微提到了“红海”和“蓝海”这俩词。刚才俺拿“康庄大道”和“羊肠小道”作比喻——“人满为患的康庄大道”就如同“商业红海”;而“人迹罕至的羊肠小道”就如同“商业蓝海”。

◇两种“蓝海”

  所谓的“商业蓝海”,通俗而言就是:参与者较少,利润率较高的领域。
  商业蓝海有两种:一种是稳定的,一种是不稳定的。区别这两者的关键要素是——该领域的门槛(所谓的“门槛”,学名叫“竞争壁垒”)。如果某个领域的进入门槛一直保持很高,那么这个蓝海就可以长久维持;反之如果门槛很低,这个蓝海会在短时间内(几个月或1-2年)蜕变成红海。
前一篇博文提到的比特币挖矿市场——在2011年之前,这个市场还可以算是蓝海;从2012年开始,因为大批矿工的涌入,已经变红了。

◇“红海”的特点

  “商业红海”跟“蓝海”相反——参与者很多,利润率很低。这类领域中的竞争者往往很艰难——必须拼命厮杀才能勉强存活。“红海”一词的“红”是个形象的比喻——指海水被鲜血染红。
  比如说天朝的股市就属于典型的红海。如今炒股的门槛非常非常低,随便一个阿猫阿狗,随便拿几万块钱,就可以去证券公司开户炒股。再加上天朝股市充斥着投机的风气——这类股市相当于是“零和博弈”。如果光是“零和博弈”也就罢了,但别忘了天朝还是一个奇葩的国度。在天朝股市中,散户基本上都被庄家任意宰割。因为庄家具有散户所没有的竞争优势:庄家可以勾结朝廷的权贵,庄家可以进行违规操作,庄家可以买通股评家进行忽悠……

◇急功近利者的行为分析

  既然红海如此艰难,为啥还有如此多的人奋不顾身地投入其中?这就要说到急功近利者的特点。
特点1——缺乏竞争优势
  “急功近利”这个词的亮点在于【急】。很多人急着要赚大钱。因为“急”,他们没有耐心去慢慢提升自己的竞争力。既然缺乏竞争力,门槛高的领域自然就进不去(无法克服竞争壁垒)。所以他们只能选择门槛低的领域。门槛低的,要么是“不稳定的蓝海”,要么是“红海”。不论是哪一种,都无法给你提供【长久的】赚钱机会。
特点2——容易听信“暴富神话”
  急功近利者都想快速发财。所以“暴富神话”非常迎合他们的胃口。一旦某个领域传出“暴富”的神话,急功近利的人就心向往之,巴不得自己也成为下一个暴富者。可惜他们没有意识到一点:别人暴富的过程往往是不可复制的。
  俺的观点是:【小康的过程是可以复制的,但暴富的过程是不可复制的】。就以长期蝉联世界首富的比尔·盖茨来说吧。他的辉煌当然离不开他的个人能力,但同样离不开一连串的环境因素(有些甚至是巧合)。比如:大学期间赶上 PC 机的崛起;比如:大学期间结识了保罗·艾伦(艾伦是微软两个创始人之一);比如 IBM 在 PC 战略上的失误……(如果愿意,还可以列一大堆)这些外部因素只要有一个变了,成就辉煌的可能就不是盖茨,而是别人。
  所以,听信暴富神话,并且企图去模仿别人暴富的过程,那是非常愚蠢滴。
特点3——喜欢跟风
  最后一个特点就是:急功近利者往往很喜欢跟风(心理学上称为“从众效应”、“羊群效应”)。一听说很多人都涌入某个领域,也不深入思考一下到底有没有适合自己,就跟着一头扎进去。这样的例子不胜枚举:比如近几年的“公务员热”。
  关于从众心理,俺之前写过《关于社会认同和从众心理》,这里就不再罗嗦了。

★如何找到自己蓝海?

  前面说了一大通,肯定有读者要问,如何找到“蓝海”?面对这样的提问,俺有必要提醒一下:当你问“如何找到蓝海”。这个提问本身是没意义的。有意义的提问是:“如何找到【自己的】蓝海”。同一个领域,对某些人可能是红海,对另一些人可能是蓝海。比如前面提到的天朝股市,虽然是散户的红海,但却是庄家的蓝海。
  要找到自己的蓝海,关键在于搞清楚自己的综合能力。你首先必须对自己的各方面能力有深刻的了解,然后才能分析出自己的哪些能力是核心的竞争力,哪些是非核心的竞争力,今后还需要补充哪些竞争力。(关于个人能力的提升是俺博客常年唠叨的话题,大伙儿可以去回顾一些老帖子,比如《如何完善自己的知识结构》)。
  当你把上述这几个问题都想清楚了之后,【不难找到】适合自己的蓝海。为啥说“不难”捏?根据二八原理,在每个国家中,急功近利的人往往占多数(远不止80%),而深谋远虑的人往往是少数(远小于20%)。而且那些急功近利的人多半都深陷红海之中,无法自拔。所以,各种“商业红海”无形中帮你化解了一大批潜在的竞争对手 🙂

 

本文转自:编辑随想。 http://program-think.blogspot.com/2014/01/misunderstanding-about-making-money.html

不要给自己留太多的后路!

做生意的人会给自己留这样几种后路:
做小生意的人,会给自己留很多的后路;
做大生意的人,会给自己留一条后路;
做事业的人,会把自己的后路全部绝掉!

我做过小生意,我很了解做小生意的人的心态,他们通常会这么说:
“我做小生意,能赚钱,投入又不大,就算亏了,我已经想好出路了,要么回去上班。要么马上调转枪头,做别的;也就是说鞋子卖不好,我可以去卖帽子;帽子卖不好,我可以去卖裤子;裤子卖不好,我可以去卖袜子;反正,这些都是我的后路,我不会没钱赚的,也不会亏到那里去。反正,打一枪换个地方。”
这对做小生意的人来说是对的,所以,他们就不会亏到哪里去,因为他们给自己留下了很多的后路,也就是说,他们不会山穷水尽,他们津津乐道于自己的一亩三份田,日子很逍遥。
大生意的人,通常也会给自己留有一条后路。这条后路通常是为自己留下一笔养老的钱。他们心里,一般会这么想,就算失败了,这留下的钱也够自己下半辈子过上“小康”的生活了。
做事业的人,通常会把自己的后路全部绝掉。我碰到过很多有志于创业的青年,也些青年每天都叫着口号说,“我要创业,我要成为中国的盖茨,我要赚多少的钱,我要……”但我通常会问他们一句,“既然你有这么多的理想,那你为什么不去干?为什么还不去辞职?”于是,他们没有声音了,回答倒:“我现在的工作很好,一个月5、6千元,万一我失败了,再找这样的工作是很难的。我下不了决心!”
呵呵,他们的回答让我想到了:一个打虎壮士,天天喊着要去打老虎,但没有行动,于是只能每天描述老虎是如何如何的可怕,呵呵,这样的人是最没有出息的。
我想,这就是城市里的人缺乏冲劲的原因,因为他们的后路太多、而且也太好,他们总是把自己手上已有的东西捏得紧紧的,生怕失去;或者他们也会去创业,但却给自己留下了好几条后路,生怕自己到了最后一无所有。
有个猎人带着一只猎犬去打猎,“砰”的一枪,猎人打到了一只鹿,但没有打死,只是受了伤,于是猎人命令他的猎犬去追。猎犬接到命令,二话没说,嗖得一下窜了出去,但半个小时过去了,猎犬低垂着脑袋,空手而归。于是猎人很惊奇,问到:“鹿呢?”猎犬穿回答到:“没追到,让他给跑了!”“跑了?”猎人很诧异。“跑了,的确是跑了”,猎犬很委屈的说到。一只没有任何伤病的猎犬为什么会追不到一只受了伤的小鹿?这是一个值得我们仔细思考的问题。

 

As3 Matrix 理解与应用

TheMatrixWallpaper800

一、介绍

Matrix 字面意思是矩阵, 是一个数学概念。这个词在本科线性代数里有详细说明,它是数的一个排列,支持好多种数学运算!在flash里,在3D运算中,矩阵 真的是无处不在。flash中,你要使一个可显示对象(DisplayObject )旋转,倾斜,调位置你都可以通过矩阵来完成,虽然你还有其他更简单的方法,就是通过修改rotation, x, y 等值来达到同样的目的。在每个显示对象中,都有一个属性:transform. 这里就包含了显示对象的各种变换,其中一项,就是matrix! 可见matrix在flash中也有重要的作用。

二、为什么是矩阵

矩阵对于很多数学恐惧者来说,很让人无法直视, 真的很让人头痛!但是它却在计算机图形学里起着很重要的作用。我们从简单说起!

2.1 坐标系统

在我们的学习中,就已经深刻的学习了坐标系统的概念,要分析空间物体及其对应关系,就离不开坐标系这个概念!我们最熟悉的是笛卡尔坐标系, 直角坐标系!在坐标系里又可以找到很多概念,这些概念对于我们理解这矩阵有着很重要的作用。 比如说,物体坐标系, 旋转坐标系,世界坐标系等。

世界坐标系,简单来说,它是空间里处于全局位置,永远不变的坐标系。举个例子,我们要研究小猫在房间里的运动路径,这时我们可以选择房间里的一个角落来作为我们的世界坐标系。 物体坐标系,就是以处于世界坐标系下的一个物体上的某一点构成的坐标系,假如我们选择小猫正常站立形态下后脚作为原点建立一个直角坐标系,那么,这个坐标系就是小猫的物体坐标系,这个物体坐标系相对世界坐标系而言,它会随着猫的运动而运动!

2.2 物体变换

我们选定了物体坐标系, 小猫一天中会在房间里各处走动,或跑,或跳,或睡觉等,那么,这时的小猫就相对世界坐标系而言,它发生了一些变换,可能包括:平移,旋转,当然还可能包括缩放(缩着身子)。 假如小猫在进食时在身上沾了一粒米,那么,在小猫在世界坐标系里进行变换时,这粒米相对相对世界坐标系又是怎么一个情形呢? 这就相当于在数学上一个物体从一个坐标系变换到另一个坐标系下,如何确定其位置的问题,对于这个问题,用矩阵可以很好的来解决这个问题!

在flash里,矩阵matrix也是一样用于处理坐标变换的问题。相信大家可能曾经会想过一个问题。 一个显示对象有宽,有高,那么对于这些内容是如何分层次的画出来的,又如何确定物体内部每个点在舞台上的位置的呢? 没错,就是通过坐标变换来实现的!

三、矩阵

flash里 矩阵用于将点从一个坐标系转换到另一个坐标系, 使用下面的方程:

clip_image002

其中P代表变换后的坐标点, N代表变换前坐标点(都是以列向量的形式)。

显示对象的transform属性的matrix就是这个M, 它用于将物体坐标系里的点变换到显示对象父坐标中。

image

这个M是一个3维矩阵,如下所示:

Matrix class properties in matrix notation showing    assumed values for u, v, and w

转换过程如下:

clip_image002[4]

其中a, d 影响显示对象的缩放, c, d 影响显示对象的倾斜, a, b, c, d同时影响显示对象的旋转。 tx, ty 代表显示对象相对于父对象的位置偏移!如果clip_image002[6] 都为0 的话,

那么clip_image002[8]就是 clip_image002[10] 所以说, tx, ty 就是显示对象的坐标。

四、应用

1. 获取对象里某一点在父对象中的位置。

var p:Point = new Point( x0, y0 );
p = displayObject.transform.matrix.transformPoint( p );

2. 绘制渐变图

代码示例略

3. 中心旋转

public function rotateAroundCenter (ob:DisplayObject, angleDegrees:Number):void
{
    var matrix:Matrix = ob.transform.matrix; 

    var rect:Rectangle = ob.getBounds(ob.parent); 

    matrix.translate(- (rect.left + (rect.width/2)), - (rect.top + (rect.height/2))); 

    matrix.rotate((angleDegrees/180)*Math.PI); 

    matrix.translate(rect.left + (rect.width / 2), rect.top + (rect.height / 2));

    ob.transform.matrix = matrix;
}

4. 绕点旋转

// get matrix object from your MovieClip (mc)
var m:Matrix = mc.transform.matrix;

// set the point around which you want to rotate your MovieClip (relative to the MovieClip position)
var point:Point = new Point(10, 10);

// get the position of the MovieClip related to its origin and the point around which it needs to be rotated
point = m.transformPoint(point);
// set it
m.translate( -point.x, -point.y);

// rotate it of 30°
m.rotate(30 * (Math.PI / 180));

// and get back to its "normal" position
m.translate(point.x, point.y);

// finally, to set the MovieClip position, use this
mc.transform.matrix = m;

// or this
mc.x = m.tx;
mc.y = m.ty;
mc.rotation += 30;

值得注意的是, 你通过Matrix的rotate方法旋转得到的效果与你通过显示对象的rotation属性得到的是不样的!这是因为 matrix.rotate 以父对象的原点为旋转中心,旋转的是物体坐标系, 所以,通过rotate是会改变tx, ty的。 如下图所示:

image

希望本文章能够帮到你!转载请注明梦溪笔记!

flash 动态嵌入字体, 嵌入你要的字符

一、简单

在使用As3 开发软件的过程,我们会遇到的比较头痛的一个问题是字体的处理!特别是针对中文这样的语言!

我们都知道嵌入式的字体比非嵌入的字体在效果上好很多, 所以我们希望在很多项目上能够使用嵌入的字体。

通常的嵌入字体的做法是通过flash cs 这些工具 来进行字体生成,如果你要生成一个字体,而这个字体可能的符号是所有字符集的时候,这个字体文件将会变得特别大,如果你要放在网络环境中,那直接就是一个噩梦!要在网络上加载1M文件会让用户在等待中发狂。。。

 

一个可行的解决方案是,用户用到了某个字体的特定字符,我们就只把这个字符嵌入到swf中,这样生成的文件将会小很多,文件的大小以出现的字符数量定!而且这样的好处就是用户可以使用他机器上的任何一个字体。 那么这个如何在技术上实现呢?

二、技术实现

2.1 Haxe

有一种开源的语言叫Haxe, 这种语言超NB, 她只要你写一次,就可以直接编译成各种语言, 诸如:c++, php, as3, c#, javascript, NekoVM, java 等, 让人觉得不可思议。 她有actionscript 3 的传统,所以,她对flash, as3 有超强的支持能力,使得你可以用她了做很多关于as3,swf等的事情,就比如说我们现在讨论的动态生成嵌入了字体的swf文件。这是一件多么有意思的事情

2.2 关于swf

SWF是一种文件格式,大家都知道的,而有意思的是这个格式是开放标准的,意思是,你可以查到关于SWF这个文件格式的任意一个规范,如果你够NB,你也可以阅读这个规范,并根据这个规范写出你自己的swf播放器,swf生成器,并且编辑swf! 你所知道的一些软件,比如说硕思这个swf反编译工具 就是根据SWF文件格式来进行反编译工具的,你也可以模仿它来写一个自己的swf加密混淆或者是反编译工具。

2.3 动态生成技术

Google Code 上有一个开源项目,她叫hxswfml, 她是基于Haxe 而来的一个项目, 简单的来说,她可以让你写一个xml文件,然后通过她,把这个xml文件编译成swf文件,够COOL吧!因为 Haxe 可以编译成php, js 等语言,所以,这能够让你在你的网站项目中,动态的生成 swf文件, 一下子让你的网站充满了神奇! 我们可以用她来完成动态生成swf字体文件的任务!在下面体验一下吧!

 

在文本区域内输入你需要的字符, 写上字体名( FontName 用于指定 字体名,类似于css中的font-family ), 写上调用时的类名( className 用于指定生成这个字体的类名,用于加载字体时获取字体引用 ) , 写完这些后,点击 Generate SWF 来生成你的swf 字体文件。 Test Font 用于测试字体 文件是不是有效 微笑 快来体验一下吧

 

2.4 在项目中使用

如果你的项目是基于AIR技术, 你可以直接把hxswfml 编译成swc文件,在项目中使用即可,我这里给你提供一个已经编译好的AIR 可用swc 文件flash as3 可以swc 文件.

如果你是基于客户端的技术,这时候你要把hxswfml编译成exe文件, 这个exe文件可以在该项目的下载中找到,不过要注意:

如果你直接使用下载的hxswfml.exe 你会发现运行不了,出现一个加载库失败提示

Error : Could not load module std@parse_xml__2

这是因为hxswfml需要依赖几个动态连接库,你只需要把这几个dll放到hxswfml.exe目录下,就可直接运行了.

如果你不知道去哪里找这些库,我为你准备好了,点击下载就ok

 

 

2.5 编译cpp 配置

如果需要自己编译这个hxswfml.exe文件,那么你需要配置工作环境,你可以根据这篇文章的指导来进行, HXCPP配置

结束语

到这里, 你已经了解了如何去实现动态生成所需要的swf字体, 希望这篇文章能为你解决问题!

如果你有什么问题,可以联系! 至于联系方式,相信你会找到 微笑

 

本文章为原创!转载请注明作者及出处!

smaile