Browsed by
Author: YI

在OpenOffice.calc文档中设置密码

在OpenOffice.calc文档中设置密码

这个设置很让人意外。在菜单“工具-〉保护”中提供了对工作表和工作簿的保护,可是从使用过程看,似乎没有起到什么保护作用。

实际上是通过另外的方法来设置密码保护:保存文档时,在对话框中选择“密码保护”,然后输入密码即可。

对比Microsoft Office,感觉OpenOffice在各方面还有待加强啊。例如,上述密码保护,没有区分只读和可写等情况(也可能是我不熟悉,没找到正确的地方?)。在保存对话框中进行密码设置也比较另类,如果客户直接通过工具条上的“保存”按钮,就不会知道这些设置。

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两者的差别。因此,决定最后是否成功的,就是普通用户(个人用户以及企业用户)的体验了。

SIPp简单使用手册

SIPp简单使用手册

Windows下应用SIPp非常简单, 直接下载SIPp的安装文件安装即可。

需要注意的是,不要直接从cmd窗口启动SIPp,而是 点击SIPp的快捷方式“start sipp”,这样,它会将SIPp的安装目录加入路径中。或者,可以将sipp的安装目录加入系统的PATH路径,然后也可以直接在cmd窗口启动 SIPp。

sipp 192.168.1.100:5060 -sf caller_basic.xml -p 5062 -m 1 -r 1 -rp 2000 -d 2000

-sf     加载外部的xml定义文件
-inf    从外部csv文件导入数据信息
-p      指定本地端口。 如果不指定的话,系统使用一个随机的空闲端口;
-m  呼叫次数
-d  每个呼叫的保持时间(毫秒)

其他常用配置参数:

-r -rp Specify the rate period for the call rate.
Example: -r 7 -rp 2000 ==> 7 calls every 2 seconds.

实际上SIPp内置了缺省的UAS和UAC,因此,我们可以不需要定制xml脚本,直接用下面的命令进行测试:

启动SIPp做呼出:sipp 192.168.1.100:5060 -sn uac -p 5062 -r 1 -rp 2000 -d 2000

启动SIPp接受呼叫:sipp 192.168.1.100:5060 -sn uas -p 5063

应用在Fedora系统
下载sipp的源代码在Fedora 9下编译时,会有编译错误“INT_MAX未定义”。 解决方法:
修改sipp.hpp文件,增加以下宏定义即可:

#ifndef INT_MAX
#define INT_MAX 0xFFFFFFFF
#endif

直接使用命令make即可进行编译,在当前目录下产生sipp可执行文件。

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

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

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

激活组件: Intents(意图)

CP收到CR的请求时就可以激活. 其他三个组件: 行为, 服务以及BR都是通过异步消息激活, 这种消息就是”intent(意图)”.

关闭组件

CP只在相应CR请求时存活, BR只在响应广播消息时存活, 因此对它们而言没有必要显式地关闭这些组件.

另一方面, Activities提供了用户界面. 它们与用户可能会有一个长期的会话过程, 会话期间即使是空闲也仍然保持激活. 类似的, 服务也可能保持运行很长一段时间. 因此Android提供方法有持续地关闭Activity和服务.

1. 可以调用Activity的finish()方法关闭Activity. 一个activity可以关闭另外一个activity.
2. 服务可以通过调用stopSelf()的方式来关闭自己, 或者调用Context.stopService()来关闭.

如果不再使用组件了, 系统也可以关闭它们, 或者当Android必须回收内存时也会关闭这些组件.

manifest文件 (?运货单文件)
Android启动一个程序组件之前, 需要知道这个组件的存在. 因此应用程序需要在一个manifest文件中声明它们的组件. manifest文件打包在.apk文件中, 该文件(.apk)还包含程序代码, 文件以及资源等.

manifest文件是一个结构化的xml文件, 并且总是命名为”AndroidManifest.xml”. 它最主要的任务就是将当前应用程序的组件情况告诉Android系统.

Intent过滤
Intent对象可以显式地命名为一个目标组件(Target Component), 此时Android可以通过manifest文件对它进行操作. 但是如果目标没有显式命名, Android就必须要查找最合适的组件来响应Intent, 方法就是将Intent对象与潜在目标的Intent filters(Intnet过滤)进行比较.

感谢iNove

感谢iNove

非常不错的中文模板.

其实WordExpress 3.0的缺省模板也挺好, 不过字体, 段间距, 行间距实在太大, 我也不想在这方面花太多时间去调整. 而iNove做得确实不错, 我尤其喜欢它的menu设计.

如果说iNove的缺点话, 我只是觉得抬头的黑色部分太沉重了, 换成WordExpress的缺省抬头部分可能效果会不错.

1+1>2?

1+1>2?

强强联手是否会营造更好的结果? 在IT领域, 这方面成功的例子可能不太多.
Intel和HP当年打造的安腾, 现在就没什么消息了. 两个巨无霸联手, 大家都心怀鬼胎, 要齐心协力去干一件事, 还真不容易. Wintel联盟之所以成功, 是因为他们从小就混在一起. 现在大家翅膀都硬了, 这不又开始各打小算盘了么.
看看MeeGo, 不禁又开始担心了. 这次又是两个巨无霸的合作啊.

微软也准备推网络广告联盟了

微软也准备推网络广告联盟了

http://advertising.microsoft.com/

以前申请过Google Adsense,后来莫名其妙地被封掉了。据说很难和GG沟通,因此就干脆放弃了。

如果微软也准备推这个东西,倒是可以做一下尝试。