Tuesday, January 13, 2009

Ubuntu创始人

下面的内容来自solidot.
《纽约时报》报道了亿万富翁、前宇航员、黄金单身汉、Ubuntu的创始人Mark
Shuttleworth,一位直面微软统治的软件民粹主义者。文章讲述了Ubuntu在Linux桌面的欢
迎程度:1千万用户,其中Google有一万员工使用戏称为Goobuntu的Ubuntu修改版
/////////////////////////////////
批注 这就是有钱的好处,可做任何想做的事,
上天:他花了两千万美元上太空
自由:他创建了发行Ubuntu的公司
我有钱了会干的事也不过如此吧

Sunday, January 11, 2009

bochs运行Linux 0.11

看赵垠博士的源码分析的书,知道了bochs。但他的书介绍的bochs安装全都是基于
Windows的,这看起来很怪异,分析Linux源码的工具,但主要介绍的平台还是
Windows,不过,可能是学生们更多使用Windows吧。
下载了源码,编译。
下载了linux0.11的开发版。http://oldlinux.org/Linux.old/bochs/linux-0.11-devel-060625.zip.解压后,目录中有几个后缀为bxrc的文件,这些文件
在Windows中运行良好,但在Liinux中无法正常运行了。不过好在原理是一样的。
进入该目录,参考其bochs-hd.bxrc,修改了一个bochsrc。
然后在该目录运行bochs,看起来没有什么问题。但没有结果出来,而是一个类似
gdb的界面,没办法,只有按"n"意思是"next",单步运行了几百步,Linux0.11才算运行起来了
。下面是修改后的bochsrc文件
///////////////////////////////////////////////////////////
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
cpu: count=1, ips=10000000, reset_on_triple_fault=1
megs: 32
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest
vga: extension=vbe
floppya: 1_44="bootimage-0.11-hd", status=inserted
floppyb: 1_44=diskb.img, status=inserted
ata0-master: type=disk, mode=flat, path="hdc-0.11.img", cylinders=121, heads=16, spt=63
boot: a
floppy_bootsig_check: disabled=0
log: bochsout.txt
panic: action=ask
error: action=report
info: action=report
debug: action=ignore
debugger_log: -
parport1: enabled=1, file="parport.out"
vga_update_interval: 300000
keyboard_serial_delay: 250
keyboard_paste_delay: 100000
mouse: enabled=0
private_colormap: enabled=0
keyboard_mapping: enabled=0, map=
////////////////////////////////////////
下面是编译方法
///////////////////////////////////
在ubuntu 8.10下安装成功,分为以下四步:
一、准备工作
bochs是由C++编写的,我们要安装相应的编译环境
sudo apt-get install build-essential

如果要图形界面,
sudo apt-get install xorg-dev

安装bison,
sudo apt-get install bison
到bochs官方网站下载源码包bochs-2.3.7.tar.gz
解压产生文件夹bochs-2.3.7,生成目录/home/ubuntu/Desktop/bochs-2.3.7

二、configure
在目录/home/ubuntu/Desktop/bochs-2.3.7/下执行
./configure --with-x11 --enable-debugger --enable-disasm --enable-pci --enable-pcidev --enable-plugins --enable-ne2000 --enable-pnic
configure后的选项作为参考,你可以用./configure --help查看全部选项,bochs官方网站上有详细说明。

三、make
在运行make之前需要修改两个文件
第一个文件是/home/ubuntu/Desktop/bochs-2.3.7/bx_debug/symbols.cc
在97行之后加入代码如下,
using namespace std;

#ifdef __GNUC__ //修改
using namespace __gnu_cxx; //修改

Monday, January 5, 2009

我的第一个Android程序

这是一个自动识别文本中链接和电话号码的示例程序,根据API demo的相关程序编写。
Posted by Picasa

gnus draft

前几天在gnus中写了些东西,当时没发,保存在draft中。但不知如何发。按C-c C-c也没有反应。
看了看手册:
编辑draft中的邮件:
选中要编辑的邮件,然后按"D e"(`gnus-draft-edit-message')。
要发送draft中的邮件
按 `D s' 或使用命令(`gnus-draft-send-message').
标记某些不发送的邮件:
可以标记draft中的某些邮件为不发送:`D t'
(`gnus-draft-toggle-sending').这是个开关命令。

Saturday, January 3, 2009

Android中自动识别文本中的链接与电话号码

自动识别文本中的链接与电话号码
在Adroid的API demo中,有一个"TEXT|Linkify",里面显示了一些网址和电话号码,单击该网址就会在浏览器中打开,单击电话号码就会自动拨号。
其实这个功能也很好实现。其源代码位于:Api demos-》src-》com.example.android.apis.text-》Link.java,内容是:
/*
* Copyright (C) 2007 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.example.android.apis.text;

import com.example.android.apis.R;

import android.app.Activity;

import android.os.Bundle;

public class Link extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.link);
}
}
看起来没有什么特别之处。
R.java的486行,属于 public static final class layout :
public static final int link=0x7f030043;
按照当前我的理解,应该这儿定义了一个名为link的控件
853行,属于 public static final class string :
public static final int link_text=0x7f0a016e;
这儿定义了该控件的值的编号。
strings.xml中的535行,定义了link_text的内容。从后面的内容看,strings.xml可以使用"@string"来调用。不知道这是系统的行为还是在程序中做了相应的设置。
<string name="link_text">This is some text. In this text are some things that are actionable. For instance, you can click on http://www.google.com and it will launch the web browser. You can click on google.com too. And, if you click on (415) 555-1212 it should dial the phone.</string>
看看link.xml的内容:
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:autoLink="all"
<!-- 前面这句也许才是最重要的一句,自动打开链接--!>
android:text="@string/link_text"
<!--这句话的意思是调用"@string"中对于"link_text"的定义。
/>


现在开始做自己的修改,打开res->values->strings.xml
修改如下的变量的值:
<string name="hello">Hello World, HelloAndroid,welcome to my world http://ubuntuwriter.blogspot.com,and if some question ,can call 13902102699</string>
现在,显示的内容出来了,但是没有自动加上链接,于是,在res-》layout-》main.xml文件中加上一句:
android:autoLink="all"
现在再运行程序,发现链接被自动加上,而且中国的手机号也可以被正确识别,修改成功。

不用Eclipse,建立Android程序

如果要不用Eclipse 创建一个Android项目,可以参照如下步骤:
1.建立样板文件#####################################
earthfans@mylaptop:~/develop/android-sdk/tools$ ./activitycreator --out HelloAndroid com.android.hello.HelloAndroid
Package: com.android.hello
Output directory: HelloAndroid
Activity name: HelloAndroid
Created directory /home/earthfans/develop/android-sdk/tools/HelloAndroid/src/com/android/hello
Added file HelloAndroid/src/com/android/hello/HelloAndroid.java
Created directory /home/earthfans/develop/android-sdk/tools/HelloAndroid/bin
Created directory /home/earthfans/develop/android-sdk/tools/HelloAndroid/libs
Created directory /home/earthfans/develop/android-sdk/tools/HelloAndroid/res/values
Added file HelloAndroid/res/values/strings.xml
Created directory /home/earthfans/develop/android-sdk/tools/HelloAndroid/res/layout
Added file HelloAndroid/res/layout/main.xml
Added file HelloAndroid/AndroidManifest.xml
Added file HelloAndroid/build.xml

2编译########################################

earthfans@mylaptop:~/develop/android-sdk/tools/HelloAndroid$ ant
Buildfile: build.xml

dirs:
[echo] Creating output directories if needed...
[mkdir] Created dir: /home/earthfans/develop/android-sdk/tools/HelloAndroid/bin/classes

resource-src:
[echo] Generating R.java / Manifest.java from the resources...

aidl:
[echo] Compiling aidl files into Java classes...

compile:
[javac] Compiling 2 source files to /home/earthfans/develop/android-sdk/tools/HelloAndroid/bin/classes

dex:
[echo] Converting compiled files and external libraries into bin/classes.dex...

package-res:

package-res-no-assets:
[echo] Packaging resources...

debug:
[echo] Packaging bin/HelloAndroid-debug.apk, and signing it with a debug key...
[exec] Using keystore: /home/earthfans/.android/debug.keystore

BUILD SUCCESSFUL
Total time: 4 seconds
3 安装到Android模拟器中####################################
earthfans@mylaptop:~/develop/android-sdk/tools$ ./adb -s emulator-5554 install HelloAndroid/bin/HelloAndroid-debug.apk
68 KB/s (4368 bytes in 0.062s)
pkg: /data/local/tmp/HelloAndroid-debug.apk
ps.如果不能确定现在模拟器的编号,可以用下面的命令#######################
earthfans@mylaptop:~/develop/android-sdk/tools$ ./adb devices
List of devices attached
emulator-5554 device
PS2:我用上面官方介绍的方法编译了,但提示是程序已经在模拟器中的提示,不知问题在哪儿,以后水平提高再看看原因。