Install Dnsmasq on Centos
1. 安装
yum install dnsmasq
2. 配置
vim /etc/dnsmasq.conf
conf-dir=/etc/dnsmasq.d
vim /etc/dnsmasq.d/mobile-game.conf
address=/www.baidu.com/127.0.0.1
server=8.8.8.8
3. 配置生效
/etc/init.d/dnsmasq restart
yum install dnsmasq
vim /etc/dnsmasq.conf
conf-dir=/etc/dnsmasq.d
vim /etc/dnsmasq.d/mobile-game.conf
address=/www.baidu.com/127.0.0.1
server=8.8.8.8
/etc/init.d/dnsmasq restart
php artisan migrate
数据库迁移php artisan db:seed
导入种子数据php artisan migrate:refresh
回滚所有迁移并重新运行所有迁移php artisan migrate:refresh --seed
回滚所有迁移并重新运行所有迁移with seedphp artisan migrate:make create_users_table
创建迁移php artisan workbench chinanetcenter/cdn
新建workbenchphp artisan controller:make SessionController
新建Controller小火龙
啊,所以删档重玩一开始选泡沫蛙
好了。ps:重置存档的方式是一进入开场动画按上箭头 + x + b
ETag
Nginx 1.3.3版本开始支持,打开ETag支持后,Response Header会返回,如ETag:"52468652-169d5"
。下一次客户端的http请求中如果包含If-None-Match
头,如If-None-Match:"52468652-169d5"
,Nginx就会比较该值和计算出的ETag,一致就返回304。
ETag开关
etag on | off; // 缺省为on
If-Modified-Since
和If-None-Match
是与的关系,即均满足条件才返回304。
Last-Modified
Last-Modified:Sat, 28 Sep 2013 07:33:38 GMT
。If-Modified-Since:Sat, 28 Sep 2013 07:33:38 GMT
,如果服务器端的资源没有变化,则返回304。Nginx中的expires
expires 1d;
,那么Response Header新增返回两个头信息,分别是Cache-Control
和Expires
expires -1;
,那么Cache-Control会被设为no-cache,Expires则被设为当前服务器时间减1秒expires 1d;
,在第一次请求某个服务器资源时,服务器端的返回状态会是200,同时Response Header会返回Last-Modified和Expires和Cache-Control,这时浏览器客户端会把该资源缓存在本地1天,如果使用浏览器的转到按钮、或者在地址栏直接回车、或者打开新窗口重新输入该网址,这时浏览器不会访问服务端,而是直接读取浏览器客户端缓存,在Chrome dev tool的Network下显示的是from cache
,在Firefox的firebug下显示的是没有任何请求情况,网络请求为空Cache-Control
表示该资源的有效期,如Cache-Control:max-age=86400
,优先级比Expires要高
Cache-Control有如下取值
Request Header中的Cache-Control
Expires
Expires:Sun, 29 Sep 2013 08:34:15 GMT
使用浏览器的转到按钮、或者在地址栏直接回车、或者打开新窗口重新输入该网址
优先走浏览器本地缓存,如果本地有缓存则根本不会访问服务器
注:如果是chrome下,在本窗口下的地址栏直接回车,html不会走本地缓存,如果是新开窗口在地址栏输入网址回车,则html依然会走本地缓存。估计是chrome的策略,firefox下则都会走本地缓存
使用浏览器的刷新按钮、F5刷新或者是Mac Chrome下的Command + r刷新
不走浏览器本地缓存,不过会走服务端缓存,会返回304
使用浏览器的强制刷新,如Ctrl+ F5或者是Mac Chrome下的Command + Shift + r
既不走浏览器本地缓存,也不走服务端缓存,不返回304
使用implode拼接sql
<?php
function construct_sql($base, $logic, $clauses, $suffix = '') {
// initialise array to avoid warnings/notices on some PHP installations
$queries = array();
// create array of strings to be glued together by logic
foreach ($clauses as $key => $value)
$queries[] = "`" . escape($key) . "`='" . escape($value) . "'";
// add a space in case $base doesn't have a space at the end and glue clauses together
$base .= " " . implode(" $logic ", $queries) . " " . $suffix;
return $base;
}
/**
* @param string $str string to escape for intended use
* @return string
*/
function escape($str) {
return mysql_real_escape_string($str);
}
$updates = array(
'field1' => 'val1',
'field2' => 'val2'
);
$wheres = array(
'field1' => 'cond1',
'field2' => 'cond2'
);
echo construct_sql(construct_sql("UPDATE table SET", ", ", $updates) . " WHERE ", " AND ", $wheres);
针对IntelliJ IDEA, WebStorm, PhpStorm等均有效
设置光标不允许在行结尾以外
Preferences - IDE Settings - Editor - Allow placement of create after end of line
安装vim插件
Preferences - Plugins - Install JetBrains plugin - IdeaVim
在Intellij idea下安装IdeaVim插件后,关闭当前tab无法使用command + w
快捷键,只能使用command + F4
,需要更改Keymap
Preferences - Keymap - Main menu - Window - Editor Tabs - Close
control + enter
generate 代码自动生成alt + F7
查找被引用Error
function Error(msg,id) {}
Error = {};
EvalError
EvalError.prototype = new Error();
EvalError = {};
RangeError
RangeError.prototype = new Error();
RangeError = {};
ReferenceError
ReferenceError.prototype = new Error();
ReferenceError = {};
SyntaxError
SyntaxError.prototype = new Error();
SyntaxError = {};
TypeError
A TypeError is thrown when a value is a different type than what was expected
比较常用,当参数或变量跟预期不一样,就可以抛出这个异常
TypeError.prototype = new Error();
TypeError = {};
URIError
URIError.prototype = new Error();
URIError = {};
自己的一个Java的Clint工程,由于包依赖原来越多,决定使用Maven做依赖管理,提高日后的开发效率,IDE使用Intellij
创建Maven Module
File - New Module - 选择Maven Module - 填写Module name - Next - 使用默认配置 Finish
A nice way to do this is using Apache commons IOUtils to copy the InputStream into a StringWriter
StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer, encoding);
String theString = writer.toString();
http://stackoverflow.com/questions/309424/read-convert-an-inputstream-to-a-string
In-APP Purchase(IAP),iOS支付方式
iOS应用内付费(IAP)开发步骤列表 - 唐巧的技术博客
iOS应用内支付(IAP)的那些坑 - 唐巧的技术博客
In-App Purchase(iap)快速指南 - GungYi - 博客频道 - CSDN.NET
服务端验证接口
verify接口返回status码