headermask image

header image

How to Install tusc on HP-UX

tusc 是一个在 HP-UX 平台上用来跟踪系统调用的程序,其功能类似于 Linux 上的 strace 和 Solaris  上的 truss。最近两天应大洋彼岸的同事要求,要提供某个重要的 Oracle 数据库进程的 tusc 输出,可是在我用的 HP-UX 的测试机上并没有默认安装它。最后 Google 出来了 tusc 的安装方法,记录于此。

答案来自于 HP IT Resource Center 的论坛上的一篇帖子。其实安装过程很简单:

1 在这里下载版本合适的 tusc 安装文件压缩包;

2 以 root 身份使用 swinstall 命令进行安装。

默认的安装路径是在 /usr/local/bin/tusc,之后就可以开始使用了。最后这里顺便给出一个例子:

tusc -o tusc.out -aEfhpRunv -T “” -p pid

Introduction to Oracle Application Express

最近打算写一个给小组内部成员使用的 Web 应用,作为一个不太精通 Web 编程的 Oracle 员工来说,Oracle Application Express (Oracle APEX) 是一个不错的选择,而且 Oracle 自己的许多内部和外部网站也都是用它来开发的。

Oracle APEX,以前称为 HTML DB,是一个集成在 Oracle 数据库中的快速 Web 应用开发工具。“集成在 Oracle 数据库中”是 Oracle APEX 的一个非常重要的特点,它意味着只要是安装了 Oracle 数据库,那么你就拥有了使用 Oracle APEX 开发 Web 应用的充分条件(当然了,你还需要一个浏览器来作为客户端)。另外,Oracle APEX 是 Oracle 数据库的一个默认组件,那么它的生命周期完全和数据库等同,因而可以保证时间上的投入不会很快过时。此外,对于很多非 IT 企业而言,几乎可以完全摆脱对第三方 Web 应用开发商的依赖。默认的 Theme 已经可以满足绝大部分需求,只需要少量的修改,即可媲美专业网站。不论从员工价值提升,还是企业管理成本上说,都非常有益。”

稍微了解一下 Oracle APEX 的架构就可以知道,它与 Oracle 数据库的结合之紧密。原来所有的 Web 页面都是通过 Oracle APEX 引擎读取和渲染存储在数据库表中的数据而来。而当你建立或者扩展一个应用时,Oracle APEX 则将建立或者修改相应的元数据到数据库表中,而当应用运行时,Oracle APEX 又将负责读取元数据和显示。令人惊讶的是,甚至连 Oracle APEX 自身也不过是由数据库中的 215+ 的表和 200+ 的 PL/SQL 对象所组成。

而由 Oracle APEX 的架构,我们也不难想象,为什么使用 Oracle APEX 来开发 Web 应用程序,所需的只是基本的 HTML、Javascript 和 SQL、PL/SQL 知识,由此也可见 Oracle APEX 的学习门槛是非常低的。

参考(英文):

What is Oracle Application Express?

Oracle Application Express 文档

Thoughts on Software Freedom Day 2009 in Shenzhen

昨天下午顶着 35 度的深圳高温,去了深圳大学学生活动中心参加了 SFD 2009 在深圳的活动。昨天的活动由于地点临时改到了深圳大学,结果主办单位就变成了深圳大学 Java 协会,他们还把这次活动顺便变成了他们协会的招新。(现在才成立类似的协会是不是晚了点?)另外也使得这次活动的大学味很浓。(开场致辞的是计算机学院的团委···)

这次活动一共安排了 4 个主题演讲:

1. 深圳大学的 Sun 校园大使方圆同学讲 JavaFX

JavaFX 是 Sun 在 2007 年(有点晚?)推出的用于建立 RIA 的产品和技术,同类的技术包括了 Adobe Flash (Flex?) 和 Microsoft Silverlight。这个题目对在场的很多人来说可能很陌生吧,没什么反响,而且方同学的 ppt 写得太深入细节了,有不少的大段代码。

2. 清华大学的沈彬彬同学讲他自己开发的“哼唱搜索系统”

这个比较厉害,而且还是沈同学大二时的作品,不得了。

3. SZLUG 代表张乐讲 Novell AlacrityVM

话说 r0bertz 这么快就开始给新东家打广告了,可谓是非常敬业。不过恕我直言,Novell 作为一家传统的领先 Linux 厂商,现在才刚刚开始自家的 VM 产品,脚步是不是有点太落后了?咱们 Oracle 的 OVM 可都已经发布了 2.1.5 版本了 ;-)

不过 AlacrityVM 和 RHEL 5u4 一样也是基于 KVM 的,而不是 Xen,这会是将来的一个趋势吗?让我们拭目以待。

另外值得一提的是 Sun 的虚拟化技术 Solaris Containers 也已经很成熟了。

4. SZLUG 代表张煌彬讲 iRedMail 项目

Michael 同学的口才不错,不愧是 RHCE 的讲师出身,而且还挺幽默。相信这个项目正是他在亲身经历了以往架设邮件服务器的痛苦之后而产生的吧,而很多其它开源软件项目的产生也是基于这样一个出发点。这个不禁让我想起了 Larry Wall 所总结的程序员的三大优点。

以上就是这次 SFD 2009 Shenzhen 的主要内容了,还是挺充实的。最后还拿了张 OpenSolaris 的安装盘回来,有空了研究研究。

PS: 说起来自己都还没有在 SZLUG 做过类似的演讲,实在是有些惭愧,不过我不知道大家对 RAC 是否有兴趣,另外这样的以专有软件系统为题目的话题放在 LUG 的聚会上来讲会不会遭到排斥?

Gentoo Linux Installation 3

自从上次之后,有大半年没有折腾 Gentoo 了,这个周末又研究了一下,在此小结一下。

1. 学会了如何使用别的 Linux 系统或者是 LiveCD 来安装 Gentoo。其实很简单,等机器从 Linux 系统或者 LiveCD 启动之后,挂载相应的硬盘分区到 /mnt/gentoo, chroot 过去,接着就可以按照官方的安装文档走下去了。

2. 之前我都是 emerge gnome 的,但是感觉装了很多不想要的软件,比如 evolution 这家伙(我平时都用的是 thunderbird),所以这次安装我选择了 emerge gnome-light,大概可以少安装 100 多个包。至于 KDE 嘛,我还是不敢造次,看官方文档上的 emerge kde-meta 所需要的时间几乎是 emerge gnome 的 2 倍,太耗费时间了。

3. 一定要在 emerge 桌面系统之前,先 emerge –sync && emerge -avuDN world 一次,不然在安装桌面系统的过程之中会遇到一些被阻挡的包。

4. 每次 emerge world 之后记得要 revdep-rebuild 一下。

5. 在遇到和 Python 有关的包的问题时(比如我在 emerge gnome-light 的过程中遇到了 pycairo 的错误),可以试试先运行一下 python-updater,问题可能就此解决了。

6. 这次用了最新的 stage3 和 portage 快照,但在 emerge vnc 的时候遭遇了 Gentoo Bug 273087,最后只得改用了 tightvnc 提供的 vncserver (需要设置 USE 标记 server)。

2 Google Quick Tips

晚上在读李笑来老师的《把时间当作朋友》,发现自己也从来没有学习过在 Google 中使用通配符进行搜索,于是乎搜索了一下,找到了如下 2 个有用的 tips,记录一下:

1. Wildcards

http://google.about.com/od/googlepowersearches/qt/wildcardqt.htm

2. I’m Feeling Lucky

http://google.about.com/od/searchingtheweb/qt/imfeelingluckyq.htm

Words in News 1

graft 贿赂

dereliction of duty 失职

iron-ore talk

Rio Tinto

espionage 间谍活动

Gary Locke 骆家辉

retaliate 报复

a raft of 大量

apparel 服装

shortfall 赤字

impasse 僵局

gimmick 花招

IOU

ire 愤怒

顺便自勉一下,希望能每周坚持阅读 WSJ。

Macau 2 Day Tour

行程

第一天:横琴口岸 > 新世纪酒店 > 妈阁庙 > 海事博物馆 > 内港餐厅 > 港务局大楼 > 亚婆井前地 > St. Lawerance 教堂 > 民政总署 > 议事亭前地 > 义顺牛奶公司 > 玫瑰堂 > 大三巴 > 大炮台 > 郑家大屋 > 澳门邮政局 > 新葡京

第二天:黑沙海滩 > 官也街 > 诚昌饭店 > 威尼斯人度假村 > 横琴口岸

有用的网站

澳门特别行政区政府旅游局 http://www.macautourism.gov.mo/

游澳门 http://www.youaomen.com/

澳门公共汽车有限公司 http://www.tcm.com.mo/

澳门新福利公共汽车有限公司 http://www.transmac.com.mo/

澳门通 http://www.macaupass.com.mo/

3 Tips in Perl Programming

1. 获取当前时间
Perl 有一个函数 localtime 可以用来实现这个功能。在具体使用的过程中需要注意的是,它返回的月份数值是以 0 为基准的,而年份数值是在减掉 1900 之后的值,所以很多时候都需要进行相应的调整:

# construct log file name
my ($sec, $min, $hour, $day, $month, $year) = (localtime) [0, 1, 2, 3, 4, 5];
$month = $month + 1;
$year = $year + 1900;
 
my $local_node;
$local_node = qx{hostname};
chomp $local_node;
 
my $filename = sprintf("%04d%02d%02d%02d%02d%02d", $year, $month, $day, $hour, $min, $sec);
$filename = "kill_crsd_" . $local_node . "_" . $filename . ".log";
my $KILL_CRSD_LOG = catfile(curdir(), $filename);

2. 一个写日志文件的函数
经常跑一些小脚本去循环做一些破坏性测试,由于有些操作具有重启节点的潜在可能性,所以这样一个需求也就随之而来。下面就是一个我用来写日志文件的函数的实现:

#
# Write trace file
#
# trace(@content)
#
sub trace(@)
{
    my ($sec, $min, $hour, $day, $month, $year) = (localtime) [0, 1, 2, 3, 4, 5];
    $month = $month + 1;
    $year = $year + 1900;
 
    open(LOGFILE, ">>$KILL_CRSD_LOG") or die "ERROR: Can't open $KILL_CRSD_LOG: $!";
    printf LOGFILE "%04d-%02d-%02d %02d:%02d:%02d: @_\n", $year, $month, $day, $hour, $min, $sec;
    close (LOGFILE);
}

有了这样一个函数之后,可以在进行某个操作之前调用它来记录一下,这样就不怕因为节点重启而丢失脚本的运行信息了。

3. 高于秒级精度的休眠
要让脚本休眠一段时间,我常用的是 Perl 中的 sleep 函数,但是遇到需要进行高于秒级精度的休眠时,这个函数就无能为力了。这时可以使用 select 操作符来实现:

select undef, undef, undef, 4.75;

上面的语句将使你的脚本休眠 4.75 秒。