你可能不知道的10个JavaScript小技巧
尽管我使用Javascript来做开发有很多年了,但它常有一些让我很惊讶的小特性。对于我来说,Javascript是需要持续不断的学习的。在这篇文章中,我将列出10个Javascript使用小技巧,主要面向Javascript新手和中级开发者。希望每个读者都能至少从中学到一个有用的技巧。
1.变量转换
看起来很简单,但据我所看到的,使用构造函数,像Array()或者Number()来进行变量转换是常用的做法。始终使用原始数据类型(有时也称为字面量)来转换变量,这种没有任何额外的影响的做法反而效率更高。
var myVar = “3.14159”,
str = “”+ myVar,// to string
int = ~~myVar, // to integer
float = 1*myVar, // to float
bool = !!myVar, /* to boolean – any string with length
and any number except 0 are true */
array = [myVar]; // to array
转换日期(new Date(myVar))和正则表达式(new RegExp(myVar))必须使用构造函数,而且创建正则表达式的时候要使用/pattern/flags的形式。
2.十进制转换为十六进制或者八进制,或者反过来
你是不是写个单独的函数来转换十六进制(或者八进制)呢?马上停下吧!有更容易的现成的函数可以用:
(int).toString(16); // converts int to hex, eg 12 => “C”
(int).toString(8); // converts int to octal, eg. 12 => “14”
parseInt(string,16) // converts hex to int, eg. “FF” => 255
parseInt(string,8) // converts octal to int, eg. “20” => 16
3.玩转数字
除了上一节介绍的之外,这里有更多的处理数字的技巧
0xFF; // Hex declaration, returns 255
020; // Octal declaration, returns 16
1e3; // Exponential, same as 1 * Math.pow(10,3), returns 1000
(1000).toExponential(); // Opposite with previous, returns 1e3
(3.1415).toFixed(3); // Rounding the number, returns “3.142”
4.Javascript版本检测
你知道你的浏览器支持哪一个版本的Javascript吗?如果不知道的话,去维基百科查一下Javascript版本表吧。出于某种原因,Javascript 1.7版本的某些特性是没有得到广泛的支持。不过大部分浏览器都支持了1.8版和1.8.1版的特性。(注:所有的IE浏览器(IE8或者更老的版本)只支持1.5版的Javascript)这里有一个脚本,既能通过检测特征来检测JavaScript版本,它还能检查特定的Javascript版本所支持的特性。
var JS_ver = [];
(Number.prototype.toFixed)?JS_ver.push(“1.5”):false;
([].indexOf && [].forEach)?JS_ver.push(“1.6”):false;
((function(){try {[a,b] = [0,1];return true;}catch(ex) {return false;}})())?JS_ver.push(“1.7”):false;
([].reduce && [].reduceRight && JSON)?JS_ver.push(“1.8”):false;
(“”.trimLeft)?JS_ver.push(“1.8.1″):false;
JS_ver.supports = function()
{
if (arguments[0])
return (!!~this.join().indexOf(arguments[0] +”,”) +”,”);
else
return (this[this.length-1]);
}
alert(“Latest Javascript version supported: “+ JS_ver.supports());
alert(“Support for version 1.7 : “+ JS_ver.supports(“1.7”));
5.使用window.name进行简单会话处理
这个是我真的喜欢的东西。您可以为指定一个字符串作为window.name属性的值,直到您关闭该标签或窗口。虽然我没有提供任何脚本,但我强烈建议您如充分利用这个方法。举例来说,在建设一个网站或应用程序的时候,在调试和测试模式之间切换是非常有用的。
6.判断属性是否存在
这个问题包含两个方面,既有检查属性时候存在,还要获取属性的类型。但我们总是忽略了这些小事情:
// BAD: This will cause an error in code when foo is undefined
if (foo) {
doSomething();
}
// GOOD: This doesn’t cause any errors. However, even when
// foo is set to NULL or false, the condition validates as true
if (typeof foo != “undefined”) {
doSomething();
}
// BETTER: This doesn’t cause any errors and in addition
// values NULL or false won’t validate as true
if (window.foo) {
doSomething();
}
但是,有的情况下,我们有更深的结构和需要更合适的检查的时候,可以这样:
// UGLY: we have to proof existence of every
// object before we can be sure property actually exists
if (window.oFoo && oFoo.oBar && oFoo.oBar.baz) {
doSomething();
}
7.给函数传递参数
当函数既有必选又有可选参数的时候,我们可能是这样做的:
function doSomething(arg0, arg1, arg2, arg3, arg4) {
…
}
doSomething(”, ‘foo’, 5, [], false);
而传递一个对象总是比传递一堆的参数更方便:
function doSomething() {
// Leaves the function if nothing is passed
if (!arguments[0]) {
return false;
}
var oArgs = arguments[0]
arg0 = oArgs.arg0 || “”,
arg1 = oArgs.arg1 || “”,
arg2 = oArgs.arg2 || 0,
arg3 = oArgs.arg3 || [],
arg4 = oArgs.arg4 || false;
}
doSomething({
arg1 : “foo”,
arg2 : 5,
arg4 : false
});
这只是一个把对象作为参数传递的一个很简单的例子,例如,我们还可以声明一个对象,变量名作为Key,默认值作为Value。
8.使用document.createDocumentFragment()
您可能需要动态地追加多个元素到文档中。然而,直接将它们插入到文档中会导致这个文档每次都需要重新布局一个,相反的,你应该使用文档碎片,建成后只追加一次:
function createList() {
var aLI = [“first item”, “second item”, “third item”,
“fourth item”, “fith item”];
// Creates the fragment
var oFrag = document.createDocumentFragment();
while (aLI.length) {
var oLI = document.createElement(“li”);
// Removes the first item from array and appends it
// as a text node to LI element
oLI.appendChild(document.createTextNode(aLI.shift()));
oFrag.appendChild(oLI);
}
document.getElementById(‘myUL’).appendChild(oFrag);
}
9.为replace()方法传递一个函数
有的时候你想替换字符串的某个部分为其它的值,最好的方法就是给String.replace()传递一个独立的函数。下面是一个简单例子:
var sFlop = “Flop: [Ah] [Ks] [7c]”;
var aValues = {“A”:”Ace”,”K”:”King”,7:”Seven”};
var aSuits = {“h”:”Hearts”,”s”:”Spades”,
“d”:”Diamonds”,”c”:”Clubs”};
sFlop = sFlop.replace(/\[\w+\]/gi, function(match) {
match = match.replace(match[2], aSuits[match[2]]);
match = match.replace(match[1], aValues[match[1]] +” of “);
return match;
});
// string sFlop now contains:
// “Flop: [Ace of Hearts] [King of Spades] [Seven of Clubs]”
10.循环中标签的使用
有的时候,循环中又嵌套了循环,你可能想在循环中退出,则可以用标签:
outerloop:
for (var iI=0;iI<5;iI++) {
if (somethingIsTrue()) {
// Breaks the outer loop iteration
break outerloop;
}
innerloop:
for (var iA=0;iA<5;iA++) {
if (somethingElseIsTrue()) {
// Breaks the inner loop iteration
break innerloop;
}
}
}
联想t430u怎么设置u盘启动
尊敬的联想用户您好! 根据您的情况,您直接将第一移动项改为U盘或者光驱启动即可。 之后您需更改您的硬盘模式您可以如下操作: 1、 若您的预装系统为win8系统您需如下操作:按F1或Fn+F1进入BIOS—> security—>security boot把“security boot”项后面的enabled改为disabled,进入Startup—UEFI/Legacy Boot选项,将UEFI/Legacy Boot选项选择成Both,UEFI/Legacy Boot Priority选择成UEFI First,按F9选择Yes,,然后按F10(FN+F10保存退出 ) 2、然后更改硬盘模式 :进入“Config” --> “Serial ATA(SAT A)” --> “Controller mode option” ,将原先的 “AHCI” 改成 “Compatibility”或IDE ,然后按[F10]。 需要注意的是:xp系统只能识别一个显卡,集显或者独显就无使用, 声卡的安装也可能有问题, 不建议安装xp系统。 3、若您的预装系统为win7则无需执行1操作,直接进入BIOS更改硬盘模式即可。 4、按下电源开机,出现联想LOGO时,连续点击键盘“F12”键 5、出现“BOOT MENU”菜单,用键盘,选择USB启动即可。
为您提供如何制作U盘系统盘以及U盘安装操作系统的方法: http://support1.lenovo.com.cn/lenovo/wsi/htmls/detail_13118943866256237.html 更多问题您可以咨询idea论坛:http://lenovobbs.lenovo.com.cn/forum.php?intcmp=FM_LBBS_baidureply Think论坛:http://thinkbbs.lenovo.com.cn/forum.php?intcmp=FM_LBBS_baidureply 联想乐社区:http://bbs.lenovomobile.com/forum.php?intcmp=FM_LBBS_baidureply
什么才算是真正的编程能力?
问题:什么才算是真正的编程能力?
还在读书,也在实验室帮忙做了些东西,自己也搭过几个网站。在周围人看来似乎好像我很厉害,做了那么多东西,但是我发现这些东西虽然是我做的,但是实际上我手把手自己写的代码却并没有多少,很多都是用开源的东西,我写的代码无非是把别人的东西整合下,类似于胶水一样的工作。
我之前所认为的编程是全手动一行一行敲代码,但是现在我发现哪怕是工程上也有很多人是复制黏贴来解决问题的,并且提倡不要重复造轮子。
但是靠谷歌和复制别人的轮子,虽然我做出了很多东西,可是我并不觉得自己能力上有提升,倒是利用搜索引擎的能力的确提升了不少。而学校里另外一波搞ACM的人,他们每天刷题练算法,或许倒是的确提升了点编程能力,但是对工程几乎一窍不通。
所以我现在就很困惑,所谓的编程能力到底是什么,我该如何提升自己的编程能力?
回答者:刘贺,…
非常好的一个问题。这可能是我在知乎见到过的问编程有关的问题中问得最好的一个了。我非常喜欢这个问题。
计算机科学有两类根本问题。一类是理论:算法,数据结构,复杂度,机器学习,模式识别,等等等。一类是系统:操作系统,网络系统,分布式系统,存储系统,游戏引擎,等等等等。
理论走的是深度,是在追问在给定的计算能力约束下如何把一个问题解决得更快更好。而系统走的是广度,是在追问对于一个现实的需求如何在众多的技术中设计出最多快好省的技术组合。
搞ACM的人,只练第一类。像你这样的更偏向于第二类。其实挺难得的,但很可惜的是第二类能力没有简单高效的测量考察方法,不像算法和数据结构有ACM竞赛,所以很多系统的苗子都因为缺少激励和正确引导慢慢就消隐了。
所以比尔盖茨才会说,看到现在学编程的人经常都把编程看作解各种脑筋急转弯的问题,他觉得很遗憾。
做系统,确实不提倡“重复发明轮子”。但注意,是不提倡“重复发明”,不是不提倡“重新制造”。恰恰相反的,我以为,系统的编程能力正体现在“重新制造”的能力。
能把已有的部件接起来,这很好。但当你恰好缺一种关键的胶水的时候,你能写出来吗?当一个已有的部件不完全符合你的需求的时候,你能改进它吗?如果你用的部件中有bug,你能把它修好吗?在网上繁多的类似功能的部件中,谁好谁坏?为什么?差别本质吗?一个开源代码库,你能把它从一个语言翻译到另一个语言吗?从一个平台移植到另一个平台吗?能准确估计自己翻译和移植的过程需要多少时间吗?能准确估计翻译和移植之后性能是会有提升还是会有所下降吗?
系统编程能力体现在把已有的代码拿来并变成更好的代码,体现在把没用的代码拿来并变成有用的代码,体现在把一个做好的轮子拿来能画出来轮子的设计蓝图,并用道理解释出设计蓝图中哪些地方是关键的,哪些地方是次要的,哪些地方是不容触碰的,哪些地方是还可以改进的。
如果你一点不懂理论,还是应该学点的。对于系统性能的设计上,算法和数据结构就像在自己手头的钱一样,它们不是万能的,但不懂是万万不行的。
怎么提高系统编程能力呢?土办法:多造轮子。就像学画画要画鸡蛋一样,不是这世界上没有人会画鸡蛋,但画鸡蛋能驯服手指,感受阴影线条和笔触。所以,自己多写点东西吧。写个编译器?渲染器?操作系统?web服务器?web浏览器?部件都一个个换成自己手写的,然后和已有的现成部件比一比,看看谁的性能好,谁的易用性好?好在哪儿?差在哪儿?为什么?
更聪明一点的办法:多拆轮子。多研究别人的代码是怎么写的。然而这个实践起来经常很难。原因:大部分工业上用的轮子可能设计上的思想和技术是好的,都设计和制造过程都很烂,里面乱成一团,让人乍一看毫无头绪,导致其对新手来说非常难拆。这种状况其实非常糟糕。所以,此办法一般只对比较简单的轮子好使,对于复杂的轮子,请量力而行。
轮子不好拆,其实是一个非常严重的问题。重复发明轮子固然是时间的浪费,但当轮子复杂而又不好拆的时候,尤其是原来造轮子的人已经不在场的时候,重新发明和建造轮子往往会成为无奈之下最好的选择。这是为什么工业界在明知道重复发明/制造轮子非常不好的情况下还在不断重复发明/制造轮子的根本原因。
程序本质是逻辑演绎的形式化表达,记载的是人类对这个世界的数字化理解。不能拆的轮子就像那一篇篇丢了曲谱的宋词一样,能读,却不能唱。
鄙人不才,正在自己研究怎么设计建造一种既好用又好拆的轮子。您没那么幸运,恐怕是等不到鄙人的技术做出来并发扬光大了。在那之前,多造轮子,多拆好拆的小轮子,应该是提高编程能力最好的办法了。
以上。嗯。
(文章属个人观点,与本人工作雇主无关。)
回答者:mu peng,less is more
懂得取舍。
在有限的时间内,几乎没有系统可以做到完美。要快,要安全,高并发,易扩展,效率高,容易读,高内聚,低耦合…
大到一个网站,小到几个class,工程师都要清楚,要取什么,舍什么,这并不是那么容易的事。我们都有自己的性格,有的求新,有的求稳,有的求快,但具体到一个项目时,知道如何取舍对这个项目最好,很重要。
学校里的作业,没人在意你是不是写在一个大的main()里面,能跑就行。但做项目的时候,太多的东西要考虑,有时候,宁可简单易读,也不用快那么一点点;有时候,要做太多看不到的工作,却丝毫马虎不得;有时候,写了不如不写,留白也是一个学问。
曾经接手个项目,里面几乎所有的class,每个都有interface,各种继承,各种实现,理由是灵活性高,易扩展。真的易扩展吗?
我不知道。没多久,客户的需求就改了,各种拎不清的继承实现都化为乌有,一大半要重写。
问题在哪里?
不是编程不好,而是取舍的不好。在那个阶段,为30%的需求,花200%的努力,追求设计的滴水不漏,却舍弃快速实现,取得反馈的时机,这就是失误。需求总会变,客户看到越早,修改越早,影响越小。
很聪明的人,也可能做出很难用的系统,不一定是编程不好,可能是不愿,或不屑于取舍。不同的阶段,不同的项目,要取舍的东西也不同。编程只是手段,目的是解决问题,能力高不高,要看问题解决的好不好。不在于使用了什么高端算法,或是复杂的框架。
懂得如何取舍并不容易,需要对问题的深刻理解,对技术的胸有成竹,和身后无数个踩过的坑。但重要的是有取舍的意识,主动思考取舍什么,这样学的才会快。
回答者:李遥,A Programmer
既然说的是编程能力,那首先就先把学术相关的能力排除才能说的清楚
接下来是我对编程的定义:所谓编程,就是预先设计好方案来指挥行为可预测的系统来自动(与临时手动相对)达到的想要的结果。从广义上说,企业家对一个公司的运作方式进行设计,然后这个公司自动运行产生利润也是一种编程
那么编程能力体现在两点
1.对可预测系统的理解:理解越深,预测能力越强,自己的智慧才越好发挥。这就是为什么学习软件编程最快的方式之一是“造轮子”
2.如何把自己的目标转化成指挥方案,这其实就是“做应用题”的能力,我们从小学就在练习这个能力。现实世界的应用题可不会告诉你用什么知识点去建模,也不会透露全部必要条件,因此增强这个能力需要深刻理解现实世界的运作方式。在软件行业,这被称作“理解垂直行业的业务逻辑”
顺带说一下,所谓“Hacking”,其实就是在深刻理解一个系统的基础上,用最小的代价改变这个系统来达到自己的目的。“Hacking”之所以看起来出人意料,就是因为理解越深刻,需要的做的改动越少。如果理解不深刻,那就要从头造一个系统了,那就不聪明了
回答者:丁盛豪,网络媒体HeckPsi.com创始人
谢 @花满楼 邀请。
对于编程能力这个问题其实我也想过很久,这个东西确实非常难界定。单纯靠算法水平、编程速度、工程经验都很难说是编程能力。
虽然这个东西的影响因素非常庞大,但从我日常的工作来看,其实我觉得衡量编程水平最靠谱的方法是观察这个程序员 Debug 的能力。
程序从本质上来说就是 输入 -> 处理 -> 输出 的过程,而中间的处理就像是一个巨大的黑盒子。而这个黑盒子的本身就是程序,在大多数情况下你并不能看到这个黑盒子的全貌。从常识上写一个不存在 bug 的程序是一件 几乎 不可能完成的任务。即使是敲个最简单的 Hello World 程序,你也很难保证编译器不给你抽几下风。尤其是当这个程序变得非常庞大时,写程序这件事的本身就是 盲人摸象 的过程。程序员必须要有相当好的 全局观 ,才能保证自己的程序良好运行而不出问题,并能在出了问题之后能够做出迅速的定位和修复。
所以观察一个程序员能否 迅速Debug 的过程就是一个很好的判断依据。我举个例子来说,我几周前给手机刷了机,第二天早上准备去晨跑,发现手机 GPS 不工作。于是我立刻分析了出现问题可能的地方:
GPS 模块硬件 -> GPS 驱动 -> 系统配置 -> GPS 权限 -> 软件兼容性
由于想起刚刷了机,基本可以排除硬件问题。而软件之前同样在其它 Android 5.1 机器上跑过,同时跑了下 Google Maps 也不能定位,排除兼容性问题。原生系统的权限系统非常简单,基本排除是权限。出问题的可能是第三方 ROM 的驱动有问题或者配置文件。观察到 A-GPS 基站辅助定位也不工作,基本排除 GPS 驱动问题。确认是配置文件有问题,检查 /etc/gps.conf 竟是空文件。于是就在手机上用文本编辑器顺手码了一段配置,重启后问题修复。
这就是一次非常流畅准确的对一个未知的 Bug 定位和修复的过程。
由于 Bug 的未知性,可以很好避免一些你在判断时可能遇到的 作弊 情况,我们知道现在很多人为了面试无所不用其极。就算是以前非常经典的面试问题,现在也很不靠谱。现在你问 “如何理解面向对象编程?” 和你对答如流的人可能并不真正理解 OOP,不过背的很熟而已。以前觉得算法是个很好验证水平的切入点,自从 LeetCode 背题流的出现,这招现在也不怎么靠谱。而 Debug 是个无法 提前准备的东西,所以对于编程能力的校验通常很准确。
而且,Debug 的过程中会接触到自己很多不熟悉的知识。由于编程本身就是一个 Engineering,正常的过程就是在 码字 -> 出问题 -> 学习 -> 修改 的过程中循环。如果你对算法不熟悉,那么遇到程序性能问题的时候你硬着头皮也要用学习算法知识来解决掉。所以这是一项非常综合的能力,是程序员 知识、智力、经验 的综合体现。
至于如何提升编程能力?
多写、多错、多学。没有捷径,捷径只不过是作弊。作弊能帮你找到工作,但并不能真正解决问题。
回答者:陈浩骏,call me Reid / 会写Java的猴子
MIT算法导论第一堂课:
每天都编程 x年后一定会变成专家 (忘了x多少 不是重点
轮子多造多模仿 能力自然提升
什么发展都是从量到质的 要相信
现在我也是搞系统编程 除了看source code和造轮
也是可以有空刷刷acm的
而且只有帮助没有坏处喔
系统编程一旦考虑到效能问题 离不开经典的一些算法的
显然大部分的我们都不会成为高手如温赵轮
但是成为编程好手 进个好公司 钱多赚些 生活舒服些 应该是普遍程序员的共同目标
不要想太多 拼命code就是了
共勉
如此。
回答者:vczh,专业造轮子 https://github.com/vczh-libraries
都不知道宣传不要重复造轮子的人是怀着什么险恶的用心,原话明明是不要重新发明轮子。
这是什么意思呢?就是说你要多看论文多看书,少抄代码。
回答者:达达,服务端程序员
程序员就是把人类的需求语言翻译成计算机语言的人,所以可以通用译事三难:“信、达、雅”。
回答者:Kim Leo
其实,搭网站,写MIS/CMS/ERP这些,就算是一行行的写代码,结果也只能是你的领域知识不断提升,对于“编程能力”的提升没有多少的。就像是你根本无法解释在你写的系统中哪个地方应用了动态规划一样。
所以相对来说你所需要的是一些计算机科学内的领域知识。
还有,假如你写了代码要给别人看和给其他程序员用,应该就开始慢慢考虑接口和设计了。
或者你需要的是一本分析模式?
回答者:JX Consp
看看别人的轮子的形貌(主要是接口,其次是效率)之后自己造一个轮子
其实 STL 源码剖析 和 modern c++ design 不错,唯一问题是选择了 c++ 做教学语言
有兴趣可以学点认知和设计来了解好的接口长得是怎样的
回答者:海涛,软件开发需要低成本、快速响应
第1层:能做成东西(能运行)
第2层:做的东西能长时间或高负荷地运行
第3层:做的东西能长时间在高负荷下运行
第4层:能预先知道什么才是客户/行业需要的功能,并以最符合的代价(金钱、硬件、期限、人力)实现
回答者:DreamPiggy
多看书
多思考
改别人代码
学别人的架构
做自己的软件
写自己的架构
或许如此循环就入坑了吧。
高效,实用的chrome插件推荐
今天为大家推荐一些 高效,实用的chrome插件。希望给大家带来帮助。
Postman
前端程序员不可缺少的插件Postman,它是Google Chrome Web Store的一个工具,用来帮助我们测试RESTful API,我们可以为REST call添加任意我们指定的http头,然后模拟REST的调用,并测试结果。POST,GET,PUT等方式。很好用
下载地址:https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm
Adblock_Plus
Adblock是Mozilla Firefox网页浏览器所使用的扩展,现已发展出供Google Chrome、Internet Explorer、Opera和Android浏览器使用的版本。Adblock允许用户拦截包括广告在内的各种页面元素,并使这些内容不被下载和显示。
下载地址:https://chrome.google.com/webstore/detail/adblock-plus/cfhdojbkjhnklbpkdaibdccddilifddb?hl=zh-CN
Gestures for Google Chrome
Chrome Gestures是一个谷歌浏览器的鼠标手势插件。安装这款插件后,Chrome便能在鼠标的“指挥”下完成很多特定操作。除了能够显示出鼠标的轨迹,一个很人性化的设计就是提供了手势功能提示,于是我们便可以在操作时随时掌握即将发生的任务。
下载地址:https://chrome.google.com/webstore/detail/gestures-for-google-chrom/jpkfjicglakibpenojifdiepckckakgk?hl=zh-CN
JSONView
这是一款查看json数据的工具,很好用。
下载地址:https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc?hl=zh-CN
JSON Editor
jsoneditor 是一个基于 Web 的 JSON 数据浏览和编辑的工具。方便查看接口返回值。
下载地址:https://chrome.google.com/webstore/detail/json-editor/lhkmoheomjbkfloacpgllgjcamhihfaj
来自: IT江湖
链接:http://www.itjhwd.com/chrompl/
夫妻分开三个月以上基本可以考虑离婚了?你同意么?
夫妻分开三个月以上基本可以考虑离婚了。所谓感情最重要的就是陪伴,分开久了感情就淡了。
【钱与家庭】
我们总以为中国人是世界上最有家庭观念的种族之一,并且深深地为之自豪,但在老外的眼中,却未必如此。
有次我和澳洲的朋友谈起了中国人对家庭的重视。没想到,那几位澳洲朋友说:“你别生气,其实,我们觉得你们中国人并不爱家,并不像你们自己说的这么注重家庭。你们更爱金钱!
我愕然。于是,记下了这些真诚的对话:“无论在澳洲还是在中国当地,你们中国人的确很勤奋,中国人在海外也能比当地人积蓄更多的钱财,但我不认为这是你们中国人有经商的天赋,而是你们比我们更节俭,更能省,是通过降低生活标准来完成的金钱积累。
“你们平时很少上酒吧,周末也很少度假,甚至周末或假期都不休息。衣服都是从中国买了带过去,因为这里更便宜,我甚至看到有上海学生带了很多碗过去。”
你们会没日没夜的工作,把孩子都交给老人照管,除了关心孩子的学习成绩外,你们忙得很少和孩子一起玩。圣诞节你们甚至都不休息,而在海外春节是没有假期的,圣诞节不带着孩子去海滩,因为你们会觉得这个时候的机票、宾馆都贵,不如趁这个时候做点生意赚更多的钱,等淡季了再出门。
所以,你们华人的孩子尽管学业上很优秀,但他们总是觉得自己很另类,觉得和当地人比起来,父母更关心的是家庭的金钱收入、关心的是他们的学习分数,而不是他们的快乐。是的,我知道你要说什么,你们中国人爱说这是为了孩子,为了下一代多挣些钱,但每一代都说自己赚钱是为了下一代,那么究竟哪一代会真正地使用这笔钱呢?
生命是那么短暂,你们借口为了家庭的未来,而在现在就牺牲了家庭,我不知道这个帐是怎么算过来的,怎么还能体现你们自己很自豪的家庭观念。
你们为了工作,可以忍受长时间的夫妻分离,要在我们眼中,夫妻不在一起三个月以上,基本上就该考虑办离婚了。所以我们被派到海外来,就一定是全家一起来,我的妻子、孩子都搬到上海来。他们要是不愿意来,我就不可能接受这项工作,家庭比工作更重要呀。我在中国甚至听说过你们的上一辈人,甚至有夫妻几十年都分在两个地方的,到了退休的时候才能生活在一起。这太残酷了。难道你们就不会为了家庭放弃工作吗?工作也还可以再找呀!
我的中国公司里有很优秀的人才,但因为不是上海本地人,家庭就在另外城市,每个月甚至每两个月才能相聚一次,为什么其中的一方就不能放弃工作呢?
我知道有很多在城市里工作的农民,他们甚至只能一年回家一次,都说是为了家庭在挣钱,可这样的钱再多,又有什么意义呢?在澳洲,你们中国人基本都比当地人有钱,但没有人羡慕你们的生活,我认为你们就是金钱的机器,但你们为自己的赚钱爱好涂上了一层家庭的色彩。其实中国人真的是不会生活!
ღ_ 中国人唯一不认可的成功就是家庭和睦,人生的平淡!
英国某小镇。有一个青年人,整日以沿街为小镇的人说唱为生;这儿,有一个华人妇女,远离家人,在这儿打工。他们总是在同一个小餐馆用餐,于是他们屡屡相遇。时间长了,彼此已十分的熟悉。
有一日,我们的女同胞,关切地对那个小伙子说:“不要沿街卖唱了,去做一个正当的职业吧。我介绍你到中国去教书,在那儿,你完全可以拿到比你现在高得多的薪水。”
小伙子听后,先是一楞,然后反问道:“难道我现在从事的不是正当的职业吗?我喜欢这个职业,它给我,也给其它人带来欢乐。有什么不好?我何必要远渡重洋,抛弃亲人,抛弃家园,去做我并不喜欢的工作?”
邻桌的英国人,无论老人孩子,也都为之愕然。他们不明白,仅仅为了多挣几张钞票,抛弃家人,远离幸福,有什么可以值得羡慕的。在他们的眼中,家人团聚,平平安安,才是最大的幸福。它与财富的多少,地位的贵贱无关。于是,小镇上的人,开始可怜我们的女同胞了。
中国山东,有这样一对夫妇刚刚结婚时,妻子在济宁,丈夫在枣庄;过了若干年,妻子调到了枣庄,丈夫却一纸调令到了菏泽。若干年后,妻子又费尽周折,调到了菏泽,但不久,丈夫又被提拔到了省城济南。妻子又托关系找熟人,好不容易调到了济南。可是不到一年,丈夫又被国家电业总公司调到重庆。
于是,她所有的朋友,就给她开玩笑——你们俩呀,天生就是牛郎织女的命。要我们说呀,你也别追了,干脆辞职,跟着你们家老张算了。
但是,她以及公婆、父母,都一致反对。“干了这么多年,马上就退休了,再说, 你的这么好,辞职多可惜。要丢掉多少钱呀!再干几年吧,也给孩子多挣一些。”
其实,他们家的经济条件已经非常优越。早已是中层阶级,但是他们仍然惦念着那一退休.于是,夫妻两个至今依然是牛郎织女。
我们,是一个尚义轻利的民族。
中国人一直是为了某种自己未必真正明白的主义而活着。于是,中国人,不能在没有目标的生活中活着。而这个目标,可以是工作,可以是理想,可以是金钱,可以是孩子,可以是老人……但是,唯一不可能是的,就是自己。
中国人,可以很委屈的活着。可以是工作上的极不顺心,可以是婚姻上的勉强维持,可以是人际关系上的强作笑颜,可以是所有欲望的极端压制,可以是为了一个所谓的户口……哪怕牺牲自己一生的幸福,也在所不惜。
中国人,可以过异常艰难的日子,但并不能安贫乐道,他所遭受的一切不幸,必定有一个近乎玩笑的借口;中国人,可以把高官厚禄当作成功,中国人可以把身家百万当作理想,中国人可以抛却天伦之乐四海飘荡,但是,中国人唯一不认可的成功——是家庭的和睦,人生的平淡。
于是,一个有着五千年文明历史的国度,把爱国、崇高、献身、成功、立业的情结推向了极致——他们要么在大公无私,其实是舍本逐末的漩涡里苦苦挣扎,要么在肩负重任,其实是徒有其名的怪圈里受尽折磨……唯一遗漏的就是自由和自我。于是,在外国,众人皆知的道理;在中国,没人能明白。
人的一生,到底在追求什么?
有一个美国商人坐在墨西哥海边一个小渔村的码头上,看着一个墨西哥渔夫划着一艘小船靠岸,小船上有好几尾大黄鳍鲔鱼。这个美国商人对墨西哥渔夫能抓这么高档 的鱼恭维了一番,还问要多少时间才能抓这么多?墨西哥渔夫说,才一会儿功夫就抓到了。美国人再问,你为什么不待久一点,好多抓一些鱼?墨西哥渔夫觉得不以 为然:这些鱼已经足够我一家人生活所需啦!
美国人又问:那么你一天剩下那么多时间都在干什么?
墨西哥渔夫解释:我呀?我每天睡到自然醒,出海抓几条鱼,回来后跟孩子们玩一玩;再跟老婆睡个午觉,黄昏时晃到村子里喝点小酒,跟哥儿们玩玩吉他。我的日子可过得充满又忙碌呢!
美国人不以为然,帮他出主意,他说:我是美国哈佛大学企管硕士,我倒是可以帮你忙!你应该每天多花一些时间去抓鱼,到时候你就有钱去买条大一点的船。自然你就可以抓更多鱼,在买更多渔船。然后你就可以拥有一个渔船队。
到时候你就不必把鱼卖给鱼贩子,而是直接卖给加工厂。然后你可以自己开一家罐头工厂。如此你就可以控制整个生产、加工处理和行销。然后你可以离开这个小渔村,搬到墨西哥城,再搬到洛杉矶,最后到纽约,在那经营你不断扩充的企业。
墨西哥渔夫问:这又花多少时间呢?
美国人回答:十五到二十年。
墨西哥渔夫问:然后呢?
美国人大笑着说:然后你就可以在家当皇帝啦!时机一到,你就可以宣布股票上市,把你的公司股份卖给投资大众;到时候你就发啦!你可以几亿几亿地赚!
然后呢?
美国人说:到那个时候你就可以退休啦!你可以搬到海边的小渔村去住。每天睡到自然醒,出海随便抓几条鱼,跟孩子们玩一玩,再跟老婆睡个午觉,黄昏时,晃到村子里喝点小酒,跟哥儿们玩玩吉他。
墨西哥渔夫疑惑的说:我现在不就是这样了吗?
人的一生,到底在追求什么?
人的一生, 究竟在追求什么? 这是一个没有标准答案的问题, 一千个人可能会有一千个不同的回答。 但我们应该知道成功有很多种定义, 有些人终生都在追逐名利, 他们生活得很快乐(也许), 有些人毕生都在灯红酒绿, 他们生活得也很幸福(当然); 还有更多的人在平淡充实, 日复一日的工作和生活中度过平凡的一生, 这又何尝不是一种幸福呢。
或许, 真正的成功只有一个, 就是按照自己喜欢的方式,去度过人生。
什么叫信任?故事很短,道出人性!!
一个小男孩和一个小女孩在玩耍,
小男孩收集了很多石头,
小女孩有很多的糖果,
小男孩想用所有的石头与小女孩的糖果做个交换,
小女孩同意了,
小男孩偷偷地把最大和最好看的石头藏了起来,
把剩下的给了小女孩,
而小女孩则如她允诺的那样,
把所有的糖果都给了男孩。
那天晚上,
小女孩睡得很香,
而小男孩却彻夜难眠,
他始终在想,
小女孩是不是也跟他一样,
藏起了很多糖果?
其实,
如果你不能给予别人百分之百的话,
你总是会怀疑别人是否给予了你百分之百,
拿出你百分之百的诚心,
对待所有的人和事,
然后睡个安稳觉吧,
生活中的很多人和事,
就如文中所说的一样,
自己到底有没有做到百分之百呢?
虽然我们深知猜疑这东西最伤感情,
可是还是会不断地忍不住地猜,
疑心是对他人的不信任,
对自己的不自信,
对彼此的折磨,
对感情的亵渎,
这是一个心魔。
世界上没有对与错,
只有因和果,
当我们付诸百分之百的真诚去对待身边的人,
不用去考虑他会以何种方式回报,
静静的等待
所有的一切都会吸引而来。
这么萌的妹子让自行车毁了
《柴静雾霾调查:穹顶之下》全片时长1‘43’55‘’(强烈推荐,值得一看)
柴静雾霾调查:穹顶之下
————–
知乎上获得“赞数除以字数”最大值的答案是哪个?
您觉得年轻人(特别是男生)太早结婚会影响事业的发展吗?
李开复:我21岁结婚。
6个字,5218个赞同,平均每字870个赞同
热恋阶段,见到恋人时你想做的第一件事是什么?
一一:笑。
1个字,3090个赞同,平均每字3090个赞同
什么叫暖男?
卫枫:云备胎。
3个字,8325个赞同,平均每字2775个赞同
男朋友别人面前很正经,在我面前很二怎么办?
董翔:真爱。
2个字,5409个赞同,平均每字2705个赞同
吃什么最补脑?
唐先声:亏。
1个字,2589个赞同,平均每字2589个赞同
当今这个社会如此以瘦为美,胖点就没有一点好处吗?
OoPsy:没有。
2个字,5157个赞同,平均每字2579个赞同
姑娘发短信说“我感冒了”,最好的回答是什么?
GayScript:开门。
2个字,4761个赞同,平均每字2381个赞同
如何让相亲的女方反感自己?
崔浩男:你就正常表现。
6个字,11871个赞同,平均每字1979个赞同
国庆北京游有哪些好建议?
OpheliaSweetie:别去。
2个字,3917个赞同,平均每字1959个赞同
什么是爱?爱一个人是什么感觉?
腐生:好像突然有了软肋,也突然有了铠甲。
15个字,26892个赞同,平均每字1793个赞同
哪些产品在中国销售价格很低,在海外市场定价却很贵?
陈敛:书。
1个字,1575个赞同,平均每字1575个赞同
为什么《董小姐》里“爱上一匹野马,可我的家里没有草原”会引起如此强烈的共鸣?
宋冬野:想多了各位。。我就是那么比喻了一下。。。
15个字,19215个赞同,平均每字1281个赞同
武林高手都是怎样识别杀气的?
罗索:背景音乐。
4个字,4581个赞同,平均每字1145个赞同
你的中国梦是什么?
梁欢:移民。
2个字,2178个赞同,平均每字1089个赞同
人在什么时候最舒服?
frank:空调加棉被。
5个字,5205个赞同,平均每字1041个赞同
你最孤独的时刻是什么?
InkHugo:第二杯半价。
5个字,5192个赞同,平均每字1038个赞同
目前最好的用来学习外语的安卓应用是什么?
TanKnoX:关机。
2个字,1927个赞同,平均每字964个赞同
为什么我男朋友总是觉得别的男生对我有企图?
王奕翔:他太了解男人了。
7个字,6682个赞同,平均每字955个赞同
“心灵鸡汤”式的文章错在哪?
田七:没给勺子。
4个字,3716个赞同,平均每字929个赞同
如何隐晦地表达我想你?
陈佳:在干嘛?
3个字,2624个赞同,平均每字875个赞同
如果母鸡有思想,它会想些什么?
Trickie:我母鸡啊。
4个字,3340个赞同,平均每字835个赞同
百度搜索有那么多缺点,大家为什么还要用呢?
froginwater:因为要测试网络是不是断开了。
13个字,10598个赞同,平均每字815个赞同
女生对大肚子男生怎么看?
少白狗蛋:看都不看。
4个字,3231个赞同,平均每字808个赞同
如何拒绝不爱但很善良的男生?
默默:不要在寂寞的时候找他。
10个字,6694个赞同,平均每字669个赞同
什么叫见过大世面?
张若鸿:会讲究,能将就
6个字,3955个赞同,平均每字659个赞同
命运是什么?
邓亚圣:命是弱者借口,运乃强者谦词
12个字,7883个赞同,平均每字657个赞同
杀气是一种什么感觉?
张起灵:你妈喊你全名的时候。
9个字,5889个赞同,平均每字654个赞同
怎样含蓄地表达“我已经被收买了”?
Icarus:我说句公道话……
6个字,3640个赞同,平均每字607个赞同
怎样才能做到不在乎别人骂?
姜山:你要相信,比你优秀的人是不会鸟你的。
16个字,9590个赞同,平均每字599个赞同
做哪些事情可以提升生活品质?
茉茉:定期扔東西。相信我!
8个字,4275个赞同,平均每字534个赞同
怎样提升一个人的文笔?
白孺子:阅读、模仿与失恋。
7个字,3606个赞同,平均每字515个赞同
如何帅气地回复男友的分手短信?
王豖:哦
1个字,508个赞同,平均每字508个赞同
如何做到为人和善又不失强硬?
lsShaw:我前大大大boss说的:从不说硬话;从不做软事。
23个字,11621个赞同,平均每字505个赞同
男女之间没有纯友谊吗?
蔡浩te:有,越丑越纯!!!
5个字,2324个赞同,平均每字465个赞同
“谁,执我之手,敛我半世癫狂”是什么意思?
ananaB:我有病,谁有药!
6个字,2748个赞同,平均每字458个赞同
你在生活中得到过的最好的建议是什么?
御子柴:切莫交浅言深
6个字,2665个赞同,平均每字444个赞同
你在幸福考拉上究竟学会了什么?
ananaB:小时候不努力学习,长大了就只能给别人dian zan。。。
《近匠》Amaze UI:做最懂中国程序员的开源HTML5框架
Amaze UI是一款完全针对HTML5开发的轻量级、模块化、强调移动优先的开源跨屏前端框架,通过拆分、封装了一些常用的网页组件,让开发者只需复制代码便可将这些跨屏组件写入到自己的应用中。相比国外框架,Amaze UI更关注中文排版优化,强调浏览器兼容性,在GitHub上线半年的时间,便已获得2300+Star。
CSDN:最初决定打造Amaze UI这样一框架有着哪些初衷和考虑?
陈本峰:Amaze UI是我们整个云适配产品的一部分,希望引领推广最新的技术,带领大家走向未来的趋势方向。现在在国外对于Web开发有一个非常热的理念,就是Web组件化,这是Google在2013年提出的新概念。开发者不需要再花费时间精力去编写日历等的代码,可以直接引用组件。
在开发云适配的过程中,我们积累了包括菜单、轮播图等在内的大量针对手机端的UI控件,但其兼容性维护及复杂的屏幕适配还需要花费很多时间去进行,而我们也希望能够与别人共享,所以最终决定将其开源,在共同形成这么一个库的同时,也让大家都能受益。
CSDN:在云适配的产品线中,Amaze UI有着什么样的定位?
陈本峰:首先,云适配可以说是Amaze UI的一个用户,它就等于把Amaze UI打包到整个云适配系统中。相对而言,云适配的产品定位是针对现在已有的PC网站,将这些PC网站转换为一个能同时支持手机、平板的跨屏网站,而Amaze UI则是直接帮助开发者开发一个跨屏跨平台的网站。
CSDN:作为开源项目,Amaze UI是如何吸引开发者参与代码提交和建立生态的?
陈本峰:在国外,开源是一项非常热门的运动,在GitHub上有着很多这种类型的开源贡献开发者。但我们确实也感觉到,开源这件事在中国还是处于早期的萌芽阶段,许多程序员可能并没有太多的时间去做贡献。当然,Amaze UI自出现以来,还是有挺多的开发者完全出于兴趣来贡献代码,主要的代码还是我们自己在更新维护,上线不到半年的时间,Amaze UI在GitHub上已经名列国内最受欢迎的开发框架TOP10,有了两千多的Star。
CSDN:您曾说“Amaze UI是最懂中国程序员的开源HTML5跨屏前端框架”,能否从其功能或设计等方面举例说明?
陈本峰:“最懂中国程序员”主要突出一个点,就是我们的本土化。国外有许多非常有名的HTML5框架,但他们的字体都是英文,对中文字体没有任何设置。而对开发者来说,做一个网页,如果不设置字体的话,那么在不同的浏览器或操作系统下,显示出来的效果就是完全是默认的,排版会特别糟糕,而Amaze UI则专门针对中文做了很多优化。
其次,浏览器的兼容性也是一大问题。Amaze UI强调移动优先,先考虑移动平台上的诸多浏览器。今时今日,浏览器的概念与过去IE、火狐等独立浏览器俨然不同,只要是能够打开HTML5页面的容器都可以叫浏览器,而现在最大的浏览器非微信莫属,但国外的框架根本不可能想到对微信做兼容。除此之外,我们还会对手机百度,以及UC、QQ、360、傲游等手机浏览器进行兼容,这些都是非常具有本土特色的。
Amaze UI还有很多非常具有中国特色的组件,比如说菜单,国外的移动端菜单一般都是上下横线,按IE的规则将菜单收起来,强调简单,而中国的很多手机网站菜单都是直接平铺出来,整个网页内容很丰富,而我们做的这些界面特色非常适合中国的程序员,云适配就是帮助企业将PC网站转换为手机端网站。截止目前,我们大概已经转换了十几万的企业网站,同时也接触了大量的企业客户,对中国的市场需求最为了解,所以,我们说自己是最懂中国程序员的开发框架,因为中国程序员开发一个网页,势必会碰到这些问题。
CSDN:与jQuery等其他框架相比,Amaze UI上手难易度如何?有哪些优势?
陈本峰:在上手难易度这块,我们比较大的优势就是官方文档都是中文的,而国外框架的官方文档虽然有人翻译,但并不能涵盖全部,此外,我们还会直接在页面及文档中为开发者提供社区支持,这也是一种本土化的考虑。
Amaze UI与jQuery并不矛盾,而是互补关系。jQuery主要是让开发者去调用浏览器顶层的JavaScript API,中间有一层是调用底层的浏览器API。jQuery也有一个UI框架——jQuery UI,主要针对PC端,不跨屏,UI风格也比较老派,还有很多类似于弧形3D的效果,但如今在移动端的整体设计趋于扁平化,无论是iOS还是Android,都是扁平化设计。Amaze UI不仅能直接跨屏,其设计风格也非常符合现在移动端的需求。
CSDN:支持跨平台,为Amaze UI本身的研发带来了哪些技术挑战?
陈本峰:Amaze UI不止是跨平台,我们把它叫做跨屏跨平台,跨屏是指不同屏幕。Amaze UI有一个很大的好处就是开发者的网站一旦完成,手机、平板、PC三个屏幕适配也就全都有了,不用开发者再劳心劳力地去开发三个网站,而跨平台相对来说是HTML5本身的优势。
说到技术挑战,Amaze UI采用响应式设计(Responsive Design),将屏幕切分成12个网格,而其风格与网格链数会随着屏幕大小而发生变化,这就是响应式设计的概念,我们在设计网格系统时,会考虑到很多因素,以中国社区更容易理解的方式,在各种应用场景下,网格系统如何才能更好地服务。
CSDN:前段时间HTML5的定稿对于开发者和类似Amaze UI等前端框架分别具备哪些意义?
陈本峰:Amaze UI是中国第一个HTML5开源框架,我们从很早以前就开始在推行HTML5,但那个时候,相对于Native App而言,HTML5还处于一个比较劣势的状态。但从2014年下半年开始,尤其到年底,整个HTML5市场关注度越来越高,越来越多的人去从事HTML5开发,主要类型为游戏和广告,在去年,诸如神经猫等的HTML5游戏刷爆了朋友圈,而HTML5广告也开始出现。相对于得靠耗钱刷榜才能跻身排行榜的各大应用商店而言,微信朋友圈已经成为了开发者们的一个重要战场,只要做一个比较有意思的内容,就会有很多人帮你传播,而其成本要低很多。
所以,现在越来越多的企业开始转向HTML5,尤其是去年年底的HTML5定稿,又大幅地增加了开发者们对于HTML5的信心。我们明显感觉到,大家对HTML5的关注度一下子提升了许多。这样对我们的框架肯定有着非常积极的促进作用,因为当开发者们都在开发HTML5应用时,Amaze UI能够帮助他们节省很多时间,并提高开发效率。
CSDN:2015年关于Amaze UI会有哪些进一步的举措?
陈本峰:在Google提出Web组件化不久,W3C便将其作为一个标准来制定,而Facebook、雅虎等巨头公司也都加入进来,我认为这个标准是大家都公认的,它将是未来Web开发的一个趋势。Amaze UI在2015年的重点工作就是Web组件,打造这么一个Web组件开发规范,将所有组件标准化。
此外,我们还将引入一种现下非常流行的Web App开发框架。网页开发分为Web App和Web Site两种不同的概念,网站是由一个个页面组成,而Web App则完全是App的体验,使用HTML5开发,未来的发展肯定会朝向Web App,因为这个体验更好,但目前相对而言开发门槛比较高,作为一款框架,Amaze UI将做一种最基础性的工作,降低门槛,让程序员开发Web App比以前更简单。
本文为CSDN原创文章
html5将图片转换base64进行上传、解决微信内置浏览器上传图片问题
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>html5将图片转换base64进行上传、解决微信内置浏览器上传图片问题</title>
</head>
<body>
<script>
function readFile(obj){
var file = obj.files[0];
//判断类型是不是图片
if(!/image\/\w+/.test(file.type)){
alert("请确保文件为图像类型");
return false;
}
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(e){
alert(this.result); //就是base64
}
}
</script>
<input type="file" id="picFile" onchange="readFile(this)" />
</body>
</html>
扩展阅读:
html5将图片转换base64进行上传、解决微信内置浏览器上传图片问题
HTML5学习之FileReader接口
HTML5的FileReader接口封装 – FileReader.js
走向物联世界的应用
今天,成千上万的应用是为了让生活更加容易,无论是召唤出租车还是控制你的家庭供暖系统,理想情况下,这些应用应该作出正确的反应,因为它们收集了大量我们个人使用的数据。
但是我们目前所熟悉的应用主要还是集中于智能手机,外部设备通过无线科技被更好的集成,这时提供一个全新的应用群集将会改变我们的日常生活。因此,智能手机需要承担一个新的角色——互连世界的神经中心,技术人员更愿意称之为物联网。它已经开始,一些有趣的应用已经部署,这里有一些领域可以为投资者提供机会,同时品牌营销人员可以用一种崭新的方式去和消费者沟通。
从单一的健身追踪到全面的“万物开花”
已经流行起来的是类似Fitbit和Jawbone Up这类的腕戴活动追踪器,可以发送信息告知我们燃烧了多少卡路里,或者通知我们已给定某天的行程。然而苹果已经通过即将发布的Apple Watch改变了这一“游戏规则”。手表将不再仅限于健身,允许用户沟通、查阅天气甚至是心跳……
手表将集成来自其他品牌的应用,比如Nike,将包含它的Nike+应用作为设备的一部分。像其他的一些大的竞争者已经推出了自己的智能手表,如LG、Samsung和Motorola。Moto360能够做一些记笔记、玩游戏以及语音指令开车或行走方向的事情。
汽车的驾驶技术会比你好
在不久的将来,你的手机也将与你的汽车自动同步数据,包括使用频率、平均速度或汽车维护等。例如它会发送一个文本到你的手机上,告诉你是时候加油或检查汽车了。事实上今天已经有几个这样的应用,如Automatic、Torque和Mojio——利用汽车的OBD-II端口来收集你汽车的诊断数据并通过蓝牙适配器发送到你手机上。正如我们所看到的那样,谷歌无人驾驶汽车成为现实。并且在几年之内,所有的汽车都将配备Wi-Fi。
智能的家
很多人都应该知道Nest,一种家庭维护系统,让用户可以通过他们的智能手机来控制家庭恒温器或监视火灾的危害和CO2。不过目前很多公司正在努力开发更复杂的家庭安全和维护应用。例如一家名为Elgato的公司创造了一个新的家庭传感器,通过蓝牙技术收集空气压力、质量、温度、湿度以及用水量等数据。
下一站
这些只是冰山一角。将应用嵌入网络连接的设备,智能手机作为其神经中心,这是一个很大的机遇,而对于消费者而言,问题将集中在隐私领域。所以也需要有一种努力在这方面,让技术更好的满足于我们的生活。
☆ 十二星座都把什么放第一位?
白羊座:工作
受火星的影响,白羊座的人都有一种勇于冒险、不吝啬及领导的能力,特别是表现在工作方面,这是白羊座最大的魅力。白羊座的人天生具有很好的突击精神和精力,再加上积极努力的魄力,当灵感一闪,脑中立刻产生了构想及做法时,就会马上采取行动,做任何事都喜欢跑第一,立在最前端,充分的发挥领导的能力。
在他们心里,喜欢的事,最心爱的人,都不能动摇他们对于工作的冲劲。白羊就是一个典型的工作狂,所以,跟他们在一起前要慎重的考虑哦。
金牛座:金钱
金牛座对于金钱的热衷,其实源自于他们的没有安全感,他们认为谁都靠不住,只有紧紧握住兜里的钱才是正理。还有另外一点,没有安全感的金牛们都渴望拥有温 馨的家,让自己可以安心的生活,有责任感的他们总是希望自己能让家人享受到富足的生活。
拥有了爱人的金牛,则是希望自己能为爱人搭建起一个温暖的避风港,两人共享天伦之乐。金牛们笃信——贫贱夫妻百事哀。而实现这些,最现实的问题仍然是财政问题。因此,在没有成熟物质条件的情况下,金牛们往往不会匆忙地走入婚姻。不断充裕自己的财富始终是金牛们价值观的重点。他们一直认为有了面包才能有一切。
双子座:自己
多情,灵敏,善交际,这就是双子座。双子座的人非常擅于推销自己,不过个性多变,几乎可以用双面人来形容,双子的性格集合了12星座的各种特点,双子座是从冬季到春季之间,出现在银河东岸的一个星座。双子座的符号表示双胞胎的兄弟,其守护星为水星,守护神为支配知识的赫尔美斯。
在双子心里,没有很重要的东 西,几乎都是在一个位置,或者排行经常变化,有时候爱情重要,有时候亲情重要。不同的双子就更不一样了。要说稍微重要一点的,那就是自己了。这个唯一不变的信念。
巨蟹座:物质
天生缺乏安全感的巨蟹座,对巨蟹来说安全感来自两个方面,充足的金钱和稳固的家庭关系,缺一不可而物质首当其冲排在第一位,这样会给很多人错觉,觉得巨蟹 很虚伪,很势利,很自私,怪只能怪他们对现实过于理智,其实也是因为巨蟹家庭观念太深。
面包跟爱情都要,这样才能让自己过得更好,而跟金牛一样,没有面 包,爱情又怎么会幸福呢。所以,在巨蟹的心里,有了物质,才能有爱情,这是前提条件,也是保证。不过。巨蟹座是最执着的星座,他们对朋友、对家人的忠实,做事会一直坚持到底。
狮子座:亲情
不要看他们总是一副高高在上的样子,连头都不肯低下来。其实他们只是用这样高傲的样子来掩饰自己的没有安全感,自己的慌乱。他们是一个很让人心疼的星座,刀子嘴豆腐心永远不肯服输,他们不是不在乎爱情,只是,他们不敢去想,小说里的情节,会发生在自己的身上。
也许,狮子座更害怕被欺骗,他们有神经质,别人说了什么,就来回去想,想着想着就变了味道。狮子最会瞎想,常常想的自己都睡不着觉,跟他们相处时间长了,你就知道他们有多天真。他们最在乎的就是亲情,他们天生觉得家人是无人可比,要一辈子好好保护的。
处女座:学业
处女座追求完美,吹毛求疵是他们的特性。多数的处女座都很谦虚,但也因此给自己造成很大的压力。神经一直得不到放松,处于紧张得状态。处女座的人一般成绩 都能挺好。他们心思细腻谨慎,追求精确,想做的事一般都会努力兢兢业业的去做。
处女座的人很容易悲观,所以他们总是希望生活中人人都不要那么计较,天天可以过着无忧无虑的生活,在他们的心里,只有认真读书,才能有出息,才能保护想要保护的人,做想做的事,所以处女座的人一般都会认真的读书,以此达到自己心 中的梦想。
天秤座:利益
天秤座人对于细节的表现比较单一,但是表达起来却很上心。他们喜欢在一个方面表现得很强大,其中天秤座人对于社交或者交友都具有一定的技术手段。他们对于爱 情,友情,亲情,要求不多,也不会付出多大的心血。
其实天秤座最爱的是自己,他们为了让自己得到利益,可以装遍12个星座也在所不惜。他们不会为了利益放弃任何事,可以说,这是个外表看起来儒雅可人,风度翩翩,内里野心勃勃,利益当头的星座。
天蝎座:亲昵
天蝎座非常神秘,冥王星的守护给天蝎带来许多阴暗特质,天蝎座主管生殖器官,所以性欲旺盛,他们有着原始的性感躯体,把性爱放在第一位那也是不足为奇了。天蝎属于阴性,却由阳性火星守护,和白羊座人看似天差地别,却容易产生激烈的热情,结果往往还不错,让人意外。
天蝎座属于外冷内热型,俗称“闷骚”。一般脸部不会有有太大表情,可是他们的心里却很热情。这样的星座往往相处久了就会情不自禁的爱上TA,因为TA会在不知不觉中给你以体贴温柔的感觉,而外面却显得很刚硬,让人不自觉的心疼。
射手座:快乐
他就是个长不大的孩子,天真,爱玩,想要做的事一定会马上动手。射手阳光起来,可以纯真的像个孩子,本身射手就是爱玩爱自由的大孩子,爱上射手的人,最好 不要剥夺她玩的权利,否则她一定会逃跑。
而且如果射手不想你找到她的话,你就会一辈子找不到她。似乎没有什么可以束缚住他们,快乐便是他们生活的主题曲,有快乐足以。不管是亲情友情还是爱情,都能成为快乐的根源。而阻碍他快乐的根源的,他们会一一扫清。这也就是射手座经常不自觉的逃避的原因。
摩羯座:家人
生于寒冬,长于炎夏,是典型的外冷内热。可以抚慰他们那脆弱单薄的心的,他们觉得只有家人可以。摩羯座是十二星座中最有耐心,为事最小心、也是最善良的星座。他们做事脚踏实地,也比较固执,不达目的是不会放手的。
所以经常为了能给家人过上好日子而努力的奋斗事业,在他们心里,家人是第一位,可以为了他们做任何事,他们的忍耐力也是出奇的强大,同时也非常勤奋。他们心中总是背负着很多的责任感,但往往又很没有安全感,不会完全地相信别人。除了家人可以让他们无所顾忌的。
水瓶座:友情
很多人会把亲情,爱情排在第一位,可是水瓶座的人却总是把友情看得很重。他们对人友善又注重隐私。水瓶座绝对算得上是”友谊之星“,他喜欢结交每一类朋 友,但是确很难与他们交心,那需要很长的时间。他们对自己的家人就显得冷淡和疏远很多了。
由于受土星的影响,水瓶座的男生性格比较冷漠、孤僻,甚至在某些 特殊的情况下会表现得异常冷漠和不近人情。但是很多时候,他们又表现出幽默,善于交际的一面,并且还对人非常热忱,愿意帮助人。因此身边总有很多朋友,而 他们也渐渐把友情当成心里最重要的事。
双鱼座:爱情
这是一个很梦幻的星座,爱浪漫,爱幻想,爱童话。双鱼座是十二宫最后一个星座,他集合了所有星座的优缺点于一身,同时受水象星座的情绪化影响,使他们原来 复杂的性格又添加了更复杂的一笔。
在他们充满童话世界的脑海里,爱情是排在第一位的。黑马王子跟白雪公主的爱情故事那么动人心扉。他们已经完全迷醉在里面了。总幻想一些为了爱情抛弃事业,家人的戏码。
改良程序的11技巧
有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。
让我们看一些基本的编程技巧:
1、尽量保持方法简短
2、永远永远不要把同一个变量用于多个不同的目的
3、使用自描述的变量名和方法名
4、尽可能的把变量定义在靠近使用它的地方
5、拒绝神秘数字
6、友好的对待你的语言
7、不要逆常规而行
8、警惕过早优化
9、积极重构测试过的程序
10、不要过度沉迷于技巧
11、通过习例学习新知
现在,让我们把每个小点展开来详细讲一下。
1、尽量保持方法简短
尽管很多人都遵循这个规则,但它仍然非常的重要。你写的方法要始终能在一个屏幕里放得下。如果你需要去滚动屏幕,这会分散你的注意力,而且你看不到整个的上下文。最佳长度是5-20行,这根据你的情况而定。当然,getters/setters 通常是一行代码的方法,但与其说它们是真正的方法,不如说它们只是存取工具。
2.永远永远不要把同一个变量用于多个不同的目的
一个变量应该始终只为一个目的服务。通过使变量常量化(C++里的const, Java里的final),使得编译器能够优化编译,而且使你的代码醒目表达这个变量是不能改变的,你的程序的可读性会变得更好。
3.使用自描述的变量名和方法名
你的代码应该,对于任何人来说,只要看一眼就能知道是干嘛的。尽量不要用简写方式,除非有特殊的习惯,就像下面的:
src – source pos – position prev – previous
如果你认为描述性的名称并不是那么有价值,请对比一下n, ns, nsisd 和numTeamMembers, seatCount, numSeatsInStadium。
4.尽可能的把变量定义在靠近使用它的地方
盖房子时,你可不希望把锤子放到别人的院子里。你希望把它们放的离手头越近越好。定义变量也是同样的道理。
int foo = 3; int bar = 5; // 一大段使用“bar”的代码, // 但没用到“foo” // … baz(foo);
这段代码可以简单的重构成
int bar = 5; // 一大段使用“bar”的代码, // 但没用到“foo” // … int foo = 3; baz(foo);
当你把变量的声明和第一次用到它的地方间隔太远时(距离超过一个屏幕),这确实会成为一个问题。记住上下文关系会变得困难,你需要滚动屏幕去找哪来的这个变量。
5.拒绝神秘数字
当你要把什么东西跟一个常量值做比较时,记得把这个值定义成常量。没有什么会比去猜测你的同事写的这样的代码更让人头疼的事了:
il < 4384
换个形式感觉如何?
inputLength < MAX_INPUT_LENGTH
6.友好的对待你的语言
学习新语言是一种很有乐趣的事情,你能学到一种新的完成任务的途径。当一个对一种语言已经很专业的人去学习另一种语言时,会出现一种很大的负面效应。比如说你是一个Java开发者,试图去学习Ruby。你应该学会用Ruby的方式解决问题,而不是沿用Java的解决问题的思想。
当你需要重复5遍”Hello world!“时,在Java里,你可能会这样做:
for (int i = 0; i < 5; i++) { System.out.println("Hello world!"); }
在Ruby里,你也许会禁不住这样写:
for i in (0..5) puts “Hello world!” end
这样看起来没问题,但有一个更好的方式:
5.times { puts “Hello world!” }
7.不要逆常规而行
每种语言都有自己不同的习俗约定。一般来说,人们听的最多的是Java的编码规范。让我们看看其中的一些习俗规范:
●方法名应该小写字母开头,其后用字母大写的单词连接(veryLongVariableName)
●类名应该都使用首字母大写的单词连接而成
●常量名应该全部大写,用下划线连接(MY_CONSTANT)
●左大括号应该跟 if 语句在同一行
只有在有必要的理由时才去打破这些常规,不要轻易的因为你不高兴就违反它。如果你只是在团队里改变一些这样的习惯,那也没问题,但当把你代码拿出来和其他的没有这些思想准备的程序员共享时,问题就会来了。
8.警惕过早优化
过早优化是所有问题的根源,至少电视上是这么说的 … 你第一应该关心的事情是写出易于理解的代码。起初写的程序不要求快。除非你的程序很慢,否则谈优化都是为时太早。如果你想优化什么东西,你首先需要知道问题出在哪。这就是我们需要profilers这个工具的原因。
在没有知道问题在哪的情况下试图对程序进行优化,其结果必然是把程序能坏,至少你的代码会丧失可读性。如果你觉得有些地方很慢,不要盲目的重写代码,你应先找到慢的证据。
不要傻乎乎的去解决根本不存在的问题。
9.积极重构测试过的程序
没有任何东西会是完美的。即使你感觉你真正写出了一段完美的代码,几个月后回头再看看,你可能会惊讶道”怎么会这样傻?“
改进程序的一个好方法就是重构,但要等程序测试通过之后。你首先要确保程序是好的可运行的,你可以通过自动化测试或手工测试完成这个工作。
之初,你需要的是程序可用。不要期望在第一次就写出完美的程序,你只需要把它写出来,可用。然后重构它,使之完美。对于你们当中知道测试驱动开发(TDD)的人来说,对这个会很熟悉。这里的关键就在于你要习惯于重构这种事情。如果你使用的是像IntelliJ IDEA这样强大的集成开发工具的话,重构的工作会变得简单的多。
重构之后,你也许会弄出一些Bug,导致某些功能出问题。这就是为什么说写自动化测试的原因。不论何时重构后,只要运行一下所有的测试用例,你就能准确的知道什么地方出了问题。
10.不要过度沉迷于技巧
当我第一次读到有关设计模式的知识时,我觉得我找到了圣杯。这些精心设计的思想作用显著,它能使你的设计易于理解,因为你可以简单的说”我使用的是‘观察器模式’“,而不用从头到尾的解释一遍。那么,有问题吗?一切看起来都这么自然、简单,你开始不论在哪都使用设计模式。为什么不把这个类做成singleton呢?干嘛不去再创建一些工厂类呢?
于是一个80行就能写完的脚本,你最终使用了10个类,15个接口,外加一大堆范式和标记符。97%的代码不做任何事情。设计模式是一种十分有用的用来简化你的设计的工具,但这不意味着你该在所有能用到的地方都用它。你应该用它们,但不能滥用。
11.通过习例学习新知
编程是一种学习新知的过程。当你学到了新的程序库或新语言,你可能会迫不及待的丢掉旧的代码,用你新学到的东西重新写一遍。有很多的理由都能说明你不该这么做。
往现有的应用里增加新的类库或框架同属于这种情况。就说你写了一个Javascript的web应用,期间,你发现了jQuery。现在你突然急切的想丢到你的Javascript程序,重新用jQuery写,尽管你还从来没用过它。
最好的方式是你先用jQuery写一些简单的例子,通过这种方式把你在应用里将要用到的知识都学会。需要AJAX?在你的项目之外做一些小例子,当完全弄懂了后,丢掉例子,应用到你的产品里。
如果你非常关注编程技术,我强烈的推荐你阅读Steve McConnell写的《代码大全》 一书。它会永远的改变你对编程的认识。:)
年终奖后,程序员的下一站是?
不可免俗,说说在这么一个时间节点里,大家都在议论的问题——年终奖。舆论的喧嚣里,有百度年会中曝出的50个月工资的年终奖,有阿里3000股股票,相当于100个月工资的年终奖。剥离炒作的噱头,谁都明白,这是个别公司的个别案例。
更多人的真实情况或许如此:年终奖=1~4*月薪。纵是如上的百度、阿里土豪,大多数人也是2.6*月薪(百度),4~9*月薪(阿里)。
年终奖后的下一站是?
在这个节点,说到年终奖,自然要说到一个大家「心照不宣」的问题——年终奖后的去或留。对于占了互联网行业不小比重的程序员来说,去的人往往比留的人多。原因或与大环境有关。
多年前,互联网行业只是互联网行业,如今,互联网与其他行业已不再有「泾渭分明」的区分,因为快速发展的互联网、移动互联网已像一匹脱缰的野马冲入传统行业,如金融,如租车,如外卖……因此,以往只是传统IT行业和互联网行业需要程序员,到现在已是每一个行业都需要程序员。
除此之外,回想2014年,国内互联网领域共发生1878笔融资,融资总额超1000亿元人民币。创业公司的平均融资金额是2013年的3倍以上,每个月融资金额达到1000万美元的公司大概是20个左右。
于是,也就有了「程序员跳槽薪资便翻倍」的行业「潜规则」。不管「潜规则」的可实现程度到底有多高,不争的事实是:程序员在拿完年终奖后选择离开的比例肯定不在少数。面对如今的招聘网站及猎头市场,一个好的程序员怎样才能顺利地实现行业「潜规则」呢?
招聘网站?求助于主打信息流的招聘网站,对于一个好的程序员而言,时间成本显然太高,个人隐私也成问题。熟人介绍?个人资源的有限性注定可供选择的甲方太少。求助猎头?只想为企业服务的猎头公司,对求职者来说,风险不小。
这些都排除在外后,对程序员而言,还剩什么选择?有没有一个拥有更多选择,又能保护自己隐私的求职平台呢?其实,这类平台在市场上已有几家。不过,因规模、受众的原因,名气并不大。以其中的100offer 为例,你就会发现对程序员跳槽而言,这类平台是一个较为明智的选择。
为什么说明智?按一位曾使用过100offer的程序员的说法,他把自己的简历丢给100offer,进入100offer 的「拍卖库」后,他要做的就是等待机会找上自己,按自己的想法去选择工作机会。在这个过程中,也用不着担心公司知道,更不必接受来自各种不明猎头公司的电话骚扰。
最后的结果,自然是这位程序员顺利地拿到自己想要的薪水、自己想做的工作。
需要说明的是,对程序员而言,100offer 本身也是一个有门槛的平台。宽进严出,程序员都可在平台上进行注册,但只有5%的注册用户可以享受到「拍卖」服务。这5%是怎样的呢?是在互联网公司工作两年以上,年薪大于20万的程序员。
程序员的薪资有泡沫吗?
随着行业的发展,这两年,程序员的薪资也水涨船高,另一种声音也就来了:程序员的薪资有泡沫吗?关于这点,问答社区知乎也有过不少议论。
想说的是,程序员的薪资确是携了产业发展大势的幸运,但并不存在所谓的「泡沫」。
看几组并不精确的数据。2000年,软件业产值规模是 240 亿;2013年,软件业产值规模是3万亿。2000年,软件业从业人员15万人;2013年,软件业从业人员470万人。前一组数据中,若加上自2000年后快速发展的互联网行业,其产值规模更是不可估量。这也就意味着,这些年来,程序员创造的价值正成几何倍数递增,但薪资水平并没有按同等比例的倍数增加。
另外,在相当多的互联网企业研发部门中,月加班100小时是主流,按正常上班时间一天8小时计算,也就意味着,相比普通上班族,每月多出12天的工作时间。
所谓的薪资泡沫何在呢?
最后。文章并非鼓励程序员频繁跳槽,获得「溢价」,而是想让程序员获得「议价」,匹配自己创造的价值。后者也是类似于 100offer 这样的平台的价值所在。
别有用心的小米Note
3000多元,这是锤子手机起初的定价,后来迫于现实,锤子手机大幅调价。而在另一头,被资本市场热捧的小米在产品线拓展完中低端手机后,逆势而上推出了高端手机——小米Note,其顶配版本硬件非常炫目,但价格也达到了3299元。这一价格公布之后,网络上围观的用户一片哗然,不少人表示——小米性价比不再了、小米不再“发烧”、我何不再加1000多买iPhone……不仅如此,不少媒体和自媒体也纷纷发表类似的看法或看衰的言论。
对于3299元这一价格,小米联合创始人兼总裁林斌出席极客公园2015创新大会时称,小米Note 3299元的价格是贴着成本走的,依然主打性价比;而雷军也在一篇题为《为什么小米要做定价3299元高端手机》里指出,3299元依然是紧贴成本定价的,并且他还表示,这是小米用户的需要。
假设一个前提,如果他们说的确是事实,那么就有了两个疑问点:1.之前都是围绕1999价格成本推产品,为什么这次非要围绕2000和3000多的价格推产品?这真是小米——那群对价格比较敏感用户的需要吗?
这的确很难解释得通,但如果你看过发布会,或者仔细留心小米、雷军以及相关人的言论之后,你就会明白这一切是为什么了——小米生态系统需要一款高端手机,至少是价格上摆脱那群追求(Diao)性价比(丝)的用户。
他们曾反复宣传,小米推行“以手机为中心,连接所有智能设备”的战略,设计了“智能模块+通用控制中心+云服务”的智能家居整体解决方案,其中一些设备虽然不乏价格确实挺实惠,但整体的一揽子方案堆积起来,这不是那群对价格敏感用户所能承担的价格。另外这群用户也不太可能尝鲜,或许他们有尝鲜的想法,但消费习惯决定了他们不可能消费一些非必需品,他们最迫切的需求或许就是如何买得起房子、怎么去还房贷。从这点来看,小米庞大的生态圈(比如说智能家居)只能向一些有品位、解决了温饱并具备享受资本的人拓展,但这些人会用红米、小米4等千元系列手机吗?如果不用,实现用小米手机连接一切的战略就成了泡影,因此打开高端用户群体就成了关键。那如何突破这群“高端”用户?
商业调查记者、哈佛大学企业管理硕士出身的Charles Duhigg曾在《习惯的力量》揭示了一个奥秘:利用“暗示”、“惯常行为”和“奖赏”这三大要素可以影响消费者的习惯,他们不知不觉就会上商家的一些小把戏。如果说智能家居是奖赏,那么惯常行为就是他们喜欢追求有品质、不一样的生活,小米则就需要一个暗示来让这些“高端”用户形成习(上)惯(钩),因此3299元的小米Note或许就成了一个起点——暗示小米不Low,符合他们的生活品味。
雷军曾说过,小米的梦想是让每个人都能享受科技的乐趣,如果换另外一个角度进行解读的话,那就是小米的野心是想把所有人都圈在小米的生态圈内。若要实现这个梦想,小米生态圈的建设就应该从上往下,只有高端用户认可产品(尤其是智能家居领域),下面的用户才会跟进,然后顺延下来。
也许结局真如有些自媒体分析的,小米Note会步锤子手机的后尘——销量的确不咋的,但只要小米有高端手机,只要能突破其低端、廉价的形象,那么小米的目的就到了。
HTML5 VS 原生,世界究竟是谁的?
HTML5在近两年里可算是出尽了风头,无论是去年10月底的规范定稿,还是今年年初惊爆业内的微信开放JS SDK,亦或是腾讯、百度、360、搜狐等互联网巨头之间的布局争夺。这一切的一切似乎都在预示着HTML5将要给移动互联网界带来颠覆性变革。
也许以后,HTML5真的会重新定义移动互联网的黄金时代。但在此之前,当你准备开发一款应用时,切不可只一味的追寻别人所尊崇的技术,最重要的还是要搞清楚自己的整体需求。其中最为关键的问题包括“应用的受众是哪些?”、“用户想要获得的是什么?”,以及“吸引客户最好的策略是什么?”。其实,总的来说也就是两点:移动用户体验,劳动和资本投资需求。
既然有如此多的顾虑,那么总要选择最适合自己的开发方式。关于这个问题其实早就有各种分析,而这次我们再整体性的探索Web、原生以及混合应用开发之间的历史渊源。
Web应用:最小化成本,更新敏捷性
别看现在的HTML5风光无限,其实它的发展道路也是让人不胜唏嘘。自出生到去年规范的尘埃落定,长达8年的长跑真心不容易。其中最大的惨败要数2012年的Facebook事件,当时Facebook CEO扎克伯格怒言“押注HTML5是Facebook最大失误”,进而转战原生应用,这让支持HTML5的人受到了不小的打击。
还好,HTML5依然挺了过来,相继也出现了各种HTML5开发框架和游戏开发引擎。再加上,前段时间YouTube替换Flash,正式默认使用HTML5视频播放器,着实让HTML5好好的扬眉吐气了。一件事物能受欢迎,总归有受欢迎的理由。那么,HTML5又有那些优势?
“一次编写,随处运行”。大多数浏览器都有着相同的运行方式,一个应用几乎可以在所有浏览器上运行,不像限定于只能在某一系统下运行的原生应用。对于用户来说,“一次编写,随处运行”的HTML5应用意味着应用的连续性,即不管是哪个操作系统都可以运行使用应用程序。
允许应用不断更新。HTML5还允许不断更新,开发者不需要再将新应用提交给应用商店等待批准。每次用户登录到该web应用时,都将获得应用最新版本。
以上两点都是众所周知的,其实最主要的原因还是应用开发的成本问题。相较原生应用,能够随处运行的HTML5,单在移植方面就省下了不少银子。而且,面对新平台,无需高价聘请专业人士或培养现有的人员去重新学习,先前的Web技术人员就可以直接使用。
原生应用:最大化性能和用户体验
原生应用的历史要比Web应用悠久的多,如地址簿、日历和计算器等默认自带的应用程序及可用的Web连接在很早以前就出现在移动设备上,1998年风靡全球的诺基亚经典游戏贪吃蛇就是典型之一。就平均而言,如今开发者采用最广泛的开发方法仍是原生应用开发。虽然HTML5风头正胜,但拥有强大性能及高品质用户体验的原生应用能占据大头也不足为奇。
相对Web应用,原生应用最大的优势就是可以访问设备中的所有功能,运行的速度更快、性能更高,而且可以启用优秀的离线处理和存储能力。不过,别只关注它的优势,若想要维持原生开发绝对是个不小的挑战。它的最大问题就是支持的设备非常有限,想要移植到其他平台就得准备好更多的预算。此外,还有审核过程的不一导致上线时间不确定,以及获得新版本时还需重新下载应用更新。
如果,你做应用之前的预算是没有太多限制的话,只采用原生方法的团队所开发的应用质量,绝对要比其他团队高质的多。不过现实就是现实,很少有开发商的资金是源源不断的。
混合应用填补空白
所谓混合应用,顾名思义,就是原生和Web应用的结合体,自然也就继承了两者的优缺点。换句话说,相当于利用Web开发技术编写的原生应用,如HTML5、CSS、JavaScript都是进入原生容器(Native Container)的比较常用的语言,原生应用包含了一个链接到HTML文件的WebView隐藏浏览器。
总的来说,混合应用也是蛮有魅力的,开发者可以自由调配其中原生和Web的比例。它的好处也很多:
跨平台优势,既省钱又省时间,同时还是创意付诸实践的最佳捷径。
Web开发者不论水平如何,只需经过短期培训就能成为合格的混合应用开发者。
以上的两点都表明了混合应用对成本的节省,也算是它继承Web的一大优点。不过,混合应用的性能终究还是比不过原生应用,如果其中掺入了太多的Web技术,还是会减缓应用的运行速度。但随着技术的不断提升,混合应用开发也在水涨船高,在不断的寻找在获得优秀用户体验的同时,尽力降低开发成本。
定睛2015,你是HTML5还是原生应用?
对于移动互联网未来的发展走向,没有人能够进行准确的预测,其中存在很多的变量。都说HTML5的时代真的来了,但是总觉得HTML5与原生应用之间并不存在激烈的竞争替代关系。各自有各自的优缺点,最终选择何种方式还是取决于自己项目的需求。而作为妥协存在的混合应用,倒也是不错的选择。
也许在2015年,HTML5真的会打造出一个更进一步的移动生态圈,不过最终结果如何还是取决于开发者,毕竟开发者在移动互联网发展中起着核心作用。你是选择原始的开发形式还是独辟蹊径的去探寻新的道路,亦或借助HTML5这道风口,随之起飞?不妨说出你的观点,我们洗耳恭听。
程序猿的故事,看罢不禁捂紧胸口。。。
程序猿问科比:“你为什么这么成功? ”
科比:“你知道洛杉矶凌晨四点是什么样子吗? ”
程序猿:“知道,一般那个时候我还在写代码,怎么了?”
科比:“额…….”
二、
女神:你能让这个论坛的人都吵起来,我今晚就跟你走。
程序猿:PHP语言是最好的语言!
论坛炸锅了,各种吵架。
女神:服了你了,我们走吧,你想干啥都行。
程序猿:今天不行,我一定要说服他们,PHP语言是最好的语言。
三、
我是一个苦b的程序员,今晚加班到快通宵了,困得快睁不开眼了,女上司很关心,问我要不要吃宵夜。我没好气地说,宵夜就算了,能让我睡一觉就行了。女上司红着脸说了句讨厌啊,然后坐在我身边不动,好像距离我很近,搞得我很紧张,难道她发现我的程序出了bug?
四、
老公一定要找程序员!!!!!!
钱多话少死的早
五、
老婆给当程序员的老公打电话:“下班顺路买一斤包子带回来,如果看到卖西瓜的,就买一个。”
当晚,程序员老公手捧一个包子进了家门……
老婆怒道:“你怎么就买了一个包子?!”
老公答曰:“因为看到了卖西瓜的。”
七、
某人发帖子:“各位JR,我想做一个程序猿,请问有什么要注意的……”
某猿:“等我下班跟你细说……”
然后……就没有然后了我问程序员朋友借了1000,他说再多借你24吧,凑个整
九、
程序员A: “我吃鱼香肉丝盖饭, 你吃什么?”
程序员B: “宫保鸡丁盖饭.”
程序员A 在点菜单写上:
鱼香肉丝盖饭 1
宫保鸡丁盖饭 1
程序员B: “我还是要牛肉面吧!”
程序员A 更正点菜单:
鱼香肉丝盖饭 1
// 宫保鸡丁盖饭 1
牛肉面 1
十、
我是一个程序猿,一天我坐在路边一边喝水一边苦苦检查bug,这时一个乞丐在我边上坐下了,开始要饭,我觉得他可怜,就给了他一块钱,然后接着调试程序。他可能生意不好,就无聊的看看我在干什么,然后过了一会,他幽幽说,这里少了一个分号。
我惊奇的问:“你也懂这行啊” 乞丐说:“我以前就是做这个的。”
十一、
某程序员退休后决定练习书法,于是重金购买文房四宝。一日,饭后突生雅兴,一番研墨拟纸,并点上上好檀香。定神片刻,泼墨挥毫,郑重地写下一行字:hello world!
十二、
搞IT太辛苦了,想换一行怎么办?”“敲一下Enter键。”
十三、
程序员不喜欢乾隆的第八个儿子,因为八阿哥 bug
十四、
一女同学在食堂吃饭时,一程序猿凑到旁边,“同学,我能和你说话不,我已经一个月没和女生说话了。
十五、
两个程序员在聊天:“我昨天碰到个辣妹。我把她带回家,马上就开始如饥似渴地亲吻,她就坐在我的键盘上,然后……”“你在家里也有台电脑?CPU是什么型号的?”
十六、
程序员的读书历程:x 语言入门 —> x 语言应用实践 —> x 语言高阶编程 —> x 语言的科学与艺术 —> 编程之美 —> 编程之道 —> 编程之禅—> 颈椎病康复指南。
史上最贵域名360.com指向好搜 360搜索业务进军国际前奏?
连日来,有关奇虎360斥巨资近1亿收购360.com域名的消息引发高度关注,创下了国内创造国内购买域名价格的新记录,堪称史上最贵域名。对于360收购360.com域名的原因,有消息指出,360或将与沃达丰合作联合推出360品牌手机。不过,根据最新消息显示,截止到目前,这一史上最贵域名360.com已经跳转到360旗下独立搜索品牌“好搜”的首页。
(在网址栏中直接输入360.com域名,直接跳转至好搜的首页)
360豪掷1700万美元(约合1亿元人民币)买下域名360.com,其目的就在于助力好搜加速实现中国第一搜索品牌这个目标?据了解,今年1月初,360搜索高调宣布以独立品牌方式,推出了独立搜索品牌“好搜”,并采用中文双拼域名haosou.com。那么,360此次又为何以1亿重金买下360.com这一新域名?这一举动让人颇为疑惑。
对此,有业内人士认为,360董事长周鸿祎早在雅虎时期,就有着浓厚的搜索情节。至今在360,搜索也是除了核心安全之外的最重要业务。因此,360不惜斥巨资买下360.com这一域名,最重要目的极有可能是好搜进军国际市场,提前布局铺路。
为什么说可能是进军国际化的前奏?一方面,作为360在搜索领域的最大竞争对手,百度于去年7月调推出葡语搜索进军巴西市场,此前百度在海外已经相继推出了泰语搜索与阿拉伯搜索。而360在搜索领域一直采取死磕百度的市场策略,这次买下360.com国际域名,其极有可能同样进军国际市场;另一方面,从国外用户品牌认知与使用习惯来讲,360拥有更高的品牌知名度,360.com也属于国际通用域名,对国外用户有着其他域名难以比拟的优势。
不难看出,360.com域名跳转好搜,不只是一次简单的域名跳转,这一意味着360或在2015年不断加码搜索业务,剑指中国搜索头把交椅。去年8月,360搜索市场份额突破30%,仅隔四个月之后,360再度祭出大动作,以独立品牌方式推出“好搜”重点发力移动端,再到如今斥巨资1亿元买下360.com新域名,这一连串的举措,或将搅动整个搜索市场格局。可以预见的是,2015年搜索市场的竞争无疑将更加激烈。