• 进入dmp文件所在目录后输入imp命令,命令如下:

    imp “system/manager@sid AS sysdba" rows=y indexes=n commit=y ignore=y buffer=65536 volsize=0 file=epx_icdmain_yyyymmdd.dmp log=imp_icdmain_yyyymmdd.log

     

    参数说明:

    ignore

        y,遇到已存在的表导入数据

        n,遇到已存在的表不导入数据

     

    indexes

        n,唯一索引外的其他索引不会被恢复

     

    buffer

        缓冲区大小

     

    userid

        用户名/口令

     

    full(n)

        y,导入整个文件

     

    fromuser

        所有人用户名列表

     

    touser

        用户名列表

     

    grants(y)

        y,导入权限

     

    commit(n)

        y,提交数组插入

     

    rows(y)

        y,导入数据行

     

    constraints(y)

        y,导入限制

     

    destroy(n)

        y,覆盖表空间数据文件

     

    parfile

        参数文件名

     

    skip_unusable_indexes(n)

        跳过不可用索引的维护

     

    analyze(y)

        执行转存文件中的analyze语句

     

    feedback(0)

        每x行显示进度

     

    filesize

        转存文件最大尺寸

     

    transport_tablespace(n)

        导入可传输的表空间元数据

  • Step 1. php安装目录下,运行go-pear.bat(确认参数时,将第11项中的ini文件路径改到php安装目录下)

    Step 2. php安装目录下找到PEAR_ENV.reg,双击,添加至注册表

    Step 3. 打开cmd,转至php安装目录下,先后输入下面两条指令

    pear install OLE-1.0.0RC1

    pear install Spreadsheet_Excel_Writer-0.9.2

     

     

  • 【cmd】mklink 2011-01-25

    1. 以管理员身份运行 cmd.exe

    2. mklink [/d|/j|/h] 链接文件(目录) 源文件(目录)

    默认创建符号链接

    /d 符号链接

    /j 软链接

    /h 硬链接

     

    PS. 

    相关文章:http://blog.ihabit.cn/more-about-mklink/

  • HTTP 1.1中最大连接数为2,而不同浏览器默认设定是不同的,IE6、7是2个,IE8、FF和Chrome都是6个。当然也可以手动更改这个值。

    FireFox:

    1. 在地址栏输入 about:config
    2. 此时会有一个警告This might be void your warranty!,确认即可
    3. 找到network.http.max-persistent-connections-per-server,默认值为6,建议修改为12

  • RSS规范 2010-07-09

    Feed Validator地址

    http://validator.w3.org/feed/check.cgi?url=

     

    email地址

    item的author中email的正确格式如下

    Stanley@example.com (Stanley Wang)

    前面是email地址,后面括号中的是姓名

     

    日期格式

    错误提示:element must be an RFC-822 date-time

    pubDate,lastBuildDate中的日期必须是 RFC-822 date-time,正确格式如下

    Wed, 02 Oct 2002 13:00:00 GMT

    如果使用smarty的date_format,则参数为%a, %d %b %Y %H:%M:%S

    最后的GMT代表格林威治时间,中国的话可以替换为+0800

     

    MIME type

    如果是用php输出的rss的话,需要用header输出Content-Type

    RSS feeds 1.0 为 application/rdf+xml

    RSS feeds 2.0 为 application/rss+xml

    Atom feeds 为 application/atom+xml

     

    RSS本身的链接

    错误提示:

    Missing atom:link with rel="self"

    解决方法:

    首先要在rss标签中声明Atom的Namespace,如下:

    <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

    在channel标签中应该加入带有rel="self"的atom:link标签,格式如下:

    <atom:link href="http://dallas.example.com/rss.xml" rel="self" type="application/rss+xml" />

     

  • sprintf()也会要求第一个参数中每个%都有有对应的参数,所以在下面的例子中,如果URL中带有%则会提示Too few arguments

    $sFormat = $sUrl ."_%s";

    $sRetval = sprintf($sFormat, $s1);

     

    而将有可能含有%的Url作为参数则可避免这个错误

    $sFormat = "%s_%s";

    $sRetval = sprintf($sFormat, $sUrl, $s1);

     

  • ALTER TABLE 2010-06-10

    发现MySQL中Alter Table的某些用法和w3school上给的不太一样。在修改某一字段类型时,应该使用:

    ALTER TABLE `table_name`  MODIFY `column_name` data_type

    而不是

    ALTER TABLE `table_name` ALTER COLUMN `column_name` data_type

  • 测试一下 2010-06-02

    这是个验证码

    woshao_b3e4fb76746d11dfa693000c29a2aec6

  •  

    Apache httpd

     

    apt-get install 软件包名

    需要安装的软件包:

     

    • gcc
    • make
    • autoconf
    • automake
    • libtool
    • libxml2-dev

     

     

    下载apache httpd

    tar -xvf 文件名

    ./configure --prefix=安装路径(如:/usr/local/apache)

     

    • --enable-20
    • --with-mpm=worker
    • --enable-rewrite

     

     

    sudo make

    sudo make install

    sudo make clean

    apache/bin/apachectl start

     

     

    PHP

     

    ./configure

    • -- prefix=安装目录(如:/usr/local/php)
    • --with-apxs2=apache安装目录/bin/apxs
    • --with-zlib

    PS. 可在phpinfo()中的Configure Command中查看安装时使用的命令

     

    打开 apache/conf/httpd.conf,在末尾添加 AddType application/x-httpd-php .php

     

    MySQL

     

    • mysql-client
    • mysql-server
    • mysql-devel
    • mysql-shared

     

    alien --scripts *.rpm

    dpkg -i 软件包(deb格式)

     

    sudo mysql_install_db

    安装路径: /var/lib/mysql

    mysqld_safe --user=root &

    mysql -u root

     

    set password for '用户名'@'范围(如:localhost)'=password('密码');

    mysql -u root -p

     

    show grants

    grant all privileges on *.* to '用户名'@'%' with grant option

  • 在RewriteRule中,如果规则中没有重写GET参数,原有的GET参数是可以直接传递的。

     

    但如果在重写时定义了其他的GET参数,则原有的GET参数就都没了。如

    RewriteRule    ^([0-9a-zA-Z]+)    /user.php?user_name=$1

    用上面的代码将url重写到user.php下,这时如果在用户名后有GET参数,如stanley?p1=v1,在user.php中只能得到$_GET['user_name'],而没有$_GET['p1']

     

    若需要传递原有的GET参数,不必用正则去写RewriteRule,直接使用%{QUERY_STRING}就可以获取原有的所有参数,如

    RewriteRule    ^([0-9a-zA-Z]+)    /user.php?user_name=$1&%{QUERY_STRING}

  • MemcacheQ 2010-03-19

    安装memcache

    • 下载php_memcache.dll,地址:http://downloads.php.net/pierre/
    • 将php_memcache.dll放进php/ext文件夹
    • 修改php.ini,加入exetension=php_memcache.dll
    • 重启apache

     

    MemcacheQ的用法

    连接
    $memcache_obj = memcache_connect(MEMCACHEQ_HOST, MEMCACHEQ_PORT);
    关闭连接
    memcache_close($memcache_obj);
    将数据加入到队列中
    memcache_set($memcache_obj, $queue_name, $data, 0, 0);
    从队列中读取数据
    $data = memcache_get($memcache_obj, $queue_name);

     

    察看MemcacheQ中的内容:

    • 控制面板 > 程序 > 打开或关闭Windows功能,选中Telnet客户端
    • 打开cmd,输入telnet ip地址 段口号
    • 输入stats queue

     

     

  • 版本分支图(Revision Graph)中,按住ctrl键,先后选取上旧版本和新版本(一定要先选旧版本,再选新版本)。右键后选择Compare revisions,在打开的窗口中选中全部文件后右键Export selection to。这样就可以直接把两个版本间所有变更的文件都导出到指定路径。

  • 基本命令 2010-03-08

    ls (list)

    -a all,显示全部

    -l

    |more

     

     

    cd (change directory)

     

     

    mv (move)

     

     

    cp (copy)

     

     

    rm (remove)

     

     

    mkdir (make directory)

     

     

    关机

    sudu shutdown -P now

     

  • 【Excel】引用 2010-03-05

    引用文字的做法是用&将表格标号或字符连接起来,字符的话需要用半角"括起来。

    例如如想将B2中和C2中的内容用-连起来,可输入=B2&"-"&C2。

  • 用chr()可以得到指定ASCII码对应的字符,如

    echo chr(97); 输出的结果是 a

     

    用ord()可以获得指定字符的ASCII码,如

    echo ord('a'); 输出的结果是 97

    如果ord()的参数不是一个字符,则会返回第一个字符所对应的ascii码,如

    echo ord('abc'); 输出的结果还是 97

  • 【PHP】抽象类 2010-02-25

    抽象类的声明方法和普通类类似,只要在class前加上abstract就可以了。如下:

    abstract class Game {

    ...

    }

     

    抽象类中的方法不一定要被实现,可以声明没有函数体的原型方法(没有{}及之间的内容),如下:

    abstract class Game {

        abstract protected function getPlatform();

    }

     

    抽象类中声明的原型方法要在继承自该抽象类的实现类中实现,如下:

    class PCGame extends Game {

        public function getPlatform() {

            return 'PC';

        }

    }

     

    继承自抽象类的抽象类,可以不实现父类中的原型方法。如下

    abstract class TVGame extends Game {

    }

     

    抽象类中除了可以声明原型方法,也可以生成完成的方法。如下

    abstract class Game {

        abstract protected function getPlatform();

        protected function getName() {

            ......

        }

    }

     

    PS.

    一个类不可继承自多个抽象类

     

    在抽象类里声明的原型方法,在继承该抽象类的实现类中对应的实现方法必须是相同或更低等级的,即

    抽象类中为private,则实现了中可以是private、protected或public

    抽象类中为protected,则实现类中只能是protected或public

    抽象类中为public,则实现类中必须是public

  • $smarty.const 2010-02-24

    刚发现在smarty里能直接使用{$smarty.const名}访问PHP中定义的常量。如

    {$smarty.const.CONSTANT_NAME}

  • 【HTML5】ruby 2010-02-22

    ruby 标签用户注音,需要注音的文字后接一对rt标签,最外层用ruby标签括起来。

    如用假名给日文中的汉字注音:

    <ruby>

         漢 <rt> ㄏㄢˋ </rt>

         字 <rt> ㄗˋ  </rt>

    </ruby>

     

    或中文中用拼音给汉字注音:

    <ruby>

     汉 <rt> hàn </rt>

     字 <rt> zì  </rt>

    </ruby>

  • 【CSS】media 2010-02-01

    在引用外部css文件时,可以通过link标签的media属性定义该css对应的媒介。以这种方式可以为打印设置单独的css文件。如:

    <link rel="text/css" href="css/style.css" media="screen" />

    <link rel="text/css" href="css/print.css" media="print" />

     

    woshao_6ce113d7c4c9e40ad4553b8fbe614918

     

  • Smarty插件 2010-01-28

    Smarty的插件有很多种,常见的有modifier、block和function。

     

    modifier

    modifier是作用于一个给定的smarty变量的,调用方法如下:

    不带参数:{$string|函数名}

    带参数:{$string|函数名:'参数1'}

     

    在指定的插件路径下方一个名称为modifier.函数名.php的文件,其中包含函数smarty_modifier_函数名()

    其中第一个参数为作用的变量(前例中的$string),后面是可选参数。在函数的最后,要有一个返回值。

     

    block

    block是作用于一段内容的,其调用方式如下:

    {函数名}content{/函数名}

     

    在指定的smarty插件放置路径下加一个名为block.函数名.php的文件,并在文件中包含函数

    smarty_block_函数名($params, $content, &$smarty, &$repeat)

    其中

    $params为包含参数的数组

    $content是{函数名}{/函数名}间的内容

     

     

    function

    function的调用方式如下:

    {函数名 参数名=参数值}

    在指定路径下放一个名为function.函数名.php的文件,其中要包含函数

    smarty_function_函数名($params, &$smarty)

    其中

    $params为包含全部参数的数组

  • 观察按键 2010-01-26

    prototype中观察按键,并不是用Event.observe,而要用document.observe()。用法和Event.observe基本一致。如要禁止用户按F5刷新,代码如下:

    document.observe("keydown", KeyDownHandler);

    function KeyDownHadler(event) {

    if(event.keyCode == 116) {

    event.stop();

    alert("F5 will not work");

    }

    }

  • 链接中的参入如果也是个链接需要进行url转义,在PHP、Smarty和JavaScript中转义的方式如下:

    PHP: urlencode()

    Smarty: |escape:'url'

    JavaScript: encodeURIComponent()

     

    需要注意的是,如果一个参数是链接,该链接还有一个参数也为链接,那此处就需要进行两次URL转义。如:

    $sTarget = 'http://www.apple.com';

    $sForward = 'router.php?target=' . urlencode();

    $sLink = 'login.php?forward=' . urlencode($sForward);

  • Insert Into常用的语法是后接Values(),在括号中按顺序输入所有字段对应的值,如:

    INSERT INTO `table1` VALUES('values1', 'values2', ...)

    或是给定字段名,并按顺序给出字段对应的值,如:

    INSERT INTO `table1`(`column1`, `column2`) VALUES('value1', 'value2')

     

    其实还有另一种方法,即在table后不接VALUES,直接用SELECT语句,如:

    INSERT INTO `user_rank` (`user_id`, `rank`) SELECT `id`, `rank` FROM `users` WHERE `name` = 'stanley'

    这样可以直接把users表中name为stanley的用户的id和rank插入到user_rank表中。

     

    在SELECT后,除了字段名,其实还可以加其他内容,如:

    INSERT INTO `user_rank` (`user_id`, `rank`) SELECT `id`, 1 FROM `users` WHERE `name` = 'stanley'

     

    Navicat中没法直接Copy/Paste二进制的问题就可以用这种方式解决了。

  • 在JS中对stringObject进行正则匹配,可以用search(),match() 或 replace(),语法如下
    stringObject.search(regexp)
    stringObject.match(regexp)
    stringObject.replace(regexp,replacement)

    在()中的正则不需要用引号括起来,如
    str.match(/google.(com|cn)/i)

    其中match()不但可以匹配正则,也可以匹配字符串,如
    str.match("google.com")

    replace()中的第二个参数可以是字符串,还可以使用$n来引用前面正则中用()匹配到的内容,但需要用引号括起来。如
    str.replace(/([0-9a-zA-Z]+)\s*([0-9a-zA-Z]+)/g, "$2 $1")

  • &conditions[]=1

    $_GET['conditions'] 为 array([0] => 1)

     

    &conditions[level]=1

    $_GET['conditions'] 为 array([‘level'] => 1)

  • <a id="GoToGoogle" href="javascript:void(0);" onclick="location.href='http://www.google.com'" />Go to google.com</a>

     

    上面是一个a标签,通过设置onclick事件实现转跳。该链接在IE下无法转跳(因为最后的void(0)表示什么都不做)。有两种方法可以解决:

     

    方法1

    通过在设置location.href后添加return false停止动作,即:

    <a id="GoToGoogle" href="###" onclick="location.href='http://www.google.com';return false;" />Go to google.com</a>

    var anchor = document.getElementById('GoToGoogle');

    anchor.onclick = function() {

    location.href='http://www.google.com';

    return false;

    }

     

    需要注意的是,如果是用prototype的Event.observe方式实现的onclick,在其中加return false就不好使了。

    需要在其中使用stop()。如下:

    var anchor = $('GoToGoogle');

    function redirectToGoogle(e) {

    location.href = 'http://www.google.com';

    }

    Event.observe(anchor, 'onclick', function(e){

    e.stop();

    redirectToGoogle();

    });

     

     

    方法2:

    将href中的javascript:void(0)改为###

    <a id="GoToGoogle" href="###" onclick="location.href='http://www.google.com'" />Go to google.com</a>

  • CKEditor 3 配置 2010-01-11

     

    ckeditor 3的配置要比之前简单一些,在ckeditor所在目录下有个config.js,可以在CKEDITOR.editorConfig中进行设置。

    CKEDITOR.editorConfig = function( config ) {

    ...

    };

     

     

    语言:

        config.language = 'zh-cn';

     

    上传:

        config.filebrowserImageUploadUrl = '../ckeditor/upload.php?type=img';

        config.filebrowserFlashUploadUrl = '../ckeditor/upload.php?type=flash';

     

    宽、高:

        config.height = 600;

        config.width = 800;

     

    工具栏:

        config.toolbar =

        [

            ['Bold','Italic','Underline','NumberedList','BulletedList'],

            ['Link','Unlink','Image','Table'],

            ['PageBreak'],

            '/',

            ['Styles','Format','Font','FontSize','TextColor','BGColor'],

            ['Source','-','Undo','Redo']

        ];

     

     

  • 可以利用border-image属性分别设定4条边和4个角的图像

    border-top-image:

    border-right-image:

    border-bottom-image:

    border-left-image:

    border-top-left-image:

    border-top-right-image:

    border-bottom-left-image:

    border-bottom-right-image:

     

    除了设置图像,还可以直接给边框设置渐变色,同样可以分别设置4条边。

    border-top-color: 色号1 色号2 色号3 ..

    border-right-color: 色号1 色号2 色号3 ...

    border-bottom-color: 色号1 色号2 色号3 ...

    border-left-color: 色号1 色号2 色号3 ...

    暂时只有FF支持,所以前面要加-moz-

  • 以前要想实现圆角,都需要用背景图来实现。要是想做一个可缩放的带圆角的Div,就要使用“滑动门”类的技术,使用4张背景图。而在CSS3中,用一个border-radius属性就可以搞定。用法如下:

    border-radius: 10px;

    属性的值为圆角的半径。还可以为4个角设置不同的半径:

    border-radius-topleft: 5px;

    border-radius-topright: 5px;

     

    border-radius-bottomleft: 5px;

    border-radius-bottomright: 5px;


     

    虽然border-radius是CSS3中的属性,不过FF、Safari、Chorme都已经通过前缀的方式支持该属性,即在前面加-webkit-或-moz-,如:

    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;

  • 在做页面时用<li>做导航时遇到这么一个问题,对a标签设置了float后,一排导航链接应该是平行着排开,结果却从左到右每个都向下串了一点。经过计算以后,发现不是width计算错误。也不是双倍margin的问题(display:inline-block无效)。后来才发现将<a>外层的<li>设为float:left,而不对<a>进行float设置,这个问题都解决了。

     

    <ul id="Nav">

    <li><a href="">xxxx</a></li>

    </ul>

     

    css

    #Nav li {

      float:left

    }

     

    #Nav li a {

      display:block;

      ...

    }