laravel 任务队列

官方文档写得挺好的,不过还是写下自己的理解,省得翻老代码还骂这啥代码,谁写的?

./artisan queue:table
#生成任务队列数据表的迁移文件
./artisan migrate
#执行迁移
./artisan make:job fetch_page
#新建一个抓取页面的任务,名字随意,只要便于理解就行

先不管这个文件长啥样,大概了解下原理
laravel 使用 ./artisan queue:work 来作为守护进程执行分发的任务
因为这条命令是由php来执行的,所以在php.ini中有最大执行时间,到了这个时间,不管执行的如何,它都会挂掉
即使最大执行时间足够大,但也可能因为一些不可控因素挂掉。。。
所以要配置supervisor来让它挂掉后重新起来。
把分发任务放到控制器中,然后写路由,然后编辑crontab
如果是web路由,就定期访问访问那个页面分发任务
如果是console路由,就定期执行那个命令
如果由用户控制,或基于事件,比如下面这个,用户提交链接,然后把任务加入队列
现在来写控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

use App\Helper\Page;
use App\Jobs\fetch_page;

class PageController extends Controller
{
    /**
     * 分发页面任务
     * 队列就是先进现出FIFO,所以可以按次序将任务压入队列,它们将按顺序执行
     * @return void
     */
    protected function cron($url)
    {
        //抓取页面 注入依赖以及参数
        dispatch(new fetch_page(new Page, $url));
    }
}

来设想一个场景,用户提交一个待抓取页面,然后用户就可以去忙别的,或者继续提交。否则,用户只能等上面这个流程走完之后才能提交下一个。这是多么浪费生命的事情?
再来看看这个任务文件

worker = $worker;
        $this->url = $url;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $this-worker->fetch_page($this->url);
    }
}

supervisor的配置安装如果有问题,就去看官方的readthedoc文档,看文档去填坑吧。。

记一次 php curl CURLOPT_FOLLOWLOCATION 的使用。。。

因为需求,需要爬虫跟随重定向,设置了 CURLOPT_FOLLOWLOCAT = true; 用 http://baidu.com 测试的。。百度不乖,没有跟随重定向。。在网上找到了两种方法,来查看 response header

$content = curl_exec($ch);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
//$header = substr($content, 0, $header_size); 第一种
list($header, $body) = explode("\r\n\r\n", $content, 2); //第二种

发现没有 Location 字段。。加上 CURLOPT_USERAGENT 后,百度乖乖的奉上了 Location 。 终于可以一起愉快玩耍了。

我是有参考资料的人
php-curl-retrieving-response-headers-and-body-in-a-single-request

记一次不完整的社工

先获得的手机号, 第一步, 支付宝转账, 验证姓名, 添加通讯录, 通过各种社交软件修改查询通讯录的权限, 获取其在社交软件上的信息. 比如(微信啊 QQ啊 微博啦) 通过搜索引擎搜索手机号, 进一步挖掘有关网站泄漏的个人信息, 嗯, 以及其在网上的足迹. 不断优化搜索关键词… 使用一些搜索技巧, 比如site:域名 关键词 进行站内搜索 – 符号剔除不相干关键词 ….
其实好长时间没有写了, 水一波……
这次发现泄漏信息最严重的是招聘网站, 尤其实是啥广告都打的便民信息网站. 比如某集啦, site:{{分站}}.mouji.com/jianli/用户{{uid}}x.htm 除了联系方式之外的整个简历就出来了…. 其简历附件, 我见过获奖证书, 驾照, 语言证书… 嗯, 这些东西里有身份证号, 以及一寸免冠照…. 更不用说学历, 教育经历, 户口所在地, 巴拉巴拉的…..所以, 用过的东西的隐私设置一定要设置好. 不过招聘还是去正规的网站好, 相对注重用户隐私些, 虽然他也卖客户简历到别家招聘网站吧…. 一些招聘网站的企业用户, 嗯 也就是给hr用的账户, 还是很好的, 不掏钱不让看完整简历. 没错, 不经过企业认证, 有钱就能看…. 就不打六个点, 你打我啊 🙂
相对于银行卖信息啦, 购房卖信息啦, 外卖卖信息啦… 这些还是可以去避免的, 设置好隐私设置, 比较注重隐私的话就用两个手机号, 再注重的话那就准备多个身份, 哈哈, 多重人格…
嗯, 水够了. 放肆嗨

angular2 重构 wordnet-lite 总结

参照着angular.io上的 heros demo 重构的. 部分小特性没有加进来,视图重新渲染也有点小bug..后续再填坑

开始看了好几天angularjs.org 然后找了本angular2看, 用的typescript, 敲完一个demo, 想着怎么搞成纯js的, 无意中发现 一个是angularjs 一个是 angular2 … 彻底被自己打败了.. 最近不怎么在状态…压力有点大..

大约用了三天,开发环境以及gulp工作流都是参照官网的, 没怎么修改..惭愧..
第一天 环境配置以及shim.js zone.js等文件没有加载, 只加载了一个bundle.js…还没有设置base href属性, 浪费了小半天
第二天 粗心大意, 写模板的时候, *ngFor 语法写错了, 又浪费了半天. 仔细,要仔细
才发现gulp流中加入uglify不会拖慢再次bundle, 反而加快了浏览器jit的时间… 这又浪费了一些时间…
第三天 在服务中添加localStorage缓存, promise返回值问题, 又浪费了半天. 当初是在课上看的promise, 没怎么实践, 这就吃亏了

由于watchify没有显示tisfy编译错误, 导致gulp默认任务跑半天也没个结果…果断ctrl+c结束, 然后再开个panel tsc 直接显示错误, 修改完再执行gulp就可以了..
angular.io上的demo在组建构造函数中注入的时候, 没有加注解, 不知道怎么运行过去的… 找这个原因也浪费了点时间… 是我配置有问题么,求大神指点
export class component 的时候, 不注意拼写错了, 然后再另外一个文件 import 出错… 这个错误犯过几次..
在新建数据结构的时候, 异想天开搞了个嵌套另外一个自定义结构, 也是自己把自己作的.. 文件增多了, 也增加了歧义的几率…
模板绑定数据的时候, 想着修改下数据, 原来是直接取json内容, 然后array.join(‘, ‘) , 结果发现难度不小.. 不过直接在模板中输出数组, 自动添加了join(‘,’)…
模板在一个tag中写两个指令会报错, 可以在ng-container标记中写一个指令, 在这个元素中写另外一个指令

一定要吸取教训, 不要重蹈覆辙…

fedora 25升级小记

参照蓝点网的文章进行的升级,目前貌似cdn配置有问题,不能访问了。。。
他也是翻译的fedoramagazine。没啥问题,略做修改,很好很强大。
使用的中科大的源,最近这个延迟很尴尬啊。。看服务器状态是还在同步,清华的源也是。不过磨磨唧唧还是升级成功了。
升级过程中,删除了几个包,vlc,以及gstreamer1-libav 其他没注意。这两个被卸载是真不能忍。。。
下载安装rpmfusion,安装vlc

$ rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-rawhide.noarch.rpm 
$ yum install vlc

关于gstreamer1-libav这个包,这是个神奇的包,网易云音乐有了它瞬间满血复活。嗯,wine对这个包也是有影响的。
还有可能会因为gpg key的问题最后出错,在软件包签名密钥这里可以找到相关的密钥
实在找不到密钥,又确信不会被假包欺骗,可以在dnf参数中加入–nogpgcheck
升级完后又要把官方的repo文件移动出来备份,免得出现多次配置repo的错误提示,那几行字。。。
升级后Wayland确实好用不少,开机后进入桌面不花屏了,感觉显示更细腻了。