Skip to main content

Posts

Showing posts from February, 2008

[转]常用开源协议的详细解析

作者:Charles Huang 来源:javaeye.com 发表时间:2006-04-10 开源在今天的软件业已经很普遍,但开源是否意味着使用者可以对开源后的代码为所欲为呢?答案是否定的。开源运动同样有自己的游戏规则和道德准则。不遵行这些规则不但损害开源运动的健康发展,也会对违规者造成名誉和市场上的损失,更可能陷入法律纠纷和赔偿。 现今存在的开源协议很多,而经过 Open Source Initiative 组织通过批准的开源协议目前有 58 种。我们在常见的开源协议如 BSD, GPL, LGPL,MIT 等都是 OSI 批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。 这里我们来看四种最常用的开源协议及它们的适用范围,供那些准备开源或者使用开源产品的开发人员 / 厂家参考。 BSD 开源协议 BSD 开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为” , 可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。 但“为所欲为”的前提当你发布使用了 BSD 协议的代码,或则以 BSD 协议代码为基础做二次开发自己的产品时,需要满足三个条件: 1 . 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的 BSD 协议。 2 . 如果再发布的只是二进制类库 / 软件,则需要在类库 / 软件的文档和版权声明中包含原来代码中的 BSD 协议。 3 . 不可以用开源代码的作者 / 机构名字和原来产品的名字做市场推广。 BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。 BSD 由于允许使用者修改和重新发布代码,也允许使用或在 BSD 代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。 Apache Licence 2.0 Apache Licence 是著名的非盈利开源组织 Apache 采用的协议。该协议和 BSD 类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为...

再次遭遇reiserfs文件系统错误

为了重现上次文件系统的问题,也为了找到上次出问题的原因,我又一次捣鼓了休眠的功能。 这次是用菜单休眠的,按理说应该没什么问题,但是由于重启是用我自己编译的内核启动的,而且参数似乎没设对,因此没能自动唤醒,而是正常启动。中间似乎有个关于swap的服务,显示fail,不过当时我没注意。另外值得注意的是,这次启动过程中fsck.reiserfs有些replay的动作。 后来进行了很多操作,按了一些软件包,其中还创建的新的用户和组。没任何异常。但是重启时,我又想起来了那个resume参数,加上以后,也没什么异常,直接关机了。 但是再次重启后,问题重现了。首先是一堆reiserfs的错误,应该是上次开机后进行了大量文件操作的缘故。之后自然shell也进不去了。 *** 这一次,问题的原因很明显了,应该就是休眠时文件系统没有同步,然后正常启动后把那些操作都replay了,之后进行的新的操作,然后我又恢复了休眠时的状态,这样造成了文件系统的错乱。 本想着用上次的办法骗来一个shell,但是这次告诉我PAM failure之类的错误,我心想坏了,估计/etc/passwd之类的文件挂了,因为上次开机后中间新建了用户和组。 *** 有了上次的经验,我估计不用安装盘没戏了,花了一天下了个Ubuntu 7.10 alternate的CD,然后从ubuntu网站xxx上下了硬盘安装所需要的hd-media文件,vmlinuz和initrd.gz.准备用它恢复。 由于我本身有grub,而且能够正常运行,因此不需要下而外的grub4dos,我把vmlinuz, initrd.gz和CD映像放在移动硬盘里,开机前插上。启动进入grub后,进入shell,输入 kernel (hd1,0)/vmlinuz root=/dev/ram0 ramdisk_size=170000 devfs=mount,dall initrd (hd1,0)/initrd.gz boot 于是从移动硬盘启动了,看到选择语言界面后,按Alt+F2换个控制台,按回车就出来个busybox。 不过遗憾的是它虽然支持reiserfs,但是没有reiserfsck,几分钟后我想到了可以把那块磁盘只读挂载,这样也许就不用检查了,果然如此。 之后就可以用那个盘上的reiserfsck来修复了,这次不需要中间super block(应...

gnome下美化qt程序外观

参见 http://linuxtoy.org/archives/change-qt-applications-look-and-feel-under-gnome.html Ubuntu默认情况下qt程序外观不咋好看 安装qtconfig-qt3或qtconfig-qt4(依照实际版本),以及polymer 运行qtconfig,修改GUI style为polymer 这样qt程序的外观会比默认好很多

Windows XP 强制取消更新

症状:大概是由于某次更新安装失败,每次关机时都提示安装更新,而且数目都一样。平时右下角也没有黄色盾牌的图标。 解决办法: 1.杀wuauclt进程 2.关Automatic Updates服务 3.把c:\WINDOWS\SoftwareDistribution\DataStore改名 3.运行wuauclt /detectnow以恢复更新功能(Automatic Updates服务也会自动开启) 其中第3步应注意备份。 另外对此解法我也不是很肯定,但是在第3步中在c:\windows\SoftwareDistribution里捣鼓一番是肯定没错。

遭遇reiserfs文件系统错误

第3天,我的ubuntu终于回来了。 在讲故事之前,先交代一下我的系统: 我的电脑双系统,windows xp和ubuntu 7.10 硬盘分了5个区,一个ntfs放windows,两个fat32放windows程序和双系统公共数据,一个reiserfs放ubuntu,最后一个swap ubuntu有两个内核可以启动,一个是自己编译的2.6.24.2 另一个是ubuntu自己的2.6.22-14-generic *** 事情还要从编译内核说起,那天编译内核是发现有个hibernate的支持,说明里是说可以用echo 'disk' > /sys/power/state来休眠,于是编译好内核并用它启动后便试了试这个功能。 运行这个命令后系统很快就掉电了,没什么异样。 重启后和没休眠没什么两样,这让我有些疑惑,后来想起好像需要在启动是加上resume= 的参数,于是修改了/boot/grub/menu.lst,再用那个命令休眠。 但是,谁能想到,从那时起,到我那linux再次正常启动,竟花了3天时间 当时已是深夜,母亲催我入睡。 料我昏昏欲睡之时也不大可能搞好--不把电脑弄的更糟那就是万幸--睡吧,明天再说。 *** 第二天白天都串亲戚去了,晚上才开始动手。 再次启动时,突然发现grub选择操作系统的菜单消失了,迎接我的只有一堆提示信息和一个grub>的shell提示符,愣了几秒后我反过神来,凭印象输入引导命令,但是总报错,按help得到了命令列表,其中有个cat,于是cat /boot/grub/menu.lst,但是提示inconsistnet filesystem,于是我大概明白了发生了什么--似乎时休眠时文件系统没有同步好。 按tab命令不全时发现了原来还有/boot/grub/menu.lst~这个自动备份,于是cat看看,记下了命令,先进linux看看吧: root (hd0,5) kernel /boot/vmlinux-2.6.24.2 root=/dev/sda6 ro boot 但是不一会fsck报出一堆错误,还说必须用--rebuild-tree修复,都说reiserfs很稳定,我一直也这么觉得,遇上这么严重的问题,我还是大姑娘上花轿--头一回。 这次仍用上面的命令,只是加上了 resume=/dev/sda7,神奇的是竟...

制作u盘linux启动盘

前几天电脑坏了,想弄个linux启动盘应急修复一下,最后虽然还是没派上用场,但是至少启动盘弄出来了,在此记录一下。 需要的工具有 syslinux, 可以从http://www.kernel.org/pub/linux/utils/boot/syslinux/下载一个可以启动的linux映像,为了弄在U盘上,我选择了不到6M的ttylinux 由于是linux坏了,以下操作我都是在windows中进行的 1.解压syslinux 2.插入U盘 3.把linux映像解压到u盘,注意是解压不是拷贝 4.运行syslinux -sfma 5.由于ttylinux的映像是isolinux映像,所以应该做一些修改,把U盘里isolinux目录改名为syslinux,再把里面的isolinux.cfg改名为syslinux.cfg 这样就ok了,其中第5步我花了好久才悟出来 另外syslinux压缩包里也有linux版本

firefox 拼写检查导致崩溃

最近更新了一下,然后firefox就不正常了,gmail里写不了邮件。 看控制台消息,报 /usr/lib/firefox/firefox-bin: symbol lookup error: /usr/lib/firefox/components/libmyspell.so: undefined symbol: _ZN8Hunspell5spellEPKc 之后在 https://bugs.launchpad.net/ubuntu/+source/firefox/+bug/107340 找到了问题原因,是拼写检查模块libhunspell的问题,解决办法为禁掉firefox的拼写检查(about:config然后设置layout.spellcheckDefault=0),或者把libhunspell降级(我这是1.1.5,据说1.1.4就没问题)

Motorola手机输入法

我现在用的是Moto的一款不算很新的机型,A768i 在使用过程中我发现它的输入法联想十分体贴,之一是可以根据通讯录的姓名进行联想,这样输入人名快速准确,之二是可以发短信时可以根据历史短信内容进行联想,这样发类似消息时就轻松了很多。 真是十分不错的功能,巧妙而独特,至少我没在其他手机上发现这些功能。 在此称赞一下,期待更多惊喜。