欢迎!这里是Haiku China网站,中文Haiku用户社区。Haiku是一个新型的开源操作系统,主要面向于个人计算机。它继承了BeOS的理念,是一个快速,简洁优雅,易学易用,而且非常强大的操作系统。
最新新闻提要News feed

Haiku 新消息 - 调试器默认开启

本条新闻由kurain (未验证)发表于2013年2月1日

几天前,Rene Gollent 将 Haiku Debugger 设为了默认调试器。从 45032 版本开始,在应用程序崩溃时,您将会被提示是否在Haiku调试器中显示应用信息。这将会具有非常重大意义,因为它表明我们的Haiku调试器已经可用于日常使用。之前,Haiku 使用命令行工具 gdb ,尽管它非常强大,但却并不友好,尤其是对于熟悉图形调试工具的用户来说。

修改内容

当程序崩溃时,系统弹出如下对话框:

如果您点击 Save Report ,调试日志将会保存为文本文件,可供添加到错误反馈报告。如果您点击 Debug ,那么系统将会弹出 Haiku 调试器,而不是之前的gdb。

作者和代码

发行声明(R1A4)

2012年11月12日 — Haiku项目非常高兴能够发布我们的第四个官方测试版本。在第三个测试版发布后的一年零四个月之后,Haiku项目经历了非常紧张的开发。本测试版的主要目的是为第三方的开发者提供一个稳定的测试和开发平台。为了帮助他们,Haiku包含了丰富的开发工具。

本测试版包含了很多新的特性和提升,如下:

  • 错误修复 - 自从第三个测试版发布后,我们修复了1000多个错误。
  • 调试工具 - 我们提供了新的调试程序。并且可用于在KDL中生成QR代码。
  • 文件系统 - BFS文件系统更为健壮。提升NTFS支持,以及更好的蓝光光盘支持。
  • 硬件设备 - 提升了对USB OHCI 驱动,以及CPU的识别。
  • 本地化 - 添加了更多的翻译,以及新的键盘映射切换程序。
  • 多媒体 - 新添了 10 频段均衡器。
  • 网络 - 提升了网卡驱动支持,新添加了pcnet驱动,以及早期的 IPv6 支持。

Haiku引导架构

本文将会讲述Haiku引导架构当前的发展情况,其中将会涉及到早期引导阶段等信息,以及平台移植问题。本文可以作为How to get Haiku booted的扩展部分。

硬件加载

下面我们将会描述独立于系统而依赖于硬件架构的不同引导过程。每个平台目前的发展情况如下。

X86系统有许多的选项以载入第一阶段的加载器。它可以借助不同的加载器进行引导,例如LILO,GRUB,U-Boot,或者直接通过主引导记录(MBR)中的引导代码。X86第一阶段的引导代码位于stage1.bin,放置于BFS分区的起始部分。其他可用于x86新系统的选择是通过EFI固件引导进入第一阶段的Haiku加载器,EFI类似于著名的OpenFirmware硬件抽象标准。

远程启动Haiku

对于最近更新的Haiku版本,Haiku根磁盘镜像可以通过本地网络远程启动。当在某个平台系统引导时出现内核错误,需要进行错误跟踪时尤为有用。

在下述示例中,我们将介绍在不同平台上远程引导Haiku。目前,这些操作主要面向开发人员。

前期准备

BeTex 和 LaTex 回归

本条新闻由kurain (未验证)发表于2012年7月3日

BeTex 和 Latex 回来了。虽然我没有在 Haiku 下面使用过 Latex 或者 BeTex, 但是它们的回归,确实会让我们沸腾,尽管我们暂时还没有 GoBeProductive,也没有 libreOffice(OpenOffice),或者 MS Word,但是 BeTex 和 Latex 的归来,让我们拥有了神器。虽然这神器带着洪荒的遗痕,但却熠熠生辉。

Tex - 暗黑时代的神器

TEX,是由由美国计算机教授高德纳(Donald E. Knuth)编写的功能强大的排版软件,它在学术界,特别是数学,物理学和计算机科学界。TEX被普遍认为是一个很好的排版工具,特别是在处理复杂的数学公式时。利用诸如是LaTeX等终端软件,TEX就能够排版出精美的文本。高德纳的皇皇巨著《计算机程序设计艺术》催使了这款软件的诞生,它始于1978年,历时10多年,在1989年最终停止修改。

LaTex

Haiku OS的黎明

本条新闻由dgy18787 (未验证)发表于2012年5月2日

2001年夏天,程序员Michael Phipps心绪不宁,因为他最爱的桌面系统BeOS即将走向死亡。对一个软件寄予如此深情可能会令人吃惊,但对Phipps等人来说BeOS当之无愧。在当时它运行最流畅,界面直观,并提供了丰富而有趣的编程环境。简而言之,它比当时的其它操作系统更先进。但开发商退出了市场,并将包括BeOS在内的资产出售给竞争对手。Phipps决定创造BeOS的BeOS的开源实现

第二十课

拖拽支持

拖拽是最简单的和系统中其他程序进行交互的方式。多数时候,开发者会在真空中创建他们重达133吨的项目,而忽视了一个事实,用户并不是在真空中使用这一新项目,而是与其他的程序结合使用。例如,在文本处理程序中编写文档可能还需要不时的使用图像编辑器来为用户的文档中添加图片。通过添加拖拽支持,您可以让用户更加快速的进行工作。根据您所实现的程序的不同,添加放置的支持很简单,但是拖动可就有点困难了。

根据 Be Book,在Haiku中,有两种方式来支持拖拽:简单的和协商的方式。但它们都依赖于消息机制来完成这一任务。对于简单的方式,其将一些数据打包入按键释放时发送到目标的消息。接受消息的程序识别出数据,并执行合适的动作。而协商的拖拽方式,就像在某个偏僻的小巷,召唤出带有魔咒的羊皮纸,向虚伪的商人询问时间,其原理如下:

  1. 发送方在拖动消息中放入格式相关的数据字段,我们稍后在对它们详细介绍。
  2. 接收方从格式字段中读取数据,并回复一个所需数据格式的请求和希望对数据进行的处理。
  3. 发送方接收请求,根据请求对数据进行所需的处理,然后以请求的格式发送数据。
  4. 接收方从第二条消息中读取数据,然后任意加以处置。

简单拖拽

第二十二课

深入开发:QuickEdit

假若所有的计算机程序都如HelloWorld或其他演示程序那般简单!开发人员的生活就不会那般艰难。奈何,事实并不如此。在接下来的几节课中,我们将会揭去这层薄的面纱,深入其中了。为任何的操作系统设计简单的程序都会如这些程序一般琐碎,并且它们都会非常的粗糙。幸运的是,随着我们对操作系统功能的学习和了解,您将会对编写稍大型的Haiku程序中所涉及到的内容有所认识。

您可能会问,我们的项目会是什么呢?它是一个简单的格式化文本编辑器,QuickEdit。

尽管Haiku已经有了一个编辑器StyledEdit,所以,毫无疑问,我们编写的代码将会与它有所雷同,但我们添加的功能并不一定都能够在StyledEdit中找到。

第二十一课

Haiku Replicants

“神光普照,雷声轰鸣,天使腾空待发;天际处,黑云密布,鬼影瞳瞳。”

在Haiku的世界里,Replicant除了带了惊奇之外,别无其他,而且它们与刀锋战士无关。相反,它们与组件技术非常相似。对于不熟悉的人来说,组件属于面向对象编程的范畴,程序由对象构成,而它们虽具不同功能,但却具有通用的接口。而Replicant则内建于Haiku API,是一种与基于BView对象交互的方法,但不需要对其有任何了解。远在1995年,BeOS能够在桌面上嵌入一个网络浏览器,而不会像Windows 95一样带来严重的安全风险。但不幸的是,在Be引入这一功能之后,并没有对其进行广泛的使用,但是在近几年,Haiku的开发者则对其进行了推广使用。在本节里,我们将花一些时间来了解它们的原理。

第十九课

在上节课中,我们介绍了Haiku的脚本API,例如如何通过hey终端命令进行操作。那么这节课我们将继续深入,了解使用C++构建脚本的机制。

详解 Haiku 消息

首先,通过脚本API使用C++来操作其他程序的想法乍看之下,毫无头绪,但是我们有理由这么做。其中之一就是它所带来的巨大便利。hey具有自身的限制,其中最重要的原因是它不具有执行命令的能力,并且需要摒弃一些数据以迎合bash命令解析。使用C++来构建脚本需要对Haiku API 的消息类的了解更为深入,而非流于表面,但是它也通过脚本接口带来了强大的功能。

多数 GUI 开发并不会过多的涉及到消息处理类,因为 API 都已经非常完备。多数情况下,我们对应于消息,仅仅明确的发送一次。那么让我们快速的浏览一下那些用于脚本的消息处理类。

BHandler 和 BLooper 完成了消息处理的大部分工作。BHandler 对消息作出响应。BLooper接收消息,并将其传递给附属的BHandler列表,直到它们其中之一对消息作出某些动作,因为BLooper是BHandler的子类,BLooper也可以对消息作出响应。多数情况下,当发送消息到BWindow及其基于BView的控件时,才会发生,BWindow是BLooper的子类,而BView是BHandler的直接子类。

BMessenger 是用以传递这些四处发送的脚本消息的方法。它的对象可能是BLooper或者BHandler,并且提供了一种发送消息到这些对象的方式,而不管对象时在您的程序或者是系统中的其他地方。

C++脚本

使用C++来构建脚本与使用hey并无很大区别。虽然需要很多的输入,但其内容基本完全一样:每个hey命令都是一个单独的消息,而命令仅仅是BMessage的what属性,而其他的则是供BMessage对应方法所处理的说明符。

同步内容 同步内容