存档

2008年3月 的存档

shell 批量替换文件名,实现目录合并

2008年3月30日 评论已被关闭

使用shell脚本替换 文件名,并把两个目录合并

源文件目录结果如下:

ls -l /temp/filelist/2001/

-rw-r–r– 1 test test  6472 03-28 19:19 100-2001-9-2-0.png
-rw-r–r– 1 test test  5860 03-28 19:19 100-2001-9-2-1.png
-rw-r–r– 1 test test  6472 03-28 19:20 100-2001-9-3-0.png
-rw-r–r– 1 test test  5860 03-28 19:20 100-2001-9-3-1.png
-rw-r–r– 1 test test  6472 03-28 19:20 100-2001-9-4-0.png
-rw-r–r– 1 test test  5860 03-28 19:20 100-2001-9-4-1.png
-rw-r–r– 1 test test  6472 03-28 19:20 100-2001-9-5-0.png
-rw-r–r– 1 test test  5860 03-28 19:20 100-2001-9-5-1.png

ls -l /temp/filelist/2003/

-rw-r–r– 1 test test  6472 03-28 19:19 100-2003-8-2-0.png
-rw-r–r– 1 test test  5860 03-28 19:19 100-2003-8-2-1.png
-rw-r–r– 1 test test  6472 03-28 19:20 100-2003-8-3-0.png
-rw-r–r– 1 test test  5860 03-28 19:20 100-2003-8-3-1.png
-rw-r–r– 1 test test  6472 03-28 19:20 100-2003-8-4-0.png
-rw-r–r– 1 test test  5860 03-28 19:20 100-2003-8-4-1.png
-rw-r–r– 1 test test  6472 03-28 19:20 100-2003-8-5-0.png
-rw-r–r– 1 test test  5860 03-28 19:20 100-2003-8-5-1.png

要求把2003目录中的“2003”替换为“2001”,并且把2003目录中修改文件名后的文件合并到2001目录中。

[local#2hei.net]# more ChangeName.sh

#!/bin/sh
# Edit By 2hei

Path=”/temp/filelist”

ls -l $1 |awk ‘{if($8>0) print $8}’  >  $Path/list

while read Line
do
Name=`echo $Line|sed ‘s/2003/2001/g’`
cp $Path/2003/$Line $Path/2001/$Name

done < $Path/list

Usage:  sh ChangeName.sh /temp/filelist/2003

分类: OpenSource, shell 标签:

study English everyday (3)

2008年3月27日 评论已被关闭

tidy up 整理

in the panel at the head of your bed

run down 撞倒 恶化

fed up 厌烦

continental breakfast 欧式早餐

pullover n.套衫 adj.套领的

maid 女仆

spray 飞沫,喷雾

panel  全体陪审人员, 面板,仪表板

I am after a size 40 V-neck pullover in grey.

I keep feeling dizzy.

The radio’s terribly loud, could you turn it down in faction?

 

分类: English 标签:

引用 C++

2008年3月27日 评论已被关闭

一直对C++中的引用没有太深刻的认识,这几天趁着工作不忙,认真地学一习了一番,在这里总结一下。

引用(reference):某一变量的别名,对引用的操作与对对象的操作一样。

引用的声明方法: 类型标示符 &引用名 = 目标变量名

声明引用时,必须同时对其进行初始化。

一旦引用被初始化指向一个对象,不能改变为另一个对象的引用。(这一点是与指针的最大区别)

引用不能为NULL。

引用最大的作用是用作函数的参数。当引用被函数改变时,相应的变量被改变。如果传递的数据块比较大,使用引用或指针,可以避免将整块数据全部压栈。

常引用

const 类型标示符 & 引用名 = 目标变量名

不能通过引用,修改目标变量值。引用型参数应该在能被定义为const的情况下尽量定义为const。

 

分类: c 标签:

study English every day(2)

2008年3月26日 评论已被关闭

Natural beauty is best.

I have a table for two under the name of Mike.

We are right in the middle of lunch.

I’d like to travel first class.

wear make-up 擦化妆品

fly direct         直飞

at the latest  

on the diet     吃规定的饮食

cut down       削减,删节,砍倒

no vacancies 没有空房

fix up            修理,理解

main course 主修课程,主菜,主帆

tender a.嫩的

lamb  n.小羊,羊羔;v.生小羊

prawn n.对虾,大虾v,捕虾

sherry n.葡萄酒,雪梨酒

carafe n.玻璃瓶子

curry n. 咖喱粉,咖喱饭菜v.用咖喱粉调味

laundry n.洗衣店,要洗的衣服,熨烫

mushroom n. 蘑菇,暴发户 vi.迅速增长,采蘑菇;a.蘑菇形的

plaice n.[渔]欧鲽,拟庸鲽(生活在西欧水域中海生的可食的大比目鱼)

 

分类: English 标签:

study English every day (1)

2008年3月25日 评论已被关闭

今天学了一些单词和一些句子,列在这里加深记忆。

do washing up,

slurp,

slim,

tart(adj. 辛酸的,刻薄的,酸的;v.打扮;n.果馅饼)

strawberry 草莓

crab   螃蟹

shrimp 虾

lobster 龙虾

etiquette 礼节

carnival n.狂欢

grave n.雕刻,铭刻;n.坟墓;a.严肃的,重大的

sirloin n.牛腰部上的肉

catch the waitress’s eye

 

分类: English 标签:

my movable type server mysql service down

2008年3月25日 评论已被关闭

刚刚吃过晚饭,没事上博客来看看,就发现站点打开的特别慢,

还怀疑这MT blog有什么问题了,打开其他网站倒是正常的很。

纳闷中,大约过了十几秒钟,系统返回了这样的几句话:

Got an error: Connection error: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2) at lib/MT/ObjectDriver/Driver/DBD/mysql.pm line 49
 at lib/MT/ObjectDriver/Driver/DBD/mysql.pm line 49

哈哈,居然百年不遇的现象,让我赶上了,MT blog Server的Mysql服务服务重新启动了,有意思。

我还真是第一次遇到服务重启。

不过,这国外的空间服务质量还是不错的,整个过程大概经过了2分钟,刷新了一下页面,系统便恢复了正常。

 

分类: IT 标签:

oracle sqlldr 实际运用中的几个问题

2008年3月22日 评论已被关闭

以前也一直在用sqlldr进行oracle的数据导入工作,但由于数据表结构比较简单,数据格式比较规范,所以简单的脚本即可完成任务,没有仔细的进行研究。

最近因为项目需要,要处理一个稍微复杂一点的表,涉及到日期字段,还有自增序列,字段比较复杂不规则,有很多空列,经过一番研究后,终于搞定,特此总结一下。

1. 空字段处理: TRAILING NULLCOLS   但是整行不能全空,否则整行无法插入
2. 日期字段处理:格式化处理 AddDate “to_date(:AddDate,”’yyyy-mm-dd hh24:mi:ss”’)”
3. 自定义字段分割符 “|”
4. 采用触发器来处理自增字段,具体的建立方法可参考我的另一篇关于触发器的介绍带有条件的触发器trigger

ldr脚本如下:

vi sql.ctl    

LOAD DATA
INFILE ‘/home/oracle/data/table.data’
APPEND INTO TABLE table
fields terminated by ‘|’
TRAILING NULLCOLS

(
ID,
USERNAME,
PASSWORD,
AddDate “to_date(:AddDate,”’yyyy-mm-dd hh24:mi:ss”’)”
)

数据文件样式  table.data

|test|test|2008-03-20 18:09:10

|2hei|2hei|2008-03-20 18:09:10

|admin|admin|2008-03-20 18:09:10

 

loader 脚本运行方式:

切换到oracle用户  su – oracle

或者root下执行 su -l oracle -c “sqlldr userid=2hei/2hei control=/home/oracle/data/sql.ctl log=/home/oracle/log/sql.log bad=/home/oracle/log/bad.log”

执行后可以查表,看看字段的插入情况。

如果有问题可以看执行后的log 或者 bad文件。

 

 

分类: database 标签: , ,

Apache/resin log输出格式

2008年3月19日 评论已被关闭

Apache 一般有两种日志格式:
通用日志格式(Common Log Format) 和 组合日志格式(Combined Log Format)

http.conf中默认格式如下:
LogFormat “%h %l %u %t \”%r\” %>s %b” common
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-agent}i\”” combined

也可以使用自定义,这里使用`分隔 日志参数

%h`%l`%u`%{%Y-%m-%d %H:%M:%S}t`%r`%s`%b`%{Referer}i`%{User-Agent}i`%{X-Up-Calling-Line-ID}i

输出结果如下:
127.0.0.1 – frank [10/Oct/2000:13:55:36 -0700] “GET /apache_pb.gif HTTP/1.0” 200 2326
127.0.0.1 – frank [10/Oct/2000:13:55:36 -0700] “GET /apache_pb.gif HTTP/1.0” 200 2326 “http://www.example.com/start.html” “Mozilla/4.08 [en] (Win98; I ;Nav)”
172.16.0.115`-`-`2008-03-13 11:00:03`GET /logo.gif HTTP/1.1`200`2893`http://172.16.0.252/index.jsp `Opera/9.26 (Windows NT 5.1; U; zh-cn)`-

%h  这是发送请求到服务器的客户的IP地址,如果客户和服务器之间存在代理,那么记录中的这个IP地址就是那个代理的IP地址,而不是客户机的真实IP地址。
%l 这是由客户端identd进程判断的RFC1413身份(identity),输出中的符号”-“表示此处的信息无效。除非在严格控制的内部网络中,此信息通常很不可靠,不应该被使用。只有在将IdentityCheck指令设为 On 时,Apache才会试图得到这项信息。
%u 这是HTTP认证系统得到的访问该网页的客户标识(userid),环境变量REMOTE_USER会被设为该值并提供给CGI脚本。如果状态码是401,表示客户未通过认证,则此值没有意义。如果网页没有设置密码保护,则此项将是”-“。

%{%Y-%m-%d %H:%M:%S}t
这是服务器完成请求处理时的时间。
其格式是:
[日/月/年:时:分:秒 时区]
日 = 2数字
月 = 3字母
年 = 4数字
时 = 2数字
分 = 2数字
秒 = 2数字
时区 = (+|-)4数字
可以在格式字符串中使用 %{format}t 来改变时间的输出形式,其中的format与C标准库中的strftime()用法相同。
如:%Y-%m-%d %H:%M:%S — 2008-03-13 11:00:03

%r 引号中是客户端发出的包含许多有用信息的请求行。可以看出,该客户的动作是GET ,请求的资源是/logo.gif ,使用的协议是HTTP/1.1 。另外,还可以记录其他信息,如:格式字符串”%m %U%q %H”会记录动作、路径、查询字符串、协议,其输出和”%r”一样。

%s 这是服务器返回给客户端的状态码。这个信息非常有价值,因为它指示了请求的结果,或者是被成功响应了(以2开头),或者被重定向了(以3开头),或者出错了(以4开头),或者产生了服务器端错误(以5开头)。
服务器响应吗列表 :
  Successful 2xx
200 OK …..
201 Created
202 Accepted
203 Non-Auth
204 No Conte
205 Reset Co
206 Partial
Redirection 3xx
300 Multiple
301 Moved Pe
302 Found ..
303 See Othe
304 Not Modi
305 Use Prox
306 (Unused)
307 Temporar
  Client Error 4x
400 Bad Req
401 Unautho
402 Payment
403 Forbidd
404 Not Fou
405 Method
406 Not Acc
407 Proxy A
408 Request
409 Conflic
410 Gone ..
411 Length
412 Precond
413 Request
414 Request
415 Unsuppo
416 Request
417 Expecta
  Server Error 5x
500 Internal
501 Not Impl
502 Bad Gate
503 Service
504 Gateway
505 HTTP Ver

%b 最后这项是返回给客户端的不包括响应头的字节数。如果没有信息返回,则此项应该是”-“,如果希望记录为”0″的形式,就应该用%B 。

%{Referer}i
“Referer”请求头。此项指明了该请求是被从哪个网页提交过来的,http://172.16.0.252/index.jsp 这个网页应该包含有/logo.gif 或者其连接。

%{User-Agent}i
“User-Agent”请求头。此项是客户端提供的浏览器识别信息。如:(Opera/9.26 (Windows NT 5.1; U; zh-cn)   Mozilla/4.08 [en] (Win98; I ;Nav )

%{X-Up-Calling-Line-ID}i
如果使用手机访问,并且移动(联通)网关可以返回访问者的手机号码。

分类: OpenSource, resin 标签: , ,

You don’t have permission to access / on this server error 之解决

2008年3月18日 评论已被关闭

配置好的 apache 虚拟主机,已经跑着一个web应用,现在绑定了另外一个域名:

环境: apache2 + php5

vi http.conf

NameVirtualHost *:8080

<VirtualHost www.abc.net:8080>
ServerName www.abc.net
ServerAdmin test@abc.net
DocumentRoot /usr/local/apache/htdocs/2hei.net
</VirtualHost>

<VirtualHost www.asd.net:8080>
ServerName www.asd.net
ServerAdmin postmaster@asd.net
DocumentRoot /home/asd/htdocs
</VirtualHost>

访问网站:www.asd.net:8080  系统提示:

You don’t have permission to access / on this server error

403(禁止)

原因是默认的apache配置里面已经设定了目录访问权限
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

在设定NameVirtualHost时,也是遵循这个规则,
所以应该在 VirtualHost 中单独指定发布目录的目录访问权限。

NameVirtualHost *:8080

<VirtualHost www.abc.net:8080>
ServerName www.abc.net
ServerAdmin test@abc.net
DocumentRoot /usr/local/apache/htdocs/2hei.net
</VirtualHost>

<VirtualHost www.asd.net:8080>
ServerName www.asd.net
ServerAdmin postmaster@asd.net
DocumentRoot /home/abc/htdocs
<Directory “/home/asd/htdocs”>
Options  FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

接着访问你的网站:www.asd.net:8080  应该可以了。

 

分类: OpenSource 标签: ,

不按套路出牌的爬虫!!

2008年3月17日 评论已被关闭

今天看了一下公司HTTP服务器的log,发现爬虫活动异常频繁,有将近1/10的流量来自爬虫们,说起来也挺恐怖的。

其实那点东西也没有必要爬来爬去的吧,于是写了个robots.txt 做了一下限制。

vi robots.txt

User-agent: *
Disallow: /

按照套路,原则上禁止掉了所有的爬虫的骚扰。

下班前,上去看了一眼是否生效了,他奶奶的,爬虫居然如此张狂,继续爬我没商量。

首先就是Baiduspider不守规矩,继续爬网站,而且变本加厉的爬,流量有增无减。

61.135.190.24`-`-`2008-03-18 02:33:37`HEAD /index.html HTTP/1.1`200`2775`-`Baiduspider+(+http://www.baidu.com/search/spider.htm)`-

再有就是google,也有一些,有些是当访问到了robots.txt就停止了。但是还有一些不要脸的仍在爬着。

比如这条:
203.208.60.22`-`-`2008-03-17 13:27:25`GET /Index.html?id=1714 HTTP/1.1`200`2530`-`Mozilla/5.0 (compatible; Googlebot/2.1; +http://www…google.com/bot.html)`-

我查了一下那个IP:真他妈服了,居然有人在冒充google的爬虫在网络世界横行,这不是真正的谷歌,这是假冒伪劣产品哟!

那个真正的Google还是蛮守规矩的,但到robots.txt的内容就停下了匆匆的脚步。

66.249.70.130`-`-`2008-03-18 02:30:40`GET /robots.txt HTTP/1.1`200`27`-`Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)`-

经核实,假冒google的爬虫IP:

IP查询(搜索IP地址的地理位置)
您查询的IP:203.208.60.22
本站主数据:北京市 飞翔人信息技术有限公司
查询结果2:北京市 飞翔人信息技术有限公司
查询结果3:北京市 飞翔人信息技术有限公司

“飞翔人”何许人也,原来是大名顶顶的ganji.com(赶集网),哎,枉我当初对赶集的一片痴心。

顺便也查了一下这斯的来历,原来赶集与Google也曾有着一段“姻缘”哩。

怪不得敢打着Googlebot的名义在网络横行!!!

作为弱势群体的我们普通小站点,只能忍了,这里发发牢骚,骂骂人,自个心里爽爽罢了。

或许ganji凭借google的余威在“爬虫”界也是很吊、很暴力? 

 

PS :

强列鄙视Baidu,这么大的站点不遵守最起码的游戏道德。

表扬一下真正的Googlebot,实实在在老实人,我喜欢! 以后搜索还是使用Google.

 

分类: IT 标签: