202002-程序员小知识

                                202002-程序员小知识

目录

CSDN 和 RUNOOB 名称由来

什么是ECMAScript

安装文件MSI文件和EXE文件有什么区别?

什么是代码部署?

镜像网站

什么是引擎?

前言

从词源说起

游戏与状态

汽车的状态

调度与规则

代码库与接口

总结

Node.js是属于前端还是后端的技术?

给程序员的几条建议,精彩配图 | 菜鸟教程

npm是干什么的?

社区

共享代码

麻烦

具体步骤

发展

后续

社区的力量

npm与cnpm的区别


一等码农搞算法,吃香喝辣调调参

二等码农搞架构,高并低延能吹牛

三等码农搞工程,怼天怼地怼 PM

四等码农搞前端,浮层像素老黄牛

CSDN 和 RUNOOB 名称由来

CSDN创立于1999年,是中国最大的IT社区和服务平台,服务于中国的软件开发者和IT从业者。CSDN就是Chinese Software Developer Network 的简写。 

RUNOOB为Running Noob 的缩写,意为:奔跑吧!菜鸟。

什么是ECMAScript

    有的同学可能会好奇,为什么js的版本要用es+年份(例如es2015,es2016等),而不是js+年份,这就要说到ECMAScript(简称es),ECMAScript是一个语言标准,javascript则是基于这个标准实现的脚本语言。

    这么说可能有点抽象,我们还是稍微来了解一下javascript的历史。

    javascript于1996年发布了第一版,当时的名字其实不叫javascipt,而是叫livescript,不过发布之后一直不温不火,正好这个时候sun公司推出来了一个面向对象的语言—Java,Java拥有很好的跨平台特性,一处编写处处执行,很快得到了市场的认可。

    为了蹭Java的热度,livescript的母公司Netscape,也就是王景公司,就将livescript改为javascript,事实证明,这次名字改的非常明智。

    javascript的火爆引起了微软公司的注意,他们很快也推出了Jscript脚本语言,以此来抗衡Netscape公司,并且当时还有一门浏览器脚本语言,叫ScriptEase,这样市场上就有了三种脚本语言,并且各个语言各有特色,互不兼容。

    1997年,Netscape给欧洲计算机制造商协会(European Computer ManufacturersAssociation,简称ECMA)提交了一个草案,要求根据javascript来制定一个浏览器脚本语言标准。ECMA邀请了Netscape、Sun、微软、Borland和其他一些对脚本编程感兴趣的公司的程序员组成了一个技术委员会—第 39 技术委员会(TC39),共同商讨制定了一个脚本语言的规范:ECMAScript。各个脚本语言必须按照规范来实现和约束自己的功能。

    当然这个规范也是不断发展的,第一版规范叫做:ECMA-262,现在则以es+年份来命名,基本每年发一次新规范。

安装文件MSI文件和EXE文件有什么区别?

    msi是Windows installer开发出来的程序安装文件,它可以让你安装,修改,卸载你所安装的程序.说白了msi就是Windows installer的数据包,把所有和安装文件相关的内容封装在一个包里了.

    setup.exe也允许你安装程序,但程序员在开发setup.exe的时候要比开发setup.msi困难的多,需要人工编写和安装,修改,卸载相关的很多内容.而msi把这写功能都集成化了,易于开发WINDWOS程序安装包

什么是代码部署?

 部署就是把代码上传到服务器,就是个文件传输功能。把文件上传到服务器以后,安装(nignx tomocat等服务器软件)中间件软件监听端口,取放文件数据就是了。服务器里的东西上一次就是部署一次。

镜像网站

 镜像网站是将一个完全相同的站点放到几个服务器,分别有自己的URL,在这些服务器上互为镜像网站。它和主站并没有太大差别,或者可算是为主站作的后备措施。有了镜像网站的好处是:如果不能对主站作正常访问(如某个服务器死掉或出了意外),但仍能通过其它服务器正常浏览。相对来说主站在速度等各方面比镜像站点略胜一筹。

 镜像下载是你可以选择离你较近的服务器下载,和主站一样,不过速度比较快^^

什么是引擎?

前言

引擎这个词在编程中出现越来越多,比如游戏引擎,爬虫引擎,规则引擎。引擎这个最初在汽车里面代表发动机的词,到底是指什么意思,而引擎在不同编程的语境中具体又代表了什么,本文就是为了解释这些疑问而写的。

从词源说起

引擎,中文百度百科说的是汽车动力的来源。换句话说,就是驱动汽车发动、前进、加速的一种组件。当引擎用在游戏中时,游戏引擎指的是控制所有游戏功能的主程序。

游戏与状态

在游戏中,引擎被抽象为控制所有游戏功能的主程序。那么,游戏引擎如何控制游戏功能呢?想象我们再玩一个网络游戏,首先有一个游戏图,然后我们输入一些操作,控制人物的行为,人物在游戏中与游戏中的对象进行交互,从而产生一种新的状态。

如果把游戏中所有的对象看作状态机,游戏引擎就是改变状态的规则,它定义了对象(状态机)在什么情况下应该转变为另一种状态并且完成这个状态的转换。

汽车的状态

汽车,开始是静止状态。引擎,定义了当打火的时候汽车发动,当踩油门的时候,引擎会让汽车进行加速。引擎是改变状态的动力,它定义了状态如何改变并且将这种改变实现。在物理世界中,引擎通过复杂的物理过程实现状态的改变;在代码世界中,引擎通过代码的执行和调用实现程序状态的改变。

调度与规则

而引擎在调用的时候,如果资源很少直接进行调用,不会出什么问题(甚至不需要所谓引擎的概念,直接运行一个所有代码的在main函数里面的程序即可)。当需要调用的资源/函数很多的时候,引擎还承担起调度的功能,资源之间相互具有依赖性,先执行什么,再执行什么,这个由引擎来决定。拿汽车举例,发动汽车气缸内的物理过程顺序不能错,否则就会出现不同的结果。物理过程,可以理解为使引擎内部的自然规则,在实际代码中,我们可以自定义自己的规则。

代码库与接口

还有一种理解是,引擎就是为了实现某个功能已经封装好的库。有人也许会问,这和API有什么区别?API是提供调用封装好的库的接口,一个引擎为了完成某个功能,必然会调用已经实现的函数代码的接口,并且这种调用是基于引擎功能而制定的调用组合。引擎这个概念,其实也就是抽象,在更高一个层面看代码,将森林简化成一棵树。

总结

从状态的角度讲,引擎是为了实现状态的转换。而状态的转换,需要定义规则。即在什么情况下作出什么反应。

从功能的角度讲,引擎是封装了代码/函数库,通过调用代码/函数库的接口来实现特定的功能。

从抽象的角度讲,引擎简化了我们看问题的视角。使得我们通过引擎就可以对程序的功能状态进行改变,从而实现丰富的内容和功能。

Node.js是属于前端还是后端的技术?

首先你得了解什么nodejs,其次了解什么后端技术及作用

1.node.js组成:谷歌浏览器的V8引擎、C++语言编写的,本质上是一个JavaScript的运行环境。提到js,就能想到浏览器里面的各种交互组件,异步请求等等,它们依靠浏览器JavaScript 的引擎,来解析页面的js代码。

2.目前流行的后端语言就是PHP、Java、.Net,使用后端语言实现服务器上的开发叫做后端技术。

3.nodejs就是让JavaScript(js)可以实现服务器上的开发。

4.JavaScript(前端语言)+nodejs(JavaScript的运行环境)=实现服务器上的开发(后端技术),也就是说js+nodejs实现了后端开发的技术。

给程序员的几条建议,精彩配图 | 菜鸟教程

1.想清楚,再动手写代码

刚入行的新手,为了展示自己的能力,拿到需求迫不及待地就开始上手写代码,大忌! 在我看来真正写代码的时间只有20%,如果不想清楚,其他的80%时间在改bug。

2.不交流,就会头破血流

不爱说话和沟通,容易产生需求理解错误,最后做出来才发现不是产品要求的。 很多功能推倒重来都是不交流产生的。

3.文档没人看,但还是要写

文档的作用大部分时候不是用来沟通的,是用来做记录的,大部分需求还是通过口头沟通,但是不写文档做记录,后续就容易扯皮。

4.一定要写注释

不写注释就是给自己和别人挖坑,因为时间久了,你会连自己的代码都看不懂。

5.别指望需求会稳定

产品需求是根据商业需求不断调整的,改需求是再正常不过的事,别抱怨,这个世界上唯一不变的就是变化。

6.业务高于技术

如果技术不为公司商业做服务,那将毫无价值,公司赚钱才是硬道理,所以不太建议大家追求新技术,而是多注重成熟技术在商业公司上的应用。

7.不要心存侥幸

你隐约感觉会出bug的地方,就一定会出bug。

8.自己先测几遍

不要写完就扔给测试人员去测,经自己手的东西,要保证质量。

9.尽可能自己解决问题

遇到不懂的问题,要先尽力解决(Google,Stack Overflow等90%问题都能解决),别动不动就截个图扔在别人求帮忙,上司和同事不是来给你擦屁股的,但是真的搞砸了就要尽快求助。

10.慎用新技术

别去追求新技术,新技术都是 beta 版本,在大神还没写出清晰的中文入门文档之前,自作主张用了,多半是作死。

npm是干什么的?

网上的 npm 教程主要都在讲怎么安装、配置和使用 npm,却不告诉新人「为什么要使用 npm」。今天我就来讲讲这个话题。

本文目标读者是「不太了解 npm 的新人」,大神您别看了,不然又说我啰嗦了 。

社区

程序员自古以来就有社区文化:

社区的意思是:拥有共同职业或兴趣的人们,自发组织在一起,通过分享信息和资源进行合作。虚拟社区的参与者经常会在线讨论相关话题,或访问某些网站。

前端程序员也有社区,世界上最大的前端社区应该就是 GitHub 了。前端通过 GitHub 来

  1. 1. 分享源代码(线上代码仓库)

  2. 2. 讨论问题(Issue 列表)

  3. 3. 收集学习资源和常去的网站(比如我收集的优质中文前端博客

 

加入社区最大的好处之一是,你可以使用别人贡献的代码,你也可以贡献代码给别人用。

共享代码

前端是怎么共享代码的呢?

在 GitHub 还没有兴起的年代,前端是通过网址来共享代码

比如你想使用 jQuery,那么你点击 jQuery 网站上提供的链接就可以下载 jQuery,放到自己的网站上使用

 

uploading.4e448015.gif转存失败重新上传取消

GItHub 兴起之后,社区中也有人使用 GitHub 的下载功能:

uploading.4e448015.gif转存失败重新上传取消

麻烦

当一个网站依赖的代码越来越多,程序员发现这是一件很麻烦的事情:

  1. 1. 去 jQuery 官网下载 jQuery

  2. 2. 去 BootStrap 官网下载 BootStrap

  3. 3. 去 Underscore 官网下载 Underscore

  4. 4. ……

 

有些程序员就受不鸟了,一个拥有三大美德的程序员 Isaac Z. Schlueter (以下简称 Isaaz)给出一个解决方案:用一个工具把这些代码集中到一起来管理吧!

 

这个工具就是他用 JavaScript (运行在 Node.js 上)写的 npm,全称是 Node Package Manager

具体步骤

NPM 的思路大概是这样的:

1. 买个服务器作为代码仓库(registry),在里面放所有需要被共享的代码

2. 发邮件通知 jQuery、Bootstrap、Underscore 作者使用 npm publish 把代码提交到 registry 上,分别取名 jquery、bootstrap 和 underscore(注意大小写)

3. 社区里的其他人如果想使用这些代码,就把 jquery、bootstrap 和 underscore 写到 package.json 里,然后运行 npm install ,npm 就会帮他们下载代码

4. 下载完的代码出现在 node_modules 目录里,可以随意使用了。

这些可以被使用的代码被叫做「包」(package),这就是 NPM 名字的由来:Node Package(包) Manager(管理器)。

发展

Isaaz 通知 jQuery 作者 John Resig,他会答应吗?这事儿不一定啊,对不对。

只有社区里的人都觉得 「npm 是个宝」的时候,John Resig 才会考虑使用 npm。

那么 npm 是怎么火的呢?

npm 的发展是跟 Node.js 的发展相辅相成的。

Node.js 是由一个在德国工作的美国程序员 Ryan Dahl 写的。他写了 Node.js,但是 Node.js 缺少一个包管理器,于是他和 npm 的作者一拍即合、抱团取暖,最终 Node.js 内置了 npm。

后来的事情大家都知道,Node.js 火了。

随着 Node.js 的火爆,大家开始用 npm 来共享 JS 代码了,于是 jQuery 作者也将 jQuery 发布到 npm 了。

所以现在,你可以使用 npm install jquery 来下载 jQuery 代码。

现在用 npm 来分享代码已经成了前端的标配。

后续

Node.js 目前由 Ryan Dahl 当时所在的公司 joyent 继续开发。Ryan Dahl 现在已经去研究 AI 和机器学习了,并且他把 Node.js 的维护权交给了 Isaaz。(我是不是也应该去研究 AI 和机器学习啊教练)

而 Isaaz 维护了一段时间后,辞职了,成立了一个公司专门维护 npm 的 registry,公司名叫做 npm 股份有限公司……谁说开源不能赚钱的~

社区的力量

回顾前端的发展是你会发现,都是社区里的某个人,发布了一份代码,最终影响前端几年的走向。比如 jQuery,比如 Node.js,比如 npm。(其实其他语言也是这样的)

所以,社区的力量是巨大的。

npm与cnpm的区别

NPM(Node Package Manager,节点包管理器)是NodeJS的包管理器,用于节点插件的管理(包括安装,卸载和管理依赖等)。NPM是随同新版的NodeJS一起安装的包管理工具,所以我们需要安装NodeJS。

NPM的常见使用场景

1.允许用户从NPM服务器上下载别人编写的第三方包到本地使用。

2.允许用户从NPM服务器上下载并安装别人编写的命令行程序到本地使用。

3.允许用户将自己编写的包或命令行程序上传到NPM服务器上供别人使用。

为什么要用CNPM

NMP安装插件是从NPM官网下载对应的插件包,该网站的服务器在国外,经常会出现下载缓慢或出现异常,这时便需要找到另外的方法提供稳定的下载,这个方法就是CNPM。阿里巴巴的淘宝团队把NMP官网的插件都同步到了在中国的服务器,提供给我们从这个服务器上稳定下载资源。

CNMP同样是NMP的一个插件,要安装的话需要在CMD命令行控制台执行以下命令:

npm install cnpm -g --registry=https://registry.npm.taobao.org

安装完成后可以使用cnpm -v命令查看版本号,要使用cnmp命令的话最好在安装后重新打开CMD命令行控制台。

cnpm的用法和npm的用法一致,只是在执行命令的时候将npm改为cnpm。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值