2018年9月

找出匿名弹窗广告所在的文件位置

最近一直被一个右下角广告弹窗搞得心神不宁的,就在右下角显示。这几天双十一,出现的频率多了起来,每天开机都要担心这个流氓弹窗会不会跑出来,简直不胜其烦。一开始拿它没办法,后来通过百度,终于找出了幕后元凶,下面介绍一下方法:
300

安装spy++,这个小软件有个瞄准镜功能,把瞄准镜拖到弹窗的位置,可以看到这个窗口的相关信息。然后打开spy++, 点望远镜按钮。
300

点击望远镜后会弹出一个窗口,窗口中有一个瞄准镜,可以拖放到窗口上面,然后spy++就会获取到窗口的信息
300

把瞄准镜拖到弹窗广告上面,会显示窗口的信息。然后点击确定按钮。
300

在窗口属性中选择进程选项卡,可以看到弹窗广告的进程ID,这里的ID是000027E0
300

这里显示的ID是十六进制的,打开计算器,把进程ID换算成十进制的。
300

得到进程ID后,打开任务管理器,切换到详情选项卡。查找ID号为流氓弹窗ID的进程。比如我要找的是10208,结果如下:
300

选中这个进程,然后右击,选择打开文件所在位置。最后就真相大白了:

我这里是金山打字通这个软件搞的鬼。最后卸载即可。有没有觉得整个世界都清静了

你有没有在开发微信小程序的时候用到wepy,而用less写css的时候使用到calc的时候计算有问题。怎么回事?

对于前端er来说,Less或Sass已经是一项必备的基本技能,有了这个利器,可以省下前端开发者的很多编码时间,让你写CSS如行云流水一般,然后最近我在Less里加入calc时确发现了有点问题,我在Less中这么写:

div {width : calc(100% - 30px);}

  结果Less把这个当成运算式去执行了,结果给我解析成这样:

div {width: calc(70%);}

是由于less的计算方式跟calc方法有重叠,两者在一起有冲突,于是,我在Less中把calc的写法改写成下面这样:
 

div {width : calc(~"100% - 30px");}

  然而,把30px替换为一个变量的正确写法(不然其他如 grunt-less Webstorm 等工具又会报错):

  div {
  @diff : 30px;
  width : calc(~"100% - @{diff}");
  }

首先xls是网上一个系统下载的数据文件,直接上传处理后出现红点问题。那么就想保存成xlsx试试,结果不让上传了。

ceckobecko/spreadsheet-reader 只允许上传xls文件,当上传xlsx文件时无法正确读取文件,并报 file not readable错误。

我们首先来解决不能上传xlsx文件的问题:

检查代码114行左右返回了error = 1 导致后面的代码报出上述错误,实际上并非文件没有读取权限:

if (substr($this->data, 0, 8) != IDENTIFIER_OLE) {
            $this->error = 1;
            return false;
           }

这里data:

$this->data = @file_get_contents($sFileName);

IDENTIFIER_OLE:

define('IDENTIFIER_OLE', pack("CCCCCCCC",0xd0,0xcf,0x11,0xe0,0xa1,0xb1,0x1a,0xe1));

那么我们把0-8个字符转成16进制看看是什么内容吧:

        for ($a = substr($this->data, 0, 8), $i=0; $i<8; $i++) {
            $hex = dechex(ord($a[$i]));
            var_dump($hex);
        }

输出:

string(2) "50"
string(2) "4b"
string(1) "3"
string(1) "4"
string(2) "14"
string(1) "0"
string(1) "6"
string(1) "0"

我们把这些16进制再打包成二进制,再与原来的字符串判断是否相等:

define('TTTTTTTTTTTTTTTT', pack('CCCCCCCC', 0x50, 0x4b, 0x03, 0x04, 0x14, 0x00, 0x06, 0x00));
var_dump(substr($this->data, 0, 8) == TTTTTTTTTTTTTTTT);

这里就会输出 bool(true) 了

那么我们在判断文件类型的时候还应该多加一个判断就可以上传xlsx文件了,如下:

define('TTTTTTTTTTTTTTTT', pack('CCCCCCCC', 0x50, 0x4b, 0x03, 0x04, 0x14, 0x00, 0x06, 0x00));
if (substr($this->data, 0, 8) != IDENTIFIER_OLE && substr($this->data, 0, 8) != TTTTTTTTTTTTTTTT) {
            $this->error = 1;
            return false;
           }

然后再试试上传,现在报500服务器内部错误了,而且处理时间明显加长了

后来发现用excel打开文件,直接按下ctrl+s保存一下,再上传就没有红点问题了,哎

算了还是保存为xls吧,以后有时间再看,抱歉!!!

以上只作本人的学习记录