手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2024年11月的文章

ipad 越狱第一步:备份数据

前两天说要上ipad越狱步骤的,结果也没有放出来。没办法,稍微有点事情。。。
OK开始上教程【我也是边看边做的】
IPAD越狱前,总要先备份一下SHSH文件。

系统要求:XP或者Win7操作系统,Itunes版本不能高于9.1 (所以想要越狱成功,千万不能手痒升级iTunes)【网上有人用itunes 9.2越狱成功,但目前不知道是否有后遗症】

软件准备:

  1. JRE ——>我们的机器一般都需要装(下载后请自行先安装好) 【不提供下载。如果你有360安全卫士,在软件库里直接搜索jre就行了,其实任何一个软件库都有Jre下载,当然切记,不要下载Jre 7,这个版本还不稳定】
  2. AutoSHSH_RC2 ——>备份SHSH的软件(不管怎么说SHSH还是要备份以便之后机器出问题了恢复用) ,下载地址:[attach=670]
  3. Spirit ——>越狱软件,下载地址:[attach=669]【由于我讲的是win下面的方法,mac下的spirit就不提供了。】

实际操作:

 

第一步,让你的IPAD进入DFU模式(恢复模式)
(圆点+开/关机键直到IPAD黑屏,松开开/关机键大约7秒左右直到Itunes检测到连接为止,如图)

大小: 13.96 K
尺寸: 389 x 128
浏览: 1665 次
点击打开新窗口浏览全图

第二步,运行AutoSHSH_RC2.exe
出现窗口第一个点【确定】第二个点【是】

大小: 15.08 K
尺寸: 388 x 181
浏览: 1730 次
点击打开新窗口浏览全图
(这是第二个窗口)

点击是后,出来下面的窗口:

大小: 96.57 K
尺寸: 499 x 300
浏览: 1718 次
点击打开新窗口浏览全图

然后选择你的存储路径

大小: 32.96 K
尺寸: 470 x 180
浏览: 1681 次
点击打开新窗口浏览全图

这样之后就算是你备份成功了。。下面就需要越狱了。

通过javascript的匿名函数来分析几段简单有趣的代码

从PHP5.3起,也自带了匿名函数支持,只是它的支持并没有象js这样强大,风雪之隅测试过,可以查看:深入理解PHP之匿名函数,而这篇文章对于匿名函数和new Object以及new Function()的应用,作了较为详细的介绍和测试,如果你在开发中遇到这些问题,产生疑惑了,可以借鉴一下。

今天在园子里闲逛,看到wsxjr(很邪恶地联想到“我是下贱人”,晕)写的Javascript匿名函数的一种应用:封装一文,想起自己很久以前学习javascript的经历,也曾经碰到过几个由匿名函数造成的困扰(其中一个就是由闭包引起的),下面就整理几段简单代码讨论一下,让我们大家一起进步。
1、简单形式的封装调用

JavaScript代码
  1. var userName = function() { return "jeff wong" } ();    
  2. alert(userName);    
上面的代码确实简单,我们可以逐步分解成下面的写法:
JavaScript代码
  1. var anonymousFunc = function() { return "jeff wong" }; //匿名函数    
  2. var name = anonymousFunc(); //执行该函数 返回人名    
  3. alert(name);  
2、new 一下Function的形式(大写Function)
JavaScript代码
  1. var a = new Object();  
  2. var b = new Function();  
  3. //alert(typeof (a)); //object  
  4. //alert(typeof (b)); //function  
  5. alert(a); //[object Object]  
  6. alert(b); //匿名函数  
  7. //alert(a == b); //false  
  8. //alert(a === b); //false  

正如你所看到的那样,我们new一个Object,变量a弹出的是[object Object],而new一个Function(注意,是大写Function),b在弹出的时候,生成了匿名函数。 既然b是匿名函数,函数当然可以执行,我们可以继续试试下面的代码验证自己的猜测:

JavaScript代码
  1. alert(b()); //undefined  
  2. alert(a()); //脚本错误 提示“缺少函数”  

3、new 一下function也大有乾坤(小写function)
(1)、简单的空函数

JavaScript代码
  1. var func = new function() { };  
  2. alert(typeof (func)); //object  
  3. alert(func); //[object Object]  
  4. //alert(func()); //脚本错误 func不是函数  

其实上面的代码也就等价于下面的写法:

JavaScript代码
  1. function anonymousClass() { } //匿名类  
  2. var instance = new anonymousClass();  
  3. alert(typeof (instance));//object  
  4. alert(instance); //[object Object]  

(2)、函数带个返回值的,也不是很难理解

JavaScript代码
  1. var func = new function() { return "jeff wong" };  
  2. alert(typeof (func));  
  3. alert(func);  
  4. //alert(func()); //脚本错误 缺少函数  

其实上面的代码也就等价于下面的写法:

JavaScript代码
  1. function anonymousClass() { return "jeff wong"; } //匿名类  
  2. var instance = new anonymousClass();  
  3. alert(typeof (instance));//object  
  4. alert(instance); //[object Object]  

(3)、还是函数带个返回值的,写法稍微有点不同

下面的代码请注意和(2)中的区分一下,因为接下来要重点讨论的就是那一点点的不同书写形式:

JavaScript代码
  1. var func = new function() { return new String("jeff wong"); };  
  2. alert(typeof (func)); //object 意料之中  
  3. alert(func); //这里?!  
  4. //alert(func()); //脚本错误 缺少函数  

上面代码的等价形式依然简单:

JavaScript代码
  1. function anonymousClass() { return new String("jeff wong"); }  
  2. var instance = new anonymousClass();  
  3. alert(typeof (instance));  
  4. alert(instance);  

已经运行看到结果了吗?没错,第三种写法我们在弹出func或者instance的时候,都出人意料地得到了一段字符串"jeff wong"。细心比较(2)和(3)中的代码,除了return处的写法稍有不同之外,两处代码几乎完全一致,所以我们推断,毫无疑问,是new String的形式让我们的函数产生了意想不到的效果。 为什么会这样呢?

     原来,在javascript中,只要在new表达式之后的constructor返回(return)一个原始类型(无return时其实是return原始类型undefined,如(1)),比如第(2)种写法,那么就返回new创建的匿名对象;而如果new表达式之后的constructor返回一个引用对象,比如对象(Object),函数(function)及数组(Array)等等,那么返回的该引用对象就将覆盖new创建的匿名对象。现在再来分析(3)中的写法,由于new String会构造一个字符串引用对象,它就覆盖了new所创建的匿名对象,而new String的所指向引用值是“jeff wong”,所以弹出的必然是当前new String所分配的值。

  最后,留个思考题,大家看看下面的代码返回什么结果:

JavaScript代码
  1. var func = new function() { var str = new String("jeff wong"); return str; };//再换种写法  
  2. //alert(typeof (func)); //object 意料之中  
  3. alert(func); //猜一下这里应该是什么结果?  

原文来自于:http://www.cnblogs.com/jeffwongishandsome/archive/2010/06/27/1766207.html
作者:Jeff Wong

 

 

 

 

 

 

 

 

 

Tags: 匿名函数

终于还是为IPAD买了个套套

不多说了上图。。。顺便提一问,我的某PDF100多M的打不开,真痛苦。。。60多M的可以开,只是很慢。100多M的直接白屏。伤心啊,还是只能看小文件的PDF了。

开始上图吧。。【本来是想买yoobao的,但卖家说人家是做电池的不是做外包装的。于是换 了这个。当然我也知道可能这个利润更高一点。无所谓了,大家都开心就好。我看的舒服也就好了。。。】

大小: 699.39 K
尺寸: 500 x 333
浏览: 1930 次
点击打开新窗口浏览全图

包装盒

大小: 722.29 K
尺寸: 500 x 333
浏览: 1962 次
点击打开新窗口浏览全图

外包装

大小: 745.89 K
尺寸: 500 x 333
浏览: 1934 次
点击打开新窗口浏览全图

张开双翼

大小: 668.85 K
尺寸: 500 x 333
浏览: 1944 次
点击打开新窗口浏览全图

台式书

Tags: ipad, benks

Google爬虫:不仅索引链接,还可以运行js代码

让人意外的是这个标题:【Google爬虫:不仅索引链接,还可以运行js代码】,真的没想过,看看cnbeta怎么说的?

一直以来Google的搜索爬虫就具有阅读JavaScript代码的功能,但是多年以来我们一直都不清楚Google的爬虫是否真正理解了其正在抓取的 东西或者说它仅仅只是在易于理解的数据结构中对各种链接进行呆板的检索。本周五,一位Google的发言人向《福布斯》确认Google所作的远远超过对 js代码的简单分析。这位发言人表示:“Google能够分析并理解某些JavaScript”

        Google的表述让我们意识到其爬虫所作的工作也许不仅仅只是获得对页面的相关链接,还能够像人一样与各类程序发生互动——发现Bing这类搜索引擎所 不能发现的网络世界。而这意味着,Google重新定义了搜索引擎。在Google的搜索结果里面只有很少的js代码,而且Google也将这种js代码 的解释功能做了很多保留。比如在Google站点搜索(Google's Site Search)的文档显示其不能够索引带有js代码的内容。一本关于索引的入门教材这样写道:它(Google爬虫)“不能够处理带有富媒体的内容或者是 动态网页”。仔细检查服务器日志中的记录我们便可以发现Google现在索引那些并不是直接包含在js代码里面的链接,Google的爬虫只有确定自己能够运行部分代码的时候才能明白整段代码到底是什么意思。

        Mark Drummond,一家独立搜索引擎公司Wowd的首席执行官(我们在今年之前的杂志中采访过他)在一封邮件中告诉我们理解js代码“是一个非常深刻、难度极大和一场经典的计算科学难题。”他解释道Google的努力在于它能够发现js代码在网页中是否存在停止运行的情况。 他表示“停止运行的问题是无法判定的”,他说迄今为止还没有已知的算法能够在任何程序的任何时间点告诉我们该程序是否陷入了死循环,而且数学上已经证明了 这一点。Drummond自己的公司通过人工的方式检索其索引并标明是否有可能简化这个复杂的问题,同时判断一个网络程序是否向另外的程序发起了数据请 求。也许,这正是Google现在在做的事情。

        另一位同Google接近的搜索引擎人士也认同Drummond关于理解js代码复杂性的看法。他认为用一个程序去分析另一个程序是很困难的事情,执行js代码几乎是现阶段能够做到的极限了。

        而Google在六月发布的改进版搜索算法(即Caffeine)似乎开始能够理解部分js代码了。如果这是真的,那么Google的工程师已经教会了其爬虫如何执行部分js代码。这真是一大突破!

       cnBeta.com编译自Forbes

--EOF--

额。这样就比较有意思了。。JS也能够被解析?确实有点恐怖,未来会怎么样?真的是象浏览器一样的访问吗?他们也会兼容所有的浏览器吗?会。。。模拟登录吗?这才是我关心的,会识别验证码吗?

Tags: google, spider

Nginx针对IP和目录限速

一般来说,限速这东西仅限于FTP,可以给FTP用户进行限速,但,如果你没有FTP,仅有HTTP的情况下如何呢?上次vampire演示过一段,同时还根据URL来读取文件的区块。事实上我们的需要没有那么复杂,向tom zheng博客上的这段就够我们用了。不是吗?再者,现在用nginx的机器应该很多了吧(我没有用,因为,我不可能为线上每个用户都去设置一遍他们的rewrite规则。只能将就一下了。)

原文来自:http://zys.8800.org/index.php/archives/322

nginx可以通过HTTPLimitZoneModule和HTTPCoreModule两个目录来限速。

示例:

limit_zone one $binary_remote_addr 10m;

location / {
        limit_conn one 1;
        limit_rate 100k;
}

说明:

limit_zone,是针对每个IP定义一个存储session状态的容器。这个示例中定义了一个10m的容器,按照32bytes/session,可以处理320000个session。

然后针对 /目录进行设定。

limit_conn one 1;  是限制每个IP只能发起一个连接。

limit_rate 100k;    是对每个连接限速100k. 注意,这里是对连接限速,而不是对IP限速。如果一个IP允许两个并发连接,那么这个IP就是限速limit_rate x 2。

关于limit_zone的原始文档,请见 http://wiki.nginx.org/NginxHttpLimitZoneModule

关于limit_rate和limit_conn的原始文档,请见 http://wiki.nginx.org/NginxHttpCoreModule

Tags: nginx, 限速