Browsed by
Category: 杂文

随便记点什么

还是要仔细看manual文档啊

还是要仔细看manual文档啊

今天花了很多时间在网上搜索Python与C之间交互的文章,想弄清楚大数据结构传递的问题。看了很多文章,大部分都是很久之前的经验记录,感觉不得要领。

后来仔细翻了翻Python的manual文档,赫然发现ctypes章节,写得非常详细,基本上把所有的概念和细节都讲清楚了。

http://docs.python.org/library/ctypes.html

看来自己的工作方法要不得啊。遇到问题首先google,其实也挺浪费时间。多花点时间研究manual,可能事半功倍,尤其是象Python的manual,写得真是不错。

ubuntu下mount分区显示中文

ubuntu下mount分区显示中文

其实还是比较简单的。对于Ububtu 10.04来说,很多东西已经支持得非常好了,不需要另外再下载什么软件即可。

在mount时,指明iocharset为utf8即可。网上一些以前的文章说是指明为cp936或者gb2312,我尝试了一下cp936,仍然显示乱码, 没有试gb2312,不好说结论。

以下是一个举例,mount某windows共享目录MyProjects到ubuntu目录下:

mount //win_server/MyProjects /root/Documents/my_projects -o username=hongtian,iocharset=utf8

在执行时,ubuntu会提示输入hongtian的用户密码,输入相应密码即可。注意,这个密码是windows系统共享用户的密码,不是ubuntu系统下用户的密码。

另外,建议以root用户进行上述操作。

如何以root身份登录ubuntu?

如何以root身份登录ubuntu?

网上已经有文章进行来描述。不过看起来都是基于旧版本的ubuntu。在最新的ubuntu版本(我是指10.04版本),实际上简化了,只需要配置root的password即可,不需要再设置登录窗口的安全属性。

step1:sudo passwd

此时系统会提示输入当前用户的口令

step2: enter unix new password

此时提示输入的password,就是root用户的password。ubuntu缺省情况下不允许root方式登录,因此也没有设置root的口令。

step3: re-enter unix new password

再次确认root的password

经过上述三步之后,就为root用户设置来password。然后,退出当前用户,在登录窗口中选择“other”,然后输入root及其password即可。

Firefox 3.6.6版本可能有问题

Firefox 3.6.6版本可能有问题

升级到这个版本后, 经常出现突然变得非常缓慢的情况, 尤其是使用gmail写邮件或者google documents写文档的时候, 简直慢得难以忍受. 此时, Firefox的CPU占用率也基本超过50%.

以前的版本非常好, 一直没什么问题. 3.6.6版本可能是个有问题的版本. 目前转到Chrome后, 一切都非常正常.

Hadoop

Hadoop

前段时间看了本P2P的书,介绍了一堆云里雾里的知识。说实话,没怎么看懂。

在CSDN上看到一篇关于Hadoop的blog,很有意思。以前也粗略看过google的MapReduce文章,毫无疑问,Hadoop是个非常好的实现方案。以Hadoop为切入点,可以对分布式计算有更多的了解。

参考blog:

http://blog.csdn.net/wengyupeng/archive/2009/12/27/5083881.aspx

如何察看Gmail中的未读邮件?

如何察看Gmail中的未读邮件?

看起来这是一个很普通的功能,但是在gmail的各项菜单中,居然没有察看未读邮件的选项。这确实是一件让人摸不着头脑的事情。

在讨论这个问题之前,先讨论一个别的问题:gmail对来信的时间判断。gmail不是根据gmail服务器的时间来判断的,而是根据来信自己的时间戳进行判断。如果来信的时间是非常久远之前的,则gmail将它排到列表的最后面(oldest)。有位不知名的朋友发了封信过来,在gmail的inbox中显示有一封未读来信,可是我始终找不着是哪封邮件未读,只好将583M的邮件翻了个底朝天,最后发现,来信的日期居然是2004年,gmail直接将它放在最后面了。

由此想到,如果能直接查找到未读邮件,就不用那么辛苦的去翻旧邮件了,接着就惊讶地发现,gmail居然没有这项设置。后来在google中进行搜索,才发现是通过以下方式来实现的:

在“search mail”的输入框内,输入label:unread进行搜索就可以了。

不算太麻烦,不过如果能设置成缺省功能项,则可能会更好些。

Ubuntu系统下配置Samba

Ubuntu系统下配置Samba

缺省情况下,Ubuntu没有安装Samba(我指的是Ubuntu的桌面版,不清楚服务器版是否缺省安装了Samba),因此首先就是要安装Samba。 然后,配置samba进行linux与windows的互相共享操作。

1、安装Samba

有两种方式:

(1)从Samba的软件中心搜索Samba,然后安装Smbfs以及Samba两个软件包。

(2)从命令行安装。键入以下命令即可:

sudo apt-get install samba
sudo apt-get install smbfs

2、配置Samba,使Windows能访问Linux

首先添加一个samba用户,例如:smbpasswd -a yxh

修改/etc/samba/smb.conf文件,基本上修改量不大。

[homes]  <–去掉原有的注释即可。
comment = Home Directories
browseable = yes
create mask = 0777
directory mask = 0777  <– 没有这两项,就无法进行写入和删除操作。
valid users = %S
write list  = %S

3、访问Windows文件

这个就比较简单了,直接用mount命令就可以了:

sudo mount //192.168.1.103/win_files /home/yxh/win_files/ -o username=yxh

其中,’yxh’是windows环境的用户名,”//192.168.1.103/win_files”是windows环境的共享目录。”/home/yxh/win_files/”是linux环境的目录,用于映射上述windows共享目录。

命令成功后,直接访问/home/yxh/win_files即可。

4、疑问

在Fedora系统中修改了smb.conf后,需要使用命令“service smbd restart”才能使配置起作用。而Ubuntu环境中,似乎修改后就自动应用了。难道Ubuntu是每次访问操作时,都会去读smb.conf?还是监视了smb.conf文件,发现一旦更改就自动重启samba?

Fedora是不是落伍了?

Fedora是不是落伍了?

最近Fedora13终于发布了,加上前段时间发布的Ubuntu10.04,Linux版本现在的发展确实日新月异,一日千里啊。

在VBox上安装了这两个版本试了试,两个版本都不错。但是毫无疑问,Ubuntu版本在界面、可操作性方面已经全面超越Fedora了。可能Fedora版本比较适合开发,内部集成了很多开发工具等。不过,我试过Ubuntu的软件中心后,感觉这方面一点都不会是问题。Ubuntu下安装软件实在是太方便了。

我认为Ubuntu“专注于用户的体验”的策略是非常成功的。而Fedora过于侧重技术方面,尤其是RedHat利用Fedora把用户当小白鼠,不尊重普通用户,太技术流。Windows比同期其他系统优秀的地方,就是足够好用的功能和足够优秀的用户体验,技术上windows也比同期其他系统要落后些吧。以史为鉴,贴近最终客户的系统才是好系统,才能有好的发展。

何况Ubuntu和Fedora同宗同源,都是基于同一个linux,真正的linux技术流高手,应该也不会care两者的差别。因此,决定最后是否成功的,就是普通用户(个人用户以及企业用户)的体验了。

Android开发指导随译(2) — 应用程序基本原理(5)

Android开发指导随译(2) — 应用程序基本原理(5)

Activities与Tasks(任务)

一个Activity可以启动另一个Activity, 即使该Activity定义在另一个应用程序中. 用户无法区分出这两个Activity有可能是定义并运行在不同的应用程序进程中.

Android在同一个Task中维持这两个Activity, 以保持用户的体验. 简单而言, 对用户体验来说, 一个Task就是一个”应用程序”. 它是一组相关的activity,并组织在同一个堆栈中. 堆栈中根activity(root activity)就是启动当前task的activity. 堆栈最顶部的activity就是当前正在运行的activity. 当一个activity启动另一个activiey, 新的activity就推入堆栈, 称为当前运行的activity. 以前的activity保留在栈中. 当用户按下BACK键, 当前activity就从堆栈中弹出, 以前的activity恢复为当前运行的activity.

堆栈中可以包含多个对象. 如果一个task包含同一个activity的多个实例, 堆栈对每个实例都有一个独立的入口(entry). 栈中的activity永远不会重新进行调整, 只有推进(Push)和弹出(Pop).

task就是activities的栈. 没有办法对task中所有的activities独立设置值(笔注: 是指变量值吗?). task的值只能设置在根activity中.

task中的所有activities作为一个单元共同进行移动. 整个task可以设置到前台运行, 也可以送到后台运行.

亲和(Affinities)与新task

缺省情况下, 应用程序中的所有Activities共有一个affinity. 每个activity也可以设置独立的affinity. 定义在不同应用程序中的activities可以共享同一个affinity. 在同一个应用程序中的activities可以分配不同的affinities.

FLAG_ACTIVITY_NEW_TASK标识
如果传递给startActivity()的Intent包含FLAG_ACTIVITY_NEW_TASK标识, 系统会查找不同的task来承载当前的activity. 通常, 这会是个新task. 如果已经有一个task具有与当前activity相同的affinity, 则当前的activity会登录进该task.

allowTaskReparenting属性
如果allowTaskReparenting属性设置为true, activity可以从启动它的task移到另一个具有相同affinity的task中.

启动模式
standard (缺省模式)
singleTop
singleTask
singleInstance