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

删除小数点目录

上午某群内好友中了木马,目录名中都是小数点,无法删除。找了一下资料,以做备份吧。。

----start--
这些有小数点的文件夹其实是windows系统存在的一个bug,因为不容易被删除而且很隐蔽,因此经常为一些入侵者利用存放一些木马之类的文件。虽然我们不能像删除普通文件一样删除这种文件夹,但总归有删除办法的。懂得了这种文件的创建原理,删除自然就好办了。有关该原理的介绍具体可以看《建一个别人进不了删不掉的绝密文件夹》这篇文章。

删除办法为:在CMD下通过rd命令+文件名+"./"来删除,如果文件夹下有文件需要先删掉内部的文件(一般为木马文件),那么如何进入这个文件夹呢?可以通过“start+目录的绝对路径”命令进入,如:start d:\web\sites\1..\。
----eof---

后来,朋友是删除了这个目录了。。HOHO,想不到,还有Start这个命令。(百万宝贝告诉我,Start命令失败。。。)

原文:http://www.aspxhome.com/security/20092/760121.htm

PHP图像识别

对于一些几乎没有变型的图片来说,下面这个方法或者会减轻你的工作量。
事实上,我也是从http://fr.cc0311.com/php-telephone-number-ocr.html看的代码,再想想,walkerlee在05年就写过了关于bmp图片的识别。不过BMP可能会相对简单一点吧?
看了这个法月博客的代码。脑子一热,花了半小时,重写了一遍。。。没有优化。因为大部分方法还是参考的他的,只是对法月的这篇文章中的代码,我做了简单的改动。版权,还是算他的吧。。。去年的时候,也写过类似的。。只是因为图片变形,最终识别率超低,因此对于这种不变形的,还是写下代码做个笔记吧。

PHP代码
  1. <?php  
  2.   
  3. $imgfile = 'http://bj.ganji.com/tel/5463013757650d6c5e31093e563c51315b6c5c6c5237.png';  
  4.   
  5. interface imagedatas {  
  6.     public function setimagedata();  
  7.     public function getimagedata();  
  8. }  
  9.   
  10. class GanjiImage implements imagedatas{  
  11.     public $imagedata;  
  12.     public function __construct(){  
  13.         $this->setimagedata();  
  14.     }  
  15.     public function setimagedata(){  
  16.         $this->imagedata = array(  
  17.             0=>'000011111000001111111110011000000011110000000001110000000001110000000001110000000001011000000011011100000111000111111100000001110000',  
  18.             1=>'011000000000011000000000111111111111111111111111',  
  19.             2=>'001000000011011000000111110000001101110000011001110000011001110000110001111001100001011111100001000110000001',  
  20.             3=>'001000000010011000000011110000000001110000000001110000110001110000110001011001110011011111011111000110001100',  
  21.             4=>'000000001100000000111100000001111100000011101100000111001100001100001100011000001100111111111111111111111111000000001100000000000100',  
  22.             5=>'111111000001111111000001110001000001110001000001110001100001110001100001110000110011110000111111000000001100',  
  23.             6=>'000011111000001111111110011000110011110001100001110001100001110001100001110001100001010001110011010000111111000000001100',  
  24.             7=>'110000000000110000000111110000111111110001110000110111000000111100000000111000000000111000000000',  
  25.             8=>'000100011110011111111111110011100001110001100001110001100001110001100001110011100001011111111111000100011110',  
  26.             9=>'001111000000011111100001110000110001110000110001110000110001110000110001011000100001011111100111000111111110000001110000',  
  27.         );  
  28.     }  
  29.     public function getimagedata(){  
  30.         return $this->imagedata;  
  31.     }  
  32. }  
  33.   
  34. class imageValidation  
  35. {  
  36.     protected $imgfile;  
  37.     protected $imgsize;  
  38.   
  39.     protected $imgdata//数组  
  40.     protected $hordata//横向  
  41.     protected $verdata//纵向  
  42.   
  43.     protected $imgfunc;  
  44.   
  45.     function __construct( $imgfile , $imgsource = ''){  
  46.         $this->imgfile = $imgfile;  
  47.         $this->imgsize = getimagesize($imgfile);  
  48.         $this->imgfunc = $this->getImageFunc();  
  49.         if($this->imgfunc == 'imagecreatefromstring'){  
  50.             $this->imgfile = file_get_contents($this->imgfile);  
  51.         }  
  52.         $this->imgsource = new $imgsource();  
  53.     }  
  54.   
  55.     function getImageData(){  
  56.         $func = $this->imgfunc;  
  57.         $resource = $func$this->imgfile );  
  58.         for$i=0 ; $i < $this->imgsize[1] ; $i++){  
  59.             for$j=0 ; $j<$this->imgsize[0] ; $j++){  
  60.                 $rgbcolor = imagecolorat( $resource , $j , $i);  
  61.                 $rgbarray = imagecolorsforindex( $resource , $rgbcolor );  
  62.                 if($rgbarray['red'] < 125 || $rgbarray['green']<125 || $rgbarray['blue'] < 125){  
  63.                     $data[$i][$j]=1;  
  64.                 }else{  
  65.                     $data[$i][$j]=0;  
  66.                 }  
  67.             }  
  68.         }  
  69.         $this->imgdata = $data;  
  70.     }  
  71.       
  72.     function getHorData(){  
  73.         $z = 0;  
  74.         for($i=0; $i<$this->imgsize[1]; $i++){  
  75.             if(in_array('1',$this->imgdata[$i])){  
  76.                 for($j=0; $j<$this->imgsize[0]; $j++){  
  77.                     if($this->imgdata[$i][$j] == '1'){  
  78.                         $newdata[$z][$j] = 1;  
  79.                     }else{  
  80.                         $newdata[$z][$j] = 0;  
  81.                     }  
  82.                 }  
  83.                 $z++;  
  84.             }  
  85.         }  
  86.         $this->hordata = $newdata;  
  87.         return $newdata;  
  88.     }  
  89.   
  90.     function getVerData(){  
  91.         //$data = array_reverse($this->hordata); //这是180度翻转,不是90度  
  92.         for$i=0; $icount($this->hordata[0]) ; ++$i){  
  93.             for$j=0;$j<count($this->hordata);$j++){  
  94.                 $newdata[$i][$j] = $this->hordata[$j][$i];  
  95.             }  
  96.         }  
  97.         $i = 0;  
  98.         foreach($newdata as $k=> $v){  
  99.             if( in_array(1 , $v ) || (isset($newdata[$k+1]) && in_array(1,$newdata[$k+1]) )){  
  100.                 $newdatas[$i] = $v;  
  101.                 $i++;  
  102.             }  
  103.         }  
  104.         $this->verdata = $newdatas;  
  105.         return $newdatas;  
  106.     }  
  107.     function get(){  
  108.         $i = 0;  
  109.         foreach$this->verdata as $val){  
  110.             if(in_array(1,$val)){  
  111.                 $datas[$i] .= join("",$val);  
  112.             }else{  
  113.                 $i++;  
  114.             }  
  115.         }  
  116.         foreach$datas as $k => $val ){  
  117.             $number[$k] = $this->check($val);  
  118.         }  
  119.         return $number;  
  120.     }  
  121.     function check($str){  
  122.         $imgsourcesdata = $this->imgsource->getimagedata();  
  123.         foreach$imgsourcesdata as $k => $val){  
  124.             similar_text($str,$val,$percent);  
  125.             $ret[$k]=$percent;  
  126.         }  
  127.         return array_search(max($ret),$ret);  
  128.     }  
  129.   
  130.     function draw( $data ){  
  131.         $str = '';  
  132.         if(is_array($data)){  
  133.             foreach ($data as $key => $val){  
  134.                 foreach ($val as $k => $v){  
  135.                     if($v == 0){  
  136.                         $str .= "<font color='#FFFFFF'>".$v."</font>";  
  137.                     }else{  
  138.                         $str .= $v;  
  139.                     }  
  140.                 }  
  141.                 $str.= "<br/>";  
  142.             }  
  143.         }  
  144.         echo $str;  
  145.     }  
  146.   
  147.     function getImageFunc(){  
  148.         switch($this->imgsize[2]){  
  149.             case IMAGETYPE_PNG :  
  150.                 $this->imgfunc = 'imagecreatefrompng';  
  151.             break;  
  152.             case IMAGETYPE_JPEG :  
  153.             case IMAGETYPE_JPG :  
  154.                 $this->imgfunc = 'imagecreatefromjpeg';  
  155.             break;  
  156.             case IMAGETYPE_GIF :  
  157.                 $this->imgfunc = 'imagecreatefromgif';  
  158.             break;  
  159.             default:  
  160.                 $this->imgfunc = 'imagecreatefromstring';  
  161.             break;  
  162.         }  
  163.         return $this->imgfunc;  
  164.     }  
  165.   
  166. }  
  167.   
  168. $img = new imageValidation($imgfile,'GanjiImage');  
  169. $img->getImageData();  
  170. $img->getHorData();  
  171. $img->getVerData();  
  172. $phone = $img->get();  
  173. dump($phone);  
  174.   
  175.   
  176.   
  177. function dump($data){  
  178.     print("<pre>");  
  179.     print_r($data);  
  180.     print("</pre>");  
  181. }  

对于该图片,识别率很高。

Tags: 图像识别

集体智慧编程笔记(一):相似度算法

本文内容全部来自《集体智慧编程》一书,原书采用的是python,因为没有python编程环境,所以用PHP实现

PHP代码
  1. <?php  
  2. //filename:test_collecting_preferences  
  3. //数据和代码来自《集体智慧编程》  
  4. //原文采用python实现,尝试用PHP进行转换  
  5. //@description 搜集用户偏好寻找相近用户  
  6. $datalist = array(  
  7.     'Lisa Rose' => array(  
  8.         'Lady in the Water' => 2.5,  
  9.         'Snake on a Plane' => 3.5,  
  10.         'Just My Luck' => 3.0,  
  11.         'Superman Returns' => 3.5,  
  12.         'You, Me and Dupree' => 2.5,  
  13.         'The Night Listener'=> 3.0  
  14.     ),  
  15.     'Gene Seymour' => array(  
  16.         'Lady in the Water' => 3.0,  
  17.         'Snake on a Plane' => 3.5,  
  18.         'Just My Luck' => 1.5,  
  19.         'Superman Returns' => 5.0,  
  20.         'You, Me and Dupree' => 3.5,  
  21.         'The Night Listener'=> 3.0  
  22.     ),  
  23.     'Michael Phillips' => array(  
  24.         'Lady in the Water' => 2.5,  
  25.         'Snake on a Plane' => 3.0,  
  26.         'Superman Returns' => 3.5,  
  27.         'The Night Listener'=> 4.0  
  28.     ),  
  29.     'Claudia Puig' => array(  
  30.         'Snake on a Plane' => 3.5,  
  31.         'Just My Luck' =>3.0,  
  32.         'Superman Returns' => 4.0,  
  33.         'You, Me and Dupree' => 2.5,  
  34.         'The Night Listener'=>4.5  
  35.     ),  
  36.     'Mick LaSalle' => array(  
  37.         'Lady in the Water' => 3.0,  
  38.         'Snake on a Plane' => 4.0,  
  39.         'Just My Luck' => 2.0,  
  40.         'Superman Returns' => 3.0,  
  41.         'You, Me and Dupree' => 2.0,  
  42.         'The Night Listener'=> 3.0  
  43.     ),  
  44.     'Jack Matthews' => array(  
  45.         'Lady in the Water' => 3.0,  
  46.         'Snake on a Plane' => 4.0,  
  47.         'Superman Returns' => 5.0,  
  48.         'You, Me and Dupree' => 3.5,  
  49.         'The Night Listener'=> 3.0  
  50.     ),  
  51.     'Toby' => array(  
  52.         'Snake on a Plane' => 4.5,  
  53.         'Superman Returns' => 4.0,  
  54.         'You, Me and Dupree' => 1.0,  
  55.     ),  
  56. );  
  57. //欧几里德距离  
  58. //它以经过人们的一致评价的物品为坐标轴,然后将参与评价的人绘制到图上,并考查他们彼此间的距离远近。  
  59. //偏好越相似的人,距离越近。不过我们还需要一个函数来对偏好越相近的情况给出越大的值,  
  60. //为此我们可以将函数值加1(这样可以避免遇到被零整除的错误),并取其倒数  
  61. //公式是 1 / (1 + sqrt (  pow( data[a][1] - data[b][1] .... )  ))  
  62. function sim_distance ( $datalist , $person1 , $person2)  
  63. {  
  64.     $si = array();  
  65.     foreach ( $datalist[$person1as $moviename => $grade ){  
  66.         ifarray_key_exists$moviename$datalist[$person2] )){  
  67.             $si[$moviename] = 1;  
  68.         }  
  69.     }  
  70.     ifemptyempty$si )){  
  71.         return 0;  
  72.     }  
  73.     $powers = 0;  
  74.     foreach ( $si as $moviename=>$val ){  
  75.         $powers += pow( ($datalist[$person1][$moviename] - $datalist[$person2][$moviename] ), 2 );//两者影评分数相减的平方值  
  76.     }  
  77.     return 1 / (1+ sqrt($powers));  
  78. }  
  79. //测试 'Lisa Rose' 和 'Gene Seymour' 的相似度评价  
  80. //原书上求出来是 0.29429805508554946 , PHP 的结果是 0.29429805508555,默认精度没有python高  
  81. echo( sim_distance( $datalist , 'Lisa Rose' , 'Gene Seymour') );  
  82. echo'<br/>' );  
  83.   
  84. //皮尔逊相关系数  
  85. //该相关系统是判断两组数据与某一直线拟合程序的一种度量。对应的公司比欧几里德距离评价的计算公式要复杂  
  86. //但是它在数据不是很规范时(如影评者对影片的评价总是相对于平均水平偏离很大),会倾向于给出更好的结果  
  87. //皮尔逊相关度评价法首先会找出两位评论者都曾评过的物品  
  88. //计算两者的评分总和与平方和,并求得评分的乘积之和,最后,利用这个结果计算出相关系数  
  89. function sim_person ( $datalist ,$person1 , $person2)  
  90. {  
  91.     $si = array();  
  92.     foreach ( $datalist[$person1as $moviename => $grade ){  
  93.         ifarray_key_exists$moviename$datalist[$person2] )){  
  94.             $si[$moviename] = 1;  
  95.         }  
  96.     }  
  97.     ifemptyempty$si )){  
  98.         return 1;  
  99.     }  
  100.     $n = count$si );  
  101.     $sum1 = $sum1Sq = $sum2 = $sum2Sq = $pSum = 0;  
  102.     foreach ( $si as $moviename => $val ){  
  103.         $sum1 += $datalist[$person1][$moviename];   //个人影评分数累加  
  104.         $sum1Sq += pow( $datalist[$person1][$moviename], 2 );//个人影评分数平方的累加  
  105.         $sum2 += $datalist[$person2][$moviename];  
  106.         $sum2Sq += pow( $datalist[$person2][$moviename], 2 );  
  107.         $pSum += ( $datalist[$person1][$moviename] * $datalist[$person2][$moviename]);//两人影评之乘积  
  108.     }  
  109.   
  110.     $num = $pSum - ( $sum1 * $sum2 / $n); // 正常情况下,我怎么都觉得这是1吧?  
  111.     $den = sqrt( ( $sum1Sq - pow( $sum1, 2 ) / $n) * ( $sum2Sq - pow( $sum2, 2 ) / $n) );  
  112.     if ( $den == 0 ){  
  113.         return 0;  
  114.     }  
  115.     return ($num / $den );      
  116. }  
  117. //继续测试 'Lisa Rose' 和 'Gene Seymour' 的相似度评价  
  118. //原书上求出来是 0.396059017191 , PHP 的结果是 0.39605901719067,这回。。。位数超过了python  
  119. echo( sim_person( $datalist , 'Lisa Rose' , 'Gene Seymour') );  
  120.   
  121. ?>  

有点长,随便看看吧

Tags: 算法

犹豫:是否采用Yii把sablog重构

一直在犹豫,是否要重构sablog,还是说仅仅把前台的模版系统重构一下就完事。

曾经想过是采用thinkPHP或者fleaPHP(用不惯Qee),但后来有各种各样的原因,导致就没有重构。

现在,文章数据也多了,有2年的数据了,也因此想要增加一点新功能,所以就在想着是否要重构一下。否则新功能加起来就很繁琐。

同时还要考虑一下模版,因为现在的模版太挫了,很多广告位都无法设定好,不是在顶部就是在侧部,根本没有人想点,如果在中间,或许点击的次数会多一点?

当然,我需要考虑的是缓存,一直以来sablog都是用的自带的文件缓存,虽然文件数量不大,但总也占着资源,为什么不把APC开启并使用呢?呵呵。。。

可是我还要考虑的是我原先博客里的代码高亮,虽然有想过要换到synaxhilight上面,但原来的数据怎么办?我总不可能一个个的改吧?

再然后就是,如果是换系统,那又得考虑数据迁移了,现在这样的后台,我还能够接受。一旦换系统,后台我还不一定能够熟悉呢。

最后,同一文章存放多个分类。。。【被朋友说话打断了,郁闷】

反正,就是一想法。

Tags: yii, sablog, 前端, 重构

征集PHPOO.COM的未来走向

PHPOO.com目前纯粹是用作UCHOME,原本我的想法也是类似于当成一个多用户博客来运作的。
但事实上,效果并不明显。

所以,我现在在考虑,是否使用supesite之类的CMS,把它打造成一个PHP的资讯、学习站点。
征集一下意见。。。

我现在的博客上的一部分资料转移过去,同时,收集一些比较经典、常用的资料。
再进行细分,不知道是否可行。

Tags: phpoo

Records:712