Steve Emms 发布的文章

Roguelike 属于角色扮演游戏的一个子流派,它从字面上理解就是“类 Rogue 游戏”。Rogue 是一个地牢探索视频游戏,第一个版本由开发者 Michel Toy、Glenn Wichman 和 Ken Arnold 在 1980 年发布,由于其极易上瘾使得它从一众游戏中脱颖而出。整个游戏的目标是深入第 26 层,取回 Yendor 的护身符并回到地面,所有设定都基于龙与地下城的世界观。

Rogue 被认为是一个经典、极其困难并且让人废寝忘食的游戏。虽然它在大学校园中非常受欢迎,但并不十分畅销。在 Rogue 发布时,它并没有使用开源许可证,导致了爱好者们开发了许多克隆版本。

对于 Roguelike 游戏并没有一个明确的定义,但是此类游戏会拥有下述的典型特征:

  • 高度魔幻的叙事背景;
  • 程序化生成关卡。游戏世界中的大部分地图在每次开始游戏时重新生成,也就意味着鼓励多周目;
  • 回合制的地牢探险和战斗;
  • 基于图块随机生成的图形;
  • 随机的战斗结果;
  • 永久死亡——死亡实际起作用,一旦死亡你就需要重新开始
  • 高难度

此篇文章收集了大量 Linux 平台可玩的 Roguelike 游戏。如果你享受提供真实紧张感的上瘾游戏体验,我衷心推荐你下载这些游戏。不要被其中很多游戏的原始画面吓退,一旦你沉浸其中你会很快忽略简陋的画面。记住,在 Roguelike 游戏中应是游戏机制占主导,画面只是一个加分项而不是必需项。

此处推荐 16 款游戏。所有的游戏都可免费下载,并且大部分采用开源许可证发布。

Roguelike 游戏
Dungeon Crawl Stone SoupLinley 的 Dungeon Crawl 的续作
Prospector基于科幻小说世界观的 Roguelike 游戏
Dwarf Fortress冒险和侏儒塔防
NetHack非常怪诞并且令人上瘾的龙与地下城风格冒险游戏
Angband沿着 Rogue 和 NetHack 的路线,它源于游戏 Moria 和 Umoria
Ancient Domains of Mystery非常成熟的 Roguelike 游戏
Tales of Maj’Eyal特色的策略回合制战斗与先进的角色培养系统
UnNetHackNetHack 的创新复刻
Hydra Slayer基于数学谜题的 Roguelike 游戏
Cataclysm DDA后启示录风格 Roguelike 游戏,设定于虚构的新英格兰乡下
BrogueRogue 的正统续作
Goblin Hack受 NetHack 启发的游戏, 但密钥更少游戏流程更快
Ascii Sector拥有 Roguelike 动作系统的 2D 版贸易和太空飞行模拟器
SLASH'EMSuper Lotsa Added Stuff Hack - Extended Magic
Everything Is FodderSeven Day Roguelike 比赛入口
Woozoolike7DRL 2017 比赛中一款简单的太空探索 Roguelike 游戏

via: https://www.linuxlinks.com/excellent-free-roguelike-games/

作者:Steve Emms 译者:cycoe 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

开源的 Ruby 书籍

Ruby 是由 Yukihiro “Matz” Matsumoto 开发的一门通用目的、脚本化、结构化、灵活且完全面向对象的编程语言。它具有一个完全动态类型系统,这意味着它的大多数类型检查是在运行的时候进行,而非编译的时候。因此程序员不必过分担心是整数类型还是字符串类型。Ruby 会自动进行内存管理,它具有许多和 Python、Perl、Lisp、Ada、Eiffel 和 Smalltalk 相同的特性。

Ruby on Rails 框架对于 Ruby 的流行起到了重要作用,它是一个全栈 Web 框架,目前已被用来创建许多受欢迎的应用,包括 Basecamp、GitHub、Shopify、Airbnb、Twitch、SoundCloud、Hulu、Zendesk、Square 和 Highise 。

Ruby 具有很高的可移植性性,在 Linux、Windows、Mac OS X、Cygwin、FreeBSD、NetBSD、OpenBSD、BSD/OS、Solaris、Tru64 UNIX、HP-UX 以及其他许多系统上均可运行。目前,Ruby 在 TIOBE 编程社区排名 12 。

这篇文章有 9 本很优秀的推荐书籍,有针对包括初学者、中级程序员和高级程序员的书籍。当然,所有的书籍都是在开源许可下发布的。

这篇文章是 OSSBlog 的系列文章开源编程书籍的一部分。

Ruby Best Practices

作者: Gregory Brown (328 页)

《Ruby Best Practices》适合那些希望像有经验的 Ruby 专家一样使用 Ruby 的程序员。本书是由 Ruby 项目 Prawn 的开发者所撰写的,它阐述了如何使用 Ruby 设计美丽的 API 和特定领域语言,以及如何利用函数式编程想法和技术,从而简化代码,提高效率。

《Ruby Best Practices》 更多的内容是关于如何使用 Ruby 来解决问题,它阐述的是你应该使用的最佳解决方案。这本书不是针对 Ruby 初学者的,所以对于编程新手也不会有太多帮助。这本书的假想读者应该对 Ruby 的相应技术有一定理解,并且拥有一些使用 Ruby 来开发软件的经验。

这本书分为两部分,前八章组成本书的核心部分,后三章附录作为补充材料。

这本书提供了大量的信息:

  • 通过测试驱动代码 - 涉及了大量的测试哲学和技术。使用 mocks 和 stubs
  • 通过利用 Ruby 神秘的力量来设计漂亮的 API:灵活的参数处理和代码块
  • 利用动态工具包向开发者展示如何构建灵活的界面,实现单对象行为,扩展和修改已有代码,以及程序化地构建类和模块
  • 文本处理和文件管理集中于正则表达式,文件、临时文件标准库以及文本处理策略实战
  • 函数式编程技术优化了模块代码组织、存储、无穷目录以及更高顺序程序。
  • 理解代码如何出错以及为什么会出错,阐述如何处理日志记录
  • 通过利用 Ruby 的多语言能力削弱文化屏障
  • 熟练的项目维护

本书为开源书籍,在 CC NC-SA 许可证下发布。

在此下载《Ruby Best Practices》

I Love Ruby

作者: Karthikeyan A K (246 页)

《I Love Ruby》以比传统的介绍更高的深度阐述了基本概念和技术。该方法为编写有用、正确、易维护和高效的 Ruby 代码提供了一个坚实的基础。

章节内容涵盖:

  • 变量
  • 字符串
  • 比较和逻辑
  • 循环
  • 数组
  • 哈希和符号
  • Ranges
  • 函数
  • 变量作用域
  • 类 & 对象
  • Rdoc
  • 模块和 Mixins
  • 日期和时间
  • 文件
  • Proc、匿名 和 块
  • 多线程
  • 异常处理
  • 正则表达式
  • Gems
  • 元编程

在 GNU 自由文档许可证之下,你可以复制、发布和修改本书,1.3 或任何之后版本由自由软件基金会发布。

点此下载《I Love Ruby》

Programming Ruby – The Pragmatic Programmer’s Guide

作者: David Thomas, Andrew Hunt (HTML)

《Programming Ruby – The Pragmatic Programmer’s Guide》是一本 Ruby 编程语言的教程和参考书。使用 Ruby,你将能够写出更好的代码,更加有效率,并且使编程变成更加享受的体验。

内容涵盖以下部分:

  • 类、对象和变量
  • 容器、块和迭代器
  • 标准类型
  • 更多方法
  • 表达式
  • 异常、捕获和抛出
  • 模块
  • 基本输入和输出
  • 线程和进程
  • 何时抓取问题
  • Ruby 和它的世界、Web、Tk 和 微软 Windows
  • 扩展 Ruby
  • 映像、对象空间和分布式 Ruby
  • 标准库
  • 面向对象设计库
  • 网络和 Web 库
  • 嵌入式文件
  • 交互式 Ruby shell

这本书的第一版在开放发布许可证 1.0 版或更新版的许可下发布。本书更新后的第二版涉及 Ruby 1.8 ,并且包括所有可用新库的描述,但是它不是在免费发行许可证下发布的。

点此下载《Programming Ruby – The Pragmatic Programmer’s Guide》

Why’s (Poignant) Guide to Ruby

作者:why the lucky stiff (176 页)

《Why’s (poignant) Guide to Ruby》是一本 Ruby 编程语言的介绍书籍。该书包含一些冷幽默,偶尔也会出现一些和主题无关的内容。本书包含的笑话在 Ruby 社区和卡通角色中都很出名。

本书的内容包括:

  • 关于本书
  • Kon’nichi wa, Ruby
  • 一个快速(希望是无痛苦的)的 Ruby 浏览(伴随卡通角色):Ruby 核心概念的基本介绍
  • 代码浮动小叶:评估和值,哈希和列表
  • 组成规则的核心部分:case/when、while/until、变量作用域、块、方法、类定义、类属性、对象、模块、IRB 中的内省、dup、self 和 rbconfig 模块
  • 中心:元编程、正则表达式
  • 当你打算靠近胡须时:在已存在类中发送一个新方法
  • 天堂演奏

本书在 CC-SA 许可证许可下可用。

点此下载《Why’s (poignant) Guide to Ruby》

Ruby Hacking Guide

作者: Minero Aoki ,翻译自 Vincent Isambart 和 Clifford Escobar Caoille (HTML)

通过阅读本书可以达成下面的目标:

  • 拥有关于 Ruby 结构的知识
  • 掌握一般语言处理的知识
  • 收获阅读源代码的技能

本书分为四个部分:

  • 对象
  • 动态分析
  • 评估
  • 外部评估

要想从本书中收获最多的东西,需要具备一定 C 语言的知识和基本的面向对象编程知识。本书在 CC-NC-SA 许可证许可下发布。

原书的官方支持网站为 i.loveruby.net/ja/rhg/

点此下载《Ruby Hacking Guide》

The Book Of Ruby

作者: How Collingbourne (425 页)

《The Book Of Ruby》是一本免费的 Ruby 编程高级教程。

《The Book Of Ruby》以 PDF 文件格式提供,并且每一个章节的所有例子都伴有可运行的源代码。同时,也有一个介绍来阐述如何在 Steel 或其他任何你喜欢的编辑器/IDE 中运行这些 Ruby 代码。它主要集中于 Ruby 语言的 1.8.x 版本。

本书被分成很小的块。每一个章节介绍一个主题,并且分成几个不同的子话题。每一个编程主题由一个或多个小的自包含、可运行的 Ruby 程序构成。

  • 字符串、数字、类和对象 - 获取输入和输出、字符串和外部评估、数字和条件测试:if ... then、局部变量和全局变量、类和对象、实例变量、消息、方法、多态性、构造器和检属性和类变量 - 超类和子类,超类传参,访问器方法,’set‘ 访问器,属性读写器、超类的方法调用,以及类变量
  • 类等级、属性和类变量 - 超类和子类,超类传参,访问器方法,’set‘ 访问器,属性读写器、超类的方法调用,以及类变量
  • 字符串和 Ranges - 用户自定义字符串定界符、引号等更多
  • 数组和哈希 - 展示如何创建一系列对象
  • 循环和迭代器 - for 循环、代码块、while 循环、while 修改器以及 until 循环
  • 条件语句 - If..Then..Else、And..Or..Not、If..Elsif、unless、if 和 unless 修改器、以及 case 语句
  • 方法 - 类方法、类变量、类方法是用来干什么的、Ruby 构造器、单例方法、单例类、重载方法以及更多
  • 传递参数和返回值 - 实例方法、类方法、单例方法、返回值、返回多重值、默认参数和多重参数、赋值和常量传递以及更多
  • 异常处理 - 涉及 rescue、ensure、else、错误数量、retry 和 raise
  • 块、Procs 和 匿名 - 阐述为什么它们对 Ruby 来说很特殊
  • 符号 - 符号和字符串、符号和变量以及为什么应该使用符号
  • 模块和 Mixins
  • 文件和 IO - 打开和关闭文件、文件和目录、复制文件、目录询问、一个关于递归的讨论以及按大小排序
  • YAML - 包括嵌套序列,保存 YAML 数据以及更多
  • Marshal - 提供一个保存和加载数据的可选择方式
  • 正则表达式 - 进行匹配、匹配群组以及更多
  • 线程 - 向你展示如何同时运行多个任务
  • 调试和测试 - 涉及交互式 Ruby shell(IRB.exe)、debugging 和 单元测试
  • Ruby on Rails - 浏览一个创建博客的实践指南
  • 动态编程 - 自修改程序、重运算魔法、特殊类型的运算、添加变量和方法以及更多

本书由 SapphireSteel Software 发布,SapphireSteel Software 是用于 Visual Studio 的 Ruby In Steel 集成开发环境的开发者。读者可以复制和发布本书的文本和代码(免费版)

点此下载《The Book Of Ruby》

The Little Book Of Ruby

作者: Huw Collingbourne (87 页)

《The Little Book of Ruby》是一本一步接一步的 Ruby 编程教程。它指导读者浏览 Ruby 的基础。另外,它分享了《The Book of Ruby》一书的内容,但是它旨在作为一个简化的教程来阐述 Ruby 的主要特性。

章节内容涵盖:

  • 字符串和方法 - 包括外部评估。详细描述了 Ruby 方法的语法
  • 类和对象 - 阐述如何创建一个新类型的对象
  • 类等级 - 一个特殊类型的类,其为一些其他类的简化并且继承了其他一些类的特性
  • 访问器、属性、类变量 - 访问器方法,属性读写器,属性创建变量,调用超类方法以及类变量探索
  • 数组 - 学习如何创建一系列对象:数组包括多维数组
  • 哈希 - 涉及创建哈希表,为哈希表建立索引以及哈希操作等
  • 循环和迭代器 - for 循环、块、while 循环、while 修饰器以及 until 循环
  • 条件语句 - If..Then..Else、And..Or..Not、If..Elsif、unless、if 和 unless 修饰器以及 case 语句
  • 模块和 Mixins - 包括模块方法、模块作为名字空间模块实例方法、模块或 'mixins'、来自文件的模块和预定义模块
  • 保存文件以及更多内容

本书可免费复制和发布,只需保留原始文本且注明版权信息。

点此下载《The Little Book of Ruby》

Kestrels, Quirky Birds, and Hopeless Egocentricity

作者: Reg “raganwald” Braithwaite (123 页)

《Kestrels, Quirky Birds, and Hopeless Egocentricity》是通过收集 “Raganwald” Braithwaite 的关于组合逻辑、Method Combinators 以及 Ruby 元编程的系列文章而形成的一本方便的电子书。

本书提供了通过使用 Ruby 编程语言来应用组合逻辑的一个基本介绍。组合逻辑是一种数学表示方法,它足够强大,从而用于解决集合论问题以及计算中的问题。

在这本书中,读者会会探讨到一些标准的 Combinators,并且对于每一个 Combinators,书中都用 Ruby 编程语言写程序探讨了它的一些结果。在组合逻辑上,Combinators 之间组合并相互改变,书中的 Ruby 例子注重组合和修改 Ruby 代码。通过像 K Combinator 和 .tap 方法这样的简单例子,本书阐述了元编程的理念和递归 Combinators 。

本书在 MIT 许可证许可下发布。

点此下载《Kestrels, Quirky Birds, and Hopeless Egocentricity》

Ruby Programming

作者: Wikibooks.org (261 页)

Ruby 是一种解释性、面向对象的编程语言。

本书被分为几个部分,从而方便按顺序阅读。

  • 开始 - 向读者展示如何在其中一个操作系统环境中安装并开始使用 Ruby
  • Ruby 基础 - 阐述 Ruby 语法的主要特性。它涵盖了字符串、编码、写方法、类和对象以及异常等内容
  • Ruby 语义参考
  • 内建类
  • 可用模块,涵盖一些标准库
  • 中级 Ruby 涉及一些稍微高级的话题

本书在 CC-SA 3.0 本地化许可证许可下发布。

点此下载《Ruby Programming》


无特定顺序,我将在结束前推荐一些没有在开源许可证下发布但可以免费下载的 Ruby 编程书籍。


via: https://www.ossblog.org/study-ruby-programming-with-open-source-books/

作者:Steve Emms 译者:ucasFL 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Markdown

首先,对 Markdown 进行一个简单的介绍。Markdown 是由 John Gruber 和 Aaron Swartz 共同创建的一种轻量级纯文本格式语法。Markdown 可以让用户“以易读、易写的纯文本格式来进行写作,然后可以将其转换为有效格式的 XHTML(或 HTML)“。Markdown 语法只包含一些非常容易记住的符号。其学习曲线平缓;你可以在炒蘑菇的同时一点点学习 Markdown 语法(大约 10 分钟)。通过使用尽可能简单的语法,错误率达到了最小化。除了拥有友好的语法,它还具有直接输出干净、有效的(X)HTML 文件的强大功能。如果你看过我的 HTML 文件,你就会知道这个功能是多么的重要。

Markdown 格式语法的主要目标是实现最大的可读性。用户能够以纯文本的形式发布一份 Markdown 格式的文件。用 Markdown 进行文本写作的一个优点是易于在计算机、智能手机和个人之间共享。几乎所有的内容管理系统都支持 Markdown 。它作为一种网络写作格式流行起来,其产生一些被许多服务采用的变种,比如 GitHub 和 Stack Exchange 。

你可以使用任何文本编辑器来写 Markdown 文件。但我建议使用一个专门为这种语法设计的编辑器。这篇文章中所讨论的软件允许你使用 Markdown 语法来写各种格式的专业文档,包括博客文章、演示文稿、报告、电子邮件以及幻灯片等。另外,所有的应用都是在开源许可证下发布的,在 Linux、OS X 和 Windows 操作系统下均可用。

Remarkable

让我们从 Remarkable 开始。Remarkable 是一个 apt 软件包的名字,它是一个相当有特色的 Markdown 编辑器 — 它并不支持 Markdown 的全部功能特性,但该有的功能特性都有。它使用和 GitHub Markdown 类似的语法。

你可以使用 Remarkable 来写 Markdown 文档,并在实时预览窗口查看更改。你可以把你的文件导出为 PDF 格式(带有目录)和 HTML 格式文件。它有强大的配置选项,从而具有许多样式,因此,你可以把它配置成你最满意的 Markdown 编辑器。

其他一些特性:

在 Debian、Ubuntu、Fedora、SUSE 和 Arch 系统上均有 Remarkable 的可用的简易安装程序。

主页: https://remarkableapp.github.io/ 许可证: MIT 许可

Atom

毫无疑问, Atom 是一个神话般的文本编辑器。超过 50 个开源包集合在一个微小的内核上,从而构成 Atom 。伴有 Node.js 的支持,以及全套功能特性,Atom 是我最喜欢用来写代码的编辑器。Atom 的特性在杀手级开源应用的文章中有更详细介绍,它是如此的强大。但是作为一个 Markdown 编辑器,Atom 还有许多不足之处,它的默认包不支持 Markdown 的特性。例如,正如上图所展示的,它不支持等价渲染。

但是,开源拥有强大的力量,这是我强烈提倡开源的一个重要原因。Atom 上有许多包以及一些复刻,从而添加了缺失的功能特性。比如,Markdown Preview Plus 提供了 Markdown 文件的实时预览,并伴有数学公式渲染和实时重加载。另外,你也可以尝试一下 Markdown Preview Enhanced。如果你需要自动滚动特性,那么 markdown-scroll-sync 可以满足你的需求。我是 Markdown-WriterMarkdown-pdf的忠实拥趸,后者支持将 Markdown 快速转换为 PDF、PNG 以及 JPEG 文件。

这个方式体现了开源的理念:允许用户通过添加扩展来提供所需的特性。这让我想起了 Woolworths 的 n 种杂拌糖果的故事。虽然需要多付出一些努力,但能收获最好的回报。

主页: https://atom.io/ 许可证: MIT 许可

Haroopad

Haroopad 是一个优秀的 Markdown 编辑器,是一个用于创建适宜 Web 的文档的处理器。使用 Haroopad 可以创作各种格式的文档,比如博客文章、幻灯片、演示文稿、报告和电子邮件等。Haroopad 在 Windows、Mac OS X 和 Linux 上均可用。它有 Debian/Ubuntu 的软件包,也有 Windows 和 Mac 的二进制文件。该应用程序使用 node-webkit、CodeMirror,marked,以及 Twitter 的 Bootstrap 。

Haroo 在韩语中的意思是“一天”。

它的功能列表非常可观。请看下面:

  • 主题、皮肤和 UI 组件

    • 超过 30 种不同的编辑主题 - tomorrow-night-bright 和 zenburn 是近期刚添加的
    • 编辑器中的代码块的语法高亮
    • Ruby、Python、PHP、Javascript、C、HTML 和 CSS 的语法高亮支持
    • 基于 CodeMirror,这是一个在浏览器中使用 JavaScript 实现的通用文本编辑器
  • 实时预览主题

    • 基于 markdown-css 的 7 个主题
  • 语法高亮

    • 基于 hightlight.js 的 112 种语言以及 49 种样式
  • 定制主题

    • 基于 CSS (层叠样式表)的样式
  • 演示模式 - 对于现场演示非常有用
  • 绘图 - 流程图和序列图
  • 任务列表
  • 扩展 Markdown 语法,支持 TOC(目录)、 GitHub 风味 Markdown 以及数学表达式、脚注和任务列表等
  • 字体大小

    • 使用首选窗口和快捷键来设置编辑器和预览字体大小
  • 嵌入富媒体内容

    • 视频、音频、3D、文本、开放图形以及 oEmbed
    • 支持大约 100 种主要的网络服务(YouTude、SoundCloud、Flickr 等)
    • 支持拖放
  • 显示模式

    • 默认:编辑器|预览器,倒置:预览器|编辑器,仅编辑器,仅预览器(View -> Mode)
  • 插入当前日期和时间

    • 多种格式支持(Insert -> Data & Time)
  • HtML 到 Markdown

    • 拖放你在 Web 浏览器中选择好的文本
  • Markdown 解析选项
  • 大纲预览
  • 纯粹主义者的 Vim 键位绑定
  • Markdown 自动补全
  • 导出为 PDF 和 HTML
  • 带有样式的 HTML 复制到剪切板可用于所见即所得编辑器
  • 自动保存和恢复
  • 文件状态信息
  • 换行符或空格缩进
  • (一、二、三)列布局视图
  • Markdown 语法帮助对话框
  • 导入和导出设置
  • 通过 MathJax 支持 LaTex 数学表达式
  • 导出文件为 HTML 和 PDF
  • 创建扩展来构建自己的功能
  • 高效地将文件转换进博客系统:WordPress、Evernote 和 Tumblr 等
  • 全屏模式-尽管该模式不能隐藏顶部菜单栏和顶部工具栏
  • 国际化支持:英文、韩文、西班牙文、简体中文、德文、越南文、俄文、希腊文、葡萄牙文、日文、意大利文、印度尼西亚文土耳其文和法文

主页 http://pad.haroopress.com/ 许可证: GNU GPL v3 许可

StackEdit

StackEdit 是一个功能齐全的 Markdown 编辑器,基于 PageDown(该 Markdown 库被 Stack Overflow 和其他一些 Stack 交流网站使用)。不同于在这个列表中的其他编辑器,StackEdit 是一个基于 Web 的编辑器。在 Chrome 浏览器上即可使用 StackEdit 。

特性包括:

  • 实时预览 HTML,并通过绑定滚动连接特性来将编辑器和预览的滚动条相绑定
  • 支持 Markdown Extra 和 GitHub 风味 Markdown,Prettify/Highlight.js 语法高亮
  • 通过 MathJax 支持 LaTex 数学表达式
  • 所见即所得的控制按键
  • 布局配置
  • 不同风格的主题支持
  • la carte 扩展
  • 离线编辑
  • 可以与 Google 云端硬盘(多帐户)和 Dropbox 在线同步
  • 一键发布到 Blogger、Dropbox、Gist、GitHub、Google Drive、SSH 服务器、Tumblr 和 WordPress

主页: https://stackedit.io/ 许可证: Apache 许可

MacDown

MacDown 是在这个列表中唯一一个只运行在 macOS 上的全特性编辑器。具体来说,它需要在 OX S 10.8 或更高的版本上才能使用。它在内部使用 Hoedown 将 Markdown 渲染成 HTML,这使得它的特性更加强大。Heodown 是 Sundown 的一个复活复刻。它完全符合标准,无依赖,具有良好的扩展支持和 UTF-8 感知。

MacDown 基于 Mou,这是专为 Web 开发人员设计的专用解决方案。

它提供了良好的 Markdown 渲染,通过 Prism 提供的语言识别渲染实现代码块级的语法高亮,MathML 和 LaTex 渲染,GTM 任务列表,Jekyll 前端以及可选的高级自动补全。更重要的是,它占用资源很少。想在 OS X 上写 Markdown?MacDown 是我针对 Web 开发者的开源推荐。

主页: https://macdown.uranusjr.com/ 许可证: MIT 许可

ghostwriter

ghostwriter 是一个跨平台的、具有美感的、无干扰的 Markdown 编辑器。它内建了 Sundown 处理器支持,还可以自动检测 pandoc、MultiMarkdown、Discount 和 cmark 处理器。它试图成为一个朴实的编辑器。

ghostwriter 有许多很好的功能设置,包括语法高亮、全屏模式、聚焦模式、主题、通过 Hunspell 进行拼写检查、实时字数统计、实时 HTML 预览、HTML 预览自定义 CSS 样式表、图片拖放支持以及国际化支持。Hemingway 模式按钮可以禁用退格键和删除键。一个新的 “Markdown cheat sheet” HUD 窗口是一个有用的新增功能。主题支持很基本,但在 GitHub 仓库上也有一些可用的试验性主题。

ghostwriter 的功能有限。我越来越欣赏这个应用的通用性,部分原因是其简洁的界面能够让写作者完全集中在策划内容上。这一应用非常值得推荐。

ghostwirter 在 Linux 和 Windows 系统上均可用。在 Windows 系统上还有一个便携式的版本可用。

主页: https://github.com/wereturtle/ghostwriter 许可证: GNU GPL v3 许可

Abricotine

Abricotine 是一个为桌面构建的、旨在跨平台且开源的 Markdown 编辑器。它在 Linux、OS X 和 Windows 上均可用。

该应用支持 Markdown 语法以及一些 GitHub 风味的 Markdown 增强(比如表格)。它允许用户直接在文本编辑器中预览文档,而不是在侧窗栏。

该应用有一系列有用的特性,包括拼写检查、以 HTML 格式保存文件或把富文本复制粘贴到邮件客户端。你也可以在侧窗中显示文档目录,展示语法高亮代码、以及助手、锚点和隐藏字符等。它目前正处于早期的开发阶段,因此还有一些很基本的 bug 需要修复,但它值得关注。它有两个主题可用,如果有能力,你也可以添加你自己的主题。

主页: http://abricotine.brrd.fr/ 许可证: GNU 通用公共许可证 v3 或更高许可

ReText

ReText 是一个简单而强大的 Markdown 和 reStructureText 文本编辑器。用户可以控制所有输出的格式。它编辑的文件是纯文本文件,但可以导出为 PDF、HTML 和其他格式的文件。ReText 官方仅支持 Linux 系统。

特性包括:

  • 全屏模式
  • 实时预览
  • 同步滚动(针对 Markdown)
  • 支持数学公式
  • 拼写检查
  • 分页符
  • 导出为 HTML、ODT 和 PDF 格式
  • 使用其他标记语言

主页: https://github.com/retext-project/retext 许可证: GNU GPL v2 或更高许可


via: https://www.ossblog.org/markdown-editors/

作者:Steve Emms 译者:ucasFL 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

书是非常私人的东西,编程类书籍也不例外。我们都是通过阅读书籍来帮助掌握某种语言的基本知识。随后又通过阅读书籍来全面探索这门语言的灵活性。我仔细考察了一些我最喜爱的 C 语言书籍,并从其中选出了对我意义最大的九本。

C 语言是一种通用的、面向过程的高级编程语言。也是最具流行度和影响力的编程语言之一。该语言在设计时就被设计为可以通过编译器进行编译,以此来对内存进行底层操作、高效地执行机器指令以及在运行时仅需要最小的支持。很多很多编程语言都得益于 C 语言, C 语言就像是编程界的通用语言一样。

C 语言非常易懂。它允许程序员能够以一种清晰、简单、符合逻辑的方式来组织程序。这是一种非常灵活、实用并且简洁的语言,同时它还具有非常容易读懂的语法。使用 C 语言编写的代码运行非常快。可以非常简单地操作计算机的底层设施。通过编译器的指令可以允许我们为不同体系结构的设备生成同一个版本的程序。

C 语言是自由的。因此学习 C 语言的书籍也是体现了其自由性。快来看看我挑选的开源书籍,有没有哪一本能够吸引你?好好享受它吧!

C 语言 The C Book

The C Book

C 语言 The C Book 》这本书是为那些已经具备使用现代高级面向过程编程语言的程序员设计的。这本书专注于那些 C 语言的特有之处。尤其是使用 C 语言的方式是这本书所重点关注的。作者: Mike Banahan, Declan Brady 和 Mark Doran ,350 页

包含以下章节:

  • 变量及运算法则介绍 – 介绍了 C 语言的基础知识, 包括关键字和标识符,变量声明,实数类型,整型,表达式和运算法则以及常量
  • 控制流及逻辑表达式 – 这一章介绍了在 C 语言中可以用于控制程序流程的几种方法,包括一些尚未介绍的语句。 控制流,逻辑表达式以及奇怪的运算符。
  • 函数 – 函数的类型, 递归,传参数以及链接
  • 数组和指针 – 数组, 指针, 字符处理, sizeof 以及储存空间分配, 函数指针,包含指针的表达式,数组,&运算符以及函数声明
  • 结构体数据类型 – 结构体, 联合体, 位字段, 枚举类型, 限定符、派生类型以及初始化
  • 预处理器 – 预处理器是如何工作的及其相关指令
  • C 语言中的一些特定内容 – 声明, 定义,typedef, constvolatile以及序列点
  • 库 – 诊断, 字符处理, 本地化, 与具体实现相关的限制, 数学函数, 非局部跳转, 信号处理, 可变参数, 输入输出, 格式化 I/O, 字符 I/O, 无格式 I/O, 随机访问函数, 通用函数, 字符串处理, 日期和时间
  • C 语言编写的完整程序 – 综合以上内容, main函数的参数, 解析程序参数, 模式匹配程序以及一个难度更大的程序

作者允许读者利用此书做任何他们想做的事情,只需说明作者和版权。经 Mike Banahan 确认,本书通过知识共享协议发布。

风格的要素—— C 语言版 C Elements of Style

C Elements of Style

作者 Steve Oualline ,265页

风格的要素—— C 语言版 C Elements of Style 》是一本十分有用的编程风格指南,指导 C 和 C++ 程序员如何去编写可读性良好的,易懂的,易于维护的程序。不论你是一个学生还是专业程序员,你都能从这本书中提供的技巧和技术中获益,构建优雅可靠的代码。

这本书意在向读者们展示如何在你的程序中融入风格良好的代码。机器仅处理代码,而人类关注于注释。良好的编程风格与这两部分都有关。

我们的最终目标是构建设计良好,编写良好的代码,这种代码对于计算机来说是高效的,同时包含了精心编写的注释用于帮助人类理解程序。这样一来,调试,维护和增强程序,都变得更加容易了。最终还提升了代码的可读性,简洁性,可靠性和可维护性。

在本书中,你可以找到有关编写注释,程序头,变量命名,语句格式化,语句细节,编写预处理器命令,组织目录和创建makefile的指南。

本书通过知识共享协议发布。

编写你自己的 Lisp 语言 Build Your Own Lisp

Build Your Own Lisp

作者 Daniel Holden ,212页

在学习 C 语言的同时学习如何创造你自己的编程语言——一个最简的 Lisp 语言(仅用不到1000行代码)。

编写你自己的 Lisp 语言 Build Your Own Lisp 》这本书是为两种人写的,一种是想要学习 C 语言的人,另一种是想要知道如何创建一门语言的人。本书并不适合作为第一本入门书籍,因为你需要一些编程经验才能读懂它的内容。

本书基于知识共享署名-非商业性使用-3.0 未本地化版本协议发布

纸质版可以在 Amazon 上购买。

GNU C 语言参考手册 The GNU C Reference Manual

The GNU C Reference Manual

作者 Trevis Rothwell, James Youngman ,91页

GNU C 语言参考手册 The GNU C Reference Manual 》是一本 C 语言参考手册,意在写明 C89,C99 标准以及当前 GNU 对标准 C 语言的扩展情况。本书并不适合新手阅读。

包含以下章节:

  • 词法元素——这部分内容描述了预编译之后,组成 C 语言代码的词法元素。包括 5 种:关键字,标识符,常量,操作符和分隔符
  • 数据类型——研究基础的数据类型,枚举,联合体,结构体,数组,指针,不完全类型,类型修饰词,储存类型修饰词以及重命名类型
  • 表达式和操作符 —— 还介绍了自增/自减,算数操作符,复共轭性,比较操作符,逻辑运算符,位移,位运算符,指针运算符,sizeof,类型转换等等。
  • 语句 —— 标签,表达式,if 语句,switch 语句,while 语句,do 语句,for 语句,代码块,null 语句,goto 语句,break 语句,continue 语句,return 语句以及 typedef 语句
  • 函数 —— 学习函数声明,函数定义,函数调用,参数,变长参数列表,通过指针调用函数,main 函数,递归函数等等。
  • 程序结构和定义域 —— 从宏观上来看程序
  • 一个例程 —— 一个用 C 语言编写的完整程序,包含 C 语言源文件和头文件。这个程序是一个典型“hello world”程序的扩展版,它向我们展示了在 GNU FSF 项目中 C 语言是如何工作的。

本书基于 GNU Free Documentation License Version 1.3 及其更新版本发布。

GNU C 语言编程教程 The GNU C Programming Tutorial

The GNU C Programming Tutorial

作者 Mark Burgess, Ron Hale-Evans ,290页

GNU C 语言编程教程 The GNU C Programming Tutorial 》以逻辑顺序向读者介绍了 C 语言的基本内容。本书内容涵盖了 C 语言的全部主要内容的细节以及如何使用 C 语言编程,特别强调了GNU/Linux编译器以及相关软件。

一些章节主要介绍了函数,变量以及声明,作用域,表达式和操作符,参数,指针,判定,循环,数组,字符串,输入输出等等。

本书基于 GNU Free Documentation License Version 1.1 版发布。

C 语言基础 Essential C

Essential C

作者 Nick Parlante ,45页

C 语言基础 Essential C 》这份简短的文档解释了 C 语言全部的常用特性和技术。这份文档十分简洁,因此它的目标人群是已经具有其他编程语言背景的人。

内容包括变量,整型,浮点型,类型提升,截断,操作符,控制结构(if,while,for),函数,数值参数,引用参数,结构体,指针,数组,预处理器以及 C 语言标准库函数。

目录:

  • 简介
  • 基础类型与运算符
  • 控制结构
  • 复杂数据类型
  • 函数
  • 杂项
  • 高级数组与指针
  • 运算符和标准库

根据作者的描述,我们得知这是一本基于开源协议发布的书籍。

Beej 的 C 语言教程 Beej’s Guide to C Programming

Beej’s Guide to C Programming

作者 Brian “Beej” Hall ,130 pages

Beej 的 C 语言教程 Beej’s Guide to C Programming 》试图为那些心存困惑的读者带来一种仅能通过纯粹 C 语言编程而产生的快感。

章节:

  • 构建程序的基本结构块
  • 变量,表达式和,语句。变量就是一个数字的名字——一个 C 语言表达式可以包含其他的表达式以及运算符。文章还介绍了ifwhiledo while以及程序重复执行的for语句。
  • 函数——当程序块变得很大,或是当这些程序块用来执行一些特定的工作时,我们会把它们封装到函数中。
  • 变量(续篇)——探讨了变量的作用域和储存类型
  • 指针——它们是数据在内存中的地址。就像一个整型的值可以是12,一个指针的值就是数据在内存中的地址
  • 结构体——结构体允许你将逻辑上相关的变量分组。随后你可以将其作为一个整体来使用。
  • 数组——一组相关数据的线性集合
  • 字符串—— C 语言中的字符串就是内存中的一组连续的比特,包含了一组字符
  • 动态内存——探讨了malloc(), free(), realloc() 和 calloc() 函数
  • 更多内容——指针运算,typedef,枚举,结构体声明,命令行参数,多维数组,类型转换和类型提升,不完整类型,void指针,NULL指针和static关键字
  • 标准输入输出库——用来进行文件的读写。
  • 字符串操作——用来查找子串的函数,连接字符串的函数,获取字符串长度的函数,等等。
  • 算数——一些可以满足你基本算数需求的函数。

本书基于知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本协议发布。

现代 C 语言 Modern C

Modern C

作者 Jens Gustedt ,310页

现代 C 语言 Modern C 》鼓励读者逐级探索 C 语言的特性。内容一共分为如下五层境界:

  • 第一层——使读者了解最基本的 C 语言程序。了解使用 C 语言的目的和数据结构,以及如何去使用它们
  • 第二层——详细的说明了大部分主要概念以及特性,包括控制结构,数据类型操作符和函数。这一级的主要目的是让读者能够对于这些运行程序必备的知识,有更深刻的理解。
  • 第三层——进入 C 语言的核心部分。详细的解释了指针,让你熟悉 C 语言的内存模型,并且让你了解大多数 C 语言库的接口
  • 第四层——深入理解一些特定的主题。比如性能,重入,原子性,线程及泛型编程
  • 第五层——探讨了作者对这门语言未来发展趋势的理解

本书基于知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本协议发布

GCC 简介 An Introduction to GCC

An Introduction to GCC

作者 Brian Gough ,144页

GCC 简介 An Introduction to GCC 》介绍了 GNU C 语言和 C++编译器——gcc 和 g++,它们是 GNU 编译器套装(GCC)的一部分。

本书介绍了如何使用编译器。通过多年以来对邮件列表中的问题的观察,本书带领读者直击 GCC 的重要内容。

章节介绍:

  • 编译c程序——介绍了如何使用 gcc 来编译 C 语言程序。单个文件或多个文件均可以编译,也可以使用操作系统函数和头文件。
  • 编译选项——介绍了 gcc 中一些常用的编译选项。这些参数控制一些功能,例如搜索库函数和头文件的路径,提供额外的编译告警和诊断。预处理宏和 C 语言方言。
  • 使用预处理器——描述了cpp(GNU C preprocessor)的使用方法,cpp 是 GCC 的一部分。预处理器会在编译前将代码中的宏展开,当 GCC 处理 c 或者 c++ 代码时,预处理器会自动被调用。
  • 编译带有调试信息的程序——提供了一个-g选项用以在中间文件和可执行文件中存储额外的调试信息。这些调试信息使得我们可以追踪错误,将机器指令中的问题定位到源代码中。
  • 优化编译——GCC 是一个优化过的编译器。它提供了很多选项,可以加速编译或是减少编译后文件的体积。
  • 编译C++程序——介绍了如何使用 GCC 编译 C++ 程序以及该语言可以使用的命令行选项。
  • 平台相关选项——介绍了一些常见平台可以使用的选项
  • 排错——GCC提供了一些帮助和诊断选项用于帮助我们定位编译过程中出现的问题。
  • 编译器相关工具——介绍了 GCC 编译过程中会用到的一些有用的工具。包括用来创建库的 GNU 归档工具 ar,GNU 性能和覆盖率测试程序 gprof 和 gcov
  • 编译器是如何工作的——详细介绍了 GCC 是如何把源文件编译为可执行文件的。编译是一个多阶段过程,涉及很多工具,包括 GNU 编译器本身,GNU 汇编器,以及 GNU 链接器。在编译过程中使用的各种工具,我们统称为编译链。
  • 检查编译后的文件——介绍了一些用来检查可执行文件和 obj 文件内容的工具。
  • 常见错误信息——介绍了 gcc 和 g++ 产生的最常见的错误和告警信息。每种情况都带有原因分析,样例以及建议的解决办法。
  • 获取帮助——如果读者遇到了书中没有提到的问题,还有很多介绍GCC和语言的手册可以参考。

本书基于 GNU Free Documentation 协议发布


很多 C 语言书籍都可以免费下载,但是可惜的是它们并没有以开源协议来发布,或其基于何种协议并没有明确说明。以下对其进行介绍,排名不分先后:

最后,如果你想买一本权威参考书,请认准《 C 程序设计语言 The C Programming Language 》。这本书非常简练,不适合新手,但是被奉为经典。

书籍是非常主观和私人的财产,编程书籍也不例外。但是不管 C++ 编程书籍的风格、关注点或者节奏如何,好书总可以带领读者走过一段引人入胜的旅程,揭示编程语言的能力,还能向读者描绘如何使用编程语言来实现各种事物。

分享是一种美德,我精心挑选了九本值得一读的优质 C++ 书籍,这些书籍均基于开源协议发布。在这之前,我会给出一份 C++ 的简短介绍。

C++ 是由 Bjarne Stroustrup 设计,初次发布于 1983 年。它是一种静态类型、格式自由、多重范式、可移植、编译式的通用编程语言。它被认为是中级语言,同时包含有高级与初级编程语言的特性。C++ 设计用于实现系统级与应用的编程,它拓展了 C 编程语言,因此其名字中的使用了自增运算符 ++。

C++ 仍是一种流行的编程语言。例如,它被广泛应用于嵌入式系统、银行以及通讯业。它作为 C 的超集保留了 C 标志性的简洁与高效,同时提供强类型检查、多重继承、数据抽象、异常处理操作符重载、泛型编程,以及面向对象编程等功能。C++ 不仅影响了 C 语言的发展,同时也影响到了包括 C#、Java 在内的许多其他编程语言。

Boost C++ 类库 The Boost C++ Libraries

The Boost C++ Libraries

作者 Boris Schäling (570页)

Boost C++ 类库 The Boost C++ Libraries 》被认为在 C++ 世界中极其重要并有深远影响。书中这些可移植的库提供对多种任务和结构体的支持,包括多线程、容器、字符串和文本处理、迭代器、线性代数、伪随机数产生、元程序设计模板、并发程序设计、数据结构、图像处理、正则表达式和单元测试。Boost 可以在几乎所有现代操作系统上工作,包括 Linux 和 Windows 及其衍生,并且支持绝大多数现代编译器。

这本书介绍了 72 个 Boost 库,提供了广泛并且实用的功能。它们能够帮助程序员更轻松的管理内存和处理字符串。这些库提供多种容器以及其它数据结构来拓展标准库。使用这些库可以轻松实现平台无关的网络应用程序。

本书是一颗值得添加到各类收藏中的明珠。430 份源代码例子生动形象地阐释了这些库的功能。

本书前面的章节审视了内存管理、字符串处理、容器、数据结构、算法、通信、文件与流以及时间。后续章节进一步探索了函数式编程、并行编程和泛型编程。以对语言拓展、错误与数字处理、应用程序库、设计模式以及其他库的大部分内容。

本书采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。如果你喜欢实体书,可以在亚马逊上购买纸质书,也可选择如 kindle、E-book 和 PD F格式的电子书。

C++ 注释 C++ Annotations

C++ Annotations

作者 Frank B. Brokken (1029页)

C++ 注释 C++ Annotations 》提供了关于 C++ 编程语言的一份全面的教程。它可以被当做一门 C++ 课程的教材。本书面向已掌握 C 语言或其他类 C 语法知识的使用者。

本书主要章节有:

  • 命名空间
  • 字符串——C 提供的是最基础的字符串支持
  • I/O 流库——提供了一个基于类概念的输入/输出库
  • 类——C 提供了两种结构化不同类型数据的方法。C 语言的结构体包含多种类型的数据成员,而 C 语言的 共用体 union 同样可以定义不同类型的数据成员。本章介绍的类,也是一种结构体但是它的内容对外部世界来说是默认不可访问的。
  • 静态数据和函数
  • 内存管理——审视 C++ 中能够操作内存分配的操作符
  • 异常——允许 C++ 程序执行受控的非本地返回命令,避免了使用 longjmp(非局部跳转)和 setjmp(激活非局部跳转)函数的缺陷。
  • 操作符重载——介绍通用的操作符重载
  • 抽象容器
  • 继承——派生的另外一个特性。 本章演示基类指针可能被用来指向派生类的对象。
  • 多态——继承的一种特殊形态
  • 友元机制——介绍 friend 关键词以及它的使用原则
  • 成员指针——定义成员指针及其用法,静态成员指针,指针长度
  • 嵌套类——当嵌套类与其外围类有概念上的紧密联系时会被使用
  • 标准模板库(STL)——包含容器、通用算法、迭代器、函数对象、分配器、适配器和数据结构的通用库。这些算法使用的数据结构都是抽象意义的,因此算法实际上可以使用任何数据类型。
  • 泛型算法——涵盖标准模板库中的泛型算法
  • 函数模板——探索模板独特的句法。介绍模板类型参数与模板非类型参数和函数模板等概念并且提供模板的多个案例。
  • 类模板——讨论构建与使用类模板
  • 进阶模板用法——一份简短的模板元编程主要特性与模板的微妙关系的介绍

本书有HTML、PDF、PostScript 和 txt 版本。它可以自由分发,基于 GNU GPL 协议发布。

通过 C++ 和 Qt4 了解设计模式 An Introduction to Design Patterns in C++ with Qt 4

Introduction to Design Patterns in C++ with Qt 4, An

作者 Alan Ezust, Paul Ezust (656页)

通过 C++ 和 Qt4 了解设计模式 An Introduction to Design Patterns in C++ with Qt 4 》从介绍 C++ 基础知识、面向对象概念、UML(统一建模语言)和核心 Qt 类开始。进而转向更高级的编程概念如 Qt modules 和设计模式。最后严密地印证了重要的 C++ 特性。其中涵盖了非常优秀的对函数、继承和多态的讲解。

本书不需要具备任何 C 或者 C++ 编程经验前提,并且被设计为普适用途。它也为教学工作者准备了 Qt 案例、练习、答案以及课程 PPT。

本书是 Bruce Perens 开源系列中的一部分。所有在此系列中的书籍都是基于 Open Publication License V1.0 及其后版本发布的。

像计算机科学家一样思考:C++ How to Think Like a Computer Scientist: C++

How to Think Like a Computer Scientist: C++

作者 Allen B. Downey (191页)

像计算机科学家一样思考:C++ How to Think Like a Computer Scientist: C++ 》是使用 C++ 编程语言进行软件设计的一本简洁友好的介绍性书籍。本书的目的是通过讲解最基础的概念并且以读者容易接受的节奏逐步增加新内容来把没有编程经验的读者培养成为未来的开发者。

本书提供的有价值的内容包括:

  • 变量、表达式和语句
  • 函数
  • 条件语句与递归
  • 丰富的函数
  • 迭代
  • 字符串
  • 向量
  • 成员函数
  • 对象的向量
  • 向量的对象
  • 类与不变量
  • 文件输入输出和 apmatrixes

本书是一本在知识共享署名-非商业性使用-3.0 未本地化版本协议下发布的免费书籍。

C++ Qt3 图形界面编程 C++ GUI Programming with Qt 3

C++ GUI Programming with Qt 3

作者 Jasmin Blanchette, Mark Summerfield (464 页)

最新发布的 Qt 稳定版本是 5.8,而《 C++ Qt3 图形界面编程 C++ GUI Programming with Qt 3 》指导读者如何使用 Qt3 编写 GUI 程序,Qt3 最近一次更新是 2004 年,但是本书仍然有大部分内容对 Qt4 和 Qt5 有效。

本书不是一本面向初学者的书,需要读者对 C++ 有基本的理解。

本书向读者介绍了使用 Qt 进行 GUI 应用编程所有的概念和需要的练习。本书不仅详尽的讲述了核心内容,而且也提供了一些特别的和高阶的学习材料。

本书是 Bruce Perens 开源系列中的一部分。所有在此系列中的书籍都是基于 Open Publication License V1.0及之后版本发布的。

开放数据结构(C++ 版) Open Data Structures (in C++)

Open Data Structures (in C++)

作者 Pat Morin (336页)

开放数据结构(C++ 版) Open Data Structures (in C++) 》教导读者设计和分析基础数据结构以及如何使用 C++ 实现。 它涵盖了对如下数据结构的分析和实现:序列(列表)、队列、优先队列、无序字典、有序字典以及图。作者的意图在于向大学计算机科学的学生提供一条学习数据结构的免费的途径,但是并不打算成为介绍 C++ 编程语言或者 C++ 标准模板库的一本书。不过它可以帮助程序员理解标准模板库的数据结构是如何实现的以及这种实现为何如此高效。

章节内容覆盖了基于数组的列表、链表、分级链表、哈希表、二叉树(又包含了随机二叉搜索树、替罪羊树、红黑树)。之后的章节还包括堆、排序算法(比较、计数和基数排序)、图、整数的数据结构和外部存储器搜索。

本书基于知识共享署名 协议发布。免费的 HTML、PDF 均已发布,本书的 LaTeX 版本,Java/C++/Python 源代码都可以从 GitHub 下载。也有纸质书版本可供购买。本书已被翻译为斯罗维尼亚语和土耳其语。

使用 wxWidgets 进行跨平台 GUI 编程 Cross-Platform GUI Programming with wxWidgets

Cross-Platform GUI Programming with wxWidgets

作者 Julian Smart,Kevin Hock和Stefan CsomorBrifll (744 页)

wxWidgets 是一个流行的 C++ 库,可供开发者使用单一的代码基础为 Windosw、Mac OS、Linux 和其他平台创建应用。它支持非常广泛的图形处理库。

这本书《 使用 wxWidgets 进行跨平台 GUI 编程 Cross-Platform GUI Programming with wxWidgets 》从简单的介绍和起步章节开始,主要内容包括:

  • 事件处理
  • 窗口基础
  • 画图
  • 输入事件处理
  • 使用 sizers 进行窗口布局
  • 使用标准对话框
  • 创建自定义对话框
  • 图像编程
  • 剪贴板与拖放动作
  • 高阶窗口类
  • 文件和数据流
  • 内存管理,调试和错误检查
  • 编写国际化应用
  • 编写多线程应用
  • wxSocket 编程
  • 处理文档和视图
  • 日臻完美你的应用

本书是 Bruce Perens 开源系列中的一部分。所有在此系列中的书籍都是基于 Open Publication License V1.0及其后版本发布的。

Rook 的 C++ 指南 The Rook’s Guide to C++

The Rook's Guide to C++

作者 Jeremy Hansen (160页)

Rook 的 C++ 指南 The Rook’s Guide to C++ 》的章节中包含变量、常量、输入输出、数据类型和转换、条件判断语句(if、else 和 else if、switch 语句)、字符串、循环、数组、块、函数和作用域。之后的章节主要集中解决问题和定位问题,包括预处理器、高等代数、文件输入输出、指针、动态数据、类和抽象、分离编译和标准模板库。

本书大部分都是由 25 位 Norwich 大学的学生于一个黑客马拉松周末写成。当然不敢说毫无缺点,但还是一本相当不错的书。它被基于知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本协议发布。同时在亚马逊也有本书的纸质版可供购买。

GCC 简介 An Introduction to GCC

An Introduction to GCC

作者 Brian Gough (144页)

GCC 简介 An Introduction to GCC 》介绍了 GCC,同时介绍了 GNU C 和 C++ 编译器:gcc 和 g++,均属于 GNU 编译器集合(GCC)。

本书解释了如何单独使用编译器。作者通过数年对邮件列表中发表的问题的观察,撰写本书带领读者直接接触 GCC 最重要的部分。

章节简介:

  • 介绍
  • 编译一个 C 程序——描述了如何使用 gcc 编译 C 程序。程序可能是由单独文件或者多个文件编译而成,也可能使用系统库和头文件。
  • 编译选项——描述gcc中可以使用的编译器中常用的选项。这些选项可以修改本地库和包含文件的搜索路径,配置额外的 warning 和调试信息,预处理器宏指令和 C 方言。
  • 使用预处理——描述了属于 GCC 包内的 GNU C 预处理 cpp 程序的用途。预处理将宏定义在源代码被编译前展开。预处理会在 GCC 编译 C 或者 C++ 程序时自动被调用。
  • 以调试为目的编译——提供 -g 选项使目标文件和可执行文件中存储额外的调试信息。当出现错误时,这些调试信息允许从特定的机器指令回溯到源代码中相应的行。
  • 优化编译——GCC 是一个优化编译器。它提供了大量的选项来使其生成的可执行文件的速度得到提升,并尽量减小可执行文件的大小。
  • 编译一个 C++ 程序——描述了如何使用 GCC 来编译以 C++ 编写的程序,以及针对这门语言特定的命令行选项。
  • 平台相关的选项——描述了一些通用平台上可用的选项,如 Intel 和 AMD x86 选项、x86 拓展选项、x86 64 位处理器选项、DEC Alpha 选项、SPARC 选项、POWER/powerPC 选项、复合架构支持以及浮点相关问题。
  • 问题定位——GCC 提供了几项帮助和诊断选项来帮助用户在编译过程中定位问题。
  • 编译器相关工具——介绍了大量能够用于和 GCC 组合使用的工具。包括:用来创建库的 GNU 压缩器 ar,以及 GNU 性能和覆盖测试工具:gprof 和 gcov。
  • 编译器如何工作——描述了关于 GCC 如何将源代码转换为可执行程序的更多细节。编译是一个涉及到多种工具的多级过程,包括 GNU 编译器自身(通过 gcc 或者 g++ 前端)、GNU 汇编器 as 以及 GNU 链接器 ld。编译过程中一个完整的工具集合被称之为工具链。
  • 检查编译后的文件——描述了多种有用的工具来检查可执行文件和目标文件的内容。
  • 常见错误消息——描述了 gcc 和 g++ 产生的最常见的错误和警告信息。每一个案例都伴随着错误和警告产生的原因,相应的例子和可能解决问题的建议。
  • 获得帮助——如果读者碰到了本书中未能涵盖的问题,还有多种参考手册更详细的描述了 GCC 和编程语言相关的主题。

本书是基于 GNU Free Documentation 协议出版的。

此外还有一些 C++ 书籍可以免费下载,但是那些并不是基于开源协议发布的,或者作者没有指定一个协议。这类书籍包括:

最后,我对刚入门的 C++ 新手的建议一定是《 编程原理与体验(C++ 版) Programming — Principles and Practice Using C++ (第二版)》。普遍认为这是最合适的入门书籍,由 C++ 的创始人书写,物超所值。


via: https://www.ossblog.org/master-c-programming-with-open-source-books/

作者:Steve Emms 译者:xiaow6 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出