YUM介绍

Posted in Linux/Unix on April 25th, 2008 by Adam

一台新服务器上用的是Redhat Enterprise 5.1的操作系统(RHEL5),用up2date却说找不到这个命令,原来它用的是Yum 3.0来自动升级。Yum这东东我第一次接触,看看到到底是何来历。
Yum (Yellow dog Updater Modified) 是一中在LInux下与RPM兼容的软件包管理和自动升级软件,通过命令行来操作。用于Red Hat系统的更新和管理。已经被Fedora, centos和许多其他与RPM兼容的基于Linux发行版所运用,包括黄狗Linux的本身[难怪它叫Yellow dog Updater Modified B-)],用来取代原来的YUP(Yellowdog Updater),所以,可以说Yum是YUP与RPM的孩子。

主要命令如下:
安装: yum install package name
安装RPM: yum install my_package.RPM
组安装:yum groupinstall “MySQL Database”
升级:yum update package name
更新组:yum groupupdate “MySQL Database”
删除:yum remove package name
删除组:yum groupremove “MySQL Database”
搜索:yum list package name
高级搜索:yum search package name
更新系统:yum update
激活每天自动更新: /sbin/chkconfig –level 345 yum on; /sbin/service yum start
软件包名称说明:
例如:tsclient-0.132-6.i386.rpm
*软件包名称:tsclient
*带有版本号和发行版本的软件包名称:tsclient-0.132-6
*带有硬件架构的软件包名称:tsclient.i386

yum 以 名称.架构 的格式来列出软件包。仓库通常也将软件包存储在以架构区分的目录中。每次为软件包指定架构的时候,实际指定的是此软件对机器架构的 最低 要求。
i386 – 适于任何现有的 Intel 兼容计算机
noarch – 适于所有架构
ppc – 适于 PowerPC 系统,例如 Apple Power Macintosh
x86_64 – 适于 64 位 Intel 处理器,例如 Opterons

Tags:

mod_rewrite简单教程

Posted in Linux/Unix on April 22nd, 2008 by Adam

mod_rewrite是Apache模块中非常有用的一个模块,用于URL的重写与简洁化。
Version 1.2-1.3 来源
RewriteEngine on|off: 激活或者进制重写规则
RewriteBase /subcat 指定重写规则适用的根路径
RewriteCond TestString CondPattern :TestString是规则对象,CondPattern是匹配的具体规则;用于定义重写规则的条件;和RewriteRule一块使用。
常用的TestString包括以下服务器变量:
HTTP headers:HTTP_USER_AGENT, HTTP_REFERER, HTTP_COOKIE, HTTP_HOST, HTTP_ACCEPT
connection & request: REMOTE_ADDR, QUERY_STRING
server internals: DOCUMENT_ROOT, SERVER_PORT, SERVER_PROTOCOL
system stuff: TIME_YEAR, TIME_MON, TIME_DAY
RewriteRule Pattern Substitution: Pattern是规则表达式,Substitution是重写替换的对象。
下面是规则表达式的一些说明:

. 匹配任何单字符
[chars] 匹配字符串:chars
[^chars] 不匹配字符串:chars
text1|text2 可选择的字符串:text1或text2
? 匹配0到1个字符
* 匹配0到多个字符
+ 匹配1到多个字符
^ 字符串开始标志
$ 字符串结束标志
\n 转义符标志

反向引用 $N 用于 RewriteRule 中匹配的变量调用(0 <= N <= 9)
反向引用 %N 用于 RewriteCond 中最后一个匹配的变量调用(1 <= N <= 9)

RewriteCond适用的标志符
‘nocase|NC’ (no case)忽略大小
‘ornext|OR’ (or next condition)逻辑或,可以同时匹配多个RewriteCond条件

RewriteRule适用的标志符
‘redirect|R [=code]‘ (force redirect)强迫重写为基于http开头的外部转向(注意URL的变化) 如:[R=301,L]
‘forbidden|F’ (force URL to be forbidden)重写为禁止访问
‘proxy|P’ (force proxy)重写为通过代理访问的http路径
‘last|L’ (last rule)最后的重写规则标志,如果匹配,不再执行以后的规则
‘next|N’ (next round)循环同一个规则,直到不能满足匹配
‘chain|C’ (chained with next rule)如果匹配该规则,则继续下面的有Chain标志的规则。
‘type|T=MIME-type’ (force MIME type)指定MIME类型
‘nosubreq|NS’ (used only if no internal sub-request)如果是内部子请求则跳过
‘nocase|NC’ (no case)忽略大小
‘qsappend|QSA’ (query string append)附加查询字符串
‘noescape|NE’ (no URI escaping of output)禁止URL中的字符自动转义成%[0-9]+的形式。
‘passthrough|PT’ (pass through to next handler)将重写结果运用于mod_alias
‘skip|S=num’ (skip next rule(s))跳过下面几个规则
‘env|E=VAR:VAL’ (set environment variable)添加环境变量

Version 2.0 来源

注意:
.htaccess或conf文件中需要设置 RewriteEngine On
并且确认所在目录支持 Options FollowSymLinks

例子:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera [NC]
RewriteRule ^.* – [F,L] 这里”-”表示没有替换,浏览器为IE和Opera的访客将被禁止访问。

更多事例可以参考:http://httpd.apache.org/docs/2.0/rewrite/rewrite_guide.html

例子:
RewriteEngine On
RewriteBase /test
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ([^/]+)$ /test/$1.php
#for example: /test/admin => /test/admin.php
RewriteRule ([^/]+)\.html$ /test/$1.php [L]
#for example: /test/admin.html => /test/admin.php

限制目录只能显示图片
< IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !^.*\.(gif|jpg|jpeg|png|swf)$
RewriteRule .*$ – [F,L]
< /IfModule>

TAG标签重写
#/tag+me.html => /tag/me/
RewriteRule zhaiduo/tag/([0-9a-zA-Z]+)/$ zhaiduo/tag\+$1.html [L]
#/tag+me_2.html => /tag/me/2/
RewriteRule zhaiduo/tag/([0-9a-zA-Z]+)/([0-9]+)/$ zhaiduo/tag\+$1_$2.html [L]

Tags: ,

好用的Google图表插件

Posted in Google与Idea on March 26th, 2008 by Adam

Google Chart API提供一个很好的接口帮助我们快速生成各种统计图表。从常见的条状、线条、馅饼图表到维恩图(用于显示元素间的重迭关系),甚至用地图的方式来显示统计图表,种类繁多,应用灵活,给我们带来了很多方便,而且这个API可以不受限制的调用,我们可以很方便的在博客或其他网页上调用。感觉不足之处是不支持中文和和缺少动态的展示方式。

例如我们看看2008年台湾大选的得票比较图:

调用说明:
http://chart.apis.google.com/chart? 调用路径
chs=250×100& 调用变量chs:指定图表尺寸大小
chd=t:51.7,36.5,11.8& 调用变量chd:用逗号分割的数据组,可以用|分隔多组;不确定数据可用-1表示。t: 表示数据类型为数字 s:表示数据类型为单字母,如(chd=s:ATb19,Mn5t)e:表示数据类型为双字母,如(chd=e:AA,AZ,Aa)
cht=p3 调用变量cht:表示地图类型:

lc:线条 lxy:点线图 ls:火花线 bhs:水平对比条 bvs:垂直对比条
bhg:水平条 bvg:垂直条 chbh:指定条的宽度 p:饼状图 p3:三维饼状图
v: 重迭图 s:散点图 r:雷达图
t:地图 chtm指定地图区域

&chl=Ma|Xie|Others 调用变量chl:用逗号分割的对映数据的文字说明
更多用法:
chco: 指定颜色
chm: 区域颜色填充
chtt: 指定图表标题

Tags: ,

Smarty简单教程

Posted in PHP on March 17th, 2008 by Adam

Smarty简单教程翻译自Smarty Manual:

评论:{* this is a comment *}
输出变量值:
包含文件:{include file=’header.tpl’}
{$foo.bar} <-- 输出数组foo中,键名为bar的变量内容, 相当于 $foo['bar']
{$foo.$bar} <-- 输出数组foo中,键名为$bar的变量内容, 相当于 $foo[$bar]
{$foo->bar} <-- 输出对象foo的"bar"属性
{$foo->bar()} <-- 输出对象foo的"bar"方法
{#foo#} <-- 输出默认配置变量foo
{$smarty.config.foo} <-- {#foo#}的另外一种表达方式
{$foo[bar]} <-- {section}专用内部变量"bar"
{assign var=foo value='baa'}{$foo} <-- 模板中定义变量foo的值为"baa", 并输出
调用函数:{funcname attr1='val1' attr2='val2'}
If语句:
{if $logged_in}
Welcome, {$name}!
{else}
hi, {$name}
{/if}
输出$_GET变量”page”: {$smarty.get.page} => $_GET['page']
格式化时间:{$smarty.now|date_format:’%Y-%m-%d %H:%M:%S’}
定义常量:{$smarty.const.MY_CONST_VAL} => define(‘MY_CONST_VAL’,'CHERRIES’);
显示当前模板名称:{$smarty.template}
大写变量$title:{$title|upper}
字符串长度截取(40):{$title|truncate:40:’…’}
规则表达式:{$title|regex_replace:”/[\r\t\n]/”:” “}
for循环$myArray关联数组:
{foreach from=$myArray key=k item=v}

  • {$k}: {$v}
  • {/foreach}

    Tags:
    RSS Feed