麦田守望者's profile异想空间PhotosBlogListsMore ![]() | Help |
|
|
10/26/2009 与rc有关的几个重要文件OpenBSD uses an rc(8) style startup. This uses a few key files for startup.
10/22/2009 在命令行中调节音量在命令行调节音量使用mixerctl,方法如下: $ mixerctl outputs.master=200,200 其中,两个数值200,分别代表的是左右声道的音量,中间用一个逗号分隔。其取值范围是0到255。不加任何参数执行mixerctl,能够看到系统当前的音频配置参数。 8.25 - Why is my clock off by several hours?By default, OpenBSD assumes your hardware clock set to UTC (Universal Coordinated Time) rather than local time, assumed by some other operating systems, which can cause problems when multi-booting. Many other operating systems, can be configured to do the same, which avoids this problem altogether. If having the hardware clock set to UTC is a problem, you can change the default behavior of OpenBSD using config(8). For example, to configure OpenBSD to use a hardware clock set to US/Eastern (5 hours behind UTC, so 300 minutes): # config -ef /bsd See options(4) and search for option "TIMEZONE=value" for more information. 以上是从OpenBSD FAQ中摘录的。config命令用于更改时区。对于北京时间,使用如下命令行修改时区: ukc> timezone -480 timezone的参数是以分钟为单位。因此,八小时为480分钟。quit之后,重启心爱的OpenBSD,date一下。看,时间变过来了。 10/21/2009 OpenBSD的rc脚本是如何工作的(摘录)The main files a system administrator should concentrate on are /etc/rc.conf (for guidance), /etc/rc.conf.local (for changes), /etc/rc.local and /etc/rc.shutdown. To get a look of how the rc(8) procedure works, here is the flow: After the kernel is booted, /etc/rc is started:
9/10/2009 对getcwd函数的一例应用的不解在OpenBSD源代码树的pwd.c中,有这样一个代码片段: int main(int argc, char *argv[]) 该段代码的目的是获得当前工作目录,并打印出来。请注意getcwd的调用方式。根据OpenBSD Maunal对getcwd函数的描述:如果给第一个参数传递NULL的话,getcwd会在某个地方分配内存空间,存放当前目录的字符串,并返回指向这个字符串的指针。调用方应该在稍后调用free,释放字符串占用的内存空间。然而,在上述从OpenBSD源代码中摘抄的代码片段,并没有调用free。 8/29/2009 听歌也很简单听MP3你用什么软件?我用VLC。不过,我还用更高效、易用的mpg321。mpg321是一个命令行程序,没有任何用户界面。这就使得mpg321非常的高效,占用非常之少的系统资源。安装mpg321同样很容易。如果使用Debian或者Ubuntu,那么sudo apt-get install mpg321;如果使用BSD Unix,那么可以使用他们各自的软件包管理系统安装;或者干脆从源代码编译。看你的喜好了。 播放MP3: mpg321 file1.mp3 播放多个MP3: mpg321 file1.mp3 file2.mp3 singer/famous-song.mp3 打乱顺序播放: mpg321 -z file1.mp3 file2.mp3 singer/famous-song.mp3 man mpg321会显示完整的使用参考。 mpg321可以被用在shell脚本中。发挥一下想象力,是否能够把它用到什么特别有意思的地方呢。 BTW:mpg321不是Windows环境中的产物。想在Windows下使用的话,你可以搜一搜试试看。 8/27/2009 IATTopic.queryCatalogIATTopic接口声明了queryCatalog方法: def queryCatalog(REQUEST=None, **kw): 利用这个方法,我们能够以编程的方式控制提供了IATTopic接口的对象的搜索行为。最典型的是Plone的标准内容类型Collection,在更早期的Plone版本中其称作Smart Folder。Collection这个名字可以看作是面向用户的名字,非常清晰直观的反映了它的功能。在Plone内部,Collection类型实际上是一个ATTopic类,其portal_type是Topic,archetype_name是Collection。言归正传,看一看能用这个接口方法做什么。 在ATTopic类实现中,丰富了queryCatalog方法的参数: def queryCatalog(self, REQUEST=None, batch=False, b_size=None, 利用这些参数,能完成如下任务: 1、在已经设置了搜索条件的基础上,附加其它额外的条件。将任何额外的搜索条件,按照ZCatalog的规范组合成一个字典对象,传递给kw参数。关于ZCatalog的参考,《The Zope2 Book》的Searching and Catagorizing Content章节有详细的介绍。 2、按批次返回特定数量的对象集合,即分页。batch参数指明是否按批次返回搜索结果,b_size说明返回的结果集的大小。除了这两个参数,还需要在context.REQUEST对象中设定b_start。b_start指明,在完整的搜索结果结合中,从第几个对象开始返回b_size数量的对象集合。和数组的下标一样,b_start的值从0计起。 在这种情况下,queryCatalog方法返回的是一个 ZTUtils.Batch.Batch对象。Batch对象实现了__getitem__和__len__方法。同时,还提供了previous和 next属性,用于前后双向跌代下一个Batch对象。如果到头了,则previous和next会相应的被置为None。 3、返回的对象集合中,包含每一个完整的对象。full_objects参数指明,调用每一个Brain对象的getObject方法,从ZODB中获取完整的对象。此种做法可能会影响Plone的运行性能。 举个例子: 在当前上下文中存在一个Collection对象,其ID为search。想要搜索EffectiveDate在2009年1月1日以来的Page对象,并且按照EffectiveDate排序,显示头10个对象。 from DateTime import DateTime qc = {}context.search.queryCatalog(**qc)[0:10] 如果想要分页显示所有Page对象,每一页显示20个,显示第2页: qc = {}# 这一行很重要。如果缺少这一行,则会始终从搜索到的第一个对象开始返回结果 context.search.queryCatalog(batch=True, b_size=20, **qc) 7/31/2009 解决psycopg2导入错误psycopg2版本:2.0.11 Zope版本:2.10.7-final 在上述环境中创建一个ZPsycopgDA数据连接对象的时候,会出现ImportError异常,提示psycopg version mismatch (imported 2.0.11 (dt dec ext pq3))。 解决办法:在ZPsycopgDA目录中,修改DA.py文件的119行: - if psycopg2.__version__[:5] not in ALLOWED_PSYCOPG_VERSIONS: 导致这个错误的原因是,2.0.11版本的psycopg2的__version__属性会返回“2.0.11 (dt dec ext pq3)”,只有按照空格打断字符串并取得第一元素,才能正确获得版本号。 7/30/2009 解锁Plone对象如果某个对象被上了锁,导致没法对其进行操作,可以用wl_clearLocks方法为其解锁: obj = getattr(context, 'obj_id') 至于对象为何以及在什么条件下会被上锁,我尚不清楚。如果您清楚,感谢指点一二。 |
||||
|
|