Oct
26
错已酿成,唯一的补救方法就是吸取教训,不要在一块石头上绊两次。
似乎是工作来的太顺利了,我的心里起了小小的涟漪,于是,很快工作没了,教训有了。
其实之前也犯过类似错误,但并没能避免错误再次发生。不知道轻重缓急,太感性,考虑问题太狭隘。
你很明白冲动是魔鬼,但你不知道你当时是处于冲动状态。
那就这样吧,别再让自己,让身边的人失望了。
Oct
26
上一篇文章简要介绍了一下drupal,我觉得drupal在国内之所以不太流行,关键是她不够傻瓜,就像傻瓜相机一样,那都是一些入门级的人玩的,你再怎么玩的转,没有专业的镜头配合,那都是瞎胡闹。忽然想到了firefox,某种程度上,drupal跟她有一定的相似性,比如:有完善的插件库,各种功能主要通过插件来实现;新手需要摸索一段时间,才能入门,继而为之陶醉;还有就是在中国,使用人数不多,一方面可能是中文文档的不齐全,另一方面国内的CMS也是另一选择。
说了那么多的废话,下面进入正题。
drupal的默认模板引擎是PHPTemplate,如果要创建一个自己的主题,可以在theme目录下,新建一个文件夹,比如mytheme,然后再创建一个page.tpl.php,这样最简单的模板就建立完了(注意:必须是.tpl.php结尾;文件名必须是page.tpl.php)。你可以创建一系列文件来覆盖默认函数
theme('page') (page.tpl.php):主题的首页- theme('block')(block.tpl.php):区块模板,通常用在侧边栏
- theme('box')(box.tpl.php):内容区域的模板
- theme('comment')(comment.tpl.php):评论模板
- theme('node')(node.tpl.php)详细内容模板
每一个模板,都有各自可以使用的变量,这个在上一篇文章也大概说了一下,具体内容查看
以下是我曾经碰到过的问题,以及解决办法
1、如果我要为单独的页面做一个特殊的模板怎么办
比如说要为http://www.example.com/node/1/edit这个页面,单独做一个模板 ,PHPTemplate会在模板文件夹下按照以下次序寻找模板:
page-node-edit.tpl.php
page-node-1.tpl.php
page-node.tpl.php
page.tpl.php
如果是访问http://www.example.com/tracker
那么搜寻的模板次序就是:
page-tracker.tpl.php
page.tpl.php
具体可以查看这篇文章
2、我想在特定的页面显示特定的区块(block)怎么办?
在block里设置,新建block后,点击“配置”,最后的页面可见性设置,有三个选项可以选择。
3、如果我想对不同的区块(block),设置不同的样式,怎么办?
PHPTemplate会在模板目录下,按照下面的顺序查找
block-[module]-[delta].tpl.php
block-[module].tpl.php
block-[region].tpl.php
block.tpl.php
可以参考这篇文章
Oct
24
如果要问这世间谁最累,我觉得上帝最累。
上帝一刻也不能休息,ta(他/她/它)要安排众生的历程,从蚊子到人类,他都得安排,真的难以想象ta的效率高到了什么程度。
以前,我从来不信什么上帝之类的,因为我对传统本身就抱着一种抵制态度,因此对于从传统的口中说出来的事物,我多表示怀疑。但是现在我长大了,过了法定结婚年龄、大学毕业、有工作经验。我有了独立思考的能力,生活中发生的点点滴滴让我不得不去相信一些事情。
我们都是上帝的实验品,上帝把我们创造出来,然后给我们安排了各种路,看我们怎么选;给了我们各种机会,看看我们怎么把握;给了我们各种诱惑,看看我们能不能抵抗地住;给了我们各种优点,看看我们如何发挥这些优点;给了我们各种缺点,看看我们如何看待自己的缺点。
在佛山的时候,我想租一个小一点的屋子,想体验一下那种被拘束在小空间里的感觉,结果找到中介,中介给我看的屋子,恰恰跟我想象的一样,于是我毫不犹豫地租下了。到了大连,我不再想感受那种生活了,我想租一个宽敞点,家具、电器齐全,装修也还过得去的屋子,结果,当天下午,在朋友的帮助下,我又如愿了。
在佛山的时候,有一个大连的朋友,加了我的gtalk,到了大连之后,我问他在哪儿工作,他说软件园,结果就在我工作地点的上一层,世界就是这么小。
结果谁也不知道,not you,not I ,not the god 。
生活中,上帝总是会给你一点提示,你必须领会这些提示,然后作出判断。
Oct
23
在安装一些大的php程序或者模块的时候,有时会出现这种情况,这是因为php默认的配置是使用8M的内存,有下面几种解决办法
在应用程序的包含文件里,加入
ini_set ( "memory_limit", "20M");
当然ini_set也不是万能的,具体可以查看官网说明
或者使用.htaccess,如果可以的话
Oct
21
drupal 是一款开源的内容管理系统(CMS),其官方主站为:http://www.drupal.org
更多的CMS可以到OpenSourceCMS查看 ,如果你喜欢哪款CMS,可以对其投票,不过都是国外的,从投票的情况来看,drupal排名第一。
可以到这里查看成功案例http://drupal.org/node/15237
drupal可以免费下载使用,可以方便的发布、组织、管理网站的各类内容,有上万的个人或公司使用drupal来搭建自己的个性网站,包括
- 社区门户网站
- 论坛
- 企业网站
- 互联网应用
- 个人网站或博客
- 网站迷
- 电子商务网站
- 资源共享
- SNS
在你下载drupal后,可以非常方便地进行安装,内建的功能系统和丰富的模块可以让你的网站非常有特色,包括:
- 内容管理系统(CMS)
- blog
- 共同创作环境
- 论坛系统
- p2p网站
- 实事通讯
- 播客
- 图库
- 文件上传下载
当然还有更多。
以下是我的使用感受
Oct
17
原文地址:click here
以下为译文
最近经常看到有人讨论MySQL的优化,可以理解,其实他们都没有尝试过在海量数据下,哪些因素会成为瓶颈。一些简单的建议 我不认为自己是专家,但我有在大数据量下工作的经验,以及自己总结的关于查询的优化。通过使用EXPLAIN来优化查询EXPLAIN 是你的朋友,你应该去了解她。如果你花时间去了解EXPLAIN的说明文档 的话,会发现许多有价值的东西,部分显示如下。
优化 JOIN
MySQL是通过但扫描多连接的方式来处理JOIN的,也就是说,MySQL首先从第一个表获取所有的行,然后从第二个表中查找匹配数据,接着是第三个,以此类推。当所有的表都被处理后,MySQL输出所选择的列然后撤出该表。
为什么这很重要?假设一个表(tableA)有8000条数据,这个表有一个对应的n:n的表(locations),存储的是tableA的location,可以这么来写这个查询
LEFT JOIN tableA2locations ON
tableA2locations.tableA_id = tableA.id
LEFT JOIN locations ON
tableA2locations.location_id = locations.id
WHERE locations.location = 'sometown'
对这个查询语句留个印象。MySQL会首先从第一个表获取记录,然后从join table中筛选出符合的数据,以此类推。这将带领我们进入下一个话题
执行一个查询所需要的行数
通过观察EXPLAIN的输出可以对这个查询语句的优劣有一个大致的判断。她能够告诉你有多少条数据MySQL必须检测。
通过上面这个例子可以看出,如果一个表没有索引,那么在处理一个普通的3表查询(1000x1000x1000)时,一个join语句就有可能变得很慢。可以参考这篇文章
减少一个查询语句里面的行数
仍然拿上面那个例子来看,我们通过多一个where条件,来使得查询的行数减半(tableA.foo = 'bar')。
LEFT JOIN tableA2locations ON
tableA2locations.tableA_id = tableA.id
LEFT JOIN locations ON
tableA2locations.location_id = locations.id
WHERE locations.location = 'sometown' AND tableA.foo = 'bar'
这样我们只需从tableA的4万条数据开始查询。如果tableA2locations还有2千条数据的话,总共是80,000(我不知道怎么来的)条数据。情况有些好转,但如果有3个表或者更多呢?答案应该是首先查询数量最少的表
LEFT JOIN tableA2locations ON
tableA2locations.location_id = locations.id
LEFT JOIN tableA ON
tableA2locations.tableA_id = tableA.id
WHERE locations.location = 'sometown' AND tableA.foo = 'bar'
如果tableA2locations和tableA都有做索引的话,那么查询将是相当快的。
最初我编程的时候,我总是先选择主表然后关联其他的表。但是当你添加一些数据后并开始使用EXPLAIN时,你会发现首先select行数最少的表是最佳选择。
如果想更深入地了解这个话题,可以到HackMySQL去看看。
