KFlickr–Linux下的Flickr图片上传工具

KFlickr是一个Linux下的图片上传工具,支持拖拽,很方便。作者根据Flickr公布的API编写的小程序。

和Windows下的一样,需要验证用户,并且支持多用户。

KFlickr支持图片标题,描述,tag的添加和修改,上传前修改图片大小,支持代理等等。

除了编译源代码安装,KFlickr还为一下系统提供了相应的程序包:

SlackWave, Ubuntu, Debian, Gentoo, openSUSE, Archlinux.

源代码方式安装后会自动在Internet网-数据交换目录中有个小图标(openSUSE 10.3)。

SUSELinux1000+命令详解

主要讲解的是命令行下使用suse linux,每个命令都有详细的讲解,相当于suse linux大百科了,对于Linux新手帮助也非常大。超级推荐。

Download

上面的地址错了,正确的是这个:http://www.box.net/shared/tzu9lju0o0 5月2号才发现,抱歉!

全球85%的超级计算机运行Linux系统

Top500.org最新数据统计到2007年11月份,在全球500超强计算机中,有85%的超级计算机(426台)使用Linux系统。

Operating System share for 11_2007 _ TOP500 Supercomputing Sites

Top500每6个月统计一次数据,相比半年前的统计,Linux由77.8%上升到了85%,Windows系统取得了惊人的成绩,由原先的2台增加到6台,增长率达到200%。

除此之外还可以查询这些计算机都分布在哪些国家,CPU个数,型号等等。

Linux系统上可以运行Photoshop CS2

通过Wine, Photoshop CS2已经可以运行在Linux系统上了,Imageready还不行。我还没亲自在opensuse上测试,不过上次运行Picasa以失败而告终。

下载一个photoshop版本,然后右键点击setup.exe,选择run with wine。

话有说回来了,为什么非要用photoshop?Gimp一般的需求就够用了。

如果你经常作图,那用mac或者windows好了。省的折腾。

《Linux内核完全注释》部分习题答案

第3章 内核引导和启动过程

2.为什么不直接将system模块搬到0×00000处而是先搬到0×10000处,再搬到0×00000处呢?
在机器开机上电时,ROM BIOS将bootsect代码加载到内存的固定位置0×7c00处,bootsect又把自己移动到了0×90000处,同时把setup.s代码和 system模块分别加载到0×90200和0×10000处。对于本书所讨论的Linux内核,system模块的大小不超过512KB。由于在即将执行的setup代码中还需要使用BIOS的功能,因此若直接将system模块加载到0×00000处就会覆盖掉BIOS设置的中断向量区域(0×0000-0×0400)。

3.setup.s和head.s中都设置了一次GDT和IDT,这是为何,可否只在head.s做一次设置?
第一次设置是为了head.s能首次运行在32位保护模式下。GDT临时在setup.s中,也即0×902xx左右的地方,这个地方将被用于缓冲区。而内核是在靠近物理内存0×0处的,因此必须重新设置。

4.不用as86,用gas来编译bootsect可以么?为什么Linus当时要使用as86汇编器?
可以。bootsect需要是16位的实模式程序。目前gas汇编器也支持16位的编译。Linus当时是在MINIX系统上开发Linux的,最初MINIX系统上还没有移植gas程序,因此Linus就使用了MINIX系统上的as86。

5.根据setup.s和head.s程序中的使用方法,请详细说明Intel 32位保护模式的运行机制。它与实模式下的寻址方式有和主要区别?

第4章 系统初始化
1.在setup.s代码执行完之后,head.s及system被移到了0×00000~0×800000处,那么PC开机时0×0000~0×0400处及之后的一些参数不是也被覆盖了吗?内核以后是怎么设置的?
Linux 在这之后就完全不用PC自己的中断程序,而纯粹自己作中断程序了。在head.s中的78行(setup_idt)开始,首先在232行的_idt处设置了256个亚中断向量,指向一个只显示”Unknown interrupt”的中断处理程序。然后会在init的main()中各个硬件的初始化函数中一个一个地分别设置所用到的实际中断向量。

2.请简述Linux内核的整个初始化过程。
系统初始化时,sched_init() 程序启动了系统的空闲任务0,同时派生了任务1,此时,系统中有两个进程(task 0 and task 1),假设从此时开始,系统没有接收到任何中断(包括系统的定时时钟中断或外部硬件中断以及软件的系统调用产生的中断),那么系统中将永远只包含着这两个进程,但是实际中,时钟中断周期的检查有没有新任务就绪,或者硬件中断包括系统调用使系统调度执行来检查系统的新任务,如果有新任务就绪,执行新任务。系统的其它部分,都是为这些任务的执行提供服务。
系统中各进程的执行基本上是由于进程请求等待想要的资源而自动情愿地放弃CPU去睡眠,另一种就是时钟中断把用完时间片的进程对CPU的使用权剥夺,不情愿地放弃CPU。

3.详细说明_syscall0(int,fork)嵌入函数的使用方法。在程序中调用该函数的实际语句是怎样的?请具体写出来。

第5章 进程调度与系统调用
1.请问硬盘中断怎么产生的?系统调用read、write等都是产生请求,并将请求插入请求队列,在中断时由中断处理函数遍历请求队列完程读写,那么请问最初的硬盘的中断是由谁、如何激发的呢?
参见6.6.1功能描述和图6.1

2.copy_process的参数有17个,从右往左分别是:ss,esp,eflags,cs,eip,ds,es,fs,edx,ecs,ebx,none,gs,esi,edi,ebp,nr。请问其中的那个none对应的是堆栈中的什么内容?简单说明原因。

3.在do_signal()函数中的104行语句是:*(&eip) = sa_hangler;这条语句不就是等价与eip = sa_handler;吗?Linus为什么会这样表达?
这里主要是牵涉到变量类型匹配的问题。因为这两个变量的类型不一样。

4.在head.s中执行 lss _stack_start,%esp,此时ss是什么内容?(提示:参考sched.c,第69行)。
ss=0×10,也即内核段选择符。参见sched.c,69行。此时ss=ds。

5.在中断程序里,段描述符寄存器的值被改掉了,那请问是在什么时候改的呢?
比如说原来用户态时,使用的是LDT,代码段是cs=f,当发生中断时,CPU根据中断IDT表中相应的描述符设置CS:EIP,此时所有中断描述符表中描述符的段选择符值都已经被设置成=8(内核代码,在head.s中设置的),于是就会去执行内核中的代码。内核的代码段描述符在GDT中第1项(从零计),因此cs被设成=8。注意,在用户态没有权限修改描述符。

第6章 块设备驱动程序
1.块设备的主设备号是什么?硬盘hd1设备的次设备号是什么?

2.在内核中调用ll_wr_block()时会触发对块设备的读写操作。在一次读盘操作中,请问在哪个程序的哪个函数中进行了首次块读写操作?

第7章 字符设备驱动程序
1.字符设备的主设备号是什么?控制台(console)的次设备号是什么?

第8章 数学协处理器仿真处理
无。

第9章 文件系统
1.在buffer.c程序getblk()函数中215、216两行,既然已经是对空闲缓冲队列操作,为什么还要判断缓冲区是否被引用?
因为空闲列表中也包含已被使用的缓冲块,参见图9.12所示.。

2.kernel中许多lock函数都使用了cli,sti. 不知是为什么? 是担心中断程序会捣乱么? 假设有一个进程在内核空间获得了super锁,然后在bread()中等待,这时另一个进程也试图获得super锁,于是关了中断。这是否会导致内核死锁?
系统可以在处理普通的系统调用时唤醒睡眠的进程,或者在执行中断时唤醒。如果一个进程执行了cli指令,禁止了可屏蔽中断,但当任务切换时,每个进程都会保存各自的所有运行寄存器状态(在TSS中),包括标志寄存器。如果所有进程都由于等待资源而执行了cli,那么起码还有一个task0可以响应中断。因此这种情况不会造成内核死锁。
由于中断可以唤醒一个处于不可中断睡眠状态的进程,因此需要使用cli-sti来检测调用时睡眠的进程,并处理睡眠队列。使用cli-sti就不会出现竞争条件。

3.main.c中init函数的183行,execve是如何处理当前进程映象的?184行上以2作为返回值出于什么考虑?
简单地讲,execve()首先为被执行程序建立环境和堆栈,然后用被执行的程序将自己的控制替换掉(利用堆栈返回地址的替换方式)。所以如果执行成功,就不应该返回到184行,所以返回2(文件或目录不存在)。

第10章 内存管理
1.在memory.c程序的第114行上,size为什么要加上0×3fffff?
加上0×3fffff可以在size不足4M时仍需要分配1个页表项。同理,对于超过4M而不足8M时分配2个。也即注释中所说的进位整数值。
举个简单的例子。如果说4000算1项,那么10也要分1项:(10+3999) mod 4000 = 1
4001则要分2项:(4001+3999) mod 4000 = 2
12001要分4项:(12008+3999) mod 4000 = 4

2.请简要说明Intel处理器的内存分页管理机制。

3.写时复制(Copy on write)机制的工作原理是什么?为什么要这样做?

第11章 包含文件
1. 从Linux 内核0.95版开始,为了与当时的GNU的执行文件头文件一致,Linus对a.out.h文件进行了修改,造成使用0.95版内核编译的执行程序与以前版本不兼容(不能在0.1x版的内核系统上运行)。请比较本书讨论的a.out.h文件与linux 内核0.95版的a.out.h文件的主要区别。
2.第4章中172行setup((void *) &drive_info)是如何通过static inline _syscall1(int,setup,void *,BIOS)跳到hd.c中的sys_setup的?

3.在include/asm/system.h的第22行开始的一段代码中,书上写到”movw %%dx,%%ax\n\t”,偏移地址低字与段选择符组合成描述符低4字节(eax),这一句按80386汇编应该是仅将dx->ax,怎么会与段选择符组合呢?
因为开始执行这个函数时,eax = 0×00080000, 也即 eax的高字含有0×0008,是段选择符。

4.在include/signal.h中第45、46行,定义了两个具有具体数值的信号处理句柄指针,它们的用途是什么?
参见kernel/signal.c中第94行。它们的值用来判断程序的句柄是否是默认句柄。由于类型需要与sa_handler变量匹配,所以需要这样来定义。

第12章 内核库函数
1.参考第2章中对Makefile文件的注释,理解内核函数库的使用方法。它能被一般应用程序使用吗?为什么?

第13章 内核组建过程

1.简单描述内核映像文件是如何拼接而成的。这个组建程序对内核的大小有限制吗?

Linux操作系统的优点

这种帖子好像太多了,不过还是翻译一下。

1. 低费用。Linux是免费的,所以你没必要像购买其他系统那样考虑来考虑去,Linux遵循GPL协议。任何人都可以下载使用,并且相应的软件也几乎都是免费的,没有必要担心试用期的问题。

其实费用不仅仅是购买费用,还包括人员培训费用,系统维护费用等等。这点原文没有计算进去。

2. 稳定性。Linux不需要经常重启动来维持稳定性,不会因为内存不足或者其他原因导致系统变慢。几年不重启并且运行流畅是常见的事情。

这一点倒是有体会,不过几年不重启还没见过。

3. 高效性。Linux提供了持续的高稳定性。可以同时承载超多人的请求,并且可以使得老电脑焕发第二春。

老电脑?我家64M内存的电脑算很老了,但是貌似跑不动Linux。有兴致了装个damn small linux。

4. 网络亲和性。Linux的开发者大部分是通过网络完成工作的,Linux是天生的网络操作系统。不论是客户端还是服务器端都可以安装在普通电脑上运行。可以做太多的工作,比如备份等,性能要比其他的系统高许多。

5. 灵活性。Linux可以当作桌面系统使用,还可以用在高性能服务器上,嵌入式系统中等。你可以只安装你需要用到的组建,这样以来可以节省磁盘空间。

6. 兼容性。Linux可以运行所有的Unix下的软件,并且可以识别所有的文件格式。

7. 可选择性。Linux的发行版本非常多,你可以挑选一个你最喜欢的。并且一般的软件在不同的系统上都可以运行。

8. 安装很简单,很快。Linux提供了很方便的工具使得安装过程容易了许多。

9. 多任务。Linux可以同时处理很多工作,当有很多打印工作排队时,确保不会拖慢你的机器。

10. 磁盘空间完全利用。当你的磁盘空间所剩无几的时候,Linux照样能够工作。

11. 安全。这是大家选择Linux的最重要的标准。Linux的对不同权限的帐户的不同权利控制的非常好,这样可以阻止病毒等对系统造成破坏。用户在Linux中安装的软件大部分都是免费的,避免了往上购买软件时泄露你信用卡号以及密码的概率。

12. 开源。如果你开发的软件涉及到操作系统内部的东西,那就看Linux源代码吧,它是开源的。

致Linux开发者社区:新输入法Fitx开发需要大家帮忙[转载]

大家好,我是Linux下新输入法Fitx(Fun Input Toy for Linux)的作者。

关于Fitx

Fitx名字很像fcitx,是的,fitx和fcitx是有渊源的,一年前我开始做Fitx的姐妹版Fun Input Toy的时候花了3个月的时间看fcitx的代码,虽然没完全看懂,却在研究的过程中想到了现在Fitx现在的算法。很高兴Fun Input Toy没有丢fcitx的脸, 现在是Mac OS X下最流行的输入法之一。同时我们在两周以前也发布了iPhone平台的版本WeFit, 其强大的功能和优异的性能受到的广泛的关注,现在最新版本是1.0 preview 5。

所以,没有Fcitx就没有FIT和Fitx。我在此隆重感谢fcitx的作者,Yuking。1一个月以前我正在想把FIT移植到linux平 台,我再来看fcitx的网站,我非常遗憾的知道fcitx已经停止开发,我知道在这个世界上像Yuking这样的程序员一定是孤独的,我们应该给他多一 点关怀……我非常抱歉,我看你的代码的时候应该多给你写两封邮件……

下面是Fitx一些参考地址:

Fitx:http://fitx.googlecode.com
FIT: http://fit.coollittlethings.com
WeFIT: http://fit.coollittlethings.com/?page_id=76

关于Licenses

半年以前很多人呼吁FIT开源,后来开源了又很多人问Licenses

我一直没太在意,不好意思,我们长在一个copy的国度,我不知道一个Licenses, 我们的法律能不能保护我这样一个弱小的程序员,能不能保护Yuking, 能不能让Yuking的激情永远不会逝去……

因为要来Linux平台,我必须回答这个问题,我把所有的Licenses看了一遍,我选择最轻量级的BSD License。其实这个也不必,代码随便用,给我发个邮件fenghuajun@gmail.com,交个朋友。(我能不能发明一个用代码必须发邮件交 朋友的Licenses?)

Fitx是在New BSD Licenses下完全开放源代码的输入法。最早FIT词库是基于fcitx的词库,通过程序进行了一些整理,后来我又在网上搜刮了一些网友整理的自定义 词库。词频和字频是根据北京语言大学公布出来的一些新闻和小说的词频统计资料,后加程序整理。

Fitx是具体技术上怎样一个东西

Fitx严格来说不是一个输入法,而是一个输入引擎,Fitx在Linux下是C/S架构。Fitx的Client端是用python写的,非常简 单,Server端是进行编码查询的,相当于一个MySQL数据库,只不过专门做拼音,五笔,现在最新支持笔画编码的查询。Server端在 Mac/iPhone/Linux平台上是通用的,将来也有可能在Windows上。

Client端借助james.su大侠的scim和Shawn.P.Huang大侠的scim-python完成Client端相当轻松。站在巨 人的肩膀上,保持代码简单不正是*nix的核心价值么,同时也是python的核心价值,这样做的好处是代码容易维护,升级容易,但是不好的地方在于部署 安装比较困难,很高兴的是以Ubuntu为代表的Linux安装软件已经不像从前那样麻烦了,还有就是不好的地方可能就是效率……(不要和我争论C++和 python效率,我的专业意见认为在现代计算机上相差无几)。

恩…相信python的简单哲学还有一个坏处,那就是我们搞技术的假装专业忽悠人的资本没有了,同时又有一个好处,简化你所面的纷繁复杂世界,你才有能力面对更大的问题。

这就是技术上的Fitx和它相信的哲学。

如何能够帮忙

由于同时开发维护Mac版本和iPhone版本,本人时间有限,Linux经验也不是很足,现在很希望大家一起帮助Fitx的开发。现阶段Fitx的开发特别需要大家帮忙,发挥Linux社区群策群力的精神。

1. Fitx依赖的库较多,上面已经提到,条件限制,本人只能确定在Ubuntu上的安装编译过程,用其他Linux系统的朋友能够帮忙完善相关的编译安装文档。
2. 我对Linux经验较浅,对于如何制作二进制发行包还不是很在行,希望能有专家帮忙。
2. Fitx现在的功能还比较简陋,但其实Fitx的Server端已经比较完善,输入法的很多功能只需要在Client端的开发,只需要用python。对python有兴趣的朋友可以试试看看我的代码,如果能看明白又有兴趣帮忙的话,可以给我发邮件。

我的邮箱是fenghuajun@gmail.com

最后想说……

其实我是非常热爱开源运动的,我在大学期间就在想如何能在中国建立开源社区,但是当FIT在Mac平台成功以后,很多人叫我开源。我却感到疑虑,因 为FIT不是我发布的第一个开源软件,为何一个软件做得好,多人用就那么多人来叫你开源?为何一个软件做得不怎么样(可能很有前景),开源却没有人帮忙 呢?另外我想问问Yuking,有多少人给fcitx贡献了代码?

尽管有这些顾虑,最终FIT还是开源了……为什么?

1.FIT是吃fcitx的奶水长大的,人要知道自己从哪里来的。

2.关于开源,我觉得我们国家已经很落后了,但是如果不从我们开始,又从谁开始;如果不从现在开始,又从什么时候开始?if not us, then who? if not now, then when? (里根)。争论是没有用的,要的是去做,take action!(很遗憾,我现在看到国内的论坛,主要是争论……)

所以FIT选择开源,并且回到Linux平台,希望大家多多支持。我一点都不高手,我不是来这里找争论的,我只是来这里找一些支持的温暖。希望没有来错地方。

(欢迎转载到任何Linux社区)

Android VS LiMo

先前提到,在西班牙巴塞罗那举行的Mobile World Congress中,我们见到了搭载Android系统的手机,以及符合LiMo标准的手机。

(OHA)Open Handset Alliance为手机开源系统,开源软件提供了很好的解决方案,而LiMo则想将目前四分五裂的Linux手机系统市场统一,除此之外还有LiPS(Linux Phone Standards)和OMA(Open Mobile Alliance)。也可以说四个组织的目的都是一样的,统一移动Linux平台。

OHA由Google发起,并且已经发布了其基于Linux手机系统平台,Andorid。OHA现在已经拥有34位会员,为Android发展提供支持。

LiMo的会员目前有32位,大部分为手机生产厂商。但是还没有相应的手机系统问世。

LiMo和OHA的Android系统会互相兼容吗?没人知道。

“今天两者声称,其各自的系统将会互相兼容,但是我却不太乐观”

LiMo将会使用Azingo系统,OHA有Android系统。两者都是开源的。但是两个系统均来自Wind River公司。

“你也许可以在Android上运行符合LiMo标准的程序,但是你必须首先熟悉Android系统,熟悉不同风格的UI”

“两者之间的关系是相互竞争的关系,并不是互补的关系。”

azingo_mobile_screenshots

Azingo系统screenshots

两个组织都是很有实力的,所以将来可能的情况是两者同时存在,并且市场上叫卖着分别搭载着两者系统的手机。

Linux Test Drive开始测试

LTD(Linux Test Drive)是互联网上出现的一个新的应用,用户可以在该网站上测试新的Linux操作系统,新的硬件等等,而不用在自己的电脑上安装任何东西。相当于现在比较流行的LiveCD。但是这一切现在使用浏览器完成。

LTD现在仅仅还是测试阶段,需要提交申请才能参加测试。

NoMachine TestDrive也提供类似的服务,但是需要在电脑上安装一个客户端(NX Client)才能体验。

Mozilla 10周年 浏览器历史

Mozilla十周岁了,前几天OpenSource刚刚度过自己的十周岁生日

1993年,来自美国伊利诺大学的NCSA组织发布了第一个可以显示图片的浏览器,命名为MOSAIC。MOSAIC是后来的Netscape和IE共同的祖先。

Jim Clark看到了MOSAIC市场前途,随机成立了Mosaic Communications Corporation。但是NCSA组织很讨厌Clark将其成果用在公司名字当中,Clark只要将公司名更改为Netscape Communications。

1994年Netscape发布了第一个测试版本,用户可以免费下载使用。同一年,netscape1.0正式版本发布。当时1.0版本有两个小版本,“1.0”和“1.0N” ,两个版本完全一样,区别仅仅是1.0N是商用版本,如果你觉得对此版本满意,需要付费使用。但是1年后,netscape完全免费发行。

Netscape项目名称当时为Mozilla。随着1.0的发布,其最高的时候占据了浏览器市场90%的份额,并且支持当时几乎所有的操作系统。

微软看到这些后,立即取得了Mosaic的发布许可,并且根据Mosaic开发了自己的浏览器Internet Explorer。1995年8月,IE1.0正式版本发布,随后1.5, 2.0, 3.0, 4.0。一直到1998年,IE5.0的市场占有率第一次超过Netscape。

1997年,微软以1亿5千万美元的价格和Apple达成一致,将其MAC OS中的默认浏览器从Netscape替换为IE。当时Netscape的市场占有率已经逐年下降。

Read the rest »