Laravel Tutorial Part 2 - Migrations and Artisan

1.安装migrate

1
php artisan migrate:install

2.生成一个create_authors_table文件

1
php artisan migrate:make create_authors_table

3.找到文件app/database/migrations/2014_03_27_143731_create_authors_table.php,编辑修改文件

1
2
3
4
5
6
7
8
9
10
11
12
13
public function up()
{
Schema::create('authors', function($table){
$table->increments('id');
$table->string('name');
$table->text('bio');
$table->timestamps();
});
}
public function down()
{
Schema::drop('author');
}

php抓取小说(phpQuery使用)

前些天无意中在iTools的推荐应用中看见了一个应用《青囊尸衣》,这不是我大学看过的一本小说吗。于是去AppStore上下载了这个应用,一看原来这本书还有两个续集:《青囊尸衣之天门鬼谷》、《青囊尸衣之祝由葬尺》。在手机上看了一两天,发现这个免费的app底下还有广告,非常碍眼,应用设计的也没那么精致。我希望能在kindle上看,但是去amazon的kindle商店搜索了一下没有找到这本书,在iReader、网易阅读上也搜不到。好吧,那我只能google、baidu之了。终于在一个叫努努书坊的网站搜到了剩下的两本书。想到以前初中高中都是每个章节点进去复制粘贴到txt里面,然后传到文曲星mp3上看,有时候遇上禁止复制的网站还得禁用js之后才能操作,体力活非常辛苦,现在作为程序猿当然会想到通过个小程序来抓取就是了。

CentOS下单网卡安装配置PPTP VPN

VPN(Virtual Private Network,虚拟专用网络)是专用网络的延伸,它可以通过共享Internet或公共网络连接模拟点对点专用连接的方式,在本地计算机和远程计算机之间发送数据。

它具有良好的保密性和不受干扰性,使双方能够进行自由而安全的点对点连接。

Linux下常用的VPN服务有两个,一个是pptp,另一个则是openvpn。前者更简单一些,但是只有独立服务器和XEN VPS可以搭建;后者则没有任何限制。前者搭建出来的VPN,不需要特殊的VPN客户端,直接在Windows下创建VPN拨号连接即可;而后者需要安装一个客户端来进行拨号

不同域下的iframe高度自适应

今天遇到这么个问题:在a页面中嵌入了一个iframe,这个iframe的页面(b页面)高度是不固定的,需要让他能自适应高度。在不同域下a不能操作b,b也不能操作a,因为js在这里有权限的问题。

解决这个问题的思路是这样的:

1、http://www.zhuwenbo.net/a.html里面嵌入一个iframe的地址为http://domain/b.html;

2、而在这个b.html又嵌入一个跟a.html同域的iframe,如http://www.zhuwenbo.net/proxy.html页面。这样的话proxy.html页面就有权限操作a.html里面所嵌入的iframe的高度了;

3、而b.html在调用proxy.html可以传参数给proxy.html,通过proxy.html就可以来设置a.html的页面的iframe的高度的。

看下示例的代码:

a.html

[code lang=”html”]
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8" />
<title>pageA</title>
<script>
</script>
</head>
<body>
<h1>A页面</h1>
<iframe id="aiframe" frameborder="none" width="100%" src="http://domain/b.html"></iframe&gt;
</body>
</html>

[/code]

b.html

[code lang=”html”]

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8" />
<title>pageb</title>
<script>
</script>
</head>
<body>
<h1>b页面</h1>
</body>
<script>
var height = document.body.scrollHeight;
var iframe = document.createElement("iframe");
iframe.src = "http://www.zhuwenbo.net/proxy.html#&quot; + height;
iframe.style.display = "none";
document.body.appendChild(iframe);
</script>
</html>

[/code]

proxy.html

[code lang=”html”]

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8" />
<title>proxy</title>
<script type="text/javascript">
var url = window.location.href;
var urlArr = url.split("#");
var iframeHeight = 1000;
if (urlArr[1] != undefined) {
iframeHeight = urlArr[1];
}
top.document.getElementById("aiframe").height = iframeHeight;
</script>
</head>
<body>
</body>
</html>

[/code]

这样的话执行顺序应该是这样的a.html->b.html->proxy.html->a.html

IE6下第一次打开页面jsonp请求解析错误

情景是这样的,之前有A、B两个相互独立的项目,现在需要把他们给合并到一起。A项目需要用ajax的方式来调用B项目中的某些接口,由于这两个项目是不同域名下的,所以存在跨域的问题,就用了jsonp的方式来调用B项目的接口。
A项目下的ajax的请求如下:

[code lang=”js”]
var url = ‘http://‘ + requestHost + ‘/user/index/?’ + Math.random();
$.ajax({
url : url,
type : ‘POST’,
dataType: ‘jsonp’,
success : function (result) {
if (result.errorcode == ‘notlogin’) {
loginTip();
} else {
showUserInfo(result);
}
}
});
[/code]

在这个例子里面,如果IE6以下开启Gzip就会有问题,会跑到ajax的error里面去,关闭了gzip之后就解决了问题,也不知道是不是回调的result里有一些特殊字符如”? / : -“的原因。
还有点奇怪的是IE6就是第一次打开的时候回调函数有问题,第二次刷新页面就会到到success回调里去。

tips:如何在nginx中关闭对IE1-6关闭gzip压缩

在http{
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_disable “MSIE [1-6].“;
gzip_vary on;
}

|