Erjing’s homepage

September 25, 2008

奶牛产奶需要受孕吗?公奶牛产奶吗?奶牛是不是可以永久性产奶?N个问题俺总算搞清楚了。

Filed under: I love life — Tags: — erjing @ 10:25 am

无标题文档我想是个人基本都会喝过牛奶,大家没见过奶牛,也看过奶牛的照片吧,很多人一定以为奶牛是一个专用的品种,应该是通过某种基因改良,生下来几天就长大,长大了就能产奶了….其实….

昨天和朋友聊奶牛,今天特地去CCTV上查询了一下,开始回放:

问您个事啊,奶牛有公的吗?要是有的话,它产不产奶呢?奶牛是从什么时候开始产奶的呢?是不是一生下来就有奶呢?这些问题听起来简单吧,可有如此疑问的人还真不在少数。


应该没公的吧公奶牛不会有!

我觉得不会有

有! 应该有吧

您看看,问题虽然很简单,可是回答的人都似事而非的!看来真正了解奶牛的人并不多呀,既然如此,咱们就到奶牛场看看去。

这里是北京市通州区的一家养牛场,关于奶牛的问题,咱们先到这儿找找答案。这么多的奶牛里,公奶牛肯定也有吧,要不然怎么下小牛犊呀!

这个圈里养的全是1岁多的公奶牛,与它们同龄的母奶牛都能清楚地看到乳房了,而公奶牛不论是站着、还是卧着,都看不到乳房,所以这公奶牛肯定是产不了奶的。既然它产不了奶,为什么还叫奶牛呢?

北京市奶牛中心三元绿荷第一牧场高级畜牧师李俊鹏 通俗地讲 奶牛之所以叫奶牛 是因为第一具备产奶能力 它能产奶 第二它产奶量高 像黄牛 役用牛它不叫奶牛 是因为它虽然具备产奶能力 但它产奶量太低了

奶牛作为一个品种,是相对于肉牛和役用牛来说的。奶牛产奶多,那一头奶牛一天能产多少奶呢?

一天起码能产五升吧 我估计四 五升

几升吧

奶牛一天才产几升的奶!这恐怕也太少了吧!那它一天到底能产多少奶、这些奶又是怎么挤出来的呢?咱们到挤奶的地方瞧瞧去!

过去挤牛奶,都是用手工,又费时又费力,现在都改用机器挤奶了。这蓝盖的小盒子就是吸奶泵,吸奶管一旦对准了乳头,奶就 被吸到泵里,顺着管道汇集到一 起。奶越吸越少,泵的动力也越来越小,奶的流量跟不上趟时,泵就不再使劲,吸奶管自动脱落。这个仪表盘上的数字就是奶牛的产量,这头奶牛一次产了18.8 公斤的奶。如果咱们每天喝一斤奶的话,这一头奶牛一次产的奶就够咱喝上1个多月了!

奶牛一天要挤三次奶,早上、中午、晚上各一次。高产奶牛一天能产奶30多公斤,一年能产奶9000多公斤,9000多公斤是个什么概念呢?

北京市三元奶牛养殖中心 宣传部部长 张九迎:这是咱们载重量9吨的奶车 咱们一头奶牛一年的产奶量能装满这一罐奶车

记者出场:没想到吧,一头奶牛一年能有这么大的产奶量,对养牛的朋友来说,产奶多就意味着什么?钱多,所以真得把这些奶牛给伺候好喽。不过话说回来,这奶牛可不是一生下来就会产奶,那它长到多大、得具备什么条件才能产奶呢?

我觉得它应该长着长着就产奶了 不是生小牛才有奶的 否则那得生多少小牛啊

一般就是比较好的奶牛要到四五年才行 要是能产奶的话 应该是再小一点也行

大部分的人都认为,奶牛之所以叫奶牛,是因为它天生就会产奶。所以,小牛长到一定的程度,自然就能产奶了,事实果真如此吗?

这是一头刚出生的小奶牛,像其他的小奶牛一样,它也要在这里生活上两个多月,这里就是小奶牛们的保育院!小家伙们的一日三餐,都由专业的保育院阿姨来照顾。现在是上午的9点多种,阿姨来送早点了!这位沾了离路边近的光,先吃上了!

没出满月的小奶牛乳房都没有发育,就连乳头也要把拉开毛才能看清楚。这个时候的小奶牛别说产奶了,它还要靠吃妈妈的奶才能生活呢。

两个月的保育院幸福时光很快就过去了,小奶牛们已经断了奶,家也搬到了这个大院子里,过起了自己找饭吃的集体生活。

北京三元奶牛养殖中心第一牧场 高级畜牧师 李俊鹏:按它们的年龄算的话 应该相当于小孩的幼儿园 要说幼儿园的话也就是大班 它们现在能产奶了吗 现在还产不了奶

刚刚学会生活自理的小奶牛们,对什么都感兴趣,它们一天到晚东游西逛,时不时地露出个乳房的小轮廓!

奶牛长到一岁了,已经出落成一个标致的奶牛小姐了!不光毛色亮丽,举止也优雅端庄了些,尤其是它的乳房已经发育完全了,这时候的小牛是不是就可以产奶了呢?

北京三元奶牛养殖中心第一牧场 级畜牧师 李俊鹏:这个阶段的牛相当于人的哪个年龄段 十四五岁 相当于人的青春期 也不会产奶

看来,小牛得等到长大成年后才能产奶了,那么小奶牛长到多大才算成年了呢?

北 京三元奶牛养殖中心第一牧场高级畜牧师 李俊鹏:成年的标准应该是分娩以后 开始泌乳 按现在这个月龄来说 它达到了性成熟 具备了繁殖生育的能力 但是它还没有达到体成熟 体成熟有两个非常重要的指标 一个是体重 应该达到380公斤左右 体高的话应该达到127厘米左右 只有达到这两个标准 才能够配种

原来,奶牛也并不是天生就会产奶,而是要等到分娩生子后才可以。这个大院居住的都是已经怀上了小牛的准妈妈们。瞧瞧,它们是一个比一个懒,一个比一个爱嚼果,它们还要过多长时间才产小牛呢?

北京三元奶牛养殖中心第一牧场高级畜牧师 李俊鹏:一般奶牛的怀孕期是280天 那么简单地推算预产期的方法是减3加6 也就说配种月份减3 配种日期加6 就可以推算出一头奶牛的分娩日期

咱打个比方说,如果有一头奶牛是在2006年的6月25日配种成功的话,套用推算公式:6月减3为3月,25日加6为31日,那么那头奶牛的分娩日期应该是在2007年3月31日左右。

有倒是牛尾巴打死个苍蝇:赶巧了,听说今天也有奶牛分娩了,那它是不是已经有奶了呢?咱赶紧瞧瞧去!

北京三元奶牛养殖中心第一牧场 畜牧师 武生志 可以产奶了 因为它刚刚生完小牛 它吊着的那个是什么 那是它的胎盘 也称脱衣 胎衣大体在产完牛犊后的8-12个小时就可以排除

看,奶牛的乳头上已经有乳汁流出了,这是它的初乳!(二斤注:这就是所谓的牛初乳啦!

奶牛从当上妈妈的第一天起,就开始产奶了。这生育子女就如同是打开了它的产奶伐门。这伐门一旦打开了,奶牛一生是不是就一直可以产奶了呢?

北京三元奶牛养殖中心第一牧场畜牧师 武生志 不可能 因为随着它泌乳时间的生长 它的产奶量在逐渐地减少 这样需要奶牛继续怀孕继续产犊 进入到下一胎次的产奶

奶牛的妊娠期是280天, 生下牛犊后产奶305天,那么大体上来说奶牛是不是一年怀小牛,一年产奶呢?事实上可不是这么回事。奶牛的幸福时光只有两年多,从它产下头胎小牛后的第 60天就要接受人工受精,它是边产奶边孕育小牛,直到预产期前的两个月,才可以断奶休息。而两个月后第二胎小牛落地,它就又进入到下一个产奶、怀孕循环。

记者出场:您看,这当奶牛可真是不容易的,要想多产奶,就得不断地重复怀孕、生产的过程,多辛苦啊。知道了这些,咱们是不是也得多讲究点动物福利,好好对待它们呢?

二斤总结性发言:这才清楚了,原来即便是奶牛,也需要首先受孕的,产下第一胎才会产奶,这就是牛初乳。按照奶牛的品种不一样,每天产奶的量和次数都不一样。为了保证奶牛产奶,奶牛一年基本上没有几天休息的,同时要保证在一个很高的受孕率环境下。

不同的奶牛受孕率不一样,比如奶牛奶水牛的受孕率就不一样,为了提高受孕率,人们想了很多办法,通常是人工加自动(就是公牛去干该干的事情)。提高受孕率也是奶牛产奶的重要保证。受孕的间隔,如何受孕,要根据不同的品种以及品种的实际情况来决定了。

奶牛产下的小牛怎么办?其实小牛喝不了那么多牛奶的,一般来说奶牛带三个月,就隔离开育青了。至于小牛的前途…当下一代奶牛..当下一代公牛…还是下一代餐桌美食…管不了那么多….

特别提示,新疆部分奶牛品种已经有了一天44公斤产量的记录,但是早上就能产奶22公斤。具体奶的质量不清楚,比如蛋白质含量,脂肪含量…各种维生素含量…

今天学习新知识了。

Filed under: I love life — erjing @ 3:19 am

今天去guqi和羊蹄子的咖啡屋转了一圈,看到了guqi的作品。

让俺张了不少见识。看来摄影还是要多学习,多和高手学习,多观摩高手的作品才行。

September 18, 2008

正则表达式。

Filed under: linux, linux script, 计算机与 Internet — erjing @ 10:39 pm
中国电话号码验证 
匹配形式如:0511-4405222或者021-878888822或者 021-44055520-555 或者 (0511)44052222
正则表达式 “((d{3,4})|d{3,4}-)?d{7,8}(-d{3})*”

中国邮政编码验证
匹配形式如:215421
正则表达式 “d{6}”

电子邮件验证
匹配形式如:justali@justdn.com
正则表达式 “w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*”

身份证验证
匹配形式如:15位或者18位身份证
正则表达式 “d{18}|d{15}”

常用数字验证
正则表达式
“d{n}” n为规定长度
“d{n,m}” n到m的长度范围

非法字符验证
匹配非法字符如:< > & / ‘ |
正则表达式 [^<>&/|’\]+

日期验证
匹配形式如:20030718,030718
范围:1900–2099
正则表达式((((19){1}|(20){1})d{2})|d{2})[01]{1}d{1}[0-3]{1}d{1}
正则表达式是一个好东西,但是一般情况下,我们需要验证的内容少之又少。下面是常用的17种正则表达式:

“^\d+$”  //非负整数(正整数 + 0)

“^[0-9]*[1-9][0-9]*$”  //正整数

“^((-\d+)|(0+))$”  //非正整数(负整数 + 0)

“^-[0-9]*[1-9][0-9]*$”  //负整数

“^-?\d+$”    //整数

“^\d+(\.\d+)?$”  //非负浮点数(正浮点数 + 0)

“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$”  //正浮点数

“^((-\d+(\.\d+)?)|(0+(\.0+)?))$”  //非正浮点数(负浮点数 + 0)

“^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$”  //负浮点数

“^(-?\d+)(\.\d+)?$”  //浮点数

“^[A-Za-z]+$”  //由26个英文字母组成的字符串

“^[A-Z]+$”  //由26个英文字母的大写组成的字符串

“^[a-z]+$”  //由26个英文字母的小写组成的字符串

“^[A-Za-z0-9]+$”  //由数字和26个英文字母组成的字符串

“^\w+$”  //由数字、26个英文字母或者下划线组成的字符串

“^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$”    //email地址

“^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$”  //url

[code]电子邮件 : @”^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$”
HTTP URL : @”^http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?”;
邮编 : @”\d{6}”
身份证 : @”\d{18}|\d{15}”
整数 : @”^\d{1,}$”
数值 : @”^-?(0|\d+)(\.\d+)?$”
日期 : @”^(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)(?:0?2\1(?:29))$)|(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))$”
合法的用户名(以字母开头,长度不小于4) : @”(([a-zA-Z]){1})+(\w{3,29})”[/code]
[code]常用正则表达式语法例句
这里有一些可能会遇到的正则表达式示例:

/^\[ \t]*$/ “^\[ \t]*$” 匹配一个空白行。

/\d{2}-\d{5}/ “\d{2}-\d{5}” 验证一个ID号码是否由一个2位字,一
个连字符以及一个5位数字组成。

/<(.*)>.*<\/\1>/ “<(.*)>.*<\/\1>” 匹配一个 HTML 标记。

下表是元字符及其在正则表达式上下文中的行为的一个完整列表:

字符 描述

\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后
向引用、或一个八进制转义符。例如,’n’ 匹配字符 “n”。’\n’
匹配一个换行符。序列 ‘\\’ 匹配 “\” 而 “\(” 则匹配 “(”。

^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的
Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置。

$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的
Multiline 属性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置。

* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及
“zoo”。 * 等价于{0,}。

+ 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 “zo” 以
及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。

? 匹配前面的子表达式零次或一次。例如,”do(es)?” 可以匹配
“do” 或 “does” 中的”do” 。? 等价于 {0,1}。

{n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配
“Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。

{n,} n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配
“Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。’o{1,}’
等价于 ‘o+’。’o{0,}’ 则等价于 ‘o*’。

{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹
配 m 次。刘, “o{1,3}” 将匹配 “fooooood” 中的前三个o。
‘o{0,1}’等价于’o?’。请注意在逗号和两个数之间不能有空格

? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,},
{n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的
匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜
索的字符串。例如,对于字符串 “oooo”,’o+?’ 将匹配单个
“o”,而 ‘o+’ 将匹配所有 ‘o’。

. 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任
何字符,请使用象 ‘[.\n]’ 的模式。

(pattern) 匹配pattern 并获取这一匹配。所获取的匹配可以从产生的
Matches 集合得到,在VBScript 中使用 SubMatches 集合,在
Visual Basic Scripting Edition 中则使用 $0…$9 属性。要
匹配圆括号字符,请使用 ‘\(’ 或 ‘\)’。

(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹
配,不进行存储供以后使用。这在使用 “或” 字符 (|) 来组合
一个模式的各个部分是很有用。例如, ‘industr(?:y|ies) 就
是一个比 ‘industry|industries’ 更简略的表达式。

(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符
串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后
使用。例如,’Windows (?=95|98|NT|2000)’ 能匹配”Windows
2000″中的”Windows”,但不能匹配”Windows3 .1″中”Windows”。
预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹
配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之
后开始。

(?!pattern) 负向预查,在任何不匹配Negative lookahead matches the
search string at any point where a string not matching
pattern 的字符串开始处匹配查找字符串。这是一个非获取匹
配,也就是说,该匹配不需要获取供以后使用。例如’Windows
(?!95|98|NT|2000)’ 能匹配 “Windows 3.1″ 中的 “Windows”,
但不能匹配 “Windows 2000″ 中的 “Windows”。预查不消耗字
符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开
始下一次匹配的搜索,而不是从包含预查的字符之后开始

x|y 匹配 x 或 y。例如,’z|food’ 能匹配 “z” 或 “food”。’(z|f)
ood’ 则匹配 “zood” 或 “food”。

[xyz] 字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以
匹配 “plain” 中的 ‘a’。

[^xyz] 负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]’ 可以
匹配 “plain” 中的’p'。

[a-z] 字符范围。匹配指定范围内的任意字符。例如,’[a-z]’ 可以匹
配 ‘a’ 到 ‘z’ 范围内的任意小写字母字符。

[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,
‘[^a-z]’ 可以匹配任何不在 ‘a’ 到 ‘z’ 范围内的任意字符。

\b 匹配一个单词边界,也就是指单词和空格间的位置。例如,
‘er\b’ 可以匹配”never” 中的 ‘er’,但不能匹配 “verb” 中
的 ‘er’。

\B 匹配非单词边界。’er\B’ 能匹配 “verb” 中的 ‘er’,但不能匹
配 “never” 中的 ‘er’。

\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或
回车符。 x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一
个原义的 ‘c’ 字符。

\d 匹配一个数字字符。等价于 [0-9]。

\D 匹配一个非数字字符。等价于 [^0-9]。

\f 匹配一个换页符。等价于 \x0c 和 \cL。

\n 匹配一个换行符。等价于 \x0a 和 \cJ。

\r 匹配一个回车符。等价于 \x0d 和 \cM。

\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于
[ \f\n\r\t\v]。

\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。

\t 匹配一个制表符。等价于 \x09 和 \cI。

\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。

\W 匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]’。

\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确
定的两个数字长。例如, ‘\x41′ 匹配 “A”。’\x041′ 则等价
于 ‘\x04′ & “1″。正则表达式中可以使用 ASCII 编码。.

\num 匹配 num,其中num是一个正整数。对所获取的匹配的引用。
例如,’(.)\1′ 匹配两个连续的相同字符。

\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n
个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制
数字 (0-7),则 n 为一个八进制转义值。

\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有
is preceded by at least nm 个获取得子表达式,则 nm 为后
向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文
字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为
八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。

\nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-
7),则匹配八进制转义值 nml。

\un 匹配 n,其中 n 是一个用四个十六进制数字表示的Unicode字
符。例如, \u00A9 匹配版权符号 (?)。 [/code]
常用正则表达式
——————————————————————————–

匹配html的嵌入代码 [code]<[^>]*>[/code]

匹配[….]的嵌入码[code] \[[^]]\{1,\}\][/code]

删除仅由空字符组成的行
[code]sed ‘/^[[:space:]]*$/d’ filename[/code]

匹配html标签
[code]/\(<[^>]*>\)/[/code]例如:从html文件中剔除html标签
[code]sed ’s/\(<[^>]*>\)//g;/^[[:space:]]*$/d’ file.html[/code]

例如:要从下列代码中去除”[]”及其中包括的代码
[code]一. 替换
sed ’s/\[[^]]\{1,\}\]//g’ filename[/code]

匹配日期:
[code]Month, Day, Year [A-Z][a-z]\{3,9\}, [0-9]\{1,2\}, [0-9]\{4\}
2003-01-28 或 2003.10.18 或 2003/10/10 或 2003 10 10
\([0-9]\{4\}[ /-.][0-2][0-9][ /-.][0-3][0-9]\)[/code]
匹配IP地址
[code]\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)
\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)[/code]

匹配数字串
[code][-+]*[0-9]\{1,\} 整数
[-+]*[0-9]\{1,\}\.[0-9]\{1,\} 浮点数[/code]

从字串中解析出两个子串(前2各字符和后9个字符)
[code]echo “WeLoveChinaUnix”|sed -e ‘H;s/\(..\).*/\1/;x;s/.*\(.\{9\}\)$/\1/;x;G;s/\n/ /’
We ChinaUnix [/code]

分解日期串
[code]echo 20030922|sed ’s/\(….\)\(..\)\(..\)/\1 \2 \3/’|read year month day
echo $year $month $day [/code]

文件内容倒序输出
[code]sed ‘1!G;h;$!d’ oldfile >newfile[/code]

[code]匹配中文字符的正则表达式:
[\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):
[^\x00-\xff]

匹配空行的正则表达式:
\n[\s| ]*\r

匹配HTML标记的正则表达式:
/<(.*)>.*<\/\1>|<(.*) \/>/

匹配首尾空格的正则表达式:
(^\s*)|(\s*$)

URL:
http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

Email:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

中华人民共和国电话号码
(\(\d{3}\)|\d{3}-)?\d{8}

中华人民共和国邮编
\d{6}

门丁注册的id格式:2-12位,数字、字符、下划线(0-9,a-z,A-Z,_)
^[0-9a-zA-Z]+(\w){1,11}[/code]

蓝吧甜 宝宝:主人,陪我去森林里玩好不好?
你和宝宝在森林里找了个好东西给你~~管理员作的特别科研卡!
卡片说明:获得社区特别科研基金100个金币。
卡片效果:得到100金币。
你高兴我也高兴!

点击在新窗口中浏览原图 CTRL+鼠标滚轮放大或缩小

[code]匹配中文字符的正则表达式: [\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):[^\x00-\xff]

匹配空行的正则表达式:\n[\s| ]*\r

匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/

匹配首尾空格的正则表达式:(^\s*)|(\s*$)(像vbscript那样的trim函数)

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
—————————————————————————
以下是例子:

利用正则表达式限制网页表单里的文本框输入内容:

用正则表达式限制只能输入中文:onkeyup=”value=value.replace(/[^\u4E00-\u9FA5]/g,”)” onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^\u4E00-\u9FA5]/g,”))”

1.用正则表达式限制只能输入全角字符: onkeyup=”value=value.replace(/[^\uFF00-\uFFFF]/g,”)” onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^\uFF00-\uFFFF]/g,”))”

2.用正则表达式限制只能输入数字:onkeyup=”value=value.replace(/[^\d]/g,”) “onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^\d]/g,”))”

3.用正则表达式限制只能输入数字和英文:onkeyup=”value=value.replace(/[\W]/g,”) “onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^\d]/g,”))”

4.计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){return this.replace([^\x00-\xff]/g,”aa”).length;}

5.javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:

String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, “”);
}

利用正则表达式分解和转换IP地址:

6.下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:

function IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error(”不是一个正确的IP地址!”)
}
}

不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:

var ip=”10.100.20.168″
ip=ip.split(”.”)
alert(”IP值是:”+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))[/code]

September 5, 2008

新疆无花果,自己栽培的猴头菇以及…廖师傅的鸡爪子.

Filed under: I love life, 新疆行 — Tags: , , — erjing @ 9:15 pm

DSC_2596.jpg
DSC_2595.jpg

新疆的无花果是扁的,不是大家通常见得那种无花果干一样圆的。楼下饭馆前拍滴,每次路过的都是俺都有抢了就跑的冲动….
DSC_2677.jpg

DSC_2679.jpg

年初栽培的猴头菇,最近天气热,总算发出来了。
DSC_2690.jpg

廖师傅的鸡爪子…美味啊。今天去红旗路顺便卖了点回来过瘾。

September 1, 2008

关于网线568A和568B。

Filed under: 计算机与 Internet — Tags: , , , — erjing @ 8:12 pm

转贴,不知道原文出处。

—- 转贴开 始  ——————————————————————————————————————————————-
关于网络设备的定义和设备间连接方式一般规律:
第一,你需要了解两类设备:DTE类设备和DCE类设备。
DTE 类设备:PC、路由器、交换机uplink口、HUB级联口
DCE 类设备:交换机普通口、HUB普通口
同类设备间相连使用交叉线方式;异类设备间相连使用直通线方式。
说明:
DTE(Data TerminalEquipment)是数据终端设备,也就是具有一定的数据处理能力以及发送和接收数据能力的设备。大家知道,大多数的数字数据处理设备 的数据传输能力是很有限的。直接将相隔很远的两个数据处理设备连接起来,是不能进行通信的。必须在数据处理设备和传输线路之间,加上一个中间设备。这个中 间设备就是数据电路端设备DCE(Data Circuit-terminatingEquipment)。DCE的作用就是在DTE和传输线路之间提供信号变换和编码的功能,并且负责建立、保持和 释放数据链路的连接。DTE可以是一台计算机或一个终端,也可以是各种的I/O设备。典型的DCE则是一个与模拟电话线路相连接的调制解调器。DCE虽然 处于通信环境内,但它和DTE均属于用户设施。用户环境只包括DTE。
例如:
PC PC 交叉线
PC HUB 直通线
HUB普通口 HUB普通口 交叉线
HUB普通口 HUB级联口 直通线
PC 路由器 交叉线
路由器 路由器 交叉线
PC 交换机 直通线
路由器 交换机 直通线
交换机普通口 交换机uplink口 直通线
交换机普通口 交换机普通口 交叉线
交换机uplink口 交换机uplink口 交叉线

所谓的交叉线是指:一端是568A标准,另一端是568B标准的双绞线。
直连线则指:两端都是568A或都是568B标准的双绞线。
电缆内有8根电线,分为4对,每一对就是一对双绞线,依次为:(白橙,橙);(白绿,绿);(白蓝,蓝);(白棕,棕)
568A的排线顺序从左到右依次为:白绿绿白橙白蓝白棕
568B的排线顺序从左到右依次为:白橙白绿白蓝绿白棕
其中1、2用于发送数据,3、6用于接收数据,4、5用于传输语音,7、8用于传输电源。
顺便说一下,许多朋友在做RJ45头的时候,只是保证线两端的顺序一一对应,却并未按照568A/568B的排线标准去做。这样虽能连通网络,但这种线的抗干扰性非常差,经常出现诸如传输速度慢、网络时好时坏的情况。希望大家在做网线的时候一定按照标准去做,并且根据实际的工程经验网线长度最好不小于1.5米,这对提高网络的稳定性是非常必要的!

—- 转贴结束 ——————————————————————————————————————————————-
基本上,都是两头568B的线用的多,如果pc和 pc相连,就是一头568A一头568B。还有现在大部分的端口都是智能的,尤其是DEC设备,所以和DEC设备连其实无所谓的。反正能识别。

August 22, 2008

Filed under: I love life — erjing @ 1:15 am

find -maxdepth 1 -type d -name “*” cp XXX {} \;

-maxdepth 必须在-type前

-t d 所有的目录

–maxdepth 几级目录

作用:给当前目录下的所有目录里干点啥…

find -maxdepth 1 -type f -name “*”

当前目录的所有文件

哎,越来越不自信,虽然这命令不用想也能打出来…但是想起来前天死活忘记在后面加{} \; 足足搞了半个小时…算了,还是勤快点记着吧。

推荐一下Kiever的Blog.

Filed under: 计算机与 Internet — erjing @ 1:01 am

http://blog.chinaunix.net/u/22826/

Kiver非常勤快滴,俺休息一年了都没有说把以前的东西总结一下,今天去看了看,都被他总结了。

 Yeah~~以后俺可以不用总结了,啥忘掉了直接去看就行了。 yah~~~yeah~~yeah~~~~

说起Kiever…一个做事非常认真的人,呵呵,比我还认真,就是比我死心眼。

第一次接触Kiever是在GuangDian ChuanMei….当年对他的映像就是,刻苦!没事就被发配到机去了,一去就一个晚上..家里还有老婆孩子…唉,当时的环境是典型的谁会谁出力,谁出力谁不讨好….

要是我,早就崩溃了…Kiever倒是蛮强悍滴…

 

August 20, 2008

自己写的linux防火墙脚本,非常干净的,没有啥特别功能,限制一下端口可以。

Filed under: linux, linux script, 计算机与 Internet — Tags: , , , — erjing @ 1:00 am

linux下的iptables防火墙脚本,

没有用啥特殊的东西,没有加放DDOS之类的,就一个限制端口功能,

然后融合了收集来的一些其他iptables脚本,能Drop IP之类的。

总之用起来很方便,开机直接运行就行了,默认就开22和80。

过几天有空了添加一些增强,比如DDOS,高级过滤之类的。

现在没空啊….

点此下载linux防火墙脚本

内容如下:

#! /bin/bash
#Script fwinit.sh by erjing@@@126@@@com.

#Initial environment.
IPT=/sbin/iptables
DIR=/root/bin/fwinit
OUTIP=`ifconfig eth0|grep “inet addr”|awk ‘{print$2}’|awk -F \: ‘{print$2}’`
INIP=`ifconfig eth1|grep “inet addr”|awk ‘{print$2}’|awk -F \: ‘{print$2}’`
Allow_ip_inside=`cat $DIR/share/list |grep “allow_ip_inside=”|awk -F \= ‘{print$2}’`
Allow_ip_outside=`cat $DIR/share/list |grep “allow_ip_outside=”|awk -F \= ‘{print$2}’`
Allow_ports_inbound_inside=`cat $DIR/share/list |grep “allow_ports_intbound_inside=”|awk -F \= ‘{print$2}’`
Allow_ports_inbound_outside=`cat $DIR/share/list |grep “allow_ports_inbound_outside=”|awk -F \= ‘{print$2}’`
Drop_ip_outside=`cat $DIR/share/list |grep “drop_ip_outside=”|awk -F \= ‘{print$2}’`
Drop_ip_inside=`cat $DIR/share/list |grep “drop_ip_inside=”|awk -F \= ‘{print$2}’`
Good_ip_outside=`cat $DIR/share/list |grep “good_ip_outside=”|awk -F \= ‘{print$2}’`
Good_ip_inside=`cat $DIR/share/list |grep “good_ip_inside=”|awk -F \= ‘{print$2}’`

#Clean and set all to default.
$IPT -F INPUT
$IPT -X
$IPT -P INPUT ACCEPT
$IPT -F OUTPUT
$IPT -P OUTPUT ACCEPT
$IPT -F FORWARD
$IPT -P FORWARD DROP

#For local loop device.
$IPT -A INPUT -i lo -p all -j ACCEPT
$IPT -A OUTPUT -o lo -p all -j ACCEPT

#Common rule.
$IPT -A INPUT -m state –state ESTABLISHED -j ACCEPT

#For allow port in outside.
for Port in $Allow_ports_inbound_outside
do
for IP in $Allow_ip_outside
do
$IPT -A INPUT -i eth0 -p tcp -s $IP -d $OUTIP –dport $Port -j ACCEPT
$IPT -A INPUT -i eth0 -p udp -s $IP -d $OUTIP –dport $Port -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp -s $IP -d $OUTIP -j ACCEPT
done
done
#For allow port in inside.
for Port in $Allow_ports_inbound_inside
do
for IP in $Allow_ip_inside
do
$IPT -A INPUT -i eth1 -p tcp -s $IP -d $INIP –dport $Port -j ACCEPT
$IPT -A INPUT -i eth1 -p udp -s $IP -d $INIP –dport $Port -j ACCEPT
$IPT -A INPUT -i eth1 -p icmp -s $IP -d $INIP -j ACCEPT
done
done

#For allow ip in outside. Warning: “you should be careful for use this, The ip address will be trusted, No limit! “
for IP in $Good_ip_outside
do
$IPT -I INPUT -i eth0 -s $IP -j ACCEPT
$IPT -I OUTPUT -o eth0 -d $IP -j ACCEPT
done

#For allow ip in inside. Warning: “you should be careful for use this, The ip address will be trusted, No limit! “
for IP in $Good_ip_inside
do
$IPT -I INPUT -i eth1 -s $IP -j ACCEPT
$IPT -I OUTPUT -o eth1 -d $IP -j ACCEPT
done

#For drop ip in outside.
for IP in $Drop_ip_outside
do
$IPT -I INPUT -i eth0 -s $IP -j DROP
$IPT -I OUTPUT -o eth0-d $IP -j DROP
$IPT -I FORWARD -i eth0 -d $IP -j DROP
done

#For drop ip in inside.
for IP in $Drop_ip_inside
do
$IPT -I INPUT -i eth1 -s $IP -j DROP
$IPT -I OUTPUT -o eth1 -d $IP -j DROP
$IPT -I FORWARD -i eth1 -d $IP -j DROP
done

$IPT -P INPUT DROP
$IPT -nL

——————————————————-

看到了吗?就是把文件解压缩到/root/bin/fwinit,然后执行,文件会从/root/bin/fwinit/share/list里找哪些端口需要打开,哪些是信任主机。

/root/bin/fwinit/share/list内容如下:

#There is port and IP list for fwinit.sh

allow_ip_outside= 0.0.0.0/0
allow_ip_inside=
allow_ports_inbound_outside=22 80
allow_ports_intbound_inside=
good_ip_outside=1.2.3.4/32
good_ip_inside=
drop_ip_outside=
drop_ip_inside=

简单吧,写这个就是为了简单,看到那么多的linux防火墙脚本我头都要大了,我仅仅想有一个脚本能从配置文件里读取参数然后开放端口之类的,就需要这个功能而已。

August 18, 2008

www.cygwin.cn速度有点慢了,我也建立一个 cygwin中国镜像 分分流吧。

Filed under: linux, 计算机与 Internet — Tags: , — erjing @ 7:39 pm

新建了一个cygwin镜像,因为cygwin.cn现在上的人好像很多,这次安装用了足足12小时….

http://erjing.com/cygwin/

就这个了,大家宣传一下吧,算是做点贡献,自动升级的。

August 17, 2008

嘿嘿又找到一个老早写的脚本,建立三级目录,类似squid的。

Filed under: linux, linux script, 计算机与 Internet — erjing @ 2:01 am

for w in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9
do
mkdir $w
done

for x in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9
do
cd $x
for m in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9
do
mkdir $m
done
for y in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9
do
cd $y
for x in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9
do
mkdir $x
done
cd ..
done
cd ..
done

好玩吧,建立三层目录,类似squid一样的。不过真的好用吗?结果是否定的,实践证明,管理巨型存储用二级目录就行了,三级目录只能影响性能,没有实际用处。

很早以前写的处理数据库的脚本,今天偶尔翻出来了,贴上免得以后想用又要重新写。

Filed under: linux, linux script, 计算机与 Internet — erjing @ 1:56 am

#!/bin/sh

#备份数据库
mysqldump -uroot -p123456 haocaiwu > haocaiwu.sql
#删除内容数据库导出临时文件
rm -f /cygdrive/r/w/wiki_doc_content_tab.tmp
#导出数据
mysql -uroot -p123456 haocaiwu -e”select concat(’update wiki_doc set doc_content=\”,doc_content,’\’ where doc_id=’,doc_id,’;') into outfile ‘r://w/wiki_doc_content_tab.tmp’ from wiki_doc”
#转化编码为GBK
iconv.exe -f utf-8 -t GBK /cygdrive/r/w/wiki_doc_content_tab.tmp > /cygdrive/r/w/wiki_doc_content_tab.tmp.gbk
#去掉内容里所有的链接,初始化数据
cat /cygdrive/r/w/wiki_doc_content_tab.tmp.gbk |sed -e ’s/<\/a>//g’|sed -e ’s/<a href[^>]*>//g’ > /cygdrive/r/w/wiki_doc_content_tab.tmp.gbk.clean
#运行clean_tesu.sh,去掉特殊字符(目前不能在shell下运行,只能复制粘贴了运行内容了。得到wiki_doc_content_tab.tmp.gbk.clean.again)
#删除keyword数据导出临时文件
rm -f /cygdrive/r/w/keyword.tmp
#导出keyword数据
mysql -uroot -p123456 -Dhaocaiwu -e”SELECT doc_title INTO OUTFILE ‘r://w/keyword.tmp’ FROM wiki_doc”
#转化为GBK编码
iconv.exe -f utf-8 -t GBK /cygdrive/r/w/keyword.tmp > /cygdrive/r/w/keyword.tmp.gbk
#去掉多余字符,并且去掉重复,格式化keyword文件。
./makekeyword.sh
#|tr “\n” “\t”
#首先进行unicode编码,防止汉字在sed的处理的时候出问题。
cat keyword.tmp.gbk.clean | ./urlencode  > key.en
按照长度排列,这样会首先匹配词组,然后再匹配字。
awk ‘{print  length($0),$0}’ key.en |sort -nr|sed ‘/^[^ ]* /s///’> key.en.swp;mv key.en.swp key.en
#给key.en加上两个(),生成key.enformated,方便后面做匹配。
cat key.en |awk ‘{print “(”$1″)”}’ > key.enformated
cat wiki_doc_content_tab.tmp.gbk.clean.again| ./urlencode > c.en
生成第一次编码keyword文件,
cat key.en|./urldecode > key.de
echo “” > url.en1 ;for i in `cat key.de`; do ./e.sh $i >> url.en1 ;done
cat url.en1 |./urlencode > url.en2
合并key.en和url.en2到 k_url.en,这样k_url.en可以被用来当作匹配有keyword的url文件,可以直接调用啦。(注意还没有自动删除最上面一行空白)
paste.exe key.enformated url.en2  >k_url.en

#开始转换
#for i in `cat key.en`;do m=`cat k_url.en|grep $i`; sed -e “s/$i/$m/g” c.en > c.en.tmp;mv c.en.tmp c.en;done
#for i in `cat key.en`;do m=cat k_url.en|grep $i|awk ‘{print $2}’;sed -e “s/$i/$m/g” c.en > e.en.tmp;mv c.en.tmp c.en;done
#for i in `cat key.en`;do m=`cat k_url.en|grep $i|awk ‘{print $2}’`;sed -e “s/$i/$m/g” c.en > c.en.tmp;mv c.en.tmp c.en;done
#for i in `cat key.en`;do m=`cat k_url.en|grep $i|awk ‘{print $2}’`;sed -e ’s/”$i”/”$m”/g’ c.en > c.en.tmp;mv c.en.tmp c.en;done
#for i in `cat key.en`;do m=`cat k_url.en|grep $i|awk ‘{print $2}’`;sed -e “s/$i/$m/g” c.en > c.en.tmp;mv c.en.tmp c.en;done
for i in `cat key.en`;do m=`cat k_url.en|grep “(”$i”)”|awk ‘{print $2}’`;sed -e “s/$i/$m/g” c.en > c.en.tmp;mv c.en.tmp c.en;done
#转换GBK到utf-8
#iconv.exe -f GBK -t utf-8 /cygdrive/r/w/wiki_doc_content_tab.tmp.gbk.clean > /cygdrive/r/w/wiki_doc_content_tab.tmp
#导入数据库
#mysql -uroot -p123456 haocaiwu < r://w/wiki_doc_content_tab.tmp

过滤掉内容的<a href=xxx></a>
cat sewinter_wikihaocaiwu.gb2312 |sed -e ’s/<\/a>//g’|sed -e ’s/<a href[^>]*>//g’

过滤出简介,用时间2008-01-20 22:22:00 这样的格式
cat sewinter_wikihaocaiwu.gb2312.clean|awk -F”‘[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]’,” ‘NR==3 {print $1}’
过滤出正文,用时间2008-01-20 22:22:00 这样的格式
cat sewinter_wikihaocaiwu.gb2312.clean|awk -F”‘[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]’,” ‘NR==3 {print $2}’

得到内容部分
cat sewinter_wikihaocaiwu.gb2312.clean|awk -F”‘[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]’,” ‘NR==1 {print $2}’

SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;

在mysql配置的时候:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8

在建立数据库的时候,最好就直接建立成utf-8的。

CREATE DATABASE haocaiwu
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci ;

如果是已经建立好的数据库,一定要把数据库修改成utf-8的,这样在后面select的时候才不会出错,
ALTER DATABASE  haocaiwu
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci;

这样数据会追加到后面:
rm -f /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 -Dhaocaiwu -e”SELECT doc_content INTO OUTFILE ‘z://w/wiki_doc_content_tab.tmp’ FIELDS TERMINATED BY ‘#’ FROM wiki_doc”
iconv.exe -f utf-8 -t GBK /cygdrive/z/w/wiki_doc_content_tab.tmp > /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk
iconv.exe -f GBK -t utf-8 /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk > /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 -Dhaocaiwu -e”LOAD DATA INFILE ‘z://w/wiki_doc_content_tab.tmp’ INTO TABLE wiki_doc FIELDS TERMINATED BY ‘#’ (doc_content)”

正确替换的格式是,唯一的缺陷是没有replace”‘”,所以在导入的时候可能会出问题,如果是php程序导入的内容估计没有问题,因为在php程序往数据库里写的时候就转义过了。
mysql -uroot -p123456 haocaiwu -e”select concat(’update wiki_doc set doc_content=\”,doc_content,’\’ where doc_id=’,doc_id,’;') into outfile ‘z://w/wiki_doc_content_tab.tmp’ from wiki_doc where doc_id between 50 and 200″
mysql -uroot -p123456 haocaiwu < z://w/wiki_doc_content_tab.tmp

这样可以替换原数据,
rm -f /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 haocaiwu -e”select concat(’update wiki_doc set doc_content=\”,doc_content,’\’ where doc_id=’,doc_id,’;') into outfile ‘z://w/wiki_doc_content_tab.tmp’ from wiki_doc”
iconv.exe -f utf-8 -t GBK /cygdrive/z/w/wiki_doc_content_tab.tmp > /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk
iconv.exe -f GBK -t utf-8 /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk > /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 haocaiwu < z://w/wiki_doc_content_tab.tmp

导出2000-3000,并且替换。
rm -f /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 haocaiwu -e”select concat(’update wiki_doc set doc_content=\”,doc_content,’\’ where doc_id=’,doc_id,’;') into outfile ‘z://w/wiki_doc_content_tab.tmp’ from wiki_doc where doc_id between 2000 and 3000″
iconv.exe -f utf-8 -t GBK /cygdrive/z/w/wiki_doc_content_tab.tmp > /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk
iconv.exe -f GBK -t utf-8 /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk > /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 haocaiwu < z://w/wiki_doc_content_tab.tmp

rm -f /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 haocaiwu -e”select concat(’update wiki_doc set doc_content=\”,doc_content,’\’ where doc_id=’,doc_id,’;') into outfile ‘z://w/wiki_doc_content_tab.tmp’ from wiki_doc where doc_id”
iconv.exe -f utf-8 -t GBK /cygdrive/z/w/wiki_doc_content_tab.tmp > /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk
cat /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk |sed -e ’s/<\/a>//g’|sed -e ’s/<a href[^>]*>//g’ > /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk.clean
iconv.exe -f GBK -t utf-8 /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk.clean > /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 haocaiwu < z://w/wiki_doc_content_tab.tmp

得到keyword并且过滤掉特殊字符,并且去掉重复字符:
mysql -uroot -p123456 -Dhaocaiwu -e”SELECT doc_title INTO OUTFILE ‘z://w/keyword.tmp’ FROM wiki_doc
iconv.exe -f utf-8 -t GBK /cygdrive/z/w/keyword.tmp > /cygdrive/z/w/keyword.tmp.gbk
cat keyword.tmp.gbk |sed \
-e ’s/([^>]*)//g’ \
-e ’s/([^>]*)//g’ \
-e ’s/!//g’ \
-e ’s/。//g’ \
-e ’s/,//g’ \
-e ’s/?//g’ \
-e ’s/@//g’ \
-e ’s/#//g’ \
-e ’s/$//g’ \
-e ’s/%//g’ \
-e ’s/︿//g’ \
-e ’s/&//g’ \
-e ’s/*//g’ \
-e ’s/-//g’ \
-e ’s/+//g’ \
-e ’s/://g’ \
-e ’s/;//g’ \
-e ’s/'//g’ \
-e ’s/"//g’ \
-e ’s/~//g’ \
-e ’s/`//g’ \
-e ’s/·//g’ \
-e ’s/¥//g’ \
-e ’s/|//g’ \
-e ’s/“//g’ \
-e ’s/”//g’ \
-e ’s////g’ \
-e ’s/——//g’ \
-e ’s/—//g’ \
-e ’s/、//g’ \
-e ’s/{[^>]*}//g’ \
-e ’s/<[^>]*>//g’ \
-e ’s/[[^>]*]//g’ \
-e ’s/"[^>]*"//g’ \
-e ’s/“[^>]*”//g’ \
-e ’s/《[^>]*》//g’ \
-e ’s/\~//g’ \
-e ’s/\`//g’ \
-e ’s/\!//g’ \
-e ’s/\@//g’ \
-e ’s/\#//g’ \
-e ’s/\$//g’ \
-e ’s/\%//g’ \
-e ’s/\^//g’ \
-e ’s/\&//g’ \
-e ’s/\*//g’ \
-e ’s/(//g’ \
-e ’s/)//g’ \
-e ’s/\_//g’ \
-e ’s/\+//g’ \
-e ’s/{//g’ \
-e ’s/}//g’ \
-e ’s/\[//g’ \
-e ’s/\]//g’ \
-e ’s/\|//g’ \
-e ’s/\://g’ \
-e ’s/\”//g’ \
-e ’s/\>//g’ \
-e ’s/\?//g’ \
-e ’s/\,//g’ \
-e ’s/\.//g’ \
-e ’s/\///g’ \
-e ’s///g’ \
-e ’s///g’ \
-e ’s///g’ \
-e ’s///g’ \
-e ’s///g’ \
-e ’s/\[[^>]*]\]//g’ \
-e ’s/\”[^>]*\”//g’ \
-e ’s/\<[^>]*\>//g’ \
-e ’s/{[^>]*}//g’ \
-e ’s/\<//g’ \
-e ’s/\;//g’ \
-e “s/\’[^>]*\’//g” \
-e ’s/\\//g’ \
-e “s/\’//g”

注意:
1、不要使用 -e ’s/{[^>]*}//g’ \,也不能用-e ’s/\<[^>]*\>//g’ \,否则会匹配所有的英文单词,导致维生素没有ABC区分,只有“维生素”这个单词的关联。
2、匹配{}或者()这样的应该先放在前面执行。
2、部分汉字损坏。
3. -e ’s/://g’ \ 这句删除很重要。

August 15, 2008

2008年,我失去了两位朋友。

Filed under: I love life — erjing @ 11:20 pm

于季强,以前总是开玩笑说他鱼机枪,非常好的一个人。海浩网的创始人,认识他是在99年吧。

别的不说了,就一句评价:人才。

小于和我算不上挚友,但是,相信如果我没了(呸呸呸),小于也会记得我这个朋友。

今日见到恐怖,他说也是小于去世以后才来海浩,其实我未尝不是,我们这些老会员在小于最需要的时候注册一个马甲,跑了,然后数年不上去看看。突然有一天冒出来,耀武扬威地显摆一下自己的注册日期,我想这么多年我在海浩除了显摆以外什么都没干。惭愧啊。

今日听闻司空不久前也去世了,我都不知道谁死司空,但是看到追悼的人如此之多,我被震撼了!一朵云更是整理了司空的文章,篇篇精彩!我仅阅读了几篇,就知道司空不是凡人,越看越觉得惋惜,越看越觉得认识司空,司空走了,我已经有了失去一个好朋友的感觉!

先是年初的小于的离去,再是现在司空的逝世,2008年,我不会忘记这一年。

留一篇司空的脚印,缅怀司空吧!

August 10, 2008

脑子越来越不够用了…每次写的脚本过几天自己就忘掉了,特开一个分类记录脚本。

Filed under: linux script — Tags: , , , — erjing @ 11:22 am

除最后几行

方法1:

tac file|sed 1,3d|tac

方法2:
sed ‘$d’ file|sed ‘$d’ |sed ‘$d’

tac就是反的cat,不难理解,先反着来删除前面的,然后在把文件反过去…

第二种…$d就是最后一行啦,删除三行就来三下…删除10行就成串串香了…

完整的脚本

#!/bin/bash
file=$1
tmpfile=$1.tmp
tac $file |sed -e ‘1,3d’|tac > $tmpfile
mv $tmpfile $file
这样搭配find就能替换全部的文件,起名叫do_remove_end_line.sh。

find ./ -name “*.htm” -exec ./do_remove_end_line.sh {} \;
全部的.htm文件都处理一下。

August 5, 2008

今日无题,遇到太阳雨,朋友发来短信。

Filed under: I love life, 新疆行 — erjing @ 12:56 am

The rain of sun

太阳雨,难得!平时下雨可没有这么高的亮度。

朋友在塔城,与死神插件而过….还好算平安了。庆幸之~~

August 4, 2008

准备写点心得了,先做个目录,以后慢慢写。

Filed under: 计算机与 Internet — erjing @ 12:28 am

国际企业IT规划

1、IT policy, 企业IT规范。

2、如何做专业的IT规划,企业IT的职能。

3、企业IT网络规划&配置。

网段

VPN

IPEC

SSL

4、企业IT的核心,域管理。

域规划

域合并

linux加入域的几种方式

能和AD融合的几种应用

SSL VPN

PAM (Apache,FTP….)

Suversion

5、企业OA管理,邮件系统,仓库(cvs,subversion)。

6、运营网络规划设计。

先这样吧,慢慢来。

August 3, 2008

嗯,在泡木耳的时候如果是用带调料的水泡,木耳的味道是不是会更好?

Filed under: I love life — erjing @ 12:37 am

如题,如果用糖水泡白木耳,是不是熬出来的白耳汤味道也会更好?

August 2, 2008

奥运的蓝天白云….

Filed under: I love life — erjing @ 12:49 pm

不知道奥运之后还能保持吗?

July 31, 2008

乌鲁木齐的道路交通改造——你改路不如改人!

Filed under: I love life — Tags: , , — erjing @ 12:27 pm

在乌鲁木齐轰轰烈烈的道路交通改造风风火火地持续着,这一持续就来了快一年,而且还在持续中:

友好路路段到红山路段被重新整理了一遍,两边的树被砍伐了3/4,取而代之的是两行青草,道路加宽了,竖起来很漂亮的路灯。但是市民怎么看的?

作为市民我有一些疑问:

1、马路拓宽了,是好事情,但是我并没有看到交通情况改善了,首先下班的时候还是堵车,无论是友好路还是新医路都在堵,天天如此。

2、是新修路,为什么不修自行车道?

3、这烦人的无数个地下通道什么时候能搞好?这都一年了大家在横穿马路和汽车抢位。

作为市民我也有一些建议和批评:

1、修路别忘记是给人民修的。即便是发达地区也会修自行车道,何况我们地处边疆,人民还不富裕。你修路只修马路知道这意味什么吗?首先你把给群众的利益过多,超多的分配给了有车一族。其次你没有认识到城市交通因该是立体的,除了公交车,出租车,轻轨地铁之外,自行车是非常重要的补充。何况你马路修宽了又如何?最多在马路里能多停堵塞的车辆而已,增大了马路的容量而已,全乌鲁木齐市来看呢?你修宽了一块马路没用,重要的在于疏通!这都2008年了,全世界所有都市的经验啊,怎么到了这乌鲁木齐就和没听说一样?

2、与其修建地下通道,你还不如给马路上多设置几个斑马线,并且在斑马线前后设置减速带。为什么这么说?就说你修的地下通道吧,我7月23号去大西门一次,我从红山步行到大西门大概过了4个地下通道吧,其中三个没有开电梯,年轻人就算了,老年人呢?更不要说大西门的地下通道只有东西走向,没有南北走向,我目睹了多少人下去了以后才发现完全走错了,如果要过大西门需要走斑马线!这其中没有路牌指示,只有下去了以后才发现上当了!而且没有开电梯,甚至就没有修电梯!你这不是逼着老年人横穿马路吗?顺便说一句,那一天大西门的地下通道停电,但是在外面没有任何指示说明。我是亲眼看到一个老人在大西门的通道里摔了一跤,我估计这一下子老人至少要休息半年。为政者你们看了难道心理还能过意的去?

3、如何管乌鲁木齐的城市交通,我有话说!

首先我要说的是这里的司机素质太差了,真的是很差。

在科技馆到医学院校区的斑马线上,我从来没有看到一辆车给人让的,都是加速而过,乌鲁木齐的斑马线如同虚设,一条条斑马线如同司机的加速指示线!为什么会这样?想必也就是因为这个原因才有理由修了如此之多的地下通道。其实这很简单啊,你在斑马线上都设置摄像头,在斑马线两头都设置减速带不就行了?在减速带加速的车全部重罚!我看到很多车都是在最后关头再停车,这搞得市民每天过马路都胆战心惊的!还有一些车直接半个车身开到了斑马线中间!或者完全就把线给压了!所以,为政者你完全搞错了调控对象,你需要添加摄像头,添加交警!没钱?没钱你还能把全市的地下通道都改成华而不实的玻璃盖子?没钱就找几个假人至少也能让这些车老实一点!没钱你就在斑马线上设置几个假摄像头,这样也能有威慑作用!

还有,在乌鲁木齐的人行道上人都走不安稳,为什么?人行道上到处都是车啊,晚上开着强光灯,按着喇叭,天天如此!这个很难处理吗?你让所有的单位在路口的人行道口都安装两个水泥墩子不就行了?这样一来大家晚上再也不需要提心吊胆的想后面的车会开过来,也不会担心前面的车开着大灯冲过去然后晃了你的眼睛然后你就掉没盖的井里了。

我现在晚上出门就顺便捡一砖头,因为我视力不好,车晃了我的眼睛后我一段时间都不能适应,所以我会先发制人!我这还有力气能扔砖头出去,那些晚上散步锻炼身体的老人呢?

所以说,这场在乌鲁木齐轰轰烈烈近一年的道路改造,作为市民的我完全没有看出来有什么实际的作用。更不要说大西门这无厘头的地下通道设计!大家都觉得今年出门更加不方便了,这是实话!

与其这样的投资,不如把钱投到软建设上,加强道路监控!明确自行车道,真心实意的为人民想问题,这才是真正的政绩!

2009年乌鲁木齐房价走势

本广告位出租^!^,每天很多很多人访问,无论能否看懂文章的,无论是否被我忽悠的…总之,来看的人80%以上是准备买房子的。

——————————————————————————————————————————————————————————————————–

我的理由:

1、中央政府已经认识到了紧缩的政策不利于经济发展,并且通货膨胀的治理的前提是要认清目前中国并不是在一个封闭经济环境中。所以,中央政府将两防转为一保一控。

2、仔细阅读这个政策,就会发现中央政府及有可能对房地产商放宽政策。

3、关键在于,如何让老百姓有钱买房子?如果希望老百姓有钱买房子那就需要多印钞票,并且尽快提高全国人民的工资水平。但是很明显的,这是和抑制通货背道而驰的。所以唯一的方法就是转移通货,就和美国人把通货转移到中国一样,我们也需要找下一家的替死鬼。

这又遇到两个问题:

1、中国目前是文人执政,在国际上一直都有儒家思想外交的映像。我们讲究礼仪,所以我们要冒很大的外交风险。

2、中国号称世界工厂,其现状是在全世界的底层生产层面。我们很难给别人转嫁。

所以这一正面一背面的影响,百姓们就被夹在了政策的和现实的中间。按照我的理解,政府如果想解决这个问题,就必须舍弃一方的利益,保住最重要的,然后在后期做政策上的调整,再来保护最先牺牲的利益。

其实改革开放,就是这样的例子,先发展沿海城市,然后再慢慢发展中西部地区。按照常理来说政策到新疆来总是需要一个时间,但是现在新疆的政府也在改革,政策的落实比以往来说效率要高很多很多了。加之乌鲁木齐是新疆的省会城市,还在申请直辖市,所以对于中央的“通货膨胀要控制在一定范围内”的执行,效率应该不会比别的省市差。

所以我认为,中央会放弃紧缩政策,这点会推动房价上涨,其实不是房价涨,是钱要不值钱了,也就是说虽然目前通胀是很厉害很要命的,但是为了全局利益,政府还是会放宽货币政策,等到经济趋于正常了,再回过头来处理通货的问题。同时由于新疆的政策执行效率已经很高了,所以政策应该也会高效的执行下来。

我建议有钱能买房子的人,都按揭房子。最好不要一次性付款,自己手里有钱才能安心啊。但是房子还是要早一点的买好,目前的价格在全国来说真的是很低了,现在拌面都12块钱了,在上海也就是15块钱,物价差异没有大家想的那么大的。不过选择房子的时候还是要注意,要注意这个房子是否值得投资,你可以在我的空间里搜索“房价”,里面有两篇文章是关于在乌鲁木齐买房子的建议的。

我估计乌鲁木齐的房价在2009年会涨到均价6000多,到2010年我也不知道了,这要看世界的经济形势了。按照目前的局势我是这样分析的,希望大家明白中国现在是“市场经济”,只有你敢面对了市场才能了解市场经济。很多人觉得市场经济和自己无关,我认为这是错觉。我也不是搞经济的,但是我鼓起勇气来面对、来分析市场。这对我自己也是一个挑战。其实我们每一个人都有被房价绑架的感觉,但是没办法,这就是现状。我们不愿意房子市场化,但是房子现在的确市场化了。我们以前以为只有口内的房子才是市场化的,其实呢?2009年全国的房价一定会下调,但是我也相信2009年乌鲁木齐的房价还会继续上涨,无非是速度问题。

我倒是希望在农村大家集资搞几个别墅啥的,至少这房子不会被绑架的太厉害。BTW:我看伊宁的尼勒克是好地方。

还有教你一个最简单的判断房价是否增长的方法:留意你周边的人公司是否涨了,如果大家工资都涨了,房价是不会跌的。看到周围的人工资都在涨得时候,你要考虑下手购房了。

推荐文章一 推荐文章二

更新:20080924

最近世界经济形势真…和几个业内朋友聊天,我们认为乌鲁木齐的房市会在明年开春回暖。

更新 20080925

刚才突然发现留言里很多骂我的人..不过一条都没发出来….唉,你们何必呢,写这么多话,写这么久,我就看了前3个字,别人还看不到。偏激了点吧?我是在买自己的房子,不过不是现在,准备明年春天卖房子了。唉,可怜的中国现在全国上下无论年龄大小都喜欢用网络暴力。这不,这几天留言的骂我的都是女性,还有一个居然是见过面的老师,相比她一定不知道是我写了这篇…….还有一个在上海吧,大概在东安路居住过,在浦东上班的,看IP….唉,居然又是中科院,怎么中科院的人在哪里都这么NB?英语的确不错的,出国没有问题。可惜我英语太差了,所以没看懂。不过也蛮好玩的,一个是48岁的女人,一个是20来岁的小女子,似乎都很江湖,可惜没有敢留名的…..

顺便说一句,我这里留言默认都去垃圾箱的,只有我看得顺眼的留言才会被挑出来,我写Blog不是为了别人,写Blog是因为我记忆力不好,总是忘掉东西,写了以后查起来就方便了。至于你们说我啥房产开发商之类的,我不反对,因为的确是很多开发商朋友,我在他们面前就是一个菜,不过能在他们哪里学习到资本本质也不亦乐乎,不过如果说我为他们说话…这我可不同意,你们总以为自己听到,看到的就是事实了。目前在全国上下对开发商骂声一片,怎么不容得别人说一句不爱听的话?

还有,别咬牙切齿了,您可以找个高手对我的主机DDOS一下,不过我很遗憾啊:第一我这里开放的公益服务没法开了,比如说cygwin中国镜像。也许您解气了,但是损失的是广大网友。其次,我为您这点气量感到悲哀…….

小道消息:昨天和朋友聊天,朋友说了一下亲戚给提供的乌鲁木齐遥感数据,有点可怕…据说铁路局朝南的城市,基本上地下就是空的,不知道是否属实,如果属实,想明白有解决的方法吗?如果属实,是不是以后高层就不应该建?

纠正一下,万恶的经济危机……6000块钱为均价应该不可能了,即便国家放开政策也来不及了。几个新开盘的小区,达到所谓2A标准的,价格在3600左右,在水上乐园那边新开的几个高档小区,价格在6000左右。水磨沟的别墅…貌似蛮好的,建议您买别墅的时候仔细看看风水吧。其余按照我这几天在马路上散步时得到的传单,米东的价格还是2600,九州通药业那边,国秀家园的南边,有个诚信房产公司的小区,名字不知道,但是价格的确便宜,多层的不是楼顶和一楼,价格好像才2800多。虽然这个小区我完全看不上,但是这至少表现出来一个趋势吧。国秀家园的多层的房子早就都卖空了,求购价格现在是3500多,不过还是没人卖,高层现在来看似乎也没几套了,不知道是故意捂盘还是真没了….顺便看了看旁边的苏杭明珠和领袖新城,没仔细看质量,远处看还是很大气的,封顶了。就是不知道封顶质量如何。

华源集团盖的几个小区多层都卖空了,华源集团的建筑公司居然直接集散…真够狠的。

国秀家园的门口,英澳北岸,四个大字挂在四栋楼上,无语……

还是国秀家园的门口,国美小区,不知道的以为到了国秀了….物业真差,一楼开了N家饭馆….

现在出现很多微型小区在降价的,看来是挺不住啦,英奥的不知道,国美的价格本来就低。现在部分房子好像还降价了..不过这楼的质量建议您还是眼睛亮一点。

基本上,乌鲁木齐好房子再贵也有人买,特别是新房子。多层基本卖空,高层还有一些,但是好的不多,楼顶之类的好楼层基本上都被抢了,奶奶个新疆人咋这么有钱….?二手房市场萎靡不振,看来只能等到明年我才能卖自己的老房子(顺便说一下我的老房子现在属于A类地区啦~~~)

总结:一看美国的经济危机是否控制的好,二看前几天sina.com里说要上调工资的传言是否是真的。








今天一哥们咨询我如何在IPSEC里跑NAT,给大家一个文档做参考。

很多时候都需要在IPSEC VPN里跑NAT,典型的情况就是想用机房的防火墙做为办公室里的某个网段的出口。

刚在fortigate里找到这篇文章 《Enabling one-to-one subnet-address translation》

点这里下载

Enabling one-to-one subnet-address translation
When Outbound NAT is selected in a firewall encryption policy, you can configure a
substitute address for Network Address Translation (NAT) through the CLI using the
set natip attribute of the config firewall policy command. The setting
enables one-to-one, subnet-address translation inside an IPSec VPN tunnel.
If you do not use the set natip attribute to translate IP addresses, the source
addresses of outbound encrypted packets are translated to the IP address of the
FortiGate external interface.
When you specify a natip value, the FortiGate unit uses a static subnetwork-tosubnetwork
mapping scheme to translate the source addresses of encrypted packets
into corresponding IP addresses on the subnetwork that you specify. For example, if
the source address in the encryption policy is 192.168.1.0/24 and the natip value is
172.16.2.0/24, a source address of 192.168.1.7 will be translated to 172.16.2.7.
You can specify a 32-bit subnet mask in the natip value to translate the source
addresses of encrypted packets to a single IP address. For example, if the source
address in the encryption policy is 192.168.1.0/24 and the natip value is
172.16.2.1/32, a source address of 192.168.1.7 will be translated to 172.16.2.1.

看到了吗?其实就是一句,是在 CLI里用的。我推荐大家使用CLI界面来配置防火墙,特别是fortigate,你会发现很多参数实在GUI界面里看不到的,虽然fortigate的GUI已经很出色了。

Newer Posts »