我眼中的Smartisan OS

这篇文章成文比较早, 本来是打算在五月十五号那个天上天下无比"牛逼"的鸟巢发布会前夕发布的, 结果当时不知怎的就忍住了. 后来文章的一部分内容融入进了发布会后的那篇《坚强的理想主义者的扭曲》, 但毕竟原文还有一大堆内容没发表出来, 最终我决定还是另开一篇把我眼中的Smartisan OS写完, 算是一个交待. 严格来说, 我只仔细用过两个时期的Smartisan OS, 一个是相当早期刷在一加手机上的官方ROM, 另一个就是现在坚果Pro2上面的版本. 要说这两个版本之间有什么区别, 回过头看, 除了三大件的加入以外还真不算有太大的区别. 风格独特的启动器和传承自早期iOS »

BlackGlory on OS

《初音ミク Project DIVA Future Tone》全奖杯纪念

初音FT大概是我安装在PS4上时间最久的游戏, 游戏全奖杯难度不大, 但是极度消耗时间: 全奖杯需要把将两百多首歌曲都打一遍, 除此之外还要观看39*2=78首歌的PV加上拍照. 自我首发购买这款游戏已经过去两年, 终于在8月31日达成全奖杯, 说来也巧, 那天我打开游戏的契机是因为电脑遭遇硬件故障只好摸鱼, 而等我打出最后一个奖杯才想起来8月31日刚好是初音诞生的第11周年. 至于这篇文章为什么在9月2日才发, 是因为我发现游戏DLC里新增的几个人物套组和PV动作设计很不错, 拍照之魂熊熊燃烧... 奖杯 比较遗憾的是, 以前PS4系统损坏过一次, 其他奖杯的截图都没有保留下来. 也就 »

BlackGlory on 游戏

Node.js 动态插件架构 - 构建易于扩展的程序

两年前我做了一个名叫302go的不为人知的self-hosted玩具项目, 这个项目是一个重定向搜索引擎. 什么叫重定向搜索引擎呢? 就是它本身不具备任何搜索引擎应该具有的抓取和索引功能, 仅仅是把搜索用的关键字用HTTP 302状态重定向到指定的URL. 在实际使用中, 它的效果是这样的: 当你在浏览器的搜索栏(鉴于现在所有主流浏览器的地址栏和搜索栏都合并在了一起, 所以当成地址栏也没问题)里输入"Google 你好"或者"你好 Google"并按下回车进行搜索, 这个搜索引擎会直接302重定向到Google关于"你好"的搜索结果页 »


未来, 电子书

我在电子书上消费很多年了, 偶尔也会推荐别人买电子书, 但多年来我其实并没有系统地谈论过电子书, 更没有输出过我对电子书的想法, 这篇文章很大程度上是为了弥补这个空缺才撰写的. 从纸书开始的故事 理所当然的, 在全面切换到消费电子书为主之前, 我是一个忠实的纸书读者. 我的书架似乎永远都是塞满的, 放不下的新书在地上垒起高塔, 一叠又一叠, 直到影响正常生活, 才不得不去整理它们并决定最终的去留. 对于任何买书如山倒的人来说, 无论多大的书柜和书架, 终归是要变得不够放的, 书籍不是消耗品, 读完了你始终要给它寻找一个去处. 要在一个有限的空间里放下会随着时间而无限增长的物质, 这是不可能做到 »

BlackGlory on 随笔

个人的漫画推荐 #5

一年多没有更新漫画推荐了, 这一年多也看了不少好漫画. 往期推荐: 个人的漫画推荐 #1 个人的漫画推荐 #2 个人的漫画推荐 #3 个人的漫画推荐 #4 哥布林杀手 "我只杀哥布林" 轻小说改编的黑暗奇幻DND漫画, 由于前期的裸露画面和残酷描写非常多反而更像是比较糟糕的重口味本子...以地下城探索和硬核写实战斗为主要卖点, 已决定动画化, 也是不知道动画制作组会怎么处理... 这部作品里的哥布林是我目前见过设定最凶残的哥布林, 虽然从定位上说哥布林依然是高级冒险者懒得收拾的弱小怪物, 但也常常会因为族群的发展而成为最难对付的狡猾敌人. 主角是一个与哥布林不 »

BlackGlory on ACG

异步构造函数 - 构造函数与Promise的结合

拜浏览器和Node.js的更新所赐, async函数这几年变得越来越常见, 我们在实例化一个类的时候可能也会要先异步执行一些操作. 拿一个最简单的延迟初始化的类作例子, 来自其他语言的编程习惯会使我们下意识这么写: function delay(timeout) { return new Promise(resolve => setTimeout(() => resolve(), timeout)) } class MyClass { constructor() { this.completed = false } async init(timeout) »


坚强的理想主义者的扭曲

很长时间没有写随笔了, 这次久违的写一下. 这篇文章本质上是好几篇草稿的合体, 我把文章的草稿写完, 却又无力完稿的问题已经慢慢积累成了一种痛苦, 如果不消耗一下积累的草稿, 怕是以后什么也写不出了, 更令我感到恐惧的是, 类似的话我似乎已经反复说过多遍了. 结合时间和标题, 也不难猜到这篇文章主要是写些关于锤子科技的东西, 自从写了《谈 2016 锤子科技发布会》, 我就没有在博客里发过任何锤子相关的文章了. 作为一个大部分情况都站在大众的对立面的人和一个热衷于寻找有趣事物的人, 我很少能在这个世界上找到看得顺眼的产品, 尤其是在中国本土, 而锤子还算是少数能做出我可以接受的产品的企业. 我 »


人民需要Nintendo Switch破解

Nintendo Switch是一个很难找到不被破解的理由的游戏机, 哪怕对纯正版玩家而言也是如此. 趁着Switch硬件漏洞被黑客公开, 让我们来谈谈为什么Nintendo Switch是一款应该被破解的游戏机. 先天缺陷: Tegra芯片存在硬件漏洞 印象中最早这个消息被曝出是在去年12月底德国34C3黑客大会上, 当时破解Switch的黑客并没有公布漏洞细节, 但给出的演示视频已经足够给其他黑客提示, 很快就有几个黑客团队陆续表示已经破解Switch. 曾经破解Xbox的黑客团队Team-Xecuter更是在几天后就宣布完成Switch全版本系统破解, 表明该漏洞存在着普适性. 基于现在 »


异步Proxy - Proxy与Promise的结合

Proxy和Promise是两个已经可以在现代JavaScript运行环境里广泛使用的内置对象. 也许Proxy对你来说还有些陌生, 但Promise相信你已经使用过无数次了, 它是一个可爱的语法糖, 用来替代回调函数来以更优雅的写法串连起异步非阻塞操作. Proxy其实也并不是多么新鲜的事物, 它曾经以Object.observe()的身份现身过一段时间, 它是一个可以用来定制对象行为的同步钩子, 用它我们可以实现一些从前无法实现的奇妙行为, 比如创建出一个拥有无限个属性的对象. 很少有人会想到把Proxy和Promise联系在一起, 它们看起来是如此不同, 一个同步, 一个异步, 一个代理 »


名为JavaScript的魔法

这是一个新的文章系列, 主要讲一些JavaScript的真正使用技巧, 不定期更新. 写这个系列的原因是我受够了我的无知同行们写的一些狗屁玩意, 所以让我们来见识一些真正有意思的东西. 最初期的几篇文章主要是跟我的Chrome扩展Gloria相关的, 我本该在一年前就写Gloria的运行原理的, 但由于种种原因始终没能写成, 所以这个系列也用来提前揭开一些Gloria引擎盖下的东西. »