[转载]采访 Systemd 和 PulseAudio 创始人 Lennart

LinuxFR.org 近日对 Systemd 和 PulseAudio 的创始人 Lennart 进行了采访,其中有一些颇有意思的内容值得分享。

下文是采访内容的简要翻译

首先是 Avahi,然后 PulseAudio,现在是 Systemd,你是如何在如此多个几乎不相关的领域做出这么大的贡献的?

实现 Avahi 的想法上是在研究 PulseAudio 的过程中出现的。在学习 mDNS/DNS-SD 网络协议过程中,我注意到现有的 Howl 实现有一些缺点和协议上的问题,于是打算重新由零开始实现它,Avahi 就是这样诞生的。

目前 Avahi 是 Linux 安装中唯一默认使用 chroot() 的守护进程(现在有另外一个 RealtimeKit 了,不过那个也是我编写的)。

在此之后我一直应该有初始化系统去解决这些问题,于是最终 Kay 和我提出并实现了 systemd 。

早期 PulseAudio 收到了很多批评。你认为这是由于 PulseAudio 还不够成熟,还是认为这些批评是不理智的?

PulseAudio 当然不是没有问题的,但当时发行版开始使用它的时候,很多问题是由于音频驱动而不是 PulseAudio 造成的。PulseAudio 基于时序的调度需要从音频驱动获得正确时序信息,而那时候的不少音频驱动并没有正确提供这些信息。而驱动没法提供正确信息的根本原因在于硬件的问题,导致 在驱动层面难以找出合适的解决方法。

另外,请不要忘记在 Linux 音频通用堆栈方面只有 3.5 位全职开发人员。在如此少的人力投入下,目前成果相当不容易。当然距离 CoreAudio 还有差距,但已经相当接近了。所以在此希望那些不断抱怨的人可以更宽容些。

目前大多数硬件厂商已经意识到这个问题了,从某种程度上讲 PulseAudio 已经成为厂商驱动检查标准中的一部分了。当然,在较新的 USB 或者 HD 音频上设备依然可能出现问题。

另一方面,当时的选择也是迫不得已。在如此紧张的人力条件下,只能借助发布后的反馈来找出并修复错误。别忘记当年 CoreAudio 推出的时候,也是经历了类似的过程,而它现今已经成为音频堆栈的测试标准(现在也不是毫无问题,我上次尝试一个 USB 声卡时就出现了内核问题)。实现基于时序调度的音频堆栈是件相当复杂的工作,需要一段时间来达到稳定。

现在 Linux 平台上的音频堆栈和 Win 以及 OS X 平台上的相比如何呢?

Win 和 OS X 平台上音频堆栈的整合工作都比 Linux 平台的要好,但我们拥有一些独特的功能它们难以匹敌,比如网络传输、低延迟模式和无浮点音频管道(float-less audio pipelines)。

总体上 CoreAudio 是要比我们强,但是现在差距缩小。Win 平台上的无法像 CoreAudio 一样成为测试标准,但是它的整合性带来了比我们更好的开发体验。

相比 OSSv4 来说 ALSA/PulseAudio 有什么优势?你认为为什么 BSD 依然坚守 OSS 而不是去实现 ALSA/PulseAudio ?

OSS 是90年代风格的简化设计,它跟现代的桌面使用并没有太大关系。BSD 关注点在服务器,所以对于声音并不在意。另外一个也是更重要的原因是,BSD 和 Solaris 也没有别的选择。

OSS 的模式过于简化而无法实现基于时序的调度策略(这对于当前要求以节能的方式处理多种不同延迟设备十分重要),而在内核实现混音和采样率转换也是存有争议的。混音器的接口也过于简单,不能适应现代硬件的需求。

音频设备已经和过去不同了,现在有蓝牙、UPnP 设备、USB 声卡等。OSS 的模式适用于经典的声霸卡年代,现在并不适用了。

OpenBSD 使用了称为 aucat 的音频服务器,你认为它怎么样?

如果一个音频堆栈没有实现基于时序的调度,那么和消费级别音频设备就没有大多关系。据我所知,PulseAudio 是唯一实现源自 CoreAudio 的基于时序调度设计的开源音频堆栈。同时,PulseAudio 的零拷贝设计(在内存中交换音频数据的引用对象,而不是在应用程序和音频堆栈间交换音频数据本身)也是难以匹敌的。

具有讽刺意味的是,实现针对专业设备的音频堆栈要比消费音频设备及移动设备的音频堆栈简单的多。在专业设备上,低延迟是唯一需要考虑的因素,而节能并不重要。于是说基于时序的调度和零拷贝也就没有必要了。这也是将 Jack 和 PulseAudio 进行比较时需要注意的方面

除了 Ubuntu,似乎 systemd 将成为未来主要 Linux 发行版的初始化系统,你是否预料到了如此快的接受速度?

我们从一开始就知道我们创造了一个很好的东西,但是将其这么快就推广开来比预先料想的要容易。另外我认为最终 Ubuntu 也会接受 systemd 的,因为现在它已经无法和 systemd 相比了。另外 Scott 也不再是 Upstart 项目的领导人,项目前景难料。当然,这只是我的一面之词,毕竟我不在 Canonical 工作。

你介绍 systemd 的博文相当出色,不知道你是否觉得出色的社区沟通技巧也是你工作的一部分呢?

是的,我被要求将自己的工作通过博客的形式表现出来。

systemd 相比 upstart 有什么技术优势?你认为 Ubuntu 会逐渐接受 systemd 么?

具体优势可以在这篇博文中找到(译注:可以参见本站先前报道)。

我觉得会 Canonical 会接受的,理由如上。

可以解释这句话么:systemd 是首个能正确的杀死一个服务的 Linux 初始化系统。

一个像 Apache 那样的服务可能会有很多个子进程,比如 CGI 脚本。这些子进程可能是由第三方创建的所以对其只有极为有限的控制。所以他们极为可能从 Apache 主服务中剥离出来,而这在现实中很常见。

而这在 systemd 中将不再可能,子进程将无法逃出监控。这将是我们第一次可以完全的结束一个服务及其它的全部子进程,于是我们可以确保没有遗留的 CGI 脚本。详情可以参看这篇博文

我听说你计划使用 systemd 补充或取代桌面进程管理器,在这个领域 systemd 有什么优势么?

登录后的用户服务启动过程和整个系统的启动有着很多相似的地方,systemd 引入的那些提升系统服务启动速度的特性对于用户服务同样适用。实际上 OS X 上的 launchd 在启动系统服务之外也被用来启动用户服务。

为了达到这个目的,我们计划将用户服务进程也像系统进程那样并入不同 cgroups 分区,同时要保证多用户情况下的支持。

在 FOSDEM 采访中你这样说道:“我推荐黑客们只考虑 Linux 系统并享受它所带来的自由和机遇”。你知道 BSD 开发者们看到这番话时有多愤怒么?

我当然知道,他们看到我这番话感到愤怒,再正常不过了。

systemd 使用了大量 Linux 特用的 API,你是否认为 Linux API 已经取代了 POSIX API 的地位并且其他操作系统已经不再重要了?

是的,我的确认为 BSD 已经不再重要了。而在社区软件开发中为了 POSIX 兼容性的让步对发展的阻碍远远大于其带来的益处。

当然我也肯定像 BSD 这类系统不是对所有人都不再重要了,毕竟还有人在维护他们。但是对于希望将 Linux 带入主流的人们来说,不应该由于跟它们的兼容性而束缚了自身的脚步。 我们的目标是将 Free Software 带给每个人,在这一点上,BSD 的确不再重要了。

这只是我的个人想法。肯定每个做 Free Software 的人都有自己的想法,我有我的,其他人也有他们自己的。

可能 Debian 将不会使用 systemd 因为它需要考虑和 Debian GNU/kFreeBSD 的兼容性,你怎么看?

如果是那样的话,那么无疑是它们的损失。不要忘记 Debian kFreeBSD 是个试验性质的玩具系统。创建玩具系统没什么问题,毕竟所有人都喜欢玩具。但是如果 Debian 为了符合几个玩具操作系统开发者的想法而限制了其自身的发展,那么就是 Debian 自身的问题了。

如果我是 Debian 项目领导者的话,我会努力让 Debian 变得更具专业性,而忘掉 Debian kFreeBSD 玩具系统,不过我并不是 Debian 开发者。

另一方面,我没有觉得在 Debian kFreeBSD 中使用一个 BSD 的初始化系统而在 Debian Linux 版本中使用 systmed 有何不可。软件包只需要同时携带一份 systemd 的单元文件和 SysV 标准的脚本即可,systemd 可以很好的处理这种情况。所以我认为由于 Debian kFreeBSD 的原因而拒绝 systemd 的说法可能并不是真的。

通过阅读你在 LWN 及其他地方的文章,我发现你并不害怕激烈的争执和口水战。你喜欢这个过程,还是觉得很无聊?

我并不害怕。应对恶毒的评论是在开源软件社区推行巨大变革中必经之路。实际上,我怀疑我在这方面做的是否足够好。很多时候,我应该在讨论演变成口水战之前更早的回复,比如说句“无论怎样,我们要不同意 A 同意 B”, 从而阻止口水战的恶化。

为什么桌面 Linux 没有被主流用户所接纳?Linus 大神认为这是一个文化问题而不是技术问题,你同意他的观点么?

我认为我们原先在用户界面方面还不够创新,同时也没有传达出一个明确的信息和清晰的平台。如果你认同 OS X 是用户界面领域的参照标准的话,我们只是在复制它,但没有比上它。现在情况正在改观,GNOME 3 是首个严格遵循 UI 设计原则执行桌面环境,对于 Linux 桌面界面来讲是一个巨大的进步。

现在界面方面得到改观了,剩下就是明确的信息和清晰的平台了。Linux 平台还是过于零碎,一个希望为 Linux 平台制作软件的作者需要在一堆 API 中做出选择,它们很多看起来貌似很相近但其实是极度混乱,选择一个 API 可能意味着在一些系统上能工作而在另外一些不能。所以我认为我们应该从上到下简化整个平台,传递出一个明确的信息告诉人们桌面 Linux 操作系统是什么。 当然,我认为我在用户底层做的这些改善是在朝简化平台这个方向努力的。

最后,你对自己在 Linux 桌面领域做出的改变感到自豪么?你最开始的动机是什么呢?

当然咯~

动机嘛,最开始只有由于我喜欢折腾,很自然的发现闭源软件是没法折腾的。我希望在缔造一个可以和现有闭源产品的开源操作系统方面做出自己的小小贡献。

译文完,原文地址

==================================================================================

转载自LinuxToy,原文地址:http://linuxtoy.org/archives/interview-creater-of-systemd-and-pulseaudio-lennart.html

guitar doodle

Google为纪念电吉他之父莱斯·保罗(Les Paul,1915年6月9日-2009年8月13日)诞辰96周年的doodle神作,此为最新可录音版

点击doodle即可用键盘演奏,附上神曲曲谱几首

qr rrrqwer r yrtyi i yyryiytt o i t y iy iytyr y qwrryyiittw t qr ry yi rtiio i yriiiy r q r yriiiy r q r q r q r r

iiet iiet eetii yyroo tytrewe tytreweq tyietpoitye tyietpoityi tetytii tetytoo tyii tyoo typp typoi

yyewe wwewqw tttettte yeewe yyewe wwewqw tttettte uttey eyiieyi uyuytwe wwwqwet euutwe eyiieyi popoio ppoiooiu tetyy

qwety yytert qweqr ttttret erteiiiouyu tuiyty yytretw ttpopiuyutytyq yytert uuyter tttrrt eeiuiyuyutytyq qwety yttiui

[转]这就是传说中让理科生沉默,让文科生落泪的文史综合题

一,选择题(皆为单选):
1,以下谁是二进制思想的最早提出者?
a,伏羲;b,姬昌;c,莱布尼茨;d,柏拉图。
2,以下哪个概念和公孙龙的《指物论》中的“指”字含义相近?
a,变量;b,数组;c,对象;d,指针。
3,蔺相如,司马相如;魏无忌,长孙无忌。下列哪一组对应关系与此类似?
a,PHP,Python;b,JSP,servlet;c,java,javascript;d,C,C++。
4,秦始皇吞并六国采用了以下哪种算法思想?
a,递归;b,分治;c,迭代;d,模拟。
5,雅典王子忒修斯勇闯克里特岛斩杀米诺牛的时候采用了以下哪种算法?
a,动态规划;b,穷举;c,记忆化搜索;d,Dijkstra算法。
6,印度电影《宝莱坞机器人之恋》中的机器人七弟采用的智能算法最有可能是以下哪一种?
a,神经网络;b,遗传算法;c,模拟退火;d,穷举算法。
7,《公孙龙子》记载:“齐王之谓尹文曰:‘寡人甚好士,以齐国无士,何也?’尹文曰:‘愿闻大王之所谓士者。’齐王无以应。”这说明了齐王:
a,昏庸无道;b,是个结巴;c,不会下定义;d,不会定义自己的需求。
8,惠施曾提出过“卵有毛”的命题,以下哪一项是导致这个错误命题的原因:
a,混淆了命名空间;b,引入了错误的包;c,衍生类未重载;d,调用了危险的指针。
9,下面哪种面向对象的方法可以让你变得富有?
a,继承;b,封装;c,多态;d,抽象。
10,明朝时期张居正改革的一条鞭法的主要思想是:
a,面向过程;b,万物皆数;c,统一接口;d,泛型编程。
二,匹配题(分析A中的句子所体现的算法,和B中的算法一一匹配):
A:
1,江南可采莲,莲叶何田田,鱼戏莲叶间。鱼戏莲叶东,鱼戏莲叶西,鱼戏莲叶南,鱼戏莲叶北。——汉乐府《江南》
2,众里寻他千百度,蓦然回首,那人却在灯火阑珊处。——辛弃疾《青玉案》
3,从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是:从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是:从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是……
4,只劝楼台追后主,不愁弓矢下残唐。——孔尚任《桃花扇》
5,飞鸟之影,未尝动也。——《庄子》
B:
1,贪心;
2,回溯;
3,穷举;
4,分治;
5,递归;
三,阅读理解(阅读下文,回答后面的问题):
美国的贝尔实验室设计了最初的C语言
刻在UNIX操作系统距今已有三四十年
你在屏幕前凝视数据的缱绻
我却在旁轻轻敲打键盘把你的梦想展现
循环 递归 贪心 动规 是谁的从前
喜欢在匈牙利算法中你我牵手的画面
经过MSRA门前我以大牛之名许愿
思念像斐波那契数列般漫延
当软工沦落在设计的文档间
算法依旧是永垂不朽的诗篇
我给你的爱写在程序间
深藏在最长不下降子序列里面
几万组数据流过后发现
我的心依然不变
我给你的爱写在程序间
深藏在最长不下降子序列里面
用无尽的代码刻下了永远
那已保存千年的誓言
一切又重演我算了很多遍
时间复杂度还是趋于无限
我只想要这样永远链接在你的身边
1,题目中的MSRA是什么的缩写?
2,试赏析“思念像斐波那契数列般漫延”一句。
3,请结合时代背景,谈谈你对“当软工沦落在设计的文档间,算法依旧是永垂不朽的诗篇”一句的理解。
4,“几万组数据流过后发现,我的心依然不变”一句体现了算法的什么特性?

一年以后

终于又逛回这个博客,看看最后一个时间戳,已经一年了。我真不是一个能说很多话的人,偶尔心潮澎湃,兴奋得睡不着觉时,能自言自语一整晚,可是起了床,拿出纸笔或者打开电脑,又写不下几个字了。

 

注册这个博客倒不是想着像垃圾邮箱那样,用一次扔掉,不过这几篇文章确实只是当时心血来潮堆的。之后重拾Twitter,发现140个字相对来说简单些,就先玩那个去了。再后来,慢慢就淡了,就忘了。

 

is-programmer.com 多么geek的一个站点,而我现在的人生正慢慢走向生活,远离自己的理想,我不知道将来还能不能做自己喜欢的,不知道什么时候会被生活的柴米油盐玩死。

 

算了,新年刚开始,要积极一点,嘿嘿。睡觉!

键盘扫描码(基本)

 

---------------+---------------+---------------+---------------+
HEX DEC keys   |HEX DEC keys   |HEX DEC keys   |HEX DEC keys   |
---------------+---------------+---------------+---------------+
            |10  16  Q      |20  32  D      |30  48  B      |
01   1  ESC    |11  17  W      |21  33  F      |31  49  N      |
02   2  1      |12  18  E      |22  34  G      |32  50  M      |
03   3  2      |13  19  R      |23  35  H      |33  51  ,      |
04   4  3      |14  20  T      |24  36  J      |34  52  .      |
05   5  4      |15  21  Y      |25  37  K      |35  53  /      |
06   6  5      |16  22  U      |26  38  L      |36  54  R Shift|
07   7  6      |17  23  I      |27  39  ;      |37  55  PrtSc  |
08   8  7      |18  24  O      |28  40  '      |38  56  Alt    |
09   9  8      |19  25  P      |29  41  `      |39  57  Space  |
0A  10  9      |1A  26  [      |2A  42  L Shift|3A  58  Caps   |
0B  11  0      |1B  27  ]      |2B  43  \      |3B  59  F1     |
0C  12  -      |1C  28         |2C  44  Z      |3C  60  F2     |
0D  13  =      |1D  29  CTRL   |2D  45  X      |3D  61  F3     |
0E  14  bs     |1E  30  A      |2E  46  C      |3E  62  F4     |
0F  15  Tab    |1F  31  S      |2F  47  V      |3F  63  F5     |
---------------+---------------+---------------+---------------+
40  64  F6     |50  80  Down   |               |               |
41  65  F7     |51  81  PgDn   |               |               |
42  66  F8     |52  82  Ins    |               |               |
43  67  F9     |53  83  Del    |               |               |
44  68  F10    |               |               |               |
45  69  Num    |               |               |               |
46  70  Scroll |               |               |               |
47  71  Home   |               |               |               |
48  72  Up     |               |               |               |
49  73  PgUp   |               |               |               |
4A  74  -      |               |               |               |
4B  75  Left   |               |               |               |
4C  76  Center |               |               |               |
4D  77  Right  |               |               |               |
4E  78  +      |               |               |               |
4F  79  End    |               |               |               |
---------------+---------------+---------------+---------------+

 

左 Crtl 扫描码是 1D ,表示 1D 00    Ctrl 键扫描码是 E0 1D,表示 1D E0

左 ALT 扫描码是  38 ,表示 38 00    右 ALT 键扫描码是  E0 38,表示 38 E0

左 Shift 扫描码是2A ,表示 2A 00    右 Shift 键扫描码是   36,表示 36 00

 

 

学习vim,标记一下

 模式行(modeline)

没人愿意每次都手工输入一大堆的 Tab 和缩进设定。可是,放在 .vimrc 文件中似乎也不是个好主意:如果我编辑的代码不止一种风格呢?——考虑一下,如果你参加开源软件项目,你能保证你参加的所有项目,还有你公司里的软件项 目,代码风格都一样吗?——Vim 是我用过的第一个支持在文件中记录代码风格设定的编辑器。这个特性在 Vim 中叫做模式行,实际上,它所做的是在打开文件时根据文件中的 Vim 指令设定相关的 Vim 选项。下面就是一个嵌在 C 源代码中的模式行:

 

/* vim: set tabstop=4 shiftwidth=4 expandtab: */

 

模式行有好几种形式。本文只介绍上面的这种形式(其它形式类似,请自行参考“:help modeline”):行首的“/*”和尾部的“*/”告诉 C 编译器这是一行注释,不是代码的一部分;而 Vim 可通过后面的“vim:”识别出模式行的开始(必须出现在行首或前面有一个空白字符);后面则是“set”和空格间隔开的一串 Vim 选项;“:”表示模式行结束。

这种方式非常简单,功能也非常强大。另外请注意,出于安全的考虑,模式行中的选项只影响当前文件(“:help modeline-local”),也不能做任何设置选项以外的工作。

 

 

搜索、替换和正则表达式

大家应该都已经知道 Vim 里使用“/模式”(或“?模式”)进行搜索,使用“:s/模式/字符串/标志”进行替换,其中的“模式”是一个正则表达式。关于正则表达式,不熟悉的话可 以边用边学,本节也不打算对 Vim 的正则表达式作完整的阐述(那可能可以专门写一本小册子了),而只抛砖引玉式地给出一些有用的例子加以说明,以及一些实用技巧。

先说一点点搜索。搜索里最最有用的一个快捷方式是“*”(向下完整匹配光标下的单词)。把光标移动到你要搜索的词(变量名、函数名等)上,比如 “test”,然后按“*”,Vim 将自动产生一个对“\<test\>”(参见“:help /\<”和“:help /\>”)的搜索,也就是说,搜索完整的单词“test”。不要小看这个技巧,它经常可以大幅度地提高搜索的速度。事实上,这是 Vim 网站上公布的第 1 号技巧,也是被评价最高的技巧。相似的技巧还有“#”(向上完整匹配光标下的单词)、“g*”(向下部分匹配光标下的单词)等,请自行查看(“:help #”等)。

Vim 在搜索和替换时会对匹配成功的文本进行加亮,在已经完成搜索和替换任务后,这种加亮有时反而会妨碍显示。Vim 专门提供一个命令取消这种加亮(直到用户再一次使用搜索或替换命令):“:nohlsearch”。建议用户创建一个键盘映射(key mapping)加入到 .vimrc 中,如:


nmap <F2> :nohlsearch<CR>

以上命令表示,在正常模式下按 F2 键相当于输入“:nohlsearch”后面跟一个回车,即取消搜索加亮显示。

再看几个搜索替换的实用例子。

  • 去掉所有的行尾空格:“:%s/\s\+$//”。“%”表示在整个文件范围内进行替换,“\s”表示空白字符(空格和制表 符),“\+”对前面的字符匹配一次或多次(越多越好),“$”匹配行尾(使用“\$”表示单纯的“$”字符);被替换的内容为空;由于一行最多只需替换 一次,不需要特殊标志。这个还是比较简单的。
  • 去掉所有的空白行:“:%s/\(\s*\n\)\+/\r/”。这回多了“ \(”、“\)”、“\n”、“\r”和“*”。“*”代表对前面的字符(此处为“\s”)匹配零次或多次(越多越好;使用“\*”表示单纯的“*”字 符),“\n”代表换行符,“\r”代表回车符,“\(”和“\)”对表达式进行分组,使其被视作一个不可分割的整体。因此,这个表达式的完整意义是,把 连续的换行符(包含换行符前面可能有的连续空白字符)替换成为一个单个的换行符。唯一很特殊的地方是,在模式中使用的是“\n”,而被替换的内容中却不能 使用“\n”,而只能使用“\r”。原因是历史造成的,详情如果有兴趣的话可以查看“:help NL-used-for-Nul”。
  • 去 掉所有的“//”注释:“:%s!\s*//.*!!”。首先可以注意到,这儿分隔符改用了“!”,原因是在模式或字符串部分使用了“/”字符,不换用其 他分隔符的话就得在每次使用“/”字符本身时写成“\/”,上面的命令得写成“:%s/\s*\/\/.*//”,可读性较低。命令本身倒是相当简单,用 过正则表达式的人估计都知道“.”匹配表示除换行符之外的任何字符吧。
  • 去掉所有的“/* */”注释:“:%s!\s*/\*\_.\{-}\*/\s*! !g”。这个略有点复杂了,用到了几个不太常用的 Vim 正则表达式特性。“\_.”匹配包含换行在内的所有字符;“\{-}”表示前一个字符可出现零次或多次,但在整个正则表达式可以匹配成功的前提下,匹配的 字符数越少越好;标志“g”表示一行里可以匹配和替换多次。替换的结果是个空格的目的是保证像“int/* space not necessary around comments */main()”这样的表达式在替换之后仍然是合法的。

希望上面的这些简单的例子能够引起你使用 Vim 的正则表达式高效完成任务的兴趣。进一步的信息可参考“:help regexp”。

 

出自:www.ibm.com/developerworks/cn/linux/l-tip-vim1/

 

 

应对mysql root密码遗忘

在my.cnf的[mysqld]字段加入:

 

skip-grant-tables

然后重启你的mysqld。这样,登录就不用密码了.

然后进入mysql执行

 

UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

成功后

 

FLUSH PRIVILEGES;

最后去掉my.cnf中的skip-grant-tables

重启mysqld。

成也宋体,败也宋体

 一直以来,163.com都不喜欢linux玩家

看看他的字体

一直以来,opera都不属于linux玩家

看看他的字体

 

宋体,难道天生属于点阵

 

老大们说了,玩linux,不能坐等施舍

哥几个找来了方正雅宋对付163

哥几个用自定义脚本征服opera

战果会有的

只是场面惨烈

 

我晕乎乎的在晕倒死圈里,找到了一把匕首

出乎意料的

它把163和opera都刺倒

那把匕首--替换宋体

 

只是,为什么...

修改键盘映射,用Windows®键启动KDE主菜单

 KDE 的快捷键只允许非修饰键(Modifier Key)和 组合键,Windows® Key 恰恰是修饰键,直接绑定 Windows® Key 是不可行的。

一个更改键盘映射de技巧,使 Windows® Key 绑定到 KDE 4.3 的 KickOff 菜单上。

 

第一步,找到 “Windows® 键”对应的Key code。

$xev 然后按下 “Windows® 键”,观察输出,如

KeyPress event, serial 34, synthetic NO, window 0×4800001,

root 0×13b, subw 0×0, time 18882804, (-418,114), root:(659,139),

state 0×0, keycode 115 (keysym 0xffca, F13), same_screen YES,

XLookupString gives 0 bytes:

XmbLookupString gives 0 bytes:

XFilterEvent returns: False

得到 115 是“Windows® 键”的Key code。

 

第二步,导出键盘映射方案。

$xmodmap -pke > ~/.Xmodmap 导出。找到 keycode 115 =一行,修改等号后的数据为一个键的映射。注意防止冲突,比如修改成F13(键盘上并不存在的键)。

 

第三步,应用新键盘映射方案。

$xmodmap ~/.Xmodmap 导入修改后的方案。

 

第四步,右击 KickOff 程序起动器,配置其属性。将快捷键改为“Windows® 键”(显示为F13),这样就把“Windows® 键”绑定到KickOff 菜单上了。

 

 

学习自:blog.gmsh.pp.ru/2009/08/tips-make-win-key-useful-in-kde/

linux下用mencoder转换视频

没有windows,于是想酷酷的来一段命令。可是mencoder那长长的man页彻底的打击到我。

上网搜了搜,果然有现成的。研究过后再稍加修改,嘿嘿~!

经试验,在我的E2上用zmplayer完美播放。就是视频好像没怎么压缩....下次再找几个视频试试!!

留个记号先:

mencoder -srate 22050 -stereo 0 -ofps 15 -vf scale=320:-3 -sws 9 \
-oac mp3lame -lameopts mode=2:cbr:br=128 \
-ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=320 <源文件> -o  <输出文件>

参数无非是视频和音频两个方面。

第一行(杂项): -srate 音频输出取样率,不知所云,照抄;-stereo 立体声音频输出;

-ofps 视频每秒帧数,一样不懂;

 -vf 是输出视频滤镜,这里利用它来缩小画面。scale=320:-3 意思是“把320当视频宽,再按源视频比例缩放;-sws 选压缩算法

第二行(音频):大意是“选择mp3lame音频编解码器,并且输出恒定比特率为128kbps的立体声”

第三行(视频):大意是“选择lavc视频编解码器,输出比特率为320kbit的mpeg4格式视频(vhq不知所云)”