I can believe fly.

Tuesday, March 24, 2009

linux's smb配置

引言:自己动手才是王道,下面是简单的配置,贴出来作个记录

1. 安装smb
# /etc/init.d/smb start 
启动后用如下命令查看samba服务器所用的端口,并在防火墙中把相应的端口打开:
# netstat -tlnp |grep smb

2. 编辑配置文件
# vi /etc/samba/smb.conf
{
smb的配置信息(基本参考)
[global]
workgroup = ysl [工作组名称]
netbios name = yusulian  [主机名称]
server string = Samba Server Version %v [smb服务说明信息]
security = user [级别可以是user即需要用户才能访问;share是不用账号直接可以访问的]
display charset = cp936 [编码设置,这是为了win机子访问时,正常显示中文目录而设置]
unix charset = cp936
dos charset = cp936
[smbdir] [共享目录,外部访问的根目录]
comment = smb dir test [共享目录说明]
path = /data/smb/smbdir [共享目录绝对路径]
read list = test [只读权限账号列表,逗号隔开]
write list = admin [可写权限账号列表,逗号隔开]
create mask = 0775 
directory mask = 0775 
writable = yes 

3. 同步系统账号
# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
# vi /etc/samba/smbpasswd  (去掉多余的账号)

4. 修改smb密码(smb虽然用了系统账号,但不共用密码,因此需要作下调整)
# smbpasswd 账号   //为系统用户设置smb口令
5.smb服务重启
# service smb restart 

ps.其它补充说明
1. smb三种权限:read list,write list ,admin

Wednesday, March 11, 2009

linux下执行mount问题

  上回在linux下执行mount,出现中文目录问题,后面加了iocharset=cp963参数搞定,命令是:
sudo mount -t cifs -o iocharset=cp963,username=user,password=pwd //192.168.0.0/Backup /data/mnt/samba
  今天继续执行copy动作:cp -rf /data/mnt/samba/src /data/dst,却出现如下错误:
cp: cannot stat `/data/mnt/samba/src/\324\317\302\311\316\350台.bmp': No such file or directory
  疑问:/src目录下有5个中文名称的文件,为什么有四个可以正常copy到dst目录下,只有一个怎么也不过去.

  后面,先umount掉,继续重新执行:
sudo mount -t cifs -o codepage=936,iocharset=uft8,username=user,password=pwd //192.168.0.0/Backup /data/mnt/samba
  这时候来查看中文目录,显示全变成了乱码了,就把iocharset=uft8改为iocharset=gb2312来执行
显示是正常的,但copy的问题还是存在着.

.........中间让朋友帮上去服务器分析一下,他查了一下那目录是什么编码..................
  后面发现在重新执行以上任何mount的动作,都成功不了,总是报如下两种错误:
mount error 20 = Not a directory
(网上资料是说可以执行echo 0 > /proc/fs/cifs/LinuxExtensionsEnabled,好像在这边没效果)
mount error 79 = Can not access a needed shared library
(这个问题更是一头雾水)

继续寻找原因,朋友试着将-t cifs改为-t smbfs,命令:
sudo mount -t smbfs -o iocharset=cp963,username=user,password=pwd //192.168.0.0/Backup /data/mnt/samba
成功执行,但是无论iocharset=cp963采用什么编码,都显示乱码,根本无法copy操作

补充:
1.重新换个目标挂载目录/data/mnt/samba改为/data/mnt/test,问题还是存在
2.执行sudo reboot,重启电脑,也没有解决

Tuesday, March 10, 2009

英语集锦

hello ,everyone,long time no see

your netname must amend
Unified format:area-selfname

i am working now.
me too.

happy to work
work and is being joyful!
Good morning. Have a nice day!  

090307每日英语

一:基础句型


以下5个句子所有人有要操练,英语好的人不要小看它,你懂了未必就很熟悉,成功其实就是简单事情重复做,力争做得好做的精。


1. To be careful! 一定要小心!

2. Do me a favor? 帮个忙,好吗?

3. Help yourself. 别客气。

4. I'm on a diet. 我在节食。

5. Keep in Touch. 保持联络。


二:成语或谚语


以下是一句谚语


Rome was not built in a day 冰冻三尺,非一日之寒.


三.提高型。


以下5句是属于提高型的,有能力的可以学,不要求人人都学,初学者可以先不学。


1. He made his way through the forest. 他设法穿过了森林。

2. He suggests you leave here at once. 他建议你立刻离开这儿。

3. He was married to a friend of mine. 他和我的一个朋友结了婚。

4. He will blame you for carelessness. 他会责备你的粗心大意。

5. I can give you a number of excuses. 我可以给你说出很多韵理由。


贴了一篇,具体的还是给地址

http://qun.qq.com/1.1/77936032#bbs/

Thursday, March 5, 2009

python编码知识

事件
file1[utf-8]->file2[gbk],从file1读取的数据类型type(数据)是str类型
这时候,如果要将该数据以gbk编码写入file2,则需要作转换:
        var = unicode(var, 'uft-8').encode('gbk')
相反的需求:
        var = unicode(var, 'gbk').encode('uft-8') 
你也可以写个unicode检测信息
        # 检测,如果var不是unicode,则相应转换
        if not isinstance( var, unicode): 
            try:
                var = var. decode ("utf-8", 'ignore')
            except:
                var = var. decode ("gbk", 'ignore')
问题现象
(编码转换过程中经常会有以下的错误提示)
Errors: 'ascii' codec can't encode characters in position 26-27: ordinal not in range(128)
Errors: 'gbk' codec can't encode character u'\u036c' in position 26: illegal multibyte sequence
知识点
decode 解码,将指定的编码转换为unicode
格式:decode([encoding], [errors='strict']),可以用第二个参数控制错误处理的策略,默认的参数就是strict,代表遇到非法字符时抛出异常;
如果设置为ignore,则会忽略非法字符;
如果设置为replace,则会用?取代非法字符;
如果设置为xmlcharrefreplace,则使用XML的字符引用。
例子:
var. decode ("gbk") var为gbk编码,转为unicode. (同等式=unicode(var,"gbk"))
var. decode ("gbk", 'ignore') var为gbk编码,转为unicode. 忽略非法字符
encode 编码,将unicode解为指定的编码
var.encode('gbk')
如果两个编码需要转换,则:unicode(a, 'gbk').encode('utf-8')
先将gbk编码转为unicode,然后在转为utf-8
关键
你要清楚接收的数据原编码是啥,最终又是以什么目标编码存储。]
实例
命令行:cmd = E:\WorkDir\yusulian\2009\ver_manage\dirrepo\Case2\DubaRelease\2009\copysharedata.bat \\192.168.11.22 ysl ysl 版本\公测 20081104.13586 standard\beta
执行: os.system(cmd)
出错:
   File "getdata.py", line 61, in getdata
    os.system(cmd)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 114-117:
解决:
先把cmd转为unicode
if not isinstance( cmd, unicode): 
    try:
        cmd = cmd. decode ("utf-8")
    except:
        cmd = cmd. decode ("gbk")

执行的时候, 把cmd转为gbk/utf-8编码
os.system ( cmd. encode("gbk") )
或者
os.system ( cmd. encode("utf-8") )
相关资讯


The Regulator工具介绍

  今天不小心又用上了正则表达式,记得有段时间用得挺起劲,现都差点把它给忘了。
也记得,之前一直使用一个免安装的解析正则表达式的工具,现找不到了;然后不小心就装上RegulatorSetup.msi,这个有点复杂。引用下网上的介绍“The Regulator 就是其中的佼佼者(被列入MSDN上的知名文章《Ten Must-Have Tools Every Developer Should Download Now》)。The Regulator官方网站http://royo.is-a-geek.com/iserializable/regulator/”
   下面简单说下:



ps:小道消息,要学习正则表达式可以到网上找份资料,名叫“正则表达式30分钟入门教程.mht”

Wednesday, March 4, 2009

发布版本归档问题分析

  前段时间兴匆匆的定制了发布版本归档备份说明,大概的内容是发布版本有哪些类别/每个类别有哪些具体的版本/存储位置/存放的目录结构。当时就直接按照版本来划分目录结构了,即第一层是类别,第二层是具体的版本,第三层是对应的构建版本。今天在收集过往的版本时发现了一个问题。
  由于归档的版本要求除了安装包,其散文件也一样要存。那么,如果归档的发布版本与安装包与安装包的散文件不是一一对应关系,就会有个困惑:在归档的备份存储位置,N个版本共用的安装包散文件该如何存放呢,这时候就不是直接将构建版本拉到第三层就可以搞定的?想来想去,就是觉得当初定的结构一点也不适用了。
附加资料:
关系说明:
1. 归档版本[1]-安装包[1]-安装包散文件[1]
2. 归档版本[N]-安装包[N]-安装包散文件[1]
目录结构:
1. 构建版本的原始存放形式:
+ 20080304.100
| | - installfile 存放散文件
| | - package   存放安装包
| |  |- setup    存放特殊包
| |  |  |- A
| |  |  |- B
| |  |  |- C
| |  |  |- D
| |  |  |- E
2. 版本发布出去后存档形式:
+ 版本类别
| | - A 
| | - B   
| | - C 
| | - D   
| | - E 
改进方法:
1. 去掉第一层/第二层,直接以第三层形式存档,然后以记录形式来区分每个版本。(这是目前最优的方式),但这种方式也有一个缺陷:如果构建出来的所有版本并不是全部要发布的,那这时候是全部归档还是去掉不发布的版本呢?
2. 如果需要归类版本的话,那直接存储安装包就可以. 对应的散文件仍在构建版本存放的位置去取。(这是个人的理想方式,不过涉及的改进范围广)