分页: 5/74 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]
也许由于各种原因,你可能想清理自己的微博内容,内容太多了,没法一条一条删除,那就可以这样来清理门户:

1 先安装firefox,安装插件greasemonkey
2 到“我的微博”页面,选择greasemonkey,new user script
3 会出现新脚本对话框(第一次打开会问你用什么编辑器):
4 起名什么的就不用说了

点击在新窗口中浏览此图片

5 选择ok后,添加如下代码:

// ==UserScript==
// @name           clearMe
// @namespace      delete all status
// @include        http://weibo.com/1967156965/profile
// ==/UserScript==
//注意,前面的注释别复制,复制后面的到你的编辑器注释后

var rnd = Math.random();

var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= 'http://www.weibodi.com/static/js/jquery.min.js?v='+rnd;
head.appendChild(script);

var script2= document.createElement('script');
script2.type= 'text/javascript';
script2.src= 'http://www.weibodi.com/static/js/del_all_status.js?v='+rnd;
head.appendChild(script2);


6 然后,刷新页面就会自动开始删除了,自动刷新页面删除,直到全部删除完
7 然后取消此脚本即可,否则以后访问此页面继续会执行此脚本

附上delete_all_status.js的代码:


//code from www.aslibra.com
//by hqlulu@gmail.com

var total = 0;
var done = 0;

function delete_id( mid ){
  $.ajax({
    type: "POST",
    url: "http://"+window.location.hostname+"/mblog/delete.php?rnd="+Math.random(),
    dataType:"text",
    data:{mid:mid},
    success: function(obj){
      done ++;
      if( done == total){
        window.location.reload();
      }
    }
  });
}

function delete_start(){
  if(typeof( $ ) != "undefined" ){
    total = $("#feed_list li").length;
    if(total){
      $("#feed_list li").each(function(e){
        delete_id($(this).attr("id").substr(4));
        //return false;
      });
    }
  }else{
    //alert("wait for jquery");
    setTimeout(delete_start, 500);
  }
}

delete_start();
Tags: , , ,
先看看服务器的文件:

upload.php 最简单的文件处理:

<?php

$tempFile = $_FILES['pic']['tmp_name'];
$fileName = $_FILES['pic']['name'];
$fileSize = $_FILES['pic']['size'];

move_uploaded_file($tempFile, $fileName);

echo "Uploaded $fileName";


在adobeAir里面,建立一个上传的流程:

//文件上传
function callback_for_upload_progress(event) {
  var loaded = event.bytesLoaded;
  var total = event.bytesTotal;
  var pct = Math.ceil( ( loaded / total ) * 100 );
  air.trace('Uploaded ' + pct.toString() + '%');
}
function callback_for_upload_finish(event) {
  air.trace(event.data); // output of server response to AIR dev console
}
function upload_file( pictureFile ){
  var url = "http://www.aslibra.com/tmp/php/weibo/upload.php";
  var variables = new air.URLVariables();
  variables.op = 'upload';

  // set params for http request
  var tmpRequest = new air.URLRequest(url);
  tmpRequest.method = air.URLRequestMethod.POST;
  tmpRequest.contentType = 'multipart/form-data';
  // assigning variables to request
  tmpRequest.data = variables;
  air.sendToURL(tmpRequest);

  // attach events for displaying progress bar and upload complete
  pictureFile.addEventListener(air.ProgressEvent.PROGRESS, callback_for_upload_progress);
  pictureFile.addEventListener(air.DataEvent.UPLOAD_COMPLETE_DATA, callback_for_upload_finish);

  // doing upload request to server
  pictureFile.upload(tmpRequest, 'pic', false);
}


注:pictureFile是一个文件对象
一个小问题:如何把一个人的所有微博下载回来?

有几个方式是容易想到的:

1 一个一个链接另存为,用迅雷不行,没有身份验证信息
2 用php的curl写一个登录程序,自动登录,自动访问抓取,如果不能自动登录,则白费
3 建立一个代理服务器,按规则保留访问过的内容,自动打开要采集的一系列网页,稍微复杂了些
4 给页面添加脚本,执行脚本抓取,ajax功能很好用,jquery还顺便分析了内容,比php分析要简单
5 通过api访问

拿新浪微博为例,所有的方式都可行:

第一个是简单些,有人力又不嫌麻烦那就挺好。
第二个规则变化比较多,登录过程跳来跳去,跟着做也是没有问题的,况且登录流程没有验证,倒是可行的。
第三个要比较熟悉服务器规则才行,不太好实施。
第四个如果熟悉脚本,那不妨试试了,有跨域的问题,数据提交比较麻烦些。
第五个受api限制,比如只能读取200条。

阿权想说的是第四个,这个方式很有趣:

1 往页面添加脚本,改变页面的行为,也就是说你可以做任何一个事情,比如你在网页里面发出一个ajax请求下载同域名下的数据,这个很容易理解。
2 下载完成后,分析页面数据,jquery很方便
3 get方式传递出去你要的信息,这个不需要ajax也可以,比如放一个img什么的

这个最好的方式是 firefox加上Greasemonkey了,对页面新建一个脚本,然后就基本随便你操作了,比如:

var rnd = Math.random();

var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= 'http://www.aslibra.com/path/to/jquery.js?v='+rnd;
head.appendChild(script);

var script2= document.createElement('script');
script2.type= 'text/javascript';
script2.src= 'http://www.aslibra.com/path/to/my.js?v='+rnd;
head.appendChild(script2);


my.js里面就是看你想做什么了,那可就是在当前域名下的操作了
Tags: , , ,
ssh账号代理上网是很常见的,尤其是翻越障碍物的时候很实用。
ssh账号是可以登录linux系统的,如果只是上网用,那就需要最小化权限,有两个方式:

1 /bin/false

useradd -s /bin/false yourUser

#登录时使用这样的:
ssh -D 7070 -N yourUser@hostname


2 自定义脚本

cat /bin/tunnel.sh
#!/bin/sh

echo "##########"
echo " welcome !"
echo "##########"

read x
exit

useradd -s /bin/tunnel.sh yourUser

ssh -D 7070 yourUser@hostname


输入字符后会退出,不会产生系统操作
Tags: , ,
引用
在配置文件httpd.conf里查找“CustomLog”一行,整行修改为

CustomLog “|bin/rotatelogs.exe -l E:/logs/access%Y-%m-%d.log 86400″ common

意思是让日志每隔24小时会滚一次,会滚后日志名为“access年-月-日.log”,保存路径为“E:\logs”这样日志就可以按天存入不同的文件中了,另外也可以配合计划任务删除N天之前的日志文件。

同样错误日志也可以使用这样的方法,查找“ErrorLog”一行,整行修改为

ErrorLog “|bin/rotatelogs.exe -l E:/logs/errorlog.%Y-%m-%d-%H_%M_%S.log 86400

同样是每天会滚日志,日志文件名“errorlog.年-月-日-小时_分钟_秒.log”。

由上可以看出%Y表示当前年份,%m表示当前月份以此类推就可以灵活运用保存为需要的文件名。

上面的例子里,日志格式使用的是通用日志模式(common),当然也可以使用组合日志模式(Combined),只需要把上面代码最后的“common”修改成“Combined”。

这种格式与通用日志格式类似,但是多了两个 %{header}i 项,其中的header可以是任何请求头。这种格式的记录形如:

192.168.0.2 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 http://www.huaxiren.cn/index.php "Mozilla/4.08 [en] (Win98; I ;Nav)"

配置完成后保存httpd.conf,重新启动Apache服务器,日志就会从重启Apache的时刻开始每隔一天回滚日志。

值得一提的是在配置了rotatelogs回滚后在windows进程里会多出几个rotatelogs.exe和cmd.exe进程,无须担心,这是rotatelogs在工作。
在这里仅保留了计划任务,网络,ssh以及日志

chkconfig --list | grep 3:on | \
grep -v "crond\|network\|sshd\|syslog" | \
awk '{print "chkconfig " $1 " off"}' | sh


适用redhat和centos
Tags: , ,
非關語言: 常見程式演算

「常見程式演算」主要收集一些常見的程式練習題目,您可以藉這些題目培養一些程式設計邏輯的感覺,對題目的分類只是個大概,方便索引而已,實作的部份是使用 C 、Java、Python 與 Scala,有時會玩玩一些語言的特性讓程式看來簡潔(但不見得是最有效率的方式)。

http://caterpillar.onlyfun.net/Gossip/AlgorithmGossip/AlgorithmGossip.htm
Tags:
分页: 5/74 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐