無標題文檔

魅族的堕落

魅族的新品发布预告

前面说了锤子,有很多的朋友在留言要我说说其他品牌的手机。作为移动开发人员用过了不少的手机,还是有点发言权的。

想想还是再写写魅族吧,一来我用了曾经也是「煤油」;二来我「普通发」要稍稍好过他们一点,要真吵起来我可能会比他们说得更多一点。

魅族和锤子一样都是业界的奇葩,他们其实有很多共同的特质。

例如,锤子是需要拧开螺丝脱掉后壳才能换手机卡;魅族的机子可以让你徒手脱掉后壳,但一打开也照样傻眼了:不能换电池!

我们经常会遇到这样的产品经理设计师,他们总是会想些相对常人无法理解的功能和元素,试图来「说服」自己和「打动」用户。

将这些人员聚集在一起办公,这家公司的名字毫无争议的就叫「魅族」。

再想想当年那臭名昭著的 SmartBar 吧。我个人是丝毫无法理解,为什么人为的制造了这样神一样的双下巴。而他们却不予余力的推广这个玩意,只要是有应用支持了必定是市场推荐。

而今买账的人越来越少啦,用户的吐槽确实越来越多 - 并不是所有人都喜欢这个东西。这帮设计师和产品经理当然不可能自己打自己的脸,说我们下台手机将不支持 SmartBar 啦!所以他们给用户在设置里多了一个选项:「自动隐藏 SmartBar」(自 Flyme 3.7.7 版本起)。

当然,这个选项是 Flyme4 的新特性,纳入到 Change Log 里面的。

好吧,总是拿 SmartBar 说事显得不是很人道,人家很努力的不是吗?那么我们再来说一件事情,那就是 Ubuntu OS。

相信很多手持 MX3 在「多年」以前就已经期待这个系统了吧,说实话当时我也震惊了下。魅族终于走出国界,迈向世界了!

最后的结果是将近两年过去了,魅族的 Ubuntu OS 手机终于出来的,而 MX3 却被无情的抛弃了。

「喂喂,开什么玩笑?我们这样子机子才能卖得出去啊!」

不仅仅是 Ubuntu OS,甚至引入了阿里的 YunOS,这点叫「引狼入室」一点也不为过。

魅族拥有相对忠实的用户群,然而引入其他的 OS 换取那一点点的销售量,这一系列的做法让人猜不透这背后的逻辑。

当然还有其他的更多的事情,让我们这些老的「煤油」越来越寒心:机子的品质(无论是硬件还是软件)越来越差、也学某米一样需要抢购了,根本买布到现货(谁能给我个魅族 Note 的 M 码?)、营销是越来越「恶心」了等等。

这里还是要顺便说下魅族的营销策略,其实真的是没有必要去贬低他人去抬高自己。这是孩子都明白的道理,然而却出自这样家曾经令人感到敬仰的公司。

这个丝毫不夸大的讲,是魅族在堕落。

多年前如果有人问我买什么国产手机好,我会给他推荐魅族。现在我会一个巴掌过去,拍醒这位「爱国者」:买什么国产手机?没事干给自己添堵呢?!

即便是 MX5 发布在即,我都丝毫提不起对于它的欲望和期待。

「您还别嫌贵我们只卖 2599 ,还没现货,您排队去。」

-- eof --

锤子的逻辑

Smartian T1

如果说业界的奇葩的话,那么锤子也应该能算得上是一个。距离 T1 发布已经有一年多的时间了,但是锤子二代(T2)手机却丝毫没有风声。

或许很多人都会把锤子当作笑话来看待了,在没有真实的使用过这款机子之前,我的确也是怀着那种莫名的「恶意」的。

锤子还是活着的。

就在上周锤子至少还是发布了一款产品的,那就是「锤子日历」-- 一款 iOS 平台的日历应用。

截至目前,我们看下锤子在 AppStore 上面发布了哪些应用。目前在 AppStore 上面有它的几款相对不是很「大」的应用:锤子便签、锤子时钟、锤子日历以及对应的同步工具。

锤子迟迟的没有发布 T2 手机(应该就叫这个名字了),却在 iOS 平台上发力开发这些应用的逻辑是什么?

从锤子发布的应用类型看,几乎都是效率类的应用。这些应用几乎都应该是一个「正常系统」必须要安装的:便签、时钟、日历等等。

对应的 iOS 系统,他们自家的 Smartian OS 也有一模一样的应用,甚至连界面都可以说是非常的一致。

开发一款智能手机,无论是体验方面还是用户的基数,在这个行业绕不开的一道坎就 iPhone 。

同时,在 iPhone 的使用用户当中,将 iPhone 用作生产力工具的用户会有很强的粘度以及使用惯性。虽然这一部分的用户比例相对较少,但是不难展望这小部分用户的巨大号召力。

所以,锤子要考虑的就是如何将这部分用户作为种子用户导入到他们的用户中,所以提供跨平台的效率工具其实是个非常好的突破口。

设计方面,iOS7 扁平化了以后整个业界的设计风格也跟着扁平化,整个业界的设计界面可以说是非常的同质化(尤其是国产的手机)。

锤子一开始坚持自己的拟物风格,甚至偏执得将那些乱套的 Android 应用的图标都逐个的重新绘制。这虽然看起来是个不小的工作量,而换来的界面效果提升也是非常的明显的。

很少有手机拿到手打开有那么让人会心一笑的感觉了,iPhone4 算一个、锤子的 T1 也可以算一个。

平心而论从设计和交互上说,锤子的手机的界面是能纳入第一批队的。

光是针对「讨好」 iOS 用户以及和其他 Android 手机「不跟随」的界面往往是不够的,同时当然锤子自己也想做得更多。

而从目前的情况来看,锤子在开发以及迭代的速度上还没有跟上它的竞争对手。哪怕锤子的 T2 手机到下半年才发布,那么它都已经错过了好多非常好机会了。

时间就是成本,留给「锤子」的时间已经不多。

对于 ThinkPad 的那点情怀

说起来,情怀是件很奇怪的东西。在这个情怀泛滥的年代,如果你对一件东西说有情怀,那么可能收到的反应往往都是极端的。

而对于 ThinkPad,我是很愿意冒着这个危险的。世间上是少有的几样东西你说你对它有「情怀」而不会被大多数人喷的,ThinkPad 算的上是一个。

TrackPoint

ThinkPad 跟随了联想了以后口碑不如从前,而我也从多年的 PC 用户变成了多年的 Mac 用户。还是那所谓的「情怀」作怪,在偶然的机会,入手了台 x220 ,打算当作开发以及备用机。

至于为什么只是要买 x220 ,其实很简单。现实的价格因素意外,x220 这种类型的键盘对于 ThinkPad 系列来说有可能是绝唱了。

ThinkPad 曾经有很多业界颇为称道的硬件设计,小红点、屏勾、镁合金的防滚架、高度可替换的配件,甚至可以自己 DIY 的电池。

所以有人说过,如果你用过 ThinkPad 那么就不会使用其他的 PC 笔记本了。有人开玩笑的说,如果旅行带上了 ThinkPad ,至少它有个用处就是用来防身。

说了那么多,作为多年的 Mac 用户自然而然会拿 MacBook 和 ThinkPad 作对比。

我个人平心而言,简单的一句话,就是 MacBook 是最好的终端笔记本,而 ThinkPad 是最好的生产力工具。

ThinkPad 低廉的价格以及可以替换的配件让它在任何恶劣的环境使用都倍感信赖。而 MacBook 拿 Unibody 的机身怎么看都觉得会是完美的艺术品。

所以,是情怀也好,是矫情也罢。

当然,如果联想继续作死的话,恐怕 ThinkPad 的未来就将会很不明朗了。但是至少,ThinkPad 对于我等靠这些设备吃饭的人而言,自然已有着它无可替代的地位,哪怕这只是一段回忆而已。

--

后记

针对那 x220 的机子,我还是做了些升级好让它使用起来更加的舒服。

机子的硬件自然没得说,我要求将硬盘的差价补贴到内存里,所以卖家就直接给我发了一台没有硬盘的带 8g 内存的主机。

刚好我有一块当时升级 MacBook 留下来的 SSD(铺科特 M5S),所以就装在了 x220 上(有点搞笑的是那台机子的价格竟然和我的 SSD 差不多价格)。

这里要顺便吐槽下浦科特的 M5S,竟然采用的是 9mm 高度的外壳,而 x220 需要的是 7mm 的硬盘。无奈之下这能拆了硬盘的外壳,同时这也意味着放弃了浦科特的保修。

然后使用了几天,发现经过多年 Retina Display 洗礼过的眼睛已经无法忍受 TN 屏幕的效果了。

x220 的自然是无法跟上 Retina Display 的效果了,好在它有最后的一根救命稻草就是它还能升级到 IPS 屏幕了。所以还是淘宝找了个卖家,就地以旧换新将旧的 TN 换成了 IPS 屏幕。

合计了下,总的硬件方面的投入我总共花费了 1600 上下。这对于苹果的硬件设备而言,可能就只能买一台 Time Capsule 了。

系统自然根据我的实际使用安装了 Ubuntu,好在这个相对比较新的系统在硬件方面没有让我太多的费心。

我曾经有过不小心将咖啡打散到 MacBook Air的不好经历,这件事情耗费了不少的时间和精力去折腾机子和恢复数据。对比 ThinkPad 你要知道它对于键盘防水这块它是做足了功夫的

所以,如果有可能会在比较恶劣的环境下使用笔记本的情况,带台 ThinkPad 前往是再合适不过的了。

-- EOF --

卡西欧 GW-M5610 手表屏幕改反显

当时购买这个手表就是为了好打理,六局电波、太阳能加上两百米的防水等,基本上不用担心它什么时候会不工作。

使用了一段时期以后,感觉到有些审美方面的疲劳,正好又看见了网上电子手表正显改反显的教程,发现不难于是就自己动手改个反显换换口味。

http://pic.yupoo.com/feelinglucky/EBjWZ3jY/medish.jpg

先来看下改之前的样子,其实正显有个好处就是比较清晰(这是在我改了反显以后对比得出的),如果不折腾用户其实真心还是保持原样的较好。

http://pic.yupoo.com/feelinglucky/EBjWTp9a/medish.jpg

GW-M5610 这款手表其实非常好拆解,拧掉四颗螺丝以后就可以打开盖子和岔开机芯了。抱歉过程因为拆的过程太过于顺利,所以就没拍下来。

http://pic.yupoo.com/feelinglucky/EBjWEC7c/medish.jpg

http://pic.yupoo.com/feelinglucky/EBjWF5GA/medish.jpg

然后就是撕开原有机芯显示屏上的偏光片,这里有个小技巧就是撕开原有的偏光片可以用角落用刀片斜切慢慢起开,然后就很好撕开了。至于原有偏光片残留的胶,可以用风油精蘸在棉花棒上擦拭去掉。

而至于哪里去得到新的偏光片呢?本人这块是原有液晶显示屏上剩下的,刚好今天能派上用场。正显改反显的原理很简单,其实就是将偏光片旋转一定的角度,就可以看到效果。

http://pic.yupoo.com/feelinglucky/EBjWFvtq/medish.jpg

依照原样大小贴回去即可,记得一般偏光片犹如手机贴膜一样,上面还覆盖有一层保护膜,使用前将其揭掉即可。

http://pic.yupoo.com/feelinglucky/EBjWGcPW/medish.jpg

按照原步骤装回去即可,这里友情提示下为了保证防水效果,最好再涂抹一层手表防水膏(别问我怎么会有这玩意)。

http://pic.yupoo.com/feelinglucky/EBjWOVOe/medish.jpg

涂抹完防水膏以后,需要将手表泡水里测试一段时间,以求防水效果生效从而能够长期使用。

http://pic.yupoo.com/feelinglucky/EBjWG0vM/medish.jpg

这是最终上手的效果,相比原先的正显而言多了分个性,而少了分显示效果。至于最终是正显好还是反显好呢?有句话说得没错:

「正显是给自己看的,反显是给别人看的。」

下面是些参考连接,想动手前可以参考下:

  1. http://www.iwatch365.com/thread-17184516-1-1.html
  2. http://post.smzdm.com/p/224298/

— EOF —

Android 开发的昨天、今天和明天

收到过位将要毕业的同学的来信,问 Android 开发是否有「前途」。我个人从前端转到移动相关的工作也有些时日,虽然期间有点心得但回复类似的问题不免会有「误人子弟」的担忧。

刚好在 Android Weekly 上见到了这篇文章,阐述的部分观点竟然和我不谋而合,因此草译下权当有相关问题的同学作为参考。同时,国内的 Android 环境可以用「奇葩」来形容,因此文章后面我会加入些自己的个人观点。

混沌之初

很难相信,如此的一个系统竟然会有 80% 的市场占有量!在我个人看来,Android 能够做到如此成功在早期并不是它足够的优秀,而是同期的竞争对手做得比它更好。

为什么?我亲爱的读者,在那个时候到处都是问题好吗:

糟糕的开发工具(甚至包括 IDE)

你尝试过用铁锹修车吗?或者,开着你爷爷曾经使用过的有着 40 年历史的 Yugo 载着姑娘去兜风?在那个时代 Android 开发有且只有一个「相对」官方的开发工具:Eclipse 。

请您相信我,Eclipse 有各种的问题甚至能让你在十分钟之内发疯!Eclipse 的 ADT 插件简直就是「Bug 与 Crash 齐飞,重启和关闭共一色」。尤其在相对复杂的项目开发上,那酸爽简直不敢相信!

很大的程度上,光就是 Eclipse 这个开发工具就吓到了很多入门开发者,让他们投入其他开发阵营的怀抱(对,例如 XCode)。

碎片化

Android 的碎片化严重得可以用张麻子脸上的痘痘来形容,我们先来说说软件方面的。Gingerbread (2.3.7) 是相对比较老的系统版本了,对比同期的 iOS 4.x 系列,目前还有百分之 15-20 个点(可能具体地区的占有率稍有不同)。

您或许已经知道,Android 4.0(Ice Cream Sandwich) 是一个巨大革新的版本,新的 UI、新的 API、新的屏幕分辨率,这一切看起来非常的美好。但,缓慢的用户迁移过程让我们不得不面对这些优秀新系统特性的同时,同时还需要兼容那老旧的系统。于是为了兼容新老的两套系统,项目开发中多了非常多的兼容代码,这会使得应用到处是 Bug 和奔溃。

(这段译者自己添加,吐槽我最擅长了。)除了软件方面,硬件的碎片化的问题更加的严重。你甚至不了解你的应用会在什么样的硬件上运行,你需要获取用户的位置信息,对不起设备可能没有 GPS 甚至没有基站定位;你需要打开摄像头扫描二维码,对不起设备可能没有摄像头、即便有摄像头但运行内存不够,崩溃!这个时候用户是嫌弃自己的硬件呢,还是说您的应用有问题…

硬件方面最头疼的还是屏幕分辨率的问题,Android 开发过程中在资源(resource)目录下有各种的目录(drawable-xxhdpi、drawable-xhdpi、drawable-mhdpi、etc…),你需要针对不同的分辨率调整自己的资源文件,对相信我这块有时候会比编码的时间还长!

缓慢的模拟器

当你完成一个应用以后,首先要测试在各个不同 Android 版本以及屏幕分辨率下的运行情况,所以我们购置了不下二十台 Android 设备用于测试。

听起来似乎有点夸张?好吧,感谢上帝我们还有 Android 模拟器!

然后,你兴冲冲的跑去建立 Android 模拟器并尝试让它跑起来,你会发现半小时后你会哭!先不说它那缓慢的运行速度,就连调试过程中你甚至会开始思考你的人生。

从此以后你再也没有勇气打开运行过它,它只是成为你机子文件系统中一块占用地方的文件而已。

UI

「设计 Android 应用是多么得无趣!」如果你对比过同期的 iOS 应用,那么 Android 的应用竟然会如此得暗淡无色。对比 iOS 那流畅的动画、交互以及细节,你会觉得 Android 应用一切都是「静止」的!

当你打算给 Android 添加点生气的时候,你会发现还是那些老旧的系统(例如 Gingerbread)囚禁了你的创意和思想、乃至期望。

全新

我们将时间推倒 2013 年,这些糟糕的事情总算有了一些改变。

那个时候问题已经足够糟糕到连 Google 自己都看不下去的程度,即便 Android 4.0 发布至今对于上面的问题稍微有些缓解,但还不足够达到能够彻底解决问题的程度。

直到 Android 5.0(Lollipop) 的发布。

所有人都在思考 - Google、设备提供商、开发者。所有人都会自问这样的问题,就是「当我们有了个相对稳定的系统、上千万的应用以及对应的用户。那么我们应当如何让 Android 这个巨无霸化繁为简?如何将开发的过程变得优雅、吸引更多的人加入这个行列?」

Android 5.0(Lollipop) 有着巨大得改变,那些非常多的特性出于篇幅的考虑我只能列出我个人认为重要的几个点:

Android Studio

Android Studio 在 1.0 版本以后就变得非常的稳定。我无法从只言片语来描述这个应用能够给我们带来的巨大的变革。如果您愿意了解详细信息,可以参看原先我写的两篇文章(这里这里)。

The new Android Studio logo

这个 IDE 是如此的优秀,以至于 Eclipse ADT 插件已经停止了官方的维护,因此严重推荐原先如果开发 Android 的同学迁移到这个 IDE 上。

人生苦短、及时行乐。

Gradle

Gradle 是个全自动化的构建工具,在 Android Studio 已经全面替代了 Apache Ant 作为主要的构建系统。

这个全新的系统将会给构建 Android 应用带来全新的体验(听着耳熟?)。当您设置好构建配置脚本以后,所有剩下的事情都将不用你操心。

译者注:Gradle 在大陆使用建议还是需要挂代理,Sigh…

Lollipop

Google 说过 Lollipop 是有史以来变革最大的系统版本(每次它都这样说),我希望他们是对的。

同时,也希望目前的主流机型能够升级到这个版本(译者:个人觉得原文作者有些乐观)。

Lollipop 之外 - Material Design

理所当然,作为 Lollipop 提出的重点之一,自然会有很多的笔墨来阐述 Material Design 这个新的设计理念。我个人非常同意 Material Design 的其中之一的理念,那就是「所有的东西都是重要的(everything is important)」。

One animation, please

例如动画,长期以来我们的观点是动画只是 效果 的一部分,而 Material Design 主张动画也是有 含义 的,就好比文章分段的间隔符。

我们重新设计、重新开发符合 Material Design 的应用,最终的目的在于应用并不仅仅是生活的一部分,而是能像水和空气一样够让它融入到生活中的每处,让它无处不在。

这就为了以后即便在不同的平台下不同的应用看起来风格和体验也是统一的。

Lollipop 之内 - ART

对于 Material Design 提供的外在设计元素,我们开发人员最关注的还是其内在的改变。一个新的运行时(runtime system)称之为 ART 的就内在其中。

其实 ART 并不是新鲜事物,首次出现应该在 Android 4.4(Kitkat)中。我们之所以重新介绍它是因为在 Lollipop 中 ART 已经全面替代了 Dalvik 成为系统默认的运行时(runtime system)。

ART 有很多优秀的特性,处于篇幅考虑我只说明其中两点:

译注,针对这块下面有评论,可以参考

Note that ART still has the same 65k method limit. Multidex support applies to Dalvik as well.
As an addition to the improvements you mentioned, I would add the unit testing support they just released with version 1.1.0 of AS. Hopefully it's a fresh start for better testing of Android apps out of the box. It also works great with Robolectric.

到处都是 Android

现在我们已经可以开始针对智能手表、电视、甚至汽车编写应用。想象下我们坐下来煮上一杯热咖啡,环顾四周将来可能至少有四五个设备运行着 Android 系统:电视、笔记本、平板、相机、乃至厨房电器。

Android 开始逐渐占领所有具有微处理器的设备,犹如水和空气一般得存在。

逐渐高品质的智能手机

Android 的核心平台还是其智能手机这块,但长期以来一直所受的困扰就是运行其系统的智能手机品质差次不齐。老的 Anroid 设备运行起来对比其同时代的 iPhone 设备显得非常的卡顿 - iOS 却依然流畅得多。这「得益于」那些国产厂商提供的众多低端机型。(译者注:原文 This was especially true for cheaper devices produced by a multitude of Chinese manufacturers. 华强北再次被黑)。

值得庆幸的是随着硬件设备的摩尔定律,目前的 Android 智能手机设备提供商正在逐渐的改变这一现状。很可能在不远的将来,我们能够得到一台性能足够强大但同时性能不差的 Android 智能手机。

例如我个人非常喜欢 Motorola 提供的智能手机(虽然它目前已经是 Lenovo 的子公司),他们出品的 Moto X、Moto G、Moto E 等型号的手机都有着不俗的性价比。

Project Ara parts

同时有个叫 Ara 的项目能够提供类似 PC 的模块化硬件解决和组装方案,在未来相信 Android 智能手机硬件平台这块能够得到非常乐观的发展。

下一步?

远离 Java

当解决完系统和开发工具层面的问题以后,我们继续将 Android 相关的问题聚集到其他地方。

恕我直言,我认为针对 Android 最核心的问题将会是 Java,尤其是 Java6 或者 Java7。Java 是门非常的好的语言,但有时候我们可以考虑跳出这个圈子去思考 - 我们或许针对 Android 开发需要门更新的语言。

作为对比的 Apple ,他们的 Swift 提供了更新以及更现代的特性。这使得它能够支持 iOS 开发人员更便捷的开发应用。明显,Java 在这方面比现代的语言臃肿些。

是时候我们需要更新鲜点的内容了,目前其实已经有了针对 Java 的替代方案,例如我原先关注的 Groovy。它从语法方面和 Java 很接近(实际上它基于 Java),同时我们针对此开发已经有了些原型。 当然,还有别忘记了它是 Gradle 的主要实现语言 - 所以为什么不直接用于 Android 开发呢?

同时,Scala (使用数增长迅速)以及 Kotlin (这里有篇文章或许能让你热血澎湃)也是非常好的考虑对象。

更好的数据管理

还有个必须指出的问题,就是数据管理 API(database management API)。如果你有对比,例如 iOS(严格上说应该是 Core Data),他们提供了众多非常好的抽象方法(method)、图形化的数据管理、对象、数据观察者(database change listeners)等。对比 Android 提供的 API,这简直就像是只土鳖 - 我们仍然在写 SQL 语句并同时期望得到正确的结果。

调试 SQL 语句是件非常不容易的事情,首先需要面对的问题就是我们没有个直观的图形化界面去跟踪这些事务。虽然目前已经有些很优秀的 ORM 类库供我们使用(例如 GreenDAOActiveAndroid、或者 SugarORM),但实际上他们仍然各自有各自的问题。

我还是期待能够像 iOS 一样操作数据库,例如有个数据观察者(database change listeners)等类似工具帮忙。目前能够找到的就类似 DBFlow 等第三方的类库,至少目前而言他们能减少和减轻我很多工作量。

中国的情况(译者加)

很明显,国内的 Android 开发环境比国外的冷酷很多。除了上文提到的问题外,还有因为些政策以及特色的原因造成各种本地化的问题。

缺少 Google 组件包

或者说完全无法使用 Google 提供的服务。我们单说推送服务,Google 官方是提供了推送服务的,但是由于各种方面的原因国内的开发者基本上不会使用。这使得各家自己实现推送方案,从而恶性循环造成应用的品质下降。

无厘头的优化

国内的 Android 用户有「清理内存、杀进程」的习惯,因此很多正常运行的 Service 会被莫名得 kill 掉,而开发人员为了避免被 kill 又频繁的启动后台 Service ,恶性循环。

同时各固件厂商所做得优化有时候不得法,胡乱更改系统底层。例如某固件更改了 TextView 等导致应用显示「怪异」的情况时有出现。

设计方面 iOS 化

这点不用多言,Material Design 即便出来有些时日,但几乎没有跟进的迹象。甚至部分厂商提供的 Android 版本的应用无论从交互还是视觉上和 iOS 版本相差无几。

我个人很悲观的认为这种情况将会持续很久。

低端机型肆虐

正如原文作者所言,国产尤其是华强北出品的大批低端山寨机进一步打碎了 Android 系统的体验。想象下 Android 开发者开发的应用还需要面对的几年前的机型、这在 iOS 平台是无法想象的;同时这造成的巨大的资源浪费以及应用品质的下降。

总结

那么 Android 开发的出路在哪里?这个问题直到本文结束可能都没有个标准答案。我相信能够提供良好的 Android 体验的往往是些小型的开发团队,相比大公司的团队而言他们的创新思维、试错能力、反应能力会比巨无霸们更强更快。

而 Android 系统本身经过几个大版本的进化以后路线也逐渐的清晰,相信除去目前的智能手机领域外,在其他的平台上也会逐渐得发力。

这点,能看得到。

— EOF —

我的照片

嗨!我叫「明城」,八零后、技术男、伪果粉、中医黑,宁波佬,现居杭州。

除了我的博客,同时也欢迎您访问我的 GitHubTwitterInstagram 主页。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 其实无所谓叫什么名字,因为我曾经为这个名字伤透了脑筋。最后想到的这个名字都没啥特别的,说到 底是因为我实在给它不了个非常酷的名字。

如果您想联系我,可以发我邮件 echo bHVja3lAZ3JhY2Vjb2RlLmNvbQo= | base64 --decode

文章

项目