博文

目前显示的是 2006的博文

mysql主从备份注意的地方

首先需要做主从的数据库必须一模一样,如果你的数据库已经运行过一段时间,建议你先删除所有的二进制日志文件,包括索引xxx.index这个文件,否则重启mysql会出错。 从服务器上已经删除掉所有的二进制日志文件,当然包括一个master.info这个文件。这个文件是用来记录主服务器上过来的日志文件和记录位置的。如果你不删除它,它还会按照之前的记录来做,所以会出问题,我在这里浪费了很多时间了。 主服务器诊断: show processlist;显示所有的进程。 show master status;显示主服务器的日志文件和指针位置。 mysql> show master status; +------------------+----------+----------------+------------------+ File Position Binlog_Do_DB Binlog_Ignore_DB +------------------+----------+----------------+------------------+ mysql-bin.000001 603 videoCommunity +------------------+----------+----------------+------------------+ 1 row in set (0.00 sec) mysql> show master status\G *************************** 1. row *************************** File: mysql-bin.000001 Position: 603 Binlog_Do_DB: videoCommunity Binlog_Ignore_DB: 1 row in set (0.00 sec) 如上图,mysql-bin.000001是日志记录文件,603是指针位置。 从服务器(slave)上诊断: mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master t

6680神奇的维修过程

周未,终于决定带着我的6680去以前那家买手机水货商家去维修,在人民广场那里.因为我买手机的时候,老板说让我买一张50元的维修卡,以后手机出问题了,可是到他那里免费修. 正好老板在,说他那个专修诺基亚的徒弟出门了,过一会儿就回了.我等了许久,没有回来,我跟老板说,我把手机号码留下来,等他回来后打电话给我. 然后我就跑到不远的"诺基亚上海唯一授权维修店"去看看,星期日人还真多啊,看来诺基亚的质量也不容乐观啊,取得一张自动排名等候系统的纸条就开始等待了,在我前面有20多个客户在等待. 无耐只好站在旁边看着漂亮的客服小姐为客户服务,这一次我改变了小姐是花瓶的看法.我前面的这位稍微有点胖,不过是那种可爱型的,说话也很耐心,于是我希望待会她能给我服务.我仔细观察了一下,她是双手接过用户的手机的,然后耐心地听顾客讲手机的问题,问明有没有备份,而且她们是帮忙备份的,并且耐心的解释,如果名片是放在卡上不会丢失,开不了机的机器是无法备份的.然后就是熟练的拆开机器,把面板和电池,手机卡等物放在袋子里由顾客保管,并且开据维修等待的单子,接着就把手机送到里面的工程师来维修,她就接着接待下一位顾客了. 她一边拆机器一边和旁边的另一个小姐聊天(幸好不是上海话,我能听懂):今天怎么这么多人啊?今天人是比较多,不过一般情况下星期日就是比星期六多的,大家都今天有时间吧.是啊,要是我,也是今天过来...... 我在一帝见她们服务态度是不错,可惜效率太低,不知道什么时候能轮到我,时间也不早,但水货JS那里还没有打电话给我,因为他们跟我说那徒弟一会儿就会回来,心想还是回去看看吧,说不定已经来,忘了打电话了.到了那里人还没有回来."商人永远是马上就到."继续又回到诺基亚,一边观察美女,一边等候. 终于轮到我了,也正好是那位我前文说道客服小姐,把手机给她,她首先问我是什么时候买的,我原来担心的是她会第一句话说是水货,不给保修呢.然后她帮我在电脑里查了一下,手机是境外手机,不给保的,我说没有关系,我可以付费维修.她仔细问了一下手机那里坏了,于是我描述了一下,说是手机屏幕有时会变白,变淡,过一会儿又好了,没有规律的出现这种情况,但屏幕变白的时候,还能通话.手机也争气,这个时候也是毛病发着的时候,省了我不少口舌.她没有先帮我拆机,说是先拿给工程师看看是什么回事.过了一会儿,估

samba的网页管理界面安装swat

swat是一个网页管理界面.他的安装说明中这样的. In /etc/services you need to add a line like this: swat 901/tcp In /etc/inetd.conf you should add a line like this: swat stream tcp nowait.400 root /usr/local/samba/sbin/swat swat 但CentOS4.3中已经取消inetd服务了,而取而代之的是inetd.d下各个文件代替一个服务. 当然可以使用xinetd.d来代替,可以修改/etc/xinetd.d/swat这个文件 # default: off # description: SWAT is the Samba Web Admin Tool. Use swat # to configure your Samba server. To use SWAT, # connect to port 901 with your favorite web browser. service swat { disable = no port = 901 socket_type = stream wait = no # only_from = 172.16.192.60 bind = 172.16.192.60 user = root server = /usr/sbin/swat log_on_failure += USERID 其中bind 这一行是我后加上的,为这个郁闷了好久,后面可以是IP也可以是网卡名称,如eth0.

批量在.rar文件中加入文件的批处理脚本

@echo on for %%f in (*.rar *.zip) do winrar.exe a %%f maxgo.cn.html echo on 回显开启 %%f 为参数 ()内为参数内容 代表该目录下所有的rar和zip文件 winrar.exe 从winrar安装目录中拷贝 maxgo.cn.html 要添加的文件 将此代码写入txt文件保存为.bat运行即可

维护Postfix的一些脚本、程序集锦

作为一名Postfix的管理员,维护Postfix的正常运行,并随时排除故障,这是最基本的任务。本文提供了一些我自己写及平时搜集到的脚本和程序,以便实现自动化的维护和操作。包括自动清理日志,分析日志,自动增加用户等等。 分析拒收邮件的日志分析程序 作者:Wietse Venema Message 6 in thread 寄件者:Wietse Venema ([email protected]) 主旨:Re: Freebsd Postifx Daily messages View this article only 新闻群组:mailing.postfix.users 日期:2002-12-01 10:48:47 PST Here's my own /etc/periodic/daily/460.status-mail-rejects script, and yes it needs updating when logging formats change. This script will not show rejected mail when the client never returned after a soft (450) error code from the server. I use 450 for non-FQDN HELO hostnames, so that I can whitelist mis-configured sites that aren't spammers. Wietse #!/bin/sh # echo ""; echo "Scanning maillog for rejections:" zcat -fc /var/log/maillog.0* /var/log/maillog | egrep reject: | cut -d : -f 5- | sort | uniq -c | sort -nr | grep -v '^ *[1-2] *[^ ]* [^ ]* from [^ ]*: 450 ' echo ""; echo "Scanning maillog for warnings:" zcat -f

Squid2.5+自定义日记

Squid2.6由于不能自由定义不同源的虚拟主机,所以只好使用2.5,可惜2.5的日志不能自定义。 补丁下载的网址: http://devel.squid-cache.org/customlog/ 可以生成Apache combined日志补丁 下载回来放到源码目录,运行 patch -p0 < customlog-2.5.patch 然后重新编译: ./configure --prefix=/usr/local/squid --enable-delay-pools --enable-useragent-log --enable-referer-log --enable-default-err-language=Simplify_Chinese --enable-x-accelerator-vary --enable-kill-parent-hack --enable-err-languages="Simplif y_Chinese English" --with-pthreads --with-aio --enable-cache-digests --with-large-files 编译结束后, 在  squid.conf 中添加:  logformat combined %>a - %un [%{%d/%b/%Y:%H:%M:%S +0800}tl] "%rm %ru HTTP/%rv" %Hs % h" "%{User-agent}>h" cache_access_log /var/squid/logs/access.log combined 一个支持 combined 日志模式的 Squid 即告完成。  注意, 这里用了 +0800 ,绕过了使用 tl 的 %z 或者 %Z 的问题,用 z% ,将显示为 25%z ,可能是 patch 有问题。  Squid custom log format Basic syntax: %...field where ... is an optional field width. On numeric fields the output will be 0 padded if the field width starts with

squid中的cachemgr.cgi使用(原创)

图片
下载回来squid的tar.gz包,如果要使用cachemgr.cgi的网页管理功能. 请编译时加入: --enable-cachemgr-hostname --enable-cachemgr-port 这样就可以不仅仅查看本机的squid运行情况了,当然还能指定端口. 如图: 然后修改你的--prefix=/path 中的/etc下的cachemgr.conf文件,加入对你所要控制的IP地址和端口,格式是:IP:PORT,或者是:*.* 把libexec/cachemrg.cgi拷到apache下的cgi-bin下. 关于这里的密码验证我还没有研究,是通过squid.conf下的cachegr_passwdg来控制. 当然你要在这里加入如下文字,以防止cachemrg对别人使用. acl Manager proto cache_object acl Localhost src 127.0.0.1/255.255.255.255 http_access allow Manager Localhost http_access deny Manager

squid中的refresh_pattern详解

图片
refresh_pattern 大概是 squid 最有意思但最不好懂的配置参数了,经过看书,大概明白如何使用,写出来贡献。 记住refresh_pattern 只对后端没设置Expires过期时间的页面起作用,比如论坛页面;而对类似apache mod_expires 设置过的页面不起作用。 说明之前,先将个概念LM,LM就是页面Header里时间(Date)和Last-Modified时间的差。Date一般是Squid从后面取页面的时间,Last-Modified 一般是页面生成时间。 refresh_pattern 的语法是refresh_pattern [-i] regexp min percent max [options]regexp 就不讲了,大家都明白的;) min, max的单位是分钟,percent就是百分比。 refresh_pattern 的算法如下:(当前时间定义为CURRENT_DATE) 1) If ((CURRENT_DATE-DATE(就是LM里定义的时间)) < min),cache是新鲜的 2) else if ((CURRENT_DATE-DATE) < (min + (max-min)*percent),cache是新鲜的 3) else cache是过期的 cache过期就需要从后面server取新鲜内容。 如果希望页面一进入cache就不删除,直到被主动purge掉为止,可以加上ignore-reload选项 一般情况可以使用 reload-into-ims。 举例: refresh_pattern -i \.gif$ 1440 50% 2880 ignore-reload refresh_pattern -i \.jpg$ 1440 50% 2880 ignore-reload refresh_pattern -i \.png$ 1440 50% 2880 ignore-reload refresh_pattern -i \.mp3$ 1440 50% 2880 ignore-reload refresh_pattern -i \.wmv$ 1440 50% 2880

在Vista中IE使用五笔

图片
昨天终于试着安装了下载回来的Vista RC1 5600,安装过程很顺利,似乎比XP还要快。 不过晚上试着在IE里使用五笔输入法弄了很长时间,几乎试了所有的输入法都不行。 还装上N多垃圾软件,受不了这些智能陈桥的作者了,垃圾作者,是软件员的败类。 后来,我试着在安全模式下关闭帐号的ACL控制,后来果然在IE里能用五笔了。

jdk5.0update8+jboss4.04.centos4.3安装过程.

首先从sun下载到jdk的安装包. 有两种包,分别是: jdk-1_5_0_08-linux-i586-rpm.bin(自解压,安装包) jdk-1_5_0_08-linux-i586.bin(自解压) 都是chmod +x filename 然后./filename 翻页到最后,输入Yes jdk就安装好了,jdk其实被安装到/usr/java/jdk1.5.0_08/bin 所以需要到 /etc/profile.d/下建立 java.sh文件 然后在这个文件里加入: export PATH=$PATH:/usr/java/jdk1.5.0_08/bin 这样java就可以用了,你可以试着用java -version来查看版本号,不知道这次的jdk为什么为1.4一下子跳到5.0了,其实是1.5. 然后就是下载jboss-4.0.4.GA.zip,到官方网站找一下吧. 然后unzip一下,把这个目录拷到/usr/local/jboss 然后到bin/运行./run.bat jboss就安装好了.

linux时间设置

date 查看,配置系统上的时间 clock 查看,配置系统硬件上的时间 clock --set --date="09/17/2003 13:26:00" tzselect 文本界面的时区设置 timeconfig 图形界面的时区设置 rdate -s time.nist.gov 和时间服务器同步. clock的帮助 [root@smtp02 ~]# clock --help hwclock - query and set the hardware clock (RTC) Usage: hwclock [function] [options...] Functions: --help show this help --show read hardware clock and print result --set set the rtc to the time given with --date --hctosys set the system time from the hardware clock --systohc set the hardware clock to the current system time --adjust adjust the rtc to account for systematic drift since the clock was last set or adjusted --getepoch print out the kernel's hardware clock epoch value --setepoch set the kernel's hardware clock epoch value to the value given with --epoch --version print out the version of hwclock to stdout Opt

RamDisk三种实现方式

  在Linux中可以将一部分内存mount为分区来使用,通常称之为RamDisk,分为:   Ramdisk, ramfs, tmpfs.   ① 第一种就是传统意义上的,可以格式化,然后加载。   这在Linux内核2.0/2.2就已经支持,其不足之处是大小固定,之后不能改变。   为了能够使用Ramdisk,我们在编译内核时须将block device中的Ramdisk支持选上,它下面还有两个选项,一个是设定Ramdisk的大小,默认是4096k;另一个是initrd的支持。   如果对Ramdisk的支持已经编译进内核,我们就可以使用它了:   首先查看一下可用的RamDisk,使用ls /dev/ram*   首先创建一个目录,比如test,运行mkdir /mnt/test;   然后对/dev/ram0 创建文件系统,运行mke2fs /dev/ram0;   最后挂载 /dev/ram0,运行mount /dev/ram /mnt/test,就可以象对普通硬盘一样对它进行操作了。   ② 另两种则是内核2.4才支持的,通过Ramfs或者Tmpfs来实现:   它们不需经过格式化,用起来灵活,其大小随所需要的空间而增加或减少。   Ramfs顾名思义是内存文件系统,它处于虚拟文件系统(VFS)层,而不像ramdisk那样基于虚拟在内存中的其他文件系统(ex2fs)。   因而,它无需格式化,可以创建多个,只要内存足够,在创建时可以指定其最大能使用的内存大小。   如果你的Linux已经将Ramfs编译进内核,你就可以很容易地使用Ramfs了。创建一个目录,加载Ramfs到该目录即可:   # mkdir /testRam   # mount -t ramfs none /testRAM   缺省情况下,Ramfs被限制最多可使用内存大小的一半。可以通过maxsize(以kbyte为单位)选项来改变。    # mount -t ramfs none /testRAM -o maxsize=2000 (创建了一个限定最大使用内存为2M的ramdisk)   ③ Tmpfs是一个虚拟内存文件系统,它不同于传统的用块设备形式来实现的Ramdisk,也不同于针对物理内存的Ramfs。   Tmpfs可以使用物理内存,也可以使用交换分区。在Linux内核中,虚拟

发现微软的DNS的Bug

system : windows 2003 DNS version: Microsoft Corporation 版本: 5.2.3790.1830 测试发现微软DNS无法解析一个域名的别名是别一个域名的的情形. 比如我的两个域名,www.5uf.net,www.naivix.com 我把 www.5uf.net cname 设置为 cache.naivix.com cache.naivix.com则A记录指向一个IP,如1.2.3.4 ,在nslookup指定bind的域名服务器时,正常把 www.5uf.net 指到1.2.3.4 但当域名服务器指回使用微软的dns时,就无法获得这个A记录了. 但能找到 www.5uf.net 的别名,cache也可以找到A记录. 所以测试结果认为是这是微软的一个bug.

[转载]Linux系统命令(系统设置)

Linux系统命令(系统设置) apmd(advanced power management BIOS daemon) 功能说明:进阶电源管理服务程序。 语  法:apmd [-u v V W][-p ][-w ] 补充说明:apmd负责BIOS进阶电源管理(APM)相关的记录,警告与管理工作。 参  数: -p 或--percentage 当电力变化的幅度超出设置的百分比变化量,即记录事件百分比变化量的预设值为5,若设置值超过100,则关闭此功能。 -u或--utc 将BIOS时钟设为UTC,以便从悬待模式恢复时,将-u参数传送至clock或hwclock程序。 -v或--verbose 记录所有的APM事件。 -V或--version 显示版本信息。 -w 或--warn 当电池不在充电状态时,且电池电量低于设置的百分比值,则在syslog(2)的ALERT层记录警告信息。百分比值的预设置为10,若设置为0,则关闭此功能。 -W或--wall 发出警告信息给所有人。 alias 功能说明:设置指令的别名。 语  法:alias[别名]=[指令名称] 补充说明:用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。 alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在.profile或.cshrc中设定指令的别名。 参  数:若不加任何参数,则列出目前所有的别名设置。 aumix(audio mixer) 功能说明:设置音效装置。 语  法:aumix [-123bcilmoprstvwWx][(+/-)强度][PqR][-dfhILqS] 补充说明:设置各项音效装置的信号强度以及指定播放与录音的装置。 参  数: [-123bcilmoprstvwWx]为频道参数,用来指定装置的频道;[PqR]可用来指定播放或录音装置;[-dfhILqS] 则为指令参数。若不加任何参数,aumix会显示简单的图形界面供调整设置频道参数: -1  输入信号线1。 -2  输入信号线2。 -3  输入信号线3。 -b  低音。 -c  CD。 -i  输入信号强度。 -m  麦克风。 -o  输出信号强度。 -p  PC喇叭。 -r  录音。 -s  合成器。 -t  高音。 -v  主音量。 -w  PCM。 -W  PCM

(资料)Linux's Shell 详解

shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。  什么是shell Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。 shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。 shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。 有一些命令,比如改变工作目录命令cd,是包含在shell内部的。还有一些命令,例如拷贝命令cp和移动命令rm,是存在于文件系统中某个目录下的单独的程序。对用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序。 shell首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv,或者是自由软件,如emacs)。然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。如果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并传给Linux内核。   shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。 当普通用户成功登录,系统将执行一个称为shell的程序。正是shell进程提供了命令行提示符。作为默认值(TurboLinux系统默认的shell是BASH),对普通用户用“$”作提示符,对超级用户(root)用“#”作提示符。 一旦出现了shell提示符,就可以键入命令名称及命令所需要的参数。shell将执行这些命令。如果一条命令花费了很长的时间

终于搞定了T43在MAC下的网卡问题

图片
现在可以正常可以使用苹果发文章了。 这是我在MAC下抓图。

Cmsware使用

2.6自定义函数部分 //自定义增加的调用函数请加到此行以下 function addautoimg($str){ $clear_pattern = array( '1' => array( 'pattern'=>"/ ]+src=\"([^\"]+)\"[^>]*>/isU" ,replace=>" src=\"$1\" border=\"0\" onload=\"if(this.width>1024*0.5) {this.resized=true;this.width=1024*0.5; this.alt='Click here to open new window CTRL+Mouse wheel to zoom in/out/点击这里打开一个新的窗口观看,可以使用CTRL+鼠标滚动来放大或缩小';}\" onmouseover=\"if(this.width>1024*0.5) {this.resized=true; this.width=1024*0.5; this.style.cursor='hand'; this.alt='Click here to open new window CTRL+Mouse wheel to zoom in/out/点击这里打开一个新的窗口观看,可以使用CTRL+鼠标滚动来放大或缩小';}\" onclick=\"if(!this.resized) {return true;} else {window.open('$1');}\" onmousewheel=\"return imgzoom(this);\">" ), );

卫星接收器的骗局

早上很早起床,送Judy到火车站赶汽车,回来的时候,直接回公司太早,正好路旁有人在卖" 卫星接收器"的小装置,并演示着用一台小黑白电视机,来接收卫星节目. 我曾经在徐家汇的地铁口也遇到过这样的东西,当时就是以为是个骗局,所以没有买,不过后来一直后悔这个事,今天遇到,当然要看看,演示者的确能收到很多台.节目也不像是假的,我在高中的时候就看到过一张"直销"的小报纸上,"用几元的电器配件做成卫星接收器的"技术,我来汇款来买了呢,等了一个月,没有收到任何回复,打电话过去,已经是空号了.当时还天真地打了当地的110报警呢.这件事让我永远记住了"广东湛江"这个地方. 这次又碰到,当然买下了,20元说贵也不贵,不好意思地是,我买下后,也有很多人跟着买下了,不知道是不是托了. 回去的路上一直觉得不对,回公司后也基本上想通了,是个骗局了.下班到家竟然忘了在电视机上试一下真假,后来看到才想起来,于是搜了一下台,基本上还是有线电视的台.出乎意外也没有愤怒,拆开一看,里面就是一个直连线路. 等会上图.

一百年后的博客

忽发奇想,一百年后我现在的博客还公存在么? 古人喜欢著书立说,目的是把自己的思想留传下来,而我们的博客的目的呢?我想也正是基于此吧. 于是我寻思着找一个希望能够发现保留下自己思想的地方. 我一直在找一个适合我放blog的地方,自己有能力架设一个博客空间,目前也有能力来维护它,可是一百年以后呢,我还能维护着它么?到时我的域名和空间没有人来续费,那么我的思想就会消失?真是可怕,我很早以前想过"人活着的意义",我想寻求自己的解释,于是我最后得到的结论是:"人活着就是为了能把自己的思想留传下来,把自己的思想传播得越多,受到感染的人越多,那么对于你来说就没有死,死的只是躯体,而肉体对于任何人来说是一样的,而不一样的是思想". 于是我寻找着希望能找到一个永远存放我的博客的地方,然后这个过程是痛苦的,国外的服务对于关键字限制得太多,而国内的对于功能又有限,甚至我还怀疑他们的存在时间还不如我活着的时间. 我希望一百年 ... 真是很难选择啊? 一直想着一百年以后我的博客会是什么样?一直能留芳百世,所以自己有能力有N多服务器,架设自己的博客服务,而且自己可以随意选择程序,随意改模板,可惜我死了以后,我的博客就意味着消亡. 所以我想寻找一个有信誉的博客服务商,最喜欢google的,可惜google的博客托管被大陆封了,而且还有非常严的关键字过滤功能. MSN的空间巨难看,速度又慢. 再看看新浪的,不能自定义模板,看看网易的,也不能,而且默认模板比新浪还难看.百度的能定义的CSS,不过速度有点慢,而且可以定义的很有限,不是很喜欢 其它小托管的公司,我担心他们死得比我还要早,麻烦啊. 你们是怎么安身自己的博客的?

iis和apache在win上共用80端口的一篇文章

IIS 6.0: Setting Metabase Property DisableSocketPooling Has No Effect View products that this article applies to. Article ID : 813368 Last Review : January 13, 2004 Revision : 1.0 On this page SYMPTOMS CAUSE RESOLUTION To install Microsoft Windows support tools: To add an IP address to the IP inclusion list: STATUS MORE INFORMATION REFERENCES APPLIES TO SYMPTOMS When you start Internet Information Services (IIS) 6.0 on Microsoft Windows Server 2003, IIS binds to all IP addresses on the server, not just the IP addresses that are assigned to Web sites. This may be true even though you have set the metabase property DisableSocketPooling to True. Back to the top CAUSE To successfully allow applications to use the same port on different IP addresses, you must use a new utility, Httpcfg.exe. Httpcfg.exe is located on the Windows Server 2003 CD in the Support\Tools directory as part of the Support.cab file. Back to the top RESOLUTION To install Microsoft Windows support tools: 1. Insert

正则表达式系统教程

正则表达式系统教程 1. 引子   目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。   正则表达式的使用,可以通过简单的办法来实现强大的功能。为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的。   例子: ^.+@.+\\..+$   这样的代码曾经多次把我自己给吓退过。可能很多人也是被这样的代码给吓跑的吧。继续阅读本文将让你也可以自由应用这样的代码。   注意:这里的第7部分跟前面的内容看起来似乎有些重复,目的是把前面表格里的部分重新描述了一次,目的是让这些内容更容易理解。 2. 正则表达式的历史   正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。   1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。   随后,发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。   如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。 3. 正则表达式定义   正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。   列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的。   正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表

在南京见到的农民工午饭情景

图片
他们中午的午饭就是这样,两个共吃一碗小菜,我不知道他们那些饭是那里来的?但菜却少的惊人,没有汤,更没有可以坐的地方.但他们仍然吃香很香. 这是我在南京网通机房前用手机拍摄到的一幅照片,鱼市口那里,离南京市中心很近.  

回淮工看了看

图片
 

IPFW中文手册

ipfw 是 FreeBSD 内建的防火墙指令,我们可以用它来管理进出的网络交通。如果防火墙服务器是扮演着路由器 (gateway 例如上一篇中的 NAT 服务器) 的角色,则进出的封包会被 ipfw 处理二次,而如果防火墙扮演的是桥接器 (bridge) 的角色,则封包只会被处理一次。这个观念关系着我们以下所要介绍的语法,有的语法并不适用于桥接器。 另外,我们在设定防火墙时有二种模式,一种模式是预设拒绝所有联机,再一条一条加入允许的联机;另一种是预设接受所有联机,加入几条拒绝的规则。如果是非常强调安全性,应该是使用预设拒绝所有联机,再一条一条加入我们允许的规则。 我们会将 firewall 的设定写在 /etc/rc.firewall 中,每一条设定都是以先入为主 (first match wins) 的方式来呈现,也就是先符合的规则 (rules) 为优先。所有进出的封包都会被这些规则过滤,因此我们会尽量减少规则的数量,以加速处理的速度。 在 kernel 中,关于防火墙的设定有下列几条: # 防火墙 options IPFIREWALL # 支援 NAT options IPDIVERT # 下面这一行是预设允许所有封包通过,如果没有这一行, # 就必须在 /etc/rc.firewall 中设定封包的规则。 # 这条规则内定编号是 65535,也就是所有规则的最后一条 # 如果没有加这一条规则,内定就是拒绝所有封包, # 只允许规则中允许的封包通过。 options IPFIREWALL_DEFAULT_TO_ACCEPT # 这一行是让你可以在 ipfw 中设定要记录哪些封包, # 如果没有这一行,就算设定了要留下记录也不会有作用。 options IPFIREWALL_VERBOSE # 这一行是限制每一条规则所要记录的封包数量, # 因为同样的规则可能有许多记录,加上这一条可以使 # 同样的记录重复数减少,以避免记录文件爆增。 options IPFIREWALL_VERBOSE_LIMIT=10 # 下面这一行是用来支援封包转向, # 当你要使用 fwd 动作时必须要有这一项设定。 options IPFIREWALL_FORWARD # 如果要使用 pipe 来限制频宽,必须加入下列选项以支持 dummynet。 options DUMMYNET