月度归档:2014年10月

如何更改Firefox的语言

Firefox在安装的时候会根据系统本地的语言来判断要使用的语言,由于我系统是外文,所以想换成中文,但在option里面找了半天,没找到任何设置语言的地方……其实FIrefox比Chrome要麻烦点,首先在FF输入网址的地址栏内输入“about:config”然后会出现一个警告画面,点击进入,然后搜索“general.useragent.locale” 双击它会出现一个输入框,然后输入对应的语言码即可,比如简体中文设置为“zh-cn”或“zh-sg”,繁体中文是“zh-tw”或“zh-hk”。英语是“en”或“en-us”,日语是“ja”,韩文是“ko”,西班牙语是“es”……
更多语言码列表参见:http://msdn.microsoft.com/zh-cn/library/ms533052%28v=vs.85%29.aspx

无可奈何的Chrome,已经投奔Firefox

忘记什么时候,由于Firefox太占内存,所以转到了Chrome至今,但现在的Chrome已经不是当年那个Chrome了,虽然还是那么快,但是由于工作环境是一台4G的机器,所以每到下午的时候,尤其快下班的时候,电脑都会很慢,原因就是Chrome吃掉了一半以上的内存,哪怕是只有几个正在打开的Tab,即使吧Tab关到一个,也不会释放出多少内存…曾经问过Chrome为什么那么吃内存,原因就是Chrome用内存换速度,用内存缓存很多数据提高运行速度……的确它也很快,我当时也就信了这种说法。现在看来,我觉得Chrome的数据算法有严重问题,因为如今的Firefox也很快,而且根本没有像如今的Chrome一样耗内存。虽然Firefox没有Chrome用的顺手,但是他不至于拖慢我电脑,无奈转投Firefox……

chrome or firefox

什么是ICANN fee

我们在国外的域名注册商上注册域名的时候,经常在结算页面看到$0.18美元的ICANN Fee,其实这个费用是注册商要交给ICANN的费用,域名在新注册,更新,转移的时候都要强制收取这个费用,也就是域名所谓的成本价格,但为什么普遍卖8-15美元呢,后面的我将专门写一篇文章细细道来。

ICANN的全称是the Internet Corporation for Assigned Names and Numbers(互联网名称与数字地址分配机构),是管理全球顶级域名和IP地址分配的机构,这个组织的前身IANN

关于“multipart/form-data”表单无法发送动态添加的input

我们知道”multipart/form-data”格式的表单被用在有文件上传项的表单上,今天在做项目的时候发现form的enctype为”multipart/form-data”格式的时候无法发送动态添加的项目,比如这个表单内的某个项目是表单显示后,在浏览器采用js或者ajax方式添加的项目,post到程序端的时候这部分被添加的项目实际上不能发送到程序段,这点和普通post不一样!

事后再chrome和firfox下调试,两款浏览器均不能发送动态表单项,查看debugger的时候发现,发送数据格式其实已经不是平时post的那个样子了,而是和邮件一样,每个项目由特定的分割符隔开,发送的,可能页面加载的时候已经预算出“multipart/form-data”格式的编码,之后再改变也添加表单项,但是可以修改它的值,所以解决方案是在初期网页加载的时候,预留一些表单项,用js或ajax修改他们的值。

下面列出格式为“multipart/form-data”表单数据发送的样子:

Content-Type:multipart/form-data; boundary=—-WebKitFormBoundaryXopBO7fYN1Mr9YGX
——WebKitFormBoundaryXopBO7fYN1Mr9YGX
Content-Disposition: form-data; name=”_method”

POST
——WebKitFormBoundaryXopBO7fYN1Mr9YGX
Content-Disposition: form-data; name=”data[img][z]”; filename=””
Content-Type: application/octet-stream

——WebKitFormBoundaryXopBO7fYN1Mr9YGX
Content-Disposition: form-data; name=”data[img][zz]”; filename=””
Content-Type: application/octet-stream

——WebKitFormBoundaryXopBO7fYN1Mr9YGX

关于mysql的null,空字符串,0

最近在mysql上做项目,发现mysql的null,空字符串和数字0的判断上和oracle非常不一样,按照以前oracle的经验去做,出了不少bug。。。
为了彻底搞清楚,特意找时间研究了一下。
mysql在select条件上严格区分空字符串和NULL,而oracle上这两个东西基本一样。
mysql在insert上,如果字段没有指定会有以下几种情况
字段为字符型(char,varchar…)注text/blob之类的字符二进制字段不能创建默认值!
 有默认值:插入默认值
 无默认值:
  允许为NULL:插入NULL
  不允许NULL:插入字符串”,并产生警告!
字段为数值型(int,float…)
 有默认值:插入默认值
 无默认值:
  允许为NULL:插入NULL
  不允许NULL:插入数字0,并产生警告!

程序员请注意保护眼睛

这篇文章和程序无关,其实也不算什么攻略了,最近感觉眼睛不是太好,特别着了个软件叫Workrave来提醒自己休息
在这样下去真要戴眼镜了…

程序员怎么样保护眼睛呢

首先最好显示器很重要,现在都是LED显示器了,其实根本不护眼,我公司里面两个显示器,一个是LED,一个是LCD,看LED的时候明显比LCD要累眼,有条件最好选择TN面板的LCD显示器

其次使用休息提醒软件,每隔一段时间提醒你休息眼睛,比如上面说的Workrave,他不光可以提醒你定时休息眼睛,还能教你做操,环节疲劳。
http://www.workrave.org/

注意补充维生素A,这个医生这么说,就这么做吧,猪肝最好,以前很讨厌吃动物内脏,现在为了身体,不得不吃。身体是革命本钱嘛,哈哈~

是false还是NULL?关于mysql_fetch_assoc函数的返回值

最近在做一个小程序,由于实在是太小了,没有用什么框架,直接原生php函数写起来的,由于一个读取数据库表循环的bug,引起了我的注意。现看代码:
$rs=mysql_query(‘select * from tb’);
while(($row=mysql_fetch_assoc($rs))!==false){
}
由于我的失误,tb表其实在测试和生产环境不存在,但是这段代码在测试环境上和远程环境上执行的结果不一样,是的,测试环境上不会循环,而远程环境会不断循环但是找不到任何数据。
经过测试我发现,当在php5.2和php5.4,也就是我测试和生产环境下,当找不到行的时候,mysql_fetch_assoc都会返回一个false,但是当传入一个非结果集资源到mysql_fetch_assoc的时候,在5.2和5.4下分别返回false和NULL!而且由于我是采用严格类型判断,所以这段while循环在5.2下会立即结束,在5.4下会产生死循环,而且无法读取任何数据(因为返回值是NULL,所以$row的值是NULL)
通过这个例子,我认为做php版本升级的时候要特别谨慎,尤其是大版本升级的时候,会产生很多意想不到的问题,应该完全参考php文档的“版本迁移”部分:http://php.net/manual/zh/migration53.php

在64位windows 7系统安装debug.exe调试工具

最近我在研究汇编,书中介绍的调试工具还是基于WinXP 32位时代中自带debug.exe进行调试,但是64位的Windows XP、Vista、Win7、Win8都已经不自带这个工具了,网上的解决方案基本上有两种,一种是安装一个DOSBox虚拟32位的DOS,在这个虚拟出来的DOS下使用从32位XP中的debug.exe;另一种是直接用Virtual Box或者VMware之类的虚拟机安装32位系统。

今天无意中在网上找到一个叫WinDbg的程序,是微软官方出的,其实就是debug.exe的64位版,支持XP、Vista、WIN7,、Win8系统,半图形化界面非常方便。

下载地址:http://msdn.microsoft.com/en-us/windows/hardware/hh852365.aspx

其实WDK和Visual Studio都已经集成了这个工具在里面,无奈我很少接触VS,……除了VS和WDK,在下载页面稍微靠下一点还有“Standalone Debugging Tools for Windows (WinDbg)”,也就是说可以只安装windbg。功能挺多的,由于是图形界面,也很方便使用,不仅能运行调试一个exe文件或某一个进程进行调试,还可以那它来分析windows的蓝屏dmp文件(%SystemRoot%\MEMORY.DMP),这几天研究一下,后续会发一个关于它如何使用的文章。enjoy it.

windbg

How to export your RSS subscriptions of Google Reader which has been closed for over a year (如何导出已经关闭的Google Reader的RSS订阅列表)

Google Reader已经于2013年7月1日关闭,目前已经一年有余,官方网站已经无法登陆,更别提导出备份之前的数据了……
As we all know that Google Reader have been discontinued on July 1, 2013. Now the official site has been not allow to login and backup or export the RSS subscriptions data…

我记得我在它关闭之前曾经把数据导出到Feedly.com,但是可能是超过一定时间没有用吧,Feedly居然擅自把我的阅读列表给删除了!
I remember that I exported the reader list to feedly.com before it closed, but may be as long time no using, feedly.com has deleted my all data that I imported

最近在网上闲逛,发现一个叫inoreader的阅读器,很像逝去Google Reader,速度快,画面简洁,更令人惊奇的是,它可以通过使用Google Account登录来导出之前Google Reader的数据,Feedly.com虽然也可以使用Google帐号登录,但是已经无法找回之前Google Reader的阅读列表了,而且没准过几天再把你数据删除了……不敢再用
Recently, I found a RSS reader called inoreader when I was surfing the Internet. It looks like dead Google Reader and faster, simpler than feedly.com. To my surprise, it can also get my Google Reader’s RSS list data back even now when you login with Google account. feedly.com can although login with Google account but it can NOT get reader list back! and I am afraid to use it because it maybe lost my reader list some day!

Hello world!

Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!

第一篇文章就用Hello Word作为标题吧~感谢WordPress提供的免费开源博客程序~

今天意外收获这个域名,我比较喜欢,作为一个混迹PHP圈多年的小程序员,一直在别人托管的博客下写文章,今天就在建国日的今天,我终于可以独立了~~

今后我想利用这个博客发表一些关于PHP,数据库,LINUX,以及底层的一些文章,来记录我的开发Career

恩,第一篇文章就写这么多吧,嗯~

EOF