composer require –nodev

There not really have such a option for composer require, but you can:

  1. composer require –no-update gomoob/php-pushwoosh
  2. composer update –no-dev

Gmail Go-To-Action

Gmail里经常有一些邮件标题后面带个可以点击的连接,这是什么东西?

答案是:这是Gmail的“Go-To-Action”,可以加一段JSON-LD代码在邮件的HTML里就可以实现。比如

<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://watch-movies.com/watch?movieId=abc123",
"name": "Watch movie"
},
"description": "Watch the 'Avengers' movie online"
}
</script>

详见:

iptables 看门狗

近来业内很多服务器因redis造成服务器被黑,这个攻击的防范重点在于防火墙!!

有时为了方便我们可能会将iptables临时关闭,方便完倘若忘记把它打开,黑客大摇大摆就走进来。

这时候,我们需要条看门狗来帮我们:如果门开了而且家里还没人在家,看门狗自己帮主人把门关上:

#!/bin/sh

/sbin/service iptables status >/dev/null 2>&1
if [ $? -gt 0 ]; then
    if [ $(/usr/bin/who | wc -l) = 0 ]; then
        /etc/init.d/iptables start
    fi
fi

nc 传送文件

直接用nc传送文件,真的很方便。可免得压缩解压缩,也免得有权限问题。

传送整个文件夹

  • 接受端:nc -l 1234 | tar -xzvf –
  • 发送端:tar -czvf – www | nc 192.168.0.200 1234

传送单个文件:

  • 接受方:nc -l 1234 > /etc/nginx/nginx.conf
  • 发送方:cat /etc/nginx/nginc.conf | nc 192.169.0.200 1234

 

Google Analytics API 的查询工具

Google Analytics API 的查询工具:Google Analytics Query Exploer

Codeship实现简单的PHP项目持续发布

Setup command:

phpenv local 5.5
pecl install -f msgpack-0.5.7
yes | pecl install -f zmq-beta
composer install
npm install && gulp
pip install fabric

Configure Test Pipelines:

# 最简单的测试,只检查了一下语法
find ./ -type f -iname "*.php" -print0 | xargs -0 -n1 php -l

Deployment:
# 用rsync等命令都可以
cd deploy && fab production deploy

好用。但要注意有个坑:免费只有100个Build,即便是用来发布Side Project,这个量还是太少了。收费版最低$49元/月,略贵。

Read the rest of this entry »

CentOS 6 RPM安裝python 2.7

先说第一种方法,通过rpmbuild编译XXX.src.rpm包([1]、[2]):

  1. 安装依赖:sudo yum install -y make autoconf bzip2-devel db4-devel expat-devel gcc-c++ gdbm-devel glibc-devel gmp-devel libffi-devel libGL-devel libX11-devel ncurses-devel openssl-devel readline-devel sqlite-devel systemtap-sdt-devel tcl-devel tix-devel tk-devel valgrind-devel zlib-devel
  2. 下载src.rpm: ftp://ftp.pycopia.org/pub/python/RHEL51/python2.7-2.7.1-1TH.src.rpm
  3. sudo rpmbuild –rebuild

然后等待漫长的编译过程。

……

……

……

在此期间我宣布一下实验结果:编译+tests跑了1个多小时,最后告诉我打包rpm时出错!坑爹啊!!

第二种是懒人大法,直接下载二进制rpm包安装:

  1. http://li.nux.ro/download/nux/dextop/el6/x86_64/python27-libs-2.7.3-6.2.el6.nux.x86_64.rpm
  2. http://li.nux.ro/download/nux/dextop/el6/x86_64/python27-2.7.3-6.2.el6.nux.x86_64.rpm
  3. http://li.nux.ro/download/nux/dextop/el6/x86_64/tkinter27-2.7.3-6.2.el6.nux.x86_64.rpm
  4. http://li.nux.ro/download/nux/dextop/el6/x86_64/python27-devel-2.7.3-6.2.el6.nux.x86_64.rpm

 

如果只需要python可以只安装1和2,不过通常未来安装python库时有时会需要头文件,所以一般推荐也安装上python27-devel.

码完收工

含autoddvpn的Buffalo WHR-G300N v2 DDWRT固件

试验过按autoddvpn官方提供的文档自制固件[1]并不可行,会提示“ERROR: New firmware image will be larger than original image!”,可以删除一些语言文件来空余出部分空间[2],否则做出来的固件会直接把路由器变砖(当然也可以刷回来[3],但是过程纠结)。

自制固件下载:

https://www.dropbox.com/s/sk889vo7n89o8lo/new-firmware.bin

升级步骤:

  1. 下载buffalo-to-dd-wrt_webflash-MULTI.bin,通过路由器本身的管理界面把它刷成DD-WRT
  2. 再通过DD-WRT web界面更新固件为自制固件

设置:这个就必说的太细啦。

已知问题:我目前使用这个固件超过2个月,偶有不稳定状况发生在VPN中断并重连后,发生不稳定状况时局域网内的主机无法连接到国外网络,但路由器可以。调试发现是iptables有几条规则被清除的原因,但还未找到完美的解决方法。

参考:

  1. custom firmware自制韌體模式
  2. Buffalo whr g300n v2路由器刷dd-wrt 再刷回来
  3. 变砖之后的处理办法:通过tftp刷回原厂固件

SSH登陆响应慢的问题

同样的问题,有可能是两种情况:

第一种情况比较常见,也有很多资料提及到,就是在SSH登陆时服务器端会对客户端的IP进行反解析造成登陆响应慢的问题,通常改sshd_config的“UseDNS no”即可以。

第二种情况,服务器端启用了GSSAPI[1]。登陆的时候客户端需要对服务器端的IP地址进行反解析,如果服务器的IP地址没有配置PTR记录,那么就容易在这里卡住了。

对于这种情况,就有必要禁用GSSAPI认证以加速SSH登陆,具体有下面几种方式:

  1. 解法一:使用ssh命令时使用附加的参数:ssh -o GSSAPIAuthentication=no server_address
  2. 解法二:修改客户端ssh_config(/etc/ssh/ssh_config或~/.ssh/config):GSSAPIAuthentication no
  3. 解法三:修改服务器端的sshd_config(/etc/ssh/ssd_config):GSSAPIAuthentication no

参考:

怎样让Google在搜索结果呈现你的头像

效果:

第一步:创建Google Profile,修改头像。同时,修改Google Profile的“以下网站的撰稿者”,增加你的博客网址在上面。

第二步:在博客文章中增加你的Google Profile链接,有两种方式选其一:

  1. 方式一:将Google Profile链接附加在每篇博文中。同时,重要是的还要设置链接的rel属性为“author”,如:
    <a href="https://profiles.google.com/102865267049130142543" rel="author">肖斌</a>
  2. 方式二:
    1. 创建一个“关于作者”的页面,在该页面插入Google Profile链接,但是这次rel的属性是”me”,如:
      Google Profile:<a rel="me" href="https://profiles.google.com/102865267049130142543">Google Profile</a>
    2. 每篇博文增加一个指向“关于作者”页的链接,设置该链接的rel属性为“author”,如:
      <a rel="author" href="/about">About</a>
只需要两个步骤,完成之后,可以通过Google Rich Snippets测试。

参考:

更新:
11.27 – 看来Google还在测试这项功能,完成以上的步骤之后还需要提交一个表单