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

开发中的几件事

开发中又遇到一些事情,于是记录一下
1、CURL的问题
    curl在安全模式下或者设定了open_basedir的情况下,如果使用了OPT_FOLLOWLOCATION,会导致无返回值。这个理由很多,但FOLLOWLOCATION这个参数是用于目标网址会多次跳转而使用,还可以设置最大跳转次数,因此,如果你要抓取的对象有多次跳转,这个参数就非设不可(真纠结,实在不行就file_get_contents了,它自动支持多次跳转,但不如curl更可控一些)
    具体关于CURL的一些常用参数,可以看这里:

http://opensuse.iteye.com/blog/349829
  1. curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);       
  2. //HTTP协议的版本号  
  3. curl_setopt($ch, CURLOPT_NOPROGRESS, 1);                             
  4. //如果你不会PHP为CURL传输显示一个进程条,设置这个选项为一个非零值。注意:PHP自动设置这个选项为非零值,你应该仅仅为了调试的目的来改变这个选项。  
  5. curl_setopt($ch, CURLOPT_NOBODY, 0);  
  6. //如果你不想在输出中包含body部分,设置这个选项为一个非零值。  
  7. curl_setopt($ch, CURLOPT_HTTPGET, 1);  
  8. //设置HTTP请求的方法为GET  
  9. curl_setopt($ch, CURLOPT_ENCODING, ”);  
  10. //设置HTTP请求头中可接受的压缩格式  
  11. curl_setopt($ch, CURLOPT_COOKIEFILE, 1);  
  12. //传递一个包含cookie数据的文件的名字的字符串。这个cookie文件可以是Netscape格式,或是堆存在文件中的HTTP风格的头。  
  13. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
  14. //设置这个选项为一个非零值(象 “Location: “)的头,服务器会把它当做HTTP头的一部分发送(注意这是递归的,PHP将发送形如 “Location: “的头)。  
  15. curl_setopt($ch, CURLOPT_MAXREDIRS, 3);  
  16. //最多可以进行几次HTTP重定向,一般和curl_followlocation联用  
  17. curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)’);  
  18. //在HTTP请求中包含一个”user-agent”头的字符串  
  19. $http_header = array();  
  20. $http_header[] = ‘Connection: Keep-Alive’;  
  21. $http_header[] = ‘Pragma: no-cache’;  
  22. $http_header[] = ‘Cache-Control: no-cache’;  
  23. $http_header[] = ‘Accept: */*’;  
  24. $http_header[] = ‘Host: ‘.$url_ary['host'];  
  25. curl_setopt($ch, CURLOPT_HTTPHEADER, $http_header);  
  26. //一个数组格式的HTTP头文件格式  
  27. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
  28. //将curl_exec的返回值转换成一个字符串,而不是直接输出出来  
  29. curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);  
  30. //设置一个长整形数,作为最大延续多少秒  
  31. curl_setopt($ch, CURLOPT_REFERER, $url);  
  32. //在HTTP请求中包含一个”referer”头的字符串  
  33. curl_setopt($ch, CURLOPT_URL, $url);  
  34. //这是你想用PHP取回的URL地址。你也可以在用curl_init()函数初始化时设置这个选项  


2、命令下行指定用户组来执行命令
最偷懒的方法就是:su www -c 'php xxx.php'

3、hightman遇到的Javascript函数parseInt(''),返回NaN,这个让我想起有个人做了一个PPT,来说明JS中的一些特殊问题,它的地址是:http://neatstudio.com/show-1987-1.shtml

4、PHP的header跳转
大家都知道header("Location:http://xxx.xxx.com");在这个之后如果你file_put_contents内容去一个文件,还是会被执行的,于是我们习惯性的在header跳转后继续处理一些内容,即不影响跳转,也可以完成一些内容性的处理。
但尝试了一下,如果是header()下面跟上sleep(10);你会发现header不会即刻跳转了,会等10秒后再跳转。
因此,现在了解header跳转还是会受原有代码的影响的。

5、HTML5的a标签属性ping
ping的属性说的很好,当a有href属性时,如果有ping属性,会在跳转链接时候,自动ping网站(ping标签中的对应网站),但测试了一下之后发现。居然没用。查看了一下资料,我操:

6.6 Changes from 4 March 2010 to 24 June 2010

  • The ping attribute has been removed from the W3C version of HTML5.

我郁闷啊。。。

-------EOF------

Tags: curl

文抄公

文抄公是一种鄙视,事实上有很多时间我们都在做着文抄公的事情。嗯,我也是一个文抄公。仅此而已
抄是一种美德,抄是一种文化,天下文章都是一大抄,无非就是你抄我我抄你的,几年前的黄夏留老师也说过,当全班同学都在抄的时候,只有一个同学没抄,他的名字叫杨伟。
好吧,这仅仅是一个笑话。
互联网上的东西,确实抄来抄去的比较多,但怎么着也得给对方留一下链接,代表了文章的来源。你摘抄了没错,但也不能否认别人的辛苦劳动。如果大家都只抄内容不抄链接,这终将是一个恶性循环。
事实上,很多人在抄的同时,都放弃了原作者原内容的样式、风格,甚至连内容都有放弃,这个时候你让别人在看到你的文章时怎么想?
给别人留条后路,也给自己留条路。

testdisk

今天下午在重装系统的时候,犯了一个小错误,结果,导致我的系统分区表全坏了。在UBUNTU下只能看到一个分区,里面的内容全部不见了。
所幸,UBUNTU可以光盘启动,这时候,我用它上网查了一些资料,发现原来testdisk这个软件不错,可以修复分区表的信息。

于是apt-get install testdisk,很快就下载回来了。

直接运行,会问你是否记录LOG,如果你没啥大事,就不用记录了啦,然后选择INTEL PC,再选择优化,发现了自己的系统硬盘终于被认了出来,灰常激动啊。

把分区表写入硬盘后,可以在LINUX下面发现已经挂载到/media目录下了,立刻,远程到局域网,把数据全部拷贝到局域网中。

期间,本来是想用smbmount把远程的共享目录映射过来,然后把本地内容拷贝过去,结果发现好象不行。最后没辙,只能远程,把本地磁盘映射到远程系统中,终于可以拷贝内容了。

激动啊。。。不然我就全完了

Tags: testdisk

JavaScript—计算图片加载的张数

看到cssrain.cn上这篇博客介绍的不错。挺有意思,虽然这个功能在很久以前就有人实现过。。。但现在看来又有不同的感觉
或许大家都记得,在几年前,网页特效中就有一个效果是网页正在下载数据,请稍等。然后是一个进度条,等完毕后,网页就打开了。其实说的就是Cssrain上的效果。不过几年前没有想过要兼容如今这么多的浏览器。所以,还是可以再了解一下(相册网站之类的可能会需要)
----START--

先定义一个图片的数组,然后通过image的onload事件来计算,注意,onload在ie和火狐有所不同。

最后需要一个进度条与之结合即可。

这个脚本在做游戏的地方用得比较多。

http://cssrain.cn/demo/plantsvs/loadImg.html

» 阅读全文

月光博客:用dropbox备份网站

DropBox最近又在准备折腾了,理由其实不算太充分,事实上,在资料方面,我一直是在用wizExplorer,但是对于文件等,除了QQ的存储,好象没有其他什么的了(当然金山的快盘也行,但不太敢用,因为,以前联想的lenovodata,突然间就成了收费盘,很郁闷的)

Dropbox我在之前也有介绍,也有使用,但就在申请API的第二天,我发现,dropbox再也打不开了,现在嘛,你懂的。。。

主要是我想同步一些目录,和文件,又不是特别大,但是数据比较多,如果用网上的SVN来进行同步,我想,意义也不是特别大。不过,我是有准备将我的服务器慢慢改成svn,因为,它不用备案。有域名就要备案,很繁琐啊。rsynx也可以,但是我需要互动,而不仅仅只是备份

上面是月光的博客:

  虽然目前从国内访问Dropbox有小小困难,但是从国外访问还是正常的,对于拥有国外Linux虚拟主机的用户,可能会遇到这样的需求,就是如何将国外虚拟主机上的网站备份到Dropbox上,下面我以Dreamhost为例介绍一下备份的方法。
你需要有一个国外的虚拟主机,虚拟主机需要有SSH权限,并能访问外网,符合这样条件的虚拟主机有一些,例如Dreamhost这类主机。
使用SSH帐号登录到你的主机地址,之后执行下面的命令:
wget -O dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86
下载完成文件后,接着,你可以执行下面的命令将其解压缩:
tar -zxof dropbox.tar.gz
接着执行下面的命令将Dropbox程序转移到~目录。
mv .dropbox-dist ~
现在,执行下面的程序即可后台运行Dropbox
~/.dropbox-dist/dropboxd &
第一次执行这个程序的时候,dropboxd会显示一串很长的URL地址,你需要手动在浏览器中执行这个地址,才能将虚拟主机服务器连接到 Dropbox,执行完后,Dropbox的Events中会显示“The computer xxx was linked to your account”,表明该服务器已经连接好。
这时候,你的根目录下会出现一个Dropbox目录,并会自动下载,你可以使用下面命令进入你的Dropbox目录
cd ~/Dropbox
接着,将你的网站目录通过cp -r命令复制到~/Dropbox目录下,就能实现网站的同步备份了。
如果你想停止运行Dropbox,可以通过下面的命令实现:
killall dropbox
对于Dreamhost用户来说,其实你一退出SSH,dropbox就会自动退出,你要想让dropbox一直运行,要购买价格更高的VPS,或者使用screen命令自动挂着SSH也行。
最后赞一下Dropbox的速度,在国外的主机上执行Dropbox真快的吓人,几个G的文件,不到半个小时就全部下载更新完毕,这和国内完全不是一个速度啊,我昨天在国内同步几个G的文件,至少要花整整两天的时间。
参考文章:How To Install Dropbox In An Entirely Text Based Linux Environment

原文来自:http://www.williamlong.info/archives/2222.html

Tags: dropbox, 月光博客, 备份, sync

Records:912