javascript中apply、call和bind的区别

在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢。 在说区别之前还是先总结一下三者的相似之处: 1、都是用来改变函数的this对象的指向的。 2、第一个参数都是this要指向的对象。 3、都可以利用后续参数传参。 那么他们的区别在哪里的,先看一个例子。                 var xw = {                         name : "小王",                         gender : "男",                         age : 24,                         say : function() {                   […]

龙生   16 Jan 2015
View Details

成为高级程序员的 10 个步骤

What 软件工程师的职业生涯要历经以下几个阶段:初级、中级,最后才是高级。这篇文章主要是讲如何通过 10 个步骤助你成为一名高级软件工程师。 Why 得到更多的报酬!因为你的薪水会随着你水平的提高而增加 提升你的职业生涯。成为了高级软件工程师之后,就可以朝着架构师、团队负责人、CTO 等职位前进 历经更大的挑战。随着你的成长,各种影响力也会提高。 How 软件工程是很难的。这一行业在不断变化中,所以你必须紧跟它的步伐。你必须不断地投入时间和精力,因为你需要学习的东西总是比你能吸收的多。很多新 手工程师甚至都不曾意识到他们如果想要攀登行业的高峰,要学习的东西、要付出的努力得有多少。不过,不用担心,下面我将指出一条“明路”有助于你成为一名 高级软件工程师。 步骤0:选择你的道路,坚持下去! 做一件事,就要把它做好。——Doug McIlroy《Unix Philosophy》 关于这一点,我真的是强调得不能再强调了。选择好你将与之并肩作战的专业和技术堆栈非常重要。坚持不懈,不要分心。至于应该怎么做请看下面: 选择专业。也就是你想做的事情。例如:Web 开发、移动开发、DevOps 等。 选择专业中的实用技术。例如:如果你选择了 Web 开发,那你就需要在 Ruby on Rails、Python、Django,JavaScript 和 MEAN 等之间做斟酌。如果你选择的是移动开发,则需要在 iOS 和 Android 等之间做出选择。 坚持下去,直到掌握这门技术。 我的意思并不是说除了你的主要专业以外,你就不必熟悉其他的了。那种首屈一指的软件工程师通常对其他的编程语言和技术都非常了解,当然首先他们对他 们自己的主要专业了解得非常剔透。当你确定好主要专业之后,接下来要做的就是学习,阅读所有相关的书籍、练习各种必要的技能,这可能需要很多年的时间。但 是千万不要气馁,一步一个脚印,一个一个攻克难关,量变才能达到质变。关于技术,我的推荐是:Ruby on Rails 之于 web 开发,iOS 之于移动开发。这是我是以一个过来人的身份告诉你的宝贵经验。不过我还是想补充一句,可能每个人的口味不同,我的经验也许并不适合你,你完全可以选择其他 的技术,不过这样的话,你要阅读的书籍可能就和我的推荐不一样了。 步骤1:奠定基础 《The Pragmatic Programmer 》对于我们掌握软件是一个很好的起点。该书总结了高水平的实践探索。这与我们使用的是什么语言/技术无关。无论你选择的是哪种技术堆栈,其主要原理都是一样的。 步骤2:掌握你的编程语言 你以后每天需要面对哪种编程语言取决于你今天选择的技术。但是编程语言总有主次之分。例如,Ruby on Rails 开发人员主要使用 Ruby,AngularJS 开发人员大多数时间用的是 JavaScript。确定编程语言、掌握编程语言对你的职业生涯发展至关重要。因为以后你每天都会使用它!推荐你先阅读有关书籍。 《The Swift Programming Language》之于 Ruby 开发人员,以及《Programming Ruby 》之于 iOS 开发人员。 步骤3:学习框架 选一个,然后好好学习: 对于 Rails 开发人员——《Rails Tutorial 》by Michael Hartl 对于 iOS 开发人员——《iOS programming: The Big Nerd Ranch Guide》 步骤4:掌握文本编辑器/ IDE 再选一个,然后坚持不懈地掌握这个工具。如果你选择的是 VIM,那就要成为它的主人,让它往东就往东。 步骤5:使用版本控制系统 […]

龙生   14 Jan 2015
View Details

2014 年度 Git@OSC 最热门的 50 个项目

2013年5月份开源中国正式推出 Git 代码托管系统 (git.oschina.net) ,经过一年多的发展,Git@OSC 现在已经是国内最大的基于 Git 的代码托管系统。2014年11月,为了满足 Git 仓库不断增长的要求,我们将 Git 系统从云平台迁移到独立的服务器,为进一步发展打下坚实的基础。 Git@OSC 系统能发展这么迅猛,全依赖用户的大力支持。并非 Git@OSC 牛逼,而是这个 Git@OSC 上的项目牛逼,给你们点赞!!! 每到年底总会出现各种排行榜、各种总结,我们也不能免俗。每个排行榜都会有角度的问题,其实在我眼里,能为我所用的就是最牛逼的项目。 此次我们整理的”2014 年度 Git@OSC 最热门的 50 个项目“,我们主要从 Fork/Star/Issues/Views 等几个角度按照不同的权重进行了排序,得出了前 50 个项目。更多 Git@OSC 上推荐的项目请看这里。 下面是这 50 个项目的完整列表,你的项目在里面吗? 1. JFinal JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友 :) http://git.oschina.net/jfinal/jfinal 2. android-app OSCHINA 的 Android 客户端源码,可在 Google Play 或者国内几个应用市场上搜索“开源中国”来安装此app http://git.oschina.net/oschina/android-app 3. jeewx 免费开源Java微信公众账号开发平台 http://git.oschina.net/jeecg/jeewx 4. CrossApp 跨平台移动应用开发引擎 http://git.oschina.net/9miao/CrossApp 5. LigerUI 基于jQuery的UI框架,包括表单、布局、表格等等常用UI控件,使用LigerUI可以快速轻松地创建风格统一的界面效果。 http://git.oschina.net/ligerui/LigerUI 6. 师说CMS 一款使用Java语言开发的CMS,使用了Spring MVC,Spring,MyBatis等流行框架,提供首页大图管理、目录管理、文章管理和管理员管理等功能。是学习和二次开发的首选。 http://git.oschina.net/shishuo/CMS 7. smeoa 基于ThinkPHP开发的PHP开源OA办公系统 http://git.oschina.net/smeoa/smeoa 8. iphone-app OSCHINA 的 iPhone 客户端源码,可直接在 App Store上搜索“开源中国”来安装此app http://git.oschina.net/oschina/iphone-app 9. jeecg […]

龙生   13 Jan 2015
View Details

Nginx配置文件详细说明

在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes  1; #全局错误日志及PID文件 error_log  /var/log/nginx/error.log; pid        /var/run/nginx.pid; #工作模式及连接数上限 events { use   epoll;             #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能 worker_connections  1024;#单个后台worker process进程的最大并发链接数 # multi_accept on; } #设定http服务器,利用它的反向代理功能提供负载均衡支持 http { #设定mime类型,类型由mime.type文件定义 include       /etc/nginx/mime.types; default_type  application/octet-stream; #设定日志格式 access_log    /var/log/nginx/access.log; #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用, #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime. sendfile        on; #tcp_nopush     on; #连接超时时间 #keepalive_timeout  0; keepalive_timeout  65; tcp_nodelay        on; #开启gzip压缩 gzip  on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; #设定请求缓冲 client_header_buffer_size    1k; large_client_header_buffers  4 4k; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; #设定负载均衡的服务器列表 upstream mysvr { #weigth参数表示权值,权值越高被分配到的几率越大 #本机上的Squid开启3128端口 server 192.168.8.1:3128 weight=5; server 192.168.8.2:80  weight=1; […]

龙生   08 Jan 2015
View Details

安装Nginx

预编译版 Linux 和 BSD 的预编译包 大部分 Linux 发行版和 BSD 衍生版的源里都有 Nginx,使用通常安装其他软件的方式即可安装(在 Debian 上用 apt-get,Gentoo 上用 emerge,FreeBSD 上用 ports,等等)。    请注意这些包通常不是最新版本。如果你想使用最新功能和 Bug 修复,建议从源码编译安装(实际上,编译安装也相当简单)。 Win32 预编译包 现在nginx官方已经发布了官方版的nginx/Win32了,欢迎大家使用。在先前Kevin Worthington 负责维护一个 Windows 的最新预编译版分支,如果您已经习惯了使用这个版本也可以选择使用这个版本的。 源代码发布 Nginx 有两个版本:稳定版 (1.0.x), 和 历史稳定版 (0.8.x)。同时,我们在svn中也提供开发版。开发版分支会较快获得新功能和缺陷修复,但同时也可能遇到新的缺陷。一旦更新稳定下来,就会被加入稳定版分支。然而新功能不一定会被加到旧的稳定版中去。 作为生产环境,通常建议使用稳定版,但其实开发版本也相当稳定。如果您的网站不是基于Fcgi,建议使用开发版。请参考 FAQ。 从源代码编译Nginx 把源码解压缩之后,在终端里运行如下命令: ./configure make sudo make install 默认情况下,Nginx 会被安装在 /usr/local/nginx。通过设定编译选项,你可以改变这个设定。 Nginx/Win32 安装 为了安装Nginx/Win32,需先下载它。然后解压之,然后运行即可。下面以C盘根目录为例说明下: cd C: cd C:\nginx-0.8.54   start nginx Nginx/Win32是运行在一个控制台程序,而非windows服务方式的。服务器方式目前还是开发尝试中,Nginx/Win32可以使用以下开关来管理它: Nginx -s stop                  快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。 Nginx -s quit                   平稳关闭Nginx,保存相关信息,有安排的结束web服务。 Nginx -s reload               因改变了Nginx相关配置,需要重新加载配置而重载。 Nginx -s reopen              重新打开日志文件。 【责任编辑:杨赛 TEL:(010)68476606】 from:http://os.51cto.com/art/201111/304425.htm

龙生   08 Jan 2015
View Details

2014年新交规C1科目三(大路考)考试过关技巧

2014年新交规C1科目三(大路考)考试有原来的13项道路驾驶技能项目增加到16项,并且考试里程不少于3公里,其中需抽取不少于20%进行夜间考试;不进行夜间考试的考生,应当进行模拟夜间灯光使用考试。下面我们就为大家介绍一下C1科目三考试过关技巧: 工具/原料 考试项目:上车准备、起步、直线行驶、加减挡位操作、变更车道、靠边停车、直行通过路口、路口左转弯、路口右转弯、通过人行横道线、通过学校区域、通过公共汽车站、会车、超车、掉头、夜间行驶,共16项! 方法/步骤 1 上车准备:上车之前需绕车一周,对车辆外观及周围的环境进行正确观察,确认安全。特别是在打开车门之前应观察后方的交通情况,以防后方有车或行人路过。这个习惯在以后开车过程中也会用到!大家千万不要忽视这个细节,很重要的哦。 2 起步:上车准备之后,拉开车门上车起步,起步前检查车门是否完全关闭,调整座椅、后视镜,系好安全带,检查驻车制动器、挡位,启动发动机。检查仪表,观察内、外后视镜,侧头观察后方交通情况,开启转向灯,挂挡,松驻车制动,起步。起步过程平稳、无闯动、无后溜,不熄火。建议起步时右脚踩刹车,以坡道起步标准起步,防止路面不稳导致起步熄火。 3 直线行驶:根据道路情况合理控制车速,正确使用挡位,保持直线行驶,跟车距离适当,行驶过程中适时观察内、外后视镜,视线不得离开行驶方向超过2秒。大家切记看的远才能跑的直,如果眼睛只看车前最终不能行驶直线是肯定的。 4 加减档位操作:根据路况和车速,合理加减挡,换挡及时、平顺。加减挡的时候一定要左手握紧方向盘,不然在加减挡的时候会出现跑方向的情况。操作过程:踩油门[转速1500转(15迈)时]→踩离合、松油门→换二档→松离合、踩油门[当转速1500或25迈时]→踩离合、松油门→换三档→快松离合(不踩油门)→[无需加油]踩离合→换四档→快松离合、踩离合→换三档→松离合→[把速度降到20迈]踩离合→换2档→慢松离合。 5 变更车道:变更车道前,观察与判断车辆后方、侧方和准备变更的车道上的交通流情况,确认安全后,打开转向指示灯示意,再次通过后视镜观察两侧道路上有无车辆超越,确认准备驶入的车道是否允许留有安全距离。在不妨碍该车道内车辆正常行驶的情况下,平稳转向驶入所需车道后,关闭转向指示灯。 6 靠边停车:听到考官的“靠边停车”的指令后,开右转向灯,看右侧反光镜,观察情况;适量踩下制动踏板;向右转动方向盘(第一把轮向右靠边);在车速降低至低于一档的时速时踩下离合器踏板,当右前轮靠近路沿时,再向左转方向(第二把轮,调正车辆并且调整车身与路沿的距离);向左回转方向(第三把轮,车正轮正)迅速停车。在车辆近停时,稍许抬起制动踏板减缓刹车惯性,平稳停车;拉紧手刹车,挂空档,抬离合器抬刹车踏板,关闭转向灯。整个靠边停车动作完成。 7 直行通过路口、路口左转弯、路口右转弯:需合理的观察四周交通情况,减速或停车观察,根据车辆行驶方向选择相关的车道行驶,正确使用转向灯,根据不同路口采取正确的操作方法,安全通过路口。路口左转弯和路口右转弯的时候重要的是观察两侧环境并减速行驶,不然会有甩车的现象出现。 8 通过人行横道线:在通过人行横道的时候首先减速,观察两侧的交通情况,确认安全以后,合理控制车速通过,遇到行人需停车让行。在此过程中需注意档位,如果减速不及时减档会出现脱档现象。 9 通过学校区域:动作要领是提前减速至30km/h以下,注意观察情况,文明礼让,确保安全通过,遇有学生和行人横过马路的时候应该停车让行。,不得鸣喇叭或与学生抢行。 考试扣分基础点: 1、不观察左、右方交通情况,不合格; 2、不按规定减速慢行,不合格; 3、遇行人通过人行横道不停车让行,不合格。 10 通过公共汽车站:提前减速慢性,观察公共汽车进、出站动态和乘客上下车动态情况,着重注意同向公共汽车前方或对向公共汽车后方有无行人横穿道路。需要保持较大的安全间距进行超越,并随时做好停车避让的准备。 考试扣分基础点: 1、不观察左、右方交通情况 不及格 2、不按规定减速慢行 不及格 11 会车:正确判断会车的地点,前方道路的宽度、坚实情况,路旁行人、车辆情况,路旁停车以及障碍物情况等。会车有危险的时候,控制车速,提前避让,调整会车地点,会车时与对方车辆保持安全间距。在会车时候要注意的细节:会车中不使用紧急制动、猛抬油门、猛打方向盘;不要在有障碍物、窄桥、窄路、隧道、急转弯等复杂地段会车;夜间会车需关闭远光灯。特别注意的事如果有会车让行标志,面对标志的车辆在会车需停车让行。 考试扣分基础点: 1、会车前不使用转向灯 扣20分 2、会车前,开转向灯少于3秒即转向 扣10分 3、在没有中心隔离设施或者中心线的道路上会车时,不减速靠右行驶,并与其他车辆、行人或者非机动车未保持安全距离 不及格 4、会车困难时不让行 不及格 5、横向安全间距判断差,紧急转向避让相对方向来车 不及格 6、在规定的时间、路程内,未按语音指令会车 不及格 12 超车:超车之前,需要保持与被超越车辆的安全距离。观察车辆左侧交通情况,开启左转向灯,选择合理时机,鸣喇叭或交替使用远近光灯,从被超越车辆的左侧超越。切记是从左侧超车哦,超车的时候,侧头观察右侧被超越车辆的动态,保持横向的安全距离。超越之后,在不影响被超越车辆正常行驶的情况下,开启右转向灯,逐渐驶回原车道,关闭转向灯。 在超车队的时候,加速连续超越。若对面道路不能保证安全的横向间距,应及时开右转向灯,见机插入车队,待对面车过后再超越车队。不要在交叉路口、弯道、坡顶、岔路口、会车、被超车辆正在超车的时候超车。 13 掉头:掉头之前开启左转向灯、减速,注意观察路况,同时密切注意来往车辆情况(特别是车速快的车辆),必要时停车等待。掉头行驶只要控制速度,只要速度控制好基本没问题。 14 夜间行驶:起步之前开启前照灯。行驶过程中正确使用灯光。无照明、照明不良的道路使用远光灯;照明情况好的道路、会车、路口转弯、近距离跟车的时候使用近光灯。在超车和通过急弯、坡路、拱桥、人行横道或没有交通信号灯控制路口的时候,应交替使用远近光灯示意。夜考重点就在于灯光的使用。 考试扣分基础点: 1、不能正确开启灯光,不合格。 2、同方向近距离跟车行驶时,使用远光灯,不合格。 3、通过急弯、坡路、拱桥、人行横道或者没有交通信号灯控制的路口时,不交替使用远、近光灯示意,不合格。 4、会车时不按规定使用灯光,不合格。 5、在路口转弯时,使用远光灯,不合格。 6、超车时未变换使用远、近光灯提醒被超越车辆,不合格。 7、对低能见度道路情况判断差,不合格。 8、在有路灯、照明良好的道路上行驶时,使用远光灯,不合格。 END 注意事项 考试时候时刻观察周边情况,安全行驶是关键。听从指令,在做项目之前正常是减速慢行! 一个良好的心态是考试的关键,而且这些考试项目在后期行车中也会经常用到,多联系并养成好习惯很重要。   FROM:http://jingyan.baidu.com/article/e75aca8551b61a142edac68f.html

龙生   18 Dec 2014
View Details

移动终端和pc浏览器版本检测

/* * 智能机浏览器版本信息: * */ var browser = { versions: function () { var u = navigator.userAgent, app = navigator.appVersion; return {//移动终端浏览器版本信息 trident: u.indexOf('Trident') > -1, //IE内核 presto: u.indexOf('Presto') > -1, //opera内核 webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核 gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核 mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), //是否为移动终端 ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器 iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器 iPad: u.indexOf('iPad') > -1, //是否iPad webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部 }; } […]

龙生   10 Dec 2014
View Details

智能判断移动端和电脑浏览器代码

基于移动端的微信和wap网站开发,日益火起来,下面贴一段智能判断分流的代码,希望对菜鸟有所帮助! <?php function isMobile(){ $useragent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "; $useragent_commentsblock = preg_match('|(.*?)|',$useragent,$matches) --> 0 ? $matches[0] : "; } function CheckSubstrs($substrs, $text) { foreach ( $substrs as $substr ) { if (false !== strpos($text,$substr)) { return true; } return false; } $mobile_os_list = array ( 'Google Wireless Transcoder', 'Windows CE', 'WindowsCE', 'Symbian', 'Android', 'armv6l', 'armv5', 'Mobile', 'CentOS', 'mowser', 'AvantGo', 'Opera Mobi', 'J2ME/MIDP', 'Smartphone', 'Go.Web', 'Palm', 'iPAQ' ); $mobile_token_list = array ( 'Profile/MIDP', 'Configuration/CLDC-', '160×160', '176×220', '240×240', '240×320', '320×240', 'UP.Browser', 'UP.Link', 'SymbianOS', 'PalmOS', 'PocketPC', 'SonyEricsson', 'Nokia', 'BlackBerry', […]

龙生   10 Dec 2014
View Details

WebBrowser打印设置

webbrowser,居然被用作套打。。。。。。 由于是套打,格式要求很严格,页眉页脚、页边距等等等等。 在网上找到下列代码,做适当修改后基本上能满足要求了,但是由于是用JS修改注册码,因此和客户端的IE设置有很大关系,必须要求客户IE允许Activex。如果不允许,var Wsh=new ActiveXObject("WScript.Shell");将抛出一个异常。 <script language="JavaScript" type="text/javascript"> var HKEY_Root,HKEY_Path,HKEY_Key; HKEY_Root="HKEY_CURRENT_USER"; HKEY_Path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\"; //设置网页打印的页眉页脚为空 function PageSetup_Null() { try { var Wsh=new ActiveXObject("WScript.Shell"); HKEY_Key="header"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,""); HKEY_Key="footer"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,""); HKEY_Key="margin_bottom"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0"); HKEY_Key="margin_left"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0"); HKEY_Key="margin_right"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0"); HKEY_Key="margin_top"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0"); } catch(e){ //alert(e); } } //设置网页打印的页眉页脚为默认值 function  PageSetup_Default() { try { var Wsh=new ActiveXObject("WScript.Shell"); HKEY_Key="header"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&w&b页码,&p/&P"); HKEY_Key="footer"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&u&b&d"); } catch(e){} } </script> 第二种方法:直接在.cs文件中写方法。 protected void Page_Load(object sender, EventArgs e) { //PageSetup("", ""); } private void PageSetup(string header, string footer) { Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Internet Explorer\\PageSetup\\", true); rk.SetValue("header", header); rk.SetValue("footer", footer); rk.SetValue("margin_bottom", 0); rk.SetValue("margin_left", 0); […]

龙生   08 Dec 2014
View Details

webBrowser给documenttext赋值

今天使用webbrowser的时候给documenttext赋值老是没用,查了半天资料才发现要先navigate一下才行   最后的使用方法如下   using (WebBrowser wb = new WebBrowser()) { wb.Navigate(“about:blank"); wb.Document.Write(content);   ///需要更改的内容 el = wb.Document.GetElementById("sender"); if (el != null) el.InnerHtml = EnviromentManager.Username;   string html = wb.Document.Body.InnerHtml; } from:http://blog.csdn.net/xiao_rory/article/details/6030160

龙生   08 Dec 2014
View Details
1 298 299 300 410