好久没有BLOG了


  到成都第三天了,每天还是蛮充实的。

  培训主要是学习探究式教学的理念,技术工作主要是制作多媒体动画的制作,要向JUNCHEN学习。最终资源是以网页形式出来的,但有标准的模板,不需要太多改动。 
   
  住的宾馆距离成都最繁华的商业街非常近,逛了一下感觉和南京新街口差不多。

  By the way,成都美女果然很多!

发布于2005年07月15日 14:38 | 评论数(2) 阅读数(802) 我的文章

Discuz论坛数据表分析(1)


cdb_forums —— 论坛结构表

fid                       论坛ID
fup                      上层论坛的fid
type                     论坛种类
icon                     图标
name                   论坛名
description           描述
status                   是否关闭      
displayorder         显示顺序
moderator            版主
styleid                  风格方案ID
threads                总主题数
posts                   总帖子数
lastpost                最后发表帖子主题、作者、时间
allowsmilies         允许使用 Smilies
allowhtml            允许使用 html 代码
allowbbcode        允许使用 Discuz! 代码
allowimgcode       允许使用 [img] 代码
password             访问密码
postcredits          暂时不详
viewperm            浏览论坛许可组别
postperm             发帖许可组别
getattachperm      下载附件许可组别
postattachperm    上传附件许可组别

发布于2005年02月26日 17:40 | 评论数(0) 阅读数(44688) 我的文章

视窗XP SP2再现漏洞 拨号上网完全不设防


视窗XP SP2再现漏洞 拨号上网完全不设防


微软昨天悄悄释放了一个“紧急”(critical)级别的Windows XP SP2的补丁,修复其内置防火墙应用程序Windows Firewall当中的一个严重漏洞。

  微软在相关资料文档中这样说,“当你在Windows XP Service Pack 2 (SP2)中设置好Microsoft Windows Firewall之后,你会发现如果你是拨号上网的话,网络上的任何人都可以访问你的电脑”。

  这项更新并没有包含在本周初宣布的五个“重要”级别的微软建议更新中,甚至连提及都没有。而微软公司方面,暂时还联络不到他们解释为何此SP2补丁没有按计划地在每月更新中发布。根据资料显示,受这个Windows Firewall的漏洞影响的操作系统包括Windows XP Home Edition SP2, Windows XP SP2, Windows XP Tablet PC Edition 2005和Windows XP Media Center Edition SP2。

  自以安全为重心的Windows XP SP2发布以来,微软已经公布了五个安全漏洞,其中两个属“紧急”级别。这个最新发现的漏洞只对那些使用拨号连接上网的用户有影响,问题在于Windows Firewall中如果使用了"My network (subnet) only"选项时错误解释了本地子网(subnet)之故。 由于部分拨号软件配置路由表的方式较特别,微软表示防火墙有时会将整个互联网解释为本地子网。“这会导致互联网上的任何人都可以访问出现此异常的电脑”。

  据微软资料解释,当"My network (subnet) only"的选项打开时,它会自动打开Windows XP中的“文件及打印机共享”,这让使用拨号连接的用户的共享驱动器向全世界开放。

发布于2004年12月18日 19:04 | 评论数(0) 阅读数(799) 我的文章

Meta标签详解


引言

  您的个人网站即使做得再精彩,在“浩瀚如海”的网络空间中,也如一叶扁舟不易为人发现,如何推广
个人网站,人们首先想到的方法无外乎以下几种:
  
  ● 在搜索引擎中登录自己的个人网站
  
  ● 在知名网站加入你个人网站的链接

  ● 在论坛中发帖子宣传你的个人网站

  很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧!

  META标签是HTML语言HEAD区的一个辅助性标签,它位于HTML文档头部的<HEAD>标记和<TITLE>标记之间,它提供用户不可见的信息。meta标签通常用来为搜索引擎robots定义页面主题,或者是定义用户浏览器上的cookie;它可以用于鉴别作者,设定页面格式,标注内容提要和关键字;还可以设置页面使其可以根据你定义的时间间隔刷新自己,以及设置RASC内容等级,等等。


  详细介绍

  下面介绍一些有关 标记的例子及解释。

  META标签分两大部分:HTTP标题信息(HTTP-EQUIV)和页面描述信息(NAME)。


  ★HTTP-EQUIV

  HTTP-EQUIV类似于HTTP的头部协议,它回应给浏览器一些有用的信息,以帮助正确和精确地显示网页内容。常用的HTTP-EQUIV类型有:


  1、Content-Type和Content-Language (显示字符集的设定)

  说明:设定页面使用的字符集,用以说明主页制作所使用的文字已经语言,浏览器会根据此来调用相应的字符集显示page内容。

  用法:<Meta http-equiv="Content-Type" Content="text/html; Charset=gb2312">
      <Meta http-equiv="Content-Language" Content="zh-CN">

  注意: 该META标签定义了HTML页面所使用的字符集为GB2132,就是国标汉字码。如果将其中的“charset=GB2312”替换成“BIG5”,则该页面所用的字符集就是繁体中文Big5码。当你浏览一些国外的站点时,IE浏览器会提示你要正确显示该页面需要下载xx语支持。这个功能就是通过读取HTML页面META标签的Content-Type属性而得知需要使用哪种字符集显示该页面的。如果系统里没有装相应的字符集,则IE就提示下载。其他的语言也对应不同的charset,比如日文的字符集是“iso-2022-jp ”,韩文的是“ks_c_5601”。
      
  Content-Type的Content还可以是:text/xml等文档类型;
  Charset选项:ISO-8859-1(英文)、BIG5、UTF-8、SHIFT-Jis、Euc、Koi8-2、us-ascii, x-mac-roman, iso-8859-2, x-mac-ce, iso-2022-jp, x-sjis, x-euc-jp,euc-kr, iso-2022-kr, gb2312, gb_2312-80, x-euc-tw, x-cns11643-1,x-cns11643-2等字符集;Content-Language的Content还可以是:EN、FR等语言代码。

  2、Refresh (刷新)

   说明:让网页多长时间(秒)刷新自己,或在多长时间后让网页自动链接到其它网页。
   用法:<Meta http-equiv="Refresh" Content="30">
      <Meta http-equiv="Refresh" Content="5; Url=http://www.xia8.net">
   注意:其中的5是指停留5秒钟后自动刷新到URL网址。

  3、Expires (期限)

   说明:指定网页在缓存中的过期时间,一旦网页过期,必须到服务器上重新调阅。
   用法:<Meta http-equiv="Expires" Content="0">
      <Meta http-equiv="Expires" Content="Wed, 26 Feb 1997 08:21:57 GMT">
   注意:必须使用GMT的时间格式,或直接设为0(数字表示多少时间后过期)。

  4、Pragma (cach模式)

   说明:禁止浏览器从本地机的缓存中调阅页面内容。
   用法:<Meta http-equiv="Pragma" Content="No-cach">
   注意:网页不保存在缓存中,每次访问都刷新页面。这样设定,访问者将无法脱机浏览。

  5、Set-Cookie (cookie设定)

  说明:浏览器访问某个页面时会将它存在缓存中,下次再次访问时就可从缓存中读取,以提高速度。当你希望访问者每次都刷新你广告的图标,或每次都刷新你的计数器,就要禁用缓存了。通常HTML文件没有必要禁用缓存,对于ASP等页面,就可以使用禁用缓存,因为每次看到的页面都是在服务器动态生成的,缓存就失去意义。如果网页过期,那么存盘的cookie将被删除。
   用法:<Meta http-equiv="Set-Cookie" Content="cookievalue=xxx; expires=Wednesday,
       21-Oct-98 16:14:21 GMT; path=/">
   注意:必须使用GMT的时间格式。

  6、Window-target (显示窗口的设定)

   说明:强制页面在当前窗口以独立页面显示。
   用法:<Meta http-equiv="Widow-target" Content="_top">
   注意:这个属性是用来防止别人在框架里调用你的页面。Content选项:_blank、_top、_self、_parent。

  7、Pics-label (网页RSAC等级评定)
   说明:在IE的Internet选项中有一项内容设置,可以防止浏览一些受限制的网站,而网站的限制级
      别就是通过该参数来设置的。
   用法:<META http-equiv="Pics-label" Contect=
               "(PICS-1.1'http://www.rsac.org/ratingsv01.html'
       I gen comment 'RSACi North America Sever' by 'inet@microsoft.com'
       for 'http://www.microsoft.com' on '1997.06.30T14:21-0500' r(n0 s0 v0 l0))">

   注意:不要将级别设置的太高。RSAC的评估系统提供了一种用来评价Web站点内容的标准。用户可以设置Microsoft Internet Explorer(IE3.0以上)来排除包含有色情和暴力内容的站点。上面这个例子中的HTML取自Microsoft的主页。代码中的(n 0 s 0 v 0 l 0)表示该站点不包含不健康内容。级别的评定是由RSAC,即美国娱乐委员会的评级机构评定的,如果你想进一步了解RSAC评估系统的等级内容,或者你需要评价自己的网站,可以访问RSAC的站点:http://www.rsac.org/。

  8、Page-Enter、Page-Exit (进入与退出)

   说明:这个是页面被载入和调出时的一些特效。
   用法:<Meta http-equiv="Page-Enter" Content="blendTrans(Duration=0.5)">
      <Meta http-equiv="Page-Exit" Content="blendTrans(Duration=0.5)">
   注意:blendTrans是动态滤镜的一种,产生渐隐效果。另一种动态滤镜RevealTrans也可以用于页面进入与退出效果:

      <Meta http-equiv="Page-Enter" Content="revealTrans(duration=x, transition=y)">
      <Meta http-equiv="Page-Exit" Content="revealTrans(duration=x, transition=y)">

       Duration  表示滤镜特效的持续时间(单位:秒)
       Transition 滤镜类型。表示使用哪种特效,取值为0-23。

       0 矩形缩小
       1 矩形扩大
       2 圆形缩小
       3 圆形扩大
       4 下到上刷新
       5 上到下刷新
       6 左到右刷新
       7 右到左刷新
       8 竖百叶窗
       9 横百叶窗
       10 错位横百叶窗
       11 错位竖百叶窗
       12 点扩散
       13 左右到中间刷新
       14 中间到左右刷新
       15 中间到上下
       16 上下到中间
       17 右下到左上
       18 右上到左下
       19 左上到右下
       20 左下到右上
       21 横条
       22 竖条
       23 以上22种随机选择一种

  9、MSThemeCompatible (XP主题)
   说明:是否在IE中关闭 xp 的主题
   用法:<Meta http-equiv="MSThemeCompatible" Content="Yes">
   注意:关闭 xp 的蓝色立体按钮系统显示样式,从而和win2k 很象。

  10、IE6 (页面生成器)
   说明:页面生成器generator,是ie6
   用法:<Meta http-equiv="IE6" Content="Generator">
   注意:用什么东西做的,类似商品出厂厂商。

  11、Content-Script-Type (脚本相关)
   说明:这是近来W3C的规范,指明页面中脚本的类型。
   用法:<Meta http-equiv="Content-Script-Type" Content="text/javascript">
   注意:

  ★NAME变量

  name是描述网页的,对应于Content(网页内容),以便于搜索引擎机器人查找、分类(目前几乎所有的搜索引擎都使用网上机器人自动查找meta值来给网页分类)。
  name的value值(name="")指定所提供信息的类型。有些值是已经定义好的。例如description(说明)、keyword(关键字)、refresh(刷新)等。还可以指定其他任意值,如:creationdate(创建日期) 、
document ID(文档编号)和level(等级)等。
  name的content指定实际内容。如:如果指定level(等级)为value(值),则Content可能是beginner(初级)、intermediate(中级)、advanced(高级)。


  1、Keywords (关键字)
   说明:为搜索引擎提供的关键字列表
   用法:<Meta name="Keywords" Content="关键词1,关键词2,关键词3,关键词4,……">
   注意:各关键词间用英文逗号“,”隔开。META的通常用处是指定搜索引擎用来提高搜索质量的关键词。当数个META元素提供文档语言从属信息时,搜索引擎会使用lang特性来过滤并通过用户的语言优先参照来显示搜索结果。例如:
      <Meta name="Kyewords" Lang="EN" Content="vacation,greece,sunshine">
      <Meta name="Kyewords" Lang="FR" Content="vacances,grè:ce,soleil">

  2、Description (简介)
   说明:Description用来告诉搜索引擎你的网站主要内容。
   用法:<Meta name="Description" Content="你网页的简述">
   注意:

  3、Robots (机器人向导)
   说明:Robots用来告诉搜索机器人哪些页面需要索引,哪些页面不需要索引。Content的参数有all、none、index、noindex、follow、nofollow。默认是all。
   用法:<Meta name="Robots" Content="All|None|Index|Noindex|Follow|Nofollow">
   注意:许多搜索引擎都通过放出robot/spider搜索来登录网站,这些robot/spider就要用到meta元素的一些特性来决定怎样登录。

    all:文件将被检索,且页面上的链接可以被查询;
    none:文件将不被检索,且页面上的链接不可以被查询;(和 "noindex, no follow" 起相同作用)
    index:文件将被检索;(让robot/spider登录)
    follow:页面上的链接可以被查询;
    noindex:文件将不被检索,但页面上的链接可以被查询;(不让robot/spider登录)
   nofollow:文件将不被检索,页面上的链接可以被查询。(不让robot/spider顺着此页的连接往下探找)

  4、Author (作者)
   说明:标注网页的作者或制作组
   用法:<Meta name="Author" Content="张三,abc@sina.com">
   注意:Content可以是:你或你的制作组的名字,或Email

  5、Copyright (版权)
   说明:标注版权
   用法:<Meta name="Copyright" Content="本页版权归Zerospace所有。All Rights Reserved">
   注意:

  6、Generator (编辑器)
   说明:编辑器的说明
   用法:<Meta name="Generator" Content="PCDATA|FrontPage|">
   注意:Content="你所用编辑器"

  7、revisit-after (重访)
   说明:
   用法:<META name="revisit-after" CONTENT="7 days" >
   注意:

  ★Head中的其它一些用法


  1、scheme (方案)
   说明:scheme can be used when name is used to specify how the value of content should
      be interpreted.
   用法:<meta scheme="ISBN" name="identifier" content="0-14-043205-1" />
   注意:

  2、Link (链接)
   说明:链接到文件
   用法:<Link href="soim.ico" rel="Shortcut Icon">
   注意:很多网站如果你把她保存在收件夹中后,会发现它连带着一个小图标,如果再次点击进入之后还会发现地址栏中也有个小图标。现在只要在你的页头加上这段话,就能轻松实现这一功能。<LINK> 用来将目前文件与其它 URL 作连结,但不会有连结按钮,用於 <HEAD> 标记间, 格式如下:
       <link href="URL" rel="relationship">
       <link href="URL" rev="relationship">

  3、Base (基链接)
   说明:插入网页基链接属性
   用法:<Base href="http://www.xia8.net/" target="_blank">
   注意:你网页上的所有相对路径在链接时都将在前面加上“http://www.cn8cn.com/”。其中target="_blank"是链接文件在新的窗口中打开,你可以做其他设置。将“_blank”改为“_parent”是链接文件将在当前窗口的父级窗口中打开;改为“_self”链接文件在当前窗口(帧)中打开;改为“_top”链接文件全屏显示。


  以上是META标签的一些基本用法,其中最重要的就是:Keywords和Description的设定。为什么呢?道理很简单,这两个语句可以让搜索引擎能准确的发现你,吸引更多的人访问你的站点!根据现在流行搜索引擎(Google,Lycos,AltaVista等)的工作原理,搜索引擎先派机器人自动在WWW上搜索,当发现新的网站时,便于检索页面中的Keywords和Description,并将其加入到自己的数据库,然后再根据关键词的密度将网站排序。

  由此看来,我们必须记住添加Keywords和Description的META标签,并尽可能写好关键字和简介。否则,
后果就会是:
  
  ● 如果你的页面中根本没有Keywords和Description的META标签,那么机器人是无法将你的站点加入数
    据库,网友也就不可能搜索到你的站点。

  ● 如果你的关键字选的不好,关键字的密度不高,被排列在几十甚至几百万个站点的后面被点击的可
    能性也是非常小的。

  写好Keywords(关键字)要注意以下几点:


  ● 不要用常见词汇。例如www、homepage、net、web等。

  ● 不要用形容词,副词。例如最好的,最大的等。

  ● 不要用笼统的词汇,要尽量精确。例如“爱立信手机”,改用“T28SC”会更好。


  “三人之行,必有我师”,寻找合适关键词的技巧是:到Google、Lycos、Alta等著名搜索引擎,搜索与
你的网站内容相仿的网站,查看排名前十位的网站的META关键字,将它们用在你的网站上,效果可想而知了。

  ★小窍门

  为了提高搜索点击率,这里还有一些“捷径”可以帮得到你:

  ● 为了增加关键词的密度,将关键字隐藏在页面里(将文字颜色定义成与背景颜色一样)。

  ● 在图像的ALT注释语句中加入关键字。如:<IMG SRC="xxx.gif" Alt="Keywords">

  ● 利用HTML的注释语句,在页面代码里加入大量关键字。用法: <!-- 这里插入关键字 -->

 

发布于2004年12月18日 17:32 | 评论数(0) 阅读数(629) 我的文章

PHP编码规范


摘自 www.phpe.net

1. 介绍
1.1. 标准化的重要**
标准化问题在某些方面上让每个人头痛,让人人都觉得大家处于同样的境地。这有助于让这些建议在许多的项目中不断演进,许多公司花费了许多星期逐子字逐句的进行争论。标准化不是特殊的个人风格,它对镜馗牧际峭耆??诺摹?
1.2. 优点
当一个项目尝试着遵守公用的标准时,会有以下好处:
· 程序员可以了解任何代码,弄清程序的状况
· 新人可以很快的适应环境
· 防止新接触php的人出于节省时间的需要,自创一套风格并养成终生的习惯
· 防止新接触php的人一次次的犯同样的错误
· 在一致的环境下,人们可以减少犯错的机会
· 程序员们有了一致的敌人
1.3. 缺点
· 因为标准由一些不懂得php的人所制定,所以标准通常看上去很傻
· 因为标准跟我做的不一样,所以标准通常看上去很傻
· 标准降低了创造力
· 标准在长期互相合作的人群中是没有必要的
· 标准强迫太多的格式
1.4. 讨论
许多项目的经验能得出这样的结论:采用编程标准可以使项目更加顺利地完成。标准是成功的关键么?当然不。但它们可以帮助我们,而且我们需要我们能得到的所有的帮助!老实说,对一个细节标准的大部分争论主要是源自自负思想。对一个合理的标准的很少决定能被说为是缺乏技术**的话,那只是口味的原因罢了。所以,要灵活的控制自负思想,记住,任何项目都取决于团队合作的努力。
1.5. 解释
1.5.1. 标准实施
首先应该在开发小组的内部找出所有的最重要的元素,也许标准对你的状况还不够恰当。它可能已经概括了 重要的问题,也可能还有人对其中的某些问题表示强烈的反对。无论在什么情况下,只要最后顺利的话,人们将成熟的明白到这个标准是合理的,然后其他的程序员们也会发现它的合理**,并觉得带着一些保留去遵循这一标准是值得的。如果没有自愿的合作,可以制定需求:标准一定要经过代码的检验。如果没有检验的话,这个解决方案仅仅是一个建立在不精确的基础上的一大群可笑的人。
1.5.2. 认同观点
1. 这行不通;
2. 也许可行吧,但是它既不实用又无聊;
3. 这是真的,而且我也告诉过你啊;
4. 这个是我先想到的;
5. 本来就应该这样。
如果您带着否定的成见而来看待事物的话,请您保持开放的思想。你仍可以做出它是废话的结论,但是做出结论的方法就是你必须要能够接受不同的思想。请您给自己一点时间去做到它。
1.5.3. 项目的四个阶段
1. 数据库结构
2. 设计
3. 数据层
4. HTML层

更多内容请看评论...

 

发布于2004年11月12日 22:29 | 评论数(1) 阅读数(717) 我的文章

PHP 会话 (Session) 使用入门


作者:深空。来自:http://www.openphp.cn

  对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用。

  由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容。实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全得多。

  对于 Cookie 来说,假设我们要验证用户是否登陆,就必须在 Cookie 中保存用户名和密码(可能是 md5 加密后字符串),并在每次请求页面的时候进行验证。如果用户名和密码存储在数据库,每次都要执行一次数据库查询,给数据库造成多余的负担。因为我们并不能只做一次验证。为什么呢?因为客户端 Cookie 中的信息是有可能被修改的。假如你存储 $admin 变量来表示用户是否登陆,$admin 为 true 的时候表示登陆,为 false 的时候表示未登录,在第一次通过验证后将 $admin 等于 true 存储在 Cookie,下次就不用验证了,这样对么?错了,假如有人伪造一个值为 true 的 $admin 变量那不是就立即取的了管理权限么?非常的不安全。

  而 Session 就不同了,Session 是存储在服务器端的,远程用户没办法修改 Session 文件的内容,因此我们可以单纯存储一个 $admin 变量来判断是否登陆,首次验证通过后设置 $admin 值为 true,以后判断该值是否为 true,假如不是,转入登陆界面,这样就可以减少很多数据库操作了。而且可以减少每次为了验证 Cookie 而传递密码的不安全性了(Session 验证只需要传递一次,假如你没有使用 SSL 安全协议的话)。即使密码进行了 md5 加密,也是很容易被截获的。

  当然使用 Session 还有很多优点,比如控制容易,可以按照用户自定义存储等(存储于数据库)。我这里就不多说了。

  Session 在 php.ini 是否需要设置呢?一般不需要的,因为并不是每个人都有修改 php.ini 的权限,默认 Session 的存放路径是服务器的系统临时文件夹,我们可以自定义存放在自己的文件夹里,这个稍后我会介绍。

更多内容请看评论  

发布于2004年11月12日 15:19 | 评论数(2) 阅读数(977) 我的文章

Windows 环境下的 PHP5 与 Apache 服务器的配置


作者:深空。来自:http://www.openphp.cn

下面文章内容将讲述 Windows2000/XP/2003(不建议在 windows 98 下建立 PHP 环境) 下 PHP 环境的配置,服务器选择 Apache 2.0.49,数据库选择 MySQL 4.0.20 版本。

需要下载几个软件包:
  1. PHP5 RC3
  2. Apache 2.0.49
  3. MySQL 4.0.20

下载软件包:
  1. PHP5 RC3
  PHP 的下载地址为: http://www.php.net/downloads.php ,找到如下图位置,下载方框中的两个软件包。其中 PHP 5.0.0RC3 zip package 就是 PHP5 软件包,而 Collection of PECL modules for PHP 5.0.0RC3 则是 PHP5 的 PECL 扩展模块集合包。

  下载完成后放于 C 盘备用。
  2. Apache 2.0.49
  Apache 官方下载地址为: http://httpd.apache.org/download.cgi ,找到如下图位置,下载 For Windows 的 MSI 安装包,保存于 C 盘备用。

  3. MySQL 4.0.20
  MySQL 官方下载地址为: http://dev.mysql.com/downloads/mysql/4.0.html ,找到 Windows downloads 部分,下载 Without installer 包并保存于 C 盘,如下图所示:

安装 PHP5:
  假设你的系统安装于 C 盘,否则下列目录均须改成相应的盘的目录。
  将下载来的 PHP5 RC3(php-5.0.0RC3-Win32.zip) 解压缩到 C:\PHP5\ 目录下。将 PECL 扩展模块集合包里的所有文件解压缩到 C:\PHP5\ext\ 目录下。
  复制 C:\PHP5\ 目录下的 php5ts.dll 文件到 C:\windows\(如果是 windows 2000 操作系统,则为 C:\WINNT\ 目录,下同,不再重复说明) 目录下。
  复制 C:\PHP5\ 目录下的下列 dll 文件于 C:\windows\system32\ 目录下:

CODE
  1.   fdftk.dll
  2.   fribidi.dll
  3.   gds32.dll
  4.   libeay32.dll
  5.   libintl-1.dll
  6.   libmhash.dll
  7.   libmysql.dll
  8.   libmysqli.dll
  9.   ntwdblib.dll
  10.   ntwdblib.dll
  11.   yaz.dll


  其中 libmysql.dll 为 MySQL 4.1 之前版本的扩展支持,libmysqli.dll 为 MySQL 4.1 之后版本的扩展支持。因为我上面下载的是 MySQL 4.0.20 ,所以其实复制 libmysql.dll 即可。
  复制 C:\PHP5\ 目录下的 php.ini-dist 文件到 C:\windows\ 目录下,并改名为 php.ini ,并用记事本打开编辑:
  定位到下面两行:

CODE
  1. ; Directory in which the loadable extensions (modules) reside.
  2. extension_dir = "./"


  修改下面一行使它指向 C:\PHP5\ext\ 目录,修改后如下:

CODE
  1. ; Directory in which the loadable extensions (modules) reside.
  2. extension_dir = "C:\PHP5\ext\"


  定位到下面两行:

CODE
  1. ;Windows Extensions
  2. ;Note that ODBC support is built in, so no dll is needed for it.


  可以看到下面列出了所有可支持扩展,我们可以去掉前面的分号来使 PHP 支持相应的扩展。我测试了下,支持下列扩展,也可以根据选择是否配置。

CODE
  1. extension=php_bz2.dll
  2. extension=php_cpdf.dll
  3. extension=php_curl.dll
  4. extension=php_dba.dll
  5. ;extension=php_dbase.dll
  6. extension=php_dbx.dll
  7. ;extension=php_exif.dll
  8. extension=php_fdf.dll
  9. extension=php_filepro.dll
  10. extension=php_gd2.dll
  11. extension=php_gettext.dll
  12. ;extension=php_iconv.dll
  13. ;extension=php_ifx.dll
  14. extension=php_iisfunc.dll
  15. extension=php_imap.dll
  16. ;extension=php_interbase.dll
  17. extension=php_ldap.dll
  18. extension=php_mbstring.dll
  19. ;extension=php_mcrypt.dll
  20. extension=php_mhash.dll
  21. extension=php_mime_magic.dll
  22. extension=php_ming.dll
  23. ;extension=php_mssql.dll
  24. ;extension=php_msql.dll
  25. extension=php_mysql.dll
  26. ;extension=php_oci8.dll
  27. extension=php_openssl.dll
  28. ;extension=php_oracle.dll
  29. extension=php_pdf.dll
  30. ;extension=php_pgsql.dll
  31. extension=php_shmop.dll
  32. extension=php_snmp.dll
  33. extension=php_sockets.dll
  34. ;extension=php_sybase_ct.dll
  35. extension=php_tidy.dll
  36. ;extension=php_w32api.dll
  37. extension=php_xmlrpc.dll
  38. extension=php_xsl.dll
  39. ;extension=php_yaz.dll
  40. extension=php_zip.dll


  保存文件退出并退出。

安装 Apache 2.0.49

  准备好下载下来的 apache_2.x.x-win32-x86-no_ssl.msi 。双击后开始安装。一步 Next 下来,同意许可协议后会有填写服务器信息的页面,本地调试,前面两个输入 localhost 即可。如下:

  一路 Next 下来,均按照默认路径安装――当然你也可以选择你自己需要的路径。Apache 会自动安装并启动相关服务。并在任务栏右下角运行着一个 Apache 监控器:

  我们可以从这个监控器来重起、停止、启动 Apache 服务。双击小图标打开控制界面:

  接下来对 Apache 的配置文件进行配置,用记事本打开 C:\Program Files\Apache Group\Apache2\conf\ (我这里是按照默认安装路径安装,后面的设置按照自己的安装路径做相应的改变) 目录下的 httpd.conf 文件,定位到下面这行:

CODE
  1. DirectoryIndex index.html index.html.var


  在其后面添加一个 PHP 默认页,通常是 index.php ,如下:

CODE
  1. DirectoryIndex index.html index.html.var index.php


  为了使 Apache 识别 PHP 的相关扩展名,搜索并定位到下面这个部分:

CODE
  1. <Directory "C:/Program Files/Apache Group/Apache2/cgi-bin">
  2.    AllowOverride None
  3.    Options None
  4.    Order allow,deny
  5.    Allow from all
  6. </Directory>


在后面添加如下两行:

CODE
  1. AddType application/x-httpd-php .php .phtml .php3 .php4
  2. AddType application/x-httpd-php-source .phps


  指定 php 模块,找到并定位到如下这行:

CODE
  1. #LoadModule ssl_module modules/mod_ssl.so


  在下面添加一行:

CODE
  1. LoadModule php5_module c:\php5\php5apache2.dll


  使它指向 PHP5 目录下的 php5apache2.dll 文件,路径一定要准确。
  为了指定 Apache 识别中文,我们指定 GB2312 为默认编码。应该找到并定位到下面这行

CODE
  1. AddDefaultCharset ISO-8859-1


  将其修改为:

CODE
  1. AddDefaultCharset GB2312


  另外,如果要禁止目录浏览,查找并定位到下面这几行:

CODE
  1. #……
  2. #一些注释
  3. #……
  4. Options Indexes FollowSymLinks


去掉几行注释下面进跟着的一行的 Indexes 即可,修改后:

CODE
  1. #……
  2. #一些注释
  3. #……
  4. Options FollowSymLinks


  OK,保存 httpd.conf 文件后重起 Apache 服务器。

MySQL 4.0.20 的安装

将 mysql-4.0.20-win-noinstall.zip 文件夹压缩到 C 盘根目录下(注意:使用该版本 MySQL 必须将解压缩后文件夹放于 C 盘根目录下),解压缩后可以在 C 盘根目录下找到名为 mysql-x.x.x 的文件夹。将其改名为 mysql 。
  进入 bin 目录,找到 winmysqladmin.exe 文件,打开它。第一次运行会提示输入一个新的用户名和密码。这里可以随意选择你需要的用户名和密码输入,作为 my.ini 的默认用户名和密码。如下图:

  点击 OK 确定后,WinMySQLadmin 将缩小到右下角的任务栏里:

  我们来看看 MySQL 服务是否启动。打开“控制面板”,进入后打开“管理工具”,再打开“服务”。如果一切顺利的话我们会看到 MySQL 已启动的信息,如下图:

  到这里 MySQL 的安装告一段落,非常简单。

测试 PHP 是否配置成功:

  打开记事本,输入如下这行代码:

CODE

<? phpinfo(); ?>


保存为 phpinfo.php 文件,存放于 Apache2\htdocs\ 目录下,记得保存的时候选择保存类型为“所有文件”,如下图:

好了,打开浏览器,在地址栏中输入: http://localhost/phpinfo.php 并回车,如果一切顺利的话你将看到下面这个页面,到此 PHP5 的配置大功告成:

  注:本文未从安全性和性能上来讨论服务器的配置,相应的安全配置请参考其他手册,本文仅简单介绍了 PHP5 环境的配置,作为学习 PHP5 的前提,本文并不能作为服务器配置文章来阅读,比如,这里没有设置 MySQL 的 root 用户密码,将导致很大的安全隐患,所以请读者自行设置。

发布于2004年11月12日 11:29 | 评论数(0) 阅读数(775) 我的文章

提问的智慧


How To Ask Questions The Smart Way
提问的智慧


目录

1.  简介
2.  提问之前
3.  怎样提问
4.  谨慎选择论坛
5.  尽量使用邮件列表
6.  用辞贴切,语法正确,拼写无误
7.  用易读格式发送问题
8.  使用含义丰富,描述准确的标题
9.  精确描述,信息量大
10.话不在多
11.只说症状,不说猜想
12.按时间顺序列出症状
13.别要求私下答复
14.明白你想问什么
15.别问应该自己解决的问题
16.去除无意义的疑问
17.谦逊绝没有害处,而且常帮大忙
18.问题解决后,加个简短说明
19.如何理解答案
20.RTFM和STFW:别烦我啦
21.还是不懂:(
22.面对无礼
23.决不要象个失败者
24.三思而后问
25.好问题,坏问题
26.找不到答案怎么办


====
简介
====

在黑客世界里,当提出一个技术问题时,你能得到怎样的回答?这取决于挖出答案的难
度,同样取决于你提问的方法。本指南旨在帮助你提高发问技巧,以获取你最想要的答
案。

首先你必须明白,黑客们只偏爱艰巨的任务,或者能激发他们思维的好问题。如若不然,
我们还来干吗?如果你有值得我们反复咀嚼玩味的好问题,我们自会对你感激不尽。好问
题是激励,是厚礼,可以提高我们的理解力,而且通常会暴露我们以前从没意识到或者思
考过的问题。对黑客而言,“问得好!”是发自内心的大力称赞。

尽管黑客们有蔑视简单问题和不友善的坏名声,有时看起来似乎我们对新手,对知识贫乏
者怀有敌意,但其实不是那样的。

我们不想掩饰对这样一些人的蔑视--他们不愿思考,或者在发问前不去完成他们应该做的
事。这种人只会谋杀时间--他们只愿索取,从不付出,无端消耗我们的时间,而我们本可
以把时间用在更有趣的问题或者更值得回答的人身上。我们称这样的人为“失败者”(由
于历史原因,我们有时把它拼作“lusers”)。

我们也知道,很多人只想使用我们编写的软件,对技术细节没什么兴趣。对多数人们而
言,计算机不过是一个工具,一种达到目的的手段;他们有更重要的事情要做,有更重要
的生活要过。我们明白这点,也并不奢望每个人都对另我们痴狂的技术问题有兴致。然
而,我们回答问题的风格是针对这样一群人--他们有兴趣,并且愿意积极参与问题的解
决。这点不会改变,也不应该改变;如果变了,我们将失去我们引以为傲的效率。

我们在很大程度上属于志愿者,从繁忙的生活中抽出时间来解惑答疑,而且时常被提问淹
没。所以我们无情的滤掉一些话题,特别是抛弃那些看起来象失败者的家伙,以便更高效
的利用时间来回答胜利者的问题。

如果你觉得我们过于傲慢的态度让你不爽,让你委屈,不妨设身处地想想。我们并没有要
求你向我们屈服--事实上,我们中的大多数人最喜欢公平交易不过了,只要你付出小小努
力来满足最起码的要求,我们就会欢迎你加入到我们的文化中来。但让我们帮助那些不愿
意帮助自己的人是没有意义的。如果你不能接受这种“歧视”,我们建议你花点钱找家商
业公司签个技术支持协议得了,别向黑客乞求帮助。

如果你决定向我们求助,当然不希望被视为失败者,更不愿成为失败者中的一员。立刻得
到有效答案的最好方法,就是象胜利者那样提问--聪明、自信、有解决问题的思路,只是
偶尔在特定的问题上需要获得一点帮助。

(欢迎对本指南提出改进意见。任何建议请E-mail至esr@thyrsus.com,然而请注意,本
文并非网络礼节的通用指南,我通常会拒绝无助于在技术论坛得到有用答案的建议。)
(当然,如果你写中文,最好还是寄到DHGrand@hotmail.com;-)

========
提问之前
========

在通过电邮、新闻组或者聊天室提出技术问题前,检查你有没有做到:
1. 通读手册,试着自己找答案。
2. 在FAQ里找答案(一份维护得好的FAQ可以包罗万象:)。
3. 在网上搜索(个人推荐google~)。
4. 向你身边精于此道的朋友打听。


当你提出问题的时候,首先要说明在此之前你干了些什么;这将有助于树立你的形象:你
不是一个妄图不劳而获的乞讨者,不愿浪费别人的时间。能说明你从这些操作中学到了什
么就更好了。如果提问者能从答案中学到东西,我们更乐于回答他的问题。

周全的思考,准备好你的问题,草率的发问只能得到草率的回答,或者根本得不到任何答
案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。

小心别问错了问题。如果你的问题基于错误的假设,普通黑客(J. Random Hacker)通
常会用无意义的字面解释来答复你,心里想着“蠢问题...”,希望着你会从问题的回答
(而非你想得到的答案)中汲取教训。

决不要自以为够资格得到答案,你没这种资格。毕竟你没有为这种服务支付任何报酬。你
要自己去“挣”回一个答案,靠提出一个有内涵的,有趣的,有思维激励作用的问题--一
个对社区的经验有潜在贡献的问题,而不仅仅是被动的从他人处索要知识--去挣到这个答
案。

另一方面,表明你愿意在找答案的过程中做点什么,是一个非常好的开端。“谁能给点提
示?”、“我这个例子里缺了什么?”以及“我应该检查什么地方?”比“请把确切的过
程贴出来”更容易得到答复。因为你显得只要有人指点正确的方向,你就有完成它的能力
和决心。

========
怎样提问
========

------------
谨慎选择论坛
------------

小心选择提问的场合。如果象下面描述的那样,你很可能被忽略掉或者被看作失败者:
1. 在风马牛不相及的论坛贴出你的问题
2. 在探讨高级技巧的论坛张贴非常初级的问题;反之亦然
3. 在太多的不同新闻组交叉张贴

黑客们通常砍掉问错地方的问题,以保护自己的社区不被大量无关帖子淹没。你不会希望
自己的帖子被这样砍掉吧。

总的说来,问题发到精心挑选的公众论坛,比发到封闭的小圈子更容易得到有用的答案。
这一现象有多种原因,其中之一是公众论坛有更多潜在的问题回答者;另一个原因是公众
论坛有更多的听众。黑客们更愿意让尽量多的人--而非有限的一两个--从回答中受益。

----------------
尽量使用邮件列表
----------------

如果某项目有自己的开发邮件列表,要把问题发到这个邮件列表而不是某个开发者,即使
你很清楚谁最能回答你的问题。仔细查看项目文档和项目主页,找到这个项目的邮件列表
地址,这样做的理由有四:
1. 任何值得问某位开发者的好问题,都值得向整个开发团体提出。反之,若你认为这个
问题不值得在邮件列表中提起,就没有理由用它来骚扰任何一位开发者。
2. 在邮件列表提问可以分担开发者的工作量。某位开发者(尤其当他是项目负责人的情
况下),可能忙得没时间回答你的问题。
3. 大多数邮件列表都有历史存档,而且都能在搜索引擎中检索到。人们可以从中找到你
的问题和答案,不用一遍又一遍在列表中发问。
4. 如果某个问题经常被提出,开发者可以据此改进文档或改进软件,以减少用户的困
惑。而如果问题总在私下提出,就不会有人对此有整体上的把握了。

如果你找不到项目的邮件列表地址,只能看到项目维护者的,那就写给维护者吧。在这种
情况下,也别以为邮件列表并不存在。在你的信中写明你已尽力寻找,仍无法找到邮件列
表。另外表明你不介意将此消息转给他人。(大多数人认为私信就应该是私下的,即使并
没有什么可保密的内容。允许你的消息被转寄给他人,给了收信者一种处理你邮件的选
择。)


----------------------------
用辞贴切,语法正确,拼写无误
----------------------------

我们从经验中发现,粗心的写作者通常也是马虎的思考者(我敢打包票)。回答粗心大意
者的问题很不值得,我们宁愿把时间耗在别处。

因此,明确充分表述你的问题非常重要。如果你嫌这样做麻烦,我们也会懒得搭理你。注
意推敲你的用辞,不一定要用呆板正式的语言--事实上,黑客文化的价值观是不拘小节。
准确的运用俚语和富有幽默感的语言,但别乱用;一定要能表明你在思考,在关注。


正确的拼写,标点符号和大小写很重要。别把“its”和“it's”或者“loose”和
“lose”搞混淆了。别用全部大写的形式,这被视为粗鲁的大声叫嚷(全都用小写也好不
到哪儿去,因为这会给阅读带来困难。Alan Cox可以用全部小写,但你不行)。


更一般的说,如果你的提问写得象个半文盲,你很有可能被忽视。如果写得象一个窥客
(破解爱好者)或者灰客(只会用现成工具的捣乱者)绝对是自己找死,保证你除了无情
的抵制什么也得不到(或者,最好的结局是得到一大堆挖苦嘲笑的“帮助”)。

如果你在使用非母语的论坛提问,你可以犯点拼写和语法上的小错--但决不能在思考上马
虎(没错,我们能弄清两者的分别)。另外,除非你确切知道你的回答者会使用什么语
言,否则请用英文。匆匆忙忙的黑客往往简单的跳过他们看不懂的问题,而英文是网络上
的工作语言。用英文可以降低你的问题未被阅读即遭抛弃的风险。

------------------
用易读格式发送问题
------------------

如果人为造成你的提问难以阅读和理解,将会更容易被人忽略。因此你要:
1. 使用纯文本邮件,不要使用HTML(关掉HTML并不难)。
2. 通常可以附加MIME附件,但一定要有真正的内容(例如附加的源文件或者补丁),而
不仅仅是你的邮件客户端产生的文件模板(例如你邮件的一份拷贝)。
3. 不要把所有问题放在不停换行的一整段中。(这将让答复的人难于回答其中一部分问
题,即使能回答所有问题,我也更希望条理清楚的一个一个来:)。很可能收件人只能在
80个字符宽度的文本显示器上读信,因此要相应的把行环绕模式设在80字符以内。
4. 不要在英文论坛使用MIME Quoted-Printable编码发送;这种编码格式对ASCII码不
能表达的语言来说是非常必要的,但很多邮件代理不支持它,这时,满篇的“=20”符号
把文字分割开,既难看,又分散注意力。

5. 永远不要指望黑客会乐于阅读封闭所有权的文件格式,例如萎软的Word格式。多数黑
客对此的反应就象你在门口的阶梯上堆满热烘烘的猪粪(意即谁也不会踏进你的门--译者
注)。

6. 如果你通过一台安装Windows的电脑发送邮件,关闭萎软愚蠢的“智能引用”功能。这
能使你免于在邮件中夹带垃圾字符。

----------------------------
使用含义丰富,描述准确的标题
----------------------------

在邮件列表或者新闻组中,大约50字以内的主题标题是抓住资深专家注意力的黄金时机。
别用喋喋不休的“帮帮忙”(更别说“救命啊!!!!!”这样让人反感的话)来浪费这
个机会。不要妄想用你的痛苦程度来打动我们,别用空格代替问题的描述,哪怕是极其简
短的描述。

蠢问题:
救命啊!我的膝上机不能正常显示了!

聪明问题:
XFree86 4.1下鼠标光标变形,Fooware MV1005的显示芯片。

如果你在回复中提出问题,记得要修改内容标题,表明里面有一个问题。一个看起来象
“Re:测试”或者“Re:新bug”的问题很难引起足够重视。另外,引用并删减前文的内
容,给新来的读者留下线索。

------------------
精确描述,信息量大
------------------

1. 谨慎明确的描述症状。
2. 提供问题发生的环境(机器配置、操作系统、应用程序以及别的什么)。
3. 说明你在提问前是怎样去研究和理解这个问题的。
4. 说明你在提问前采取了什么步骤去解决它。
5. 罗列最近做过什么可能有影响的硬件、软件变更。

尽量想象一个黑客会怎样反问你,在提问的时候预先给他答案。

Simon Tatham写过一篇名为《如何有效的报告Bug》的出色短文。强力推荐你也读一读。


--------
话不在多
--------

你需要提供精确有效的信息。这并不是要求你简单的把成吨的出错代码或者数据完全转储
摘录到你的提问中。如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。

这样做的用处至少有三点。第一,表现出你为简化问题付出了努力,这可以使你得到回答
的机会增加;第二,简化问题使你得到有用答案的机会增加;第三,在提炼你的bug报告
的过程中,也许你自己就能找出问题所在或作出更正。

------------------
只说症状,不说猜想
------------------

告诉黑客们你认为问题是怎样引起的没什么帮助。(如果你的推断如此有效,还用向别人
求助吗?),因此要确信你原原本本告诉了他们问题的症状,不要加进你自己的理解和推
论。让黑客们来诊断吧。

蠢问题:
我在内核编译中一次又一次遇到SIG11错误,我怀疑某条飞线搭在主板的走线上了,这种
情况应该怎样检查最好?

聪明问题:
我自制的一套K6/233系统,主板是FIC-PA2007 (VIA Apollo VP2芯片组),256MB
Corsair PC133 SDRAM,在内核编译中频频产生SIG11错误,从开机20分钟以后就有这种
情况,开机前20分钟内从没发生过。重启也没有用,但是关机一晚上就又能工作20分钟。
所有内存都换过了,没有效果。相关部分的典型编译记录如下...。

------------------
按时间顺序列出症状
------------------

对找出问题最有帮助的线索,往往就是问题发生前的一系列操作,因此,你的说明应该包
含操作步骤,以及电脑的反应,直到问题产生。在命令行操作的情况下,保存一个操作记
录(例如使用脚本工具),并且引用相关的大约20条命令会大有帮助。

如果崩溃的程序有诊断选项(例如用-v转到详尽模式),试着仔细考虑选择选项以在操作
记录中增加有用的调试信息。

如果你的说明很长(超过四个段落),在开头简述问题会有所帮助,接下来按时间顺序详
述。这样黑客们就知道该在你的说明中找什么。

--------------
别要求私下答复
--------------

黑客们认为解决问题应该有公开、透明的流程。只要任何更有见地的人注意到答案的不完
善或者不正确,这个最初的答案就可以和应该得到纠正。同时,通过能力和知识被大家注
意,被大家接受,回答问题者得到了应有的奖励。

如果你要求对方私下回答你,这既破坏了整个流程,也破坏了奖励制度。别提这要求,这
是回答者的权利,由他来选择是否私下答复--如果他选择这样做,通常是因为他认为这个
答案过于显而易见或者有不良的公开影响,别人不会感兴趣。

只有一种有限的例外:如果你预计将收到大量雷同的答复,你可以说:“把答案寄给我,
由我来汇总吧。”将邮件列表或者新闻组从大量重复的帖子中打救出来是很有君子之风的
--但请记住,履行自己关于汇总的承诺。

--------------
明白你想问什么

--------------

漫无边际的提问近乎无休无止的时间黑洞。最能给你有用答案的人也正是最忙的人(他们
忙是因为要亲自完成大部分工作)。这样的人对无节制的时间黑洞不太感冒,因此也可以
说他们对漫无边际的提问不大感冒。

如果你明确表述需要回答者做什么(提供建议,发送一段代码,检查你的补丁或是别
的),就最有可能得到有用的答案。这会定出一个时间和精力的上限,便于回答者集中精
力来帮你,这很凑效。

要理解专家们生活的世界,要把专业技能想象为充裕的资源,而回复的时间则是贫乏的资
源。解决你的问题需要的时间越少,越能从忙碌的专家口中掏出答案。

因此,优化问题的结构,尽量减少专家们解决它所需要的时间,会有很大的帮助--这通常
和简化问题有所区别。因此,问“我想更好的理解X,能给点提示吗?”通常比问“你能
解释一下X吗?”更好。如果你的代码不能工作,问问它有什么地方不对,比要求别人替
你修改要明智得多。


------------------------
别问应该自己解决的问题
------------------------

黑客们总是善于分辨哪些问题应该由你自己解决;因为我们中的大多数都曾自己解决这类
问题。同样,这些问题得由你来搞定,你会从中学到东西。你可以要求给点提示,但别要
求得到完整的解决方案。

----------------
去除无意义的疑问
----------------

别用无意义的话结束提问,例如“有人能帮我吗?”或者“有答案吗?”。首先:如果你
对问题的描述不很合适,这样问更是画蛇添足。其次:由于这样问是画蛇添足,黑客们会
很厌烦你--而且通常会用逻辑上正确的回答来表示他们的蔑视,例如:“没错,有人能帮
你”或者“不,没答案”。

----------------------------
谦逊绝没有害处,而且常帮大忙
----------------------------

彬彬有礼,多用“请”和“先道个谢了”。让大家都知道你对他们花费时间义务提供帮助
心存感激。

实话实说,虽然这不象合乎语法、清楚准确的描述,避免私有格式等等那么重要(也不能
用来替代它们);黑客一般更喜欢直接了当然而技术上敏锐的bug报告,而不是彬彬有礼
的废话(如果这让你迷惑不解,请记住,我们衡量一个问题价值的标准是:它能让我们学
会多少)。

然而,如果你有很多问题无法解决,礼貌将会增加你得到有用答案的机会。

(我们注意到,自从本指南发布后,从资深黑客处得到的唯一严重缺陷反馈,就是对预先
道谢这一条。一些黑客觉得“先谢了”的言外之意是过后就不会再感谢任何人了。我们的
建议是:都道谢。)

------------------------

问题解决后,加个简短说明
------------------------

问题解决后,向所有帮助过你的人发个说明,让他们知道问题是怎样解决的,并再一次向
他们表示感谢。如果问题在新闻组或者邮件列表中引起了广泛关注,应该在那里贴一个补
充说明。

补充说明不必很长或是很深入;简单的一句“你好,原来是网线出了问题!谢谢大家
--Bill”比什么也不说要强。事实上,除非结论真的很有技术含量,否则简短可爱的小结
比长篇学术论文更好。说明问题是怎样解决的,但大可不必将解决问题的过程复述一遍。


除了表示礼貌和反馈信息以外,这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你
有过帮助的完整解决方案,这可能对他们也很有用。

最后(至少?),这种补充有助于所有提供过帮助的人从中得到满足感。如果你自己不是
老手或者黑客,那就相信我们,这种感觉对于那些你向他们求助的导师或者专家而言,是
非常重要的。问题久拖未决会让人灰心;黑客们渴望看到问题被解决。好人有好报,满足
他们的渴望,你会在下次贴出新问题时尝到甜头。

============
如何理解答案
============

--------------------
RTFM和STFW:别烦我啦
--------------------

有一个古老而神圣的传统:如果你收到“RTFM (Read The Fucking Manual)”的回
复,回答者认为你应该去读TMD手册。当然,基本上他是对的,你应该读一读。

RTFM有一个年轻的亲戚。如果答案是“STFW (Search The Fucking Web)”,回答者
认为你应该到TMD的网上去搜索。基本上,他也是对的,你就去找吧。

通常,用这两句之一回答你的人会给你一份包含你需要内容的手册或者一个网址,而且他
们打这些字的时候正在阅读着。这些答复意味着回答者认为(1). 你需要的信息非常容易
获得;(2). 你自己去搜索这些信息比灌给你能让你学到更多。

别为这个而不爽;依照黑客的标准,他没有对你的要求视而不见,已经能大致能表示对你
的关注。你应该对他祖母般的慈祥表示感谢。

----------
还是不懂:(
----------

如果你不是很理解答案,别立刻要求对方解释。象你以前试着自己解决问题时那样(利用
手册,FAQ,网络,身边的高手),去理解它。如果你真的需要对方解释,记得表现出你
已经学到了点什么。

比方说,如果我回答你:“看来似乎是zEntry被阻塞了;你应该先清除它。”,然后:

一个很糟的后续问题:“zEntry是什么?”

聪明的问法应该是这样:“哦~我看过帮助了:)但是只有-z和-p两个参数中提到了
zEntry:(而且还都没有清楚的解释:<你是指这两个中的哪一个吗?还是我看漏了什么?”


--------
面对无礼
--------

黑客圈子里很多貌似粗鲁的言行并非有意冒犯。更恰当的说,这是直率、不说废话的沟通
方式的产物,这种沟通方式源于人们关注问题的解决--多过让人感受温暖亲情然而却依旧
糊里糊涂--的天性。

如果你觉得受到粗鲁的对待,请保持冷静。如果真有人表现粗野,通常会有列表/新闻组/
论坛的长辈找他谈心,如果没有这样,而你又大发脾气,则很可能对方的言行是黑客社区
行为规范许可内,而你被认为是有过错的。这会不利于你得到信息或者帮助。

另一方面,你偶尔也会无缘无故有粗野的言行和心态。上述现象的另一面是,人们允许狠
狠打击真正的冒犯者,用尖刻的言语剖析他们的不当言行。如果你真决定这样做,先仔细
又仔细的掂量一下你自己的分量。合理的粗鲁与发动一场无意义的论战之间只隔了一条细
细的线,冒冒失失撞上去的黑客不在少数;如果你是新手或者门外汉,不犯这种错的机会
是很渺茫的。如果你想得到信息而不是来胡闹,别冒险回复,最好把手从键盘上拿开。

(有些人声称多数黑客有孤僻症或者社交障碍综合征的轻度症状,而且确实缺少部分有助
“常人”进行社交行为的脑组织结构。这也许是真的,也许不是。如果你自己不是黑客,
那么,把我们想象成脑部有缺陷的人有助你面对我们的古怪。有话直说,我们无所谓;我
们乐于按自己的想法生活,而且总是对医学概念持相当怀疑的态度。)

在下一节里,我们将谈论另一个话题;当你行差踏错时可能遇到的“无礼”。

================
决不要象个失败者
================

很有可能,你在黑客社区的论坛会受到很多公开的攻击--用本文提到的各种方式或类似的
方法,而且很可能会有各式各样的旁敲侧击来告诉你你有多讨厌。

如果噩梦成真,你能做的最糟的事就是为此发牢骚,抱怨受到人身攻击,要求对方道歉,
尖叫,屏住呼吸,威胁要控诉对方,向他老板告状,不掀起马桶座圈,等等等等。然而,
你应该这样:

由它去吧,这没什么大不了的。实际上这么做是恰当的和有益的(主要是有利身心健
康:)。

社区的规范不靠社区,而是靠积极推行它们的人们来维护,这种维护是公开的,显而易见
的。别抱怨说一切批评都应该通过私信传送,它本来就不该那样。当别人指出你的话有错
误,或者他有不同观点的时候,坚持认为他在羞辱你是没有用的。这些都是失败者的态
度。

有那么一些黑客论坛,出于对高度自谦的误解,禁止参与者张贴专给人找茬的帖子,而且
被告知“如果不愿帮助用户,那就闭嘴。”,他们认为,引开参与者的话题,只会使得他
们陶醉在毫无意义的喋喋不休中,从而失去了技术论坛的意义。

夸张的“友善”(以那种方式)还是有用的帮助:你自己选择吧。

记住:当黑客说你很烦人,(无论用多么粗暴的语言)警告你别再那样做了,他的本意并
非是针对(1)你,以及(2)他的社区。他本来可以轻易的忽略你,把你从他的视线中抹去。
如果你无法接受要向他表示感激,至少应该表现出你的气度,别抱怨,别期望只因为你是
新人,你有戏剧般的敏感脆弱的神经和自封的权利,而受到易碎玩偶般的特别对待。

==========
三思而后问
==========

以下是几个经典蠢问题,以及黑客在拒绝回答时的心中所想:

问题:我能在哪找到X程序?
问题:我的程序/配置/SQL申明没有用
问题:我的Windows有问题,你能帮我吗?
问题:我在安装Linux(或者X)时有问题,你能帮我吗?
问题:我怎么才能破解root帐号/窃取OP特权/读别人的邮件呢?

提问:我能在哪找到X程序?
回答:就在我找到它的地方啊蠢货--搜索引擎的那一头。天呐!还有人不会用Google吗?


提问:我的程序(配置、SQL申明)没有用
回答:这不算是问题吧,我对找出你的真正问题没兴趣--如果要我问你二十个问题才找得
出来的话--我有更有意思的事要做呢。在看到这类问题的时候,我的反应通常不外如下三
种:
1. 你还有什么要补充的吗?
2. 真糟糕,希望你能搞定。
3. 这跟我有什么鸟相关?

提问:我的Windows有问题,你能帮我吗?
回答:能啊,扔掉萎软的垃圾,换Linux吧。

提问:我在安装Linux(或者X)时有问题,你能帮我吗?
回答:不能,我只有亲自在你的电脑上动手才能找到毛病。还是去找你当地的Linux用户
组寻求手把手的指导吧(你能在这儿找到用户组的清单)。

提问:我怎么才能破解root帐号/窃取OP特权/读别人的邮件呢?
回答:想要这样做,说明你是个卑鄙小人;想找个黑客帮你,说明你是个白痴!

==============
好问题,坏问题
==============

最后,我举一些例子来说明,怎样聪明的提问;同一个问题的两种问法被放在一起,一种
是愚蠢的,另一种才是明智的。

蠢问题:我可以在哪儿找到关于Foonly Flurbamatic的资料?
这种问法无非想得到“STFW”这样的回答。

聪明问题:我用Google搜索过“Foonly Flurbamatic 2600”,但是没找到有用的结
果。谁知道上哪儿去找对这种设备编程的资料?
这个问题已经STFW过了,看起来他真的遇到了麻烦。

蠢问题:我从FOO项目找来的源码没法编译。它怎么这么烂?
他觉得都是别人的错,这个傲慢自大的家伙:(

聪明问题:FOO项目代码在Nulix 6.2版下无法编译通过。我读过了FAQ,但里面没有提到
跟Nulix有关的问题。这是我编译过程的记录,我有什么做得不对的地方吗?
他讲明了环境,也读过了FAQ,还指明了错误,并且他没有把问题的责任推到别人头上,
这个家伙值得留意。

蠢问题:我的主板有问题了,谁来帮我?
普通黑客对这类问题的回答通常是:“好的,还要帮你拍拍背和换尿布吗?” ,然后按
下删除键。

聪明问题:我在S2464主板上试过了X、Y和Z,但没什么作用,我又试了A、B和C。请注意
当我尝试C时的奇怪现象。显然边带传输中出现了收缩,但结果出人意料。在多处理器主
板上引起边带泄漏的通常原因是什么?谁有好主意接下来我该做些什么测试才能找出问
题?
这个家伙,从另一个角度来看,值得去回答他。他表现出了解决问题的能力,而不是坐等
天上掉答案。

在最后一个问题中,注意“告诉我答案”和“给我启示,指出我还应该做什么诊断工作”
之间微妙而又重要的区别。

事实上,后一个问题源自于2001年8月在Linux内核邮件列表上的一个真实的提问。我
(Eric)就是那个提出问题的人。我在Tyan S2464主板上观察到了这种无法解释的锁定
现象,列表成员们提供了解决那一问题的重要信息。

通过我的提问方法,我给了大家值得玩味的东西;我让人们很容易参与并且被吸引进来。
我显示了自己具备和他们同等的能力,邀请他们与我共同探讨。我告诉他们我所走过的弯
路,以避免他们再浪费时间,这是一种对他人时间价值的尊重。

后来,当我向每个人表示感谢,并且赞赏这套程序(指邮件列表中的讨论--译者注)运作
得非常出色的时候,一个Linux内核邮件列表(lkml)成员表示,问题得到解决并非由于
我是这个列表中的“名人”,而是因为我用了正确的方式来提问。

我们黑客从某种角度来说是拥有丰富知识但缺乏人情味的家伙;我相信他是对的,如果我
象个乞讨者那样提问,不论我是谁,一定会惹恼某些人或者被他们忽视。他建议我记下这
件事,给编写这个指南的人一些指导。

================
找不到答案怎么办
================

如果仍得不到答案,请不要以为我们觉得无法帮助你。有时只是看到你问题的人不知道答
案罢了。没有回应不代表你被忽视,虽然不可否认这种差别很难区分。


总的说来,简单的重复张贴问题是个很糟的想法。这将被视为无意义的喧闹。

你可以通过其它渠道获得帮助,这些渠道通常更适合初学者的需要。

有许多网上的以及本地的用户组,由狂热的软件爱好者(即使他们可能从没亲自写过任何
软件)组成。通常人们组建这样的团体来互相帮助并帮助新手。

另外,你可以向很多商业公司寻求帮助,不论公司大还是小(Red Hat和LinuxCare就是
两个最常见的例子)。别为要付费才能获得帮助而感到沮丧!毕竟,假使你的汽车发动机
汽缸密封圈爆掉了--完全可能如此--你还得把它送到修车铺,并且为维修付费。就算软件
没花费你一分钱,你也不能强求技术支持总是免费的。

对大众化的软件,就象Linux之类而言,每个开发者至少会有上万名用户。根本不可能由
一个人来处理来自上万名用户的求助电话。要知道,即使你要为帮助付费,同你必须购买
同类软件相比,你所付出的也是微不足道的(通常封闭源代码软件的技术支持费用比开放
源代码软件要高得多,而且内容也不那么丰富)。

发布于2004年11月03日 18:03 | 评论数(2) 阅读数(756) 我的文章

PHP开发工具列表


排名不分先后

SCC: Source Code Control

Dev-PHP
网址: http://devphp.sourceforge.net/
评分: ***
简单阐述: 用Delphi开发的Opensource的PHP开发工具,较好的集成了PHP解析器和PHP-GTK库。性能和稳定性都很不错。只是在团队合作上比较薄弱,没有scc和project的feature。但完全让你有理由舍弃掉editplus smile_wink.gif
user posted image

EditPlus
网址: http://www.editplus.com/
评分: ***
简单阐述: 速度快,支持多种语言的语法加亮. 有project概念,但并不好用。无SCC集成。但是个优秀的编辑器。
user posted image

PHPEdit
网址: http://www.phpedit.net/
评分: *****
简单阐述: 一个优秀的IDE. 调试功能丰富,项目管理功能丰富,带有SCC, 项目管理由一个Plugin, 集成有Grep,帮助文档工具..... 推荐PHP开发工具。
user posted image

Zend Studio
网址: http://www.zend.com
简单阐述: 优秀的IDE, 各个功能丰富,Zend的拳头产品。带有CVS集成,项目管理也较为丰富。为商业软件。价格颇高,195美元起。
user posted image 


发布于2004年11月03日 17:58 | 评论数(0) 阅读数(1160) 我的文章

在Windows中安装Apache2和PHP4的权威指南


Apache 2和PHP是创建交互式网站的流行方案,而且成本很低。在Windows中安装Apache 2是一件轻而易举的事情,但要使PHP 4与Apache 2配合无间地运行,就需要一定的技巧。

在PHP 4.3手册的Windows安装小节,没有解释如何让PHP与Apache 2配合使用,而有关Apache 2安装的小节缺失了你需要的大量信息。在网上公布的其他安装指南中,也包含了不少错误,使一些安装人员只好不断试验和犯错。例如,有些人甚至将PHP的DLL替换成其他PHP版本的DLL。OK,为了节省你的宝贵时间,我们准备了这篇最权威的指南文章,帮你扫除一切烦恼。

使用正确版本的Windows

首先要说一说兼容性:Apache 2不能在Windows 95上运行;在Windows 98上勉强能够运行,但不能作为服务使用。从4.3版本开始,PHP也不再支持Windows 95。所以,你的Windows操作系统必须是Windows NT、2000或者XP。

Apache 2:源码还是二进制?
如果你有Visual C++ 5.0或更高的版本,或者安装了Microsoft Visual Studio,那么虽然可以根据源码来生成Apache,但请绝对不要这样做。在Visual Studio IDE中,Windows下的生成过程非常复杂。即使从命令行编译,也绝对不是一件易事。所以,除非你喜欢创建makefile,否则最好获得一份Windows Installer二进制发行包,也就是一个.msi文件。等你对Apache有了足够多的认识,知道自己要进行哪些定制操作时,才可考虑亲手生成(编译)Apache。

如果已经安装好并正在运行老版本的Apache,首先要停止它,卸载它,然后才能开始安装新服务器。多个版本的Apache 2不能共存。

双击Apache 2 .msi文件。同意许可协议后,会出现如图A所示的对话框。

图A

点击查看原图


正确地设置Network Domain和Server Name(如果不打算将Apache安装到远程计算机,那么设置localhost就可以了),在Administrator’s Email Address区域输入你的电子邮件地址,保持端口80/服务选项单选钮的选中状态。在下一个对话框中如果选择Typical安装,可以快速地获得一个能实际工作的服务器环境。


安装提示
建议将默认安装目录从C:\Program Files\Apache Group变成C:\Apache或者符合8.3文件名格式的其他名称。这样一来,以后每次输入Apache安装路径时,都不必为其添加引号。



稍候片刻,安装向导会告诉你Apache 2安装成功。接下来惟一要做的事情就是进行测试,请打开浏览器并访问localhost,这样应该看到默认的Apache 2主页。

然后可以删除主Web服务器目录中的所有示例文件,它们默认位于C:\InstallDirectory\Apache\Apache2\htdocs中。如果有一个现成的主页Index.html,请把它拷贝到这里;另外,也可以马上创建一个空白主页。对于未初始化的HTML,以下代码就可以了:


<html>
<head>title=default server page</head>
<body>Default server page</body>
</html>
 


让Apache 2为PHP做好准备

从现在开始,你需要较多地以人工方式进行安装,不能简单地点击和选择几个选项了事。尽快习惯它吧,这才是Apache的方式。你需要编辑文件来设置不同的配置选项;如果操作不当,你所做的修改就会妨碍Apache的正确加载。如果设置引发错误,那么错误可能被记录到Apache 2错误日志中(默认为C:\InstallDir\Apache2\Logs\Error.log)。但能够像这样进行记录的毕竟是少数,大多数错误只会记录到Windows事件日志中(开始| 设置| 控制面板|  管理工具| 事件查看器)。

令人遗憾的是,在你对安装设置进行调试时,Windows事件日志并不是一个方便的工具。更好的做法是在命令行窗口中测试Apache服务器的加载,这样能立即看到错误报告。所以,在完成了我即将讨论的配置修改后,请打开一个命令行窗口,切换到Apache的binary目录(C:\InstallDir\Apache2\bin),在那里启动Apache。

Apache配置文件是C:\Apache\Apache2\Conf\Httpd.conf,可用任何文本编辑器来编辑。查找DirectoryIndex,定位到下面这一行:
 
DirectoryIndex index.html index.html.var # index.php
 
为了允许Apache处理PHP页,要删除注释字符(#),变成:
 
DirectoryIndex index.html index.html.var index.php
 

还要允许在任何目录中使用.htaccess文件,所以请在配置文件中查找AllowOverride,把这个设置从None改成All。保存了所做的改动后,可继续在文本编辑器中打开该文件,因为等会儿安装PHP时,要再次编辑这个文件。

安装PHP

虽然可以下载PHP的源码,但和Apache 2一样,最好直接使用二进制发行包。Apache 2可采取2种方式来运行PHP程序:通过一个CGI接口来运行(外部调用Php.exe),或者使用PHP的DLL文件在Apache的内部运行。后一种方式的速度较快。所以,针对每个版本的PHP,都会提供2个Windows二进制发行包。较小的是.msi包,它会安装CGI可执行程序Php.exe,但其中拿掉了通过Apache DLL来运行PHP脚本所需的模块。较大的.zip包则包含了所有这些东西,你可以从snaps.php.net网站的Win32区域下载它们。文件下载完毕后,把它解压到C:\Php(保留文件夹名称)。除非你有绝对的把握,请同时下载PHP手册,它有多种语言的版本可供选择。

配置Apache 2来运行PHP4

现在来到了最有趣的部分:将Apache和PHP完美地配合起来。首先,请将C:\Php\Dlls目录中的所有DLL文件拷贝到Windows的System目录(%windir%\System)。接着,在Apache的配置文件(Httpd.conf)中查找包含了大量AddType命令那个小节,自己添加下面这一行:
 
AddType application/x-httpd-php .php
 
将C:\Php\Php.ini-recommended拷贝到Windows目录(%windir%),把它重命名为Php.ini,并用文本编辑器打开它。编辑其中对doc_root、extension_dir和session.save_path进行设置的3行,使其和下面展示的一致,注意要把InstallDir替换成你的Apache 2的安装目录的名称。
 
doc_root = c:\apache\apache2\htdocs
extension_dir = c:\php\extensions
session.save_path = c:/temp

 
在session.save_path中使用正斜杠和反斜杠都是允许的。PHP手册声称这些路径参数需要在最后添加一个反斜杠,但这个说法是不正确的。在PHP 4.3中不需要这样做。另外,如果C:\Temp不存在,请自己创建它。

下一步是允许Apache将PHP程序作为模块来运行,这要求你采取2个步骤。首先,将C:\Php\Php4ts.dll拷贝到Windows的系统文件夹(%windir%\System)。在Httpd.conf中找到LoadModule小节,自己添加下面这一行: 

LoadModule php4_module “c:/php/php4apache2.dll”
 
如果你出于某种原因而需要在CGI模式中运行PHP程序(使用Php.exe),请将上面这一行变成注释,并在Httpd.conf中添加下面这些行:
 
ScriptAlias /php/ "c:/php/"
Action application/x-httpd-php "/php/php.exe"


一切都搞定了吗?

保存所做的更改后,你需要亲自去证明两点,才能确保Apache 2/PHP 4成为一对完美的搭档:Apache能正常加载吗,它能正确处理PHP页吗?

要知道Apache是否能够正常加载,在你已经打开的命令行窗口中输入以下命令:
 
apache –k start
 
另外,如果Apache正在运行,可用以下命令重新启动它:
 
apache –k restart
 
从命令行启动Apache的好处在于,如果出现一个错误,Apache会立即报告它。你可能遇到的最常见的问题在于,Apache可能由于某种原因而无法加载Php4apache2.dll。如果Apache报告了这个错误,请按前面所述的步骤重新操作一遍,确保一切都没有错误。

要知道Apache是否能正确地处理PHP页,请用你的文本编辑器创建一个简单的PHP页,命名为Phptest.php,其中只包含下面这一行:
 
<? phpinfo(); ?>
 
将文件保存到主Web服务器目录(C:\InstallDirectory\Apache\Apache2\Htdocs),用浏览器访问http://localhost/phptest.php。如果一切正常,应该看到一个含有PHP徽标的网页,其中包含大量设置和其他信息。要知道PHP当前是通过CGI来运行,还是在Apache内部运行,可以检查一下环境变量orig_script_name。如果PHP通过CGI来运行,这个变量的值就是/Php/Php.exe。如果Apache将PHP脚本作为模块来运行,该变量的值应该是/Phptest.php。

虽然在Windows上安装Apache 2和PHP并不是一件容易的事情,但也完全没必要采取摸着石头过河的做法。通过本文的说明,你应该可以快速搭建起这个史上最好的、成本最低的Web开发环境。

发布于2004年10月30日 15:46 | 评论数(0) 阅读数(749) 我的文章

    1     页码:1/1


版权所有 © 2010 Ci123.com 育儿博客 向育儿网举报 网络110报警服务