庞志辉博客

php爱好者
RSS 图标 Email 图标 首页图标
  • php4与php5类的差别

    发表于 2010年03月11日 admin 没有评论

    PHP5 中的对象已经进行了较系统、较全面的调整,现在的样子可能看起来会有些类似于 Java。本小节着重讲述 PHP5 中新的对象模式,并举了一些较简易的例子来说明。就让本节成为你的 PHP5 之旅的一个新起点吧。:)

    * 构造函数和析构函数
    * 对象的引用
    * 对象的克隆
    * 对象中的私有、公共及受保护模式
    * 接口 (Interfaces)
    * 抽象类
    * __call
    * __set 和 __get
    * 静态成员

    构造函数和析构函数

    在 PHP4 中,当函数与对象同名时,这个函数将成为该对象的构造函数,并且在 PHP4 中没有析构函数的概念。
    在 PHP5 中,构造函数被统一命名为 __construct,并且引入了析构函数的概念,被统一命名为 __destruct。

    例一:构造函数和析构函数

    class foo {
    var $x;
    function __construct($x) {
    $this->x = $x;
    }
    function display() {
    print($this->x);
    }
    function __destruct() {
    print(”bye bye”);
    }
    }
    $o1 = new foo(4);
    $o1->display();
    ?>
    在上面的例子中,当你终止调用 foo 类的时候,其析构函数将会被调用,上例中会输出 “bye bye”。

    对象的引用

    众所周知,在PHP4 中,传递变量给一个函数或方法,实际是把这个变量做了一次复制,也就意味着你传给函数或方法的是这个变量的一个副本,除非你使用了引用符号 “&” 来声明是要做一个引用,而不是一个 Copy。在 PHP5 中,对象总是以引用的形式存在的,对象中的赋值操作同样也都是一个引用操作。

    例二:对象的引用

    class foo {
    var $x;
    function setX($x) {
    $this->x = $x;
    }
    function getX() {
    return $this->x;
    }
    }
    $o1 = new foo;
    $o1->setX(4);
    $o2 = $o1;
    $o1->setX(5);
    if($o1->getX() == $o2->getX()) print(”Oh my god!”);
    ?>

    对象的克隆

    如上所述,当一个对象始终以引用的形式来被调用时,如果我想得到该对象的一个副本,该怎么办呢?PHP5 提供了一个新的功能,就是对象的克隆,语法为 __clone。

    例三:对象的克隆
    class foo {
    var $x;
    function setX($x) {
    $this->x = $x;
    }
    function getX() {
    return $this->x;
    }
    }
    $o1 = new foo;
    $o1->setX(4);
    $o2 = $o1->__clone();
    $o1->setX(5); if($o1->getX() != $o2->getX()) print(”Copies are independant”);
    ?>
    对象克隆的方法在其它很多应用程序语言中都是存在的,所以你不必担心它的稳定性。:)

    对象中的私有、公共及保护模式

    PHP4 中,一个对象的所有方法和变量都是公共的,这意味着你可以在一个对象的外部操作其中的任意一个变量和方法。PHP5 引入了三种新的用来控制这种存取权限的模式,它们是:公共的(Public)、受保护的(Protected)及私有的(Private)。

    公共模式(Public):允许在对象外部进行操作控制。
    私有模式(Private):只允许本对象内的方法对其进行操作控制。
    受保护模式(Protected):允许本对象及其父对象对其进行操作控制。

    例四: 对象中的私有、公共及受保护模式

    class foo {
    private $x;
    public function public_foo() {
    print(”I’m public”);
    }
    protected function protected_foo() {
    $this->private_foo(); //Ok because we are in the same class we can call private methods
    print(”I’m protected”);
    }
    private function private_foo() {
    $this->x = 3;
    print(”I’m private”);
    }
    }
    class foo2 extends foo {
    public function display() {
    $this->protected_foo();
    $this->public_foo();
    // $this->private_foo(); // Invalid! the function is private in the base class
    }
    } $x = new foo();
    $x->public_foo();
    //$x->protected_foo(); //Invalid cannot call protected methods outside the class and derived classes
    //$x->private_foo(); //Invalid private methods can only be used inside the class $x2 = new foo2();
    $x2->display();
    ?>
    提示:对象中的变量总是以私有形式存在的,直接操作一个对象中的变量不是一个好的面向对象编程的习惯,更好的办法是把你想要的变量交给一个对象的方法去处理。

    接口 (Interfaces)

    众所周知,PHP4 中的对象支持继承,要使一个对象成为另一个对象的派生类,你需要使用类似 “class foo extends parent” 的代码来控制。 PHP4 和 PHP5 中,一个对象都仅能继承一次,多重继承是不被支持的。不过,在 PHP5 中产生了一个新的名词:接口,接口是一个没有具体处理代码的特殊对象,它仅仅定义了一些方法的名称及参数,此后的对象就可以方便的使用 ‘implement’ 关键字把需要的接口整合起来,然后再加入具体的执行代码。

    例五:接口

    interface displayable {
    function display();
    }
    interface printable {
    function doprint();
    }

    class foo implements displayable,printable {
    function display() {
    // code
    } function doprint() {
    // code
    }
    }
    ?>
    这对提高代码的可读性及通俗性有很大的帮助,通过上面的例子可以看到,对象 foo 包含了 displayable 和 printable 两个接口,这时我们就可以清楚的知道,对象 foo 一定会有一个 display() 方法和一个 print() 方法,只需要去了解接口部分,你就可以轻易的操作该对象而不必去关心对象的内部是如何运作的。

    抽象类

    抽象类不能被实例化。
    抽象类与其它类一样,允许定义变量及方法。
    抽象类同样可以定义一个抽象的方法,抽象类的方法不会被执行,不过将有可能会在其派生类中执行。

    例六:抽象类

    abstract class foo {
    protected $x;
    abstract function display();
    function setX($x) {
    $this->x = $x;
    }
    }
    class foo2 extends foo {
    function display() {
    // Code
    }
    }
    ?>

    __call

    PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。

    例七:__call

    class foo {
    function __call($name,$arguments) {
    print(”Did you call me? I’m $name!”);
    }
    } $x = new foo();
    $x->doStuff();
    $x->fancy_stuff();
    ?>
    这个特殊的方法可以被用来实现“过载(overloading)”的动作,这样你就可以检查你的参数并且通过调用一个私有的方法来传递参数。

    例八:使用 __call 实现“过载”动作

    class Magic {
    function __call($name,$arguments) {
    if($name==’foo’) {
    if(is_int($arguments[0])) $this->foo_for_int($arguments[0]);
    if(is_string($arguments[0])) $this->foo_for_string($arguments[0]);
    }
    } private function foo_for_int($x) {
    print(”oh an int!”);
    } private function foo_for_string($x) {
    print(”oh a string!”);
    }
    } $x = new Magic();
    $x->foo(3);
    $x->foo(”3″);
    ?>

    __set 和 __get

    这是一个很棒的方法,__set 和 __get 方法可以用来捕获一个对象中不存在的变量和方法。

    例九: __set 和 __get

    class foo {
    function __set($name,$val) {
    print(”Hello, you tried to put $val in $name”);
    }
    function __get($name) {
    print(”Hey you asked for $name”);
    }
    }
    $x = new foo();
    $x->bar = 3;
    print($x->winky_winky);
    ?>

    类型指示

    在 PHP5 中,你可以在对象的方法中指明其参数必须为另一个对象的实例。

    例十:类型指示

    class foo {
    // code …
    }
    class bar {
    public function process_a_foo(foo $foo) {
    // Some code
    }
    }
    $b = new bar();
    $f = new foo();
    $b->process_a_foo($f);
    ?>
    可以看出,我们可以显性的在参数前指明一个对象的名称,PHP5 会识别出这个参数将会要是一个对象实例。

    静态成员

    静态成员和静态方法在面象对象编程的术语中被称作 “对象方法(class methods)” 和 “对象变量(class variables)”。
    “对象方法” 在一个对象没有实例化前允许被调用。同样,“对象变量” 在一个对象没有实例化前可以被独立操作控制(不需要用一个对象的方法来控制)。

    例十一:对象方法和对象变量

    class calculator {
    static public $pi = 3.14151692;
    static public function add($x,$y) {
    return $x + $y;
    }
    }
    $s = calculator::$pi;
    $result = calculator::add(3,7);
    print(”$result”);
    ?>

    异常处理

    异常处理是公认的处理程序错误的理想方法,在 Java 及 C++ 中都有这个概念,我们欣喜的看到,在 PHP5 已经加入了这方面的应用。你可以尝试使用 “try” 和 “catch” 来控制程序的错误。

    例十二:异常处理

    class foo {
    function divide($x,$y) {
    if($y==0) throw new Exception(”cannot divide by zero”);
    return $x/$y;
    }
    }
    $x = new foo();
    try {
    $x->divide(3,0);
    } catch (Exception $e) {
    echo $e->getMessage();
    echo “n
    n”;
    // Some catastrophic measure here
    }
    ?>
    上例中,我们使用了 “try” 来执行花括号中的语句,当有错误发生的时候,代码会把错误交给 “catch” 子句来处理,在 “catch” 子句中,你需要指明要把错误交给某个对象处理,这样做可以使代码结构看起来更清晰,因为现在我们可以把所有的错误信息交给一个对象来处理。

    自定义错误处理

    你可以很方便的用自定义的处理错误的代码来控制你的程序中的意外。你仅仅需要从异常类中派生出一个自己的错误控制类,在你自己的错误控制类中,你需要有一个构造函数和一个 getMessage 方法,以下是一个例子。

    例十三:自定义错误处理

    class WeirdProblem extends Exception {
    private $data;
    function WeirdProblem($data) {
    parent::exception();
    $this->data = $data;
    }
    function getMessage() {
    return $this->data . ” caused a weird exception!”;
    }
    }
    ?>
    现在我们可以使用 “throw new WeirdProblem($foo)” 来抛出一个错误句柄,如果错误在 “try” 的代码块中发生,PHP5 会自动把错误交给 “catch” 部分来处理。

    名称空间

    名称空间对类的分组或函数分组很有用。它可以把一些相关的类或函数给组合到一起,方便以后调用。

    例十四:名称空间

    namespace Math {
    class Complex {
    //…code…
    function __construct() {
    print(”hey”);
    }
    }
    } $m = new Math::Complex();
    ?>
    注意你需要在何种情况下使用名称空间,在实际运用中,你可能会需要声明两个或多个名称一样的对象来做不同的事情,那么你就可以把他们分别放到不同的名称空间中去(但接口是要相同的)。

  • 国外主流web编辑器

    发表于 2010年02月22日 admin 没有评论

    1. TinyMCE

    TinyMCE

    免费,开源,轻量,基于 JavaScript,高度可定制,跨平台。

    2. FCKEditor

    FCKEditor

    免费,开源,用户量庞大,有良好的社区支持。

    3. YUI Editor

    YUI Editor

    属于 Yahoo! YUI 的一部分,能输出纯净 XHTML 代码。

    4. NicEdit

    NicEdit

    简单,易用,轻量,外观漂亮。

    5. Kupu

    Kupu

    开源,支持 Ajax 保存,跨平台,易于集成,由 OSCOM 推出。

    6. Free Rich Text Editor

    Free  Rich Text Editor

    非常容易部署,输出 XHTML 代码,功能丰富。

    7. WebWiz RichTextEditor

    WebWiz RichTextEditor

    这是一个商业产品,并不免费,但功能非常丰富,基于 ASP,JavaScript 和 DHTML。

    8. XStandard

    XStandard

    故名思意,这个编辑器会生成符合标准的纯净 XHTML 代码。

    9. Damn Small Rich Text Editor

    Damn Small Rich Text Editor

    基于 jQuery 和 PHP 后台,非常小巧(~18K),但功能丰富。

    10. WidgEditor

    WidgEditor

    简单,易用,开源,即使浏览器不支持 JavaScript,仍能很好地工作。

    11. Kevin Roth’s Cross Browser Rich Text Editor

    Kevin Roth’s Cross Browser Rich Text Editor

    一个不错的编辑器,支持皮肤,符合 XHTML 标准,跨浏览器兼容,分免费版和收费版两个版本。

    12. OpenWYSIWYG

    OpenWYSIWYG

    拥有许多出色的功能,容易部署,速度极快。

    13. CodePlex Rich Text Editor

    CodePlex Rich Text Editor

    基于 ASP.NET,目前只支持 IE 和 Firefox。

    14. FreeTextBox

    FreeTextBox

    集成了相册,拼写检查等功能,尤其适合 ASP.NET 项目。

    15. Silverlight Rich Text Editor

    Silverlight Rich Text Editor

    适合与微软的 Silverlight 一起使用,功能丰富,不过,似乎原作者已经不再更新这个项目了。

    16. BXE (Bitflux Editor)

    BXE (Bitflux Editor)

    从 2002 年以来一直开源,拥有一批非常忠实的用户和社区,据称是目前最好的 WYSIWYG 编辑器之一。

    17. MarkItUp!

    MarkItUp!

    基于 jQuery,轻量,支持键盘快捷键,支持多种代码,包括 HTML, Textile, Wiki Syntax, Markdown, BBcode。

    18. Dijit Editor for Dojo

    Dijit Editor for Dojo

    基于 Dojo JavaScript 框架,输出干净 HTML 代码,支持插件,拥有清新的按钮。

    19. EditArea

    EditArea

    易于集成,干净代码,实时语法加亮,自动缩进,多语种支持,多实例支持,全屏模式等功能。

    20. WYMeditor

    WYMeditor

    输出干净的 XHTML + SCTRICT 代码,注重结构与语义,在输出结构化 XHTML 代码方面是最佳方案。

    21. Whizzywig

    Whizzywig

    多浏览器支持,Web 安全色选择器,支持表格,图片,Word 代码清洁,拼写检查等功能。

    22. Xinha

    Xinha

    基于 BSD协议,易于部署与扩展,拥有很好的社区支持。

  • 夸人文章写得好的词

    发表于 2009年09月21日 admin 没有评论

    扬葩振藻:葩:形容文章写得华丽多采。(文采好)
    璧坐玑驰:形容文章的语言精采美妙。(语言精妙)
    徜徉恣肆:形容文章挥洒自如,气势豪放。(有气势)
    辞无所假:写文章时用词有所创新,没有因袭前人。形容文章自成一家,有独特的风格。(用词有创新)
    蹙金结绣:形容文章精美,结构严密。(结构严谨)
    短小精干:形容文章、言论等简短有力。(精短)
    花团锦簇:形容文章辞藻华丽。(辞藻华丽)
    浑然一体:形容文章绘画,布置匀整,结构谨严。(结构严谨)
    流水行云:形容文章自然不受约束,就象漂浮着的云和流动着的水一样。(既可指语言流畅,也可以指内容自然不受约束)
    神完气足:神气十分舒畅。常形容文章首尾贯穿,一气呵成。
    硬语盘空:形容文章的气势雄伟,矫健有力。
    情文并茂:指文章的思想感情丰富,文辞也很美盛。
    笔头生花:形容文章写得很出色。
    不蔓不枝:比喻说话或写文章简明扼要,不拖泥带水。
    咳唾成珠:比喻言辞精当,议论高明。(言辞准确)
    点睛之笔:指文章传神绝妙之处。
    开门见山:打开门就能看见山。比喻说话或写文章直截了当谈本题,不拐弯抹角。
    旁征博引:指说话、写文章引用材料作为依据或例证。
    深入浅出:指讲话或文章的内容深刻,语言文字却浅显易懂。
    言之有序:说话和写文章很有条理。
    要言不烦:指说话或写文章简单扼要,不烦琐。

  • (马云+牛根生+史玉柱)经典语录

    发表于 2009年09月18日 admin 没有评论

    马云经典语录:

    1.当你成功的时候,你说的所有话都是真理。
    2.我永远相信只要永不放弃,我们还是有机会的。最后,我们还是坚信一点,这世界上只要有梦想,只要不断努力,只要不断学习,不管你长得如何,不管是这样,还是那样,男人的长相往往和他的的才华成反比。今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。
    3.孙正义跟我有同一个观点,一个方案是一流的Idea加三流的实施;另外一个方案,一流的实施加三流的Idea,哪个好?我们俩同时选择一流的实施,三流的Idea。
    4.我既要扔鞭炮,又要扔炸弹。扔鞭炮是为了吸引别人的注意,迷惑敌人;扔炸弹才是我真正的目的。不过,我可不会告诉你我什么时候扔鞭炮,什么时候扔炸弹。游戏就是要虚虚实实,这样才开心。如果你在游戏中感到很痛苦,那说明你的玩法选错了。
    5.“其实,有的时候人的最大问题就在于他说的都是对的” 。
    6.那些私下忠告我们,指出我们错误的人,才是真正的朋友。
    7.我生平最高兴的,就是我答应帮助人家去做的事,自己不仅是完成了,而且比他们要求的做得更好,当完成这些信诺时,那种兴奋的感觉是难以形容的……
    8.注重自己的名声,努力工作、与人为善、遵守诺言,这样对你们的事业非常有帮助。
    9. 商业合作必须有三大前提:一是双方必须有可以合作的利益,二是必须有可以合作的意愿,三是双方必须有共享共荣的打算。此三者缺一不可。
    10.服务是全世界最贵的产品,所以最佳的服务就是不要服务,最好的服务就是不需要服务.
    11.永远不要跟别人比幸运,我从来没想过我比别人幸运,我也许比他们更有毅力,在最困难的时候,他们熬不住了,我可以多熬一秒钟、两秒钟。
    12.今天到北大演讲心里特别激动。我一直把北大的学子当做我的偶像,一直考却考不进,所以我想如果有一天我一定要到北大当老师。
    13.看见10只兔子,你到底抓哪一只?有些人一会儿抓这个兔子,一会儿抓那个兔子,最后可能一只也抓不住。CEO的主要任务不是寻找机会而是对机会说NO。机会太多,只能抓一个。我只能抓一只兔子,抓多了,什么都会丢掉.
    14.我们公司是每半年一次评估,评下来,虽然你的工作很努力,也很出色,但你就是最后一个,非常对不起,你就得离开。
    15.我们与竞争对手最大的区别就是我们知道他们要做什么,而他们不知道我们想做什么。我们想做什么,没有必要让所有人知道。
    16.网络上面就一句话,光脚的永远不怕穿鞋的。
    17.中国电子商务的人必须要站起来走路,而不是老是手拉手,老是手拉着手要完蛋。我是说阿里巴巴发现了金矿,那我们绝对不自己去挖,我们希望别人去挖,他挖了金矿给我一块就可以了。
    18.我深信不疑我们的模式会赚钱的,亚马逊是世界上最长的河,8848是世界上最高的山,阿里巴巴是世界上最富有的宝藏。一个好的企业靠输血是活不久的,关键是自己造血。
    19.我为什么能活下来?第一是由于我没有钱,第二是我对INTERNET一点不懂,第三是我想得像傻瓜一样。
    20.发令枪一响,你是没时间看你的对手是怎么跑的。只有明天是我们的竞争对手。
    21.如果早起的那只鸟没有吃到虫子,那就会被别的鸟吃掉。
    22.听说过捕龙虾富的,没听说过捕鲸富的。
    23.好的东西往往都是很难描述的。
    24.在我看来有三种人,生意人:创造钱;商人:有所为,有所不为。企业家:为社会承担责任。企业家应该为社会创造环境。企业家必须要有创新的精神。
    25.一个公司在两种情况下最容易犯错误,第一是有太多的钱的时候,第二是面对太多的机会,一个CEO看到的不应该是机会,因为机会无处不在,一个CEO更应该看到灾难,并把灾难扼杀在摇篮里。

    牛根生经典语录:

    1.小胜凭智,大胜靠德。
    2.有干劲,你就洒下汗水;有知识,你就献出智慧;二者都不具备,请你让出岗位。
    3.城市多喝一杯奶,农村致富一家人。
    4.财散人聚,财聚人散。
    5.一个产品,抓眼球,揪耳朵,都不如暖人心。
    6.一个人智力有问题,是次品;一个人的灵魂有问题,就是危险品。经营人心就是经营事业。
    7.好心态才有好状态。
    8.帮助别人,但不伤害别人。
    9.要想知道,打个颠倒。
    10.从无到有,是件快乐的事。而从有到无,同样是种快感。
    11.产品市场是亿万公民,资本市场是千万股民,原料市场是百万农民。
    12.让认识你的人受益,还不能算好;让不认识你的人也受益,那才是真好。
    13.吃亏吃到再也吃不进的时候,就不会吃亏了。苦多了,甜就大了。
    14.想赢个三回两回,三年五年,有点智商就行;想做个百年老店,想一辈子赢,没有德商绝对不行。
    15.学得辛苦,做得舒服;学得舒服,做得辛苦。
    16.产品等于人品,质量就是生命。
    17.看别人不顺眼,首先是自己修养不够。
    18.从最不满意的客户身上,学到的东西最多。
    19.管理是严肃的爱。
    20.经营企业就是经营人心。
    21.人不能把金钱带入坟墓,但金钱却可以把人带入坟墓。
    22.一个人快乐不是因为他拥有得多,而是因为计较得少。
    23.一个事业能不能成功,关键靠制度设计。
    24.别人从零起步,而我从负数起步。
    25.听不到奉承的人是一种幸运,听不到批评的人却是一种危险。
    26.善待每一头牛,因为它们都是母亲。
    27.布局决定结局。
    28.世界上还有很多事情,只要你把它做透了,做成专家,你就能够为自己创造成功的机会。
    29.会说话的产品卖得快,哑巴产品走得慢。
    30.你如果拿五分的力量跟别人较劲,别人会拿出十二分的力量跟你较劲。

    史玉柱经典语录:

    1.90%的困难你现在想都没有想到,你都不知道那是困难。
    2。团队核心成员有人要提出辞职时,不要挽留,既然提出了,他迟早是要走的。
    3。如果没有价格上的优势与技术上的绝对优势,千万不要进入红海市场,否则你会必输无疑!
    4。做连锁经营业务,一定要做一套傻瓜版的营销手册与管理手册,只有这样,才能实现远距离的管理。
    5。做成功一个店之后离你大的成功就不远了,所以你首先就是脚踏实地、集中精力地先做出一家,也是要放弃掉连锁的这种,不要在将来如何做连锁方面做太多的梦,先脚踏实地做出第一家。
    6。做全国性市场,一定要先做一个试销市场,要一点点来,快不得;做成了,真到做全国市场时,要快半步,慢不得!
    7。初中水平跟博士后没啥区别。只要能干就行,我一直是这个观点,不在乎学历,只要能干能做出贡献就行。
    8。作为我们曾经失败过,至少有过失败经历的人,应该经常从里面学点东西。人在成功的时候是学不到东西的,人在顺境的时候,在成功的时候,沉不下心来,总结的东西自然是很虚的东西。只有失败的时候,总结的教训才是深刻的,才是真的。
    9.对过去成功的经验再好好总结总结,尤其是对失败的教训,下半夜夜深人静的时候你仔细想一想。反正睡觉也想,想一想实际上对你有很大收获比你看书更有用。因为有的书离你远,那是看自己过去写的东西。
    10。最痛苦的时候,压力最大的时候,脑子里面只有一件事儿的时候,我把全国分公司经理招到荒山脚下北大门那个地方,招待所里面,然后在那个地方闭门开批判会。大家批判我,批判了三天三夜,我觉得那个就很有用。
    11。要改变消费者固有的想法,比登太阳还难;但不是不可能的。
    12。现在的时代,战略正确之后细节决定因素,有很多细节处理不好,你的战略正确了也会失败。
    13。不要只看塔尖,二三线市场比一线的更大。
    14。管理无情,人有情。
    15。所谓人才,就是你交给他一件事情,他做成了;你再交给他一件事情,他又做成了。

    16、营销里面有个叫第一法则。你到哈佛去学的时候,他会说一个案例。对美国人来说,谁第一个飞越大西洋的人?一般都能回答得出来,但是问谁是第二个飞越的,就没人能回答出来了。谁是第三个飞越的?记得了。为什么?第三个是第一个女性飞越,她拥有了个第一。 
    17、你一定要在你的品牌建设里面,把你的第一给挖出来,猛宣传那一点。

    18、宣传用什么手段呢?我建议别上来上电视。第一、报纸,第二个、创造事件营销,让媒体作为新闻自觉去报道你,这样很省钱。

    19、不诚信的是吧?我说三年之内我要把他们的钱还掉,我满了三年我没有还出来,没有还出来,老百姓那时候是很痛恨我的,看到他们对我愤怒的眼光,那种击是非常大的。所以我后面这些东西,实际上我是在补我过去的过失。

    20、做任何一件事或者违反任何一个规则,都是要付出成本的。只不过我觉得作为一个企业,你不诚信而付出的成本是十分巨大的,这个都是血的教训换来的。

  • 聪明识人

    发表于 2009年07月1日 admin 没有评论

        看一个人有没有前途,是否聪明是最重要的评判标准。俗话说物以类聚,聪明人也愿意和聪明人在一起。环顾四周,你认为你周围的朋友都是笨蛋的时候,最重要的考虑不是想办法把他们变得聪明起来,而是尽快找几个您感觉聪明人成为你的朋友!
     

        人聪明分两种,一种是思维活跃,发散思维强,表现在这个人主意多,脑袋快。一种是逻辑思维强,表现在想问题逻辑性非常好,比如中国的学习成绩好的学生。如果一个人您认为他两者都不符合,那么这个人应该性格好一点,否则,为什么要和又笨性格又差的人做朋友呢?
      

        回到话题,怎么判断一个人的发散思维好呢?就是和他瞎聊,看看他想的东西杂不杂,主意多不多,在一个问题面前有几个解决办法,比如问他上班有几条路可以走等等。值得注意的事,发散思维好的人一般比较自负,不过那是应该的,谁让人家聪明呢?大体老板、商人是发散思维好的人。

        另外一种聪明人其实我们大部分人称之为讷,就是木,因为对一个问题关注太多而不能自拔,又有钻牛角的脾气和个性,非要把一个东西弄顺了、弄清楚了、弄明白了,但恰恰这个世界任何一件事物又都很复杂,越是深入发现越弄不清。所以说爱因斯坦和聂卫平本质上一样的,只是非要弄清的物件不一样而已。
    两种聪明实际上又是相对的,目前对人而言,不自然把参照物定位于本身。明白点就是说,判断一个人是不是发散思维好,和他谈完话,发现他所说所想和自己相差较大,就指定他笨蛋,但纳闷,很多人特欣赏他,原因就是参照物的差别!同样,和牛人谈话,当你感觉思维跟不上他的思维的时候,对他而言,你何尝不是笨蛋呢?逻辑思维方面也是同样道理,棋逢对手最好,与我相比,水平太高和太低的人都和我下不到一块去!

        对专业技能的高低评判我们也应该依据最原始的两点:发散思维和逻辑思维能力。两者较高的人,专业技能在时间允许的条件下也相对较高,反之则低。这就解决了一个重要问题,当你在寻找不属于本专业的技能人才的时候,你考察他什么?不如问他上班有几条路可选或者看他的象棋水平的高低!

  • Mysql配置为Master/Slave的常用维护命令

    发表于 2009年05月22日 admin 没有评论

    master端:
    show master status;—查看状态:
    show processlist; –查看slave下mysql进程信息
    reset master; #慎用,将清空日志及同步position

    slave端:

    CHANGE MASTER TO MASTER_LOG_FILE=’master.000019′;
    show slave status;
    show slave logs;
    show processlist;
    reset slave; #慎用,将清空slave配置信息、日志及同步position
    在从服务器上跳过错误事件
    mysql>stop slave;
    mysql>set global sql_slave_skip_counter = n(跳过主服务器中的接下来的 n 个事件。此命令对于由语句引起的复制终止有效。仅在从服务器线程没运行的时候有效);
    mysql>start slave;

    mysql 主服务器中同步用户 必须具有 SUPER ,RELOAD,REPLICATION SLAVE 权限

    当新加从服务器时,需要先在从库上 load data master; 保证和其他从库数据一致

     

    set global sql_slave_skip_counter=n # 客户端运行,用来跳过几个事件,只有当同步进程出现错误而停止的时候才可以执行。

    reset master #主机端运行,清除所有的日志,这条命令就是原来的flush master

    reset slave #从机运行,清除日志同步位置标志,并重新生成master.info

    虽然重新生成了master.info,但是并不起用,最好,将从机的mysql进程重启一下,

    load table tblname from master
    #从机运行,从主机端重读指定的表的数据,每次只能读取一个,受timeout时间限制,需要调整timeout时间。执行这个命令需要同步账号有reload和super权限。以及对相应的库有select权限。如果表比较大,要增加net_read_timeout 和 net_write_timeout的值

    load data from master #从机执行,从主机端重新读入所有的数据。执行这个命令需要同步账号有reload和super权限。以及对相应的库有select权限。如果表比较大,要增加net_read_timeout 和 net_write_timeout的值

    change master to master_def_list #在线改变一些主机设置,多个用逗号间隔,比如

    change master to

    master_host=’master2.mycompany.com’,

    master_user=’replication’,

    master_password=’bigs3cret’

    master_pos_wait() #从机运行

    show master status #主机运行,看日志导出信息

    show slave hosts #主机运行,看连入的从机的情况。

    show slave status (slave)

    show master logs (master)

    show binlog events [ in 'logname' ] [ from pos ] [ limit [offset,] rows ]

    purge [master] logs to ‘logname’ ; purge [master] logs before ‘date’

    //显示所有本机上的二进制日志
    mysql> SHOW MASTER LOGS;
    //删除所有本机上的二进制日志
    mysql> RESET MASTER;
    //删除所有创建时间在binary-log.xxx之前的二进制日志
    mysql> PURGE MASTER LOGS TO ‘binary-log.xxx’;
    //只保留最近6天的日志,之前的都删掉
    find /var/intra -type f -mtime +6 -name “*.log” -exec rm -f {} \;
    //用键盘左上角(也就是Esc下面)那个键包围起来,说明是命令。-1d是昨天,以此类推-1m是上个月等等
    day=`/bin/date -v -1d +%Y%m%d`;
    //给文件改名
    mv xxx.log xxx-${day}.log;
    //这里还要加上数据库的用户名密码,作用是更新日志(包括二进制日志和查询日志等等)
    mysqladmin flush-logs

  • Apache2运用mod_deflate已经代替了mod_gizp

    发表于 2009年05月22日 admin 没有评论

    apache2已经用mod_deflate代替了mod_gzip

    apache2已经包含了mod_deflate

    打开模组

    1. /usr/local/apache2/bin/apxs -i -c /yourpath/httpd-2.2.3/modules/filters/mod_deflate.c

    httpd.conf添加

    1. LoadModule deflate_module modules/mod_deflate.so

    如果想只压缩html,text,xml 如果下面配置:

    1. AddOutputFilterByType DEFLATE text/html text/plain text/xml

    下面给出我的配置档:

    1. LoadModule deflate_module modules/mod_deflate.so
    2. SetOutputFilter DEFLATE
    3.  
    4. BrowserMatch ^Mozilla/4 gzip-only-text/html
    5. BrowserMatch ^Mozilla/4\.0[678] no-gzip
    6. BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    7.  
    8. # Don’t compress images
    9. SetEnvIfNoCase Request_URI \
    10. \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    11. SetEnvIfNoCase Request_URI \
    12. \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
    13. SetEnvIfNoCase Request_URI \
    14. \.pdf$ no-gzip dont-vary
    15. SetEnvIfNoCase Request_URI \
    16. \.(css|js)$ no-gzip dont-vary
    17.  
    18. # Make sure proxies don’t deliver the wrong content
    19. Header append Vary User-Agent env=!dont-vary
    20. DeflateFilterNote Input input_info
    21. DeflateFilterNote Output output_info
    22. DeflateFilterNote Ratio ratio_info
    23. LogFormat ‘”%r” %{output_info}n/%{input_info}n (%{ratio_info}n%%)’ deflate
    24. CustomLog logs/deflate_log.log deflate

    在apache的使用手册上还有这么一句,但是不知道为什么不能添加上去.

    1. # Make sure proxies don’t deliver the wrong content
    2. Header append Vary User-Agent env=!dont-vary

    这个可以压缩 SVN 出来的文件。

    ———————————————

    不能添加的原因是下面的模组没有打开:

    1. LoadModule headers_module modules/mod_headers.so

    =================

    Apache deflate模块配置说明
    前几天一直在找apache2.0以dso方式编译后加载deflate模块的办法
    试了apxs -ica mod_deflate.c N次,始终是报

    1. Cannot load /opt/apache/modules/mod_deflate.so into server: /opt/apache/modules/mod_deflate.so: undefined symbol: deflate

    异常的痛苦,什么ldd mod_deflate.so后再export LIB_LIBRARY_PATH呀,都试了N次,google也go了N天。终于在google上go出来一篇文章,终于解决,方法如下:

    1. vi /usr/local/apache2/bin/apr-config
    2. 修改LDFLAGS=” ” 为 LDFLAGS=”-lz”
    3. 然后再apxs -ica mod_deflate.c
    4. 就OK了

    另外在配置deflate规则时
    apache2.0推荐加上这句

    1. Header append Vary User-Agent env=!dont-vary

    以便确保不会输出在压缩过程中出现内容方面的error
    但一般情况下,在测试apache的语法过程中会现出
    Invalid command ‘Header’, perhaps mis-spelled or defined by a module not included in the server configuration
    解决办法就是加载一个headers模块就OK了

    不过最好还是在编译apache模块时直接加上–enable-deflate –enable-headers就省事多了。

    一、 需求
    压缩apache的输出内容,降低网站带宽
    二、 加载Apache的deflate模块
    1、 修改apr-config

    1. vi /usr/local/apache2/bin/apr-config

    修改LDFLAGS=” ” 为 LDFLAGS=”-lz”
    2、 到apache源安装目录下,例如

    1. cd /root/httpd-2.0.55/modules/filters

    3、加载mod_deflate模块

    1. /usr/local/apache2/bin/apxs -i -a -c mod_deflate.c

    如果没有安装headers模块,加载headers模块

    1. cd /root/httpd-2.0.55/modules/metadata

    加载mod_headers模块

    1. /usr/local/apache2/bin/apxs -i -a –c mod_headers.c

    三、配置Apache主配置文件
    1. 在httpd.conf主配置文件里添加如下行

    1. #声明输入流的byte数量
    2. DeflateFilterNote Input instream
    3. #声明输出流的byte数量
    4. DeflateFilterNote Output outstream
    5. #声明压缩的百分比
    6. DeflateFilterNote Ratio ratio
    7. #声明日志类型
    8. LogFormat ‘”%r” %{outstream}n/%{instream}n (%{ratio}n%%)’ deflate
    9. CustomLog logs/deflate_log deflate
    10.  
    11. #指定压缩参数
    12.  
    13. # Insert filter
    14. SetOutputFilter DEFLATE
    15.  
    16. # Netscape 4.x has some problems…
    17. BrowserMatch ^Mozilla/4 gzip-only-text/html
    18.  
    19. # Netscape 4.06-4.08 have some more problems
    20. BrowserMatch ^Mozilla/4\.0[678] no-gzip
    21.  
    22. # MSIE masquerades as Netscape, but it is fine
    23. # BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    24.  
    25. # NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
    26. # the above regex won’t work. You can use the following
    27. # workaround to get the desired effect:
    28. BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
    29.  
    30. # Don’t compress images
    31. SetEnvIfNoCase Request_URI \.(?:gif|jpg|cab|jpe?g|exe|bmp|mp3|rar|zip|swf|png)$ no-gzip dont-vary
    32.  
    33. # Make sure proxies don’t deliver the wrong content
    34. Header append Vary User-Agent env=!dont-vary

    二、日志输出格式如下

    1. [root@trffic2 logs]# tail -f access_log
    2. “GET /apache_pb.gif HTTP/1.1″ -/- (-%)
    3. “GET /manual/ HTTP/1.1″ 2163/7434 (29%)
    4. “GET /manual/style/css/manual.css HTTP/1.1″ 3973/18335 (21%)
    5. “GET /manual/style/css/manual-loose-100pc.css HTTP/1.1″ 1006/2882 (34%)
    6. “GET /manual/style/css/manual-print.css HTTP/1.1″ 2994/13017 (23%)

    _________________

    apache1.3.x可以用mod_gzip进行优化网页浏览的速度,可以明显的感觉到速度的提升。在apache2中也尝试用mod_gzip,但是配置后确发现网页不能正确显示(空白页),所以改换mod_deflate。
    在Linux命令行下运行以下命令安装mod_deflate模块(斜体是apache2的目录)

    1. /usr/local/apache2/bin/apxs -i -c /root/httpd-2.0.48/modules/filters/mod_deflate.c

    编辑httpd.conf,加入以下内容:

    1. LoadModule deflate_module modules/mod_deflate.so
    2. DeflateFilterNote ratio
    3. LogFormat ‘”%v %h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”" (%{ratio}n)’ deflate
    4.  
    5. # Insert filter
    6. SetOutputFilter DEFLATE
    7.  
    8. # Netscape 4.x has some problems…
    9. BrowserMatch ^Mozilla/4 gzip-only-text/html
    10.  
    11. # Netscape 4.06-4.08 have some more problems
    12. BrowserMatch ^Mozilla/4.0[678] no-gzip
    13.  
    14. # MSIE masquerades as Netscape, but it is fine
    15. BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    16.  
    17. # Don’t compress images
    18. SetEnvIfNoCase Request_URI
    19. .(?:gif|jpe?g|png)$ no-gzip dont-vary
    20.  
    21. # Make sure proxies don’t deliver the wrong content
    22.  
    23. # Header命令不对?注释这一行
    24. # Header append Vary User-Agent env=!dont-vary
    25.  
    26. #查找Customlog 注释原来的的一行,改成
    27. CustomLog logs/deflate_log deflate
    28.  
    29. #查看logs目录下deflate_log文件,你可以看到许多这样的信息:
    30. “www.21php.com 220.163.107.88 - - [27/Mar/2004:01:03:55 -0800] “GET /ad/usrlogo/21PHPLOGO_88X31.gif HTTP/1.1″ 200 3656 “http://soft.ttee.com/vbb/” “Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)”" (-)
    31. “www.21php.com 211.144.88.138 - - [27/Mar/2004:01:03:57 -0800] “GET /tutorial/tutorial.php?tid=68 HTTP/1.1″ 200 5173 “http://www.21php.com/tutorial/tutorial.php?catalogid=12″ “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; .NET CLR 1.0.3705; Alexa Toolbar)”" (29)
    32. “www.21php.com 211.144.88.138 - - [27/Mar/2004:01:03:58 -0800] “GET /style.cssHTTP/1.1″ 304 - “http://www.21php.com/tutorial/tutorial.php?tid=68″ “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; .NET CLR 1.0.3705; Alexa Toolbar)”" (-)
    33. “www.21php.com 211.144.88.138 - - [27/Mar/2004:01:03:58 -0800] “GET /images/bar-4.gif HTTP/1.1″ 304 - “http://www.21php.com/tutorial/tutorial.php?tid=68″ “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; .NET CLR 1.0.3705; Alexa Toolbar)”" (-)
    34. “www.21php.com 211.144.88.138 - - [27/Mar/2004:01:03:58 -0800] “GET /images/logo.gif HTTP/1.1″ 304 - “http://www.21php.com/tutorial/tutorial.php?tid=68″ “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; .NET CLR 1.0.3705; Alexa Toolbar)”" (-)
    35. “www.21php.com 211.144.88.138 - - [27/Mar/2004:01:03:58 -0800] “GET /images/icon1.gif HTTP/1.1″ 304 - “http://www.21php.com/tutorial/tutorial.php?tid=68″ “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; .NET CLR 1.0.3705; Alexa Toolbar)”" (-)

    Boban 写于2004年3月27日凌晨

    附注:关于mod_deflate的详细内容,可以参考http://httpd.apache.org/docs-2.0/mod/mod_deflate.html
    __________________

    如果apache是rpm安装的,那么默认就已经有mod_deflate这个模块了。
    更详细的可以看这里:http://sysoev.ru/mod_deflate/readme.html

    因为mod_deflate相比较mod_gzip来说,有了更多的更新,所以我用上了它!
    注意:mod_gzip在apache1.x上用起来比较好,但是在apache2.x上用起来就不是很爽,老出错,也许是我的水平问题,没办法,所以改用:mod_deflate :)

    我的apache:2.0.55
    配置如下:(修改:httpd.conf)

    1. DeflateCompressionLevel 9
    2. AddOutputFilterByType DEFLATE text/html text/plain text/xml
    3. application/x-httpd-php
    4. AddOutputFilter DEFLATE js css
    5.  
    6. BrowserMatch ^Mozilla/4 gzip-only-text/html
    7. BrowserMatch ^Mozilla/4\.0[678] no-gzip
    8. BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
    9. Header append Vary User-Agent env=!dont-vary
    10.  
    11. DeflateFilterNote deflate_ratioLogFormat “%v %h %l %u %t \”%r\” %>s %b mod_deflate: %{deflate_ratio}n pct.” vhost_with_deflate_infoCustomLog logs/order.7180.com-access_log vhost_with_deflate_info

    将以上的配置文字加入到:之间即可:)

    以上的做法是压缩一般的网页html、xml、php、css、js等格式文件的输出,虽然会占用一点服务器的资源,不过这个可以减少带宽被占用的情况:)
    这里:DeflateCompressionLevel 9是指压缩程度的等级,从1到9,9是最高级别的。这样做可以压缩到20%的大小,最少也有50%。至于jpg等已经压缩过的文件,就不需要再压缩了。

  • proftpd1.3.2稳定版linux64位系统安装

    发表于 2009年05月20日 admin 没有评论

    wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.2.tar.gz
    tar xvfz proftpd-1.3.2.tar.gz

    ./configure \
    –prefix=/usr/local/proftpd \
    –with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql \
    –with-includes=/data1/mysql/include/mysql/ \
    –with-libraries=/data1/mysql/lib/mysql/

    make
    make instll

    然后用一下命令看一下
    /usr/local/proftpd/sbin/proftpd -l
    如果配置正确,会出现以下四个模块,否则请重新编译安装
    mod_sql.c
    mod_sql_mysql.c
    mod_quotatab.c
    mod_quotatab_sql.c
    修改/usr/local/proftpd/etc/proftpd.conf文件,增加

    DefaultRoot ~
    AllowRetrieveRestart  on
    AllowStoreRestart  on 
    ServerIdent   off 

     

    #——– load sql.mod for mysql authoritative ——–#

    SQLConnectInfo ftpdb@localhost proftpd  netdot123
    #注:上面这行是MySQL连接服务器部份,自己根据情况来改一改;
    SQLAuthTypes Plaintext
    SQLUserInfo ftpusers userid passwd uid gid homedir shell
    SQLGroupInfo ftpgroups groupname gid members
    SQLAuthenticate users groups
    SQLNegativeCache on
    SQLLogFile /var/log/proftpd.sql.log

    SQLNamedQuery getcount SELECT “count from ftpusers where userid=’%u’”
    SQLNamedQuery getlastlogin SELECT “lastlogin from ftpusers where userid=’%u’”

    SQLNamedQuery updatelogininfo UPDATE “count=count+1,host=’%h’,lastlogin=current_timestamp() WHERE userid=’%u’” ftpusers

    SQLShowInfo PASS “230″ “You’ve logged on %{getcount} times, last login at %{getlastlogin}”                                             
    SQLLog PASS updatelogininfo

    #——– load sql.mod for mysql authoritative ——–#

    #——— load qudes.mod for Quota limit ——–#

    #打开磁盘限额引擎
    QuotaEngine on
    # 设置磁盘限额
    QuotaDirectoryTally on
    # 设置磁盘容量显示时的单位
    QuotaDisplayUnits Mb
    # 允许显示磁盘限额信息,ftp登录后可执行quote site quota命令查看当前磁盘使用情况
    QuotaShowQuotas on
    # 设置磁盘限额日志文件
    QuotaLog “/var/log/proftpd.quota.log”

    SQLNamedQuery get-quota-limit SELECT “name, quota_type, per_session, limit_type, bytes_in_avail,bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = ‘%{0}’AND quota_type = ‘%{1}’”

    SQLNamedQuery get-quota-tally SELECT “name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = ‘%{0}’ AND quota_type = ‘%{1}’”

    SQLNamedQuery update-quota-tally UPDATE “bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = ‘%{6}’ AND quota_type = ‘%{7}’” ftpquotatallies

    SQLNamedQuery insert-quota-tally INSERT “%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}” ftpquotatallies

    QuotaLimitTable sql:/get-quota-limit

    QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

    #——— load qudes.mod for Quota limit ——–#

    同时,建立数据表:

    CREATE TABLE `ftpusers` (
      `userid` varchar(30) NOT NULL DEFAULT ”,
      `passwd` varchar(80) NOT NULL DEFAULT ”,
      `uid` int(10) unsigned NOT NULL DEFAULT ‘1000′,
      `gid` int(10) unsigned NOT NULL DEFAULT ‘1000′,
      `homedir` varchar(255) NOT NULL DEFAULT ”,
      `shell` varchar(255) NOT NULL DEFAULT ‘/sbin/nologin’,
      `count` int(10) unsigned NOT NULL DEFAULT ‘0′,
      `host` varchar(30) NOT NULL DEFAULT ”,
      `lastlogin` varchar(30) NOT NULL DEFAULT ”,
      `id` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`id`),
      UNIQUE KEY `userid` (`userid`)
    ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1

    CREATE TABLE `ftpgroups` (
      `groupname` varchar(30) NOT NULL DEFAULT ”,
      `gid` int(11) NOT NULL DEFAULT ‘1000′,
      `members` varchar(255) NOT NULL DEFAULT ”,
      `id` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1

    CREATE TABLE `ftpquotalimits` (
      `name` varchar(30) DEFAULT NULL,
      `quota_type` enum(’user’,'group’,'class’,'all’) NOT NULL DEFAULT ‘user’,
      `per_session` enum(’false’,'true’) NOT NULL DEFAULT ‘false’,
      `limit_type` enum(’soft’,'hard’) NOT NULL DEFAULT ’soft’,
      `bytes_in_avail` float NOT NULL DEFAULT ‘0′,
      `bytes_out_avail` float NOT NULL DEFAULT ‘0′,
      `bytes_xfer_avail` float NOT NULL DEFAULT ‘0′,
      `files_in_avail` int(6) unsigned NOT NULL DEFAULT ‘0′,
      `files_out_avail` int(6) unsigned NOT NULL DEFAULT ‘0′,
      `files_xfer_avail` int(6) unsigned NOT NULL DEFAULT ‘0′,
      `id` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1

    CREATE TABLE `ftpquotatallies` (
      `name` varchar(30) NOT NULL DEFAULT ”,
      `quota_type` enum(’user’,'group’,'class’,'all’) NOT NULL DEFAULT ‘user’,
      `bytes_in_used` float NOT NULL DEFAULT ‘0′,
      `bytes_out_used` float NOT NULL DEFAULT ‘0′,
      `bytes_xfer_used` float NOT NULL DEFAULT ‘0′,
      `files_in_used` int(6) unsigned NOT NULL DEFAULT ‘0′,
      `files_out_used` int(6) unsigned NOT NULL DEFAULT ‘0′,
      `files_xfer_used` int(6) unsigned NOT NULL DEFAULT ‘0′
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1

  • LINUX64位 APACHE2.2 Mysql5.1 php5.29安装

    发表于 2009年05月19日 admin 没有评论

    首先下载必备的软件,您可以直接粘贴复制!
    #mysql
    wget http://mysql.mirrors.pair.com/Downloads/MySQL-5.1/mysql-5.1.34.tar.gz
    #php
    wget http://cn2.php.net/get/php-5.2.9.tar.gz/from/this/mirror

    #apache
    wget http://labs.xiaonei.com/apache-mirror/httpd/httpd-2.2.11.tar.gz

    #openssl
    wget http://www.openssl.org/source/openssl-0.9.8k.tar.gz

    #gd库,php程序需要最新gd库及相关文件
    wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz
    wget http://nchc.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.36.tar.gz
    wget http://nchc.dl.sourceforge.net/sourceforge/freetype/freetype-2.3.9.tar.gz
    wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz

    #Libtool 注意,linux64位操作系统安装jpg时候需要升级libtool
    wget http://ftp.gnu.org/gnu/libtool/libtool-2.2.6a.tar.gz

    #curl,如果php开通curl功能需要下载
    wget http://curl.haxx.se/download/curl-7.19.4.tar.gz

    #libxml 如果php开通libxml功能需要下载
    wget http://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/libxml2-2.6.30.tar.gz

    #libxslt 如果php开通libxslt功能需要下载
    wget http://ftp.gnome.org/pub/GNOME/sources/libxslt/1.1/libxslt-1.1.22.tar.gz

     

    第一步:安装mysql5.1
    groupadd mysql
    useradd -g mysql mysql
    tar -zxvf mysql-5.1.34.tar.gz
    cd mysql-5.1.34

    #记住,全部是小写
    ./configure –prefix=/data1/mysql –enable-thread-safe-client –with-extra-charsets=gbk –with-plugins=all
    make;
    make install;

    /data1/mysql/bin/mysql_install_db

    # chown -R root /data1/mysql
    # chgrp -R mysql /data1/mysql
    # chown -R mysql /data1/mysql/var

    #cp /data1/mysql/share/mysql/my-medium.cnf /etc/my.cnf 如果您执行了这句话,那么注意把 /etc/my.cnf 中的skip-federated注销!

    #启动mysql

    /data1/mysql/bin/mysqld_safe &
    #登录
    /data1/mysql/bin/mysql -uroot -p
    #祝贺您,安装成功!
    //关闭mysql
    /data1/mysql/bin/mysqladmin -uroot -p shutdown

    #回到软件目录
    cd ..

     

     第二步,安装apache

    #安装openssl
    tar zxvf openssl-0.9.8k.tar.gz
    cd openssl-0.9.8
    ./config –prefix=/usr/local/openssl
    make
    make install
    cd..

    apache2.2
    tar zxvf  gd-2.0.33.tar.gz
    cd httpd-2.2.11

    ./configure –prefix=/data1/apache –enable-modules=so –enable-rewrite –with-ssl=/usr/local/openssl
    make
    make install;
    /data1/apache/bin/apachectl start

    #马上测试一下吧,在浏览器里敲http://www.netdot.cn/。注:把www.netdot.cn换成您的域名或者ip
    #关闭apache
    #也可以选择增加压缩模块 /data1/apache/bin/apxs -i -c modules/filters/mod_deflate.c
    #需要在conf文件中增加:#LoadModule deflate_module modules/mod_deflate.so
    #AddOutputFilterByType DEFLATE text/html text/plain text/xml

    /data1/apache/bin/apachectl stop
    #回到软件目录
    cd ..

    第三步 安装php

    libtooles 升级

    //卸掉原来的
    rpm -qa|grep libtool
    rpm -e libtool-1.5.22-6.1

    tar zxvf libtool-2.2.6a.tar.gz
    cd libtool-2.2.6

    ./configure –prefix=/usr/local/libtool
    make
    makestall
    cd ..

    #安装jpeg6
    jpeg6
    mkdir -p /usr/local/jpeg6
    mkdir -p /usr/local/jpeg6/bin
    mkdir -p /usr/local/jpeg6/lib
    mkdir -p /usr/local/jpeg6/include
    mkdir -p /usr/local/jpeg6/man
    mkdir -p /usr/local/jpeg6/man1
    mkdir -p /usr/local/jpeg6/man/man1

    tar zxvf jpegsrc.v6b.tar.gz
    cp /usr/local/libtool/share/libtool/config/config.sub      jpeg-6b/
    cp /usr/local/libtool/share/libtool/config/config.guess    jpeg-6b/

    cd jpeg-6b/
    ./configure –prefix=/usr/local/jpeg6/ –enable-shared –enable-static
    make
    make install
    cd ..

     

    #安装freetype
    tar zxvf freetype-2.3.9.tar.gz
    cd freetype-2.3.9
    ./configure –prefix=/usr/local/freetype
    make
    make install
    cd ..
    #安装libpng
    tar -zxvf libpng-1.2.36.tar.gz
    cd libpng-1.2.36
    ./configure –prefix=/usr/local/libpng
    make; make install
    cd ..
    #gd库
    tar -zxf gd-2.0.33.tar.gz
    cd gd-2.0.33
    ./configure –prefix=/usr/local/gd2 –with-jpeg=/usr/local/jpeg6 –with-png-dir=/usr/local/libpng  –with-freetype=/usr/local/freetype
    make; make install
    cd ..

    #curl
    tar -zxvf curl-7.19.4.tar.gz
    cd curl-7.19.4
    ./configure –prefix=/usr/local/curl
    make; make install

    #libxml2
    tar -zxf libxml2-2.6.30.tar.gz
    cd libxml2-2.6.30
    ./configure –prefix=/usr/local/libxml2
    make
    make install
    cd ..
    #libxslt
    tar zxvf libxslt-1.1.22.tar.gz
    cd libxslt-1.1.22
    ./configure –prefix=/usr/local/libxslt –with-libxml-prefix=/usr/local/libxml2
    make
    make install
    cd ..
    #关键时刻到了,安装php.注意,由于配置命令过长,加了”\”换行符
    tar zxvf php-5.2.9.tar.gz
    cd  php-5.2.9
    #当然,如果您怕出错,可以少加一些组件,等熟悉了在重新编译php。如:./configure –prefix=/usr/local/php –with-apxs2=/data1/apache/bin/apxs –with-mysql=/data1/mysql/
    ./configure –prefix=/usr/local/php  \
    –with-apxs2=/data1/apache/bin/apxs \
    –with-mysql=/data1/mysql \
    –with-curl=/usr/local/curl –enable-ftp \
    –with-libxml-dir=/usr/local/libxml2 \
    –enable-soap \
    –with-xsl=/usr/local/libxslt \
    –with-gd=/usr/local/gd2 \
    –with-jpeg-dir=/usr/local/jpeg6 \
    –with-png-dir=/usr/local/libpng \
    –with-zlib \
    –with-freetype-dir=/usr/local/freetype

    make
    make install

    cp php.ini-dist /usr/local/php/php.ini 
    第四步:重新配置apache2,能支持php
    vim /data1/apache/conf/httpd.conf
    在LoadModule php5_module modules/libphp5.so
    添加AddType application/x-httpd-php  .php
    /data1/apache/bin/apachectl start
    第六部 恭喜您,安装结束
    弄一个phpinfo.php放到/data1/apache/htdocs目录下,试验一下吧.

  • 生活互助信息服务网站前途

    发表于 2009年05月18日 admin 没有评论

        提供互联网生活互助信息服务的专业网站应该分两种,第一:就是接入服务,就是非常简便的为消费者以地域中心及时找到找到合适的服务。第二就是内容服务,这有点像好评网等作评测的网站。两者是两条链的不同部分,侧重点不同。

        如果某一个网站侧重点在提供接入服务,类似爱帮网,那么很正常的理解到他必须时是搜索引擎公司,而不是在做内容的公司。做搜索的公司是技术驱动型的公司,而做内容服务的公司是人力驱动型的公司,前者要求技术先进,后者要求员工足够多。

        爱帮网的技术背景具有为生活服务提供接入商的技术实力,组建一个技术类型的搜索公司为网民提供方便的介入服务成功的机率非常大。当然了,即使在搜索行业内,瞄准此项业务的不在少数。搜索行业内部的竞争也异常激烈,如新浪爱问的失败。基于地域的生活服务搜索算不算搜索行业类似图片搜索一样的一个分支,能不能做到像百度的图片和音乐搜索那样成功,也是前途迷茫。并且提供以地域为核心的生活服务搜索服务,离不开地图。而在地图领域,各公司目前是基于购买国家地质局的地图资料上的二次开发,互相新意不多,并且进入门槛不是太高,且核心数据掌握在国家地质局手中。

        类似好评网类型的网站,不应该把他们当成一个行业,而是比喻他们成为品牌推荐类型的网站,重点是人气和行业。为什么一窝蜂的做消费类产品的网站呢,而不是其他相对比较专业点的行业呢?因为消费类产品大家都是专家,大家都有说话的权利。如:汽车、房地产行业网站本质上和好评网一样的,只是大家侧重点不一样,程序、设计表现细微差距而已。