Updates from 六月, 2009

  • Browser-specific CSS hacks

    shishirui 18:48 on 2009/06/17 | 0 Permalink | Reply

    /***** Selector Hacks ******/

    /* IE6 and below */
    * html #uno  { color: red }

    /* IE7 */
    *:first-child+html #dos { color: red }

    /* IE7, FF, Saf, Opera  */
    html>body #tres { color: red }

    /* IE8, FF, Saf, Opera (Everything but IE 6,7) */
    html>/**/body #cuatro { color: red }

    /* Opera 9.27 and below, safari 2 */
    html:first-child #cinco { color: red }

    /* Safari 2-3 */
    html[xmlns*=""] body:last-child #seis { color: red }

    /* safari 3+, chrome 1+, opera9+, ff 3.5+ */
    body:nth-of-type(1) #siete { color: red }

    /* safari 3+, chrome 1+, opera9+, ff 3.5+ */
    body:first-of-type #ocho {  color: red }

    /* saf3+, chrome1+ */
    @media screen and (-webkit-min-device-pixel-ratio:0) {
    #diez  { color: red  }
    }

    /* Safari 2 - 3.1 */
    html[xmlns*=""]:root #trece  { color: red  }

    /* Safari 2 - 3.1, Opera 9.25 */
    *|html[xmlns*=""] #catorce { color: red  }

    /* Everything but IE6-8 */
    :root *> #quince { color: red  }

    /* IE7 */
    *+html #dieciocho {  color: red }

    /***** Attribute Hacks ******/

    /* IE6 */
    #once { _color: blue }

    /* IE6, IE7 */
    #doce { *color: blue }

    /* Everything but IE6 */
    #diecisiete { color/**/: blue }

    /* IE6, IE7, IE8 */
    #diecinueve { color: blue\9; }

    /* IE7, IE8 */
    #veinte { color/*\**/: blue\9; }

     
  • Install Fonts in Ubuntu

    shishirui 21:36 on 2009/06/09 | 0 Permalink | Reply

    cd ~

    If '.fonts' folder is not exists, create it:

    mkdir .fonts

    Move your ttf font file to here, then restart application. OK!

    monaco - code font in mac os x

    monaco.ttf example

     
  • Vim的diff模式常用命令

    shishirui 00:41 on 2009/06/07 | 0 Permalink | Reply

    :diffsplit {filename}
    进入diff模式, 默认是水平分割, 如果要垂直分割, 可以在.vimrc中添加set diffopt=vertical

    [c & ]c
    在差异的部分进行跳转

    :diffget
    用另一个缓冲区来修改当前缓冲区, 消除不同之处, 仅对光标所在行附近有影响

    :diffput
    用当前缓冲区来修改另一个缓冲区, 消除不同之处, 仅对光标所在行附近有影响

    :diffupdate
    刷新

     
  • 关于mysql的select ... for update 锁定

    shishirui 09:38 on 2009/06/05 | 0 Permalink | Reply

    由於 InnoDB 预设是 Row-Level Lock,所以只有「明确」的指定主键,MySQL 才会执行 Row lock (只锁住被选取的资料例) ,否则 MySQL 将会执行 Table Lock (将整个资料表单给锁住)。

    举个例子:

    假设有个表单 products ,裡面有 id 跟 name 二个栏位,id 是主键。

    例1: (明确指定主键,并且有此笔资料,row lock)

    SELECT * FROM products WHERE id='3' FOR UPDATE;

    例2: (明确指定主键,若查无此笔资料,无 lock)

    SELECT * FROM products WHERE id='-1' FOR UPDATE;

    例2: (无主键,table lock)

    SELECT * FROM products WHERE name='Mouse' FOR UPDATE;

    例3: (主键不明确,table lock)

    SELECT * FROM products WHERE id<>'3' FOR UPDATE;

    例4: (主键不明确,table lock)

    SELECT * FROM products WHERE id LIKE '3' FOR UPDATE;

    註1:
    FOR UPDATE 仅适用於 InnoDB,且必须在交易区块(BEGIN/COMMIT)中才能生效。

    註2:
    要测试锁定的状况,可以利用 MySQL 的 Command Mode ,开二个视窗来做测试。

     
  • php中的安全模式是指的什么?

    shishirui 14:51 on 2009/06/03 | 0 Permalink | Reply

    PHP 的安全模式是为了试图解决共享服务器(shared-server)安全问题而设立的。在结构上,试图在 PHP 层上解决这个问题是不合理的,但修改 WEB 服务器层和操作系统层显得非常不现实。因此许多人,特别是 ISP,目前使用安全模式。

    表格 24-1. 控制安全模式的设置选项有:

    设置选项 默认值
    safe_mode Off
    safe_mode_gid 0
    safe_mode_include_dir ""
    safe_mode_exec_dir 1
    open_basedir ""
    safe_mode_allowed_env_vars PHP_
    safe_mode_protected_env_vars LD_LIBRARY_PATH
    disable_functions ""

    当 safe_mode 设置为 on,PHP 将检查当前脚本的拥有者是否和将被文件函数操作的文件的拥有者相匹配。例如: -rw-rw-r-- 1 rasmus rasmus 33 Jul 1 19:20 script.php
    -rw-r--r-- 1 root root 1116 May 26 18:01 /etc/passwd

    运行 script.php

    <?php
    readfile(’/etc/passwd’);
    ?>

    如果安全模式被激活,则将会导致以下错误: Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
    allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2

    同时,或许会存在这样的环境,在该环境下,宽松的 GID 检查已足够,但严格的 UID 检查反而是不适合的。你能用 safe_mode_gid 选项来控制这种检查。如果设置为 On 则进行宽松的 GID 检查;设置为 Off(默认值)则进行 UID 检查。

    除了 safe_mode 以外,如果你设置了 open_basedir 选项,则所有的文件操作将被限制在你指定的目录下。例如: <Directory /docroot>
    php_admin_value open_basedir /docroot
    </Directory>

    如果你在设置了 open_basedir 选项后运行同样的 script.php,则其结果会是: Warning: open_basedir restriction in effect. File is in wrong directory in
    /docroot/script.php on line 2

    你也能独立地屏蔽某些函数。请注意 disable_functions 选项不能在 php.ini 文件外部使用,也就是说你无法在 httpd.conf 文件的按不同虚拟主机或不同目录的方式来屏蔽函数。 如果我们将如下内容加入到 php.ini 文件: disable_functions readfile,system

    则我们会得到如下的输出: Warning: readfile() has been disabled for security reasons in
    /docroot/script.php on line 2

    被安全模式限制或屏蔽的函数
    以下安全模式列表可能不完整或不正确。

    安全模式限制函数

    函数名 限制
    dbmopen() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。
    dbase_open() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。
    filepro() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。
    filepro_rowcount() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。
    filepro_retrieve() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。
    ifx_*() sql_safe_mode 限制, (!= safe mode)
    ingres_*() sql_safe_mode 限制, (!= safe mode)
    mysql_*() sql_safe_mode 限制, (!= safe mode)
    pg_loimport() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。
    posix_mkfifo() 将检查你将要操作的目录和正在执行的脚本是否有相同的 UID。
    putenv() 遵循 ini 设置的 safe_mode_protected_env_vars 和 safe_mode_allowed_env_vars 选项。请参考 putenv() 函数的有关文件。
    move_uploaded_file() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。
    chdir() 将检查你将要操作的目录和正在执行的脚本是否有相同的 UID。
    dl() 该函数在安全模式中已被屏蔽。
    backtick operator 该函数在安全模式中已被屏蔽。
    shell_exec()(在功能上和 backticks 函数相同) 该函数在安全模式中已被屏蔽。
    exec() 你只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。
    system() 你只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。
    passthru() 你只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。
    popen() 你只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。
    mkdir() 将检查你将要操作的目录和正在执行的脚本是否有相同的 UID。
    rmdir() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。
    rename() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。 将检查你将要操作的目录和正在执行的脚本是否有相同的 UID。
    unlink() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。 将检查你将要操作的目录和正在执行的脚本是否有相同的 UID。
    copy() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。 将检查你将要操作的目录和正在执行的脚本是否有相同的 UID。 (on source and target)
    chgrp() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。
    chown() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。
    chmod() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。 另外,你不能设置 SUID、SGID 和 sticky bits
    touch() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。 将检查你将要操作的目录和正在执行的脚本是否有相同的 UID。
    symlink() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。 将检查你将要操作的目录和正在执行的脚本是否有相同的 UID。 (注意:仅测试 target)
    link() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。 将检查你将要操作的目录和正在执行的脚本是否有相同的 UID。 (注意:仅测试 target)
    getallheaders() 在安全模式下,以“authorization”(区分大小写)开头的头信息将不会被返回。警告:getallheaders() 无法在 aol-server 下实现!
    header() 在安全模式下,如果你设置了 WWW-Authenticate,当前脚本的 uid 将被添加到该头信息的 realm 部分。
    highlight_file(), show_source() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。 将检查你将要操作的目录和正在执行的脚本是否有相同的 UID。 (注意,仅在 4.2.1 版本后有效)
    parse_ini_file() 将检查你将要操作的文件/目录和正在执行的脚本是否有相同的 UID。 将检查你将要操作的目录和正在执行的脚本是否有相同的 UID。 (注意,仅在 4.2.1 版本后有效)

     
  • PHP:APC (Alternative PHP Cache)

    shishirui 12:54 on 2009/06/03 | 0 Permalink | Reply

    Alternative PHP Cache(APC)是 PHP 的一个免费公开的优化代码缓存。它用来提供免费,公开并且强健的架构来缓存和优化 PHP 的中间代码。

    http://cn.php.net/apc

     
  • Access数据库字段类型说明以及与SQL之间的对照关系

    shishirui 10:58 on 2009/06/03 | 0 Permalink | Reply

    文本 nvarchar(n)

    备注 ntext

    数字(长整型) int

    数字(整型) smallint

    数字(单精度) real

    数字(双精度) float

    数字(字节) tinyint

    货币 money

    日期 smalldatetime

    布尔 bit

    附:转换成SQL的脚本。

    ALTER TABLE tb ALTER COLUMN aa Byte 数字[字节]
    ALTER TABLE tb ALTER COLUMN aa Long 数字[长整型]
    ALTER TABLE tb ALTER COLUMN aa Short 数字[整型]
    ALTER TABLE tb ALTER COLUMN aa Single 数字[单精度
    ALTER TABLE tb ALTER COLUMN aa Double 数字[双精度]
    ALTER TABLE tb ALTER COLUMN aa Currency 货币
    ALTER TABLE tb ALTER COLUMN aa Char 文本
    ALTER TABLE tb ALTER COLUMN aa Text(n) 文本,其中n表示字段大小
    ALTER TABLE tb ALTER COLUMN aa Binary 二进制
    ALTER TABLE tb ALTER COLUMN aa Counter 自动编号
    ALTER TABLE tb ALTER COLUMN aa Memo 备注
    ALTER TABLE tb ALTER COLUMN aa Time 日期/时间

    在表的设计视图中,每一个字段都有设计类型,Access允许九种数据类型:文本、备注、数值、日期/时间、货币、自动编号、是/否、OLE对象、超级链接、查询向导。

    文本:这种类型允许最大255个字符或数字,Access默认的大小是50个字符,而且系统只保存输入到字段中的字符,而不保存文本字段中未用位置上的空字符。可以设置“字段大小”属性控制可输入的最大字符长度。
    备注:这种类型用来保存长度较长的文本及数字,它允许字段能够存储长达64000个字符的内容。但Access不能对备注字段进行排序或索引,却可以对文本字段进行排序和索引。在备注字段中虽然可以搜索文本,但却不如在有索引的文本字段中搜索得快。
    数字:这种字段类型可以用来存储进行算术计算的数字数据,用户还可以设置“字段大小”属性定义一个特定的数字类型,任何指定为数字数据类型的字 型可以设置成“字节”、“整数”、“长整数”、“单精度数”、“双精度数”、“同步复制ID”、“小数”五种类型。在Access中通常默认为“双精度数 ”。
    日期/时间:这种类型是用来存储日期、时间或日期时间一起的,每个日期/时间字段需要8个字节来存储空间。
    货币:这种类型是数字数据类型的特殊类型,等价于具有双精度属性的数字字段类型。向货币字段输入数据时,不必键入人民币符号和千位处的逗 号,Access会自动显示人民币符号和逗号,并添加两位小数到货币字段。当小数部分多于两位时,Access会对数据进行四舍五入。精确度为小数点左方 15位数及右方4位数。
    自动编号:这种类型较为特殊,每次向表格添加新记录时,Access会自动插入唯一顺序或者随机编号,即在自动编号字段中指定某一数值。自动 编号一旦被指定,就会永久地与记录连接。如果删除了表格中含有自动编号字段的一个记录后,Access并不会为表格自动编号字段重新编号。当添加某一记录 时,Access不再使用已被删除的自动编号字段的数值,而是重新按递增的规律重新赋值。
    是/否:这种字段是针对于某一字段中只包含两个不同的可选值而设立的字段,通过是/否数据类型的格式特性,用户可以对是/否字段进行选择。
    OLE对象:这个字段是指字段允许单独地“链接”或“嵌入”OLE对象。添加数据到OLE对象字段时,可以链接或嵌入Access表中的OLE 对象是指在其他使用OLE协议程序创建的对象,例如WORD文档、EXCEL电子表格、图像、声音或其他二进制数据。OLE对象字段最大可为1GB,它主 要受磁盘空间限制。
    超级链接:这个字段主要是用来保存超级链接的,包含作为超级链接地址的文本或以文本形式存储的字符与数字的组合。当单击一个超级链接 时,WEB浏览器或Access将根据超级链接地址到达指定的目标。超级链接最多可包含三部分:一是在字段或控件中显示的文本;二是到文件或页面的路径; 三是在文件或页面中的地址。在这个字段或控件中插入超级链接地址最简单的方法就是在“插入”菜单中单击“超级链接”命令。
    查阅向导:这个字段类型为用户提供了一个建立字段内容的列表,可以在列表中选择所列内容作为添入字段的内容。

     
  • 国外的一个类twitter的开源程序 - laconica

    shishirui 10:36 on 2009/06/03 | 0 Permalink | Reply

    程序已经比较成熟了,使用面向对象的写法,支持API、多语言、插件,并拥有丰富的客户端。

    http://laconi.ca/trac/wiki/

     
  • 推荐:《构建高性能Web站点》

    shishirui 16:24 on 2009/06/02 | 0 Permalink | Reply

    朋友写的的一本书,将在9月出版。个人认为很不错,推荐!

    书名

    构建高性能Web站点(暂定)

    内容介绍

    本书围绕如何构建高性能Web站点,从多个方面多个角度进行了全面的阐述,涵盖了Web站点性能优化的几乎所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式缓存、Web服务器缓存、反向代理缓存、脚本解释速度、页面组件分离、浏览器本地缓存、浏览器并发请求、文件的分发、数据库I/O优 化、数据库访问、数据库分布式设计、负载均衡、分布式文件系统、性能监控等。这些内容中充分抓住本质并结合实践,通过通俗易懂的文字和生动有趣的配图,让 读者充分并深入理解高性能架构的真相。同时,本书充分应用跨学科知识和科学分析方法,通过宽泛的视野和独特的角度,将本书的内容展现的更加透彻和趣味。

    创作目的

    兴趣、总结、分享、提高

    一些热门关键词

    产品类:apache, lighttp, nginx, mongrel, varnish, squid, haproxy, lvs, memcache, memcacheDB, memcacheQ, dbslayer, mysql,  berkeley DB, samba, nfs, rsync, ssh, mogilefs, php, ruby, python, gearman, fastcgi, ssi, cacti, nmon, mrtg, ab, rails, smarty, apc, xcache, psyco, xdebug, simplefailover, hadoop,  map/reduce, s3, ec2, google app engine, bigtable, NetScaler, f5

    概念类:bandwidth(带宽), latency time(响应时间), concurrency strategy(并发策略), throughput(吞吐率), epoll, aio(异步IO), direct io(直接IO), sendfile, context switch(上下文切换), syscall(系统调用), kernel, edge triggered(边缘出发), cache, http, opcode(操作码), web server, reverse proxy(反向代理), cdn(内容分发网络), denormalization(反范式化), database sharding(数据库水平分区), dynamic DNS updates(动态DNS更新), SAN storage(网络存储), raid(磁盘阵列), cluster(集群), high availability(高可用性), failover(故障转移), high scalability(高扩展性), load balancer(负载均衡), distributed file system(分布式文件系统), distributed computing(分布式计算), asynchronous computing(异步计算), distributed storage system(分布式存储), distributed message queue(分布式消息队列),parallel computing(并行计算), could computing(云计算), could storage(云存储)

    预计上市时间

    2009年9月

    出版社

    电子工业出版社&博文视点

    当前进度

    25w字/60w字

    截至目前完成的内容目录,请浏览 http://groups.google.com/group/highperformanceweb/web/《构建高性能web站点》已完成内容索引

    同题材blog

    预计5月份将启动主题为“high performance web”的blog,长期致力于高性能Web站点相关研究内容的分享,包括技术、架构、语言、原理、资讯等,作为本书的延展阅读资源。

    讨论组

    在本书上市之前,除专业评审团外,本书希望听到更多的建议和支持,如果你希望了解本书编写进展、预览部分内容、提出宝贵建议,你可以加入以下讨论组,这样我便可以在邮件列表中找到你,不定期发送你感兴趣的内容。

    对于讨论组活跃的成员,新书上市后会获得赠送版,以表感谢。

    http://groups.google.com/group/highperformanceweb

    highperformanceweb@googlegroups.com

    以上内容仅为副本,查看原文请浏览 http://groups.google.com/group/highperformanceweb/web/《构建高性能web站点》阶段性进展

     
  • 关于Memcache::get方法的返回值

    shishirui 15:36 on 2009/06/02 | 0 Permalink | Reply

    Memcache的get方法

    1. 如果参数是string 出错或缓存不存在会返回false
    2. 如果参数是数组,出错返回false, 缓存不存在会返回array();

    特殊类型的存储

    Memcache只能储存字符串,除此之外类型的数据都被转化之后(在PHP的实现中是通过序列化)储存,但是也有特殊情况:

    false => 空字符串       true => 字符串1
    null  => null           1    => 字符串1
    array => array()        "1"  => 字符串1
    0     => 字符串0
    “0”   => 字符串0
    0.0   => 字符串0
    "0.0" => “0.0”

    所以在使用的时候,一定要注意数据的类型。

     
c
撰写新文章
j
下一篇
k
上一篇
r
回复
e
编辑
o
显示/隐藏评论
t
返回顶部
esc
关闭