上一篇文章里介绍了symfony的cheat sheet,但官方的下载地址貌似被墙,所以我也没有下载到全部的cheat sheet,不过还好bobhero那里有,虽然是1.0的,但很多内容依然很有用。
2009-10-27
2009-10-22
Cheat Sheets!
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。下载链接我这里访问不了,不知道是删掉了还是被墙了,有新的发现我会再发出来。
2009-09-01
awesome 的 多头显示
awesome 的确是个好东西,用上了,就不喜欢别的女人了
今天心血来潮再次找出 awesome官网上的 图片 YY了一会 真爽啊,四个显示器
等咱有了钱,弄八个显示器 ,二十四的竖着放
我把公司里的大屁股显示器搬出来了 放在桌面上 ,准备实施 双头显示器 计划
首先要有一块双头的显卡 我找到了 ati x500 ,换上 HDMI 2 VGA线 开始了漫长的驱动过程,使了半天力气,终于放弃了,ATI 官方的驱动不好用 ,不知道是AMD 不牛X ,还是ATI太弱。
有的时候放弃 也是一种进步
我换了一个N卡
顺序驱上,竟然发现有图型设置程序 爽 nvidia-setting 经过一阵设置,黑屏,重启,再黑,再启。终于
桌面OK了
有以下几点需要注意:
1.能不用A卡就不要用A卡
2.有一个什么什么东西要打开,要不然AWESOME 不能很好的工作 => xinerama
3.两个显示器最好是一样的,要不然很影响心情
上图
用SCROT 竟然直接拿到了全图
2009-08-07
兼容IE6,IE7,IE8和Firefox的图片上传预览效果
所谓图片上传预览,就是在使用文件选择框选择了文件之后就可以在页面上看见图片的效果,关于这个效果我一直认为是无法做到的,没想到前不久被zhuozi搞定了。
网上流传的一些关于图片上传预览的代码都是差不多的,IE6下使用文件选择对象的value属性取出将要上传的本地文件路径,然后使用本地路径构造img标签,代码如下:
<input type="file"
onchange="document.getElementById('view').innerHTML=' <img src=\'' + this.value + '\'/>';" />
<div id="view"> </div>
网上有些人说上面的代码可以在IE7下生效,但实际测试是不行的,因为IE7的img标签不支持本地路径,所以需要使用div和css的filter来实现这个效果,代码如下:
<input type="file" onchange=‘javascript:
document.getElementById("pic").filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src
= this.value;’ /><br />
<div id="pic"
style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);
width:400px;height:200px;"></div>
而关于Firefox的图片上传预览效果,网上几乎找不到相关资料,比较容易想到的解决方案无非是自动将图片上传到服务器再显示出来诸如此类,但这里我们不对此类技术进行讨论,我们要做的是正宗的上传前本地预览。
以下是最后的研究结果,同时兼容IE6,IE7,IE8和Firefox。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
var picPath;
var image;
// preview picture
function preview()
{
document.getElementById('preview').style.display = 'none';
// 下面代码用来获得图片尺寸,这样才能在IE下正常显示图片
document.getElementById('box').innerHTML
= "<img width='"+image.width+"' height='"+image.height+"' id='aPic' src='"+picPath+"'>";
}
// show view button
function buttonShow()
{
/*
这里用来解决图片加载延时造成的预览失败.
简单说明一下,当image对象的src属性发生改变时JavaScript会重新给image装载图片内容,
这通常是需要一些时间的,如果在加载完成之前想将图片显示出来就会造成错误,所以我们
通过图片的宽度和高度来判断图片是否已经被成功加载,加载完毕才会显示预览按钮.
这里我仍然有一个困惑,在IE7下预览效果偶尔会失效.
*/
if ( image.width == 0 || image.height == 0 ) {
setTimeout(buttonShow, 1000);
} else {
document.getElementById('preview').style.display = 'block';
}
}
function loadImage(ele) {
picPath = getPath(ele);
image = new Image();
image.src = picPath;
setTimeout(buttonShow, 1000);
}
function getPath(obj)
{
if(obj)
{
//ie
if (window.navigator.userAgent.indexOf("MSIE")>=1)
{
obj.select();
// IE下取得图片的本地路径
return document.selection.createRange().text;
}
//firefox
else if(window.navigator.userAgent.indexOf("Firefox")>=1)
{
if(obj.files)
{
// Firefox下取得的是图片的数据
return obj.files.item(0).getAsDataURL();
}
return obj.value;
}
return obj.value;
}
}
</script>
</head>
<body>
<input type="file" name="pic" id="pic" onchange='loadImage(this)' />
<input id='preview' type='button' value='preview' style='display:none;' onclick='preview();'>
<div id='box'></div>
</body>
</html>
补充:
上面的代码经过测试貌似不是那么稳定,一些机器上的IE7会失效,我在6台电脑上测试,FF全通过,IE7下有一台没有通过,估计是和IE的设置有关, 而且即使可以正常使用也不是每次都可以成功显示出预览按钮,这个原因也没有找到,估计是图片加载失败什么的,所以例子里特殊处理的预览按钮的显示,即时预览功能失败也不影响其他功能。
下面是在我机器上IE7的测试图片:
2009-08-01
成为一名symfony文档贡献者.
很久没有更新博客了,最新的一些工作没有涉及到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协议。

































