易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
一月回顾

一月回顾

总感觉好象本月没做啥事情啊,其实上个月也没做啥事情,只是为什么都得到1点多才睡呢?真奇怪

本月做的事情太少了,或者说都是碎片化的事情,比如花上一晚上写个微信投票啥的,解决别人几十个BUG,埋掉了别人的一些坑之类的
真心感觉没有什么可以做的。这一个月就这么浑浑噩噩的过去了。然后就最近这几天在看看Swift,在朋友的帮忙下看看几千行的OC代码,感觉不能急进,还是慢慢来吧
swift initwithnibname

swift initwithnibname

本篇是个笔记

在参考oc代码的时候,有一个initWithNibName方法,在使用swift重写的时候,发现,如果super.init,就会报错,参考了网上很多代码,有人说,重写init方法。不能用override,要用required,结果也是无效

所幸stackflow上面已经有人提出了,说是不能用 init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) 这种方法,只能用 init(NSCoder),网上也有很多人写了例子。

但好象每一个版本的xcode 测试版都不太正常,所以,有的例子就是:func init(coder code:NSCoder!),但实际在使用的时候发现它有提示,说是必须要required,而且NSCoder!不要加感叹号。

于是我最后的代码就是:

required init(coder decoder: NSCoder){
super.init(coder: decoder)
}

搞定

参考:

1、http://blog.johnregner.com/post/93071481303/ios-programming-in-swift-chapter-1

2、http://stackoverflow.com/questions/25267907/initwithnibname-does-not-implement-superclass-swift

typecho Stat 插件的小BUG

typecho Stat 插件的小BUG

在使用Stat插件时,发现代码中存在一个小BUG,是对Columns not found的判断有问题,原代码写的是:

'Mysql' == $type && 1051 == $code

但事实上,如果你使用的是PDO,$code 还应该加上 42S22,所以上述代码就应该改成这样了

('Mysql' == $type && (1054 == $code || $code == '42S22'))

然后就可以安装成功了。

该插件的信息是:

/**
* 页面浏览次数统计插件
* @package Stat
* @author Hanny
* @version 1.0.2
* @dependence 10.8.15-*
* @link http://www.imhan.com
* 历史版本
* version 1.0.2 at 2010-07-03
* 终于支持前台调用了
* 接口支持Typecho 0.8的计数
* 增加SQLite的支持
* version 1.0.1 at 2010-01-02
* 修改安装出错处理
* 修改安装时默认值错误
* version 1.0.0 at 2009-12-12
* 实现浏览次数统计的基本功能

*/

不过由于这个版本比较早,就将就一下啦

让人吃药的max_input_vars

让人吃药的max_input_vars

在某个项目中,每次提交都丢了部分数据,觉得非常奇怪,开始的时候以为是数据量过大,但后来又觉得不应该,因为如果是数据量过大,要么就是提交失败,要么就是直接报错啊?

但事实上我每次提交都是成功的,但print_r($_POST)的时候,总丢了不少的数据,这是为什么呢?

于是,将http头中的form内容全部copy出来,查看了一下,发现共是1200多行。打印POST的时候,只有1000行,咦,这不科学啊?少了200多行?

google了一下,原来,PHP有这么一个配置:

; How many GET/POST/COOKIE input variables may be accepted
; max_input_vars = 1000

而它的默认值 是1000,好吧,如果不是这次意外,根本不会发现项目中存在的这个BUG,毕竟要提交1000多个参数还是有难度的。顺便说一下:param[]=1&param[]=2是属于两个参数。所以如果你提交的项目中有多个数组,每个数组又有不少值的话,你就真的要小心了

手贱,将max_input_vars 改成5000,问题解决。。

------

回顾,这种因为偷懒的事情往往出现在哪里呢?

1、ajax提交,不管三七二十一,将某堆数据 serializeArray(),jquery的这个功能,偶尔真心会让人吃药。

2、日程管理和广告排期管理,这时候input的key确实 有可能会超过1000,但我还是建议先序列化再存到一个字段提交更安心 吧?

------
OVER

thinkphp模板中的Load好象有BUG

thinkphp模板中的Load好象有BUG

在thinkPHP的模板中,有几个tag标签都是用来引入js和css的,比如:import/css/js/load之类的,经过测试,好象load这个Tag有BUG

比如:<load href="/assets/static/wap/css/reset.css"/>,加载一个CSS文件,这个没问题,但如果使用<load href="/assets/static/wap/css/reset.css?ver=1"/>,这种就直接失效了。

当然如果你使用<css file="xxxx?ver=1" />是有效的

看了下代码,好象在没有明确标记类型的时候,程序判断后缀名失效了。<css>标签是主动告诉import程序,我的类型是css,而load是根据代码判断的,因此,对于load应该主动加上type="css",或者,修改程序:

看划线的地方,这里应该先basename,把?或者其他带有版本的信息先去除干净才OK。

或许这是一个bug,或许,就是提示你应该主动加类型。

受不了太平洋保险了

受不了太平洋保险了

突然感觉自己好象受不了太平洋保险了

之前我的车险快到期的时候,太平洋有3拨以上不同的人给我电话,口气生硬说是你要保险了,马上来办吧。
拒绝之后过两天又有人电话过来,上午和上午还是不同的人。难道自己内部也没有处理这事情吗?
口气生硬、说话也很冲,真不知道他们是怎么做保险的。当然,基于这样的情况,我是肯定没有选太平洋保险的了。
怎样在阿里云上安装docker

怎样在阿里云上安装docker

因为debian 7安装docker的手续比较麻烦,所以我把阿里云的系统换成了ubuntu 14.04,然后参考:https://docs.docker.com/installation/ubuntulinux/

还算比较方便:apt-get update && apt-get install docker.io,然后再改两个配置就完事了。

不过,在你运行docker run -i -t ubuntu /bin/bash的时候,会报错,说是docker -d好象没有运行,这不科学 啊,刚刚不是装好的吗?

于是ps aux|grep docker,果然没有进程,于是直接输入:docker -d,然后就发现报错了:

2014/08/18 12:05:42 Could not find a free IP address range for interface 'docker0'. Please configure its address manually and run 'docker -b docker0'

老规矩,内事不决问度娘,外事不决问谷歌,结果居然看到有人回复 :

当时这个心就碎了,心想这不科学啊,于是再google,就真的发现了:

OK,那就试试吧:

sudo brctl addbr docker0 # create your bridge
sudo brctl addif docker0 eth0 # mask an existing interface using the bridge
sudo ip link set dev docker0 up # bring it up - not really sure if this is necessary or is it done automatically
sudo ifconfig docker0 10.0.0.4 # give it an IP

当然要运行brctl还是要装一个bridge-utils工具的,当然这个ubuntu会提醒你,一步步的做完后,docker 果然可以启动了。这时候再运行一下,service docker.io start,然后ps aux|grep docker,进程还活着。

于是输入:

docker run -i -t ubuntu /bin/bash
Unable to find image 'ubuntu' locally
Pulling repository ubuntu
2014/08/18 12:16:44 Get https://index.docker.io/v1/repositories/ubuntu/images: dial tcp: lookup index.docker.io on 10.143.22.118:53: no answer from server

咦。不能上网。其实就是上面的代码的问题,因为默认aliyun的eth0是内网IP,所以上述的

sudo brctl addif docker0 eth0 # mask an existing interface using the bridge
这里应该用eth1

重新执行一下。然后再次运行:

docker run -i -t ubuntu /bin/bash
Unable to find image 'ubuntu' locally
Pulling repository ubuntu
c5881f11ded9: Download complete
。。。。。。。

整个就完成了

如何解决wordpress后台打开超慢的总是

如何解决wordpress后台打开超慢的总是

最近有些朋友和我说,wordpress的后台在本地打开都超慢。不知道为什么,负载什么的都没有。

看了下代码,同时也看了下网络上的评论,原来最近大家都喜欢上了使用google的字体,众所周知,google的各种服务在国内访问都是渣渣,真不知道怎么会有这样的公司,明明这个网站就打不开,还有那么多人用它的东西。当然你懂的
既然知道问题在哪里就好办了。
1、插件法
现在针对上述情况,国内开发人员已经开发了相应的插件来处理了,如disable google fonts或者其他的,你搜索google fonts就可以
2、代码法
在wp-include/script-loader.php中,你会找到font.googleapis.com的字样。你只要替换掉它们即可(当然,删除也可以),如果你有需要用这些字体,你可以用数字公司提供的前端CDN库(http://libs.useso.com/)。到了上述的网址我相信你也应该知道怎么了。
不知道何时才能打开那些网站,这些就当成技巧先保留着吧
关于ubuntu 11.04的源的问题

关于ubuntu 11.04的源的问题

不得不承认,到现在为止还有很多服务器在用旧的ubuntu版本,比如我在buyvm上的服务器,现在还是11.04的版本,在执行apt-get update的时候,不是IGN就是404。

这是因为,ubuntu已经不再维护这些源了,那么我们仍然在使用的怎么办?改一下吧:

deb http://old-releases.ubuntu.com/ubuntu/ natty main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ natty-security main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ natty-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ natty-proposed main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ natty-backports main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ natty main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ natty-security main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ natty-updates main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ natty-proposed main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ natty-backports main restricted universe multiverse
其实这挺让人痛苦的。。。ubuntu的更新又是这么频繁 。。
参考:http://askubuntu.com/questions/345000/updating-ubuntu-server-apt-get-gives-me-404-not-found
被两个问题搞死。。

被两个问题搞死。。

今天被两个问题搞死

1、加载hprose.phar/HproseHttpServer.php一直报文件找不到:Warning: include(./hprose.phar/HproseHttpServer.php): failed to open stream: No such file or directory
2、定义了Yii的errorHandler和error的Controller结果死活不对。
解决:
1、居然是忘了phar在include的时候要申明协议,即include('hprose.phar/xxx.php')是不对的。必须要include("phar://hprose.phar/xxx.php");
该死的,居然忘了这个,命令行下写代码,总是搞错东西
2、这个问题说实在的。真TMD操蛋,我是想偷懒的,所以就加载了yiit.php。。想着这是个lite的文件,应该没啥问题啊?结果,就是因为加载的yiit.php而不是yii.php搞得我在那里折腾了半天。真是要人命啊
果然就象老王说的,每一个找寻半天不得结果的BUG后面,都有一个令人啼笑皆非的原因