安装完Windows Server 2008 r2后第一件事是安装驱动、更新系统以及注册。注册的方法用微软给学生发的免费授权。貌似国内很多学校的学生都可以得到这个免费的授权,微软为了垄断市场,真是舍得啊。
更新后依http://www.win2008workstation.com/的提示配置好桌面环境。有几个内容:
1、创建新的非特权用户。平时尽量使用非特权用户,避免感染木马时整个系统都受到影响。安装软件的时候一定要仔细看一看,不然有些软件会安装IE插件什么的,清理起来很麻烦。
2、关闭"关闭事件跟踪器"。禁用登录时按"Ctrl+Alt+Del"的功能。这两个设置可以在gpedit.msc里面找到。
3、启用声音。在系统右下角的通知栏里面点几下就可以启用了。不过启用了声音服务之后,播放音乐还是会卡。可以在注册表里面找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\SystemResponsiveness
,将它的值修改为0x14
。喜欢的话,可以在管理面板的属性里面选择一个声音主题。
更多内容请点击查看正文。
类型:随感,创建时间:Jan. 1, 2012, 6:56 p.m. 点击查看完整内容。。。以前配置grub1的方法是修改/etc/grub.conf
,而grub2则是修改/etc/grub.d/
里面的脚本。里面的脚本过于深奥,我稍微查看了一下,改分辨率的方法是修改/etc/default/grub
的内容:
在GRUB_CMDLINE_LINUX里面增加内核参数:
GRUB_CMDLINE_LINUX="vga=792"
注意要注释掉:
# GRUB_TERMINAL=console
默认这一行是注释掉的,不然vga
就没用了。
做完调用grub-mkconfig -o /boot/grub/grub.cfg
刷新一下配置。
先看一下这两行代码:
>>> class Fish:pass
>>> f=Fish()
f
就是Fish
类的实例,它是一个对象(object),很明显吧。
Fish
是类,它也是一个对象(object),如果你以前学的是C++或者Java,可能会难以理解。
不管怎么样,在Python内部,它们都用一个PyObject
结构体表示,你可以修改对象的属性,
调用它们的方法。
类与实例两种对象有什么区别呢,下面的代码运行于python 3.1版本:
>>> Fish.isAnimal=True
>>> print(f.isAnimal)
True
我们定义Fish是一种动物,显然f更是一种动物了。
>>> f.name="老鱼"
>>> print(Fish.name)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'Fish' has no attribute 'name'
我们定义f这条鱼的名字是"老鱼"。这时候,Fish并不会自动拥有名字这个属性,总不能说 鱼都是叫“老鱼”吧。
类的实例可能比较好理解,但是类居然可以有属性,可能有些C++/Java程序员难以理解。
使用classmethod
修饰的函数第一个参数是类对象。平时它没什么用,只有继承关系比较复
杂的时候才能派上用场。我以前学classmethod的时候写过一段代码:详情请点击查看正文。
使用过一段时间的Python之后,大多数朋友可能已经发现自己经常使用的是Python某一部分的功能。比如习惯拿Python来当计算器的朋友,最喜欢的是运行Python的命令行之后就打一个:
from __future__ import division
from math import *
每次运行之后都要输入这些命令不免麻烦,幸好Python开发者早就替我们考虑好这个问题了。可以通过设置"PYTHONSTARTUP"这个环境变量让Python命令行每次运行后都自动做这些事。
比如,我们可以编写一个名为startup.py的文件,它的内容是:
from __future__ import division
from math import *
假设将它保存到H:\Documents\myconfig\startup.py
。然后设置环境变量PYTHONSTARTUP=H:\Documents\myconfig\startup.py
。下次运行Python命令行之后,输入sqrt(2)
试试。
习惯使用Virtual Box然后改用VMWare的朋友可能会对它默认的右Alt快捷键印象深刻,特别是对安装Linux虚拟机的朋友来说更是如此。比如,在Linux下,经常要按Ctrl+Alt+Fn
来切换控制台,Virtual Box直接按下此组合键即可,而VMWare则需按Ctrl+Alt+Space,然后放开Space按Fn才有效。如果直接设定为不区分左右的Alt键也不行,菜单命令和Emacs快捷键都会失效。
那,能不能让VMWare跟Virtual Box一样呢?直接使用VMWare的首选项对话框目前是不行的,只能配置使用Alt键或者Ctrl键,不能配置左右。后来通过Google,我发现了一种修改VMWare配置文件的方法。原来,VMWare并非不支持此功能,而是隐藏起来了。
首先要找到VMWare的配置文件。它位于C:\Document and Settings\username\Application Data\VMWare\preferences.ini
。
KDE的Phase样式是我最喜欢的样式之一。我觉得它看起来非常稳重、简洁,很适合作为日常工作的默认样式。原来以为它只能工作在KDE环境,直到半年前看KDE代码的时候才发现它原来是一个Qt样式,因此,开发Windows软件的时候完全也可以使用它。
在Windows下编译Phase样式很简单,只要把Phase的三个文件复制过来,假定放在D:\phase
下。然后编写这么一个工程文件:
#phase.pro
TEMPLATE = lib
CONFIG += plugin
HEADERS += bitmaps.h phasestyle.h
SOURCES += phasestyle.cpp
接下来Qt程序编译标准步骤:
h:\phase> qmake
h:\phase> mingw32-make release
编译成功后,可以在h:\phase\release
下找到phase.dll文件,复制到Qt的$QTDIR\plugins\styles
目录后就可以使用Phase样式了。
前两天看txt小说的时候,手头找不到小说阅读器,就顺手写了一个。主要功能是让文字自动滚动。原理超简单,让QTextBrowser
的滚动条每隔一段时间往下拉一点就可以了。好了,上代码:
vb=self.textBrowser.verticalScrollBar()
if vb.value()>=vb.maximum():
return
vb.setValue(vb.value() + 2)
据我试验,QPlainTextEdit
滚动条拉动时以行为单位,每次滚动只能下拉一行。用QTextEdit
和QTextBrowser
不会有这个问题。
现在的女人有个特点就是人生观的取舍带有非常浓重的功利色彩,既封建又现代,既大男人主义又女权主义。
1,结婚之前,她们要这要那,要房子要车子要票子,还要求男人得能干会赚钱,而自己能力如何无所谓(结婚以后也要求男人挣钱养家,而自己的收入自己留下来 做零花)。这实际上是继承了封建社会男尊女卑的传统,想把自己像一个富家大小姐那样风风光光的嫁出去,然后对方像养阔太太一样把自己养起来,而且对方既然 要求自己“做对方家“的人,是把自己“拿“走了,那么对方当然还得付给自己家一大笔彩礼。就好像买卖东西一样,这本质上是延续封建社会的传统。
2,结婚以后,又反过来了,放下了封建主义的幌子,开始挥动女权主义的大棒。她们嫁到了男家,却三天两头往娘家跑,往外跑忙自己赚钱,赚了钱也不供给家 用,而是留着自己零花;也不肯干家务,在家务上开始要求男女平等,甚至干脆把家里的家务都推给男方,声称自己是女性应该多受照顾,那些要求女性包办家务的 行为是老封建。离婚的时候,继续所谓女权思想,要求男方把房子车子孩子票子都给自己,声称这是现代社会出于所谓的“两性公平“地考虑。
这可真是怪了!她们到底奉行封建男权思想,还是奉行女权主义?
类型:随感,创建时间:Jan. 1, 2012, 5:50 p.m. 点击查看完整内容。。。通常最小化的窗口会在任务栏上显示一个按钮。当用户按一下这个按钮,窗口就还原了。这是一个被大多数桌面环境,比如Windows,KDE,GNOME所采用的普遍设计。不过,因为任务栏通常只是桌面边上一小行,容纳不了很多按钮,用户通常希望把那些不常用的程序隐藏起来,只在通知栏显示一个小图标,要使用的时候再点击那个小图标恢复窗口。这种作法最典型的例子是QQ和Winamp。
最基本的思路是拦截窗口的最小化事件:
void MyWindow::changeEvent(QEvent* event)
{
if(event->type()==QEvent::WindowStateChange)
{
if(windowState() & Qt::WindowMinimized)
{
QTimer::singleShot(0, this, SLOT(hide())); //修改这一行
mSystemTrayIcon->show();
}
QMainWindow::changeEvent(event);
}
类型:C++ & Qt4,创建时间:Jan. 1, 2012, 5:49 p.m.
点击查看完整内容。。。
简而言之,在所有的py文件头加上:
# -*- coding:utf-8 -*-
from __future__ import print_function
from __future__ import unicode_literals
from __future__ import division
from __future__ import absolute_import
try:
str=unicode
except NameError:
pass
然后按照py3k的方式写程序。对于某些被重命令的库要处理一下。比如
try:
import xmlrpclib as xrc
except ImportError:
import xmlrpc.client as xrc
open()
别用了,改用io.open()
其它的细微差别,多读一下py3k的"what's new"基本上搞定
类型:Python,创建时间:Jan. 1, 2012, 5:32 p.m. 点击查看完整内容。。。在日常生活中,Python代码一般是不编译的,几个py文件复制来就能用。再加上脚本语言的名头,有些不太了解Python的朋友就以为Python没有编译这个过程。其实,虽然Python是脚本语言,但它与Java和C#一样,只能执行字节码。只是Python将编译过程隐藏起来,不大明显而已。今天这篇笔记详细记述一下Python的编译过程以及一些技巧:
def judgePasswordStrength(password):
strengthLength = max(0, len(password) - 5)
from string import ascii_lowercase, ascii_uppercase, digits, punctuation
flags = [bool(set(password) & set(s)) \
for s in [ascii_lowercase, ascii_uppercase, digits, punctuation]]
return min(flags.count(True), strengthLength)
类型:Python,创建时间:Jan. 1, 2012, 4:55 p.m.
点击查看完整内容。。。
翻译自http://effbot.org/pyfaq/why-are-python-strings-immutable.htm
不可变对象是指一旦生成后不能被改变的对象。他经常与可变对象相提并论。比如Python的tuple
和list
,它们的行为有点类似。但是可以list
对象内添加新的元素。而tuple
则不可以。Python的字符串被设计成不可变对象有几个优点。
首先,可以提高性能。假定字符串是不可变对象,意味着字符串具有确定而不可变的存储需求,解释器可以为它分配一段固定的内存。这也是为什么要分为tuple
与list
两种类型的原因之一。让字符串成为不可变对象还可以让解释器重用该对象。比如,CPython在实现中预先申请了所有的单字节节符,并且,如果字符串运算后的结果与运算前相同,就会返回运算前的字符串(*)。
另外,在Python里,字符串就像数字一样,被认为是表示思想的最基本的材料。在Python里,没有任何方法可以把数字8变成其它东西,同样,也没有办法把"eight"这个字符串变成其它东西。
另外,使用不可变数据结构(immutable data structures),比如字符串,元组,强调了一种无副作用的编程方式。采用这种编程方式所编写的函数接收输入的参数,进行运算,然后返回一个容纳结果的新对象。而不是修改输入的参数,使它变成运算结果。当然了,有时候必须做一些有副作用的操作,比如修改对象的状态。这种事最好仔细考虑一番,因为无副作用的编程哲学能够让你的代码更加模块化,使其独立于其它代码。
类型:Python,创建时间:Jan. 1, 2012, 4:50 p.m. 点击查看完整内容。。。Qt内关于窗口的删除是一个复杂的事情。接下来详细地讲一讲。
当我们创建一个窗口时,如果这个窗口是一个顶级窗口,准确地说是w.windowFlags().testFlag(Qt.Window) is True
的窗口,Qt会自动附加一个Qt.WA_QuitOnClose
属性。它的意思是,窗口被关闭了,qApp.lastWindowClose
信号会被触发。
默认情况下,qApp
接收到此信号后会退出程序,这个行为相当于在初始化程序时:
qApp.lastWindowClosed.connect(qApp.quit)
要修改这个默认行为,可以设置QApplication
的quitOnLastWindowClosed
属性,比如:
qApp.setQuitOnLastWindowClosed(False)
通常,用户可以点击窗口的关闭按钮关闭窗口,或者当系统关闭的时候,窗口也会被关闭。我们可以通过重载窗口的closeEvent()函数控制关闭动作,比如询问用户要不要保存文档,或者只是最小化窗口。下面是一个例子:
def closeEvent(self, event):
if self.maybeSave():
self.saveSettings():
event.accept()
else:
event.ignore()
我们也可以在菜单里设置一个退出命令,点击它的时候调用窗口的close()
函数即是关闭窗口。
关闭窗口之后,通过我们还要手动销毁这个窗口,释放它所占用的内存。对此Qt提供了一个简便的办法,只要将窗口的Qt.WA_DeleteOnClose
属性设置为true
,Qt会自动帮我们销毁这个窗口。
有一个男人,他19岁娶了18岁的女友、
24岁時和只有18岁的秘书交往并結婚
28岁见到1岁的女嬰,开始光源氏计划、
在31岁到日本旅行认识一名15岁的女仆,
隔年认识10岁的萝莉,
在日本旅行期间就周旋于女仆和萝莉之间,
38岁和萝莉結婚、39岁回到中國,
49岁光源氏计划成功,把22岁的小妹妹带回家,
后來活到59岁死亡。
请问这人生的贏家是哪个历史人物?
类型:随感,创建时间:Jan. 1, 2012, 4:37 p.m. 点击查看完整内容。。。一个人走过海旁,看见另一个人想跳海自杀。
他走上前去劝说「先生,不要跳下去!」
那人问道:「为甚么?」
他说:「生命是美好的嘛!你是无神论者还是有宗教信仰?」
那人答:「我有宗教信仰。」
「佛教、道教、回教还是基督教?」
「基督教」
「罗马天主教还是新教?」
「新教」
「我也是新教呢!圣公会还是浸信会?」
「浸信会」
「太好啦!我也是浸信会,你是Baptist Church of God还是Baptist Church of the
Lord? 」
「Baptist Church of God. 」
「真是太奇妙啦!我也是,那你是原教旨的Baptist Church of God还是改革派的?」
「改革派的」
「1879年的改革派还是1915年的?」
「1915年的改革派。」
那人朝他屁股一脚把他踢进海里:「异端!去死吧!」
类型:LinuxApp,随感,创建时间:Jan. 1, 2012, 4:36 p.m. 点击查看完整内容。。。本文是一个M2Crypto的基础教程。介绍了如何使用M2Crypto完成以下任务:
研究M2Crypto时参考了OpenSSL的源代码,因此本文对学习OpenSSL的同学或许也有些参考意义。
类型:Python,创建时间:Jan. 1, 2012, 4:35 p.m. 点击查看完整内容。。。本文讨论python各种奇形怪状的编码:
有时候QtDesigner生成的窗口如果包含QToolBox
,使用pyuic4
编译的时候会出错。经过调查,我发现主要是因为QtDesigner在创建QToolBox
的页时会自动生成页面的名字。可能是因为翻译的问题,页面的名字是中文的(page
变成页
)。页面的名字会编译成python的变量名。在python3k之前,使用中文作为python的变量名显然是不合适的。所以会提示错误。
如果发现pyuic4发生错误,可以试着加入调试选项:pyuic4 -d main.ui
。 可以解决很多像QToolBox
那样的错误。
我是EditPlus和FileZilla的用户。这两个软件都支持文件拖拽。我们可以从资源管理器中拖动一个文件到EditPlus的窗口,EditPlus就会自动打开这个文件。或者拖到FileZilla的远程窗口内,FileZilla就会自动将文件上传到服务器。我经常希望自己的软件也支持拖动的操作。
作为基本功能,大多数操作系统都各自定义了拖放所需的通信协议。Qt对此做了一个很好的封装。基本的流程是:当用户从其它应用程序拖动文件、文本、图像等到Qt程序时,Qt会自动产生一个DrapEnterEvent
,应用程序可以判断数据是不是可以处理的。如果能处理,就反馈给Qt,这样的话,用户就会看到一个接受拖放的标识。待用户放开鼠标时,Qt再产生一个DropEvent
。最后应用程序从事件中取出数据进行处理。
那么应用程序如何判断程序是否可以处理拖放的数据呢?很简单,数据中包含了MIME类型。MIME类型是一个用于标识二进制数据类型的Internet标准。很多朋友可能习惯通过文件的扩展名来判断数据类型,但是扩展名只有短短的几个字符,常常有歧义。通常,如果应用程序要处理文本,就判断MIME类型是不是"text/palin"
,如果要处理JPEG图像,就判断MIME类型是不是"image/jpeg"
,等等。同一段数据通常包含多种MIME类型,比如拖动富文本时,数据中可能包含纯文本、HTML文本、图像。应用程序可以选择处理所支持的数据格式。
具体如何处理从资源管理器拖动的文件呢 ?请点击查看正文。
类型:Python,C++ & Qt4,创建时间:Jan. 1, 2012, 8:52 p.m. 点击查看完整内容。。。