2009年5月13日星期三

从顺德参加igrs全员大会回来

5/10从北京出发,到广州新白云机场,然后50元,坐机场大巴到顺德,打车10元到仙泉宾馆。从12点出发到晚上10点多到宾馆,路上用了10个小时,够远的。
5/11开始开技术组会议,本来安排是下午有internet tv的推介会,但是安排发生改变,这天没有进行。
5/12全员大会,本来是安排在下午开推介会,由于某些会员要着急赶飞机,所以安排在上午,幸好是上午进行,人还比较齐,到下午人就走了不少。
5/13日,上午参观,美的的历史馆和产品官,以及广州的数字实验室。到中午12点,整个活动完成,回机场,会北京。

整个过程的体会:
闪联全员大会参加的公司,院所还是不少,但是积极程度不同。我们希望发挥更大作用的公司,如创维,TCL,海信,感觉这些公司积极性不够,在会上不发言,讨论也不积极,对互联网电视兴趣不大,远远不如philps,samsung等国外企业。可能的原因是他们加入闪联比较早,和我们合作过DMA产品,但是这些公司的DMA产品都没有上市,没有得到市场回报,所以对闪联的积极性不够,目前主要的策略是观望。
另外,感觉科研院所对闪联兴趣比较大,可能在寻找技术市场化的机会。
philps对igrs很感兴趣,也作了一些demo开发,但是由于它在中国的研发力量不够,所以开发上可能靠不太住。
设在深圳的重点实验室摊子扑的很大,要成立好几个实验室,感觉可能需要相当的研发力量。
在广州的数字电视作了很多工作,看看在互联网电视方面是否有可能和他们合作。

2009年5月5日星期二

ubuntu使用蓝色主题

sudo apt-get install blubuntu-look blubuntu-theme gtk2-engines-ubuntulooks,然后在桌面设置中设置一下就ok了。

ubuntu下设置和ntp server同步

sudo ntpdate time.stdtime.gov.tw
sudo hwclock --systohc --utc

2009年5月3日星期日

回到gnome

使用KDE,感觉还是慢和容易崩溃,所以还是回到gnome
现在我的软件列表是
firefox
thunderbird
skype
qq
pidgin
freemind--在ubuntu9.04源中加的版本是0.7.1,但是可以正常使用
amule
axel
tomboy
iptux
smplayer
openoffice
virtualbox

2009年5月2日星期六

使用kubuntu9.04

4/30下载了kubuntu9.04,在公司pc,家里pc和自己笔记本安装了上,由于不知道怎么从gOS(基于ubuntu 8.04)升级到这个版本,所以就重新安装,还好大部分数据都在另外一个分区上,只是一些应用程序的数据需要保存。存下来后,装上去了。

在公司pc上,没有识别出显卡,只能显示800x600的分辨率,时间太短,没有处理。5/1放假期间,抽空把家里的pc和笔记本装上来这个版本,用了一段时间,感觉KDE还是很漂亮,功能也很多,比如kontact,功能很全,邮件,日记,提醒等都有,但是速度慢,而且容易崩溃-:( 不行了,又用sudo apt-get install ubuntu-desktop,重新回到gnome.

用thunderbird+lightning后,不能创建新任务(都是灰色的),网上google了一下,说是libstdc++5的原因,用sudo apt-get install libstdc++5,然后卸载lightning,重新安装一下。ok了。

kmlayer没声音,而且sudo apt-get install w32codecs说找不到win32的codec.在google找一下,说是这个软件不开源,所以没有在源中,直接下deb包安装,然后把kmplayer删除,安装smplayer。ok了,可以播放mp3

2009年4月29日星期三

让ubuntu启动后进入命令行(转)

1./etc/inittab.
You're right. It's gone. It left as of Edgy Eft, as Ubuntu now manages start-up services with "upstart."
The file does exist in pre-Edgy Ubuntu's, and other flavors of Linux, so you were not crazy to look there .

2. default runlevel in Ubuntu

In redhat/suse, the default run level is 5. I came from RH, and like you, expected the same in Ubuntu. After the "upstart" transition, the notion of runlevels is supposedly gone, but if forced to choose, the default run level is actually 2 in Ubuntu, not 5.

2. You don't want GNOME to start at boot, how?

So yes, in other flavors of Linux, you'd probably just change run levels, because on run level would have X, and another wouldn't. But in Ubuntu, *all* run levels start GNOME, so here's an easier way:

In /etc/rc2.d, you will see a file S13gdm. This starts the GNOME system.
Simply change that file to K13gdm.

# sudo mv S30gdm K30gdm

(It's possible the number between the "S" and the "gdm" will be slightly different than 30. That's OK.)

This leaves the package installed, but just not started at boot.

To start X later, run:

# sudo /etc/init.d/gdm start.

KDE下自动启动程序

在~/.kde/Autostart目录下建立软链接
比如:
ln -s /usr/bin/skype skype
就会在进入kde桌面后自动启动skype

注:在kde下没有找到gnome下的会话设置,所以就用这种方法。

把gOS的桌面改成KDE

首先,打开终端,输入

sudo apt-get install kubuntu-desktop

终端提示要下载159MB左右的文件,遇到提示时全部选“Y”,接下来是长时间的等待(取决于你的带宽情况,毕竟要下载159MB左右的文件)。下 载完成 后,终端自动进行配置,之后变成一个蓝屏的文字窗口,寻问你要选择Kdm 还是gdm,这个看个人喜好,因为这只是开机登陆窗是KDE的还是GNOME的差别而已。我选择的是gdm,按回车,解下来自动配置。

安装好后,按组合键Ctrl+Alt+Backspace 重启Xwindows,在登陆窗的“会话”中选择KDE,登陆后就是变成KDE了。(如果想回到ubuntu的话,可以在“会话”中改成gnome)

需要说明的是,此时你在ubuntu下安装的一切软件都可以在Kubuntu下使用,同理,Ubuntu下也可以使用KDE的软件。简言之,所以软件是共用的。

另外,此时默认的KDE为英文界面,可以使用这条命令 安装中文环境。

sudo apt-get install language-pack-kde-zh language-pack-kde-zh-base language-pack-zh language-pack-zh-base language-support-zh

大概下载50M的安装包,安装后,按组合键Ctrl+Alt+Backspace 重启Xwindows,这样就变成中文的了。


使用了一段时间后,发现KDE比gnome漂亮多了。

2009年4月28日星期二

编译gtk+,导致桌面程序出问题了

在gOS上编译gtk+/directfb,导致很多东西都不正常,包括thunderbird,nautilus等,看来还是得把不确定的东西放到虚拟机上去跑,否则可能导致工作桌面不正常,感觉正常后,再放到桌面上来。

现在正在下载ubuntu 9.04,下载后在虚拟机上跑跑,如果可以,把桌面换换。

2009年4月27日星期一

在gOS(Ubuntu)下,命令行下看到中文

Ubuntu下的终端(不是GNOME下的终端)会出中文显示乱码的问题:

1. 安装zhcon:$sudo apt-get install zhcon
2. 进入终端时,执行:$zhcon --utf8 --drv=vga,为了以后使用方便,可以为此命令作一个别名,方法是在/etc/bash.bashrc中添加这么一行:
alias zhcon='zhcon --utf8 --drv=vga'
3. 注意:进入终端执行zhcon命令时,如果出现花屏或黑屏的话,这时需要启动Linus kernel 的framebuffer模块。
4。重启!OK!

gOS(ubuntu)下支持framebuffer

需要在ubuntu中配置以让其启动framebuffer支持,参考以下方法
默认屏蔽了framebuffer模开,所以无法在grub参数上加vga=xxx来启用frame buffer.
解决解决方法:
首先,编辑你的 /etc/initramfs-tools/modules 文件
加入如下三行内容
fbcon
vesafb
vga16fb

最重要的一步,要把文件/etc/modprobe.d/blacklist-framebuffer.conf里面的vesafb和vga16fb这两行给注释掉。
这样你就可以在内核后面加入vga=xxx这样的启动参数了。

最后,在/boot/grub/menu.lst的kernel后加入了vga=0x0317,是1024x768的16位色。

最后刷新一下
代码:
sudo update-initramfs -u
重启,ok

2009年4月21日星期二

gOS中使用gdesklets

使用下面的命令:
sudo apt-get install gdesklets-data
sudo apt-get install gdesklets
安装gdesklets

编写my.display文件
<“?xml version="1.0" encoding="UTF-8"?>

<“display window-flags="sticky" bg-color="white">
<“label value="这是 knoppix 的桌面" font="Serif 20" color="red"/>
<”/display>

注意这个文件用utf-8编码。

运行下面的命令:
gdesklets open my.display&
这样就可以在桌javascript:void(0)面上看到my.display

注意:用鼠标中键移动widgets。用ps看,好像是python解析gdesklets,难道gdesklets使用python解析的,需要进一步的了解。
由于xml文件在这个blog中不能显示出来,所以加上了“号

widget engine(转)

  In computer software, a widget engine is a software service available to users for running and displaying desktop widgets on the desktop. Desktop widgets are physically inspired applets that give access to information and frequently used functions such as clocks, calendars, news aggregators, etc.
  The term widget engine is not to be confused with that of a widget toolkit. Toolkits are destined to GUI programmers, who combine several widgets to form a single application. A widget in a toolkit provide a single, low level interaction, and is prepared to communicate with other widgets in the toolkit. On the other hand, widget engines are intended for end users and each desktop widget is a stand-alone, task-oriented application which can be composed of several related interactions on its own.
  The desktop widget model is attractive because of ease of development. Most of these widgets can be created with a few images and about 10 to several hundred lines of XML/JavaScript/VBScript source code. A single host software system, such as a web browser, runs all the loaded widgets. This allows several desktop widgets to be built sharing resources and code.
  Contents
  * 1 Desktop widgets
  * 2 Mobile widgets
  * 3 Information flow of Desktop Widgets
  * 4 See also
  * 5 Notes and references
  * 6 External links
  Desktop widgets
  Examples of desktop widgets, shown here in DesktopX
  Examples of desktop widgets, shown here in DesktopX
  The Wikipedia Widget, in Dashboard running under Mac OS X v10.4
  The Wikipedia Widget, in Dashboard running under Mac OS X v10.4
  Early developer version of Plasma Desktop with Plasmoids
  Early developer version of Plasma Desktop with Plasmoids
  Widgets are downloadable interactive virtual tools that provide services such as showing the user the latest news, the current weather, the time, a calendar, a dictionary, a map program, a calculator, desktop notes, photo viewers, or even a language translator, among other things.
  Examples of widget engines include:
  * Dashboard widgets of Apple Macintosh
  * Microsoft gadgets in Windows Vista and in the Windows Live system
  * Plasmoids are widgets in Plasma the workspace for the KDE desktop environment.
  * gDesklets of Linux systems.
  * Panels or gadgets in Google Desktop
  * Yahoo! Widgets
  * Klips in Klipfolio
  * Mobile widgets, WidSets
  Originally, desk accessories were developed to provide a small degree of multitasking, but when real multitasking OSes became available, these were replaced by normal applications.
  Early examples of widgets were desk accessories on Mac OS (these, however, cannot access the internet). The Active Desktop system, developed by Microsoft, was the first system to enable desktop objects with internet access.[verification needed] Widgets resemble the tiny freeware apps that were developed by enthusiasts during the 80s.
  On 9 November 2006, the Web Application Formats Working Group in W3C released the first public working draft of Widgets 1.0.[1] Widget is on its way to standardization.
  Mobile widgets
  Most mobile widgets are like desktop widgets, but for a mobile phone. Mobile widgets can maximize screen space use and may be especially useful in placing live data-rich applications on the device home-screen/"phone-top". Several J2ME-based mobile widget engines exist including WidSets, WidX, Webwag and BluePulse. However the lack of standards-based APIs for Java to control the mobile device home-screen make it harder for these engines to expose widgets on the phone-top.
  Several AJAX-based widget platforms are also available for mobile devices including Access' NetFront, Openwave's MIDAS and Opera's Opera Platform.
  Information flow of Desktop Widgets
  A desktop widget is a small footprint application, which resides on the user’s desktop using a small desktop space and computer resources, such as the HDD and RAM. Its purpose is to provide relevant information to the user in a non-intrusive manner and using few resources. Basically, desktop widgets enable the user view on demand, capsuled information from predetermined data sources. Ideally, a desktop widget must present personalized content, based on the user’s preferences. It is supposed to beam the most important information that a user requires on a day to day basis. Most of the desktop widgets are available as free downloads from the vendors’ Web sites.

2009年4月19日星期日

widgets(转)

十年前的一天,苹果电脑工程师Rose的在自己的苹果操作系统桌面玩一个可以更换皮肤的MP3播放器时忽发奇想:如果在我桌面上运行的所有工具都能够更换皮肤或外观,那将是一件很酷的事情。2002年的一天,Rose遇到了一个工程师Perry。两人拥有对于此事同样的构想,于是一拍即合,开始共同为了这个炫酷的玩意儿在深夜努力工作。终于在2003年2月10日的深夜,一个运行在苹果操作系统之上的小工具--Konfabulator正式发布了,其中的主运行文件叫做Widget,在Rose头脑中酝酿了5年的想法终于第一次问世了,并且向所有人宣布它是运行在用户桌面上最独一无二的工具:你希望它是什么样子,它就能按照你的想法而改变。2004年的11月,基于Windowns操作系统的Widget1.8版本正式对外发布了,由此开始Widget进入了一个新的时代,成为了跨平台的产品。使用Windows和Mac操作系统的用户都可以使用和开发自己喜欢的Widget工具。当然这还仅仅只是一个开端。

经过几年的发展,如今的Widget已经由当初的曲高和寡逐步发展成与博客、播客、RSS、SNS等Web2.0名词一样被越来越多的人提起。

1. Widget是什么?
简单说Widget可以理解为“应用小插件”,一种可供用户制作和自由下载的小工具,它包含了娱乐、工作、学习等多种实用功能。目前的Widget应用大体可分为三种:Desktop Widget、WEB Widget以及Mobile Widget。
1.1 Desktop Widget
Desktop Widget 可以在电脑桌面上独立执行,用户无需通过浏览器便连接到网络。时至今日,很多人已对苹果、雅虎、Google及微软开发的Desktop Widget比较熟悉。通过这些小型应用软件,用户可把各类网上信息(如天气、新闻头条、图片等)放到桌面上。如果用户不关闭这些Widget而回到浏览器的话,它们将一直处于打开状态。

图1 Desktop Widget之Google Gadget



图2. Desktop Widget之Yahoo! Go

1.2 Web Widget
Web Widget 是一种可以容易地嵌入到网页的模块。从程序员的角度,Web Widget就是一小段程序代码,用户不需要做任何修改或者编译就可以将其嵌入并在任何 HTML网页上运行。因此通过它们我们可以把新闻、信息、游戏、娱乐等整合到我们的网站上,也可以用来装饰我们的网站。Web Widget可以很方便地实现聚合。用户可把从某个网站上搜集的数据置入另一个网页中。比如把定制化搜索框加入到用户的博客中,或把某个YouTube视频加入到某位用户的 MySpace网页之中,甚至创建一个综合了用户Gmail、RSS供应及网络相册等内容的完整Widget页面。如果用户使用TypePad博客服务,还能使用非常丰富的Widget工具。
下图是一个iGoogle的定制个人门户,用户根据自己的爱好和兴趣定制Widget,完全不需要关心数据是从哪里来的,只需要关注上面的内容,通过Widget可以直接把其他网站的服务嵌入到自己的门户上了,这种承载了网络服务的门面的个人门户技术平台也体现了Web2.0时代倡导的用户参与的精神。


图3 Web Widget之iGoogle

1.3 Mobile Widget
Mobile Widget 实际上是运行在移动设备上的Desktop Widget。最闻名遐迩的Mobile Widget莫过于诺基亚维信了。诺基亚公司为了实现其战略转型,由设备运营商进入移动互联网领域,推出了维信,短短一年多的时间就吸引了3000多个widgets(精灵)的加入。用户在诺基亚机器上安装(或者已经预装)了维信软件之后,可以通过自主添加维信精灵的方式实现你想要的各种功能。


图4 基于Mobile Widget的诺基亚维信手机截图



1.4 无孔不入的Widget
当然Widget的应用并不限制在这三个领域,甚至已经渗入到家电行业。
三星电子在近日的消费电子大展上展出新款高清晰度电视,其中将安装雅虎的Widget应用软件,该款电视的“Internet@TV” 互联网内容服务将让观众通过互联网查看新闻、股价、视频、图片。雅虎副总裁帕特里克-巴里表示:“这一合作使雅虎将互联网的丰富选择、个性化特点和三星电子的产品创新、全球覆盖特点结合起来,为全球用户提供新的感受.” 该电视将能连接到雅虎Flickr、新闻、天气预报、财经等内容,也能访问 YouTube、eBay、Showtime等网站。三星电子视觉显示部门执行副总裁Boo-Keun Yoon表示:“与雅虎的合作让观众前进了一步。新界面让他们能与很多最受欢迎的万维网服务进行个性化互动,不再是被动地看节目。毫无疑问,这代表了未来的电视.”


图5. 安装雅虎Widget应用软件的三星高清晰电视


几乎是同时,MySpace、英特尔和雅虎联合发布了一款电视版社交网络软件--MySpace Widget。利用这款软件,用户可以在观看电视节目的同时在电视上与MySpace好友联系。用户在看电视时,激活电视屏幕底部的这款widget就可以与MySpace好友交换信息,或浏览MySpace上的照片。利用MySpace Widget,用户无需浏览器就能够访问MySpace.com,直接在电视上接收好友的更新信息,查看好友的档案。 MySpace发言人说,用户可以通过遥控器使用这款widget,利用电视屏幕上显示的软键盘输入信息。MySpace Widget将被预装在能够上网的消费电子产品中,例如机顶盒、蓝光影碟机和电视。

ubuntu关机 关闭磁头

我的ubuntu关机的时候,硬盘会“吱”的一声(貌似是开机时间较长的时候)
就像win下面拔掉电源强制关机声音差不多
只是声音比那个小
在xonix大牛的亲切关怀下,问题得到了解决
这应该是硬盘磁头复位的声音
可以这样消除
sudo gedit /etc/init.d/halt
找到sleep 1一行
把它改成sleep 20
就是让halt完成后睡眠20秒钟后再切断硬盘电源,也就是给磁头正常归位的时间,等磁头归位后断电就没有这种声音了。

2009年4月10日星期五

在gOS上使用VirutalBox2.2.0

在gOS下,用sudo apt-get install VirtualBox安装的版本是1.5.6,该版本不支持PAE/NX,如果没有这个选项,那么monlin就跑不起来,所以去VirtualBox的网站上下了
virtualbox-2.2_2.2.0-45846_Ubuntu_hardy_i386.deb文件,然后安装,报告下面错误:
dpkg:处理 virtualbox-2.2_2.2.0-45846_Ubuntu_hardy_i386.deb (--install)时出错:
正试图覆盖“/lib/modules/2.6.24-23-generic/misc/vboxdrv.ko”,它属于软件包 virtualbox-ose-modules-2.6.24-23-generic
dpkg-deb: 子进程 paste 被信号(Broken pipe)终止了

运行sudo apt-get remove virtualbox-ose-modules-2.6.24-23-generic命令,然后在安装,OK了。

由于是升级,所有以前版本,如1.5.6的一些配置,如用户等,可能有相关性,如果不是升级,可能要参考两篇blog

Git 使用指南(转)

Git 使用指南
Li Yanrui
v 0.1, 20080728
liyanrui.m2@gmail.com
Page 2


Git 是什么
非常简单地说,Git 是一个快速、可扩展的分布式版本控制系统,它具有极为丰
富的命令集,对内部系统提供了高级操作和完全访问。所谓版本控制系统 (Version
Control System),从狭义上来说,它是软件项目开发过程中用于储存我们所写的代
码所有修订版本的软件,但事实上我们可以将任何对项目有帮助的文档交付版本控
制系统进行管理。
2005 年,Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代
BitKeeper,后者之前一直是 Linux 内核开发人员在使用的版本控制工具,当时由
于自由软件社区中的许多人觉得 BitKeeper 的使用许可证并不适合自由软件社区
的工作,因此 Linus 决定着手开发许可证更为自由灵活的版本控制系统。尽管最初
Git 的开发是为了辅助 Linux 内核开发的过程,但是现在很多其他自由软件项目中
也使用了 Git 实现代码版本管理,譬如,X.org 项目、许多 Freedesktop.org 的项目、
Ruby 项目等。
为什么使用版本控制系统
版本控制系统是为懒人准备的,它让懒人们比那些善于备份文档的勤劳人拥有
更干净的文件系统以及更多的可以活着的时间。
本文档主要内容
在第 1 章中讲述如何使用 Git 管理自己的个人文档,主要是初步熟悉 Git 的
诸多概念及其日常基本命令的使用。第 2 章中主要讲述如何基于 Git 实现多人协
作的项目开发模式,以此扭转当前实验室成员在项目研发中各自为政或不能有效
沟通的现状。第 3 章讲述如何利用 Git 强大的项目分支管理功能实现良好风格的
项目协同开发模式。第 4 章为 Git 使用之 FAQ,用于记载在本实验室推广使用
Git 过程中诸位同学所遇到的一些细节问题。
Page 3
Contents
第 1 章
使用 Git 管理个人文档
1
1.1
何种文档需要保存
1
1.2
建立项目仓库
1
1.3
关于建立 Git 仓库的一些细节
2
1.4
仓库与工作树
3
1.5
在项目中工作
4
1.6
查看版本历史
5
1.7
撤销与恢复
7
1.8
如何使用 Git 帮助文档
7
1.9
总结
8
第 2 章
基于 Git 的团队协同开发
9
2.1
两个人如何协同
9
2.2
如何解决仓库合并冲突
10
2.3
三人以至更多人如何协同
12
2.4
M2GE 的协同开发
12
2.5
总结
13
第 3 章
项目分支管理
14
3.1
如何产生项目分支
14
3.2
分支的合并
15
3.3
M2GE 新的协同开发模式
15
3.4
总结
16
Page 4
第 1 章 使用 Git 管理个人文档
本章讲述如何使用 Git 管理我们的个人文档,用以展示 Git 的一些基本功能,
并且秉承学以致用、用以促学的精神,引导大家积极地将 Git 应用于日常学习与工
作中的文档备份。仿温水煮蛙之古例,此章乃温水也。
1.1 何种文档需要保存
凡需要持续变动的文档皆可作为项目并交付于 Git 进行管理。由于 Git 可以详
细地记录对于项目的各种修改并提供了功能强大的版本控制,因此愈是修改较为频
繁的文档,愈是有必要将其纳入 Git 的管理之下。
理论上,Git 可以保存任何文档,但是最善于保存文本文档,因为它本来就是为
解决软件源代码(也是一种文本文档)版本管理问题而开发的,提供了许多有助于文
本分析的工具。对于非文本文档,Git 只是简单地为其进行备份并实施版本管理。
1.2 建立项目仓库
欲使用 Git 对现有文档进行版本控制,首先要基于现有文档建立项目仓库。下
面以本文档的版本管理为例,演示如何将其作为项目并纳于 Git 的版本控制之下。
本文档是由 TE
X 生成的,对应 T
E
X 源文档皆位于 $HOME/work/m2doc 目录
下,下文为叙述方便,以 Bash 变量 $WORK 代替该目录。首先需初始化 Git 仓库:
$ cd $WORK
$ git init
Git 会作出以下回应:
Initialized empty Git repository in $PROJECT/.git/
上述操作的结果是在 $WORK 目录下创建了一个 .git 隐藏目录,它就是所谓
的 Git 仓库,不过现在它还是空的。另外 $WORK 目录也不再是普通的文档目录了,
今后我们将其称为工作树。
下面应当有选择地将工作树中的一些文档存储至 Git 仓库中。由于 Git 在向
仓库中添加文档时并非是简单地文档复制过去,势必要将所添加文档进行一番处
Page 5
2
理,生成 Git 仓库所能接受的数据格式,Git 称这个过程为 "take a snapshot"(生成
快照)。若将工作树下所有文档(包含子目录)生成快照,可采用以下命令:
$ cd $WORK
$ git add .
所生成的快照被存放到一个临时的存储区域,Git 称该区域为索引。使用
git-commit 命令可将索引提交至仓库中,这个过程称为提交,每一次提交都意味着
版本在进行一次更新。git-commit 最简单的用法如下:
$ git commit
执行上述 git-commit 命令时,Git 会自动调用系统默认的文本编辑器,要求你
输入版本更新说明并保存。请记住,输入简约的版本更新说明是非常有必要的,它就
像剧本一样,可以帮助你快速回忆起对项目的重大改动。
对于简短的版本更新信息,可以使用 git-commit 的“-m”选项,如下:
$ git commit -m "你的版本更新信息"
上述过程即为建立 Git 仓库的一般过程,我将其总结为图1.1所示之流程:
git-init
仓库初始化
git-add
生成快照并存
入项目索引
版本更新说明
git-commit
项目索引提交
图 1.1
Git 仓库建立流程
1.3 关于建立 Git 仓库的一些细节
看过上一节内容,也许你会跃跃欲试,准备拿自己的一个文档目录下手。切莫如
此着急,为了概念的完整性,上一节内容中,我故意省略了两个细节问题,下面逐一
道来。
Page 6
3
第一个问题是:在使用 Git 之前,你需要面对 Git 来一番自我介绍。Git 不喜欢
不愿透漏姓名的人,因为它要求每个人在向仓库提交数据时,都应当承担一定的责
任。要向 Git 进行自我介绍,请使用以下命令:
$ git config --global user.name "Your Name Comes Here"
$ git config --global user.email you@yourdomain.example.com
第二个问题是:在生成文档内容快照时,工作树中有一些文档是你不希望接受
Git 管理的,譬如程序编译时生成的中间文件,对于这样的文件如何避免为之生成
快照?
譬如对于上一节的用例,在工作树中存在以下文件(或子目录):
doc-env.tex git-tutor.tex Makefile zh
git-tutor main.tex
vfonts.tex
其中的 zh 目录存放着 TE
X 文档编译时生成的中间文件,因此该目录不应该被
Git 所管理。为解决此类问题,Git 提供了文档忽略机制,可以将工作树中你不希望
接受 Git 管理的文档信息写到同一目录下的 .gitignore 文件中。对于本例中的
zh 目录,采用如下操作可将其排除仓库之外,然后再对 $WORK 生成快照即可。
$ cd $WORK
$ echo "zh" > .gitignore
$ git add .
有关 gitignore 文件的诸多细节知识可阅读其使用手册:
$ man gitignore
1.4 仓库与工作树
按照前文的说法,Git 仓库就是那个 .git 目录,其中存放的是我们所提交的文
档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现
文档的版本控制。工作树是包含 .git 的目录,在前文示例中即 $WORK 目录。
为了更加明确仓库与工作树的概念,下面做一个实验:
Page 7
4
$ cp -R $WORK/.git /tmp/m2doc.git
$ cd /tmp
$ git clone m2doc.git m2doc-copy
首先,我们将 $WORK 目录中的 .git 目录复制到 /tmp 目录下并进行重命名为
m2doc.git ,然后使用 git-clone 命令
1
从 m2doc.git 中生成 m2doc-copy 目录。若
进入 m2doc-copy 目录观察一下,就会发现该目录所包含的内容是等同于 $WORK 目
录的。
上述实验意味着,只要我们拥有仓库,即 m2doc.git ,那么就可以很容易地生
成工作树,而这个工作树又包含着一个仓库,即 m2doc-copy/.git 。所以,我们可
以这样理解:在 Git 中,仓库与工作树之间无需分的很清楚。
1.5 在项目中工作
在工作树中,我们日常所进行的工作无非是对 Git 仓库所管理的文档进行修
改,或者添加/删除一些文件。这些操作与采用 Git 管理我们的文档之前没有任何
差异,只是在你认为一个工作阶段完成之时,要记得通知 Git,命令它记下你所进
行更新,这一步骤是通过生成文档快照并将其加入到索引中来实现的。
譬如今天,我向 $WORK 目录添加了一份新文档 ch1.tex ,我需要通知 Git 记
住我的这一更新:
$ cd $WORK
$ git add ch1.tex
这样,Git 就会将有关 ch1.tex 的更新添加到索引中。然后我又对其它文档
进行了一些修改,譬如修改了 doc-env.tex 以及 git-tutor.tex 文件,继续使用
git-add 命令将它们的更新添加到索引中:
$ git add doc-env.tex git-tutor.tex
晚上,这一天的工作告以段落,我觉得有必要将今天所做的提交到仓库中,于是
执行 git-commit 操作,将索引内容添加到仓库中。
可能一天下来,你对工作树中的许多文档都进行了更新(文档添加、修改、删
除),但是我忘记了它们的名字,此时若将所做的全部更新添加到索引中,比较轻省
的做法就是:
工作树克隆命令,在后文中将会对其详细讲述。
1
Page 8
5
$ cd $WORK
$ git add .
$ git commit -a
... 输入日志信息 ...
git-add 命令通常能够判断出当前目录(包括其子目录)下用户所添加的新文
档,并将其信息追加到索引中。git-commit 命令的 -a 选项可将所有被修改的文档
或者已删除的文档的当前状态提交倒仓库中。记住,如果只是修改或者删除了已被
Git 管理的文档,是没必要使用 git-add 命令的。
本节并未讲述新的 Git 命令,完全是前面所讲过的一些命令的重复介绍,只是
它们出现的场景有所区别而已。另外,要注意的问题是,Git 不会主动记录你对文档
进行的更新,除非你对它发号施令。
1.6 查看版本历史
在工作树中,使用 git-log 命令可以查看当前项目的日志,也就是你在使用
git-commit 向仓库提交新版本时所属如的版本更新信息。
$ git log
如果你想看一下每一次版本的大致变动情况,可使用以下命令:
$ git log --stat --summary
下面分析一下 git-log 命令的回应信息。譬如当我在“Git 使用指南”这一文
档项目的工作树中查阅项目日志,git-log 命令给出了以下回应信息:
Page 9
6
commit dfb02e6e4f2f7b573337763e5c0013802e392818
Author: Li Yanrui
Date: Wed Jul 9 16:32:25 2008 +0800
Git 使用指南文档项目初始化
commit 9a4a9ce37561bbb42d8187d7a851e228e26e1212
Author: Li Yanrui
Date: Wed Jul 9 16:31:07 2008 +0800
添加 .gitignore 文件
commit 459640624390eb733fb2ad45bcb8731435931e60
Author: Li Yanrui
Date: Wed Jul 9 16:28:50 2008 +0800
M2Doc 项目初始化
lines 1-17/17 (END)
从上面的项目日志信息中可以看到我对 M2Doc 项目所做的一些阶段性工作,
每一个版本都对应着一次项目版本更新提交。在项目日志信息中,每条日志的首行
(就是那一串莫名奇妙的数字)为版本更新提交所进行的命名,我们可以将该命名
理解为项目版本号。项目版本号应该是唯一的,默认由 Git 自动生成,用以标示项目
的某一次更新。如果我们将项目版本号用作 git-show 命令的参数,即可查看该次项
目版本的更新细节:
$ git show dfb02e6e4f2f7b573337763e5c0013802e392818
除了使用完整的版本号查看项目版本更新细节之外,也还可以使用以下方式:
$ git show dfb02 # 一般只使用版本号的前几个字符即可
$ git show HEAD
# 显示当前分支的最新版本的更新细节
每一个项目版本号通常都对应存在一个父版本号,也就是项目的前一次版本状
态。可使用如下命令查看当前项目版本的父版本更新细节:
$ git show HEAD^ # 查看 HEAD 的父版本更新细节
$ git show HEAD^^ # 查看 HEAD 的祖父版本更新细节
$ git show HEAD4 # 查看 HEAD 的祖父之祖父的版本更新细节
你可以对项目版本号进行自定义,然后就可以使用自定义的版本号查看对应的
项目版本更新细节:
Page 10
7
$ git tag v0.1 dfb02
$ git show
实际上,上述命令并非是真正的进行版本号自定义,只是制造了一个 tag 对象
而已,这在进行项目版本对外发布时比较有用。本文档后续章节会对 tag 的一些细
节进行介绍。
1.7 撤销与恢复
版本控制系统的一个重要任务就是提供撤销和恢复某一阶段工作的功能。
git-reset 命令就是为这样的任务而准备的,它可以将项目当前版本定位到之前提交
的任何版本中。
git-reset 命令有三个选项:--mixed 、 --soft 和 --hard 。我们在日常使用
中仅使用前两个选项;第三个选项由于杀伤力太大,容易损坏项目仓库,需谨慎使
用。
--mixed 是 git-reset 的默认选项,它的作用是重置索引内容,将其定位到指定
的项目版本,而不改变你的工作树中的所有内容,只是提示你有哪些文件还未更新。
--soft 选项既不触动索引的位置,也不改变工作树中的任何内容,但是会要求
它们处于一个良好的次序之内。该选项会保留你在工作树中的所有更新并使之处于
待提交状态。
关于 git-reset 命令的具体如何使用可留作本章的练习题,你可以随便创建一
个 Git 仓库并向其提交一些版本更新,然后测试 --mixed 与 --soft 选项的效果。
如果欲查看 git-reset 命令对工作树的影响,可使用 git-status 命令。另外,这道练习
题应当结合 git-reset 的使用帮助(参考下一节)来做,当你大致明白了 git-reset 的
用法,这道题就算做对了。
1.8 如何使用 Git 帮助文档
前文中,我一直没有解释这样一个现象,那就是在正文中,总是使用类似
git-reset 这样的命令形式,但是在终端中实际输入这些指令时,所采用的命令形式
又变为 git reset。我猜测这样做的原因是后者作为命令形式对于用户更为友好一
些,因为我们已经习惯了在终端中输入这样的命令格式。但是在查阅命令的说明文
档时,需要使用第一种命令格式,譬如要查看 git reset 命令的用法,可:
Page 11
8
$ man git-reset
1.9 总结
现在我们总算是掌握了有关 Git 的一些粗浅但非常实用的知识,已具备了使用
Git 管理个人文档的能力,希望大家能够学以致用,积极地使用 Git 来管理你认为
需要进行版本控制的个人文档。
Page 12
第 2 章 基于 Git 的团队协同开发
很多时候我们是多个人同时为做一件事情而努力,如何有效化解多人协同运作
过程中出现的种种矛盾是相当重要的。实践证明,Git 可以很好的胜任此类任务,这
也是我们要在实验室内部推广 Git 应用的主要原因。
2.1 两个人如何协同
Lyr 与 Tzc 是本节的两位主角。现在假设 Lyr 开始着手开发 M2GE 库,并按照
第 1 章所讲述的 Git 基本用法将 M2GE 库纳于 Git 的管理之下。但是,很快 Lyr 就
发现了仅凭个人之力很难在项目规定期限内完成这项工作,因此他邀请 Tzc 来参
与 M2GE 库,故事就这样开始了。
Lyr 的 M2GE 工作树为 /work/m2ge ,Tzc 可通过以下命令获得与 Lyr 同样
的工作树:
$ cd work
$ git clone lyr@192.168.0.7:/work/m2ge m2ge
git-clone 可利用各种网络协议访问远端机器中的 Git 仓库,从中导出完整的
工作树到本地。在上述示例中,Tzc 通过 SSH 协议访问了 Lyr 机器上的 lyr 账户
的 M2GE 仓库并进行导出,从而在当前目录下建立了 m2ge 工作树。若上述命令
中未指定本地工作树名,那么 git-clone 会在 Tzc 当前所在目录中建立与 Lyr 的
M2GE 工作树同名的工作树,所以上述命令指定 Tzc 的工作树名为 m2ge 显得有
些多余。
注意,git-clone 命令只要碰到类似以下格式的远端仓库地址,它就会认为该地
址是符合 SSH 协议的。
账户@IP:工作树路径
Tzc 既已获得 M2GE 工作树,他就可以开始工作了,同时,Lyr 也在位于自己的
机器上的 M2GE 工作树中工作。在此期间,二人对位于各自机器上的 M2GE 仓库
的操作只需具备第 1 章所讲述的内容足矣。
一个阶段之后,二人均将所做的工作不断地提交到各自的 Git 仓库中,直至他
们觉得有必要将各自所做的工作合并起来之后再进行新的开发阶段。由于 Lyr 作
Page 13
10
为主要开发者,二人的工作在他的机器上进行合并是比较自然的。当然在 Tzc 机器
上合并也未尝不可,因为 Git 是不分主次仓库的,同一项目的不同仓库都是地位均
等。
为实现与 Tzc 的工作合并,Lyr 执行了以下操作:
$ cd/work/m2ge
$ git pull tzc@192.168.0.5:/work/m2ge
git-pull 命令可将属于同一项目的远端仓库与同样属于同一项目的本地仓库进
行合并,它包含了两个操作:从远端仓库中取出更新版本,然后合并到本地仓库。上
述命令可在 Lyr 的 m2ge 仓库中完成对 Tzc 机器上的 myge 仓库的合并。
如果 Lyr 与 Tzc 是对了不同的文件进行了改动,那么可以不费周折地完成仓
库合并。但是倘若二人对一些相同的文件进行了改动,那么在合并时必然会遭遇合
并冲突的问题,此时手动修改发生合并冲突的文件,然后将结果提交到本地仓库。由
于处理合并冲突的问题比较复杂一些,所以下面单独拿出一个小节来讲述。
当项目合并结束后,意味着 Lyr 与 Tzc 一个协同开发周期的结束,他们彼此很
欣赏对方的工作,所以又开始了下一个周期……
2.2 如何解决仓库合并冲突
现在假设 Lyr 与 Tzc 在各自的工作树中对同一份文件 foo.txt 进行了修改,而
foo.txt 原内容如下:
one
two
three
Lyr 对 foo.txt 进行了如下改动,并将该改动提交到本地仓库。
ONE
two
three
Tzc 对 foo.txt 进行了以下改动,也将该改动提交到本地仓库。
one
two
THREE
Page 14
11
当 Lyr 在合并 Tzc 的 Git 仓库时,Git 会自动合并二人对 foo.txt 的修改:
ONE
two
THREE
现在 Lyr 工作树中的 foo.txt 文件即包含了 Lyr 的改动,也包含了 Tzc 的改
动,而且合并结果自动作为新版本提交到 Lyr 的仓库中。
观察上述合并冲突示例,可以看出,虽然 Lyr 与 Tzc 是对同一份文件进行了修
改,但是他们的修改并未重叠。现在假设二人对 foo.txt 的同一行做出了修改,那么
在仓库合并时会发生什么,应当如何处理呢?
现在假定上述示例中,Tzc 对 foo.txt 的修改如下:
one ONE
two
three
这样,二人对 foo.txt 的同一行进行了不同的修改,当合并时,Git 会给出以下
反馈信息:
Auto-merged foo.txt
CONFLICT (content): Merge conflict in foo
Automatic merge failed; fix conflicts and then commit the result.
上述信息之意是:尝试合并 foo.txt 文件的改动发生了冲突,自动合并失败,请
用户手动修复冲突然后将结果提交到仓库中。Lyr 看到上述信息,就打开了合并后
的 foo.txt,他看到了以下内容:
<<<<<<< HEAD:foo
ONE
=======
one ONE
>>>>>>> 1116d3270764d91a25532a753a47b8b0e1b6f1b8:foo
two
three
以一串 < 开头的字串表示 Lyr 的当前项目版本对 foo.txt 的修改结果,而以一
串 > 开头的字串表示 Tzc 的当前项目版本对 foo.txt 的修改结果。中间用了一串
= 号将二人修改结果隔开。一旦理解了版本冲突的表示格式,Lyr 就很容易地根据
现实情况将合并冲突问题解决掉,他认为 Tzc 的改动是不符合项目需求的,并且按
Page 15
12
照项目的实际需求进行了手工合并。最后,Lyr 将合并处理结果提交到仓库中,即完
成了重叠冲突的合并问题的解决。
2.3 三人以至更多人如何协同
前文在讲述二人协同模式时,强调了 Lyr 与 Tzc 的主次关系,这种关系似乎对
于三人以至更多人的协同也有效。现在我们再引入两位故事主角 Lxc 与 Zhu 来说
明此问题。假设 Lxc 与 Zhu 仿照 Tzc 那样从 Lyr 那里 git-clone 了一份项目仓库,
进行了一番卓有成效的版本更新。最后,Lyr 需要一一取回其他三人的仓库,然后再
一一合并方能完成一个协同周期,这些工作逐渐让 Lyr 汗流浃背,疲于应付。因此
Lyr 希望其他三人能够分担一下项目版本合并问题的处理工作。
Git 提供了 git-pull 的对偶命令,即 git-push。顾名思义,git-pull 命令负责从
远端仓库取回版本更新,而 git-push 可将本地版本更新推送到远端仓库中。
利用 git-pull 与 git-push 命令,那么在一个协同周期之内,除了 Lyr 之外,其余
三人的项目开发流程大致如下:
$ git clone lyr@192.168.0.7:/work/m2ge
... 项目开发 ...
$ git add 改动的文件
$ git commit
$ git pull
... 解决版本合并问题 ...
$ git push
在一个协同周期内,Lyr 对 M2GE 仓库的管理工作相当于管理一份他个人项
目一般,因为 M2GE 库是位于他的机器上,他是不需要 git-pull 与 git-push 的。
这样,一个基于 Git 较为简单的三人以至更多人的协同工作模式被实现了,这
是我们在尚未熟悉 Git 应用之时比较稳妥的协同方案。下一节将基于这一方案讲述
M2GE 库仓库的建立以及多人协同开发过程的具体实现。
2.4 M2GE 的协同开发
上一节所给出的三人及三人以上的协同工作模式有些不合理,譬如 Lyr 过于
特殊,别人都要 git-pull 与 git-push,唯独他不需要。现在要剥夺他的这一特权,最
有效的办法就是将 M2GE 仓库建立在实验室的服务器上。
Page 16
13
首先,Lyr 通过 SSH 登录到服务器,寻找合适位置,建立 m2ge.git 目录,譬如
/project/m2ge.git ,然后初始化一个空仓库,以此作为 M2GE 仓库:
$ mkdir -p/project/m2ge.git
$ cd/project/m2ge.git
$ git --bare init --shared
上述操作中,git-init 命令的 --bare 选项可以让 m2ge.git 目录等价于一个仓
库。也就是说,m2ge.git 本来是一个工作树,但是 --bare 选项将本应当存放在
m2ge.git/.git 中的仓库内容全部放置在 m2ge.git 目录下,就好像仓库完全的裸
露在工作树中,所以称之为赤裸的仓库。
然后,Lyr 将自己机器上已经接受 Git 管理的 m2ge 仓库推送到服务器端的
m2ge.git 仓库:
$ cd/work/m2ge
$ git push m2@192.168.0.2:/project/m2ge.git master
上述 git-push 命令中出现的 master 参数的含义将在下一章讲述,此处可略过
不谈。现在,大家已经得到了 M2GE 仓库的最初版本,并且可以使用 git-clone 命令
在本地创建工作目录:
$ git clone m2@192.168.0.2:/project/m2ge.git
之后,我们就可以开始一个又一个协同周期,服务器上的 m2ge.git 仓库将会逐
次记录着每位协同开发者的版本更新提交,此基本过程可参考上一节所述内容来理
解。
2.5 总结
本章讲述了基于 Git 最基本的多人协同工作模式,并引入了三个新的 Git 命
令:git-clone、git-pull 与 git-push。基于这三个命令并配合上一章所讲述 Git 基本
操作,足以实现 M2GE 初级阶段的协同开发。
Page 17
第 3 章 项目分支管理
Git 最为世人称道的就是它那强大的项目分支管理功能,现在较为流行的版本
控制系统,诸如 CVS、SVN 等,虽然也提供了项目分支管理功能,但是可用性极低。
对于 Git 而言,管理多个项目分支如探囊取物耳。本章主要讲述 Git 的项目分支管
理的基本知识以及如何利用这一功能形成更有章法的项目协同开发模式。
3.1 如何产生项目分支
前两章所讲内容未有提及项目分支问题,但事实上是有一个分支存在的,那就
是 master 分支(主分支),该分支是由 Git 自动产生的。在此之前,我们针对项目版
本的各种操作都是在主分支上进行的,只是我们未察觉它的存在而已。
Git 可以轻松地产生新的项目分支,譬如下面操作可添加一个名曰“local”的
新的项目分支:
$ git branch local
对于新产生的 local 分支,初始时是完全等同于主分支的。但是,在 local 分支
所进行的所有版本更新工作都不影响主分支,这意味着作为项目的参与者,可以在
local 中开始各种各样的更新尝试。
查看项目仓库中存在多少分支,可直接使用 git-branch 命令,譬如使用该命令
查看我的 M2Doc 项目分支列表:
$ git branch
local
* master
在上述操作输出结果中,若分支名之前存在 * 符号,表示此分支为当前分支。其
实 Git 各分支不存在尊卑之别,只存在哪个分支是当前分支的区别。为了某种良好
的秩序,很多人默认是将 master 分支视为主分支,本文也将沿用这一潜在规则。
由上述操作输出的分支列表可以看出,虽然使用 git-branch 命令产生了
local 分支,但是 Git 不会自动将当前分支切换到 local 下。可使用 git-checkout 命
令实现分支切换,下面操作将当前分支切换为前文所产生的 local 分支:
$ git checkout local
Page 18
15
3.2 分支的合并
我们产生了 local 分支,并在该分支下进行了诸多修改与数次的版本更新提交,
但是该如何将这一分支的最终状态提交到 master 分支中呢?
git-merge 命令可实现两个分支的合并。譬如我们将 local 分支与 master 分支
合并,操作如下:
$ git checkout master # 将当前分支切换为master
$ git merge local
# 将local分支与当前分支合并
当一个分支检查无误并且与 master 分支成功合并完毕后,那么这一分支基本
上就没有存在的必要性了,可以删除掉:
$ git branch -d local
注意,git-branch 的 -d 选项只能删除已经参与了合并的分支,对于未有合并的
分支是无法删除的。如果想不问青红皂白地删除一个分支,可以使用 git-branch 的
-D 选项。
3.3 M2GE 新的协同开发模式
现在来讨论一下如何基于 Git 项目分支管理功能实现更为稳健、高效的
M2GE 库的协同开发机制。
实验室服务器上已经建立了 M2GE 仓库
1
。现在以 Lyr 作为主角,看一看他围绕
M2GE 开发工作的一天中的工作过程。
首先,Lyr 需要更新自己机器上的工作树,并查看实验室其他成员的版本更新
信息:
$ git pull
$ git log
然后,Lyr 开始建立一个新的项目分支,将其命名为 lyr,并将当前分支切换为
该分支:
$ git branch lyr
$ git checkout lyr
如有不解,请阅读第 2 章。
1
Page 19
16
然后这一天中剩余的大部分时间,Lyr 都在自己所建立的项目分支上工作,譬
如增加了 3 个新的接口及相关测试程序,并对原有接口做了一些修改。一天的工作
完成后,他有必要将这一天的工作与 M2GE 仓库的 master 分支进行合并,然后删
除 lyr 分支:
$ git checkout
$ git merge lyr
$ git branch -d lyr
现在,Lyr 已经将这一天的工作反映到自己机器上的 M2GE master 分支上了,
他最后要做的是将其推送到服务器的 M2GE 仓库,以使项目其他成员能够分享他
的工作。这里要注意,在推送版本更新之前,需要使用 git-pull 命令将这一天中其他
成员对服务器端的 M2GE 的更新拉过来合并到自己的 master 分支,然后才可以将
自己的版本更新推送到服务器上的 M2GE 仓库,具体操作如下:
1. 使用 git-pull 命令更新本地工作树;
2. 若出现版本合并冲突,并且 Git 无法自动合并,需要手工合并,然后将合并结
果提交到本地 master 分支;
3. 使用 git-push 命令将本地 master 分支更新推送到服务器 M2GE 仓库中。
目前,对于我们而言,在基于 Git 的 M2GE 协同开发过程中,引入分支管理
功能,可有效防止因个人操作不当而导致向服务器 M2GE 仓库提交太多的脏数
据。另外,也有效保持了本地项目主分支的干净,避免了频繁 git-clone 服务器端的
M2GE 仓库来恢复本地的项目主分支。
3.4 总结
本章讲述了 Git 项目分支管理的基本知识,并利用这些知识巩固了 M2GE 库
的协同开发机制。至此为止,诸位同学已经接触了 Git 的主要功能,并且已经具备了
向专业级别的开发团队过渡的基本能力。但是,工具毕竟是工具,并不能代替人的地
位,因此希望大家能够学以致用,积极妥善地在日常学习与工作中使用 Git,并且
努力培养团队协同开发意识。

2009年4月9日星期四

09年的第一个季度过去了

09年的第一个季度过去了,进入第二个季度了,这个季度我要干些什么呢?不是很清楚。首先是保证8634的pandora3上市,上市后呢?或则上市前呢?

linux定时任务(转)

linux编写一个文件 autoshutdown

0 23 * * * /sbin/poweroff

每天23点0分自动关机

运行

#crontab autoshutdown



#crontab -l 可以显示计划情况。

ubuntu软件的卸载和安装(转)

方法一:可以用终端安装或卸载软件。
方法二:用系统自带的“新立得软件包管理器”

在终端里

安装软件 apt-get install softname1 softname2 softname3……
卸载软件 apt-get remove softname1 softname2 softname3……
卸载并清除配置 apt-get remove --purge softname1
更新软件信息数据库 apt-get update
进行系统升级 apt-get upgrade
搜索软件包 apt-cache search softname1 softname2 softname3……

安装deb软件包 dpkg -i xxx.deb
删除软件包 dpkg -r xxx.deb
连同配置文件一起删除 dpkg -r --purge xxx.deb
查看软件包信息 dpkg -info xxx.deb
查看文件拷贝详情 dpkg -L xxx.deb
查看系统中已安装软件包信息 dpkg -l
重新配置软件包 dpkg-reconfigure xxx



在“新立得”里

点搜索,输入软件名
在需要安装或卸载的软件上右击-点标记-最后点应用

在thunderbird中使用简体中文

取http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/2.0.0.21/linux-i686/xpi/zh-CN.xpi文件。
在tool/add-on/language中安装下载的文件,然后选择简体中文,然后重启thunderbird。OK!

看书笔记:别拿工作不当回事儿

最近工作状态不太好,又温习了一遍《别拿工作不当回事儿》的目录。呵呵。

目录:
* 没有不好的工作
o 每一种工作都值得我们去做
o 工作中充满机会
o 人生最有意思的就是工作
o 我们为什么需要工作
o 唤醒潜意识中的激情
o 从演好小角色开始
* 你真的会工作吗?
o 从辛勤工作到聪明工作
o 找到工作的诀窍
o 工作需要计划
o 做一份职业规划
o 创造性的工作
o 用新思维突破常规观点
o 在工作中学习
o 质疑自己的工作
o 有效的利用时间
o 养成良好的工作习惯
* 别总想着更大的奶酪
o 珍惜自己的工作
o 今天工作不努力,明天努力找工作
o 跳槽不是好办法
o 好马也吃回头草
o 当心,马无夜草不肥
o 永远不要失去真诚
* 蚂蚁真能绊倒大象
o 魔鬼都在细节上
o 工作中无小事
o 亲兄弟也要明算账
o 随处可见的因小失大
o 困难不可能因逃避而消失
* 多替公司想想
o 不要只做老板吩咐过的事情
o 自动自发的做事
o 挑战“不可能完成的工作”
o 按照最佳的方式行事
o 主动向老板汇报工作
o 每天多做一点点
o 比老板更积极主动的工作
* 担负起绝对的责任
o 我选择,我负责
o 成为老板最需要的员工
o 出了问题要勇于承担
o 让问题到此为止
o 在业绩中提升自己
o 养成负责任的习惯
o 责任造就卓越
o 责任能创造工作的奇迹
* 没有人能独自成功
o 没有完美的个人
o 赢得别人的支持
o 迅速融入团队
o 融入企业文化
o 仅有合作态度是不够的

Linux下的测试工具(转)

在软件测试工具平台方面,商品化的软件测试工具已经很多,如捕获/回放工具、Web测试工具、性能测试工具、测试管理工具、源码测试工具等等,这些都有严格的版权限制且价格较为昂贵,但由于价格和版权的限制无法自由使用,当然,一些软件测试工具开发商对于某些测试工具提供了Beta测试版本以供用户有限次数使用。幸运的是,在开放源码社区中也出现了许多软件测试工具,已得到广泛应用且相当成熟和完善。

为了使广大会员能够高效地对863联盟项目或其他项目进行评测工作,联盟收集、整理了各种类型的自由软件测试工具,这些测试工具基本涵盖了各种测试类型需求,同时尽可能给出测试工具的来源,有兴趣的会员可以直接到习惯站点下载最新版本。联盟也将及时跟踪这些测试工具的最新进展。



============================= 测试设计工具

名称 : DGL(Data
Generation Language)

类型 : 根据上下文无关语法自动生成测试用例

平台 : UNIX

备注 : 源于pangolin.usf.edu (131.247.1.30)的/pub/faculty/maurer/dgl-source



============================ GUI测试驱动程序 =============================

名称 : ReplayXt

类型 : X GUI 测试驱动程序,利用TCL作为脚本语言来驱动基于Xt(如Motif、Athena)

的应用,支持捕获/回放

平台 : 支持X和TCL的Unix平台

备注 : jan@ise.canberra.edu.au>


============================= 测试驱动程序 ================================

名称 : DejaGnu

类型 : 针对交互式或批处理应用的测试框架,利用Tcl/Expect为脚本语言

平台 : 几乎所有的Unix版本

备注 : 源于//www.gnu.org



------------------------------------------------------------------------------

名称 : Greg

类型 : DejaGnu的替代物,强调易学易用,利用Guile为脚本语言

平台 : 几乎所有的Unix版本

备注 : 源于//www.gnu.org



------------------------------------------------------------------------------

名称 : TET(Test
Environment Toolkit)

类型 : 测试件管理程序,支持系统和单元测试用例的开发和执行,目标是实现测试件的跨

平台能力和可重用性

平台 : 许多UNIX版本

备注 : 源于ftp.xopen.co.uk;tetworks-request@xopen.co.uk>


============================== 测试实现工具 ===============================

名称 : Spiff

类型 : 智能化的'diff',可忽略用做分隔符的空格,能够容忍浮点数、注释等等非关键

性差别

平台 : 许多UNIX版本

备注 : 源于comp.sources.unix



----------------------------------------------------------------------------

名称 : dmalloc

类型 : 支持调试的malloc动态库,与libc兼容,可调试内存错误

平台 : 多数UNIX版本

备注 : 源于comp.sources.unix volume 26 (malloc-1.2.0);gray.watson@antaire.com>


-----------------------------------------------------------------------------

名称 : garbage-collect

类型 : 用于代替C的malloc或C++的new的动态库,进行内存回收和内存泄漏检测

平台 : 多数UNIX版本

备注 : 见//reality.sgi.com/boehm/gc.html



-----------------------------------------------------------------------------

名称 : mpatrol

类型 : 用于代替C的malloc或C++的new的动态库,可调试内存运行错误

平台 : 多数UNIX版本

备注 : 见//www.cbmamiga.demon.co.uk/mpatrol/mpatrol.html





======================== 测试评估工具 ==================================

名称 : GCT
(Generic Coverage Tool)

类型 : C程序测试覆盖度量

平台 : 多数UNIX

备注 : 见cs.uiuc.edu:/pub/testing/GCT.README;marick@testing.com>


========================= 静态分析工具 ==============================

名称 : metrics

类型 : 用于计算McCabe & Halsted量度的工具集合

平台 : C, 多数UNIX

备注 : 源于comp.sources.unix Volume 20;bdr@huron.ann-arbor.mi.us>


-----------------------------------------------------------------------------

名称 : csize

类型 : 用于计算C程序行数

平台 : C, 多数UNIX

备注 : 源于



-----------------------------------------------------------------------------

名称 : 其他度量工具

类型 : 包括cyclo、hp_mas、metre等度量工具集合

平台 : 许多UNIX

备注 :



============================== Web测试工具 ==============================

名称 : http_load

类型 : 用于Web服务器性能和容量测试

平台 : 许多Unix

备注 : //www.softwareqatest.com/qatweb1.html



-----------------------------------------------------------------------------

名称 : Link-Check

类型 : 用于Web页面连接错误检测

平台 : 许多UNIX

备注 : //www.softwareqatest.com/qatweb1.html



-----------------------------------------------------------------------------

名称 : OpenSTA

类型 : 用于测试web站点负载能力,可根据测试需求而建立测试条件,跟踪站点,综合

分析测试运行情况

平台 : WinNT4/Win2000

备注 : //opensta.org/



-----------------------------------------------------------------------------

名称 : Tidy

类型 : 用于HTML文本错误检测、格式修正,可自动修复大部分问题,并提醒你那些需

要自己动手解决的问题

平台 : Windows 95/98/NT/2000,许多Unix

备注 : //www.w3.org/People/Raggett/tidy/



-----------------------------------------------------------------------------

名称 : Weblint

类型 : 用于规范Html文本书写格式的工具

平台 : 许多Unix

备注 : //www.cre.canon.co.uk/?neilb/weblint/



-----------------------------------------------------------------------------

名称 : WebMetrics

类型 : 用于评估Web站点可用性的工具集

平台 : Solaris

备注 : //zing.ncsl.nist.gov/





======================= 版本管理和错误跟踪工具 ==========================

名称 : CVS工具集

类型 : 包括CVS、GUI客户端(Unix和Win32)、Web形式、安全cvs

平台 : 几乎所有Unix,Windows 95/98/NT

备注 : //www.cvshome.org/



-----------------------------------------------------------------------------

名称 : Jitterbug

类型 : Samba项目开发的基于Web的错误跟踪工具

平台 : 许多Unix

备注 : ftp://jitterbug.samba.org/pub/jitterbug>


-----------------------------------------------------------------------------

名称 : Debian
Bug Tracking Tool

类型 : Debian开发的基于Email的错误跟踪工具

平台 : 许多Unix

备注 : //www.debian.org/



-----------------------------------------------------------------------------

名称 : Wise(Web-Integrated
Software metrics Environment)

类型 : 基于WWW的软件开发管理和度量工具

平台 : 许多Unix

备注 : 见//research.ivv.nasa.gov/projects/WISE/README.html



=========================== 网络监控工具 ==============================

名称 : Magiclog

类型 : 用于自动生成有关Web访问信息的报告如哪些文件被谁访问等,可根据日期、目

录、成功与失败等相关信息快速地搜索本地文件

平台 : 许多UNIX,Windows

备注 : 见research.ivv.nasa.gov/projects/tools.html



-----------------------------------------------------------------------------

名称 : SMT(Service
Monitoring Tool)

类型 : 是一个守护进程,可执行特定的测试程序以测试各种服务,并在测试程序报告出

错时通知相关人员

平台 : 许多UNIX

备注 : 见//www.doodlabs.com/bugzilla



-----------------------------------------------------------------------------

名称 : Sysmon

类型 : 提供高性能的、精确的网络监控

平台 : UNIX,支持SMTP, IMAP, HTTP, TCP, UDP, NNTP协议以及PING测试

备注 : ftp://puck.nether.net/pub/jared/sysmon-0.90.11.tar.gz>


-----------------------------------------------------------------------------

名称 : ttcp

类型 : 通过向某个网络连接发送一个文件并收集统计信息,这些信息可用于确认厂商所

提供的性能参数属实

平台 : 许多UNIX

备注 : //www.keylabs.com/linux/linux_tools.html



-----------------------------------------------------------------------------

名称 : echoping

类型 : 通过向远程主机发送TCP 'echo'(或其他协议如HTTP)包以测试其性能,适用

于WEB、proxy/cache等服务器类型

平台 : 许多UNIX

备注 : ftp://ftp.internatif.org/pub/unix/echoping/>


-----------------------------------------------------------------------------

名称 : tcpdump

类型 : 用于网络监控和数据接收,通过libpcop界面作为独立的系统用户界面

平台 : 许多UNIX

备注 : ftp://ftp.ee.lbl.gov/tcpdump.tar.Z>


=================================== 其他 =================================

名称 : CPU-burn

类型 : X86系统测试工具,用来测试CPU的整体性能

平台 : 许多UNIX

备注 : //www.keylabs.com/linux/linux_tools.html



-----------------------------------------------------------------------------

名称 : memtest86

类型 : 是基于X86体系的较全面的系统内存测试工具,包括各种复杂的内存算法

平台 : 许多UNIX,Windows9X

备注 : //www.keylabs.com/linux/linux_tools.html



-----------------------------------------------------------------------------

名称 : PPPT(Printer
Port Programming Tool)

类型 : 用于打印机端口的测试工具和可视化编程语言

平台 : 许多UNIX

备注 : //saeeka.freeservers.com/;//www.ultimatecounter.com/



-----------------------------------------------------------------------------

名称 : Raid-Storage

类型 : 用于RAID存储器测试

平台 : 许多UNIX

备注 : //www.keylabs.com/linux/linux_tools.html



-----------------------------------------------------------------------------

名称 : Scsi-Adapter

类型 : 用于SCSI适配器测试

平台 : 许多UNIX

备注 : //www.keylabs.com/linux/linux_tools.html



-----------------------------------------------------------------------------

名称 : Vedio-Adapter

类型 : 用于Vedio适配器测试

平台 : 许多UNIX

备注 : //www.keylabs.com/linux/linux_tools.html



-----------------------------------------------------------------------------

名称 : Fuzz-Test

类型 : 用于检测某些软件中的安全性错误以提高Linux的安全性

平台 : Linux

备注 : //home.pacbell.net/s-max/scott/bulletproo











Linux下的内存泄露检测工具

Linux下的内存泄露检测工具

01) MallocDebug
02) Valgrind
03) Kcachegrind
04) ElectricFence.
05) dmalloc
06) ccmalloc
07) LeakTracer
08) memprof
09) BoundsChecker.[prop]
10) mprof.
11) Insure.[prop]
12) dbx. (for Sparc)
13) YAMD
14) Njamd
15) Mpatrol







内存泄漏检测工具2007年08月08日

1. ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。

2. Dmalloc-Debug Malloc Library.

3. Electric Fence-Linux分发版中由Bruce Perens编写的malloc()调试库。

4. Leaky-Linux下检测内存泄漏的程序。

5. LeakTracer-Linux、Solaris和HP-UX下跟踪和分析C++程序中的内存泄漏。

6. MEMWATCH-由Johan Lindh编写,是一个开放源代码C语言内存错误检测工具,主要是通过gcc的precessor来进行。

7. Valgrind-Debugging and profiling Linux programs, aiming at programs written in C and C++.

8. KCachegrind-A visualization tool for the profiling data generated by Cachegrind and Calltree.

9. Leak Monitor-一个Firefox扩展,能找出跟Firefox相关的泄漏类型。

10. IE Leak Detector (Drip/IE Sieve)-Drip和IE Sieve leak detectors帮助网页开发员提升动态网页性能通过报告可避免的因为IE局限的内存泄漏。

11. Windows Leaks Detector-探测任何Win32应用程序中的任何资源泄漏(内存,句柄等),基于Win API调用钩子。

12. SAP Memory Analyzer-是一款开源的JAVA内存分析软件,可用于辅助查找JAVA程序的内存泄漏,能容易找到大块内存并验证谁在一直占用它,它是基于Eclipse RCP(Rich Client Platform),可以下载RCP的独立版本或者Eclipse的插件。

13. DTrace-即动态跟踪Dynamic Tracing,是一款开源软件,能在Unix类似平台运行,用户能够动态检测操作系统内核和用户进程,以更精确地掌握系统的资源使用状况,提高系统性能,减少支持成本,并进行有效的调节。

14. IBM Rational PurifyPlus-帮助开发人员查明C/C++、托管.NET、Java和VB6代码中的性能和可靠性错误。PurifyPlus 将内存错误和泄漏检测、应用程序性能描述、代码覆盖分析等功能组合在一个单一、完整的工具包中。

15. Parasoft Insure++-针对C/C++应用的运行时错误自动检测工具,它能够自动监测C/C++程序,发现其中存在着的内存破坏、内存泄漏、指针错误和I/O等错误。并通过使用一系列独特的技术(SCI技术和变异测试等),彻底的检查和测试我们的代码,精确定位错误的准确位置并给出详细的诊断信息。能作为Microsoft Visual C++的一个插件运行。

16. Compuware DevPartner for Visual C++ BoundsChecker Suite-为C++开发者设计的运行错误检测和调试工具软件。作为Microsoft Visual Studio和C++ 6.0的一个插件运行。

17. Electric Software GlowCode-包括内存泄漏检查,code profiler,函数调用跟踪等功能。给C++和.Net开发者提供完整的错误诊断,和运行时性能分析工具包。

18. Compuware DevPartner Java Edition-包含Java内存检测,代码覆盖率测试,代码性能测试,线程死锁,分布式应用等几大功能模块。

19. Quest JProbe-分析Java的内存泄漏。

20. ej-technologies JProfiler-一个全功能的Java剖析工具,专用于分析J2SE和J2EE应用程序。它把CPU、执行绪和内存的剖析组合在一个强大的应用中。JProfiler可提供许多IDE整合和应用服务器整合用途。JProfiler直觉式的GUI让你可以找到效能瓶颈、抓出内存泄漏、并解决执行绪的问题。4.3.2注册码:A-G666#76114F-1olm9mv1i5uuly#0126

21. BEA JRockit-用来诊断Java内存泄漏并指出根本原因,专门针对Intel平台并得到优化,能在Intel硬件上获得最高的性能。

22. SciTech Software AB .NET Memory Profiler-找到内存泄漏并优化内存使用针对C#,VB.Net,或其它.Net程序。

23. YourKit .NET & Java Profiler-业界领先的Java和.NET程序性能分析工具。

24. AutomatedQA AQTime-AutomatedQA的获奖产品performance profiling和memory debugging工具集的下一代替换产品,支持Microsoft, Borland, Intel, Compaq 和 GNU编译器。可以为.NET和Windows程序生成全面细致的报告,从而帮助您轻松隔离并排除代码中含有的性能问题和内存/资源泄露问题。支持.Net 1.0,1.1,2.0,3.0和Windows 32/64位应用程序。

25. JavaScript Memory Leak Detector-微软全球产品开发欧洲团队(Global Product Development- Europe team, GPDE) 发布的一款调试工具,用来探测JavaScript代码中的内存泄漏,运行为IE系列的一个插件。

gOS中快速启动应用程序的方法

不通过菜单选择,在命令行中输入命令,如
$ skype&
$ qq&
$ thunderbird&
$ firefox&
$ pidgin&
$ openoffice.org3&

这样就可以启动上述程序了,注意,可以用Tab键哦。

android在x86上编译(转)

1 准备工作
1.1 交叉编译的工具链:
地址:http://www.codesourcery.com/gnu_toolchains/arm/download.html
文件:ARM EABI相关工具
arm-2008q3-41-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

1.2 内核代码   
地址:http://code.google.com/p/android/downloads/list
文件:linux-2.6.25-android-1.0_r1.tar.gz
   
1.3 SDK
1.3.1 eclipse 3.4.1
地址:http://www.eclipse.org/downloads
文件:eclipse-jee-ganymede-SR1-linux-gtk.tar.gz
ADT-0.8.0.zip

1.3.2 Android SDK
地址:http://code.google.com
文件:android-sdk-linux_x86-1.0_r1.zip

2 安装arm工具链
tar jxvf arm-2008q3-41-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C /usr/local/
export PATH=$PATH:/usr/local/arm-2008q3/bin

3 安装SDK
3.1 安装eclipse
tar zxvf eclipse-jee-ganymede-SR1-linux-gtk.tar.gz -C /opt

3.2安装ADT
(1) /opt/eclipse/eclipse &
(2) 等待启动完成后,选择 Help > Software Updates....
(3) Available Software > Add Site... > Archive...,点击install…
(4) 选择 "Android Developer Tools" 及 "Android Editors"
(5) 完毕.

3.3 SDK
unzip android-sdk-linjavascript:void(0)ux_x86-1.0_r1.zip -d /usr/local/


export PATH=$PATH:/usr/local/android-sdk-linux_x86-1.0_r1/tools


4 安装android kernel source
(1) Tar 解压 linux-2.6.25-android-1.0_r1.tar.gz 到任意路径
cd kernel.git/
$emulator &
等待模拟器启动起来后
$adb pull /proc/config.gz .
$gunzip config.gz
$mv config .config
vi Makefile
修改CROSS_COMPILE变量为:
CROSS_COMPILE=arm-none-eabi-
这个就是刚刚的下载和解压的工具链的前缀了,旨在告诉make,在编译的时候要使用我们的工具链。

在Makefile中注释掉LDFLAGS_BUILD_ID这个变量:
例如将如下定义:
LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
$(call ld-option, -Wl$(comma)--build-id,))
修改为:
LDFLAGS_BUILD_ID=
#LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
# $(call ld-option, -Wl$(comma)--build-id,))


5 编译及运行
make
emulator -kernel arch/arm/boot/zImage
经过等待后,就可以显示出运行界面了。

在gOS(Ubuntu)下安装filezilla

sudo apt-get install filezilla

ok!

在gOS(Ubuntu)下安装rar

sudo apt-get install rar
搞定

2009年4月8日星期三

家里的台式机也改成gOS了

家里是台式机是2004年的老机器,1G内存,160G硬盘(后来加了块160G硬盘),2.8G P4 cpu,17寸液晶显示器,当时也是顶级配置。花了1w元。
现在pc便宜了,今天听说公司新配的台式机,3000元,比我的配置好多了。不过我用了近5年了,但是这台pc没有发挥出多少大的作用,基本上是作为娱乐用了。

在gOS上使用openoffice3,不能输入中文

用下面的命令就可以了:
sudo ln -snf /usr/lib/gcc/i486-linux-gnu/4.3.2/libstdc++.so /opt/openoffice.org/ure/lib/libstdc++.so.6

sudo ln -snf /usr/lib/gcc/i486-linux-gnu/4.3.2/libgcc_s.so /opt/openoffice.org/ure/lib/libgcc_s.so.1

另外,按照下列方法修改,实现瞬间启动:
1. 打开 OpenOffice Writer,在菜单中选择:工具->选项->内存
2. 修改:撤销命令->步数:20
3. 修改:图形缓冲区->用于openoffice:128m,每个对象的内存:20m
4. 取消 Java 选项页中的‘使用 Java 运行环境’

2009年4月7日星期二

LTP使用笔记

1。从http://jaist.dl.sourceforge.net/sourceforge/ltp/ltp-full-20090331.tgz下载
2。解压缩
3。运行./ltpmenu,选择编译
4. 可能报告找不到lex,然后用sudo apt-get install lex;sudo apt-get install bison
5.待补充...

2009年4月3日星期五

还是不能完全离开windows

发现用crossover+office/IE,有时候非常慢。而且不熟悉openoffice的使用,所以还的用virtualbox+win2k+office2003

2009年4月1日星期三

太让人惊喜了,ubuntu上skype支持我的摄像头

我的usb摄像头ANC,居然不用安装任何驱动,google一下,设置一下就可以用了,这样就可以在ubuntu下视频聊天了。

如果语音不行,试一试ubuntu下的录音机,要设置一下录入设备就好了。

在ubuntu下安装虚拟机virtualbox

安装方法:
1。sudo apt-get install virtualbox
2。sudo apt-get install virtualbox-ose-modules-generic
3。sudo chmod 666 /dev/vboxdrv
4。sudo /etc/init.d/vboxdrv start
4。无法使用键盘。##打开vbox,点击 文件 --首选项 --输入 把“自动捕获键盘”前面的对勾去掉试试。如果无效,也可以安装scim-bridge-client-qt。我用的输入法是scim-bridge, locale 是en_US.UTF-8。sudo apt-get install
scim-bridge-client-qt然后im-switch -s scim-bridge就可以了。
5。做过上面的步骤后重启一下
6。安装VBoxGuestAdditions_2.1.4.iso。
路径是:http://dlc-cdn-rd.sun.com/c1/virtualbox/2.1.4/VBoxGuestAdditions_2.1.4.iso
7。OK了。安装操作系统就可以了。

使用crossover安装IE6

在gOS上,使用crossover自带的IE6,耐心等待下载完成,安装成功,可以用IE6了。

在gOS(Ubuntu)下换windows的字体

从xp下拷贝了几个字体文件,然后放到ubuntu下,切换字体,用宋体,感觉整个界面好看多了。

具体方法如下:
1、将Windows中的字体文件复制到一个文件夹里面。
比如我就建一个xpfonts文件夹,Windows字体文件都复制到这个文件夹里面。Windows字体存放在Windows操作系统的安装目录windows/system/fonts里,如果不晓得哪些名字对应哪些字体,那就把为.ttf后缀的文件都复制过来吧,这样就把Windows里的所有字体文件复制了。
我拷贝了simsun.ttc,tahoma.ttf,tahomabd.ttf,verdana.ttf,
verdanab.ttf,verdanai.ttf,verdanaz.ttf这几个文件。

2、将xpfonts文件夹粘贴到Ubuntu系统的/usr/share/fonts/文件夹下。
注意:你直接打开/usr /share/fonts/目录,是无法作粘贴操作的,因为Ubuntu不像Windows可以对任意文件或文件夹作读写、创建、删除、复制等操作,对 Ubuntu下的字体文件夹操作必须有系统管理权限。必须用下面的命令打开/usr/share/fonts/文件夹:

sudo gnome-open /usr/share/fonts/

终端(从"应用程序"-"附件"中就可以打开"终端")中输入以上命令后会自动打开/usr/share/fonts/文件夹,这个时候再将刚才的xpfonts文件夹粘贴进去。

3、重新建立字体缓存:

sudo fc-cache -fv

2009年3月27日星期五

在gOS(Ubuntu)下自动挂载u盘,mount ntfs分区

1。解决ubuntu不能自动挂载u盘
解决方法:
运行命令: sudo rmmod ehci_hcd
拔掉U盘,再插入,就自动挂载了。

2。自动mount ntfs分区
在/etc/fstab中加上下面的这行:
/dev/sda5 /media/work ntfs rw,nosuid,nodev,noatime,allow_other 0 0

注意:/dev/sda5要填什么,要根据自己的文件系统情况。

2009年3月26日星期四

在gOS(Ubuntu)下升级openoffice3.0(转),该方法可用。

安装OpneOffice3.0最重要的问题是卸载OpenOffice2.4,我们需要使用fake这个包!
1。sudo apt-get install fake[/b][/color]
2。然后在新立得中搜索openoffice全部删除!

下面介绍安装步骤:应用程序──附近──终端
1. wget ftp://ftp5.gwdg.de/pub/openoffice/localized/zh-cn/3.0.0/OOo_3.0.0_LinuxIntel_install_zh-cn_deb.tar.gz
2. tar -zxvf OOo_3.0.0_LinuxIntel_install_zh-cn_deb.tar.gz
3. cd /home/用户名/OOO300_m9_native_packed-1_zh-CN.9358/DEBS/
4. sudo dpkg -i *.deb
5. 双击安装/OOO300_m9_native_packed-1_zh-CN.9358/DEBS/desktop-integration/下的deb文件,就ok了!

放弃Evolution,采用Thunderbird

Evolution感觉不是很好用,用了两天,发现几个问题:
1。全部回复中居然只能有一个email地址
2。没有自动完成email地址的功能
从安装/卸载中安装Thunderbird,可以用了,只是不知道怎么把Evolution中的日历,任务导到Thunderbird中(需要在Thunderbird中安装插件),所以手工添加了一些。
另外,可以换皮肤,换了个Crossover的皮肤,感觉挺好看的,就用它。

2009年3月25日星期三

在gOS(Ubuntu)下安装网络打印机

用linux下“系统设置”中选“打印机”,然后查找,找到网络打印机,然后自动安装网络打印机。搞定。很容易。呵呵。
以前想的太复杂了,没有充分相信ubuntu的能力

2009年3月24日星期二

在gOS(Ubuntu)下安装Evolution

使用系统的安装卸载攻击,查找Evolution,然后安装上。
我本来想把windows outlook上的通讯录,便签等通过cvs文件导入到Evolution上来,但是
中文都是乱码,找了一圈也没有办法,最后手工拷贝的方式作了这样的工作,幸好我的东西还不算多,一个小时不到就作完了。 -:(

在gOS(Ubuntu)下安装pdf阅读器

使用gOS自带的pdf阅读器,看不了中文,所以用下面命令
sudo apt-get install xpdf-chinese-simplified xpdf-chinese-traditional poppler-data
然后就可以用了。

也可以用acrobat reader for linux,这个是最正宗的。

2009年3月23日星期一

在gOS(Ubuntu)下安装xfe

gOS自带的文件浏览工具不好用,同事建议用xfe。用sudo apt-get install xfe就可以安装上。
安装好后,看不到中文的东西,需要在 "编辑/选项/字体"中选择支持中文的字体,然后重启xfe。
注:因为看不到中文,所以需要猜一下。呵呵。

在gOS(Ubuntu)下安装ipmsg兼容的软件iptux

去下载iptux_0.4.5_i386.deb ,然后安装,搞定。可以用。
不用设置多个网卡,缺省就支持。

2009年3月21日星期六

在gOS(Ubuntu)下安装QQ

在gOS(Ubuntu)下安装pidgin,或者Eva,都不能正常使用qq,到腾讯网站上下载qq的linux安装包linuxqq_v1.0.2-beta1_i386.deb,安装上后(可以用右键安装),就可以用qq了。

在gOS(Ubuntu)下安装mplayer和mldonkey

用apt-get install老是报告一些依赖库,后来用"安装/卸载",search mplayer或mldonkey,
找到,然后安装,搞定。

get the windows codec:sudo apt-get install w32codecs

gOS(ubuntu)下使用freemind

1.安装Freemind ---下面的安装过程有问题,等待后续修正。
1.1 安装 libcommons-lang-java: sudo apt-get install libcommons-lang-java
1.2 安装 librelaxng-datatype-java: sudo apt-get install librelaxng-datatype-java
1.3 安装 libforms-java
(wget http://mikesubuntu.googlepages.com/libforms-java_1.0.5-3_all.deb)。
sudo dpkg -i libforms-java_1.0.5-3_all.deb
1.4 sudo apt-get install libjaxp1.2-java

以上四步的安装主要是为了解决 FreeMind 的依赖问题。现在我们可以开始安装 FreeMind 0.8.0 了(去sourceforge找freemind)。
sudo dpkg -i freemind_0.8.0-1_all.deb

2.解决 Freemind 中文字体乱码
由于 Freemind 要应用到 Java 运行时环境,显示中文字体乱码是由于 JRE 的字体造成的,所以更改 JRE 的字体即可。
找一个可用于中文显示的字体。比如: wqy 字体,我这里采用增黑。
确认字体已经安装于系统。我的系统增黑字体安装于:
/usr/share/fonts/truetype/wqy/wqy-zenhei.ttf
找到 JRE 的字体目录,位于:
/usr/lib/jvm/java-6-sun/jre/lib/fonts/
创建字体目录:
cd /usr/lib/jvm/java-6-sun/jre/lib/fonts/
sudo mkdir fallback
sudo ln -s /usr/share/fonts/truetype/wqy/wqy-zenhei.ttf wqy-zenhei.ttf
sudo mkfontdir
sudo mkfontscale
sudo cp wqy-zenhei.ttf fallback

3.OK了,重启 Freemind 即可。

2009年3月19日星期四

想换个工作性质,不带团队和项目了

在闪联做了2年多的管理者,带了2年多的团队,感觉也差不多了,没有大的提升和进步,也没有看到什么发展机会,并且现在搞事业部了,现在事业部相对比较短视,对新东西兴趣不大。而且团队大了,压力也大,很多时间在和大家聊天,安排工作,了解进度中度过。而且一直做的这方面的东西,感觉也差不多了。不太想继续做特别具体,产品化的项目。

前两天和领导谈谈,想做更多的事情,对自己有个提升。没想到领导让我就彻底不带团队了。自己搞点新的东西的研发。还是有点放不下这个团队,感觉有点像是被抛弃了。 -:(

新的东西:
嵌入式浏览器
第三方工具支持

mips下qt4.5下的webkit(browser)

在用mips编译器编译qt4.5下的webkit,报告出现找不到“lroundf”,“lround”等几个函数(undefined reference lroundf...),google了一下,没有人能回答,自己看代码吧。

在src/3rdparty/webkit/JavaScriptCore/wtf/MathExtras.h中,找到这几个函数,把
#if COMPILER(MSVC) || COMPILER(RVCT)
...
#endif
注释掉#if 和 #endif 这两句话,编译通过。-:)

下面用nfs开始跑。
一运行./browser -qws,报告找不到libQtWebKit.so,简单,修改LD_LIBRARY_PATH,把库文件的路径加上。再跑,找不到fonts,拷贝到它提示的目录下,再跑,段错误 -:(

还得在研究研究。

2009年3月18日星期三

qt4.5下的web browser

领导对嵌入式平台下的浏览器很重视,如果浏览器可以跑起来,并且支持javascript,flash,那么ui就非常简单了(可以让ui设计人员做ui界面,而不需要编程了)。在qt4.5下看到有个webkit,所以下载了qt4.5-embeded,在x86下编译通过后,运行demos目录下的browser,可以看到浏览器出现了,但是不能用鼠标和键盘,应该是这两个设备没有正确设置,但是我主要是想看看webkit是否可以正常浏览网页,所以又下载了qt4.5-x11 版本,把浏览器功能跑起来看看。

如果上述工作正常,那么就在sigma8634上跑qt4.5-embeded,这可能需要花点功夫,等跑起来后,在写一个新blog。

2009年3月17日星期二

推动公司使用egroupware,希望大家的工作更正规,效果更高。

1.日历
可以让大家把每天做的工作填写到日历上,作为工作记录和备忘。现在还是有一些人,会用word或者notepad记录每天的工作,以后就可以用日历了。
2.备忘录
3.项目管理
可以把项目的需求放进去,这样就不会忘记什么时候提的。我使用过这个功能,虽然不是很强大,但是也可以先用起来,最起码在记录需求方面比word和excel更实用。
4.bug追踪
这个功能和td差不多,但是没有td强,我们可以先不用这个功能,继续用td就是了。
5.wiki
暂时用不上
6.Sitemagr
用不上
7.知识管理
8.新闻
9.文件管理
这个很有用,最起码现在项目管理(版本发布文档)的那些文件可以尽快放进去
10.通讯录
可以把公司的联系人,合作公司的联系人放进去。这样就可以让大家知道的部分信息共享了。
11.线上消息
chatty 聊天室
如果不在一个局域网,可以用这几个东西聊天交流了。
12.workflow 工作流程
目前没有搭建起来,暂时应该用不上。

2009年3月11日星期三

从《越狱》和《亮剑》中学习项目管理(转)


2008-11-07 11:58:00
说实话,PMO(Project Management Office, 项目管理办公室)的工作非常琐碎,写出来很容易是流水账,难免令大家不忍蹙读。思前想后,觉得还是写点在项目管理的个人拙见来得实在。

  如果说PM(Project Management, 项目经理)是个管家,我感觉PMO就是管家的保姆,只有尽量协助PM去考虑到他忽略的项目问题,才能辅助他更好的完成项目管理的工作内容。谈到项目管理,个人感觉用两部连续剧来举例子可能更容易理解。

  《越狱》和《亮剑》相信不少人都看过,在欣赏这两部作品的过程中我一直在思考,其中的很多情节都可以用IT项目管理的思路来理解,别有一番风味。

   先说说《越狱》。名校毕业、建筑工程学硕士、知名建筑企业的结构工程师Michael Scofield,入狱搭救即将被执行死刑的哥哥Lincoln Burrows。入狱前,他花了大量的精力,精心地做了前期准备工作,之后按照他所计划的步骤,故意持枪抢劫银行,从而得以进入Lincoln Burrows所在的福克斯河畔监狱,并在那里组建了越狱团队。在越狱的整个过程中,我们可以看到Michael Scofield近乎完美的计划,对“项目”过程的执行力,对“项目”干系人的控制力,以及对于“项目”风险的把握和及时变更的能力等。

   从各方面来说,Michael Scofield都可以看做一个经验丰富的PM,他的学识、冷静、自信和坚定,以及对于越狱这个目标为“项目”终验里程碑而制定的“项目”计划,使得他获 得了整个“项目”干系人的信赖。而他也利用这样的信任和依赖,巧妙地周旋于各个干系人之间。最终以他出色的资源协调能力,成功地完成了整个计划的里程碑。 整个过程中我们不难联系到实际项目管理中的几个关键要素:
  (1)前期充分的调研和详细任务分解的项目计划。
  (2)过程中的资源管理,合理的资源调配以及资源协调。
  (3)项目进展过程中的风险控制,备选方案的制定,计划变更的控制。
  (4)有效的沟通,内部外部的各个项目干系人的有效沟通。
  (5)时间控制,严格按照项目即定的各个里程碑时间点为项目阶段性的目标。
  通过出色的能力,以及对“项目”进展各个关键点的把握,作为“项目”管理者的Michael Scofield,出色的完成终验了这个项目。

   再来说说《亮剑》这部片子。本片最想体现的当然是亮剑精神,但从整剧的进展来看,也不乏项目管理思想的存在。无论从一个小队到一个团、一个师、一个军, 就如公司从简单的Mocha OA日常办公项目到Mocha OA与Mocha MailT邮件的产品整合,到Mocha OA、Mocha BPM、Portal的整合,到Mocha BPM、Mocha BSM、Portal、其他厂商系统、以及CDSSO的大型系统应用整合一样,随着项目以及业务的扩展,项目团队的不断扩大,多个项目组间的管理以及各个 关键点里程碑对各个项目的制约,都可以看出来。
  再举例说说项目管理的细节。独立团从突破围剿后的化整为零,以小单位进行战斗,这一思路和项目 管理中的任务分解又不谋而合,项目工作进行有效的分解到各个资源上,便于对整个项目的进度控制,以及人员工作完成情况的考评,以便将项目中的风险降低,便 于管理和控制。再如独立团化整为零后李云龙的角色也类似于一个SPM,对整体项目中以营、连、排为单位的各个子项目进行管理,这时的营长、连长、排长实际 上就是各个子项目的PM,他们定期的汇报使得SPM可以对项目进展的情况有了更直观的了解,这种时候SPM适当的权利下放,又给了各个子项目的PM充分的 进度调整空间,使得各子项目达到了提前完成任务的结果。再如《亮剑》中部队人员的比武和扔手榴弹进篮子的练习,帮助李云龙更好的了解每名人员的个人能力以 及个性特点,实际上也是PM在进行项目管理中对各个人员进行能力的考评后,便于做到人尽其才的效果。

  实际上看电视剧的时候大家留心去思考一下,不难发现有很多书本上理论知识实际运用的例子,无论是成功还失败,成功的可以借鉴,失败的也可以吸取经验教训,同样是对个人的知识面以及个人素养的一种提高。

  有机会的话,下次和大家分享一下《闯关东》中的管理经验吧!

2009年3月8日星期日

看书笔记:别拿工作不当回事儿

别拿工作不当回事儿

  • 没有不好的工作
    • 每一种工作都值得我们去做
    • 工作中充满机会
    • 人生最有意思的就是工作
    • 我们为什么需要工作
    • 唤醒潜意识中的激情
    • 从演好小角色开始
  • 你真的会工作吗?
    • 从辛勤工作到聪明工作
    • 找到工作的诀窍
    • 工作需要计划
    • 做一份职业规划
    • 创造性的工作
    • 用新思维突破常规观点
    • 在工作中学习
    • 质疑自己的工作
    • 有效的利用时间
    • 养成良好的工作习惯
  • 别总想着更大的奶酪
    • 珍惜自己的工作
    • 今天工作不努力,明天努力找工作
    • 跳槽不是好办法
    • 好马也吃回头草
    • 当心,马无夜草不肥
    • 永远不要失去真诚
  • 蚂蚁真能绊倒大象
    • 魔鬼都在细节上
    • 工作中无小事
    • 亲兄弟也要明算账
    • 随处可见的因小失大
    • 困难不可能因逃避而消失
  • 多替公司想想
    • 不要只做老板吩咐过的事情
    • 自动自发的做事
    • 挑战“不可能完成的工作”
    • 按照最佳的方式行事
    • 主动向老板汇报工作
    • 每天多做一点点
    • 比老板更积极主动的工作
  • 担负起绝对的责任
    • 我选择,我负责
    • 成为老板最需要的员工
    • 出了问题要勇于承担
    • 让问题到此为止
    • 在业绩中提升自己
    • 养成负责任的习惯
    • 责任造就卓越
    • 责任能创造工作的奇迹
  • 没有人能独自成功
    • 没有完美的个人
    • 赢得别人的支持
    • 迅速融入团队
    • 融入企业文化
    • 仅有合作态度是不够的

建议大家用脑图工具freemind

freemind是windows下的脑图工具,用java开发的,在华军软件园中可以下载到。
我是别人推进用这个软件的,感觉很好用,特别是开始想一个事情的时候,用他能够比较清晰的把思路理清楚。

在ubuntu下把egroupware搭建起来了

都是从互联网学习来的,感谢google -:)

下面是具体步骤:
1.确保系统最新
sudo apt-get update
sudo apt-get dist-upgrade

2.安装 MySQL 数据库
如果已经安装了的可以省略这一步:
sudo apt-get install mysql-server

然后设置根用户密码并创建 egroupware 数据库,并将该数据库的权限设置给 egroupware 用户。
mysql -u root
>GRANT ALL ON *.* TO root@localhost IDENTIFIED BY 'root321';
>CREATE DATABASE egroupware;
>GRANT ALL ON egroupware.* TO egroupware@localhost IDENTIFIED BY 'egroupware';
>exit


3. 安装Apache2
sudo apt-get install apache2
编辑/etc/apache2/apache2.conf(新安装的系统可能在/etc/apache2/conf.d/charset)文件,在改动之前,请先将该配置文件做个备份。以便在出错的时候可以恢复。将
AddDefaultCharset ISO-8859-1
改为
AddDefaultCharset GB2312

当然如果你网站的编码用的是UTF-8的话,也可以改为
AddDefaultCharset UTF-8

这样的话,我们就不会每次打开网页都是乱码了!

* 增加安全模块,以保障Apache服务的正常运行,现在我们安装mod-security。(可选)
...

4.安装php:
sudo apt-get install libapache2-mod-php5
sudo apt-get install php5
特别提示:如果想支持图形就加php5-gd,如果想支持Mysql就加php5-mysql,这里之所以要单独列出libapache2-mod- php5,主要是由于php5的依赖关系没有做好,有可能会安装上libapache-mod-php4的包,所以为了避免不必要的麻烦,干脆还是单独指定比较好。如果有朋友还是会出现问题,请在新立得中查找libapache-mod-php4包,如果安装的话请将其删除。

5.在安装egroupware的时候,可能会提示缺少ldap等,这个我没有安装,可能egroupware的邮件功能不能用。如果要用这个功能,请google

6.安装 eGroupware
安装 eGroupware,将包括安装它的主程序和模块,eGroupware 包括有大量的模块,安装 egroupware 包其实就会将最常用的模块安装起来,其他模块可以等需要时再安装。

sudo apt-get install egroupware

这个命令将会安装以下程序包:
* egroupware-addressbook(地址本)
* egroupware-bookmarks(书签)
* egroupware-calendar(日历)
* egroupware-core(核心程序)
* egroupware-developer-tools(开发工具)
* egroupware-emailadmin(邮件管理)
* egroupware-etemplate(模板)
* egroupware-felamimail(邮件)
* egroupware-filemanager(文件管理)
* egroupware-infolog(通信本)
* egroupware-manual(手册)
* egroupware-mydms(文档管理)
* egroupware-news-admin(新闻管理)
* egroupware-phpbrain(知识库)
* egroupware-phpsysinfo(php系统信息)
* egroupware-polls(投票)
* egroupware-projectmanager(项目管理)
* egroupware-registration(注册)
* egroupware-resources(资源)
* egroupware-sambaadmin(Samba管理)
* egroupware-sitemgr(站点管理)
* egroupware-timesheet(时间表)
* egroupware-wiki(维基)
* egroupware-workflow(工作流)

安装时将会出现提示框,大意是 eGroupWare 核心包配置成只允许你以管理员用户名和密码登录,如果要完成初始设置,要在浏览器上输入 http://你的主机名/egroupware/setup/ ,这样你就可以通过它来配置、初始化数据库并注册已安装的 eGroupware 应用程序。 点击OK继续,你会看到要求你选择 Web 服务器:Apache2、Apache、Apache SSL 和 Apache Perl。由于我们先前安装的是 Apache2,所以就选择第一项并点OK继续。接下来,系统会要求你输入 Header 管理员用户名(Header 管理员是用于配置全局设置和域的),缺省用 admin,然后输入并确认密码。然后弹出询问你是否安装不支持 MailDir 的 Libc-client 包,点Yes后完成 eGroupware 预配置过程。

7.差不多上述步骤完成后,egroupware就可以安装成功了,下面是使用,以后有机会会把使用方法写到blog来。

注:领导想搭建一个需求管理系统,建议看看egroupware,感觉它功能很多,但每个功能做的都不是很细,而且中文化做的一般。可能随便用用还行,如果要作为正式的项目管理或需求管理系统,还得做比较多的改进。

新添加了一个Call Me — 博客视频聊天插件

http://www.flextheworld.com/2009/03/call-me-update-communicat.html
就在我的blog中,大家可以试用。

2009年3月6日星期五

到今天为止,8634平台差不多ok了

到今天为止,8634平台差不多ok了。基本上所有的应用和脚本都已经在34平台上跑通,下面的工作是按照bug系统修复bug了。

2009年2月18日星期三

Pandora : sigma 8634全输出

输入命令:
$ set_outports -digital -f HDMI_1080i59 -dvi_hdmi siI9030 -hdmi2c 2 -asp 16 9 -cs rgb_0_255 -component -f 1080i59 -asp 16 9 -analog
这样,只需要连好输出接口,系统就会自动识别,不需要设置输出接口

2009年2月12日星期四

开始向8634平台迁移了

在闪联做了2年的sigmadesigns 8624平台的开发后,终于大家都认识到这个平台的局限性,并且都认为要切换到新的更强的平台了。本来是想直接移植到8654平台的,但是发现播放方面有一些问题,而且市场上没有8654的产品,所以短时间内想迁移到8634平台。

8634平台和24的区别主要是:
1. linux和uclinux操作系统
2. 24平台最大可以用128M内存,而34可以到512M
3. 34支持全输出(不需要设置输出接口,vga没有试过)
4.其他的包括hdmi等,对软件开发没有太大差别

2009年1月22日星期四

年度总结

昨天晚上开了公司的年度总结,今年我带领的开发团队颗粒无收。没有获得优先个人,也没有优秀团队,连抽奖都没有得到任何东西。

去年是做的最辛苦的一年,封闭开发了好几个月,而且我还在青岛出差了一个月,但是在公司层面上,我们没有得到什么承认。连项目奖金到现在还没有发。 -:( 我现在都不知道怎么向手底下干活的人怎么交代。

在闪联已经有两年多了,还是有一些收获,小公司还是挺锻炼人的,了解了不少东西,但是就本职工作来说,没有太大的发展。还是管理那么几个人,职务和薪水都没有什么变化。

我一直想把现在做的pandora做大做好,不仅仅是项目团队变大,更重要的是想把这个项目向apple做的靠拢,功能和性能要尽量和apple的接近。现在得考虑怎么在现有条件下尽量达到这个目标。

yamon的使用

1.yamon的使用
设置ip地址 setxenv y.ipaddr "10.1.40.133"
设置子网掩码 setxenv y.subnetmask “255.255.255.0”
设置网关 setxenv y.gateway “192.168.1.1”
.通过tftp下载
load -b tftp://10.1.40.155/***** 0xb0100000
.烧写flash
pflash write 0x80000 0xb0100000
dump 0x80000 romfs
xrpc 0xa4080090

2009年1月8日星期四

2009年了,开始财年规划

今天和一个同事谈话,要把他末位淘汰(就是裁员),谈的很不愉快,这个事情干的也不是那么回事。

以后要注意,裁员尽量在年末进行,不要到年前的这几天,马上就春节了,很敏感的时候。

2009年1月4日星期日

09年的计划

1. 买一套大点的房子
2.为老婆找到一个可以长时间的工作(职业)
3.去云南香格里拉转一圈(跑一趟远途的)

2009年的第一天

今天是2009/1/4,是上班的第一天。休息了长达8天之久的假期后,又回到了上班的状态。

今天是周日,也是一周的开始,要制定本周的计划。由于现在pandora2基本结束,pandora3还没有正式开始,所以这段时间不是那么紧张。但是不能闲下来,所以现在把以后肯定要做的工作先做下去。