agon-电脑

Archive for the ‘电脑’ Category

centos6自动添加与设置第三方源脚本

March 3rd, 2013, Posted by: agon   

centos安装第三方源的文章已经很多,但是看着要去一堆网站,一个个下载安装,再导入,设置优先级,实在很繁琐无聊,所以写了个脚本,自动下载、安装和设置,安装的源有EPEL,RPMForge,Remi和rpmfusion。

本机操作系统:
LSB Version:core-4.0-ia32:core-4.0-noarch:
Distributor ID: CentOS
Description: CentOS release 6.3 (Final)
Release: 6.3
Codename: Final

!!!注意,请务必知道下面的东东是干什么的,或者在虚拟机里试过再用。
源码下载地址

#!/bin/sh
##auto-install third repo for centos6.3
##2013-03-01
##########################################
#安装CentOS yum源优先级插件
yes | yum install yum-priorities

##########################################
#设置默认yum源
#备份
if
[[ ! -f "/etc/yum.repos.d/CentOS-Base.repo.bak" ]]; then  
	cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
else
	cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.yourbak
fi
#删除旧的优先级,如果有的话
sed '/priority=.*/d' /etc/yum.repos.d/CentOS-Base.repo
#设置[base]、[updates]、[extras]优先级为priority=1【1】
sed -i "s/\[updates\]/priority=1\n[updates]/g" /etc/yum.repos.d/CentOS-Base.repo #【2】
sed -i "s/\[extras\]/priority=1\n[extras]/g" /etc/yum.repos.d/CentOS-Base.repo
sed -i "s/\[centosplus\]/priority=1\n[centosplus]/g" /etc/yum.repos.d/CentOS-Base.repo
#设置[centosplus]、[contrib]优先级为priority=2
sed -i "s/\[contrib\]/priority=2\n[contrib]/g" /etc/yum.repos.d/CentOS-Base.repo
sed -i '$a priority=2' /etc/yum.repos.d/CentOS-Base.repo

##########################################
#下面安装第三方源 【3】
##########################################

# 安装EPEL源 
# 1、到 EPELwiki下载你系统的版本
wget http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-*.noarch.rpm

#2、导入GPGkey
sleep 5
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

#3、设置优先级为11
sed -i "s/\[epel-debuginfo\]/priority=11\n[epel-debuginfo]/g" /etc/yum.repos.d/epel.repo 



##########################################
# 安装RPMForge源【4】

#1、在repoforge.org,找你系统需要的rpm包,替换下面的地址
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

#2、导入GPGkey
sleep 5
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
#如果报'error message like the following the key has already been importedh'执行以下命令:
if (( $? )); then 
rpm -K rpmforge-release-0.5.2-2.el6.rf.*.rpm
fi

#3、安装rpmforge包
rpm -ivh rpmforge-release-0.5.2-2.el6.rf.*.rpm
#4、设置优先级为12
sed -i 's/\[rpmforge-extras\]/priority=12\n[rpmforge-extras]/g' /etc/yum.repos.d/rpmforge.repo


##########################################
# 安装Remi设置源

#1、在rpms.famillecollet.com,找你系统需要的rpm包,替换下面的地址
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

#2、安装Remi包
rpm -ivh remi-release-6.rpm

#3、导入GPGkey
sleep 5
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-remi

#4、启用Remi,及设置优先级
sed -i '1,8s/enabled=0/enabled=1\npriority=13/g' /etc/yum.repos.d/remi.repo


##########################################
# 安装RPMFusion源

#1、在rpmfusion.org/Configuration,找你系统需要的rpm包,替换下面的地址
wget http://download1.rpmfusion.org/free/el/updates/6/i386/rpmfusion-free-release-6-1.noarch.rpm

#2、安装Remi包
rpm -ivh rpmfusion-free-release-6-*.noarch.rpm

#3、启用rpmfution,设置优先级
sed -i '1,8s/enabled=0/enabled=1\npriority=14/g' /etc/yum.repos.d/rpmfusion-free-updates-testing.repo



##########################################
#更新yum软件包
yum check-update
#查看已经安装的软件源
yum repolist

利用eric5的cx_freeze插件生成windows可执行程序

February 20th, 2013, Posted by: agon   

这里介绍了用eric5集成qt写qui程序,如果想在没有装pyqt的windows系统内运行,则需要把源代码打包为exe文件,python下打包exe的程序有py2exe,pyinstaller和cx_freeze,前两款一个停止更新,一个更新缓慢,只剩下cx_freeze支持最新版的python 3.3,而eric5正好有一个cx_freeze插件,可以很方便的打包源程序,本文就是介绍使用方法。

准备工作:

  • 本文环境:eric5、python3.3 64位、windows8、qt5.01
  • 下载源码,源码下载地址代码浏览,源文件结构如下图:
  • 运行代码:新建一个工程,把源码添加到工程内,设置project和run project对话框,运行看是否正常

安装插件:

点击菜单栏Plugins > plugin Repository,蹦出对话框,点击下部的update,找到cx_freeze插件,点击download&install,下载完毕后蹦出安装对话框,点击next,next,点击install,点击关闭。


点击project > Pacages > Use cx_freeze,就可以看到cx_freeze的设置对话框了。

设置软件:

按照下图设置参数:




点击确定,蹦出一个对话框,生成以下代码。

--target-dir=F:\2 --target-name=welcome.exe --base-name=Win32GUI --compress -OO --include-modules=re welcome.pyw
copying E:\Python33\lib\site-packages\cx_Freeze\bases\Win32GUI.exe -> F:\2\welcome.exe
copying C:\WINDOWS\system32\python33.dll -> F:\2\python33.dll
writing zip file F:\2\welcome.exe

  Name                      File
  ----                      ----
P PyQt4                     E:\Python33\lib\site-packages\PyQt4\__init__.py
m PyQt4.QtCore              E:\Python33\lib\site-packages\PyQt4\QtCore.pyd
m PyQt4.QtGui               E:\Python33\lib\site-packages\PyQt4\QtGui.pyd
m __main__                  welcome.pyw
m _bisect                   
m _bz2                      E:\Python33\DLLs\_bz2.pyd
...
中间省略
...                   
m re                        E:\Python33\lib\re.py
m reprlib                   
m sip                       E:\Python33\lib\site-packages\sip.pyd
m sre_compile               E:\Python33\lib\sre_compile.py
m sre_constants             E:\Python33\lib\sre_constants.py
m sre_parse                 E:\Python33\lib\sre_parse.py
...
中间省略
...                 
m types                     
P ui                        ui\__init__.py
m ui.Dialog                 ui\Dialog.py
m ui.Ui_Dialog              ui\Ui_Dialog.py
m unicodedata               E:\Python33\DLLs\unicodedata.pyd
...
中间省略
...                       
copying E:\Python33\lib\site-packages\PyQt4\QtCore.pyd -> F:\2\PyQt4.QtCore.pyd
copying E:\Python33\lib\site-packages\PyQt4\QtCore4.dll -> F:\2\QtCore4.dll
copying E:\Python33\lib\site-packages\PyQt4\QtGui.pyd -> F:\2\PyQt4.QtGui.pyd
copying E:\Python33\lib\site-packages\PyQt4\QtGui4.dll -> F:\2\QtGui4.dll
copying E:\Python33\DLLs\_bz2.pyd -> F:\2\_bz2.pyd
copying E:\Python33\lib\site-packages\sip.pyd -> F:\2\sip.pyd
copying E:\Python33\DLLs\unicodedata.pyd -> F:\2\unicodedata.pyd

cxfreeze finished.

	

主要是拷贝一些程序运行所需要的库和生成一个主程序。
到目标文件位置,双击welcome.exe,就可以运行程序了。

出现的问题:

  • Missing modules:? ui.Dialog imported from __main__,运行exe提示no module named ‘PyQt4.QtCore4’

    按理说cx_freeze只需要调用入口脚本(welcome.py),自定义的module(ui文件夹里面的文件),以及自定义module里import的module都会自动加载,但是这里除了入口脚本里import的包被加载外,其他的都提示no module named ‘module名’。
    这里给了一个说法,被import的文件所在的文件夹下必须要有一个__init__文件,里面什么都不用写。本例中在ui文件夹下添加一个__init__文件。

  • no module named ‘re’

    运行exe文件时提示没有re,在cx_freeze插件的advanced选项的include modules里添加re。其实就是cx_freeze的–include-modules参数。

  • 打开exe文件时蹦出cmd窗口

    basename设为win32gui才可以。

录一个视频,没声音,供参考。

参考链接:http://cx_freeze.readthedocs.org/en/latest/script.html

使用eric5集成环境写qt gui程序

February 17th, 2013, Posted by: agon   

Python的qyqt结合Qt designer,自定义slot的时候总是要手动连接和自定义函数,而且要手动转ui文件,很麻烦,幸好有一款叫eric的ide,整合了qt designer,可以使python像在qt creater下一样使用Qt designer。下面讲解一个利用此集成环境做的一个最简单gui程序。

本文假设你曾经在非集成环境下用pyuic4生成过python脚本,没有也没关系,照着做就行了,推荐阅读一下Introduction to Python Programming and Developing GUI Applications with PyQT里的第七章PyQT(下载)。

本文十分基础,而且有点罗嗦,请高手飘过,新手选读。

准备工作:

安装最新版的python

本文为3.3版

安装最新版的pyqt

本文版本为4.9.6-1,安装位置在python目录

安装最新版qt

本文为版本5.01,安装文件800多MB,安装需要4G左右安装空间,请留足空间。安装路径自定义就可以了,其余默认

安装eric5

a.下载页面点击Download eric5 到下载页面,找到最新版本,本文使用的是5.3,如果不想使用英文版,可以同时下载中文包
b.解压文件,到解压目录,运行install.py,完成安装
c.命令行下输入eric5或者在安装目录下双击eric5.pyw(可能会有cmd窗口,右键属性,默认打开方式选择python安装目录下的pythonw.exe),就能打开eric5

配置

初次打开,提示初始化设置,本文只涉及基本的简单设置,具体个性化设置,以后更改可以在Settings > Preferences下更改,请参考官方文档
1.点击Eidtor>APIs,勾选Compile APIs automatically,在Language下拉菜单下选择Python3,点击Add from installed APIs,选择你需要的APIs。最后点击Compile APIs,等待几分钟,编译完后点Apply。


图2.1
2.点击Eidtor>Autocompletion,勾选所有选项,点击Eidtor>AutocompletionQ>Scintilla,选from Document and API files,Apply。
3.点击确定

第一个程序

创建新project

打开eric5,点击Project > new,跳出一个对话框, 在这儿你可以设置一些project属性,这里面主要涉及的是项目名称(这里命名为Welcome)和目录位置(自定义)。

图3.1
点击确定,然后蹦出一个对话框,是否添加已经存在的python,这里选择否。

创建form

a.在左侧的project viewe里,点击左上角的form选项卡,在空白区域右键,选择New form。

图3.2
b.我们使用QtDesigner设计程序界面,在跳出的对话框里选择Dialog,然后点击OK。然后在保存对话框里选择新建文件夹,命名为ui(另一种创建文件夹的方法是在source选项里,右键 > new package)。进入ui文件夹,保存为Welcome.ui。此时form项里已经出现我们刚才创建的Welcome.ui文件。

图3.3
c.在创建ui文件的同时,会自动打开QtDesigner,你也可以在form选项里双击Welcome.ui来打开QtDesigner。按照下图创建程序界面

图3.4

创建预定义的连接

Signals/Slots。点击QtDesigner工具栏上的Edit Signals/Slots(F4),进入编辑模式,鼠标放到clear按钮上方,按钮变红,按住鼠标向上拖动到文本框,松开鼠标,跳出连接设置对话框。按下图选择对应的选项,确定。

图3.5
便在按钮和文本框之间创建连接,当按钮被点击发出clicked()信号,文本框接收信号,调动clear()槽(slot)方法,清空文本框里的文字。你可以按下Ctrl+R组合键,来调出一个实例,在文本框里输入文字,然后点击clear。
点击保存,关闭QtDesigner。

编译与运行程序

a.回到eric5的form选项卡里,右键Welcome.ui,点击Compile form。这将.ui文件(实际为xml)当做输入文件生成对应的python代码文件(Ui_welcome.py)。在Project viewer里的sources选项卡里可以看到,这个文件里包含一个Ui_Dialog类,我们创建的界面元素及信号与槽的连接,都通过这个类创建。
b.我们还要新建一个文件来调用UI_Dialog执行程序。我们在sources选项卡里的根目录下,右键,选择add source files,在source Files(在打开对话框里右键新建文件,显示所有后缀,重命名)里新建一个callWelcome.py勾选Is sourcecode files。

图3.6
c.在callWelcome.py里添加以下代码(本文不解释代码含义,推荐阅读本节开头介绍的图书章节):

import sys

from ui.Ui_welcome import * #调用界面python代码

class MyForm(QtGui.QDialog):

    def __init__(self, parent=None):

        QtGui.QWidget.__init__(self, parent)

        self.ui = Ui_Dialog()

        self.ui.setupUi(self)

if __name__ == "__main__":

    app = QtGui.QApplication(sys.argv)

    myapp = MyForm()

    myapp.show()

    sys.exit(app.exec_())

d.保存后,点击菜单Project > Properties,在main script 选项里选择callWelcome.py为main script,确定。
e.在菜单里选择Start > Run project。蹦出一个对话框,按下图修改

图3.7
f.点击确定,蹦出程序界面。我们的第一个程序完成。

修改第一个程序

第一个程序完成,显然它和我们的程序名weilcome不符,我们要做的程序是点击button会显示hello+文本框里的名字。但是预定义里没有这样的slot(槽)方法,这就需要我们自定义一个slot。一般的方法是在callWelcome.py里的MyForm类里自定义一个方法,再用QtCore.QObject.connect来连接。记住不能写在通过ui文件自动生成的py文件里,如果那样做的话,下次修改界面重新生成时,会覆盖之前自己写的方法。用这个方法有一点烦人,每次自定义slot方法,都要手动定义方法,写连接命令,而且库名字很容易打错,用eric5的目的就是省去这些步骤,直接写方法,把精力用在自定义方法的内容上。

准备工作

保存project,然后关闭。因为没用版本控制,用原始的方法,把welcome的project文件夹复制出来一份,另存为,重名为welcome2。打开eric5,在菜单栏选择project > open,打开welcome2文件夹里的Welcome.e4p。点击菜单Project > Properties,在project 选项里把路径里的welcome改为welcome2。
或者直接忽略上面一段话。

修改界面

a.在左侧的project viewe里,点击左上角的form选项卡,双击welcome.ui,打开QtDesigner。
b.按照下图添加pushButton和label:

图4.1
对象的文字删掉后在界面上就看不到了,它还存在着,在对象查看器里依然可以看到。
c.回到eric5的form选项卡里,右键Welcome.ui,点击Compile form。
每次修改完界面,都要重新compile。

创建自定义slot

a.下面就到本文重点了,为了让我们自定义的方法不被ui-complier自动生成的类覆盖,我们要创建一个文件,里面包含一个自定义的类,并且这个类继承ui文件自动生成的类。Eric5使这一切都很方便:
右键welcome.ui,选择Generate dialog code。此时弹出一个对话框,如下图:


图4.2
点击new,跳出一个对话框,如下图

图4.3
图里的文本是自动生成的,因为我们创建的界面是Dialog,所以类名是Dialog,文件名welcome.py,根据ui名生成,这里都可以自定义,我们用默认的。点击确定,回到刚才的对话框。
在filter with下方,我们会看到所有在QtDesigner里创建的对象,以及它们预定义的方法。我们只需要hello这个button click事件,来触发自定义的slot。按照下图选择,然后确定。


图4.4
3.在source选项卡里我们就能看到eric5生成的welcome.py。双击在编辑器里打开,找到如下代码:
<

    @pyqtSlot()

    def on_buttonHello_clicked(self):

        """

        Slot documentation goes here.

        """

        # TODO: not implemented yet

        raise NotImplementedError

把raise NotImplementedError,修改为自定义的代码,修改代码如下:

    @pyqtSlot()

    def on_buttonHello_clicked(self):

        """

        Slot documentation goes here.

        """

        #当点击hello button的时候,把labelMessage的text改为lineUserNam里的文字

        self.labelMessage.setText("Hello " + self.lineUserNam.text())

修改main scrpt运行程序

a.因为我们不从生成的UI_welcome.py生成程序界面,而是通过welcome.py里继承的Dialog类,所以要改一下callWelcome.py这个文件,更改如下:

import sys

from PyQt4.QtGui import QApplication #添加

from ui.welcome import * #这里有修改

 

if __name__ == "__main__":

    app = QApplication(sys.argv) #修改

    myapp = Dialog()

    myapp.show()

sys.exit(app.exec_())

b.在菜单里选择Start > Run project。蹦出对话框,确保directory位置和在当前project存放位置一样。

在文本框内输入world,点击hello,显示hello world。

完毕,容易错地地方:

  1. 自定义方法里的对象名打错,和ui里的不一样。
  2. 每次修改完ui,都要点compile
  3. 运行时确定main script和 project目录正确

好长时间没写博客,用word写完,去掉垃圾代码,粘过来还是乱七八糟,word文章下载地址

文章参考:

网址:

官方教程:http://eric-ide.python-projects.org/eric-tutorials.html

书:

Introduction to Python Programming and Developing GUI Applications with PyQT里的第七章

代码下载:
http://ubuntuone.com/2PV5w09KstmM3zzNYCpYyE

控制网页内视频速度

November 24th, 2012, Posted by: agon   

介绍个软件Enounce MySpeed,这款软件可以加快或减慢网页内的视频速度,快进最快可以3倍速度播放,慢放最慢可以减慢至1/3。 最近看一个网站教程视频,想用1.5倍速播放,那样可以用短的时间看更多的内容,可是网站上的视频不让下载,通过firefox插件下下来后,发现下下来的swf视频文件是加过密的,只能播几帧,反编译再打包成swf文件又很麻烦费时,根本没有达到节省时间的目的。搜了半天发现一款神器,就是Enounce的MySpeed。 只要是通过chrome、firefox或者ie打开的网络视频(不要在第三方浏览器使用可能无效),它都可以加速或者减慢速度播放,并且不同速度之间切换很方便快捷,控速界面如下:

这款软件支持范围很广,在浏览器上打开的视频,不管是通过flash还是html5播放出来都可以控制,所以控制youtube和优酷或者别的一些flash视频网站都没问题,它还有一个好处就是缩短视频前面的广告时间。 平时看一些信息类的视频或者一些语速很慢的教程,完全可以2倍速,而想练英语听力的也可以慢速播放,从而达到慢速英语的目的。 可是这款软件只提供7天的试用,基本版的29美元,加强版的99.9美元,不过可以删除注册表的一个键值,达到无限期试用,位置在下图
myspeed无限期试用注册表位置
到期的时候手动删除它,或者可以建一个reg文件,添加到定时任务,6天执行一次。reg文件很好制作,在注册表找到上图表项,右键导出,然后打开导出的文件,在HKEY_LOCAL_MACHINE前加一个(减号)就行了。 嫌官网下载麻烦的,可以再这儿

2015年最新破解版版更新,效果很棒,http://langxun2011.blog.163.com/blog/static/1814781352015845492155/

centos 6.3安装fcitx 4.2.6.1

October 4th, 2012, Posted by: agon   

一、安装fcitx

1.到这里下载最新版的fcitx源码fcitx-4.2.6.1_dict.tar.xz,不要下载fcitx-4.2.6.1.tar.xz,安装这个你需要能翻wall。

2.安装cmake:
sudo yum install cmake

3.解压解压缩源码包:
xz -d linux-3.1-rc4.tar.xz
tar -xf linux-3.1-rc4.tar
然后到解压缩目录:
cd fcitx-4.1.0
mkdir build
cd build
cmake ..
make
sudo make install

4.编译过程中可能出现的问题(下面以devel结尾的文件,其他linux版本可能为dev)
a:package ‘enchant’ not found ?
sudo yum install enchant-devel

b:package ‘iso-codes’ not found ?
sudo yum install iso-codes-devel

c:package ‘xkbfile’ not found ?
sudo yum install libxkbfile-devel

d:package ‘presage’ not found ?
这里下载最新的presage,安装过程参见解压后的readme

e:Could not find ICU ?
sudo yum install libicu-devel

f:gzip: stdin: invalid compressed data–format violated
/bin/tar: 归档文件中异常的 EOF
/bin/tar: 归档文件中异常的 EOF
/bin/tar: 错误不可恢复:现在退出
make[2]: *** [data/table/db.txt] 错误 2
make[1]: *** [data/table/CMakeFiles/table_data.dir/all] 错误 2
make: *** [all] 错误 2
因为你安装的是fcitx-4.2.6.1.tar.xz版本,所以需要连网下载gz压缩包,就算你连网如果不能翻wall,还是下不下来,参见第1点下载fcitx-4.2.6.1_dict.tar.xz

5.启用fcitx测试:
在终端里输入:fcitx -d,就可以看到菜单栏出现输入法状态栏图标
,
如果发现类似Failed to start message bus: There is no limit called “max_incoming_unix_fds”的错误,可能是dbus的版本问题,不影响使用,如果想取消错误请编辑/usr/local/share/fcitx/dbus/daemon.conf,注释掉相关错误参数,此时还不能正常使用,请参看下面配置说明。

二、配置Fcitx

1.新建配置文件:
sudo vim /etc/X11/xinit/xinput.d/fcitx.conf
添加以下内容:
XIM=fcitx
XIM_PROGRAM=/usr/local/bin/fcitx # 这里请更改为你的fcitx执行文件位置,默认安装是这里
XIM_ARGS=”-d”
GTK_IM_MODULE=fcitx
QT_IM_MODULE =fcitx

2.然后在/etc/alternatives/目录下,将符号链接xinputrc删除,重新建一个:
sudo mv /etc/alternatives/xinputrc /etc/alternatives/xinputrc.bak
sudo ln -s /etc/X11/xinit/xinput.d/fcitx.conf /etc/alternatives/xinputrc

3.注销然后登陆,在系统—首选项—输入法,里面选择“启用输入法特性”,选择“使用fcitx”,然后“注销”,登录后按“ctrl+空格”就可激活fcitx输入法。
注:如果你使用的桌面是英文环境的,还需要在使用用户的用户目录.bashrc配置文件里添加如下内容:
export LANG=”zh_CN.UTF-8″
export LC_CTYPE=”zh_CN.UTF-8″
export XIM=fcitx
export XIM_PROGRAM=fcitx
export GTK_IM_MODULE=xim
export XMODIFIERS=”@im=fcitx”

4.如果你可以看到菜单栏里有输入法状态图标,但是无法用“ctrl+空格”调出,请尝试删除原来默认的输入中文法ibus:
sudo yum remove ibus

参考网址:
http://fcitx.github.com/handbook/fcitx.html#chapter-compile
http://www.xiaolumi.com/archives/268.html
http://www.2cto.com/os/201209/154042.html
http://forum.ubuntu.org.cn/viewtopic.php?f=8&t=377307

Page 2 of 41234