Submitted by gouki on 2010, August 3, 8:03 AM
我想,我遇到的问题应该不是个案,即,博客的评论被大量的垃圾评论所占据。里面充斥着N多链接之类的,或者上来就是一句:博主,我看好你哦,又或者,我也在学习这个。然后就是一个主页链接。
事实上,自从08年8月1日以来,我的博客的评论就处于审核再发布的状态,因此所有的评论都不会直接发布出来,而是先审核再发布。对于这种垃圾评论,我一向是直接删除的。也请垃圾评论发布者们不要浪费大家的时间 。既浪费你也浪费我,何必呢?
记得前一阵,mysql中文网(mysql.cn)也宣布评论开始审核了在本站发广告评论的看过来。冯大辉等也早就开启审核。和他们这些大流量网站相比,我的站点的流量可以忽略不计了,但,我觉得这种事情不是一个个案,而是大家都遇到的(可惜不能把这些IP进行鉴定处理,否则可能对不起同一IP段的朋友),再加上即使我人工审核,每天还是有不少垃圾评论出现,因此设为置顶贴,请这些朋友手下留情。
可惜。。。
Tags: 垃圾评论, seo
Misc | 评论:6
| 阅读:22368
Submitted by gouki on 2010, August 2, 4:50 PM
对于一些几乎没有变型的图片来说,下面这个方法或者会减轻你的工作量。
事实上,我也是从http://fr.cc0311.com/php-telephone-number-ocr.html看的代码,再想想,walkerlee在05年就写过了关于bmp图片的识别。不过BMP可能会相对简单一点吧?
看了这个法月博客的代码。脑子一热,花了半小时,重写了一遍。。。没有优化。因为大部分方法还是参考的他的,只是对法月的这篇文章中的代码,我做了简单的改动。版权,还是算他的吧。。。去年的时候,也写过类似的。。只是因为图片变形,最终识别率超低,因此对于这种不变形的,还是写下代码做个笔记吧。
PHP代码
- <?php
-
- $imgfile = 'http://bj.ganji.com/tel/5463013757650d6c5e31093e563c51315b6c5c6c5237.png';
-
- interface imagedatas {
- public function setimagedata();
- public function getimagedata();
- }
-
- class GanjiImage implements imagedatas{
- public $imagedata;
- public function __construct(){
- $this->setimagedata();
- }
- public function setimagedata(){
- $this->imagedata = array(
- 0=>'000011111000001111111110011000000011110000000001110000000001110000000001110000000001011000000011011100000111000111111100000001110000',
- 1=>'011000000000011000000000111111111111111111111111',
- 2=>'001000000011011000000111110000001101110000011001110000011001110000110001111001100001011111100001000110000001',
- 3=>'001000000010011000000011110000000001110000000001110000110001110000110001011001110011011111011111000110001100',
- 4=>'000000001100000000111100000001111100000011101100000111001100001100001100011000001100111111111111111111111111000000001100000000000100',
- 5=>'111111000001111111000001110001000001110001000001110001100001110001100001110000110011110000111111000000001100',
- 6=>'000011111000001111111110011000110011110001100001110001100001110001100001110001100001010001110011010000111111000000001100',
- 7=>'110000000000110000000111110000111111110001110000110111000000111100000000111000000000111000000000',
- 8=>'000100011110011111111111110011100001110001100001110001100001110001100001110011100001011111111111000100011110',
- 9=>'001111000000011111100001110000110001110000110001110000110001110000110001011000100001011111100111000111111110000001110000',
- );
- }
- public function getimagedata(){
- return $this->imagedata;
- }
- }
-
- class imageValidation
- {
- protected $imgfile;
- protected $imgsize;
-
- protected $imgdata;
- protected $hordata;
- protected $verdata;
-
- protected $imgfunc;
-
- function __construct( $imgfile , $imgsource = ''){
- $this->imgfile = $imgfile;
- $this->imgsize = getimagesize($imgfile);
- $this->imgfunc = $this->getImageFunc();
- if($this->imgfunc == 'imagecreatefromstring'){
- $this->imgfile = file_get_contents($this->imgfile);
- }
- $this->imgsource = new $imgsource();
- }
-
- function getImageData(){
- $func = $this->imgfunc;
- $resource = $func( $this->imgfile );
- for( $i=0 ; $i < $this->imgsize[1] ; $i++){
- for( $j=0 ; $j<$this->imgsize[0] ; $j++){
- $rgbcolor = imagecolorat( $resource , $j , $i);
- $rgbarray = imagecolorsforindex( $resource , $rgbcolor );
- if($rgbarray['red'] < 125 || $rgbarray['green']<125 || $rgbarray['blue'] < 125){
- $data[$i][$j]=1;
- }else{
- $data[$i][$j]=0;
- }
- }
- }
- $this->imgdata = $data;
- }
-
- function getHorData(){
- $z = 0;
- for($i=0; $i<$this->imgsize[1]; $i++){
- if(in_array('1',$this->imgdata[$i])){
- for($j=0; $j<$this->imgsize[0]; $j++){
- if($this->imgdata[$i][$j] == '1'){
- $newdata[$z][$j] = 1;
- }else{
- $newdata[$z][$j] = 0;
- }
- }
- $z++;
- }
- }
- $this->hordata = $newdata;
- return $newdata;
- }
-
- function getVerData(){
-
- for( $i=0; $i< count($this->hordata[0]) ; ++$i){
- for( $j=0;$j<count($this->hordata);$j++){
- $newdata[$i][$j] = $this->hordata[$j][$i];
- }
- }
- $i = 0;
- foreach($newdata as $k=> $v){
- if( in_array(1 , $v ) || (isset($newdata[$k+1]) && in_array(1,$newdata[$k+1]) )){
- $newdatas[$i] = $v;
- $i++;
- }
- }
- $this->verdata = $newdatas;
- return $newdatas;
- }
- function get(){
- $i = 0;
- foreach( $this->verdata as $val){
- if(in_array(1,$val)){
- $datas[$i] .= join("",$val);
- }else{
- $i++;
- }
- }
- foreach( $datas as $k => $val ){
- $number[$k] = $this->check($val);
- }
- return $number;
- }
- function check($str){
- $imgsourcesdata = $this->imgsource->getimagedata();
- foreach( $imgsourcesdata as $k => $val){
- similar_text($str,$val,$percent);
- $ret[$k]=$percent;
- }
- return array_search(max($ret),$ret);
- }
-
- function draw( $data ){
- $str = '';
- if(is_array($data)){
- foreach ($data as $key => $val){
- foreach ($val as $k => $v){
- if($v == 0){
- $str .= "<font color='#FFFFFF'>".$v."</font>";
- }else{
- $str .= $v;
- }
- }
- $str.= "<br/>";
- }
- }
- echo $str;
- }
-
- function getImageFunc(){
- switch($this->imgsize[2]){
- case IMAGETYPE_PNG :
- $this->imgfunc = 'imagecreatefrompng';
- break;
- case IMAGETYPE_JPEG :
- case IMAGETYPE_JPG :
- $this->imgfunc = 'imagecreatefromjpeg';
- break;
- case IMAGETYPE_GIF :
- $this->imgfunc = 'imagecreatefromgif';
- break;
- default:
- $this->imgfunc = 'imagecreatefromstring';
- break;
- }
- return $this->imgfunc;
- }
-
- }
-
- $img = new imageValidation($imgfile,'GanjiImage');
- $img->getImageData();
- $img->getHorData();
- $img->getVerData();
- $phone = $img->get();
- dump($phone);
-
-
-
- function dump($data){
- print("<pre>");
- print_r($data);
- print("</pre>");
- }
对于该图片,识别率很高。
Tags: 图像识别
PHP | 评论:1
| 阅读:28841
Submitted by gouki on 2010, August 2, 2:51 PM
没有什么特别的东西。主要就是有了一个延迟,但效果不是特别好。。将就点了。
JavaScript代码
- $.fn.gTab = function( opts ){
- var options = {
- 'timer':0,
- 'hover':'',
- 'target':'',
- 'autoswitch':false,
- 'addClass':'',
- 'removeClass':''
- };
- var self = $(this);
- opts = $.extend(true, {},options,opts || {});
- if(!opts.target){
- alert('对不起,请设置目标对象');
- return ;
- }
- if(!opts.hover){
- opts.hover = self;
- }
- var hoverIntervalFunc = function(index){
- return setInterval(function(){
- $(opts.target+':not(eq('+index+'))').hide();
- $(opts.hover+':not(eq('+index+'))').removeClass(opts.addClass).addClass(opts.removeClass);
- $(opts.target+':eq('+index+')').show();
- $(opts.hover+':eq('+index+')').removeClass(opts.removeClass).addClass(opts.addClass);
- },opts.timer);
- }
-
- $(this).hover(
- function(){
- var index = self.index(this);
- cId = hoverIntervalFunc(index);
- },
- function(){
- clearInterval(cId);
- }
- )
- }
花了半小时写的。所以效果一些都没有特别的考虑。只考虑实现就完事了。。。象很多都是用的:eq和:not(:eq),事实上siblings()已经实现这个功能,但当时写的时候没翻到这个函数,就直接用:not(:eq)来解决了。
Tags: jquery, tab
Javascript | 评论:0
| 阅读:19423
Submitted by gouki on 2010, August 1, 9:14 PM
看zendstudio.net的博客才发现,zendstudio居然升级到8了。。感觉自从这个zendstudio在換了eclipse核心之后,版本号突突突的上升啊。6.0,6.1,7.0,7.1突然就到8.0了。。真是不可思议。
记得以前的版本,从5.0~5.5,花了多久,现在呢?半年一个版本?
唉,看zendstudio.net上的翻译吧,我也懒得翻译了。。。
--------------------------------------------
8.0新版具有以下几个亮点:
1、Zend Studio编辑器支持javascript以及常见js库,例如jquery,dojo,Extjs,prototype
2、更好的支持javascript,html,css等的编辑和调试(gently认为是否不用再做和 Aptana的整合工作了?)
3、集成的新的ajax调试器,将javascript和php的调试工作趋于统一
4、PHP编辑器的编辑功能和导航功能的改进和增强。
网址:http://www.zendstudio.net/archives/zend-studio-8-beta-is-now-available/
Tags: zendstudio
Software | 评论:0
| 阅读:17326
Submitted by gouki on 2010, August 1, 8:53 PM
原来的42t458历经一年后,崩了
水货电池在8个月后,充不进电了
今天,我的8芯电池又到货了,不知道他这次能够使用几天。
其实挺郁闷的。为了这个电池,我的笔记本几乎又多花了1000大洋。早知道买苹果去了
不过我不是果粉,对于苹果没有这样那样的爱好,但,听说电力真的够强劲。而不是象我,8芯电池,亮度最低,开着word之类的软件,才能用上7小时左右 。
这次我的8芯电池不知道会用几小时。之所以买8 芯的,是怕出去找不着电源插座,8芯的,几乎全功能运转,也可以3~4小时,这才是我想要的。
权当记录一下,等下次崩掉的时候也好有个记录
Tags: 联想, thinkpad, 42t4568
Misc | 评论:0
| 阅读:15406