档案馆之 ‘技术天空’

编程思想?程序本质?

楚云 » 2006-06-16 00:37 » 技术天空

今天下班后,在公司给一个实习的小朋友讲了很久的PHP知识。罗列起来自己才发现,要做一个优秀的PHPer,要掌握的知识太多太多了。都不知道自己是怎么学了这么多五花八门的东西-_-!(PS:当然说不上精通,不说别的,我们公司比我厉害的就很多了)

临走前,小朋友很感慨地说,一开始觉得电脑很聪明,什么都会做,所以写程序的思路天马行空;后来被大家指教以后,又觉得电脑其实很笨的,每步都要你安排好,思路又困得太死了,没想到利用循环和数学运算,可以生成很多效果。

一个人回家的路上就开始回想自己是怎么接触编程的。

最早知道有编程这回事,是小学。学校里获赠一批苹果机,于是开办了一个编程兴趣小组,并且以一次未事先告知的数学小测验成绩为凭,选了些人参加培训。我因为轻视了这次随堂测验,与编程擦肩而过。

初中的时候,在表妹家买的学习机(不是后来那种游戏机)上,第一次接触到人机对话。印象已经很模糊了,也不知道那算是什么语言,当时完全是玩玩,大概只到“hello word!”和加减乘除运算的程度。

高中开始有 BASIC 的选修课,这是我真正意义上开始系统地接触编程。

那时候我认为,程序的本质就是把直观的思维变成流程图,用 if else、go to、for 去描述和控制流程的判断、走向。

大学开始学了很多,C、VB、FoxRro ……纪念一下逃了一个学期的 FoxRro 课,最后苦读一晚上课本,考了一百分的辉煌成绩。怀念废寝忘食在 FoxRro 命令行下编写通讯录程序的日子,看似枯燥、其实充实。永远感谢那位我一直忘记问姓名的机房指导老师,他只教过我很少的语言命令函数,和我一起讨论、解决问题,告诉我一些最基本的原则:没有什么程序能在脑子里完美设计然后一口气写出来,先写最简单的功能,再一步步扩充完善,最后你会发现,它比你设想的要好。

那时候我认为,编程把现实里的复杂数据情况总结归纳成有规律、有关系的表,用一些人脑看起来很傻的算法,借助电脑的速度,运算出结果。

大学毕业了,因为工作需要,陆续接触了很多新东西。PHP、MYSQL、Java Script、XML、CSS ……开始真正接触面向对象的编程(大学里的 VB 课基本都在睡觉混日子-_-!)。

到现在,我认为编程是什么呢?也许,程序的本质就是分析现实生活中规律性的东西,把它们模块化、抽象化,变成一个个标准的小零件,通过千变万化的组合,最后形成完整的代码,得到出千变万化的效果。

全篇看下来,完全不知所云……失败的文章>_<

总觉得程序的本质里有一种玄之又玄的东西,好像能抓住了,又抓不住。就象最后一步破碎虚空迈不出去一样。玄幻小说看多了……睡觉睡觉!

WordPress安装纪实

楚云 » 2006-06-12 20:34 » 技术天空

一直对自己的博客挂在 BSP 觉得很不爽。不能改程序代码,自己学的东西就没有多大用武之地了。而且我老是记不住自己的二级域名,换台新机器还要搜索一下自己的博客地址是什么-_-!中国博客网MSN Space 又都对 Firefox 不太支持。所以下定决心租了虚拟空间、买了域名,自立门户了。

根据同事 Onion 的建议,最后选择了 WordPress 这个博客程序。Onion 列举了很多理由,我其实对这个程序有好感是因为它的缩写:WP。很亲切啊,以前初中我和好朋友两个人的名字缩写。某人对号入座啊:P

大致记录一下自己的安装过程,以备后用。

下载了 WordPress 2.0.3 简体中文版安装包,解压、上传。按提示简单几步操作,就可以使用了。

做了一些权限上的设置,考虑到以后 spam 的问题,设置必须注册了才能留言,第一次留言需要经过我的审核。

顺便把极其给我惹事的可视化编辑器给关了(选项-录入,去掉“用户缺省使用可视化编辑器”和“允许 WordPress 自动修正错误嵌套的 XHTML 标签”;用户,去掉“请使用超文本编辑器撰写”)。

把模版里的一些英文汉化了一下,开始装插件。

先试用了一下自带的几个:

Akismet ,没有 API key ,暂时新开的网站 spam 问题应该不会很严重,先跳过了。

WordPress Database Backup 是备份用的,暂时也用不到,先没激活。

Hello Dolly 是一个装饰性的小程序,会在后台管理界面上随机显示一条英文的问候。对我没什么用处,管理界面还是越简洁越好。

于是决定把它改造成在前台页面显示一条中文的诗词之类的东西。

查了下里面涉及的 add_action 函数,找到一篇很详细的中文说明,把:

  1. add_action('admin_footer', 'hello_dolly');
  2. add_action('admin_head', 'dolly_css');

这两行分别修改成:

  1. add_action('wp_footer', 'hello_dolly');
  2. add_action('wp_head', 'dolly_css');

这样就在前台上显示出来了。

把里面 $lyrics 这个变量的内容改成中文,发现刷新的时候有一定几率出现空白。再看了一下程序,原程序里居然有个错误。把:

  1. $chosen = wptexturize( $lyrics[ mt_rand(0, count($lyrics) ) ] );

改成:

  1. $chosen = wptexturize( $lyrics[ mt_rand(0, count($lyrics)-1 ) ] );

现在好了。唯一的遗憾就是 CSS 的定位很成问题,在 800X600、1024X768、1280X1024 三种分辨率下位置老是跑来跑去。研究了半天没有效果,暂时先放弃了。

然后开始在网上 google 一些想要的插件。

CoolCode ,虽然我很少在博客上写技术文章,但是偶尔还是需要代码加亮的,比如现在:)找了个国人修改过的版本,现在用起来觉得不错。

Audio player ,比较好看的页面播放插件,暂时先用这个吧。

中文 WordPress 工具箱,虽然现在文章比较少,还没开始用,不过看看功能应该用得到的:

用来解决官方 WordPress 没有照顾到的中文相关问题。使用这个插件,你可以显示随机文章,最新留言(最新引用),留言最多文章,发表评论最多的网友,还有真正的文章摘要,等等,真正截断,没有乱码。

暂时插件就装了这些。还有很多需要,以后慢慢来了。

参考了下巨蟹生活馆,弄了个 FLASH 的播放器放在侧边栏,上传了几首仰萍CD里的歌。

豆瓣里自己读什么书听什么音乐看什么电影也输出过来了。

开始艰难的“搬家”过程。中国博客网不支持文章打包,只好手动转了。顺便把一些以前没放出的旧文章也加上了。忙忙碌碌周五晚上弄到凌晨6点,一半都还没有转移好:(

之后发现 RSS 输出有问题,提示我在 header 之前有文本输出,找了半天找不到。怀疑是 KafeifeiKafeifei 以前说过的 UTF-8 文件头的问题。周一到公司用 Zend 打开一看,果然。UTF-8 格式下,wp-blog-header.php 这个文件前面有一个小黑点。删除,重新上传。 RSS 正确了。

暂时在程序方面就做这些改造。目前博客首要任务是继续搬家。有什么技术问题发现了再慢慢改吧。觉得自立门户还是个很明智的决定。大大满足了我在程序上的控制欲:P

我把地球放在指尖

楚云 » 2006-02-21 13:55 » 技术天空

Google Earth 闻名已久,因为英文不好,我一向对试用英文软件兴趣缺缺。那天在同学家看见这个软件,勾起兴头,找来安装了一下。

打开界面就看见宇宙中熟悉的地球慢慢拉近,最后停在美国上空。呃,没有办法,谁叫这是美国公司做的软件呢。

拨拨鼠标,地球旋转起来,先找到熟悉的中国海岸线,再找到长江入海口。转转滚轮,仿佛从太空降落,一层层云雾散开,上海城区慢慢清晰起来。调整一下倾斜角度,大剧院、人民广场、上海博物馆,一点点寻找过去。哈,这里是我的家,那里是上海越剧院……连高架上的车辆都可以看见。如果世上真的有神仙,在天宫俯瞰人间,也就是这样的感觉吧?

记得以前看过的一首诗:我把地球放在指尖,一旋转,就跨越五大洲……现在的科技真的把很多幻想变成了现实。真的佩服 google 公司,这样的视频处理技术不是最先进的,但是这个创意真的很好玩。

今晚继续研究,去看看喜马拉雅山、看看希腊、看看金字塔……

自动缩小大图

楚云 » 2004-12-16 17:18 » 技术天空

转载自围城 | Loli’s Blog
文章原链接:
http://loli.zj05.com/Dlog/showlog.asp?log_id=354&cat_id=25

经常看到一些图片很大,上传后显示会撑满屏幕。

在图片标签内加入下面的代码就可以解决这个问题。

如果该图片的宽度大于“屏幕宽度-350”,则让该图就显示“屏幕宽度-350”的大小:

  1. <img src="./images/1.gif" onload="javascript:if(this.width>screen.width-350)then(this.width=screen.width-350)">

如果该图片的宽度大于“350”,则让该图就显示“350”的大小:

  1. <img src="./images/1.gif" onload="javascript:if(this.width>350)then(this.width=350)">

可隐藏和打开的菜单效果

楚云 » 2004-12-15 12:41 » 技术天空

这是一个简单的隐藏打开菜单效果,代码简洁好用。

在文件头部加入以下JavaScript代码:

  1. <script language="javascript">
  2. function showtable(tid){
  3. whichtable=eval("tb"+tid);
  4. if(whichtable.style.display=="none"){
  5. eval("tb"+tid+".style.display=\"\";");
  6. }else{
  7. eval("tb"+tid+".style.display=\"none\";");
  8. }
  9. }
  10. </script>

在需要的页面里,加上类似程序:

  1. <table width="150" border="0" align="center" cellpadding="0" cellspacing="0">
  2.   <tr>
  3.     <td height="25" bgcolor="#6699CC">
  4.       <table width="150" border="0" align="center" cellpadding="0" cellspacing="2" style="cursor:hand;" onclick="showtable(1)">
  5.         <tr>
  6.           <td width="20" align="center" valign="middle">
  7.             <img src="./images/collapsed.gif" width="11" height="11">
  8.           </td>
  9.           <td valign="middle">
  10.             <font color="#FFFFFF">产品管理</font>
  11.           </td>
  12.         </tr>
  13.       </table>
  14.     </td>
  15.   </tr>
  16.   <tr>
  17.     <td>
  18.       <table id="tb1" width="150" border="0" align="center" cellpadding="0" cellspacing="2" bgcolor="#EFEFEF" style="display:none;">
  19.         <tr>
  20.           <td width="20" height="20" align="center">
  21.             <img src="./images/expanded.gif" width="11" height="11">
  22.           </td>
  23.           <td>
  24.             <a href="./1.php" target="right">分类管理</a>
  25.           </td>
  26.         </tr>
  27.         <tr>
  28.           <td height="20" align="center">
  29.             <img src="./images/expanded.gif" width="11" height="11">
  30.           </td>
  31.           <td>
  32.             <a href="./2.php" target="right">产品管理</a>
  33.           </td>
  34.         </tr>
  35.       </table>
  36.     </td>
  37.   </tr>
  38. </table>

说明:

style=”cursor:hand;” //鼠标样式采用手形

onclick=”showtable(1)” //菜单标题对应显示和隐藏哪个表格

id=”table1″ //给放置菜单内容的表格命名

style=”display:none;” //设定菜单一开始是隐藏还是显示。如果没有这个参数,默认是显示的;有这个参数就是隐藏的。