2010-04-30

今天处理了一个莫名其妙的配置问题

类归于: symfonymaker @ 14:08

把公司以前用symfony1.2做的一个项目上传到测试服务器上会出现配置文件解析错误,把除了error_reporting之外的所有配置注释掉就会好用,找个很久也没找到原因。

最后没办法开始重写配置, 终于发现原因, 原代码如下:

dev:
.settings:
error_reporting: < ?php echo (E_ALL | E_STRICT) ^ E_NOTICE ^ E_DEPRECATED ."\n" ? >
web_debug: on
cache: off
no_script_name: off
etag: off
default_culture: ja

问题就是由于 E_DEPRECATED 常量导致的,这个常量是5.3之后才添加的, 所以在5.3以下版本的php就会出现常量未定义的错误,导致配置文件解析错误,E_DEPRECATED是一些不推荐使用(也可以说是即将废弃的)的函数错误, 因为程序是在5.2下开发的, 升级至5.3错误异常的多, 所以屏蔽此错误。

解决办法,去掉E_DEPRECATED常量或者进行defined()处理。

2010-04-21

使用push&pull来管理CVS模式的git公共库

类归于: Gitmaker @ 14:07

概要
本文介绍了git format-patch提交更新的替代方案,使用类似CVS的提交和更新来代替现在正使用的操作相对麻烦的format-patch。

如何创建一个CVS模式的公共库?
确保用户组git已存在,确保开发人员在git组中

chgrp -R .git git # 将.git改为git组

chmod -R 775 .git

cd .git&&chmod 664 config description index&&chmod 777 HEAD

通过以上命令就创建了一个CVS模式的公共库,可以方便的使用push和pull来进行操作。
从远程服务器192.168.9.9的/var/proj/project目录检出项目到project目录下

git clone maker@192.168.9.9:/var/proj/project project

每个用户clone项目之后需要设置身份

git config –global user.name “maker” # 改成自己的

git config –global user.email “makerwang@gmail.com” # 改成自己的

已检出项目不需要做任何修改,在必要情况下设置身份即可。

PUSH
在本地提交(commit)后,使用git push来将本地的(这里指每个开发者独立检出的项目)修改提交到公共库中。
切记,使用push命令提交之后再对公共库进行修改之前要把公共库切换到最新版本

PULL
使用git pull来进行项目的更新,提交前最好使用pull来将项目更新至最新,否则将无法进行push操作。
如果两人同时修改了同一行代码,pull操作将提示冲突”both modified”,通过git status查看冲突,人工解决冲突并将解决冲突后的文件再次进行提交,然后再进行push操作。

在给arch的最近一次更新中,发现git push命令无法正常执行,报错

![remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to ‘xxx.xxx.xxx.xxx:xxx/xxx/xxxxx/xxxxxx’

这是由于git默认拒绝了push操作,需要进行设置,修改.git/config添加如下代码:

[receive]
denyCurrentBranch = ignore

git中使用$Id$显示版本号

类归于: Git — 标签:, , maker @ 13:48

在需要使用该功能的目录下创建.gitattributes文件并在.gitattributes中添加ident属性:

* ident

这样在任何文件中都可以使用$Id$来显示当前文件最后修改的版本号。
如果项目是从svn或者其他版本控制系统移植过来的可能文件中已经有了版本信息,比如

/*
* $Id: abcdefghijklmn $
*/

象这样的版本信息git会自动识别并替换成git下的版本,当然前提是这个文件有过修改或者提交。

2010-04-06

解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题

类归于: PHP — 标签:, , , , maker @ 01:47

其实这个问题很久之前遇到过, 应该是没解决, 当时的情况是openoffice打开正常而excel打开不正常, 后来也没解决了, 只能把编码转了.

这次又遇到这个问题了, 在网上一番寻找, 在一篇java的文章里找到了原因, 是由于输出的CSV文件中没有BOM.

什么是BOM?

在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE”。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。

那么如何在PHP中输出BOM呢?

在所有内容输出之前

print(chr(0xEF).chr(0xBB).chr(0xBF));

原文地址: http://foolbird.net/1517.html

WordPress 所驱动