去除 Kindle 电子书的 DRM 保护

众所周知,中亚与美亚的帐号是不互通的,也就是说,如果我们同时从中国亚马逊和美国亚马逊购买了正版的 Kindle 电子书,是无法在同一台 Kindle 设备(Kindle 手机应用也是一样)上进行阅读的。

要解决这个问题,有两种方法。

一是我们可以通过切换帐号的方式来达到书籍共享的目的,但是这种方法有很多问题,kindle 手机应用无法直接选择登录的地区,必须通过切换系统语言的方式来登录对应的中亚或美亚帐号,同时在切换帐号的时候,前一个帐号的书籍会被抹掉。虽然在 Kindle 设备上切换帐号会保留上一个帐号的书籍,但是在 Kindle 设备那种响应速度下频繁进行帐号切换操作也是劳民伤财,费时费力。

第二种方法就是将直接下载或者导出购买过的 Kindle 电子书,然后使用邮件的方式推送到指定的账户。这种方法相对来说比较方便,我们可以直接在亚马逊网站上下载到购买过的电子书,或者也可以直接从设备中导出。但是,事情可没有那么简单,kindle 上所有的电子书都是有 DRM 保护的,直接传到 Kindle 里是打不开的。

这时,就要求我们对 DRM 进行破解,这也就是本篇文章的主题。

本方法只用于自己购买的正版书籍,并只用于本人阅读,请勿用于盗版电子书。

我该学习哪门编程语言

本篇博客是《软件开发者成长完全攻略》系列翻译文章第 4 章。
原文地址:What Programming Language Should I Learn

软件开发领域的新手中最常见的一个问题就是他们应该学习哪门编程语言。对于某些有抱负的开发者,这个问题成为他们从未跨过去的绊脚石。

我曾经教授过很多的开发者,他们总是自己进行预测或者在做了决定后变卦,从一门语言换到另一门语言,他们永远都在担心自己做错了选择。

如果你也曾经为选择哪门编程语言而感到过焦虑,那么这一章就是为你而写的。

首先,我会先消除你的某些疑虑;接着,我会给出一些实际的考虑因素来帮助你选择自己将要进行学习的第一门编程语言。

如何学习软件开发技术

本篇博客是《软件开发者成长完全攻略》系列翻译文章第 3 章。
原文地址:How To Develop Technical Skills

在上一章中,我已经列出了一张你需要学习的开发技术清单,这张技术清单很长,你可能会好奇应该如何学习这些技术,以及学习完这些要花多长的时间。

既然你提到了时间,那么我告诉你,你将会花跟你当程序员一样长的时间来学习这些技术。你应该将学习视为一段旅程,而非终点。你永远可以变得更好 —— 只要你愿意的话。

之前我在技术学习上用了错误的方法,因此浪费了大量的时间。但是,我在给 Pluralsight 录制超过 50 套在线技术课程的三年里,学会了如何快速学习一门开发技术,同时将它教给别人。

程序员需要掌握的技术

本篇博客是《软件开发者成长完全攻略》系列翻译文章第 2 章。
原文地址:The Technical Skills You Need to Have as a Software Developer

我更倾向于帮助程序员学习“软技能”而非开发技术 —— 事实上,我写过一整本关于软技能的书 —— 但是毫无疑问的,对于开发者来说,技术很重要!

我的意思是,如果你没有掌握代码和开发技术,所有的软技能对你来说都不会有实质上的帮助。或许你可以成为一个好的管理者或者教练,但不会是一个好的软件开发者。

既然你正在阅读这本书的这一小节,我可以假定你就是想成为软件开发者 —— 或者是优秀的软件开发者 —— 那就让我们讨论下你所需要掌握的技术。

软件开发如何入门

本篇博客是《软件开发者成长完全攻略》系列翻译文章第 1 章。
原文地址:How to Get Started in Software Development

当我刚开始学习软件开发的时候,我根本毫无头绪。

我感觉很沮丧。所有的东西我都看不懂,我甚至不认为我可以“掌握”编程。

我之所以告诉你这点是因为我觉得既然你选择了我这本书,说明你可能跟我那时的感觉是一样的。

不要担心,这很正常。事实上,这根本就是常态。

让我来彻底澄清一件事:你不需要是一个天才,甚至智力水平不需要超过平均水平,也能成为一个软件开发者。

Hexo 踩坑 - 不要在标题开头使用方括号

一个刚刚踩过的 Hexo 的坑,浪费了一个多小时,不过幸好最后解决了。事实证明是一个很弱智的问题,跟写代码时漏掉逗号,找一个多小时一样的弱智。

不过还是记录下,也许还有人会踩到同样的坑,谁知道呢?

使用 submodule 管理 Hexo 主题

很久之前写过一篇文章,介绍了如何托管 Hexo 中的 Markdown 及配置文件到 Github,并将其部署到个人的 VPS 上。使用这个方法就可以很容易地在不同电脑上同步博客数据,并进行部署。

但是,Hexo 除了内容外还有一个很重要的部分,那就是主题。现在,大多数 Hexo 主题的文档都是直接叫我们 clone 主题到对应的 theme 目录中,然后配置 _config.yml 就行了。这种方法的好处就是简单明了,坏处就是主题无法跟随博客数据一起同步。

今天我们就来看看管理 Hexo 主题的正确打开方式。

用科学破解成功学的迷信

本文为万维刚《精英日课》读书笔记。


are-you-kidding-me
  • 标题:Barking Up the Wrong Tree
  • 副标题:The Surprising Science Behind Why Everything You Know About Success Is (Mostly) Wrong
  • 作者:埃里克·巴克尔(Eric Barker)

关于“成功”的迷信说法太多了,各种鸡汤段子里不不乏所谓的“成功学”,巴克儿这本书就是要用科学研究的结果破除迷信、拨乱反正。这本书可以让你更了解“成功”到底是怎么回事,或许还有可能让你在了解这些之后,理性地决定放弃追求“成功”。

使用 lldb 对应用砸壳

进行 iOS 越狱开发的第一步,通常就是对从 AppStore 上下载安装的应用进行砸壳。我们常用的工具就是 dumpdecrypted 或者 Clutch,关于这两个工具的使用,在之前的文章 已经进行过介绍了。

事实上,除了使用工具帮助我们进行砸壳,我们还可以直接使用 lldb 进行手动砸壳。

使用 Xcode 调试第三方应用

要使用 lldb 对应用进行断点调试,首要的前提就是 lldb 能附加到指定的应用上。而要能让 lldb 附加到应用上,就需要 debugserver 工具的帮助。

一直以来,我们都是使用配置过了 task_for_pid 权限的 debugserver 来调试越狱环境下的第三方应用。由于 iOS 上原版的 debugserver 不可写,因此我们无法使用修改过的 debugserver 来对其进行覆盖,而 Xcode 上的 lldb 会直接使用原版的 debugserver 来进行应用的附加。这样导致的结果就是,我们只能在命令行上对第三方应用进行断点调试。