<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>4's symfony blog &#187; Linux</title>
	<atom:link href="http://www.foolbirds.com/c/linux/feed" rel="self" type="application/rss+xml" />
	<link>http://www.foolbirds.com</link>
	<description>all about symfony</description>
	<lastBuildDate>Mon, 28 Jun 2010 07:30:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>开发技巧总结</title>
		<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>
		<comments>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#comments</comments>
		<pubDate>Wed, 20 Jan 2010 02:39:19 +0000</pubDate>
		<dc:creator>maker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[vi/vim]]></category>
		<category><![CDATA[命令行]]></category>
		<category><![CDATA[技巧]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=938</guid>
		<description><![CDATA[很久以前保存在草稿里的一些开发技巧，整理发表出来。
1. php格式化数字
echo number_format(123456789);
运行结果 123,456,789
2. html中的分页符号
需要使用css  ，这是有关打印的一些css属性
属性   版本   兼容性   继承性   简介
page   CSS2   IE5.5+   有           检索或指定显示对象容器时使用的页面类型（pagetype）。参阅@page规则
page-break-after   CSS2   IE4+   无   检索或设置对象后出现的页分割符
page-break-before   CSS2  [...]]]></description>
			<content:encoded><![CDATA[<p>很久以前保存在草稿里的一些开发技巧，整理发表出来。</p>
<p>1. php格式化数字</p>
<p style="padding-left: 30px;">echo number_format(123456789);</p>
<p style="padding-left: 30px;">运行结果 123,456,789</p>
<p>2. html中的分页符号</p>
<p style="padding-left: 30px;">需要使用css  ，这是有关打印的一些css属性</p>
<p style="padding-left: 30px;">属性   版本   兼容性   继承性   简介<br />
page   CSS2   IE5.5+   有           检索或指定显示对象容器时使用的页面类型（pagetype）。参阅@page规则<br />
page-break-after   CSS2   IE4+   无   检索或设置对象后出现的页分割符<br />
page-break-before   CSS2   IE4+   无   检索或设置对象前出现的页分割符<br />
page-break-inside   CSS2   NONE   有   检索或设置对象容器中出现的页分割符<br />
marks   CSS2   NONE   无   设置或检索什么样的标志是应该在页容器外边被给予<br />
orphans   CSS2   NONE   有   设置或检索对象内容内一定要留在一页范围底端以内的行的最少数量<br />
size   CSS2   NONE   有   检索或指定页面规格的调整<br />
widows   CSS2   NONE   有   检索或指定一定要留在页面顶部的行数</p>
<p>3. js replace 替换全部</p>
<p style="padding-left: 30px;">from.value.replace(/\-/g,&#8217;/')</p>
<p>4. SSH免登陆</p>
<p style="padding-left: 30px;">ssh-keygen -t rsa</p>
<p style="padding-left: 30px;">ssh-copy-id user@IP</p>
<p style="padding-left: 30px;">上面的命令和下面操作相同</p>
<p style="padding-left: 30px;">ssh-keygen -t rsa 或 ssh-keygen -d (dsa) =&gt; 产生出 id_rsa, id_rsa.pub</p>
<p style="padding-left: 30px;">scp .ssh/id_rsa.pub root@192.168.1.102:~/.ssh/</p>
<p style="padding-left: 30px;">ssh root@192.168.1.102</p>
<p style="padding-left: 30px;">cat .ssh/id_rsa.pub &gt;&gt; .ssh/authorized_keys 即可</p>
<p>5. scp(SSH copy) 例子</p>
<p style="padding-left: 30px;">scp root@192.168.1.102:~/filename ./</p>
<p style="padding-left: 30px;">scp ./filename root@192.168.1.102:~/</p>
<p>6. vim下输出Windows换行符^M使用Ctrl+v然后回车。</p>
<p>7. 只修改目录或者文档的权限</p>
<p style="padding-left: 30px;">在当前目录下递归修改文件权限</p>
<p style="padding-left: 30px;">find . -type f -exec chmod 0600 {} \;</p>
<p style="padding-left: 30px;">在当前目录下递归修改目录权限<br />
find . -type d -exec chmod 0755 {} \;</p>
<p>8. 命令行下的技巧</p>
<p style="padding-left: 30px;">Ctrl-R 通过关键字匹配最近执行过的命令</p>
<p style="padding-left: 30px;">Ctrl-A可将光标移动到命令行行首</p>
<p style="padding-left: 30px;">Ctrl-E可将光标移动到命令行行尾</p>
<p style="padding-left: 30px;">Ctrl-W快捷键可以快速删除光标前的字符</p>
<p style="padding-left: 30px;">Ctrl-K可以立即删除光标后的字符</p>
<p style="padding-left: 30px;">Ctrl-Y取消删除操作</p>
<p style="padding-left: 30px;">Ctrl-P查找上一条命令，等于光标上键</p>
<p style="padding-left: 30px;">Ctrl-N查找下一条命令，等于光标下键</p>
<p style="padding-left: 30px;">Ctrl-F向右移动光标</p>
<p style="padding-left: 30px;">Ctrl-B向左移动光标</p>
<p>9. 关于历史记录的技巧</p>
<p style="padding-left: 30px;">history查看当前用户执行过的命令</p>
<p style="padding-left: 30px;">!编号 重复执行命令</p>
<p style="padding-left: 30px;">!! 重复上一条命令</p>
<p style="padding-left: 30px;">!keyword 使用关键字匹配最近一条命令并执行，类似Ctrl+R</p>
<p>10. 在vim中执行命令</p>
<p style="padding-left: 30px;">:!ls</p>
<p>11. vim录制宏</p>
<p style="padding-left: 30px;">qa开始录制，a为宏的名称，可以定义a-z一共26个宏</p>
<p style="padding-left: 30px;">录制完毕按q结束录制</p>
<p style="padding-left: 30px;">@a执行名称为a的宏</p>
<p style="padding-left: 30px;">12@a执行名称为a的宏12次</p>
<p style="padding-left: 30px;">宏设置完毕会被保留，也就是说无论关闭vim或者重启计算机宏依然可以生效。</p>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li><a href="http://www.foolbirds.com/batch-in-symfony12.html" title="symfony1.2下的命令行程序(batch)">symfony1.2下的命令行程序(batch)</a></li><li><a href="http://www.foolbirds.com/vim%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%e6%b3%a8%e8%a7%a3.html" title="vim配置文件注解">vim配置文件注解</a></li><li><a href="http://www.foolbirds.com/%e4%bd%bf%e7%94%a8bit-ly%e7%9f%ad%e7%bd%91%e5%9d%80%e6%9c%8d%e5%8a%a1api%e7%ae%80%e5%8c%96url.html" title="使用Bit.ly短网址服务API简化URL">使用Bit.ly短网址服务API简化URL</a></li><li><a href="http://www.foolbirds.com/wideimage-in-symfony.html" title="在Symfony中使用第三方图片处理工具WideImage">在Symfony中使用第三方图片处理工具WideImage</a></li><li><a href="http://www.foolbirds.com/csrf-and-form.html" title="CSRF使用注意事项和form的标准用法">CSRF使用注意事项和form的标准用法</a></li><li><a href="http://www.foolbirds.com/%e5%a6%82%e4%bd%95%e5%ae%9e%e7%8e%b0%e5%8a%a8%e6%80%81%e6%b7%bb%e5%8a%a0%ef%bc%8f%e5%88%a0%e9%99%a4%e8%a1%a8%e6%a0%bc%e5%85%83%e7%b4%a0.html" title="如何实现动态添加／删除表格元素">如何实现动态添加／删除表格元素</a></li><li><a href="http://www.foolbirds.com/symfony-latlng-widget-with-google-maps.html" title="编写widget一例:支持Google Maps的坐标输入框">编写widget一例:支持Google Maps的坐标输入框</a></li><li><a href="http://www.foolbirds.com/task-city.html" title="外包 佣兵计划">外包 佣兵计划</a></li><li><a href="http://www.foolbirds.com/write-symfony-qrcode-plugin.html" title="symfony插件编写一例:QRcodePlugin">symfony插件编写一例:QRcodePlugin</a></li><li><a href="http://www.foolbirds.com/set-title-and-keywords.html" title="如何设置title、keywords">如何设置title、keywords</a></li></ul>]]></content:encoded>
			<wfw:commentRss>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/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>awesome 的 多头显示</title>
		<link>http://www.foolbirds.com/awesome_dual_screen.html</link>
		<comments>http://www.foolbirds.com/awesome_dual_screen.html#comments</comments>
		<pubDate>Tue, 01 Sep 2009 10:02:23 +0000</pubDate>
		<dc:creator>bobhero</dc:creator>
				<category><![CDATA[Arch]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[dual]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[多头]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=988</guid>
		<description><![CDATA[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 竟然直接拿到了全图

]]></description>
			<content:encoded><![CDATA[<p><strong>awesome 的确是个好东西，用上了，就不喜欢别的女人了</strong></p>
<p><strong>今天心血来潮再次找出 awesome官网上的 <a title="awesome 4 mu" href="http://awesome.naquadah.org/images/4mon.png" target="_blank">图片</a> YY了一会 真爽啊，四个显示器</strong></p>
<p><strong><br />
</strong></p>
<p><strong>等咱有了钱，弄八个显示器 ，二十四的竖着放</strong></p>
<p><strong>我把公司里的大屁股显示器搬出来了 放在桌面上 ，准备实施 双头显示器 计划</strong></p>
<p><strong>首先要有一块双头的显卡 我找到了 ati x500 ，换上 HDMI 2 VGA线 开始了漫长的驱动过程，使了半天力气，终于放弃了，ATI 官方的驱动不好用 ，不知道是AMD 不牛X ，还是ATI太弱。</strong></p>
<p><strong>有的时候放弃 也是一种进步</strong></p>
<p><strong>我换了一个N卡</strong></p>
<p><strong>顺序驱上，竟然发现有图型设置程序 爽 nvidia-setting 经过一阵设置，黑屏，重启，再黑，再启。终于<br />
桌面OK了</strong></p>
<p><strong>有以下几点需要注意：<br />
1.能不用A卡就不要用A卡<br />
2.有一个什么什么东西要打开,要不然AWESOME 不能很好的工作   =&gt; xinerama<br />
3.两个显示器最好是一样的，要不然很影响心情</strong></p>
<p><strong>上图</strong></p>
<p><strong>用SCROT 竟然直接拿到了全图<br />
</strong></p>
<p><strong>
<a href='http://www.foolbirds.com/awesome_dual_screen.html/attachment/01' title='01'><img width="150" height="150" src="http://www.foolbirds.com/wp-content/uploads/2009/09/01-150x150.jpg" class="attachment-thumbnail" alt="" title="01" /></a>
<a href='http://www.foolbirds.com/awesome_dual_screen.html/2009-09-01-171924_2560x1024_scrot' title='2009-09-01-171924_2560x1024_scrot'><img width="150" height="150" src="http://www.foolbirds.com/wp-content/uploads/2009/09/2009-09-01-171924_2560x1024_scrot-150x150.png" class="attachment-thumbnail" alt="" title="2009-09-01-171924_2560x1024_scrot" /></a>
<a href='http://www.foolbirds.com/awesome_dual_screen.html/attachment/02' title='02'><img width="150" height="150" src="http://www.foolbirds.com/wp-content/uploads/2009/09/02-150x150.jpg" class="attachment-thumbnail" alt="" title="02" /></a>
<br />
</strong></p>
<ul class="related_post"><li><a href="http://www.foolbirds.com/awesome3-default-hotkey.html" title="Awesome3.0默认快捷键">Awesome3.0默认快捷键</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/awesome_dual_screen.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>怎么在app中构造其它app的链接(一)</title>
		<link>http://www.foolbirds.com/url-in-other-apps-one.html</link>
		<comments>http://www.foolbirds.com/url-in-other-apps-one.html#comments</comments>
		<pubDate>Sat, 23 May 2009 08:44:30 +0000</pubDate>
		<dc:creator>zhuozi</dc:creator>
				<category><![CDATA[CentOS/Redhat]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[url]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=835</guid>
		<description><![CDATA[最近开发的一个项目要求我们要在一个app中构造另一个app中的链接并使用。
我们现在有一个管理平台，app名字   admin, 我们还有一个PC展示平台 app名字 pc
我们知道使用symfony中链接辅助函数  url_for()  可以生成我们想要的URL，可是，默认的情况下，这种生成出来的URL是显示前端控制器名字的（控制器名字根据所在开发模式的不同，显示的也不一样）。
比如： 我们在admin这个平台使用  url_for(&#8217;member/create&#8217;)    生成的url是   admin_dev.php/member/create， 很显然这种URL不是我们所期望的，我们不希望还要去解析判断。
在apps/myapps/settings.yml 中有一项设置  no_script_name: off  这项是控制时候在URL中显示前端控制器的名字。
当我们把它开启的时候，再使用url_for(&#8217;member/create&#8217;)的时候，就会生成  member/create, 这样就会得到没有前端控制器名字的URL。
其实，最理想的状态是，我在使用某一个链接辅助函数的时候，直接就可以获得某一个平台的URL，比如在admin的平台返回给我一个  http://www.foolbirds.com/pc_dev.php/article/show  这样的链接。 可是找了一下下午也没有找到一个，或许需要自己写一个构造这样的URL来满足项目的需求了。
使用SYMFONY Filter 过滤URL使用symfony routing.yml 修改URL怎么在app中构造其它app的链接(二)]]></description>
			<content:encoded><![CDATA[<p>最近开发的一个项目要求我们要在一个app中构造另一个app中的链接并使用。</p>
<p>我们现在有一个管理平台，app名字   admin, 我们还有一个PC展示平台 app名字 pc</p>
<p>我们知道使用symfony中链接辅助函数  url_for()  可以生成我们想要的URL，可是，默认的情况下，这种生成出来的URL是显示前端控制器名字的（控制器名字根据所在开发模式的不同，显示的也不一样）。</p>
<p>比如： 我们在admin这个平台使用  url_for(&#8217;member/create&#8217;)    生成的url是   admin_dev.php/member/create， 很显然这种URL不是我们所期望的，我们不希望还要去解析判断。</p>
<p>在apps/myapps/settings.yml 中有一项设置  no_script_name: off  这项是控制时候在URL中显示前端控制器的名字。</p>
<p>当我们把它开启的时候，再使用url_for(&#8217;member/create&#8217;)的时候，就会生成  member/create, 这样就会得到没有前端控制器名字的URL。</p>
<p>其实，最理想的状态是，我在使用某一个链接辅助函数的时候，直接就可以获得某一个平台的URL，比如在admin的平台返回给我一个  http://www.foolbirds.com/pc_dev.php/article/show  这样的链接。 可是找了一下下午也没有找到一个，或许需要自己写一个构造这样的URL来满足项目的需求了。</p>
<ul class="related_post"><li><a href="http://www.foolbirds.com/use_symfony_filter_to_filteredurl.html" title="使用SYMFONY Filter 过滤URL">使用SYMFONY Filter 过滤URL</a></li><li><a href="http://www.foolbirds.com/use_symfony_routing_change_url.html" title="使用symfony routing.yml 修改URL">使用symfony routing.yml 修改URL</a></li><li><a href="http://www.foolbirds.com/url-in-other-apps2.html" title="怎么在app中构造其它app的链接(二)">怎么在app中构造其它app的链接(二)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/url-in-other-apps-one.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FreeBSD7.10通过ports安装lamp</title>
		<link>http://www.foolbirds.com/freebsd710-install-lamp-with-ports.html</link>
		<comments>http://www.foolbirds.com/freebsd710-install-lamp-with-ports.html#comments</comments>
		<pubDate>Mon, 23 Mar 2009 05:20:00 +0000</pubDate>
		<dc:creator>maker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[lamp]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=671</guid>
		<description><![CDATA[最近终于逼着自己装了一个FreeBSD7.10, 第一次用，弄得一团糟，第一天研究了一下午才装了个gnome，接下来的两天就一直在解决lamp的问题。
FreeBSD中ports的使用和编译还是很大差异的，我以前在centOS上编译过lamp，后来发现port根本不是那么回事，虽然安装命令也是make install，但完全部能用一种思路来理解。
安装apache
cd /usr/ports/www/apache20
make install
多数通过ports安装的软件都会被安装到/usr/local目录下，执行程序在/usr/local/sbin,bin下，配置文件在/usr/local/etc下，库文件在/usr/local/libexec下，www根目录在/usr/local/www/data下.
我们启动apache, 如果你没找到程序路径就用whereis apache, whereis apache2, whereis httpd
最后发现httpd在/usr/local/sbin目录下
/usr/local/sbin/httpd -k start
安装mysql
cd /usr/ports/databases/mysql50-server
make install
我在启动mysql的时候遇到了各种的问题
首先是初始化数据库
/usr/local/bin/mysql_install_db
但是最没有办法解释的竟然是root的权限错误
chmod -R 777 /var/db/mysql
启动mysql
/usr/local/bin/mysqld_safe
安装php5
最头痛的就是安装php5了，因为对ports使用方法的误解，所以一直都没能正确的安装php5.
遇到的问题有以下几个：
１）重新编译的时候需要先运行make clean,否则会出现莫名其妙的问题
２）安装php之前需要先运行make config, 这个很重要，把里面该选的都选上，特别是Apache Build Module那个，否则apache就不能支持php
在不断的重复重复再重复安装之前，有一个问题困扰我很久，就是安装是通过make install安装的，却没有make uninstall命令，找很久发现很多软件安装完需要执行pkg_add -r name，于是就发现了pkg_delete这个命令。
总结一下
在不断的失败之后的失败之后的失败之后，坚持是很重要的，port作为一个很多年之前出现的package管理器来说，算是很强大了，但我完全没办法拿ports和apt-get还有yum来比，因为FreeBSD终究是FreeBSD，So &#8230;&#8230;
记录两个命令，查找package, 在安装lamp的时候被我用到了无数次, 这个命令貌似一定要在/usr/ports目录下使用
cd /usr/ports
make search key=&#60;key&#62;
上面是使用关键字进行搜索，如果查出的结果太多，那么使用
make search name=&#60;key&#62;
还有呢。。。查看已安装的软件包使用
pkg_info
如果我们想查看是否安装了apache则使用
pkg_info&#124;grep apache
哦了，本文完
archlinux 安装 LAMP环境]]></description>
			<content:encoded><![CDATA[<p>最近终于逼着自己装了一个FreeBSD7.10, 第一次用，弄得一团糟，第一天研究了一下午才装了个gnome，接下来的两天就一直在解决lamp的问题。</p>
<p>FreeBSD中ports的使用和编译还是很大差异的，我以前在centOS上编译过lamp，后来发现port根本不是那么回事，虽然安装命令也是make install，但完全部能用一种思路来理解。</p>
<p><strong>安装apache</strong></p>
<p>cd /usr/ports/www/apache20</p>
<p>make install</p>
<p>多数通过ports安装的软件都会被安装到/usr/local目录下，执行程序在/usr/local/sbin,bin下，配置文件在/usr/local/etc下，库文件在/usr/local/libexec下，www根目录在/usr/local/www/data下.</p>
<p>我们启动apache, 如果你没找到程序路径就用whereis apache, whereis apache2, whereis httpd</p>
<p>最后发现httpd在/usr/local/sbin目录下</p>
<p>/usr/local/sbin/httpd -k start</p>
<p><strong>安装mysql</strong></p>
<p>cd /usr/ports/databases/mysql50-server</p>
<p>make install</p>
<p>我在启动mysql的时候遇到了各种的问题</p>
<p>首先是初始化数据库</p>
<p>/usr/local/bin/mysql_install_db</p>
<p>但是最没有办法解释的竟然是root的权限错误</p>
<p>chmod -R 777 /var/db/mysql</p>
<p>启动mysql</p>
<p>/usr/local/bin/mysqld_safe</p>
<p><strong>安装php5</strong></p>
<p>最头痛的就是安装php5了，因为对ports使用方法的误解，所以一直都没能正确的安装php5.</p>
<p>遇到的问题有以下几个：</p>
<p>１）重新编译的时候需要先运行make clean,否则会出现莫名其妙的问题</p>
<p>２）安装php之前需要先运行make config, 这个很重要，把里面该选的都选上，特别是Apache Build Module那个，否则apache就不能支持php</p>
<p>在不断的重复重复再重复安装之前，有一个问题困扰我很久，就是安装是通过make install安装的，却没有make uninstall命令，找很久发现很多软件安装完需要执行pkg_add -r name，于是就发现了pkg_delete这个命令。</p>
<p><strong>总结一下</strong></p>
<p>在不断的失败之后的失败之后的失败之后，坚持是很重要的，port作为一个很多年之前出现的package管理器来说，算是很强大了，但我完全没办法拿ports和apt-get还有yum来比，因为FreeBSD终究是FreeBSD，So &#8230;&#8230;</p>
<p>记录两个命令，查找package, 在安装lamp的时候被我用到了无数次, 这个命令貌似一定要在/usr/ports目录下使用</p>
<p>cd /usr/ports</p>
<p>make search key=&lt;key&gt;</p>
<p>上面是使用关键字进行搜索，如果查出的结果太多，那么使用</p>
<p>make search name=&lt;key&gt;</p>
<p>还有呢。。。查看已安装的软件包使用</p>
<p>pkg_info</p>
<p>如果我们想查看是否安装了apache则使用</p>
<p>pkg_info|grep apache</p>
<p>哦了，本文完</p>
<ul class="related_post"><li><a href="http://www.foolbirds.com/archlinux-lam.html" title="archlinux 安装 LAMP环境">archlinux 安装 LAMP环境</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/freebsd710-install-lamp-with-ports.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Awesome3.0默认快捷键</title>
		<link>http://www.foolbirds.com/awesome3-default-hotkey.html</link>
		<comments>http://www.foolbirds.com/awesome3-default-hotkey.html#comments</comments>
		<pubDate>Tue, 10 Mar 2009 09:26:02 +0000</pubDate>
		<dc:creator>maker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[快捷键]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=440</guid>
		<description><![CDATA[最近一直工作在Awesome(什么是Awesome?)下, 发现Awesome的确是个很高效率的桌面环境.
在Awesome中几乎所有的东西都是可配置的, 当然配置过程可能比较复杂, 要用到Lua语言, 使用Awesome最大的好处就是解放了鼠标, 所以这里简单介绍一下Awesome3.0缺省的快捷键位.
Mod4 + Left 切换到上一个Tag
Mod4 + Right 切换到下一个Tag
Mod4 + 1~9 切换到指定Tag
Mod4 + t 标记当前窗口
Mod4 + Ctrl + 1~9 把标记的窗口移动到指定桌面
Mod4 + Esc 切换到最后使用过的Tag
Mod4 + Ctrl + r 重启awesome
Mod4 + Ctrl + q 退出awesome
Mod4 + m 最大化/还原当前窗口
Mod4 + f 全屏/恢复当前窗口
Mod4 + Shift +c 关闭当前窗口
Mod4 + j 切换到下一个窗口
Mod4 + k 切换到上一个窗口
Mod4 + Shift + [...]]]></description>
			<content:encoded><![CDATA[<p>最近一直工作在Awesome(<a href="http://wiki.ubuntu.org.cn/Awesome">什么是Awesome?</a>)下, 发现Awesome的确是个很高效率的桌面环境.</p>
<p>在Awesome中几乎所有的东西都是可配置的, 当然配置过程可能比较复杂, 要用到Lua语言, 使用Awesome最大的好处就是解放了鼠标, 所以这里简单介绍一下Awesome3.0缺省的快捷键位.</p>
<p>Mod4 + Left 切换到上一个Tag<br />
Mod4 + Right 切换到下一个Tag<br />
Mod4 + 1~9 切换到指定Tag<br />
Mod4 + t 标记当前窗口<br />
Mod4 + Ctrl + 1~9 把标记的窗口移动到指定桌面<br />
Mod4 + Esc 切换到最后使用过的Tag<br />
Mod4 + Ctrl + r 重启awesome<br />
Mod4 + Ctrl + q 退出awesome<br />
Mod4 + m 最大化/还原当前窗口<br />
Mod4 + f 全屏/恢复当前窗口<br />
Mod4 + Shift +c 关闭当前窗口<br />
Mod4 + j 切换到下一个窗口<br />
Mod4 + k 切换到上一个窗口<br />
Mod4 + Shift + j 当前窗口和前一个窗口互换位置<br />
Mod4 + Shift + k 当前窗口和后一个窗口互换位置<br />
Mod4 + Ctrl + j 切换到下一个屏幕<br />
Mod4 + Ctrl + k 切换到前一个屏幕<br />
Mod4 + Ctrl + Space 切换当前窗口是否为浮动的<br />
Mod4 + Ctrl + Return<br />
Mod4 + Return<br />
Mod4 + Tab 切换到最后使用过的窗口<br />
Mod4 + o<br />
Mod4 + u<br />
Mod4 + Shift + r 重绘当前窗口<br />
Mod4 + l 当前窗口的宽度减小5%<br />
Mod4 + h 当前窗口的宽度增大5%<br />
Mod4 + Shilt + h 增加主区域窗口的数量<br />
Mod4 + Shift + l 减少主区域窗口的数量<br />
Mod4 + Ctrl + h 增加非主区域窗口的数量<br />
Mod4 + Ctrl + l 减少非主区域窗口的数量<br />
Mod4 + Space 切换下一布局<br />
Mod4 + Shift + Space 切换上一个布局<br />
Mod4 + F1 运行程序<br />
Mod4 + F4 运行Lua命令<br />
Mod4 + Ctrl + i 显示当前窗口的class和instance<br />
Ctrl + Alt + BackSpace 注销当前登录<br />
Mod4 + Shift + F1~F9 把当前桌面和1~9桌面同时显示</p>
<p>参考: <a href="http://wiki.ubuntu.org.cn/Awesome">Ubuntu Wiki</a></p>
<ul class="related_post"><li><a href="http://www.foolbirds.com/awesome_dual_screen.html" title="awesome 的 多头显示">awesome 的 多头显示</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/awesome3-default-hotkey.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gcc  升级引起的错误</title>
		<link>http://www.foolbirds.com/gcc-%e5%8d%87%e7%ba%a7%e5%bc%95%e8%b5%b7%e7%9a%84%e9%94%99%e8%af%af.html</link>
		<comments>http://www.foolbirds.com/gcc-%e5%8d%87%e7%ba%a7%e5%bc%95%e8%b5%b7%e7%9a%84%e9%94%99%e8%af%af.html#comments</comments>
		<pubDate>Sun, 08 Mar 2009 01:10:48 +0000</pubDate>
		<dc:creator>bobhero</dc:creator>
				<category><![CDATA[Arch]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[cstdlib]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[getenv]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=640</guid>
		<description><![CDATA[gcc 升级引起的错误 的解决办法 ]]></description>
			<content:encoded><![CDATA[<p>今天重做了系统  想起有一个软件没有测试 叫 devtodo  结果出现了错误如下<br />
todoterm.cc:18: error: ‘getenv’ was not declared in this scope<br />
todoterm.cc:22: error: ‘setenv’ was not declared in this scope</p>
<p>查了一下，资料 还真的很少</p>
<p>不过还是可以解决的找个适当的位置 把下面一句话加上就OK 了</p>
<pre>#include &lt;cstdlib&gt;</pre>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li><a href="http://www.foolbirds.com/symfony-cache.html" title="symfony缓存(cache)机制简介">symfony缓存(cache)机制简介</a></li><li><a href="http://www.foolbirds.com/symfony12-upload-file-and-validate.html" title="symfony1.2中的文件上传和验证">symfony1.2中的文件上传和验证</a></li><li><a href="http://www.foolbirds.com/fck%e7%bc%96%e8%be%91%e5%99%a8%e6%93%8d%e4%bd%9c%e5%8f%82%e6%95%b0.html" title="FCK编辑器操作参数">FCK编辑器操作参数</a></li><li><a href="http://www.foolbirds.com/symfony-creadential.html" title="symfony 权限访问控制（多用户访问证书）">symfony 权限访问控制（多用户访问证书）</a></li><li><a href="http://www.foolbirds.com/use_symfony_filter_to_filteredurl.html" title="使用SYMFONY Filter 过滤URL">使用SYMFONY Filter 过滤URL</a></li><li><a href="http://www.foolbirds.com/%e4%bb%bfsymfony%e6%9c%ba%e5%88%b6%e5%ae%9e%e7%8e%b0%e4%b8%8d%e7%94%a8require%e6%88%96%e8%80%85include%e6%9d%a5%e5%ae%9e%e4%be%8b%e5%8c%96%e7%b1%bb.html" title="仿symfony机制实现不用require或者include来实例化类">仿symfony机制实现不用require或者include来实例化类</a></li><li><a href="http://www.foolbirds.com/symfony-routing.html" title="Symfony的路由规则">Symfony的路由规则</a></li><li><a href="http://www.foolbirds.com/use-colorpicke.html" title="插件使用一例:在form中加入拾色器">插件使用一例:在form中加入拾色器</a></li><li><a href="http://www.foolbirds.com/wideimage-in-symfony.html" title="在Symfony中使用第三方图片处理工具WideImage">在Symfony中使用第三方图片处理工具WideImage</a></li><li><a href="http://www.foolbirds.com/vim%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%e6%b3%a8%e8%a7%a3.html" title="vim配置文件注解">vim配置文件注解</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/gcc-%e5%8d%87%e7%ba%a7%e5%bc%95%e8%b5%b7%e7%9a%84%e9%94%99%e8%af%af.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>archlinux 安装 LAMP环境</title>
		<link>http://www.foolbirds.com/archlinux-lam.html</link>
		<comments>http://www.foolbirds.com/archlinux-lam.html#comments</comments>
		<pubDate>Sun, 18 Jan 2009 05:25:14 +0000</pubDate>
		<dc:creator>bobhero</dc:creator>
				<category><![CDATA[Arch]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[无法登录]]></category>
		<category><![CDATA[空白]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=280</guid>
		<description><![CDATA[archlinux下安装lamp　注意事项]]></description>
			<content:encoded><![CDATA[<p>archlinux 安装 LAMP环境</p>
<p>archlinux 据说是很牛的系统　　试了以后　的确很牛，牛到我累了好长时间也不能成功驾驭</p>
<p>不过工作重要　还是先说说ＬＡＭＰ环境如何来做吧。</p>
<p>archlinux 有一个传说中很牛的　类似　apt-get 的东西　　叫 pacman</p>
<p>用命令</p>
<p>pacman -S apache mysql php</p>
<p>就可以直接把 apache mysql php　基本安装完成　我不确定顺序是否有影响　但是我建议大家如果想事少一点还是按这个顺序来吧</p>
<p>不知道从什么时候开始　php有一个openbase_dir 的变量　这个变量标识哪些目录可以用来存放　php文件　即　document root　一定要在openbase_dir 里，否则不会执行</p>
<p>而且　archlinux 的默认的document  root 是　/srv/html　这个目录默认没有　而且当安装apache的安装后　我习惯的测了一下　，这个目录不存在，会让apache 启动失败，所以我改成了/var/www　结果　php　放在/var/www下时　，由于不在 openbase_dir里　所以不能执行　而且不报任何错误（由于php.ini的设置）所以就会出现　要么不解释　php文件　，解释的时候　什么也没有　就是一片空白　一点错误也不报。　最难受的是　　当ＧＯＯＧＬＥ　　archlinux lamp 的时候　一点也没有文章　提及这一现像，也没有解决方案　，让我弄了好长时间才发现解决办法　。</p>
<p>解决办法就是　在php.ini 里　修改openbase_dir 　或是　对应的不要修改　把文件直接放到/srv/html里</p>
<p>mysql 也是用得相当吃力　命令行下可以很好的进入　但是phpmyadmin就不可以　提示　连接被拒　也想过很多办法　　但是未果　。后来发现不知道什么时候，或是哪条设置让 phpmyadmin不能用root  　没有密码的情况下　连接　到mysql　没有办法　　只好强行新建一个用户　给出所有权限。还有一点　现在ＭＹＳＱＬ聪明了，在 skip-grant-tables时不可以对用户进行操作，这样是安全了很多，也让忘了密码的时候没有办法　进行找回</p>
<p>ＯＫ　只要注意以上两点基本上ＬＡＭＰ环境没有问题了</p>
<ul class="related_post"><li><a href="http://www.foolbirds.com/php__tar_gzip_bzip%e8%84%9a%e6%9c%ac.html" title="PHP解压tar,gzip,bzip脚本">PHP解压tar,gzip,bzip脚本</a></li><li><a href="http://www.foolbirds.com/%e4%bb%bfsymfony%e6%9c%ba%e5%88%b6%e5%ae%9e%e7%8e%b0%e4%b8%8d%e7%94%a8require%e6%88%96%e8%80%85include%e6%9d%a5%e5%ae%9e%e4%be%8b%e5%8c%96%e7%b1%bb.html" title="仿symfony机制实现不用require或者include来实例化类">仿symfony机制实现不用require或者include来实例化类</a></li><li><a href="http://www.foolbirds.com/vim%e9%85%8d%e5%90%88phpcs%e5%ae%9e%e7%8e%b0p%e8%87%aa%e5%8a%a8%e8%af%ad%e6%b3%95%e6%a3%80%e6%9f%a5.html" title="vim配合phpcs实现自动语法检查">vim配合phpcs实现自动语法检查</a></li><li><a href="http://www.foolbirds.com/use-datetime-in-php5-1-x-with-symfony.html" title="symfony1.4 DateTime对于PHP低版本的兼容问题">symfony1.4 DateTime对于PHP低版本的兼容问题</a></li><li><a href="http://www.foolbirds.com/%e4%bd%bf%e7%94%a8bit-ly%e7%9f%ad%e7%bd%91%e5%9d%80%e6%9c%8d%e5%8a%a1api%e7%ae%80%e5%8c%96url.html" title="使用Bit.ly短网址服务API简化URL">使用Bit.ly短网址服务API简化URL</a></li><li><a href="http://www.foolbirds.com/%e8%a7%a3%e5%86%b3php%e7%94%9f%e6%88%90utf-8%e7%bc%96%e7%a0%81%e7%9a%84csv%e6%96%87%e4%bb%b6%e7%94%a8excel%e6%89%93%e5%bc%80%e4%b9%b1%e7%a0%81%e7%9a%84%e9%97%ae%e9%a2%98.html" title="解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题">解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题</a></li><li><a href="http://www.foolbirds.com/symfony-cheat-sheet.html" title="symfony cheat sheet">symfony cheat sheet</a></li><li><a href="http://www.foolbirds.com/cheat-sheets.html" title="Cheat Sheets!">Cheat Sheets!</a></li><li><a href="http://www.foolbirds.com/freebsd710-install-lamp-with-ports.html" title="FreeBSD7.10通过ports安装lamp">FreeBSD7.10通过ports安装lamp</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/archlinux-lam.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>symfony插件编写一例:QRcodePlugin</title>
		<link>http://www.foolbirds.com/write-symfony-qrcode-plugin.html</link>
		<comments>http://www.foolbirds.com/write-symfony-qrcode-plugin.html#comments</comments>
		<pubDate>Fri, 16 Jan 2009 08:41:10 +0000</pubDate>
		<dc:creator>maker</dc:creator>
				<category><![CDATA[CentOS/Redhat]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=373</guid>
		<description><![CDATA[《创建symfony插件》一文中对如何编写插件进行了简单的介绍, 下面用一个例子来详细讲解一些如何创建一个生成QRcode的插件.
什么是QR code(QR码)?
简单来说, QR code是用来存储数据的矩形黑白点阵, 可以在很小的图片中存储大量的数据, 在移动领域应用广泛. 详细的说明请参考维基百科(http://zh.wikipedia.org/wiki/QR%E7%A2%BC)
应项目需求, 我们要编写一个用来生成QR code的Helper, 为了更好的重用性, 我们要将这个Helper写成一个插件.
首先, 创建目录结构
$cd plugins$mkdir QRcodePlugin$cd QRcodePlugin$mkdir lib web$mkdir lib/helper
生成QR code的过程中我们使用到了一个第三方类库 qr_img0.50g, 在readme中我们找到了使用方法如下:
php/qr_img.php?d=data[&#38;e=(L,M,Q,H)][&#38;s=int size][&#38;v=(1-40)][&#38;t=J]
[&#38;m=(1-16)&#38;n=(2-16)[&#38;o=original data][&#38;p=(0-255)]]
访问该文件会根据url中的参数生成一个QR code 图片, 我们只要将这个库放到web目录下就可以了.
$mv qr_img0.50g pathtoproject/plugins/QRcodePlugin/web/qr_img
然后我们来编写Helper, 根据symfony中helper的命名规则创建文件如下
$cd pathtoproject/plugins/QRcodePlugin/lib/helper
$vi QRcodeHelper.php
&#60;?php
# [useage]
#   qr_img.php?d=[data]&#38;e=[(L,M,Q,H)]&#38;s=[int]&#38;v=[(1-40)]
#             (&#38;m=[(1-16)]&#38;n=[(2-16)](&#38;p=[(0-255)],&#38;o=[data]))
#
#   d= data   [...]]]></description>
			<content:encoded><![CDATA[<p>《<a href="http://www.foolbirds.com/create-symfony-plugin.html">创建symfony插件</a>》一文中对如何编写插件进行了简单的介绍, 下面用一个例子来详细讲解一些如何创建一个生成<a href="http://zh.wikipedia.org/wiki/QR%E7%A2%BC">QRcode</a>的插件.</p>
<blockquote><p>什么是QR code(QR码)?</p>
<p>简单来说, QR code是用来存储数据的矩形黑白点阵, 可以在很小的图片中存储大量的数据, 在移动领域应用广泛. 详细的说明请参考<a href="http://zh.wikipedia.org/">维基百科</a>(<a href="http://zh.wikipedia.org/wiki/QR%E7%A2%BC">http://zh.wikipedia.org/wiki/QR%E7%A2%BC</a>)</p></blockquote>
<p>应项目需求, 我们要编写一个用来生成QR code的Helper, 为了更好的重用性, 我们要将这个Helper写成一个插件.</p>
<p>首先, 创建目录结构<br />
<code>$cd plugins</code><code>$mkdir QRcodePlugin</code><code>$cd QRcodePlugin</code><code>$mkdir lib web</code><code>$mkdir lib/helper</code></p>
<p>生成QR code的过程中我们使用到了一个第三方类库 <a href="http://www.swetake.com/qr/qr_cgi_e.html">qr_img0.50g</a>, 在readme中我们找到了使用方法如下:</p>
<blockquote><p>php/qr_img.php?d=data[&amp;e=(L,M,Q,H)][&amp;s=int size][&amp;v=(1-40)][&amp;t=J]<br />
[&amp;m=(1-16)&amp;n=(2-16)[&amp;o=original data][&amp;p=(0-255)]]</p></blockquote>
<p>访问该文件会根据url中的参数生成一个QR code 图片, 我们只要将这个库放到web目录下就可以了.</p>
<p><code>$mv qr_img0.50g pathtoproject/plugins/QRcodePlugin/web/qr_img</code></p>
<p>然后我们来编写Helper, 根据symfony中helper的命名规则创建文件如下</p>
<p><code>$cd pathtoproject/plugins/QRcodePlugin/lib/helper</code></p>
<p><code>$vi QRcodeHelper.php</code></p>
<p><code>&lt;?php<br />
# [useage]<br />
#   qr_img.php?d=[data]&amp;e=[(L,M,Q,H)]&amp;s=[int]&amp;v=[(1-40)]<br />
#             (&amp;m=[(1-16)]&amp;n=[(2-16)](&amp;p=[(0-255)],&amp;o=[data]))<br />
#<br />
#   d= data         URL encoded data.<br />
#   e= ECC level    L or M or Q or H   (default M)<br />
#   s= module size  (dafault PNG:4 JPEG:8)<br />
#   v= version      1-40 or Auto select if you do not set.<br />
#   t= image type   J:jpeg image , other: PNG image<br />
#<br />
#  structured append  m of n (experimental)<br />
#   n= structure append n (2-16)<br />
#   m= structure append m (1-16)<br />
#   p= parity<br />
#   o= original data (URL encoded data)  for calculating parity<br />
#<br />
function QRcode($d, $e = 'M', $s = null, $v = null, $t = 'P', $m = null, $n = null, $o = null, $p = null)<br />
{<br />
$path  = '/QRcodePlugin/qr_img/php/qr_img.php';<br />
$url   = $path . '?d=' . $d;<br />
if ($e &amp;&amp; in_array(strtoupper($e), array('L', 'M', 'Q', 'H'))) {<br />
$url .= '&amp;e=' . strtoupper($e);<br />
} else {<br />
$url .= '&amp;e=M';<br />
}<br />
if ($s) {<br />
$url .= '&amp;s=' . $s;<br />
}<br />
if ($v) {<br />
$url .= '&amp;v=' . $v;<br />
}<br />
if ($t) {<br />
$url .= '&amp;t=' . $t;<br />
}<br />
if ($m) {<br />
$url .= '&amp;m=' . $m;<br />
}<br />
if ($n) {<br />
$url .= '&amp;n=' . $n;<br />
}<br />
if ($o) {<br />
$url .= '&amp;o=' . $o;<br />
}<br />
if ($p) {<br />
$url .= '&amp;p=' . $p;<br />
}<br />
$output = image_tag($url, array('alt' =&gt; $d));<br />
return $output;<br />
}<br />
</code><br />
这样, 我们就写好了一个只有一个Helper的Plugin, 我们来看一下插件结构如下.<br />
<code>|--.lib<br />
|...`--.helper<br />
|.......`--.QRcodeHelper.php<br />
`--.web<br />
....`--.qr_img<br />
........|--.data<br />
........|--.image<br />
........`--.php<br />
............`--.qr_img.php</code>《<a href="http://www.foolbirds.com/create-symfony-plugin.html">创建symfony插件</a>》一文中我们说过项目中是无法直接访问plugin中的web目录的, 所以我们还要copy一份web目录到项目的web目录下<br />
<code>$cp -rf pathtoproject/plugins/QRcodePlugin/web pathtoproject/web/QRcodePlugin</code>接下来我们来测试一下Plugin是否有效.<br />
<code>$cd pathtoproject/</code><code>$./symfony init-app test</code><code>$./symfony init-module test test</code><code>$vi apps/test/modules/test/actions/actions.class.php</code><code>&lt;?php<br />
class testActions extends sfActions<br />
{<br />
public function executeIndex(sfWebRequest $request) { }<br />
}</code></p>
<p><code>$vi apps/test/modules/test/templates/indexSuccess.php</code><code>&lt;?php use_helper('QRcode');?&gt;<br />
&lt;?php echo QRcode('fuck');?&gt;<br />
</code></p>
<p>访问http://project/test.php/test/index效果如下:</p>
<p><img class="aligncenter size-full wp-image-374" title="screenshot4" src="http://www.foolbirds.com/wp-content/uploads/2009/01/screenshot4.png" alt="screenshot4" width="435" height="323" /></p>
<p>源代码如下:</p>
<p><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;<br />
&lt;title&gt;&lt;/title&gt;<br />
&lt;link rel="shortcut icon" href="/favicon.ico" /&gt;<br />
&lt;link rel="stylesheet" type="text/css" media="screen" href="/css/main.css" /&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;img alt="fuck" src="/QRcodePlugin/qr_img/php/qr_img.php?d=fuck&amp;t=P" /&gt;&nbsp;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</code><br />
测试通过, 本文完.</p>
<ul class="related_post"><li><a href="http://www.foolbirds.com/install-uncompatible-symfony-plugin-and-use-sffeedplugin.html" title="symfony1.2使用1.0插件sfFeedPlugin一例">symfony1.2使用1.0插件sfFeedPlugin一例</a></li><li><a href="http://www.foolbirds.com/publish-a-symfony-plugin.html" title="发布你的symfony插件">发布你的symfony插件</a></li><li><a href="http://www.foolbirds.com/create-symfony-plugin.html" title="创建symfony插件">创建symfony插件</a></li><li><a href="http://www.foolbirds.com/use-colorpicke.html" title="插件使用一例:在form中加入拾色器">插件使用一例:在form中加入拾色器</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/write-symfony-qrcode-plugin.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ubuntu桌面操作快捷键和操作技巧</title>
		<link>http://www.foolbirds.com/ubuntu-hotkey-and-skill.html</link>
		<comments>http://www.foolbirds.com/ubuntu-hotkey-and-skill.html#comments</comments>
		<pubDate>Sun, 04 Jan 2009 05:44:56 +0000</pubDate>
		<dc:creator>maker</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=272</guid>
		<description><![CDATA[常用快捷键
* Alt + F1 打开主菜单
* Alt + F2 运行
* Alt + F4 关闭当前窗口
* Alt + F5 取消最大化窗口 (恢复窗口原来的大小)
* Alt + F7 移动窗口 (注: 在窗口最大化的状态下无效)
* Alt + F8 改变窗口大小 (注: 在窗口最大化的状态下无效)
* Alt + F9 最小化当前窗口
* Alt + F10 最大化当前窗口
* Alt + Space 打开窗口的控制菜单
* Ctrl + Alt + D 显示桌面
* Ctrl + Alt + L 屏幕锁定
* Print [...]]]></description>
			<content:encoded><![CDATA[<p><strong>常用快捷键</strong></p>
<p><span style="color: #ff0000;">* Alt + F1 打开主菜单<br />
* Alt + F2 运行</span><br />
<span style="color: #ff0000;">* Alt + F4 关闭当前窗口</span><br />
* Alt + F5 取消最大化窗口 (恢复窗口原来的大小)<br />
* Alt + F7 移动窗口 (注: 在窗口最大化的状态下无效)<br />
* Alt + F8 改变窗口大小 (注: 在窗口最大化的状态下无效)<br />
<span style="color: #ff0000;">* Alt + F9 最小化当前窗口<br />
* Alt + F10 最大化当前窗口</span><br />
* Alt + Space 打开窗口的控制菜单<br />
<span style="color: #ff0000;">* Ctrl + Alt + D 显示桌面</span><br />
* Ctrl + Alt + L 屏幕锁定<br />
* Print Screen 截取全屏<br />
* Alt + Print Screen 截取窗口<br />
* F1 打开帮助文档<br />
* F2 重命名文件/文件夹<br />
* F10 打开窗口的控制菜单<br />
* F11 全屏和普通大小切换<br />
? F12 展示当前窗口所有程序<br />
<span style="color: #ff0000;">* Alt + Tab 切换窗口<br />
* Alt+Shift+Tab 反向切换窗口</span></p>
<p>* 旋转3D桌面 = Ctrl + Alt + 左/右箭头（也可以把鼠标桌面使用滚轮切换）<br />
* 旋转3D桌面（ 活动窗口跟随） = Ctrl + Shift + Alt + 左/右箭头<br />
* 手动旋转3D桌面 = Ctrl + Alt + 左键单击并拖拽桌面空白处<br />
* 窗口透明/不透明 = possible with the “transset” utility or Alt + 滚轮</p>
<p>* 放大一次 = 超级键 + 右击<br />
* 手动放大 = 超级键 + 滚轮向上<br />
* 手动缩小 = 超级键 + 滚轮向下<br />
* 移动窗口 = Alt + 左键单击<br />
* 移动窗口时贴住边框 = 左键开始拖动后再 Ctrl + Alt<br />
* 调整窗口大小 = Alt + 中击<br />
* Bring up the window below the top window = Alt + middle-click<br />
* 动态效果减速 = Shift + F10<br />
* 水纹 = 按住 Ctrl+超级键<br />
* 雨点 = Shift-F9<br />
* 桌面展开＝ Ctrl + Alt + 下箭头，然后按住 Ctrl + Alt 和左/右箭头选择桌面</p>
<p><strong>应用程序快捷键</strong>(备注: 并非所有程序都适合)</p>
<p>* Ctrl+C 复制<br />
* Ctrl+N 新建窗口<br />
* Ctrl+S 保存<br />
* Ctrl+V 粘贴<br />
* Ctrl+X 剪切<br />
* Ctrl+Shift+Z 重做刚撤销的一步操作<br />
* Ctrl+Z 撤销上一步操作</p>
<p><strong>操作技巧</strong></p>
<p>* 直接拖拉在最大化时地窗口标题可以还原窗口大小,再拖放回去就最大化</p>
<p>* <span style="color: #ff0000;">在音量控制处用鼠标滚轮滚动可以直接调整音量</span>,在任务栏中滚动滚轮可以切换任务栏,工作区则切换工作区</p>
<p><span style="color: #ff0000;">* 按鼠标滚轮即粘贴, 相应情况下按下鼠标左右键等价于按鼠标中键</span></p>
<p>* shift + 鼠标滚轮 可以后退页面</p>
<p><span style="color: #ff0000;">* 鼠标中键点标题栏可以隐藏当前窗口</span></p>
<p>* 按住shift 拖动窗口可以吸附上下边缘地移动</p>
<p>* 直接将 文件管理器 中地文件拖到 GNOME终端 中就可以在终端中得到完整地路径名</p>
<p>* 修改目录图标：可将文件管理器中地图片直接拖到文件夹属性所在地图标上.</p>
<p>* 鼠标中键直接单击 滚动条 地空白处，屏幕即滚动到那处。</p>
<p>* 中键拖动图片到桌面，可择定设为墙纸</p>
<p>* 延时戴屏 在 终端 或 “运行”窗口中输入命令： gnome-screenshot &#8211;delay 3 ，将延时 3 秒后戴屏。</p>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li><a href="http://www.foolbirds.com/symfony-references-with-propel.html" title="symfony数据表关联详解(for propel)">symfony数据表关联详解(for propel)</a></li><li><a href="http://www.foolbirds.com/about-i18n.html" title="多语言翻译">多语言翻译</a></li><li><a href="http://www.foolbirds.com/symfony-requirements-check.html" title="symfony 环境检查">symfony 环境检查</a></li><li><a href="http://www.foolbirds.com/how-to-embed-forms-in-symfony-12-admin-generator.html" title="内嵌表单详解（How to Embed Forms in Symfony 1.2 Admin Generator 中文版）">内嵌表单详解（How to Embed Forms in Symfony 1.2 Admin Generator 中文版）</a></li><li><a href="http://www.foolbirds.com/vim%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%e6%b3%a8%e8%a7%a3.html" title="vim配置文件注解">vim配置文件注解</a></li><li><a href="http://www.foolbirds.com/%e5%a6%82%e4%bd%95%e5%9c%a8fixtures-yml%e5%86%99%e5%be%aa%e7%8e%af%e6%b7%bb%e5%8a%a0%e6%95%b0%e6%8d%ae.html" title="如何在fixtures.yml写循环添加数据">如何在fixtures.yml写循环添加数据</a></li><li><a href="http://www.foolbirds.com/%e8%a7%a3%e5%86%b3php%e7%94%9f%e6%88%90utf-8%e7%bc%96%e7%a0%81%e7%9a%84csv%e6%96%87%e4%bb%b6%e7%94%a8excel%e6%89%93%e5%bc%80%e4%b9%b1%e7%a0%81%e7%9a%84%e9%97%ae%e9%a2%98.html" title="解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题">解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题</a></li><li><a href="http://www.foolbirds.com/git-use-push-and-pull.html" title="使用push&#038;pull来管理CVS模式的git公共库">使用push&#038;pull来管理CVS模式的git公共库</a></li><li><a href="http://www.foolbirds.com/symfony-admin-generator-templates.html" title="admin后台模板作用">admin后台模板作用</a></li><li><a href="http://www.foolbirds.com/symfony-creadential.html" title="symfony 权限访问控制（多用户访问证书）">symfony 权限访问控制（多用户访问证书）</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/ubuntu-hotkey-and-skill.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>查看各种服务的版本</title>
		<link>http://www.foolbirds.com/linux-show-service-version.html</link>
		<comments>http://www.foolbirds.com/linux-show-service-version.html#comments</comments>
		<pubDate>Sun, 04 Jan 2009 04:16:53 +0000</pubDate>
		<dc:creator>maker</dc:creator>
				<category><![CDATA[CentOS/Redhat]]></category>
		<category><![CDATA[centOS]]></category>
		<category><![CDATA[版本]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=266</guid>
		<description><![CDATA[前几天刚刚给公司配了新的内网服务器, 今天bobhero要看结果, 那就简单看一下吧.
查看linux内核版本
$uname -r
&#62;2.6.27-7-generic
查看redhat/centos版本
$cat /etc/redhat -release
&#62;CentOS release 5.2 (Final)
查看php版本
$php -v
&#62;PHP 5.2.6 (cli) (built : May 5 2008 10:32:59)
&#62;Copyright (c) 1997-2008 The PHP Group
&#62;Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
查看mysql版本
$mysql -v
&#62;Server version: 5.0.45 Source distribution
查看apache版本
$rpm -qa httpd
&#62;httpd-2.2.3-11.el5_2.centos.4
$apache2 -v
&#62;Server version: Apache/2.2.8 (Ubuntu)
&#62;Server build: Feb 2 2008 04:03:01
查看sendmail版本
$sendmail -d -i
Version 8.13.8
查看symfony的版本
$symfony -V
symfony version 1.2.4-DEV (/home/maker/www/symfony/lib)
随机日志如何设置title、keywords编写widget一例:支持Google Maps的坐标输入框多语言翻译Firefox 和 [...]]]></description>
			<content:encoded><![CDATA[<p>前几天刚刚给公司配了新的内网服务器, 今天bobhero要看结果, 那就简单看一下吧.</p>
<p><strong>查看linux内核版本</strong><br />
$uname -r<br />
&gt;2.6.27-7-generic<br />
<strong>查看redhat/centos版本</strong><br />
$cat /etc/redhat -release<br />
&gt;CentOS release 5.2 (Final)<br />
<strong>查看php版本</strong><br />
$php -v<br />
&gt;PHP 5.2.6 (cli) (built : May 5 2008 10:32:59)<br />
&gt;Copyright (c) 1997-2008 The PHP Group<br />
&gt;Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies<br />
<strong>查看mysql版本</strong><br />
$mysql -v<br />
&gt;Server version: 5.0.45 Source distribution<br />
<strong>查看apache版本</strong><br />
$rpm -qa httpd<br />
&gt;httpd-2.2.3-11.el5_2.centos.4<br />
$apache2 -v<br />
&gt;Server version: Apache/2.2.8 (Ubuntu)<br />
&gt;Server build: Feb 2 2008 04:03:01</p></blockquote>
<p><strong>查看sendmail版本</strong><br />
$sendmail -d -i<br />
Version 8.13.8<br />
<strong>查看symfony的版本</strong><br />
$symfony -V<br />
symfony version 1.2.4-DEV (/home/maker/www/symfony/lib)</p>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li><a href="http://www.foolbirds.com/awesome_dual_screen.html" title="awesome 的 多头显示">awesome 的 多头显示</a></li><li><a href="http://www.foolbirds.com/git-patch.html" title="版本控制工具GIT的使用（一）分机打补丁">版本控制工具GIT的使用（一）分机打补丁</a></li><li><a href="http://www.foolbirds.com/ubuntu-install-phpmyadmin-with-apt-get.html" title="Ubuntu apt-get方法安装phpmyadmin">Ubuntu apt-get方法安装phpmyadmin</a></li><li><a href="http://www.foolbirds.com/use-form.html" title="form使用一例">form使用一例</a></li><li><a href="http://www.foolbirds.com/%e6%95%b0%e6%8d%ae%e7%b1%bb%e5%9e%8b%e9%97%b4%e7%9a%84%e6%af%94%e8%be%83.html" title="PHP中数据类型间的比较">PHP中数据类型间的比较</a></li><li><a href="http://www.foolbirds.com/symfony-creadential.html" title="symfony 权限访问控制（多用户访问证书）">symfony 权限访问控制（多用户访问证书）</a></li><li><a href="http://www.foolbirds.com/partial-and-layout.html" title="局部模板和全局模板">局部模板和全局模板</a></li><li><a href="http://www.foolbirds.com/symfony-cache.html" title="symfony缓存(cache)机制简介">symfony缓存(cache)机制简介</a></li><li><a href="http://www.foolbirds.com/url-in-other-apps2.html" title="怎么在app中构造其它app的链接(二)">怎么在app中构造其它app的链接(二)</a></li><li><a href="http://www.foolbirds.com/%e5%9c%a8layout%e4%b8%ad%e5%ba%94%e7%94%a8action%e5%ae%9a%e4%b9%89%e7%9a%84%e5%8f%98%e9%87%8f.html" title="在layout中应用action定义的变量">在layout中应用action定义的变量</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/linux-show-service-version.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu apt-get方法安装phpmyadmin</title>
		<link>http://www.foolbirds.com/ubuntu-install-phpmyadmin-with-apt-get.html</link>
		<comments>http://www.foolbirds.com/ubuntu-install-phpmyadmin-with-apt-get.html#comments</comments>
		<pubDate>Fri, 26 Dec 2008 05:46:18 +0000</pubDate>
		<dc:creator>zhuozi</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=248</guid>
		<description><![CDATA[在windows页面，不管是app-server还是LAMP等等的环境集合压缩包，安装完成之后都会自动包含phpmyadmin,可是在Ubuntu下面，我们需要一个一个安装，如何能让phpmyadmin正常的工作起来，让我在网上找了很长时间。
1. #sudo apt-get install phpmyadmin
PS：你会发现直接访问http://localhost/phpmyadmin，不好用
2.#sudo ln -s /usr/share/phpmyadmin/ /var/www/
安装上面的方法，我们建立一个软连接，或者你把phpmyadmin直接复制到 /var/www/的文件夹下面也可以。
在Ubuntu下面就可以正常使用phpmyadmin了。
在Ubuntu下面，让symfony工作起来]]></description>
			<content:encoded><![CDATA[<p>在windows页面，不管是<a href="http://www.appservnetwork.com/">app-server</a>还是LAMP等等的环境集合压缩包，安装完成之后都会自动包含<a href="http://www.phpmyadmin.net">phpmyadmin</a>,可是在Ubuntu下面，我们需要一个一个安装，如何能让<a href="http://www.phpmyadmin.net">phpmyadmin</a>正常的工作起来，让我在网上找了很长时间。</p>
<p>1. #sudo apt-get install phpmyadmin</p>
<p>PS：你会发现直接访问http://localhost/phpmyadmin，不好用</p>
<p>2.#sudo ln -s /usr/share/phpmyadmin/ /var/www/</p>
<p>安装上面的方法，我们建立一个软连接，或者你把phpmyadmin直接复制到 /var/www/的文件夹下面也可以。</p>
<p>在Ubuntu下面就可以正常使用phpmyadmin了。</p>
<ul class="related_post"><li><a href="http://www.foolbirds.com/let-symfony-work-in-ubuntu.html" title="在Ubuntu下面，让symfony工作起来">在Ubuntu下面，让symfony工作起来</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/ubuntu-install-phpmyadmin-with-apt-get.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在Ubuntu下面，让symfony工作起来</title>
		<link>http://www.foolbirds.com/let-symfony-work-in-ubuntu.html</link>
		<comments>http://www.foolbirds.com/let-symfony-work-in-ubuntu.html#comments</comments>
		<pubDate>Thu, 25 Dec 2008 03:10:10 +0000</pubDate>
		<dc:creator>zhuozi</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://symfony.bobhero.net/?p=240</guid>
		<description><![CDATA[1.安装好Ubuntu之后，我们需要安装一些必要的软件。
php5,mysql,apache2,svn
#sudo apt-get install ***
接下来需要注意的是symfony需要PDO(mysql)这个模块和apache(rewrite)模块。
PDO:大家可以参考这篇文章，我也是根据这个安装的pdo的安装)
Rewrite:启用重写模块sudo a2enmod rewrite
2.在安装完所有的软件之后，我们开始配置环境。
在网上可以很容易找到symfony下载的svn地址，下载下来之后，把symfony的路径写在php.ini中
include_path=&#8221;.:/home/your/symfony/1.2&#8243;
3.设置虚拟机，在/etc/apache2/sites-enabled 文件夹下面添加自己的虚拟机文件，并开启。
使用SYMFONY Filter 过滤URL仿symfony机制实现不用require或者include来实例化类symfony1.4 DateTime对于PHP低版本的兼容问题如何在fixtures.yml写循环添加数据symfony 1.4 数据库 utf8设置symfony cheat sheetCheat Sheets!如何使用swift发送邮件symfony1.2下的命令行程序(batch)symfony1.2的后台(generate-admin)模板结构]]></description>
			<content:encoded><![CDATA[<p>1.安装好Ubuntu之后，我们需要安装一些必要的软件。</p>
<p>php5,mysql,apache2,svn</p>
<p>#sudo apt-get install ***</p>
<p>接下来需要注意的是symfony需要PDO(mysql)这个模块和apache(rewrite)模块。</p>
<p>PDO:大家可以参考这篇文章，我也是根据这个安装的<a href="http://hi.baidu.com/520huan_byaxiom/blog/item/446d99ece255242063d09f64.html" target="_blank">pdo的安装</a>)</p>
<p>Rewrite:启用重写模块<code>sudo a2enmod rewrite</code></p>
<p>2.在安装完所有的软件之后，我们开始配置环境。</p>
<p>在网上可以很容易找到symfony下载的svn地址，下载下来之后，把symfony的路径写在php.ini中</p>
<p>include_path=&#8221;.:/home/your/symfony/1.2&#8243;</p>
<p>3.设置虚拟机，在/etc/apache2/sites-enabled 文件夹下面添加自己的虚拟机文件，并开启。</p>
<ul class="related_post"><li><a href="http://www.foolbirds.com/use_symfony_filter_to_filteredurl.html" title="使用SYMFONY Filter 过滤URL">使用SYMFONY Filter 过滤URL</a></li><li><a href="http://www.foolbirds.com/%e4%bb%bfsymfony%e6%9c%ba%e5%88%b6%e5%ae%9e%e7%8e%b0%e4%b8%8d%e7%94%a8require%e6%88%96%e8%80%85include%e6%9d%a5%e5%ae%9e%e4%be%8b%e5%8c%96%e7%b1%bb.html" title="仿symfony机制实现不用require或者include来实例化类">仿symfony机制实现不用require或者include来实例化类</a></li><li><a href="http://www.foolbirds.com/use-datetime-in-php5-1-x-with-symfony.html" title="symfony1.4 DateTime对于PHP低版本的兼容问题">symfony1.4 DateTime对于PHP低版本的兼容问题</a></li><li><a href="http://www.foolbirds.com/%e5%a6%82%e4%bd%95%e5%9c%a8fixtures-yml%e5%86%99%e5%be%aa%e7%8e%af%e6%b7%bb%e5%8a%a0%e6%95%b0%e6%8d%ae.html" title="如何在fixtures.yml写循环添加数据">如何在fixtures.yml写循环添加数据</a></li><li><a href="http://www.foolbirds.com/symfony-1-4-database-utf8.html" title="symfony 1.4 数据库 utf8设置">symfony 1.4 数据库 utf8设置</a></li><li><a href="http://www.foolbirds.com/symfony-cheat-sheet.html" title="symfony cheat sheet">symfony cheat sheet</a></li><li><a href="http://www.foolbirds.com/cheat-sheets.html" title="Cheat Sheets!">Cheat Sheets!</a></li><li><a href="http://www.foolbirds.com/how-to-use-swift-to-send-mail-in-symfon.html" title="如何使用swift发送邮件">如何使用swift发送邮件</a></li><li><a href="http://www.foolbirds.com/batch-in-symfony12.html" title="symfony1.2下的命令行程序(batch)">symfony1.2下的命令行程序(batch)</a></li><li><a href="http://www.foolbirds.com/generate-admin-templates-structure.html" title="symfony1.2的后台(generate-admin)模板结构">symfony1.2的后台(generate-admin)模板结构</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/let-symfony-work-in-ubuntu.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>开启symfony的CSRF保护</title>
		<link>http://www.foolbirds.com/csrf.html</link>
		<comments>http://www.foolbirds.com/csrf.html#comments</comments>
		<pubDate>Mon, 22 Dec 2008 06:48:17 +0000</pubDate>
		<dc:creator>maker</dc:creator>
				<category><![CDATA[CentOS/Redhat]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[csrf]]></category>

		<guid isPermaLink="false">http://symfony.bobhero.net/?p=177</guid>
		<description><![CDATA[什么是CSRF?
CSRF是伪造客户端请求的一种攻击，CSRF的英文全称是Cross Site Request Forgery，字面上的意思是跨站点伪造请求。
symfony 1.2中内置了CSRF验证功能, 用来防止CSRF攻击, 在建立项目的时候我们可以使用如下命令开启CSRF保护.
&#62; symfony generate:app --csrf-secret=UniqueSecret frontend
或者修改app的settings.yml
all:
  csrf-secret=UniqueSecret
开启CSRF保护之后app中的所有form都会增加一个隐藏项, 其值为随机生成的一个字符串, 表单提交之后会对该字符串进行验证, 工作原理类似验证码, 但免去了输入验证码的麻烦.
为了更好的兼容性(这里指开启和不开启CSRF的时候都可以正常运行), 我们需要修改form取得值的方法, 使用
$form-&#62;bind($request-&#62;getPostParameters());
可能是CSRF相关的功能还没有足够的完善, 在之前的测试中, 当form的submit按钮有name的时候会产生表单错误, 造成表单无法提交, 如果非必要情况, 最好将submit的name设置为空或者不设置.
但有时候我们的确需要给submit一个name, 比如但表单多submit的情况. 这时我们就需要用另外一种方法了, 在form中加入下面代码.
$this-&#62;validatorSchema -&#62; setOption('allow_extra_fileds', true);
这样表单验证会允许存在不属于form的field.
CSRF使用注意事项和form的标准用法]]></description>
			<content:encoded><![CDATA[<p>什么是CSRF?</p>
<blockquote><p>CSRF是伪造客户端请求的一种攻击，CSRF的英文全称是Cross Site Request Forgery，字面上的意思是跨站点伪造请求。</p></blockquote>
<p>symfony 1.2中内置了CSRF验证功能, 用来防止CSRF攻击, 在建立项目的时候我们可以使用如下命令开启CSRF保护.</p>
<pre name="code" class="php">&gt; symfony generate:app --csrf-secret=UniqueSecret frontend</pre>
<p>或者修改app的settings.yml</p>
<pre name="code" class="php">all:
  csrf-secret=UniqueSecret</pre>
<p>开启CSRF保护之后app中的所有form都会增加一个隐藏项, 其值为随机生成的一个字符串, 表单提交之后会对该字符串进行验证, 工作原理类似验证码, 但免去了输入验证码的麻烦.</p>
<p>为了更好的兼容性(这里指开启和不开启CSRF的时候都可以正常运行), 我们需要修改form取得值的方法, 使用</p>
<pre name="code" class="php">$form-&gt;bind($request-&gt;getPostParameters());</pre>
<p>可能是CSRF相关的功能还没有足够的完善, 在之前的测试中, 当form的submit按钮有name的时候会产生表单错误, 造成表单无法提交, 如果非必要情况, 最好将submit的name设置为空或者不设置.</p>
<p>但有时候我们的确需要给submit一个name, 比如但表单多submit的情况. 这时我们就需要用另外一种方法了, 在form中加入下面代码.</p>
<pre name="code" class="php">$this-&gt;validatorSchema -&gt; setOption('allow_extra_fileds', true);</pre>
<p>这样表单验证会允许存在不属于form的field.</p>
<ul class="related_post"><li><a href="http://www.foolbirds.com/csrf-and-form.html" title="CSRF使用注意事项和form的标准用法">CSRF使用注意事项和form的标准用法</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/csrf.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
