npm更新和nodejs更新
更新你已经安装的NPM库,这个很简单,只需要运行。
npm update -g 或者 单独更新NPM npm update -g npm
更新Nodejs自身。一直依赖我都是下载最新版的源码,然后make install,及其繁琐。其实只需要运行以下2个命令即可:
npm install -g n n latest
升级完后,exit 退出 命令行窗口,重新打开,就可以查看新的版本信息了。一定要退出再打开,要不然看到的版本不变
npm -v node -v
npm更新和nodejs更新
更新你已经安装的NPM库,这个很简单,只需要运行。
npm update -g 或者 单独更新NPM npm update -g npm
更新Nodejs自身。一直依赖我都是下载最新版的源码,然后make install,及其繁琐。其实只需要运行以下2个命令即可:
npm install -g n n latest
升级完后,exit 退出 命令行窗口,重新打开,就可以查看新的版本信息了。一定要退出再打开,要不然看到的版本不变
npm -v node -v
PHP的有些技巧可能大家并不常用到,比如DOM相关的对象。
这些方法几乎和Javascript一样的方便,轻松一句就能获取到HTML DOM节点的数据。
相比于使用正则表达式,这个方法更简单快捷。
我就就常用DOMDocument和DOMXPath两个类做一个介绍。 浏览全部
公司内部一哥们发布到邮件列表中的一个小tip,挺有意思,属于程序员的“奇淫技巧”类吧,值得记录一下。
如果你在linux下工作,那用tail -f跟踪一个日志文件的输出内容应该是家常便饭了。
但是,有时你更关心的是一些敏感字词,希望能够在动态跟踪的同时,把这些字词高亮出来,比如日志中的ERROR关键字。
那么,一种思路就是把你tail输出的东西再做一次包装处理,这个很符合linux管道处理的思想。以高亮Log中的ERROR为例,你可以这样: 浏览全部
ps:需要登录的的api,即需要curl的时候提供cookie。cookie的获取可以通过python的selenium扩展控制浏览器,然后存cookie到数据库中,并持续刷新页面更新cookie。可以持续不掉线~~!
淘宝客链接获取,包含淘口令,优惠券连接,短链接和长连接,需要登录。
http://pub.alimama.com/common/code/getAuctionCode.json?auctionid=547104088197&adzoneid=29590155&siteid=8792012&scenes=3&channel=tk_qqhd&t=1494314246307&_tb_token_=7cwd1EtL4Ccq //返回结果 { "data": { "taoToken": "¥KMUzslQuqI¥", "couponShortLinkUrl": null, "qrCodeUrl": "//gqrcode.alicdn.com/img?type=hv&text=https%3A%2F%2Fs.click.taobao.com%2Fmaky2nw%3Faf%3D3&h=300&w=300", "clickUrl": "https://s.click.taobao.com/t?e=m%3D2%26s%3DNVkeWo%2B9tdgcQipKwQzePOeEDrYVVa64LKpWJ%2Bin0XK3bLqV5UHdqYa7prCCrEbBn7yqOUL3SI3gvex4QduKd8PoU26AKvvwbfTlZQifG3nXglu0rNVhFqmPLhF8eMLMPFfCWkkEW42UdBnLqqwIGpm%2FnExYVpkzoiBv0N9pI%2FUyrszIxSiWAZPa8ZD8jYm6zCW9qW3bcfEV4kXqJn%2FhrKJn5AyUbPoV&pvid=19_1.198.27.69_4940_1494314297327", "couponLink": "", "type": "auction", "shortLinkUrl": "https://s.click.taobao.com/maky2nw" }, "info": { "message": null, "ok": true }, "ok": true, "invalidKey": null }
高佣单品加券搜索,包含商品高佣佣金和优惠券,无需登录 浏览全部
新浪短网址接口的稳定性和跳转速度还是很给力的,现给出其API说明。 该接口支持两种返回格式:xml和json 对应的URL请求地址为:
xml:http://api.t.sina.com.cn/short_url/shorten.xml json:http://api.t.sina.com.cn/short_url/shorten.json
请求方式:GET 请求参数: source:应用的appkey url_long:需要转换的长链接
1,打开终端 2,输入如下命令回车执行 sudo pmset -a GPUSwitch 0 3,输入密码确认执行如上命令 4,重启搞定。
说明:
0 - 强制使用核显 1 - 强制使用独显(相当于在偏好设置-效能 里去掉自动切换显卡这个选项) 2 - 自动切换显卡
环境要求
PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.
开搞,代码实现如下。
var page = require('webpage').create(); var fs = require("fs"); page.settings.userAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4'; page.open('http://ui.ptlogin2.qq.com/cgi-bin/login?pt_no_onekey=1&style=9&appid=1006102&s_url=http%3A%2F%2Fxiaoqu.qq.com%2Fmobile%2Fbarindex.html%3F_lv%3D29313%26_bid%3D128%26_wv%3D1027%26from%3Dshare_link%23bid%3D37469%26type%3D%26source%3Dindex%26scene%3Drecent%26from%3Ddongtai%26webview%3D1&low_login=0&hln_css=http%3A%2F%2Fpub.idqqimg.com%2Fqqun%2Fxiaoqu%2Fmobile%2Fimg%2Fnopack%2Flogin-logo.png', function(status){ if (status == 'success') { page.render('index.png'); setTimeout(function() { page.evaluate(function() { document.getElementById('u').value = 'QQ号码'; document.getElementById('p').value = 'QQ密码'; pt.check(false); //document.getElementById('go').click(); //pt.check()或.click() }); setTimeout(function() { file = fs.open("cookie.log", 'w'); file.write(JSON.stringify(page.cookies)); file.close(); phantom.exit(); }, 2000); }, 1000); } });
cookie会写入到当前目录下的cookie.log文件,有了cookie接下来的事情就简单多了。使用php或js将cookie种到浏览器下即可。
#!/bin/bash #此脚本为自动封ssh登录次数 num=10 #输错密码上限 for i in `awk '/Failed/{print (NF-3)}' /var/log/secure|sort|uniq -c|sort -rn|awk '{if (1>num){print2}}'` do iptables -I INPUT -p tcp -s $i --dport 22 -j DROP done
最近要使用thinkphp3.2版本的cli模式,手动执的话没有问题,比如php /www/index.php home/article/get 这样没有问题,但是一般用cli模式都是定时任务比较多,这个时候写到定时任务的时候,比如 0 * php /www/index.php home/article/get 这样就会出现引入ThinkPHP.php失败的问题,这个问题算是比较容易解决的,但是后来还有其他各种报错,经过查看相关核心代码,终于找到无需修改代码,就可以轻易使用cli模式的方法。
步骤如下: 1、官方下载的框架文件里面的index.php文件引入其他文件使用的是相对路径,这导致了定时执行的时候引入ThinkPHP.php文件不存在的问题,修改成绝对路径即可。 define( ‘APP_PATH’, dirname(FILE).’/Application/’ ); require dirname( FILE).’/ThinkPHP/ThinkPHP.php’;
2、思维要倒回去第半步,刚刚说index.php文件的相对路径跟绝对路径的问题,但是执行cli模式的时候,我们的入口文件要有别于通过web服务访问的index.php文件,比如增加cli模式的入口文件cli.php,内容跟index.php的一样,同时增加一句话 define(‘APP_MODE’,’cli’); 定义APP的执行模式。此时,我们有两个入口文件,一个是web服务访问方式的index.php,另一个是cli模式访问的cli.php 3、在路径 /ThinkPHP/Mode 下面有个文件,名字叫做common.php ,复制一份出来,命名为cli.php,然后把里面引入日志类的代码注释或者删除掉 ‘Think\Log’ => CORE_PATH . ‘Log’.EXT,
4、删除缓存下面的所有缓存——记得是所有
5、再啰嗦一句,以后cli模式调用的时候,就用cli.php入口文件,比如定时任务 0 php /www/cli.php home/article/get ,如果是web服务访问,则依然使用index.php文件
原文出自 兴奋小猪 http://www.xingfenxiaozhu.com/2015/11/14/thinkphp-3-2的cli模式(命令行模式)的正确使用方法/ 转载请注明出处