提问的智慧(2)

 更新时间:2016年11月25日 17:16  点击:1190
--------------     

明白你想问什么     

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

漫无边际的提问近乎无休无止的时间黑洞。最能给你有用答案的人也正是最忙的     

人(他们忙是因为要亲自完成大部分工作)。这样的人对无节制的时间黑洞不太     

感冒,因此也可以说他们对漫无边际的提问不大感冒。
    

如果你明确表述需要回答者做什么(提供建议,发送一段代码,检查你的补丁     

或是别的),就最有可能得到有用的答案。这会定出一个时间和精力的上限,     

便于回答者集中精力来帮你,这很凑效。
    

要理解专家们生活的世界,要把专业技能想象为充裕的资源,而回复的时间则     

是贫乏的资源。解决你的问题需要的时间越少,越能从忙碌的专家口中掏出答案。
    

因此,优化问题的结构,尽量减少专家们解决它所需要的时间,会有很     

大的帮助--这通常和简化问题有所区别。因此,问“我想更好的理解X,     

能给点提示吗?”通常比问“你能解释一下X吗?”更好。如果你的代码     

不能工作,问问它有什么地方不对,比要求别人替你修改要明智得多。
    

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

别问应该自己解决的问题     

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

黑客们总是善于分辨哪些问题应该由你自己解决;因为我们中的大多数都     

曾自己解决这类问题。同样,这些问题得由你来搞定,你会从中学到东西。
    

你可以要求给点提示,但别要求得到完整的解决方案。
    

----------------     
Smarty实例教学 实例篇(三、使用ADODB连接数据库)
前两个月因为工作上的原因一直很忙,所以没有及时完成这个教程,正好今天周六不用加班,抽个空完成它吧! 在开始新的的教程的时候,我
先把以前的我写的那个教程中的一些错误的地方修改过来,在这里要感谢 nesta2001zhang兄弟,是他找出了文章中的一些错误,否则真的被别人
骂"误人子弟了"(说来真是惭愧,我的初稿发布后后就发现在一大堆的问题,后来一些时候发重新修改后的文件中居然也出现了错误,真是不应
该...)
在上几篇教程中的:
=========================================================
while($db->next_record() && $i > 0)
{
$array[] = array("NewsID", csubstr($db->f("iNewsID"), 0, 20),
"NewsTitle", csubstr($db->f("vcNewsTitle"), 0, 20));
$i--;
}
=========================================================
应该更改为:
=========================================================
while($db->next_record() && $i > 0)
{
$array[] = array("NewsID" => $db->f("iNewsID"),
"NewsTitle" => csubstr($db->f("vcNewsTitle"), 0, 20));
$i--;
}
=========================================================
为什么这样改呢?因为第二种方法更清晰明了一些,实际上第一种方式所执行的效果与第二种方法没什么差别,而且那几个程序我都曾经调试过,
没有任何问题.
好了,那我们今天就先来说说ADODB.说到ADODB,可能做过ASP的都知道WINDOWS平台的ADO组件,但我们这里的ADODB不是微软的那个数据库操
作组件,而是由php语言写的一套数据库操作类库,先让我们来看看它倒底有什么样的优点.
1. 以标准的SQL语句书写的数据库执行代码在进行数据库移植时不用更改源程序,也就是说它可以支持多种数据库,包括ACCESS.
2. 提供与微软ADODB相似的语法功能.这一点对于从ASP转行到PHP的人们是一大福音,它的很多操作都与WINDOWS中的ADODB相似.
3. 可以生成Smarty循环需要的二维数组,这样会简化smarty开发.这一点是等会我给大家演示.
4. 支持数据库的缓存查询,最大可能的提高查询数据库的速度。
5. 其它的实用功能.
Obtaining PHP
This section has details about PHP download locations, and OS issues. 1. 我在哪儿能得到PHP? 2. 有预编译的二进制版本吗? 3. 我在哪儿能得到可选的PHP扩展库 ? 4. 我怎样做才能使这些库运作起来? 5. 我在我的windows上用CVS得到最新版本的PHP源代码, 我怎样编译它? 6. 我在哪儿能找到 Browser Capabilities File?
1. 我在哪儿能够得到PHP?
你可以在任何PHP成员站点上下载PHP. 这些站点可以在 http://www.php.net/找到。
 你也可以使用匿名CVS 得到绝对是最新版本的源代码。要想知道更多的CVS信息, 请查阅http://cvs.php.net/.
2. 有预编译的二进制代码吗? ?
我们仅仅发布windows下的二进制代码,因为我们不可能编译完每一种主机(Unix/Linux)下的PHP不同选项的二进制代码 还有的是,许多Linux内置PHP。Windows下的二进制代码可以在我们的站点上下载 , 而Linux的二进制版本, 请参阅你的Linux发布商的站点。
3. 我在哪儿能得到可选的PHP扩展库 ?
注意: 那些标有*的不是 thread-safe 库, 不应该作为多线程的Windows web servers (IIS, Netscape)的模块来使用。它们在 Unix/Linux平台下是没有这个限制的。
LDAP (Unix).
LDAP* (Unix).
LDAP (Unix/Win) : Netscape Directory (LDAP) SDK 1.1.
free LDAP server.
Berkeley DB2 (Unix/Win) : http://www.sleepycat.com/.
SNMP* (Unix): .
GD* (Unix/Win).
mSQL* (Win).
mSQL* (Unix).
PostgreSQL (Unix).
IMAP* (Win/Unix).
Sybase-CT* (Linux, libc5) : Available locally.
FreeType (libttf):.
ZLib (Unix/Win32).
expat XML parser (Unix/Win32).
PDFLib.
mcrypt.
mhash.
t1lib.
dmalloc.
aspell.
readline.
4. 我怎样使这些库运作起来?
你需要按着提供的库指引来做. 有一些库是在你运行PHP配置脚本的时候自动被检测到的(GD库), 而另外的一些库,你不得不 '--with-EXTENSION' 打开选项 'cofigure'. 运行 'configure --help' 可以看到这些信息.
5. 我在我的windows上用CVS得到最新版本的PHP源代码, 我怎样编译它?
首先,你必须安装 Microsoft Visual C++ v6 (v5 也可以,但我们是在v6下),你需要一些支持文件. ,参见手册 在Windows下编译PHP.
6. 我在哪可以找到 Browser Capabilities File?
你可以在下面的站点 http://www.cyscape.com/asp/browscap/找到一个名为 browscap.ini 的文件。

PHP 可以操作 Win32 平台下的 COM 和 DCOM 对象 1. 我创建了一个DLL来计算一些东西. 有什么方法可以在 PHP 下运行这个DLL吗 ? 2. 'Unsupported variant type: xxxx (0xxxxx)' 是什么意思 ? 3. PHP 里操作可视化对象可能吗? 4. 我可以把COM 对象存诸到 session 里吗 ? 5. 我怎样捕获 COM 错误 ? 6. 我怎样在 PHP 里生成DLL文件,就象我在 Perl 里做的一样? 7. 'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}' 是什么意思 ? 8. 我怎样从远程服务器运行 COM 对象? 9. 我得到消息: 'DCOM is disabled in C:path...scriptname.php on line 6', 我应该怎么办 ? 10. 在 PHP 页面里可以加载 ActiveX 对象吗 ? 11. 可不可以得到一个COM运行时的实例 ? 12. 有没有办法可以处理从 COM 对象送出的事件 ? 13. 我在调用一个 COM 对象(有多个接口)的方法时出错, . 我应该怎么办? 14. PHP 可以 COM 工作, 那么 COM+ 呢 ? 15. PHP 可以操作 COM 对象, 我们是否可以设想通过 MTS 管理组件资源, 从而管理 PHP ?
1. 我创建了一个DLL来计算一些东西. 有什么方法可以在 PHP 下运行这个DLL吗 ?
你不能在PHP里操作简单的DLL.如果这个DLL包含COM 服务器并实现了 IDispatch 接口,你可以操作它.
2. 'Unsupported variant type: xxxx (0xxxxx)' 是什么意思 ?
有很多 VARIANT 类型和它们的集合. 绝大多数已经被支持,可是还有少数不支持.数组也不完全支持,只有一维数组才被支持. 如果你还发现不支持的数据类型:请送 bug 报告(如果还没有报告) 并且提供尽可能多的信息.
3. PHP 里操作可视化对象可能吗?
通常是可以的.但是 PHP 多是用来作为脚本运行在web 服务器设备下, 而可视化对象从来不会出现在服务器桌面. 如果你使用PHP 作为应用程序脚本如 PHP-GTK ,那么通过 COM 操作可视化对象是没有限制的.
4. 我可以把COM 对象存诸到 session 里吗 ?
不可以. COM 实例被认为是资源.因此它们只能在单一的脚本程序里起作用.
5. 我怎样捕获 COM 错误 ?
当前没有其它工具可以追踪 COM 错误,除了 PHP 自已 (@, track_errors, ..), 我们正在考虑实现它的一种方法.
6. 我可以在 PHP 里生成DLL文件,就象我在 Perl 里做的一样?
不可以.不幸的是没有任何这样的PHP工具.
7. 'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}' 是什么意思 ?
/*
+-------------------------------------------------------------------------------+
| = 本文为Haohappy读<<Core PHP Programming>>
| = 中Classes and Objects一章的笔记
| = 翻译为主+个人心得
| = 为避免可能发生的不必要的麻烦请勿转载,谢谢
| = 欢迎批评指正,希望和所有PHP爱好者共同进步!
+-------------------------------------------------------------------------------+
*/
第十五节--Zend引擎的发展
本章的最后一节,Zeev讨论了Zend引擎带来的对象模型,特别提到它与PHP的前几个版本中的模型有什么不同.
当1997年夏天,我们开发出PHP3, 我们没有计划要使PHP具备面向对象的能力. 当时没有任何与类和对象有关的想法. PHP3是一个纯粹面向过程的语言. 但是,在1997.8.27的晚上PHP3 alpha版中增加了对类的支持. 增加一个新特性给PHP,当时仅需要极少的讨论,因为当时探索PHP的人太少. 于是从1997年八月起, PHP迈出了走向面向对象编程语言的第一步.
确实,这只是第一步. 因为在这个设计中只有极少的相关的想法,对于对象的支持不够强大. 这个版本中使用对象仅是访问数组的一个很酷的方法而已. 取代使用$foo[“bar”],你可以使用看起来更漂亮的$foo->bar. 面向对象方法的主要的优势是通过成员函数或方法来储存功能. 例子6.18中显示了一个典型的代码块. 但是它和例6.19中的做法其实并没有太大不同.
Listing 6.18 PHP 3 object-oriented programming PHP3中的面向对象编程
<?php
class Example
{
var $value = "some value";
function PrintValue()
{
print $this->value;
}
}
$obj = new Example();
$obj->PrintValue();
?>
Listing 6.19 PHP 3 structural programming PHP3 PHP3中的结构化编程
<?php
function PrintValue($arr)
{
print $arr["value"];
}
function CreateExample()
{
$arr["value"] = "some value";
$arr["PrintValue"] = "PrintValue";
return $arr;
}
$arr = CreateExample();
//Use PHP's indirect reference
$arr["PrintValue"]($arr);
?>
以上我们在类中写上两行代码,或者显示地传递数组给函数. 但考虑到PHP3中这两种选择并没有任何不同,我们仍然可以仅把对象模型当成一种”语法上的粉饰”来访问数组.
[!--infotagslink--]

相关文章