Skynet

---------- ---------- 我的新 blog : liukaiyi.cublog.cn ---------- ----------

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  112 Posts :: 1 Stories :: 49 Comments :: 0 Trackbacks

#



 
把下面的 地址拷贝到  迅雷的下载地点:
基本格式
ftp://username:password@host:port/path/file


比如:
   ftp://user:pass@118.85.xxx.x/ring_17000_QuanGuo_20090513.rar


posted @ 2009-05-13 14:55 刘凯毅 阅读(1311) | 评论 (0)编辑 收藏


结合 windows ssh 搭建,你会知道更多

[转] 配置cygwin下中文支持

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://fangsblog.blogbus.com/logs/4787655.html

  配置cygwin来支持中文

      http://my.opera.com/render/blog/show.dml/369483

 Site From: http://ergophile.bokee.com/1145741.html

I googled it.

http://www.linuxeden.com/forum/blog/index.php?op=ViewArticle&articleId=567&blogId=110848


bamanzi | 28 九月, 2004 22:14

大致写了一下,有待补充。
本来一年前就打算写的,但后来觉得老黄写更合适,但这家伙似乎只对代码有兴趣,总不写文档。

终端

locale支持

Cygwin的locale支持一直都不太好,采用zh_CN.gb2312好像问题很多,我一直采用的是zh_CN.gbk
~/.bashrc
LC_CTYPE=zh_CN.gbk
CHARSET=GBK #(glib2需要使用找个环境变量确定文件名的编码)
export LC_CTYPE CHARSET

一些小问题

允许bash输入、输出中文字符
~/.inputrc
set convert-meta off
set input-meta on
set output-meta on

ls显示中文文件名(而不是一堆问号)
alias ls="/bin/ls --show-control-chars"

less浏览中文文件
less --raw-control-chars
另外LESSCHARSET环境变量也很有用

X下的中文支持

locale支持

Cygwin的locale支持一直都有问题,好在X程序还可以使用XLOCALE。
建议还是使用zh_CN.gbk, 不要使用zh_CN.GB2312

在移植程序时需要注意不要让程序连接libcygwin.a里面的setlocale,而是采用libX11.a里面的_Xsetlocale。方法是:检查被移植程序的全部源代码,发现
#include
就修改为
#define X_LOCALE
#include
同时注意程序的连接库要添加-lX11.
如果对于结果没有把握,可以找个Dependency Walker查看程序是否连接到了cygwin1.dll里面的setlocale,如果是,就说明有遗漏。

中文字体

PCF点阵字体
GTK1.x 和其他一些老的X程序都是用X字体,

注意必须要有编码与locale一致的字体,比如用zh_CN.gbk就必须要由GBK编码的字体,用zh_CN.GB2312就必须要有GB2312编码的字体

如果使用zh_CN.GB2312,这里有一个RedOffice面带的点阵字体包

可以采用ttf2bdf从TTF抽取得到bdf格式,然后再用bdf2pcf得到pcf格式的字体文件。
(这里有一个Windows版本的TTF2BDF,可以将Windows TTF字体转换出BDF字体, 注意得到bdf后要手工编辑一下文件头,将编码声明修改正确)

得 到字体之后,放到某个目录下,执行mkfontdir生成fonts.dir,然后用xset +fp /path/to/your/fonts将字体路径加入即可(注意与fontconfig的配置不同,这里路径是不递归的,如果有的字体放在子目录里面, 子目录也需要添加进去才行)。
TTF字体
很多新的应用程序(比如GTK2)都使用fontconfig/libxft2来显示字体,它对TTF字体的支持比较好(X以前通过freetype, xft模块也支持TTF字体,但对中日韩字体的支持不是太好,而且也在Cygwin下似乎也没有这些模块)

完全可以使用Linux下的arphic字体包. 如果没有安装Linux,可以到http://packages.debian.org下载相应的包,然后用7zip解压提取出ttf文件。

得到字体文件之后,放到某个目录之下,编辑/etc/fonts/local.conf,将字体路径加入:
/path/to/my/ttf/fonts
如果只是自己使用,可以将字体文件放到~/.fonts下,不需要修改任何配置,最多三十秒fontconfig就能够发现这些字体了。

中文输入法

老黄(hzhr)移植了miniChinput到Cygwin,我也移植了fcitx-1.8.5和3.0,均可以从我的网站上找到 http://www.oliwen.com/bamanzi/cygwin/chinese/

一般设置了LC_CTYPE和XMODIFIERS就可以在程序中激活输入输入法了(除非这个程序没有XIM支持):

LC_CTYPE=zh_CN.gbk
XMODIFIERS="@im=Chinput"
export LC_CTYPE XMODIFIERS

对于fcitx而言,XMODIFIERS设置为什么都可以(但必须要设置),所以设置为"@im=Chinput"的话chinput和fcitx都可以正常使用


posted @ 2009-05-13 08:13 刘凯毅 阅读(4359) | 评论 (0)编辑 收藏


结合 cygwin 解决 乱码问题 (转) 你会知道更多


        参考 :  http://www.docin.com/p-4534575.html



Cygwin + OpenSSH FOR Windows的安装配置
Cygwin是一款世界著名软件,它可将Linux下的自由软件移植到Windows系统上来应用,了解和掌 握这个软件,将使您又多了许多有益的选择,并带您到一个更广阔的天空下翱翔,这对于您的学习和工作将起到确定无疑的推动作用。下面我用自己总结的一个例 子,带大家进入这个世界。
    在windows操作系统中,使用Cygwin + OpenSSH开源软件来作为远程连接的安全工具,是一个非常好的方法,得到许多网管人员的青睐。然而要想顺利安装配置好这套软件,对于初学者来说,是有 一定难度的。为了使同道们少走弯路,特将本人摸索的经验陈列于此,以供需要者参考。建议在安装配置这套软件之前,最好要初步掌握一些Linux终端操作技 能及其技术概念。

以下所述是在Windows XP系统中实践完成,其它Windows系统可参照此文实施。
一、安装Cygwin + OpenSSH
首先打开http://Cygwin.com网页,点击如下链接:

Install or update

now!


将会下载一个安装Cygwin的setup.exe文件,然后在欲安装Cygwin + OpenSSH软件的磁盘上创建Cygwin目录,在此我们假定为:C:"Cygwin,运行setup.exe后打开图一:  
            


                                图一
图一主要提供关于Cygwin软件安装的一些信息,点击下一步后打开图二:

图二

图二提供了三个选项:
第一选项:从Internet上下载并安装所需软件。
第二选项:从Internet上下载所需软件安装包到本地磁盘。
第三选项:从本地磁盘安装包的目录中安装所需软件。
此处选择从Internet上下载并安装所需软件,点击下一步后打开图三:

图三

图三为指定软件安装的目标路径,其它按图上默认的选项选择。点击下一步后打开图四:

图四

图四为指定软件安装包的本地存放路径。点击下一步后打开图五:

图五

图五是选择连接Internet的方式,照图点选Use IE5 Settings,点击下一步后打开图六:

图六

图六是选择下载Cygwin的网站,尽量选离我国近的网站,以提高安装速度。点下一步打开图七:

图七

图七为软件包的选择界面,All所在行是选择全部软件包的位置,其它各行是软件组的选择位置,点击软件组前部的+号,可以打开软件组来选择所属软件项。点击所选软件项的循环箭头,可以选择对相应项目的操作方式,每点一次,该项目的操作方式就变化一次。
针对All及软件组的操作方式有四种选择:即Default、Install、Reinstall和Uninstall,依次代表:默认状态、安装、重新安装和反安装项。
针对软件项的操作方式有两类五种:
第一类:对未安装的软件项有两种选择,即Skip和该软件的版本号,Skip为跳过该软件的安装,显示软件版本号为确定安装该软件。
第二类:对已安装的软件项有三种选择,即Keep、Reinstall和Uninstall,依次代表:保持现状、重新安装和反安装项。
图八为打开NET软件组的界面

图八

图 八表示选择网络相关软件,我们要安装的是OpenSSH,故点击OpenSSH软件项相应的循环箭头,使原来的Skip变为版本号即可,与OpenSSH 软件包相关的Cygwin支持软件包会自动配套选中,例如下一行的OpenSSL软件包也就自动选中了。点击下一步打开图九:

图九

图九显示安装工作的进度,完成后自动打开图十:

图十

图十中提示将在桌面建立Cygwin控制台图标和在开始菜单中添加Cygwin控制台图标。点击完成按钮结束安装工作。
注意:安装软件时,必须以Administrator用户身份来安装,否则可能出现许多莫名的问题,大概是由于用户权限不够造成的,估计是该软件出于安全考虑而有意设计的。
二、Openssh基本配置
1.增加环境变量
用鼠标右键单击我的电脑 à属性 à高级 à环境变量,
A.在系统变量框中新建变量名为:CYGWIN,变量值为:ntsec tty 的变量。
B.编辑path变量,在原变量值后加上以分号分隔的C:"Cygwin"bin字符串,注意保留原变量的值!
2OpenSSH服务配置
双击Cygwin图标打开控制台,键入:cd /bin转入bin目录,再键入:ssh-host-config -y,执行后系统提示“CYGWIN=” 时输入ntsec tty即可。至此,SSH服务已被加入到Windows的自动启动服务项中了。
重新启动电脑进入普通用户界面,打开Cygwin控制台后,系统会在Cygwin的home目录下生成一个同名目录:youname (此处假设用户名为:youname),用户可以在command控制台上用:
ssh  youname@127.0.0.1
登录自己的SSH服务器试一试,若能登录则表示安装配置基本成功,可以进行远程登录连接,若远程登录失败,应在SSH服务器防火墙的例外中添加允许SSH端口通过的条目,SSH服务默认使用的是22号端口。
3.启动OpenSSH服务的方法
A.在command控制台上启动:
Net  start  sshd     #启动SSH服务
Net  stop  sshd      #停止SSH服务
B.在Cygwin控制台上启动:
Cygwin  --start  sshd      #启动SSH服务
Cygwin  --stop  sshd       #停止SSH服务
三、Openssh高级配置
提示:A. 修改sshd_config 文件前应先通过Cygwin控制台修改文件属性值,使当前用户具有修改权:
cd /etc                    #转到sshd_config文件所在目录
Chmod 777 sshd_config      #修改文件属性值,使其他用户可以修改该文件
。。。。。                 #然后参照后面介绍的1、2、3条进行操作
Chmod 644 sshd_config      #修改文件属性,使其恢复原来的属性值
B. sshd_config文件被修改后,必须重启SSH服务后改动项才能生效。
1.更改OpenSSH工作端口及协议版本

用写字板打开C:"Cygwin"etc"sshd_config文件,将port 22改为port 10022或其它自己想改的端口号,最好选1025 -- 65535之间其它软件未用的端口号。再将#Protocol 2,1 改为Protocol 2,使当前的SSH服务只支持2.0协议版本。此两项更改的目的是为了增强系统的安全性。

2.禁止超级用户远程登录OpenSSH

用写字板打开 C:"Cygwin"etc"sshd_config 文件,将 #PermitRootLogin yes 修改为PermitRootLogin no即可。若系统需要超级用户登录,则不必修改此项目。

3.仅使用非对称密钥安全登录

A用写字板打开 C:"Cygwin"etc"sshd_config 文件,将#PasswordAuthentication yes 修改为 PasswordAuthentication no 。

B.在Cygwin控制台:

cd /home/youname      #转到当前用户目录

mkdir .ssh            #建立 .ssh隐含目录

C.将制作好的authorized_keys公钥文件复制到c:"Cygwin"home"youname".ssh目录下

D.在Cygwin控制台:

cd /home/youname/.ssh    #转到 .ssh隐含目录

chmod 600 authorized_keys   #修改文件属性使之生效(注:属性值大于600时该文件无效)
此后用户远程访问ssh服务器时,将不能凭用户密码登录,只能凭借对应的私钥来登录,排除了密码暴力破解的可能,提高了网络访问的安全性。
4.公钥对的生成
由于习惯了用putty作为登录ssh服务器的工具,故在此仅介绍用putty软件生成密钥对的方法。
A可以从http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html处,选择putty.zip下载,该软件为自由软件,可免费使用,当前版本为V 0.60。
B解压后运行puttygen.exe , 打开图十一:

图十一

如图选择SSH-2 RSA和1024密钥长度,点击Generate按钮,打开图十二:

图十二

将鼠标在电脑屏幕上随机移动,密钥生成进度条随鼠标指针移动而前进,直至完成并呈现图十三:

图十三

图上部框中显示的是公钥内容,用户可以在key passphrase框及confirm passphrase框中输入密钥密码,以使密钥丢失后多一道安全防护。当然如果为了方便也可以不设密钥密码。
依 次点击save public key和save private key按钮,分别保存生成的公钥和私钥,将保存的公钥文件改为authorized_key文件名,或将图十三上部框中的公钥内容复制到 authorized_key文件中,并保存为纯文本文件(本人习惯于后一种方法),然后将该文件复制到用户的 .SSH目录中应用,注意:该文件在使用时必须将其属性值改为小于等于600方可应用,否则该公钥不会生效。而默认以 .ppk扩展名保存的私钥文件,则要妥善保管好,今后访问SSH服务器就要凭此私钥登录了。
四、卸载Cygwin
卸 载Cygwin与安装Cygwin的过程差不多,也是先运行setup.exe,与安装时一样操作,直到出现图七所示界面时,将All设置为 UnInstall后再点击下一步,系统将自动完成Cygwin软件的卸载,Cygwin的安装目录需要手工删除,注册表内与Cygwin相关的项目也要 手动删除,如若删除不尽,可能会影响到以后Cygwin的顺利安装和配置,切记!
五、PUTTY软件的简单应用
运行Putty.exe打开图十四:

图十四

在Host Name框中输入SSH服务器的IP地址,Port框中输入OpenSSH服务的端口号,然后点开Connection à SSH à Auth打开图十五:

图十五

按 图中选择相应项,在private key file for authentication框中填入自己私钥的保存路径,再回到图十四,在Saved sessions框中输入一个相关名字,再点击Save按钮将当前会话以相关命名保存起来,以供将来重复使用该会话。使用时选中会话,点击Load按钮装 入,再点击Open按钮开始连接SSH服务器,连接界面弹出后,按提示输入用户名、私钥密码,验证通过后即可登录服务器了。



posted @ 2009-05-12 19:21 刘凯毅 阅读(7912) | 评论 (2)编辑 收藏




#关键字
   python,pycurl, SGMLParser ,sqlite3, 抓取 , 增量计算,encodeuri 转换,crontab ,mail
#参考
  sqlite3  http://linuxgazette.net/109/chirico1.html
  SGMLParser http://www.woodpecker.org.cn/diveintopython/html_processing/index.html




提取 python
import pycurl
from sgmllib import SGMLParser
import re
from urllib import quote, unquote 

#使用 SGMLParser(html 分析) 类继承
#
详细请查看
#
   http://www.woodpecker.org.cn/diveintopython/html_processing/index.html
class BaiduTop_GMLParser(SGMLParser):
    
def reset(self, verbose=0):
        SGMLParser.reset(self)
        self.data
=[]
        self.a 
= None
        
    
def start_a(self, attrs):
        href 
= [v for k, v in attrs if k=='href']
        rsc
=re.search('word=(.*)\+(.*)', href[0] )    
        
if href and rsc :
           
#baidu 页面编码为 gbk ,并且中文 encodeuri 了
            #此转换为 utf8
            music=unquote(rsc.group(1)).decode('gbk').encode('utf8')
            actors
=unquote(rsc.group(2)).decode('gbk').encode('utf8')
            self.data.append((actors,music))
            self.a
=True
    
def getData(self):
        
return self.data
    
def __init__(self):
        self.reset()
        c 
= pycurl.Curl()
        c.setopt(pycurl.URL, 
'http://list.mp3.baidu.com/topso/mp3topsong.html?id=1?top2')
        
import StringIO
        b 
= StringIO.StringIO()
        c.setopt(pycurl.WRITEFUNCTION, b.write)
        c.setopt(pycurl.FOLLOWLOCATION, 
1)
        c.setopt(pycurl.MAXREDIRS, 
5)
        
#c.setopt(pycurl.PROXY, 'http://11.11.11.11:8080')
        #c.setopt(pycurl.PROXYUSERPWD, 'aaa:aaa')
        c.perform()
        self.feed(b.getvalue())



使用 py
#!python      
#
 -*- coding: UTF8 -*-
'''
新添加入 top  
当天全量
没有 歌手名

退出 top

drop table baidu_Top ;
create table baidu_Top (
  id integer auto_increment  PRIMARY KEY ,
  actor varchar(300) ,
  music varchar(300) ,
  createTime DATE
);

'''


import sqlite3,os,sys
import datetime, calendar  
import pdb

from baiduTop500 import BaiduTop_GMLParser
class Action():
    
def __init__(self,conn,data):
        self.conn 
= conn 
        self.data 
= data 
        self.allData 
= []
        self.newData 
= []
        self.newNotActorData
=[]
        self.allNotActorData
=[]

    
def insertAll(self): 
        insertSql 
= "insert into baidu_Top (actor,music,createTime) values (?,?,date()) ;"
        isSql 
= "select music from baidu_Top where actor=? and music=? and createTime=strftime('%Y-%m-%d',?) ;"
        isSql2 
= "select music from baidu_Top where actor=? and music=? and createTime=strftime('%Y-%m-%d',?) ;"
        cur 
= self.conn.cursor()
        
for actor,music in self.data :
            
try :
                cur.execute(isSql,(actor,music,datetime.date.today())  )
                res 
= cur.fetchall()
                
if not res :
                    cur.execute(insertSql,(actor,music)  )
                    self.allData.append( (actor,music) )
                    
if actor=="" or actor==" " :
                        self.allNotActorData.append((actor,music))
                    conn.commit()
                todate
=(datetime.date.today()-datetime.timedelta(days=1))
                cur.execute(isSql2,(actor,music,todate)  ) 
                
if not cur.fetchall() :
                    self.newData.append( (actor,music) )
                    
if actor=="" or actor==" " :
                        self.newNotActorData.append((actor,music))
                    conn.commit()
            
except Exception, myError:
                excType, excValue, traceBack 
= sys.exc_info()
                
print excType
                
print myError
        
try :
            cur.close()
        
except:
            
pass
            
    

def pfor(title,data):
    
for a,m in data :
        
print "%s\t%s\t%s" %(title,a,m)
def line():
    
print
    
print "___________________________________________________________________________________"
    
print "___________________________________________________________________________________"
    
print 

if   __name__  ==  "__main__":
    
try:
        conn 
= sqlite3.connect("/home/xj_liukaiyi/src/python/baidu_top/ex500")
        ac 
= Action(conn,BaiduTop_GMLParser().getData())
        ac.insertAll()
        
#ac.insertNewByDate()
        
        
print '''说明 %s : 
            new 对比前一天新添加
            new not actor 对比前一天新增加但没歌手名
            all 当天top 500 展现全部 
            all not actor 当天 top 500 展现全部全但没歌手 
''' %(datetime.date.today())
        line()
        pfor(
"new",ac.newData)
        line()
        pfor(
"new not actor",ac.newNotActorData)
        line()
        pfor(
"all",ac.allData)
        line()
        pfor(
"all not actor",ac.allNotActorData)
    
finally:
        conn.close()



再通过系统
crontab -e


邮箱 gbk 转码 ,后发送 。每天早上 5点
0 5 * * * /usr/local/bin/python /home/xj_liukaiyi/src/python/baidu_top/Action.py|perl -MEncode -ne 'print encode("GBK", decode("UTF-8",$_));' > tmp ; mail -s "baidu Top 500"  liukaiyi@gmail.com  < tmp;

posted @ 2009-05-06 09:47 刘凯毅 阅读(1529) | 评论 (0)编辑 收藏


我这里有个比较特殊的需求
是要有个 文件夹  能创建,删除,移动 子文件夹
         但 本身文件夹 是不能 删除的

比如
/tmp/a/b  #不能 删除
   /tmp/a/b/c # 能 创建,删除,移动

这谢谢 perl msn群中的 W.W 帮我解决

  具体来说,目录也是一个文件,但是这个文件的内容,是它的子目录的结构。对于/tmp/a来说,它是一个文件,但是如果用户对/tmp/a没有写权限,它就改动不了/tmp/a的目录结构
  在/tmp/a里新建目录,删除原有的目录/tmp/a/b,等等,实际改动的是/tmp/a的目录结构,也就是说,实际改动的是/tmp/a的内容

root:
#mkdir /tmp/a; mkdir /tmp/a/b;
#chmod a+w /tmp/a/b; chmod o-w /tmp/a

user-a:
$rmdir /tmp/a/b                     #This will fail, user-a don't have enough permission.
$cd /tmp/a/b; mkdir c; touch d;
$rmdir /tmp/a/b/c; rm /tmp/a/b/d;   #This is OK.


ls -l 中
/tmp/a  drwxr-xr-x
/tmp/a/b  drwxrwxrwx

b 文件夹,也就是我上面 需要的文件夹 ,是 777 了但  user-a 是不能删除的

posted @ 2009-05-04 17:00 刘凯毅 阅读(1776) | 评论 (0)编辑 收藏

   由于 需求原因,需要匹配 提取中文,大量google下,并没有我需要的。花了一个小时大概测试,此utf8中文通过,特留文。
   参考: http://hi.baidu.com/nivrrex/blog/item/e6ccaf511d0926888d543071.html
          http://topic.csdn.net/u/20070404/15/b011aa83-f9b7-43b3-bbff-bfe4f653df03.html

    首先,确保所有编码都为 unicode
         比如 str.decode('utf8') #从utf8文本中
              u"啊l"  #在控制台输出中   
         (罗嗦下)本想使用参考一定编码 Hex 但郁闷的是 这每个字好像占2个位置,使用正则匹配无果。
    其次,确定中文范围 : [\u4e00-\u9fa5]
          (这里注意下 python 的re写的时候) 要  u"[\u4e00-\u9fa5]" #确定正则表达式也是 unicode 的
    demo :
   
>>> print re.match(ur"[\u4e00-\u9fa5]+","")
None
>>> print re.match(ur"[\u4e00-\u9fa5]+",u"")
<_sre.SRE_Match object at 0x2a98981308>


>>> print re.match(ur"[\u4e00-\u9fa5]+",u"t")
None


>>> print tt
现在才明白
>>> tt
'\xe7\x8e\xb0\xe5\x9c\xa8\xe6\x89\x8d\xe6\x98\x8e\xe7\x99\xbd'
>>> print re.match(r"[\u4e00-\u9fa5]",tt.decode('utf8'))
None
>>> print re.match(ur"[\u4e00-\u9fa5]",tt.decode('utf8'))
<_sre.SRE_Match object at 0x2a955d9c60>


>>> print re.match(ur".*["u4e00-"u9fa5]+",u"hi,匹配到了")
<_sre.SRE_Match object at 0x2a955d9c60>
>>> print re.match(ur".*["u4e00-"u9fa5]+",u"hi,no no")
None
      



其他 扩充 范围 (转)
这里是几个主要非英文语系字符范围(google上找到的):
2E80~33FFh:中日韩符号区。收容康熙字典部首、中日韩辅助部首、注音符号、日本假名、韩文音符,中日韩的符号、标点、带圈或带括符文数字、月份,以及日本的假名组合、单位、年号、月份、日期、时间等。
3400~4DFFh:中日韩认同表意文字扩充A区,总计收容6,582个中日韩汉字。
4E00~9FFFh:中日韩认同表意文字区,总计收容20,902个中日韩汉字。
A000~A4FFh:彝族文字区,收容中国南方彝族文字和字根。
AC00~D7FFh:韩文拼音组合字区,收容以韩文音符拼成的文字。
F900~FAFFh:中日韩兼容表意文字区,总计收容302个中日韩汉字。
FB00~FFFDh:文字表现形式区,收容组合拉丁文字、希伯来文、阿拉伯文、中日韩直式标点、小符号、半角符号、全角符号等。
比如需要匹配所有中日韩非符号字符
,那么正则表达式应该是^[\u3400-\u9FFF]+$
理论上没错
, 可是我到msn.co.ko随便复制了个韩文下来, 发现根本不对, 诡异
再到msn.co.jp复制了个’お’
, 也不得行..
然后把范围扩大到^
[\u2E80-\u9FFF]+$, 这样倒是都通过了, 这个应该就是匹配中日韩文字的正则表达式了, 包括我們臺灣省還在盲目使用的繁體中文
而关于中文的正则表达式
, 应该是^[\u4E00-\u9FFF]+$, 和论坛里常被人提起的^[\u4E00-\u9FA5]+$很接近
需要注意的是论坛里说的^
[\u4E00-\u9FA5]+$这是专门用于匹配简体中文的正则表达式, 实际上繁体字也在里面, 我用测试器测试了下’中華人民共和國’, 也通过了, 当然, ^[\u4E00-\u9FFF]+$也是一样的结果。

   
  
posted @ 2009-05-02 18:27 刘凯毅 阅读(30650) | 评论 (3)编辑 收藏


转:http://www.cnblogs.com/yisohoo/articles/1423940.html

我这使用 cu 论坛 下的 rhel-5.1-server-i386-dvd.iso 安装配置 

以前用fedora配置yum很方便,可是来到RHLE就不是那么顺手了,如果不做如下设置,经常出现不能通过yum安装软件的情况,下面是详细配置(网上找的)


首先,rhel5系统安装的时候其实已经有yum了,只是因为如果用官方的网站更新的话除非你是用钱买的rhel5.否则它会提示注册之类的。所以只要把 yum的更新地址改成开源的就行了。而限定yum更新地址的文件在/etc/yum.repos.d/里。先把它们改成备份文件,即在后面加.bak。
[root@killgoogle ~]# mv /etc/yum.repos.d/rhel-debuginfo.repo /etc/yum.repos.d/rhel-debuginfo.repo.bak
[root@killgoogle ~]# mv /etc/yum.repos.d/rpmforge.repo.rpmnew /etc/yum.repos.d/rpmforge.repo.rpmnew.bak



建立新的配置文件:
[root@killgoogle ~]# cd /etc/yum.repos.d
[root@killgoogle ~]# touch rhel-debuginfo.repo
[root@killgoogle ~]# touch mirrors-rpmforge
[root@killgoogle ~]# touch rpmforge.repo



往新的配置文件写东西:
[root@killgoogle ~]#vi rhel-debuginfo.repo
[base]
name=CentOS-5 - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever5&arch=$basearch&
repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://ftp.sjtu.edu.cn/centos/5/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos5

#released updates
[update]
name=CentOS-5 - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=4&arch=$basearch&repo=updates
baseurl=http://ftp.sjtu.edu.cn/centos/5/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos5

#packages used/produced in the build but not released
[addons]
name=CentOS-5 - Addons
#mirrorlist=http://mirrorlist.centos.org/?release=4&arch=$basearch&repo=addons

baseurl=http://ftp.sjtu.edu.cn/centos/5/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos5

#additional packages that may be useful
[extras]
name=CentOS-5 - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=4&arch=$basearch&repo=extras

baseurl=http://ftp.sjtu.edu.cn/centos/5/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos5

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-5 - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=4&arch=$basearch&repo=centosplus
baseurl=http://ftp.sjtu.edu.cn/centos/5/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos5

#contrib - packages by Centos Users
[contrib]
name=CentOS-5 - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=4&arch=$basearch&repo=contrib
baseurl=http://ftp.sjtu.edu.cn/centos/5/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos5

# vi dag.repo
[dag]
name=Dag RPM Repository for RHEL5
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el5/en/$basearch/dag/
enabled=1
gpgcheck=1
gpgkey=http://ftp.riken.jp/Linux/dag/packages/RPM-GPG-KEY.dag.txt




修改第二个配置文件:
[root@killgoogle ~]vi mirrors-rpmforge
http://apt.sw.be/redhat/el5/en/$ARCH/dag
http://archive.cs.uu.nl/mirror/dag.wieers/redhat/el5/en/$ARCH/dag
http://ftp2.lcpe.uni-sofia.bg/freshrpms/pub/dag/redhat/el5/en/$ARCH/dag
#http://ftp.heanet.ie/pub/freshrpms/pub/dag/redhat/el5/en/$ARCH/dag
http://ftp-stud.fht-esslingen.de/dag/redhat/el5/en/$ARCH/dag
http://mirror.cpsc.ucalgary.ca/mirror/dag/redhat/el5/en/$ARCH/dag
http://mirrors.ircam.fr/pub/dag/redhat/el5/en/$ARCH/dag
http://rh-mirror.linux.iastate.edu/pub/dag/redhat/el5/en/$ARCH/dag
http://rpmfind.net/linux/dag/redhat/el5/en/$ARCH/dag
http://wftp.tu-chemnitz.de/pub/linux/dag/redhat/el5/en/$ARCH/dag
http://www.mirrorservice.org/sites/apt.sw.be/redhat/el5/en/$ARCH/dag





修改第三个配置文件:
[root@killgoogle ~]# vi rpmforge.repo
# Name: RPMforge RPM Repository for Red Hat Enterprise 5 - dag
# URL: http://rpmforge.net/
[rpmforge]
name = Red Hat Enterprise $releasever - RPMforge.net - dag
#baseurl = http://apt.sw.be/redhat/el5/en/$basearch/dag
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1


下面有2种方法:

这种我尝试过,在服务器上已搭建好 yum 

参考 : http://www.linuxdiyf.com/viewarticle.php?id=70630

   这里注意 

   vi /etc/yum.conf 
    加上这么一句:timeout=120 

和 CentOS-Base.repo 文件中的 5.0 都修改为 5.2 就可以了


方法2 :


如果风速慢的话可以通过增加yum的超时时间,这样就不会总是因为超时而退出。
[root@killgoogle ~]vi /etc/yum.conf
加上这么一句:timeout=120
到这里配置差不多就完了。还有一个包需要安装:rpmforge-release-0.3.6-1.el5.rf.i386.rpm
如果不安装的话有可能会出现以下错误:GPG key retrieval failed: [Errno 5] OSError: [Errno 2] 没有那个文件或目录: '/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag'
http://rpmfind.net/linux/RPM/找到这个包,然后
[root@killgoogle ~]rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

#我这安装地址
#wget ftp://rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
接下来就是输入KEY了。
[root@killgoogle ~] rpm --import http://mirror.be10.com/centos/RPM-GPG-KEY-CentOS-5

    如果不行请使用:  rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

     谢谢 三楼,我这有时间 核实下 告诉大家 。

这样基本上yum就可以用了。不过如果觉得不爽的话还可以优化:
加速yum
[root@killgoogle ~]yum install yum-fastestmirror yum-presto
指定或去掉软件源的mirror:
可以在baseurl中将比较慢的mirror去掉
你的yum镜像的速度测试记录文件:
/var/cache/yum/timedhosts.txt
yum Existing lock 错误的解决办法
如果系统启动的时候, yum 出现Existing lock /var/run/yum.pid: another copy is running as pid 3380. Aborting. 可以用下面的办法解决:
[root@killgoogle ~]/etc/init.d/yum-updatesd stop
也可以用以下方法:
[root@killgoogle ~]rm -f /var/run/yum.pid
主要原因就是yum在自动更新只要关掉它就可以了

完了。现在就可以测试能不能用了哦:
[root@killgoogle ~]yum install mplayer
这是安装mplayer如果要删除则是:
[root@killgoogle ~]yum remove mplayer



posted @ 2009-04-29 14:28 刘凯毅 阅读(10640) | 评论 (5)编辑 收藏


1. 去除 空行
sed 'N;s/"n/ /g'  file


posted @ 2009-04-23 17:20 刘凯毅 阅读(273) | 评论 (0)编辑 收藏


实际问题
主要在编码问题下。
我把这解决的办法说下吧,主要这统一 编码 utf8
0. 数据库 导入 utf8
   如果 导入文本 gbk
      perl -MEncode -ne 'print encode("UTF-8", decode("GBK",$_));'  file.txt > xx.data
1. 代码编码 # -*- coding:UTF8 -*-
2. 文件读取 编码 cc=bm(x.readline()).split('"t')
      bm=lambda str : str.decode('gbk').encode('utf-8')
3. 对外输出 str="%s%s"t" % (str,bmug(f))
      bmug=lambda str : unicode(str).encode("utf8")

就是统一编码 ,我这统一 utf8
  
# -*- coding: UTF8 -*-
import sqlite3,os
"""
drop table imusic ;
create table  imusic(    
  musicname   varchar(300) ,
  productid    varchar(300) ,
  downcount   varchar(300) ,
  musicname2   varchar(300) ,
  actorname2 varchar(300) ,
   iszl varchar(300) ,
   isqu varchar(300) ,
   zlmmf  varchar(300) ,
   zlmp3 varchar(300) ,
   qump3 varchar(300) ,
   cpid varchar(300) ,
   cpname varchar(300) ,
   rows varchar(300) ,
   tmp1 varchar(300) 
);

如果要使用主键
在建表第一列加  id integer auto_increment  PRIMARY KEY
文本就要先处理下来
awk 'BEGIN{vi=0}{vi++;print vi"\t"$0;}' 03.data > 03.id.data


# 文本 "t 分割  导入
.separator "\t"
.import db2.data imusic
.separator ","

#导出
sqlite> .output a.txt
sqlite> select * from tab_xx;
sqlite> .output stdout


"""

conn 
= sqlite3.connect("ex1")
cur 
= conn.cursor()

#编码转换 (我这 在 windows 下)
bm=lambda str : str.decode('gbk').encode('utf-8')
bmcc
=lambda str : str.decode('utf8').encode('gbk')
bmug
=lambda str : unicode(str).encode("utf8")

def  getValues(actor,music,zlxz,qqxz):
     
try:
         sql
=" select * from imusic  where musicname2=?  and actorname2=?   "  
         cur.execute(sql,( music,actor)  ) 
         res 
= cur.fetchall()
         
if res :
              data
=[]
              
for tt in res[0]:
                 data.append(tt)
              data[
7]=''
              
print zlxz,"*",qqxz
              
if data[8]=='' and  data[9]=='' :
                  
return None
              
if  zlxz=='有振铃下载'  :
                  data[
8]=''
              
if  qqxz=='有全曲下载'  :
                  data[
9]=''
              
if data[8]=='' and  data[9]=='' :
                  
return None
              
return data
     
except Exception, myError:
          
print "[error] %s %s %s %s" % (actor,music,zlxz,qqxz)
          
= open( "all_comm.txt""r")
cc
=x.readline().split('\t')
while cc :
    
try:
        cc
=bm(x.readline()).split('\t')
        dd
=getValues(cc[6],cc[5],cc[21],cc[18])
        
if dd :
            str 
= "" 
            
for f in dd :
                str
="%s%s\t" % (str,bmug(f))
            
print str
    
except Exception, myError:
          
print "[error] %s" %   cc


下面 demo 注重 update 对比
    # conn.total_changes 使用
为 update 跟新
# -*- coding: UTF8 -*-
import sqlite3,os,sys
conn 
= sqlite3.connect("ex4")
cur 
= conn.cursor()

#编码转换 (我这 在 windows 下)
bm=lambda str : str.decode('gbk').encode('utf-8')
bmcc
=lambda str : str.decode('utf8').encode('gbk')
bmug
=lambda str : unicode(str).encode("utf8")



def  getValues(actor,music,zlxz,qqxz,updateRow):
     
try:
         updateSql 
= " update  imusic set tmp1=? where musicname2=?  and actorname2=?  "
         
# 1 有振铃 有全曲
         # 2 无振铃 有全曲
         # 3 有振铃 无全曲
         # 4 无振铃 无全曲
         start = "0" ;
         
if  zlxz=='有振铃下载' and  qqxz=='有全曲下载'  :
              start
="1"
         
if  zlxz=='无振铃下载' and  qqxz=='有全曲下载'  :
              start
="2"
         
if  zlxz=='有振铃下载' and  qqxz=='无全曲下载'  :
              start
="3"
         
if  zlxz=='无振铃下载' and  qqxz=='无全曲下载'  :
              start
="4"
         cur.execute(updateSql,(start,music,actor)  )
         
if not conn.total_changes==updateRow:
              updateRow
=conn.total_changes
              log 
= "[success=%s update=%s] %s-%s:%s %s" % (start,conn.total_changes,actor,music,zlxz,qqxz)
         
else :
              log 
= "[giveUp start=%s] %s-%s:%s %s" % (start,actor,music,zlxz,qqxz)
         
print bmcc(log)
         os.system(
" echo %s >> log " % (bmcc(log)) )
         conn.commit()
         
return updateRow
     
except Exception, myError:
          excType, excValue, traceBack 
= sys.exc_info()
          
print excType
          
print myError          

          
= open( "all_comm2.txt""r")
cc
=x.readline().split('\t')
myrows
=0
updateRow 
= 0 ;
while cc :
    myrows
=myrows+1
    
try:
        
print "rows = %s " % (myrows)
        cc
=bm(x.readline()).split('\t')
        updateRow
=getValues(cc[6],cc[5],cc[21],cc[18],updateRow)
    
except Exception, myError:
        excType, excValue, traceBack 
= sys.exc_info()
        
print excType
        
print myError   




posted @ 2009-04-23 10:09 刘凯毅 阅读(1362) | 评论 (0)编辑 收藏



rsync -avzP   cpByDataFile.py  --progress xj_liukaiyi@122.102.*.*:/home/xj_liukaiyi/test/

rsync -avzP  xj_wanghongbao@10.25.*.*:/newdata2/003.tar.gz   --progress .


不需要输入密码
在服务器上:
su -c 'vim  /etc/rsyncd.conf'

[gz]
path=/home/xj_liukaiyi/gz/
hosts allow = 124.207.100.....
read only = no


rsync -avzP --password-file=g:\cygwin\secret  xj_liukaiyi@122.102.4.90::gz  --progress .

g:\cygwin\secret  写入
xj_liukaiyi=123456




posted @ 2009-04-20 18:22 刘凯毅 阅读(236) | 评论 (0)编辑 收藏

仅列出标题
共12页: First 上一页 3 4 5 6 7 8 9 10 11 下一页 Last