<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.8.4" -->
<rss version="0.92">
<channel>
	<title>4's symfony blog</title>
	<link>http://www.foolbirds.com</link>
	<description>all about symfony</description>
	<lastBuildDate>Wed, 10 Feb 2010 09:54:33 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>外包 佣兵计划</title>
		<description>taskcity.com 是一个外包的网站 ，看上去在中国做的相当不错了

里面看到不少都是国外的项目，但是价格我认为都偏低 特别是php的项目，总感觉一个网站就一百刀，一百五十刀，最多的我看到现在有四百刀，做得都挺复杂，不知道是我的技术不够 还是国外就这个行情，我感觉我是做不了 ，还有外语不是很强

不过我不行，不知道仅有的几个来 foolbirds 的朋友中有没有行的

如果您 通过 这个链接 这个注册帐号，那么您以后做的项目将会分我一定的比例，但是您拿 到的是不变的，比如一共一百刀，您还是拿一百刀，我的那五块钱，不是从这一百刀里出的，呵呵  介绍的时候是这么说的
这个手段相当狠啊，一下会有n多人为这网站 宣传，包括我 </description>
		<link>http://www.foolbirds.com/task-city.html</link>
			</item>
	<item>
		<title>python3 判断 变量类型</title>
		<description>初学PYTHON3

想知道 如何 判断 一个变量 是否为 字串

试了了下  没有 isstring的函数

type(a) == 'str'也不好用

查了一下手册发现

isinstance是好用的

用法如下

def isString(a)

return isinstance(a,str) </description>
		<link>http://www.foolbirds.com/python3-is-typ.html</link>
			</item>
	<item>
		<title>symfony 1.4 数据库 utf8设置</title>
		<description>symfony 1.4 更新好长时间了

也准备放弃 symfony1.2 改投 1.4

1.4照比 1.2有了很多更新 官方文档 我不是很满意，感觉有很多东西在文档上找不到全靠自己看代码 及 搜 英文blog

其中  symfony 1.4 对utf8  数据库的支持 我在 官方的文档中并没有找到好的例子 ，在英文blog中找到了一些个解决办法
如下

dsn:      sqlite:%SF_DATA_DIR%/database.db
username: root
password: 123456
attributes:
default_table_collate: utf8_general_ci
default_table_charset: utf8
 </description>
		<link>http://www.foolbirds.com/symfony-1-4-database-utf8.html</link>
			</item>
	<item>
		<title>开发技巧总结</title>
		<description>很久以前保存在草稿里的一些开发技巧，整理发表出来。

1. php格式化数字
echo number_format(123456789);
运行结果 123,456,789

2. html中的分页符号
需要使用css  ，这是有关打印的一些css属性

属性   版本   兼容性   继承性   简介
page   CSS2   IE5.5+   有           检索或指定显示对象容器时使用的页面类型（pagetype）。参阅@page规则
page-break-after   CSS2   IE4+   无   ...</description>
		<link>http://www.foolbirds.com/2010-1-20%e5%bc%80%e5%8f%91%e6%8a%80%e5%b7%a7%e6%80%bb%e7%bb%93.html</link>
			</item>
	<item>
		<title>打鸟游戏修改版</title>
		<description>在网上偶然看到了这款打鸟的Flash游戏，体验了一下，感觉创意和游戏性方面都还不错，不过刚才玩的时候不容易过关（有点不爽）。本着一惯的要对游戏负责的态度决定试着修改一下。最好是在游戏开始时就有足够多的钱，这样可以买所有武器和弹药。let's go.破解Flash当然首选硕思闪精灵了，在硕思里打开swf导出为fla在Flash中打开,F9打开代码窗口,找到money改成想要的数值，OK 了。这么简单自己也没想到，问了高手才知道，可以修改很多属性，比如导弹的发射速度，现在这个版本导弹的发射速度已经修改了（有了这个想不通关也难），关于修改的具体细节正在整理中，敬请期待。
 </description>
		<link>http://www.foolbirds.com/1072.html</link>
			</item>
	<item>
		<title>symfony cheat sheet</title>
		<description>上一篇文章里介绍了symfony的cheat sheet，但官方的下载地址貌似被墙，所以我也没有下载到全部的cheat sheet，不过还好bobhero那里有，虽然是1.0的，但很多内容依然很有用。




[caption id="attachment_1051" align="alignnone" width="211" caption="symfony directory structure and CLI"][/caption]

[caption id="attachment_1052" align="alignnone" width="211" caption="symfony helpers javascript and AJAX"][/caption]

[caption id="attachment_1053" align="alignnone" width="211" caption="symfony helpers forms"][/caption]

[caption id="attachment_1060" align="alignnone" width="211" caption="symfony views part1"][/caption]

[caption id="attachment_1050" align="alignnone" width="211" caption="symfony views part2"][/caption]

[caption id="attachment_1056" align="alignnone" width="211" caption="symfony model part1"][/caption]

[caption id="attachment_1057" align="alignnone" width="211" caption="symfony model part2"][/caption]

[caption id="attachment_1055" ...</description>
		<link>http://www.foolbirds.com/symfony-cheat-sheet.html</link>
			</item>
	<item>
		<title>Cheat Sheets!</title>
		<description>bobhero就喜欢搞一些稀奇古怪的东西，800块的古董式键盘买了两个外加一个超级怪异的轨迹球鼠标，智能手机买了两个一个打电话一个玩日历，Arch Linux装了Awesome然后接了两个显示器。早在两年之前，我刚来公司的时候，就对他的这些卡片很感兴趣。


这个东西的英文名叫cheat sheet，找了很久也没有找到一个合适的中文名，不过我觉得叫备忘卡很合适。从以往的工作上来看，cheatsheet的确帮了不少忙，最关键是省了翻手册的时间，网上有很多的cheat sheet，打印下来，塑封，然后放在电脑旁，下面是来自Added Bytes的cheat sheets。



PHP  (V1)
PHP (V2)
Mysql







JavaScript 
CSS (V1)
CSS  (V2)







mod_rewrite  (V1)
mod_rewrite (V2)
HTML







正则表达式 (V1)
正则表达式 (V2)
ASP/VBScript







Python (V1)
Ruby on Rails
Subversion(SVN)







请访问 http://www.addedbytes.com/cheat-sheets/获取更多的CheatSheets.

注意：打印cheatsheet最好打印pdf版本的，图片格式的清晰度可能不是很好。忘了提醒大家了，塑封的时候可以把两张塑封到一起，比如PHP(V1)和PHP(V2)可以塑封个反正面。

下面这些是symfony官方提供的cheat sheets，貌似是1.0的，不过或多或少还有些用处。



Symfony Admin Generator
Symfony Directory Structure And CLI






请访问http://trac.symfony-project.org/wiki/CheatSheets来获取更多的symfony cheat sheets。下载链接我这里访问不了，不知道是删掉了还是被墙了，有新的发现我会再发出来。
http://www.addedbytes.com/cheat-sheets/php-cheat-sheet/ </description>
		<link>http://www.foolbirds.com/cheat-sheets.html</link>
			</item>
	<item>
		<title>awesome 的 多头显示</title>
		<description>awesome 的确是个好东西，用上了，就不喜欢别的女人了

今天心血来潮再次找出 awesome官网上的 图片 YY了一会 真爽啊，四个显示器




等咱有了钱，弄八个显示器 ，二十四的竖着放

我把公司里的大屁股显示器搬出来了 放在桌面上 ，准备实施 双头显示器 计划

首先要有一块双头的显卡 我找到了 ati x500 ，换上 HDMI 2 VGA线 开始了漫长的驱动过程，使了半天力气，终于放弃了，ATI 官方的驱动不好用 ，不知道是AMD 不牛X ，还是ATI太弱。

有的时候放弃 也是一种进步

我换了一个N卡

顺序驱上，竟然发现有图型设置程序 爽 nvidia-setting 经过一阵设置，黑屏，重启，再黑，再启。终于
桌面OK了

有以下几点需要注意：
1.能不用A卡就不要用A卡
2.有一个什么什么东西要打开,要不然AWESOME 不能很好的工作   =&#62; xinerama
3.两个显示器最好是一样的，要不然很影响心情

上图

用SCROT 竟然直接拿到了全图


[gallery link="file" orderby="rand"]
 </description>
		<link>http://www.foolbirds.com/awesome_dual_screen.html</link>
			</item>
	<item>
		<title>兼容IE6,IE7,IE8和Firefox的图片上传预览效果</title>
		<description>所谓图片上传预览，就是在使用文件选择框选择了文件之后就可以在页面上看见图片的效果，关于这个效果我一直认为是无法做到的，没想到前不久被zhuozi搞定了。

网上流传的一些关于图片上传预览的代码都是差不多的，IE6下使用文件选择对象的value属性取出将要上传的本地文件路径，然后使用本地路径构造img标签，代码如下：

&#60;input type="file"
onchange="document.getElementById('view').innerHTML=' &#60;img src=\'' + this.value + '\'/&#62;';" /&#62;
&#60;div id="view"&#62; &#60;/div&#62;

网上有些人说上面的代码可以在IE7下生效，但实际测试是不行的，因为IE7的img标签不支持本地路径，所以需要使用div和css的filter来实现这个效果，代码如下：

&#60;input type="file" onchange=‘javascript:
document.getElementById("pic").filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src 
= this.value;’ /&#62;&#60;br /&#62;
&#60;div id="pic" 
style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);
width:400px;height:200px;"&#62;&#60;/div&#62;

而关于Firefox的图片上传预览效果，网上几乎找不到相关资料，比较容易想到的解决方案无非是自动将图片上传到服务器再显示出来诸如此类，但这里我们不对此类技术进行讨论，我们要做的是正宗的上传前本地预览。

以下是最后的研究结果，同时兼容IE6,IE7,IE8和Firefox。

&#60;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&#62;
&#60;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&#62;
&#60;head&#62;
&#60;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&#62;
&#60;script&#62;
var picPath;
var image;
// preview picture
function preview()
{
  document.getElementById('preview').style.display = 'none';
  // 下面代码用来获得图片尺寸，这样才能在IE下正常显示图片
  document.getElementById('box').innerHTML 
   ...</description>
		<link>http://www.foolbirds.com/image-upload-preview.html</link>
			</item>
	<item>
		<title>成为一名symfony文档贡献者.</title>
		<description>很久没有更新博客了，最新的一些工作没有涉及到symfony相关的研究，不过利用了一些空闲参与了symfony文档的翻译工作。

其实目前来讲也不是真正的翻译，只是将网络上已经有的文档整理到symfony官方的svn中去，也算为symfony和广大国内的PHP开发者做一点点贡献。

在这也可以提醒一些symfony爱好者，官方的jobeet文档的中文版又开始更新了，是整理自symfony中文的，目前还没有全部整理完，整理完毕之后我还会尝试完成friend没有发表出来的后几章的内容。

闲话不多讲了，现在主要说说如何参与到symfony的开发中去。

symfony项目是基于svn(subversion)的，所以如果你要参与到开发中去，一定要有一个svn账号，这个账号不是随便可以申请得到的，需要向symfony的管理者fabien(fabien.potencier[at]symfony-project.com)索取，不过貌似是不能参与symfony源码开发的（这个是我推测，如果你有能力也可以尝试和fabien协商一下）。

fabien貌似很忙，大概一周左右查收一次邮件，不过应该是有求必应的。在没有得到svn账号之前，你也是可以检出（checkout）symfony项目的。1.2相关文档的svn地址是：
http://svn.symfony-project.com/doc/branches/1.2
检出之后你就可以看到全部symfony1.2相关文档所有语言版本的源文件了，当然这不是最终体现在网页上的文档，发布到网页上还需要一个编译的过程。



你也可以在symfony项目的trac（http://trac.symfony-project.org/browser）上查看全部源码。

如果你拥有了一个有修改权限的svn账号，你就可以开始你的翻译工作了，翻译完毕可以进行commit操作，commit之后是不会立刻体现在网页上的，上面说过，在那之前需要有一个编译的过程，一般是一天一次，多数在每天下午，可能不只是编译，fabien也会进行一些审核工作。

如果您的修改通过审核那么恭喜你，你成为了伟大的symfony的一名贡献者！

如果你不会操作svn或者没有得到svn账号，也可以将您的译文发给我(makerwang[at]gmail.com)，我会帮你整理提交到官方的svn中去，关于版权的问题嘛，为了尊重原著，官方的翻译工作应该是匿名的，不过你仍然可以将您的翻译发布到其他地方，前提是你要遵守symfony的by-cc协议。 </description>
		<link>http://www.foolbirds.com/to-be-a-symfony-contributor.html</link>
			</item>
	<item>
		<title>判断搜索引擎爬虫</title>
		<description>如何判断访问是否来自搜索引擎。
可以通过HTTP header 内的 HTTP USER AGENT 识别。
（还有别的方法）
Baiduspider+(+http://www.baidu.com/search/spider.htm)
这是百度的爬虫。

使用php变量，$_SERVER['HTTP_USER_AGENT']
以PHP程序为例：

$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
$spiders = array('Baiduspider', 'Googlebot');//添加需要的爬虫关键字
foreach ($spiders as $spider)
{
$spider = strtolower($spider);
if (strpos($userAgent, $spider) !== false)
{
return 'is spider';
}
return 'is not spider';
}
?&#62;


一些常用的爬虫
百度爬虫
Baiduspider+(+http://www.baidu.com/search/spider.htm)

雅虎爬虫，分别是雅虎中国和美国总部的爬虫
Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)
Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)

新浪爱问爬虫
iaskspider/2.0(+http://iask.com/help/help_index.html)
Mozilla/5.0 (compatible; iaskspider/1.0; MSIE 6.0)

搜狗爬虫
Sogou web spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07″)
Sogou Push Spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07″)
【早期用法：“sogou spider”】

Google爬虫
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Google AdSense广告内容匹配爬虫
Mediapartners-Google/2.1

网易爬虫
Mozilla/5.0 (compatible; YodaoBot/1.0; ...</description>
		<link>http://www.foolbirds.com/%e5%88%a4%e6%96%ad%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e%e7%88%ac%e8%99%ab.html</link>
			</item>
	<item>
		<title>内嵌表单详解（How to Embed Forms in Symfony 1.2 Admin Generator 中文版）</title>
		<description>译者：Maker.Wang[at]gmail.com
原文：http://sandbox-ws.com/how-to-embed-forms-in-symfony-12-admin-generator

译者注： Embed form是一个被忽略了的却很实用的技术，可能是由于embed form是新功能的缘故，相关的文档非常少，特别是中文文档，很早以前就听说了embed form，但一直没有机会实际应用， 昨天项目的新需求让我又想起了embed form， 所以又翻出了以前看过的文档， 仔细复习一遍， 同时也翻译出来分享个各位战友们。这是小弟的第一篇译文，难免有错误和遗漏，希望大家多包涵，多提宝贵意见。 - maker 2009.6.19

第一部分. 一对一关联内嵌表单


Symfony 1.2 添加了很多令人兴奋的新特性，并已经成为了一个很好很强大的PHP开发框架。 其中的一个特性是将一个Form嵌入另一个Form中。那么这意味着什么呢？

第一个模型如下图所示：

 上图是一个公司和联系方式的一对一关系模型。

这是我们的 schema.yml:


	propel: 
	 _attributes: 
	 package: lib.model 
	 defaultIdMethod: native 
	 company: 
	 _attributes: { phpName: Company } 
	 id: { type: INTEGER, size: '11', primaryKey: true, autoIncrement: true, required: true } 
	 name: { type: VARCHAR, size: '255', required: true } 
	 contact_id: { type: INTEGER, size: '11', required: false, foreignTable: contact, foreignReference: id, onDelete: SET NULL, onUpdate: RESTRICT } 
	 _indexes: { company_FI_1: [contact_id] } 
	 contact: 
	 _attributes: { phpName: Contact } 
	 id: { type: INTEGER, size: '11', primaryKey: ...</description>
		<link>http://www.foolbirds.com/how-to-embed-forms-in-symfony-12-admin-generator.html</link>
			</item>
	<item>
		<title>Firefox 和 IE 中的键盘事件</title>
		<description>今天，在测试项目中的form表单的时候，发现了一些被遗忘的细节问题，邮政编码和电话没有被验证。

对于，symfony的form机制，验证起来很方便，利用这个框架不用像以前自己在前端写一大堆的js进行判断。

可是，毕竟客户的需求总是奇怪的，在新项目中，有一个地方没有办法直接应用symfony中的fomr机制，没有办法偷懒只用js了。
if(window.event) {   //IE键盘监控
if(e.keyCode&#60;48   &#124;&#124;   e.keyCode&#62;57&#124;&#124;e.keyCode==8) {
return false;
} else {
return true;
}
} else if(e.which) { // Firefox 键盘监控
if((e.which&#62;47)   &#38;&#38;   (e.which&#60;58)&#124;&#124;(e.which==8)) {
return true;
} else {
return false;
}
}

html代码
onkeypress="javascript:return key(event)

对于前端程序(css、js)来说，两大浏览器的兼容问题很是麻烦。
对于键盘事件，两个浏览器有着不同的理解。为了防止遗忘，把上面转载的程序在此备份，以便查找。 </description>
		<link>http://www.foolbirds.com/firefox-and-ie-pressup.html</link>
			</item>
	<item>
		<title>怎么在app中构造其它app的链接(二)</title>
		<description>写一个class

// apps/backend/config/backendConfiguration.class.php
class backendConfiguration extends sfApplicationConfiguration
{
  protected $frontendRouting = null;
  public function generateFrontendUrl($name, $parameters = array())
  {
    return 'http://frontend.example.com'.$this->getFrontendRouting()
    ->generate($name, $parameters);
  }
  public function getFrontendRouting()
  {
    if (!$this->frontendRouting)
    {
     ...</description>
		<link>http://www.foolbirds.com/url-in-other-apps2.html</link>
			</item>
	<item>
		<title>怎么在app中构造其它app的链接(一)</title>
		<description>最近开发的一个项目要求我们要在一个app中构造另一个app中的链接并使用。

我们现在有一个管理平台，app名字   admin, 我们还有一个PC展示平台 app名字 pc

我们知道使用symfony中链接辅助函数  url_for()  可以生成我们想要的URL，可是，默认的情况下，这种生成出来的URL是显示前端控制器名字的（控制器名字根据所在开发模式的不同，显示的也不一样）。

比如： 我们在admin这个平台使用  url_for('member/create')    生成的url是   admin_dev.php/member/create， 很显然这种URL不是我们所期望的，我们不希望还要去解析判断。

在apps/myapps/settings.yml 中有一项设置  no_script_name: off  这项是控制时候在URL中显示前端控制器的名字。

当我们把它开启的时候，再使用url_for('member/create')的时候，就会生成  member/create, 这样就会得到没有前端控制器名字的URL。

其实，最理想的状态是，我在使用某一个链接辅助函数的时候，直接就可以获得某一个平台的URL，比如在admin的平台返回给我一个  http://www.foolbirds.com/pc_dev.php/article/show  这样的链接。 可是找了一下下午也没有找到一个，或许需要自己写一个构造这样的URL来满足项目的需求了。

 </description>
		<link>http://www.foolbirds.com/url-in-other-apps-one.html</link>
			</item>
</channel>
</rss>
