智能电视时代的机遇

 

智能电视

1、什么是智能电视?

百科词条:http://baike.baidu.com/view/3797456.htm

我概括一下我理解的智能电视就是:有操作系统,能装软件,能上网的电视。

2、智能电视有什么特点?

可能有人会问智能电视更像PC还是更像手机,

  • 从视听模式来看,它更像电脑,因为它看起来就像是一个有大显示器的一体机一样;
  • 从交互模式来看,它更像手机,单窗口交互,很少使用文字输入,基本是菜单选择;

但总的来说每种设备都有它自己的特色,不用单纯的拿另一种设备来类比。

我个人总结智能电视有几个特点:

  • 使用环境轻松:可能与传统电视的使用环境有关,它一般放置在客厅里,稳稳的,很安心,可只听不看,也可边听边看;
  • 显示屏幕大:这个不用多解释了,这可能也是人人都有PC,但xbox等电视游戏机销量还这么好的原因吧;
  • 可操作性不强:这样可以让人同一时间只关注一个东西,而很难说一边聊QQ,一边刷微薄,还一边看电视;
  • 便宜:别看个头大,事实上挺便宜的,而且会越来越便宜;
  • 家庭共享:与手机或电脑不同,电视一般是家庭共享的设备,有的甚至是公共场合共享。一个人在用,可能会影响好几个人,因为在边上的人很难不听到,不看到;
  • 弱化存储:电视给人的感觉就是一打开就能看,不需要我去下载,去copy什么东西,这是因为它没有存储系统,现在有些虽然是有了,但是这个存储不会是它的主要构成部分,这与云的概念是一个很好的契合点;
  • 点播、广告收费更自然(这一点纯粹是个人猜测)

3、为什么我们要关注智能电视?

  • 智能电视的普及速度可能比想像中的要快得多:

今年十一回家给家里换电视,发现除了极少数老款以外,大部分液晶电视都已经是智能电视了。西二旗地铁站最近也都是海信智能电视的广告。

现在出货的智能电视大部分装的是android系统,对电视产商来说成本比较低,功能又会多很多,在制造业利润越来越低的时代,这样的噱头产商何不好好利用?另外产商还可以通过预装互联网公司的服务来获得额外的收入。当智能电视与非智能的价格一样时,还用担心它不普及么?

现在的智能电视时代就像几年前智能手机的时代一样,但是就像智能手机普及速度比电脑普及速度快很多一样,后来者再走同样的路的时候,会比前面的人快很多。

  • 非常有助于品牌的推广,这个主要还是归结于智能电视的“家庭共享”属性。
  • 今年W3C中国主题会议中已经有智能TV专场了。

4、互联网企业能做什么?

很抱歉有些标题党了,有什么大的机遇我也不清楚,唯一能说的就是提前准备,不管是产品上,技术上还是运营方面。关于智能电视的互联网时代,你有什么好的见解吗?欢迎在评论中吐槽。

[译]5条定价建议让你的客户项目赚得更多

为什么一些代理和自由职业者可以在提供低质量工作的情况下收取额外的费用呢?

我们应该都一次又一次地看到这种现象。

人们花费成百上千美元买一个很一般的设计或研发产品的故事并不难听到。事实上,你也可能继承了一些之前遗留下来的这样的工作并不得不去修复它。

有些时候客户不是因为结果满意,而常常他们是对结果感到开心——这是人们不理性的一面——即使他们应该可以以更低得多的价格从你那得到更好的工作。

这个事实就是价格很少和工作质量有关系。

是的,客户经常因为其它原因而花费更高的价钱。主要是你提供了什么,以及你如何提供它们,这些是重要影响因素。

这里有几个好的方法来给你的客户他们所需要的东西,而你也可以收取你真正值的价钱。

1、按价值收费

如果两个客户需要同样的服务,你是向他们收取同样的费用吗?

表面上看来,只有基于你的工作来收费才是公平的。但是当你深入思考后,你会明白你永远不应该这样做。

让我们举个例子说明这一点:

每个月带来$20,000收入的简单的5个页面的网站值多少钱?

它不是网站所具有的页面数量,也不是它看上去设计所需要花的时间。它的所有者不关心页数和设计时间。所以为什么要基于他们不关心的东西来收费呢?

因此,你应该基于站点对于所有者的价值来定价。

每个来找你的客户会从你的工作中获得不同的价值。价钱应该与你给他们带去的价值直接挂钩。

如果有人想建一个网站,以下几个问题都很不错:

  • 这个网站如何帮助你的业务?
  • 你如何知道网站对你的业务来说是成功的?
  • 它会影响哪些数字(利润,占有率,等等)?
  • 如果你不建这个网站或使用旧的网站你会损失多少?

你想发现这个项目背后的业务需求以及它真正能贡献的价值。这样,你可以确保按你的价值来收费,并且可以给客户带去足够的价值,最后客户非常满意。

2. 捆绑定价

现在我想谈谈一种向客户提供价格评估的风格,叫做捆绑定价技术

但是首先让我们讨论一下两个常见的自由职业者报价的方法以及它们的问题。

Email发送一份项目成本估算

Email发送项目估价是一种告诉客户这些工作将要花费他们多少钱非常流行的方式:

很不幸的是,如果你希望收取高价钱时这会有很多问题。

比较明显的几个问题是:

  • 缺乏专业性和全面性会发出错误的信号
  • 如果邮件解释得很少,客户可能会认为你给的报价非常武断
  • 大公司通常自动过滤邮件报价
  • 很显然没有关注到结果/产出上(100%考虑的是价钱)

费用详单

让我们来看看单据风格的估价(另一种流行的报价方式):

这种方式也有几个问题:

首先你没有告诉你的服务会给客户带来什么样的价值。在看着这个列表时,很难会想到耗时和价钱之外的东西。

你是在邀请你的客户撕碎你的报价单然后去竞争市场找一个更便宜的价格。

还有另外一个问题:从心理学角度来看,许多研究表明人们更加倾向于避免损失而不是获得利益。风险厌恶指出你丢失$100所带来的痛苦会大于获取$100的快乐(译者注:经济学的边际效益递减理论可能可以说明这个问题,也就是说当你的财富越来越多,再每多出$1所带来的收益是递减的)。

回到我们的单据风格报价,每一行右边的价钱都会给人带来一次损失的感觉。这是因为:

痛苦=损失=价钱

 

一种更好的方法:捆绑报价技术

好吧,现在我们知道了我们要避免的事情,一起来看看我觉得呈现你的费用更好的方式是什么样的:

在呈现你的收费时捆绑定价技术是交流价值最有效果的方法之一。

下面是一张在我刚开始写这篇文章时找到的关于该技术的图。

记住对于客户来说,价钱就被当成是损失。你可以能过将你的费用捆绑到一个服务,一个价格中以避免聚焦在损失上。

关键在于将你的价钱与你的客户想要的结果挂钩(只提一次)。

另外一个重要的部分就是在描述区给出每项服务的详细信息。这些服务是你的客户会获得的东西,所以你需要一个一个地展开给客户而不是捆绑起来。

3. 总是提供更多选择

还有一个简单的策略可以用来增加你同时获得项目和赚得更多利润的机会:总是提供更多的选择。

如果你只给客户一个选择,你就将你的服务置于一个“是/否”的决定。

但是当你给他们三个选择而不是一个时,它可能会改变决定,他们会选择其中一个级别的服务。

他们从这样:

“我应该以这个价钱雇佣这个公司吗?”

变成:

“哪一个能够以合适的价格给我想要的东西?”

为了让这种方法有效,你必须遵从一些基本原则。看看好的选择是什么样的:

你可以从中得到什么结论呢?从我们对超过27,000份报价单的研究来看,我们发现一个或两个选项带来32%以上的利润。

发生这种情况是因为在有三个选项的选择中大多数人会选择中间的选项。

一些重要的原则:

  • 给出增强你的基础服务的选项:把你的选项想像成基础的,增强的,和高级三种。确保它们是改善你的服务的。
  • 不同选项中的价钱应该差别非常大:你不需要每一级只有10%以内的差价。如果客户给了你一个预算,就给出一个远超出他们预算的选项。
  • 选项必须包含名称,价钱和描述:确保清楚的描述客户选择了这一项所能够得到的服务。关注商务结果而不是给出技术描述。

4. 从不减少费用

客户通常都会说这个报价超出了他们的预算。潜在的原因可以有两个:

  • 他们可能觉得这项服务不值这个价钱(参看第一条关于按价值收费的建议);
  • 他们真的无法承受你的服务。

如果他们不能承受你提供的东西,他们可能不是你合适的客户。

另一方面,如果这个项目带给别人收益并且你也愿意做,只要他们的预算合理你应该可以想出好的办法。

询问客户他想去掉哪些服务来降低价格。在为一个客户服务的情况下不要在服务不变的情况下降价,而是减小他们将获得的价值。

在这种情况下你可以提供一定的折扣,但是如果你这样做可能会低估你工作的价值。

但是这并不是说你绝对不能给客户折扣,有时候你必须这么做。。。

5. 用正确的方法提供折扣

有些情况折扣很有效,你想这样做时一定要小心考虑。

当给折扣时要考虑两个因素:

  1. 上下文
  2. 呈现

上下文

上下文是向客户发送了关于你的价值以及你希望支持什么样的行为的正确的信号。

如果你是因为他是新客户而给予折扣,那你就是在建立关系上开局不利了。这样就会告诉他们你的时间的价值并设置了一个低价的参考点,下一次项目你再想改变时就很难了。

更好的办法是如果他们给了预付款而给折扣。这样你就有预付的支持从而避免了后来它们不付款的风险。

呈现

如何呈现你的折扣是接下来需要考虑的事情。

看看下面两个例子:

例子1:

Increasing Leads With a Landing Page – $10,000

– Includes 5% off Project for Early Payment(因预付款给予整个项目5%的折扣)

例子2:

Increasing Leads With a Landing Page – $10,000

– Includes 75% off Social Media Marketing for Early Payment(因预付款给予社会化媒体营销75%折扣)

即使两个案例中的折扣都是$500,但是第二个例子会感觉好很多,因为有更大的百分比。

你可以通过将折扣与更低价值的东西对比来获得这个效果——在上面的例子中,我们可以把社会化媒体营销的费用看作价值$2000——而不是相对于整个项目的5%。

所以原则就是将折扣与更低价值的东西对比,并确保这样做的理由是正确的。

总结

虽然这些定价建议的中每一个都可以单独起作用,但是如果你要结合起来应用的话你应该把赚取你真正的价值放在第一位。

记住它们:

  1. 根据客户会获得的收益来收费。
  2. 捆绑你的费用到一个方案,只用一个价格。
  3. 给出两个或三个选项避免获得一个“是/否”的决定。
  4. 在不减少项目范围内的服务的情况下不要减少费用。
  5. 用正确的理由给出折扣并且关注百分比。

你之前和客户打交道时是否尝试过这些建议呢?还有什么其它好的方法么?在评论中分享给大家吧。

原文链接:5 Pricing Tips to Earn More on Client Projects

[译]PHP命名空间

PHP支持命名空间是一条坎坷的路程。谢天谢地它被加入到了PHP5.3中,从那以后PHP代码的可用结构得到了很大的改善。但是我们应该怎么使用它呢?

什么是命名空间?

把命名空间想像成一个抽屉,你可以把各种各样的东西放到里面:铅笔,尺子,纸张等等。这些都是你的东西。在抽屉下面一层是其他人的东西,他也放了同样的东西在里面。为了防止互相使用他人的东西,你决定给抽屉贴一个标签这样就很清楚哪些东西是谁的了。

之前开发者必须在他们的类名、函数名和常量中使用下划线来区分代码库。这样当于给每样东西都打了个标签然后把他们全部放到一个大抽屉里。当然这也是一种组织方式,但是它是非常低效的。

命名空间解决了这个问题!你可以在不同的命名空间中声明同名函数,类,接口和常量,而不会收到“fatal error”错误。本质上命名空间仅仅就是一个分层标记的包含正常PHP代码的块。

你正在使用它们!

记住很重要的一点,你在间接使用命名空间;因为在PHP 5.3中,所有没有声明在用户定义的命名空间的定义都在全局命名空间下。

全局命名空间同时包含了所有内置的PHP函数定义,像echo(),mysqli_connect(),以及Exception类。因为全局命名空间没有唯一的标识名,它常常被称作全局空间。

你的PHP脚本可以在没有命名空间的情况下完美的运行,并且短期内这种情况不会改变。

定义命名空间

命名空间应当是PHP解释器在PHP文件中碰到的第一个声明。唯一允许出现在命名空间前面的声明是“declare”,而且必须是它用于声明脚本的编码。

声明命名空间很简单,就是使用“namespace”关键字。命名空间的取名规则与PHP中其它标识符(如变量)一样。因此命名空间必须以字母或下划线开头,以任意多个字母、数字或下划线组成。


如果你希望将代码块放入到全局空间,你可以使用后面不跟名字的namespace关键字:


你可以在一个文件中使用多个命名空间:


你也可以将一个命名空间的代码分散到不同的文件中;文件包含的过程将自动合并它们。但是良好的写码习惯是将一个命名空间放在一个文件中,就像写class一样。

注意命名空间代码块两头的括号是可有可无的。事实上坚持一个命名空间一个文件的原则并省略大括号使你的代码更加清晰——这样就不需要缩进被嵌套的代码。

子命名空间

命名空间可以遵循一定的层级,就像你计算机文件系统中的目录一样。子命名空间对于组织一个项目的结构非常有用。例如,如果你的项目需要数据库访问,你可能会把所有数据库相关的代码,如数据库异常和连接处理,放在一个叫做“Database”的子命名空间中。

为了保持灵活性,建议将子命名空间放在子目录下。这使得你的项目结构更好并且更容易使用PSR-0标准规定的自动装载功能。

PHP使用反斜杠作为命名空间的分隔符。

你可以使用任意多级子命名空间。

PHP暂时不支持使用嵌套代码块定义子命名空间。下面的代码会抛出fatal error:“Namespace declarations cannot be nested(命名空间声明不能嵌套)”

调用命名空间中的代码

如果你想要实例化一个新的对象,调用或使用不同命名空间下的方法或常量,使用反斜杠符号。它们可以以三种观察点来解析:

  • 非限定名(Unqualified name)
  • 限定名(Qualified name)
  • 完全限定名(Fully qualified name)

非限定名

它就是不包含任何名称空间引用的类、函数或常量名。如果你刚接触名称空间,它就和你原来常用的观察点一样。

限定名

这是我们访问子命名空间的方法,使用反斜杠符号。

下面的例子会抛出一个错误:“Fatal error: Class ‘MyProject\Database\MyProject\FileAccess\Input’ not found”,因为路径“MyProject\FileAccess\Input”是相对于你当前所在的命名空间的。

完全限定名

非限定名和限定名都是相对于你当前所在的命名空间的,它们只能用于同级和更深级别的命名空间。

如果你想访问上级命名空间的函数,类或者常量,你需要使用完全限定名——使用绝对路径而不是相对路径。简单的说就是在路径最前面加一个反斜杠。这告诉PHP它应该从全局空间开始解析而不是相对于当前所在空间。

PHP内置的函数不需要使用完全限定名。如果使用非限定名调用的常量或函数名在你所在的命名空间中不存在,PHP将会在全局命名空间中查找它们。这是内置的容错特性,但不适用于非限定类名。

了解这些后,我们可以在重载PHP内置函数的同时又还能使用原生的函数(常量也一样)。

动态调用

PHP是动态编程放言,所以你可以动态地调用命名空间。这与使用变量初始化类或包含文件类似。PHP使用的命名空间分隔符是字符串中的元字符。所以当你将命名空间存在字符串中时别忘了转义把斜杠!

namespace关键字

namespace关键字不光可以用于定义命名空间,它还可以用于显式声明当前命名空间,有点像类中的self关键字。

__NAMESPACE__ 常量

与self关键字不能用于确定当前类的名字一样,namespace关键字也不能用于确定当前所处的命名空间的名字。这就是为什么我们需要__NAMESPACE__常量。

当你刚开始学命名空间时这个常量非常有用,它对代码调试也很有帮助。因为它是一个字符串,所以也可以像前面讲的一样用来与动态代码连接。

别名与导入

PHP的命名空间支持导入。导入也可以被看作是别名。只有类,接口和命名空间可以被赋予别名或导入。

导入是命名空间非常有用和基础的功能。它赋予你充分利用外部包的能力,像类库一样,而不需要担心命名冲突。使用use关键字进行导入,也可以用as关键字给命名空间赋一个别名。

它是如何工作的

我们可以给完全限定名取一个更短的非限定别名这样你就不用每次使用它时都写长长的完全限定名了。别名或导入必须出现在命名空间和全局作用域中的最外层作用域。在方法或函数中使用它会报语法错误。

此外,你可以给它取一个不同的别名:

你也可以导入全局类,比如Exception类。当它被导入后,你就再也不需要写完全限定名了。

注意导入不是被解析为相对当前命名空间的,而是绝对的,从全局空间开始。这意味着不需要也不推荐写开头的反斜杠。

虽然可以动态的调用命名空间代码,但是不能动态地导入命名空间。

总结

命名空间可以用于避免命名冲突,为你的代码库引入了更加灵活和结构化的特性。不过记住你不一定要使用命名空间,它用于结合面向对象的工作流。不过希望你将会考虑在你将来的项目中使用命名空间以使项目更棒。你决定了吗?

原文链接:Namespacing in PHP

[译]Android应用调试

在这个教程中,我们将一起来看看Android开发新手开发完善他们的应用需要知道的一些核心调试工具。

第0部分:准备开始

这一系列的Android教程旨在帮助你掌握必要的技能和信心以创建出高质量的Android应用。这个教程的受众是刚开始学习Android应用开发的Java开发人员,他们多少有些熟悉Eclipse,并且安装过Android SDK和Eclipse下的Android开发插件。同时,为了完成这个教程你还应该知道如何创建一个简单的Android应用(Hello World就够了)。如果你还不具备这些,你可以参看这一系列教程中的前面部分

第1部分:在Eclipse中创建调试配置

在这个系列教程中的Android示例应用中,你学会了如何在Eclipse中创建一个运行配置。调试配置的创建方式和这个非常类似,只是通常在启动和调试应用时进行选项配置。

要在Eclipse中为你的应用程序创建调试配置,选择“运行,调试配置…”。

双击Android应用程序(或者右键点击然后选择新建)。在第一个Tab页中点击“浏览…”按钮,选取你要调试的Android项目,然后中点击“确定”。

填写名称一栏。我们通常把项目名称作为调试配置名称的部分来命名以避免混淆,不过你也可以随意取你想要的名字。

在目标(Target)Tab页中,选中“总是提示选择设备(Always prompt to pick device)”。

然后中点击调试按钮。你应该会看到Android设备选择对话框。这个对话框将会在顶部显示所有当前连接的Android设备和运行中的模拟器实例,并且提供通过兼容性AVD(Android Virtual Device)启动一个新模拟器实例的选项。

选择你已经运行的模拟器并点击确定按钮。过一会你的应用将会在模拟器或设备中启动,你将会看到下图中所示的“等待调试”的对话框。

第2部分:探索Eclipse调试视图

一旦你的应用在模拟器或设备上运行,你就可以开始调试它了。Eclipse和ADT(AndroidDevelopment Tools)插件的绝大部分基本调试功能都被以非常易用的试组合到调试视图。

当你调试Android应用时,调试视图一般会自动打开,但是由于某些原因如果没有自动打开的话,你可以通过点击Eclipse右上角的调试视图,或是点击“窗口->打开视图->调试”来调出。

调试视图有几个信息面板。如果你不喜欢它们的位置可以随便移动它们。

如图中左上角面板叫做调试面板,它显示你的应用程序,线程。这里你可以找到允许你附加或解除调试器和单步调试代码的工具栏。

右边的面板可以审查变量以及管理断点。断点是你在代码中打的一个标记,当调试器执行到该语句时会暂停执行,这样你就可以有条不紊地逐行地调试你的代码。

调试视图中间的面板显示当前正在执行的代码。

在调试视图的底部,你会看到两个诊断面板:一个是日志面板,显示模拟器或设备的日志输出;另一个是控制台面板,显示来自调试监控服务工具(DDMS)的高级控制台输出。

第3部分:Eclipse中单步代码调试

让我们使用刚才你启动的应用作为例子来看看如何使用Eclipse进行调试。

首先我们需要确保我们的代码没有问题并且调试器没有因为问题而自动退出。点击Eclipse右上角的Java按钮切换到Java视图。双击打开你的应用对应的activity类文件,然后切回到调试视图,然后你会看到这个文件显示在调试视图中间的面板中。OK,现在我们准备调试我们的代码。

首先,我们在代码中设置一个断点。有很多种方法可以做到。我比较喜欢找到想设置断点的代码,然后右键点击代码行左边的竖直蓝色带然后中选择“设置断点(Toggle Breakpoint)”或者就在蓝色带上单击以设置或移除断点。你也可以点击想要设置断点的代码行然后按“Control-Shift-B”。当断点设置后代码行的左边将会出现一个小放大镜样子的图标。创建第一个断点比较好的地方是在你的Activity中的onCreate()方法中。

设置了断点后,使用调试配置在调试模式中重新启动应用(可以使用工具栏中的小bug图标)。点击向下箭头,选择调试配置,然后程序将会运行。调试器和你的应用都会启动,然后在你设置的断点处停止。你会看到即将要执行的代码行边上有一个小箭头。

现在你可以使用基本的调试功能调试你的代码。这些功能可以在调试面板工具栏上找到,你也可以使用关联的快捷键来操作。

Eclipse中单步调试中最常用的功能如下:

进入(Step Into):使用该功能进入更深层的代码。当你认为当前要执行的方法需要调试时可以使用它。如果这个方法经过了良好的测试并且你知道它能够返回正确的结果,就不需要进入该方法了,而是跨过它转到另一个处于同一级的代码行。点击F5来进入代码。

跨过(Step Over):使用它来进入到下一个与当前代码同级的代码行,快捷键是F6。

跳出(Step Return):如果你正在进入到一个方法中可以使用这个功能,回到你想审查的方法。当前的方法将会执行完毕并返回,然后将会跳到下一行执行,你可以继续调试。快捷键是F7。

重新开始(Resume):完成了片断的调试并希望应用重新运行(直到运行到下一个断点)?那就可以使用重新开始功能,快捷键F8。

终止(Terminate):使用该功能完全终止程序运行。也可以使用快捷键Control-F2。

第4部分:查看诊断日志

日志,或是在你的代码中打印诊断信息对诊断问题非常有用,特别是在竞态条件或定时器相关的问题,当你小心地逐步调试时这些问题也不太容易发生。在这种情况下,你可以让你的代码照常运行,但是你可以在它运行时打印出任何你想要的信息。你可以在调试视图的日志面板中查看这些诊断信息。你也可以通过很多其它方式访问输出日志,比如DDMS工具,Eclipse中的DDMS视图或是adb命令行工具。

向你的应用添加日志输出非常容易但是它需要更改Java代码并且要重新编译。另外,打日志也会在一定程度上拖慢你的应用,所以务必在你正式发布应用时移除日志代码。学习更多Android日志可以参看《Android基础:程序日志

总结

在这个教程中,你学到了使用Eclipse和ADT插件高度Android应用的最基本方法。你学到了如何切换Eclipse到调试模式,使用调试视图,以及如何调试你的代码和查看日志。现在你掌握了开发现实Android应用的基本技能,可以开始Android开发了。你想创建怎样的应用?哪个应用是你最喜欢的?在评论中告诉我们吧。

原文链接:Android App Debugging

IOS6 Safari全屏功能开发需知

IOS6下iphone和ipod(暂时不包括ipad)在横屏时支持全屏模式了,这对于游戏或多媒体应用来说是一个非常好的特性。

但是需要注意的是,程序无法强制用户的safari切换到全屏模式,必须用户手动去启用全屏模式,即用户手动点击工具栏的最后一个全屏图标(样子是两个背对背的箭头)。但是开发人员可以在应用中引导用户切换到横屏模式然后点击全屏按钮以正式启动我们的webapp。在全屏模式下屏幕右下角也始终会有一个退出全屏的图标(样子是两个头对头的箭头),在我们的应用中要注意避开这个位置。用户是否进入全屏模式可以通过onresize事件来判断。

更多ios6对于开发者来说值得关注的新特性可以参考:

http://www.mobilexweb.com/blog/iphone-5-ios-6-html5-developers