Web basic: 各种协议的简单理解(TCP,IP,HTTP)

Web开发涉及到很多协议,这些东西很抽象,不好理解,最好是按照自己熟悉的方式去理解。

TCP: transmission Control protocol

TCP enable the information can be broken into small packages and sent between clients and servers. If a packet is lost somewhere along the way the sender and receiver have a way of figuring out which of the packages is missing and request that they be resent.

IP: Internet protocol。IP takes care of the communication between computers. It is responsible for addressing, sending and receiving the data packets over the internet。IP is responsible for “routing” each packet to the correct destination. 而DNS就是an online phonebook, convert URL to IP address.

HTTP:hypertext transfer protocol. HTTP takes care of the communication between a web server and a web browser. HTTP is used for sending requests from a web client to a web server, and returning web content from the server back to the client. HTTP是更加偏向应用层的协议,跟TCP是更加底层的。

有一个抽象的例子能比较好的说明这三个协议的关系:IP就像是路标,能够让其他的协议通过它找个正确的计算机。而TCP就像是卡车,负责确定信息传递的机制。TCP卡车上的货物就是HTTP之类的协议。

one more thing, 关于HTTP server 和 web server的区别?其实没什么区别,不同的理解方式。因为Web server 是指网站服务器,指驻留于Internet上某种类型的计算机程序,可以向浏览器等web客户端提供文档,也可以防止网站文件,让全世界浏览,可以防止数据文件,让全世界下载,目前最流行的三个web 服务器是Apache, Nginx , IIS。由于服务器采用HTTP协议与客户机浏览器进行信息交流,所以人们也成他们为HTTP服务器。

Angularjs: scope概念的要点

1.首先W3C上对Scope的解释:

The scope is the binding part between the HTML (view) and the JavaScript (controller).

The scope is an object with the available properties and methods.

The scope is available for both the view and the controller.

也就是说,scope是一个对象,所以它自然也能定义属性和方法。从整体的角度看,scopecontrollerview连接起来。

2.如何使用scope呢?

usage:

  • $scope对象以参数形式传给controller
  • 然后在controller函数中,给$scope对象添加属性或者方法
  • 通过框架后台的控制,view的部分也就是html元素就能够access 到这些属性,而且在view里使用这些属性变量的时候,不需要使用$scope的前缀

3.从MVC的角度理解scope

View: HTML tag元素,主要负责整个app的结构和展示。

Model:是当前view的数据。Model是数据。

Controller:是JS function,能够用来生成,修改和控制数据,主要负责逻辑的部分。

那么从这个角度来说,scope就是model。所以scope就是js的一个对象,包含着数据和方法,而这些对于view controller来说都是可见的。

第二点关于scope的继承

“Scope are controllers specific. If we defines nested controllers then child controller will inherit the scope of its parent controller.”

这个地方的define 嵌套controllers说的,是在html元素上定义。而从js function的角度看,他们彼此之间是并列的。

比如下面的例子:

2

最外层divcontroller shapeController,而它下面还有两个div,它们的controller分别是circleControllersquareController

controller的具体函数看,shapeController里面定义了messagetype.

circleController的函数里,只是定义了message,所以circleControllerscope中,message会被override,而type会被继承。

上面这段code output是:

3

过时的Tcl语言居然还挺值钱

这是招聘网站Dice给出的数据,列举了最赚钱的40个IT技能。

最大的亮点是Tcl语言居然排在第11位,比排在15名的hadoop还要高。排在前10位的都是最新的cloud元计算技术。

Tcl作为一门基本已经过时的语言有个位置让人真的很意外。因为工作原因我曾经在一段时间内大量的使用了Tcl语言,主要是开发几个脚本插件,来做数据分析。

其实这里面还是有行业的问题,据说在硅农的世界里,Tcl简直就是标准语言,就像JS之于web开发类似的作用。

单独从语法来说,Tcl相比其他的脚本比如python,还是有很多不方便的地方的,语法非常的麻烦,尤其如果要处理多维的数组,那就麻烦死了,python里面一个index就能解决的问题,在Tcl要写很长很长的命令。硅农的世界还是被互联网远远的甩下了。

Tcl语言的发明人是个大学教授,之后进入了Sun公司继续做Tcl的持续开发,那是90年代中期的事情了,进入互联网时代之后,他开始转向了网络系统的研究,不过貌似都不如Tcl成功。

http://www.businessinsider.com/tech-skills-that-will-get-you-120000-2016-2

 

Javascript的闭包

  • 闭包是一个编程领域中很general的一个问题
  • js中的闭包跟js的特殊的变量作用域有关系:函数内部可以直接读取全局变量,但是函数外部无法读取全局变量
  • 闭包就是为了实现:读取函数内部的局部变量的
  • 闭包是一种变通的方法:其实是定义在函数内部的一个函数,因为只有函数内部的子函数才可以读取局部变量,然后再把这个子函数当做返回值return即可
  • 所以闭包就是函数内部和函数外部连接的桥梁

1Machine generated alternative text: function flQ{ var n=999; function f2Q{ alert (n) ; } return f2; } var result=flQ; resultQ; II 999

上面这个代码中,f2就是闭包函数

2016年美国25大高薪公司

Glassdoor给出的分析结果:

基本分布:咨询公司5家,科技公司15家(其中芯片行业依然有4家进入,其他的都是云计算、网络设备和互联网)

25 Broadcom:硅农行业, 14万刀

24 Adobe: 传统软件,14万刀

23 F5 Networks: 不是很熟悉,网络设备公司,14万刀

22 微软:14.1万刀

21 Salesforce: 国内一直不出名的公司,云计算行业,14.3万刀

20 Cloudera: hadoop的发布商,14.5万刀

19 Linkedin: 14.5万刀

18 Altera: 貌似是FPGA的厂子,又一家硅农公司,14.7万刀

17 Synopsys: EDA大厂,14.8万刀

16 SAP: 国内感觉像IT咨询的,14.8万刀

15 沃尔玛电商部门:14.9万刀

14 Box:云存储公司,15 万刀

13 Twitter: 15 万刀

12 Facebook: 15 万刀

11 visa: 开卡的公司,15 万刀

10 Cadence: EDA行业,又一个大厂,第四家硅农公司,15 万刀

9 Guidewire: 完全不知道的公司,软件公司,保险行业,15 万刀

8 Boston Consulting Group波士顿咨询: 咨询公司都是top10, 15 万刀

7 Amazon Lab: 亚马逊的研发部分,kindle的制造商, 15 万刀

6 VMware: 云计算公司,15 .2万刀

5 谷歌: 15.3 万刀

4 麦肯锡: 又一家咨询大厂,15.5万刀

3 Jupiter Networks: 网络设备公司,这家貌似是土豪,15.7 万刀

2 Strategy(普华永道的一部分): 审计和咨询服务,16 万刀

1 A.T Kearney: 中文叫科尼尔,还是咨询大厂 16.7 万刀

 

Bootstrap,navbar解析

决心拿下bootstrap作为web前端开发的一个便利工具。而学习过程中,发现如果没有对CSS和div布局的积累经验,很难去体会到bootstrap的好处,另外也不太能理解它的设计原理。

不过发现一个比较好的学习方法:有一个属性不太理解它的功能,就把它先注销掉,让看看UI的效果上有什么变化,从变化上就能很容易的知道它的功能。这样试验的多了,就能摸索出规律。

比如下面这段navbar的代码:
1

各个部分之间都是什么作用和关系呢?

1 所有的navbar都要包裹在一对nav tag之间,class=”navbar navbar-default”

2 之后分为两个部分,分别包含在两个div之间: navbar-header和navbar-collapse

3 navbar-header又包括了两个部分:button和一个链接元素<a>

3.1  button的class是navbar-toggle,这个class决定了它的设计和位置等等,如果注销掉这个class属性,那么得到的UI是下面这个样子:
3.1

(contacts manager 右上角那个小方框,就是button)

3.2 而data-toggle这个属性,决定了点击这个button之后,能否有navbar的extend和collapse效果

3.3 而data-target这个属性,对应着下面的navbar-collapse的div,注意到它的id与data-target=”#nav-toggle”相互对应

3.4 另外,<span class=”icon-bar”>是为了丰富button的UI效果的,具体可以看下面这个两个对比的图.(注销掉三个<span class=”icon-bar”>的元素)button的效果

3.2

(保留三个<span class=”icon-bar”>的元素)button的效果3.4

4 第二个div的navbar-collapse这个属性,决定了这个div之内的元素可以实现extend和collapse之间的toggle效果

4.1 而ul元素的navbar-nav属性,能够让下层的li元素符合bootstrap的风格,一旦注销掉就是这个样子

3.9

4.2 form表单的class有两个:navbar-form navbar-right,分别定义了UI上styling的效果和靠右的位置

3.6

如果保留navbar-right,那个form就被放置在最有端

3.7Machine generated alternative text: Contacts Manager Browse Add Contact Search

 

The rise of Larry Page

Larry Page是白羊座创业的典型,有冲劲,又有些厌烦常规管理。。。

 

1 Page的父母都是Michigan州立大学的计算机教授,家学还是比较深厚的。Page也是在Michigan读的大学。之后才去的斯坦福。

2 少年时代Larry Page上的是一个鼓励创新的学校,在那里他学会了很多,按照他的原话是”not following rules and orders, and being self-motivated and questioning what’s going on in the world”,简单说就是自我驱动,不简单的遵守规则,勇敢质疑。

3 12岁的时候,他读了伟大发明家Nikola Tesla的自传。特斯拉是很伟大的人物,拥有很多的发明,却在负债中郁闷死去,这些经历的启示是”

not only want to build world-changing technologies, but to have the business sense to know how to spread them Invent things wasn’t any good, you had to get them out into the world and have people use them to have any effect”

4 创立谷歌之后,Larry Page的兴趣在于构想伟大的想法,对于繁琐的公司管理实务并不感兴趣,所以他找来了管理高手做了CEO。

 

5 不过2011年重新成为CEO之后,他对自己提了这些要求:

Don’t delegate: Do everything you can yourself to make things go faster.

Don’t get in the way if you’re not adding value. Let the people actually doing the work talk to each other while you go do something else.

Don’t be a bureaucrat.

Ideas are more important than age. Just because someone is junior doesn’t mean they don’t deserve respect and cooperation.

The worst thing you can do is stop someone from doing something by saying, “No. Period.” If you say no, you have to help them find a better way to get it done.

这些要求对自己无疑是太狠了,如果都能做到,那是得多厉害。

http://www.businessinsider.com/the-life-career-of-larry-page-2016-3

Peter Thiel的发展之路

Business insider每个一段时间就会出一篇The rise of xxx的你文章,一般就是介绍某个硅谷英豪的职业发展过程,从每个大牛的发展中都能看出他们对自己事业的追求和一些独特的个性,很值得学习。。。, 挑几个点mark一下:

Peter Thiel法学专业出身的投资大牛,应该很知名了

  • 在斯坦福的经历,让他认识了很多后来的创业伙伴。
  • Peter Thiel肯定是聪明的, 曾经是全美21岁以下棋类冠军。
  • 他还有一段失败的求职经历,曾经想给美国最高法院的大法官当助理,结果没得到offer,对于一个法学出身的人,当时对他的打击巨大。
  • 没能当上大法官的助理,Peter Thiel之后在瑞银获了衍生品trader的工作,高薪估计是一定的了,据说美国金融行业,最赚钱的就是trader,那是美国白人男性的天下,中国学霸没有语言优势,去了只能做quant(金融行业的技术工),在那里攒够了钱,创立了paypel。
  • 从paypel离场之后,最早的投资了facebook,不过没有投资B轮,据他自己称这是此生最大的遗憾。
  • 几年之后创立了palantir,一家硅谷最神秘的大数据公司,客户都是CIA之类的政府部门。
  • 回忆少年时代,Peter Thiel很少看电视,而是读书。很多创业公司的名字都来自书中的灵感,比如palantir就来自指环王。
  • Peter Thiel鄙视没有突破的创新,认为那是毫无用处的。他的畅销书《从0到1》就是对这种思路的全面解释。
  • 他最疯狂的追求是对抗人类的衰老,他自己打算活到120岁。投资了几个类似的生物科技公司,真实佩服的厉害。
  • 从骨子里面讲,他拥有自由主义者的本质。

原文链接:

http://www.businessinsider.com/the-rise-of-peter-thiel-2016-4