最后更新于 .

甚至比svn还简单


  1. sudo apt-get install git-core python-setuptools(安装相关包)

  2. git clone https://github.com/res0nat0r/gitosis.git(下载官方源代码)

  3. sudo python setup.py install(利用python脚本安装)

  4. sudo -H -u git gitosis-init < id_rsa.pub(初始化)

  5. git clone git@192.168.1.11:gitosis-admin.git(管理员客户端维护权限)

最后更新于 .

听说2011款的MacbookPro换镁光SATA3接口的SSD固态硬盘有不兼容问题,通常表现在无法顺利安装系统,频繁死机白苹果无限菊花和随机卡死现象。

分析可能性如下:

2011款MBP是sandybridge架构i5处理器,主板芯片组为HM65,原生不支持SATA3接口,而且没有顺利让镁光的SATA3切换成SATA2模式,所以造成的问题。因为有网友测试使用老款SATA2接口镁光SSD则毫无问题。

另,下一代MBP理论上应该用ivy架构处理器, 主板芯片组为7系列,原生支持SATA3,估应该无此问题。

最后更新于 .

研究不深,只说如何不受传统CVS SVN思想误导的学习方向。


  1. 一上来不要试图研究如何团队协作,要先明白单机怎么玩。团队功能(push/pull)就是git的一个辅助功能;

  2. 用命令行进行入门学习,用各种图形工具会被误导;

  3. 即便是git管理的文件(add过的),修改后也需要重新add,才能commit;

  4. revert和checkout两个关键字功能和SVN完全不同;

  5. 要理解理论上github不是git服务器端,你自己才是git服务端。github只是你资源库的一个clone;

  6. 一上来就用github容易混淆概念。

最后更新于 .

今天说试试当前项目对于PHP 5.4的兼容性。

安装非常顺利,编译参数跟5.3基本一样,只是去掉了一些没用的。

安装完毕后,xdebug和memcache扩展没有被加载。

中途排错过程不说了,为了让大家少走弯路,直接说结果。

首先,so目录改变了,因为API版本变了,最新的目录是:

/usr/lib/php/extensions/no-debug-non-zts-20100525

所以需要重新编译所有的so,他会自动编译到该目录。

另外,xdebug需要最低2.2.0RC1,memcache需要最低3.0.6

需要先phpize,然后再安装。

以上步骤均为Mac下操作通过,Linux下理论一致。Windows用户速速退下。

最后更新于 .

买的The new iPad充电器是假货,在与卖家协商中,故暂时不公布卖家淘宝店。

现在发出假充电器细节写真。点小图看大图。

另外usb口的一角,还有刻刀印记,竟然是人工的画上线然后开口,划线时划超了留下的痕迹。该山寨厂家还停留在作坊时代。
不过由于晚上光线问题,无法从照片里看出来。

我想仅以上两张图片,足以证明该充电器是假货了吧。

我会把与卖家的沟通过程和结果公布在本页,不断更新中,敬请期待。

最后更新于 .

 


  • 需要Mac OS X 10.6.8或者更新

  • 需要Intel架构的Mac

  • 增加了64位支持

  • 更新到libpurple 2.10.0

  • 很多用户界面改进,在Mac10.7下看起来更舒服


下面还有一大堆无关紧要的,就不翻译了。

总之这款软件是替代官方MSN的利器,推荐更新。

最后更新于 .

前提是你得安装libevt,libjpeg,libpng等一大堆库。
没安也没关系,编译出错的提示写的很清楚,按需安装即可。
这里最大的修改就是增加了mcrypt支持,这么重要的扩展Mac竟然默认不支持。





'./configure' '--prefix=/usr' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--sysconfdir=/private/etc' '--with-apxs2=/usr/sbin/apxs' '--with-config-file-path=/etc' '--with-libxml-dir=/usr' '--with-openssl=/usr' '--with-kerberos=/usr' '--with-zlib=/usr' '--enable-bcmath' '--with-bz2=/usr' '--enable-calendar' '--with-curl=/usr' '--enable-dba' '--enable-exif' '--enable-ftp' '--with-gd' '--with-freetype-dir=/usr/X11' '--with-jpeg-dir' '--with-png-dir' '--enable-gd-native-ttf' '--with-iodbc=/usr' '--with-ldap ...

最后更新于 .

最近看到一篇文章:《PHP开发者常犯的10个MySQL错误》,发现文中不少内容陈旧,随着时间推移技术发展变化而变得不适用。为了防止误导新手,特本着与时俱进的精神写出此文,绝非对原文作者的不尊重。

1.使用MyISAM而不是InnoDB
完全错误,反驳理由:
首先原文说MyISAM是默认使用的,而实际上到了MySQL 5.5.x,InnoDB已经成为了默认的表引擎。

另外,简单的使用InnoDB不是解决所有问题的方法,盲目的使用甚至会使应用性能下降10%乃至40%。

最佳方法还是针对具体业务具体处理,例如论坛中版块表,新闻分类表,各种码表等长时间不操作的表,还是要用性能优异的MyISAM引擎。
而需要用到事务处理的例如用户、账目、流水等严格要求数据完整性和时序性的,则需要用InnoDB引擎,并且应用也要用好事务处理机制。当然,事务处理必然要带来大量的性能损耗,但是这在简单高并发应用上是必须的。

最后,外键约束在公共web互联网应用上一般是不用的,因为他会严重影响性能。数据完整性还是靠程序员或者应用架构本身的健壮来维护。而正规的第三范式只是在企业内部MIS系统和12306这种网站上使用。

2.使用PHP的mysql方法
不完全错,但要酌情选用:
mysqli固然好,但是不是所有的服务器都为PHP编译了mysqli的支持。
当你的应用如果是能确定只用自己部署的服务器,而应用也是完全自己开发,则mysqli是最好的选择。
但是一旦你的应用有可能部署在虚拟主机或者由其他人部署(例如分布式项目),还是老老实实使用mysql函数集吧,好好封装一下或者使用成熟框架杜绝sql注入。

3.不过滤用户输入
这一点不用说了 ...

最后更新于 .

今天是年底,最近一段时间没有管服务器,下班前看了一下slave的状态,惊讶的发现已经于两个月前中断了,中断原因是执行sql语句的用户在slave机器不存在。IO:yes,SQL:no。

由于master只保存10天的binlog,所以开始我认为只能靠重建master-slave了(也就是彻底清空slave,把master库拷给slave,然后master的position归零重新开始)

等到晚上11点关站后,开始清理slave的各种文件,惊奇的发现/var/log/mysql下有很多relay.xxxx文件,用文本编辑器打开,发现竟然就是binlog。

经过确认,发现这是自SQL:no开始,从master拷贝过来的binlog文件。也就是说,即便超过了master的binlog最长保存期限,binlog也会发送至slave(前提是IO:yes),这时候只需要简单的处理错误语句,使其继续即可,例子:

slave stop;
SET GLOBAL sql_slave_skip_counter = 1;
slave start;

完成,剩下的事让mysql自己去干吧。

事后回想,binlog的最长时间干什么用?其实只要slave的IO:no(也就是网络出现问题)的时间超过了master的binlog最长时间,就回天无术了,只能重建master-slave。

年度归档