假期——于飞机上

在成都磨蹭掉一个礼拜之后,我终于飞回家准备开始假期了。本来以为这寒假够短的,正月十五不到就要返校上课结果今天出发前一看国航 App, 离回程航班还有三十六天,还是有点吃惊的。

虽然 Bitcoin 带着众多币种在昨天一起跳了一次崖,但在短时间内显卡的价格还是下不来的,不过本就打算在过一段时间直接买一块 GV10x 算了,那么估计是要继续用 940M 凑合着了。也就是说还是打不成去年前年发售的那些最新最炫酷的大型游戏,还是打打 R6, 农农 GBF 好了。

前几天从微博上收了一台网件 R6250, 与两年半前收那台 RT-N16 一样的价格,但是性能强了太多。同样的五口全千兆最在意的点,802.11AC 和 5GHz 的支持,可以用多种开源系统网件的原厂固件一直被人喷是屎。从 11 号晚上搬到中舒那边之后才发现,在嘈杂的 2.4 GHz 环境下,无线网络延迟的增加可以很明显的感知到。当年 RT-N16 发布时,802.11N 也还只是草案阶段,仅支持 150Mbps 的传输速率实际上是支持到 300Mbps 的但不知道怎么回事,我用的时候实际连接速率最高都是144Mbps,在今天确实远远不能满足我的需求了。不过一台 2010 年发布的路由器,能用到现在而且华硕时不时还会给它出个固件更新可以说是非常良心了,退役给家里当主路由用吧。

前不久国家出台快速推进 IPv6 普及的政策,据说东部部分地区的电信已经支持了 IPv6 的接入(事实上在两年半前 RT-N16 刚到手的时候就试过,貌似确实有), 那么换了主路由干脆把 IPv6 也配置好,跟上潮流嘛。

那么回家干的事情第一点就是搞网络,你说我一个非网络运维专业出身的天天跟各种网络节点设备打交道也是。。。

也是挺奇怪的,自从打完空の軌跡 FC 之后把 SC 开了一个头就一直不想打下去,本来打算飞机上把序章完成掉的结果也变成了码字而不是拿着手柄 V, 不过 A330 确实比较稳的,果然还是宽体飞机好。寒假看看有没有心情打吧,毕竟机器和卡带都是别人的自己一直拿着也不太好,SC 完了还有 3rd 也是头疼了说到底还是传统 JRPG 的错。

过完年就要回去读大三后半学期了,离成为一个社畜就只剩半年不到的事件了。考研是不会去考的,这辈子的不会去的。从去年夏天开始投的简历都已经石沉大海了,那我也没好的办法,只能继续学习。连一个不给钱只管饭的银行打杂的实习机会都不考虑我 虽然我感觉是因为时间问题 那我还是只能考虑考虑当前端/后端/全栈了,当务之急还是多学点东西,如果寒假能克服障碍把那个 RaidFinder 写完,之前文章中给定的三个目标给实现,那我觉得我的全栈起码是,入门级了吧。

还一个小时降落,看了眼字数已经水了将近一千字了,但一点收尾的感觉都没有,那就,继续水下去好了。

今年年内 Granblue Fantasy Re-Link 可能就会发布,但是目前为止购买 PS4 Pro 的钱是一点都没有,白条和信用卡还欠着一堆,只能靠四月头上的保险钱看看能不能减轻一点压力,氪金还是少氪一点吧。

哦对,还有跟她说的可能有的生日礼物。这个“可能”应该是“肯定”才对,计划是在一个杯子里放条生日石项链。转眼间就是三年,只能感叹一句,物是人非,当初自己铸下的错误,可能这辈子,都没有办法再挽回了。

突然发现,一写到她,我就写不下去了,马上就要收电子设备了,再扯点别的。

今年的旅游计划大概是去趟武汉和重庆吧,去年夏天感受过了粤国和鹭岛,今年感受下在中部但文化上偏西南地区的都市和离成都最近的大都市的另一种感受,有机会的话还会去趟苏州感受苏南三市的发展。

也就这样了吧,保存睡眠了。

RaidFinder 开发记——1

上篇文章给自己写了一个开发计划,这两天已经开始动手了,结果刚开头就非常不顺,来写篇文章吐槽一下。

从原版的描述和一些代码中,我发现原作者使用了 Twitter4j 这个看起来在 Java 平台非常强大的库来进行 Twitter Stream 的获取。而在 NPM 上不难找到类似的 Twitter 库,也不难使用,填好两组 Key & Secret 之后简单的调用 API 就可以输出源源不断的 Tweets 来。

Twitter 官方提供的 Stream API 中自带了对自定义关键词的 Filter, 那么我们就来调用它。然后就碰到了目前为止第一个也是最主要最棘手的问题。

最主要的问题

问题就是:Twitter Stream Track 的关键词设置不支持 CJK 字符,而 GBF 的玩家则大部分使用日语,他们的救援推的关键词都是"参加者募集!"

于是我在 Twitter Deck 中新建了一栏,使用"参加者募集!" OR "I need backup!"的搜索条件进行搜索并观察官方用的是什么办法支持 CJK 字符的。结果大失所望,官方的搜索也只是用 Search API 而不是 Stream API, 然后定时获取一次假装出 Stream 的感觉来“糊弄”用户。那么我想,目前找到的库对于 CJK 都没有支持的情况下应该作者是用了一些手段来支持 CJK 字符的。

那么也只有继续读源码了。


经过大概一小时的思考,我决定暂时先将实现平台放到 .NET 上,目前 .NET Core 在跨平台上面已经比较稳定了,用 C# 写也更顺手一些。先拿这套把实现思路和一些算法给摸清楚,以后再重新用 Node.js 来实现。

计划:用 Node.js 重写 GBF-RaidFinder

最近产生了一个“大胆”的想法,就是用 Node.js 来重写 walfie/gbf-raidfinder 这个被许多骑空士使用着的项目。

为什么想要重写?

因为原项目是用 Scala 写的,运行在 JVM 上,虽然 JVM 跨平台的能力比较强,但它相对比较“臃肿”,而且构建、更新起来比较慢。可以是可以用作者提供的 Docker 镜像直接部署,但是之前因为 Docker 不兼容于 4.9 以上的内核,而我又比较依赖于 bbr 这玩意儿所以就没用 Docker 而是直接跑在系统的 JVM 上。

那么为什么想用 Node.js 重写,Node.js 相比较于 JVM, 保证了一定的跨平台能力的同时更为轻量化,版本迭代的代价也更低一些。最主要的是,我想通过这次重写来学习 Node.js 和 Javascript, 因为这个项目是 C/S 架构的,也能学习一定的全栈能力。

重写方案

在重新简要查看了原作者的实现之后,我得出了“这不是我短时间就能重写出来”的结论,原因如下:

  • 原作者使用了 WebSockets 这项技术来实现列表的实时更新
  • 原作者使用的许多库不知道在 npm 有没有类似的替代品
  • 原作者写的 Boss 列表自更新是一大难点
  • 我在 JS 和 Node.js 上都只是一个初学者

那么就一步一步地来,先写出一个 Twitter 的搜索模块,再学 WebSockets 然后把实时更新给实现了,然后把自更新实现了,最后把几个部分整合到一起,差不多重写就完成了。我给这个坑留半年到一年的时间,希望明年的现在我已经填完这个坑了。

>>endl;

Progressive Web App

什么是 PWA

前不久了解到 Progressive Web App 这个在2015年就已经由 Chrome 项目组提出来的概念,A selection of Progressive Web Apps 这个站点上收录了许多支持 PWA 的网站,不乏有可用性非常高的 Telegram Web 和知名的 Flipboard 应用的网页版。

PWA 是什么?直译过来就是渐进式网络应用。特性有很多,想要了解具体的直接看 Progressive Web App, 这里只举我最看重的几点:

  • 轻量 & 离线可用

    跟普通的网页没啥区别,加载快。而且不像 Hybrid App 那样还是依赖于一个本地的 App 壳子,需要你去 App Store 安装

    PWA 在 Android 上保存到 Home Screen 之后就会自动编译生成一个 APK 安装进系统中,也就意味着,它不止是一个网页,而已经成为了一个本地应用,离线状态下也是可用的(当然依赖于网络的东西就不行了)。而这一过程相当快,所要耗费的网络流量也远远小于 Native/Hybrid App

  • 本地通知支持

    在添加在本地之后,PWA 就拥有了本地通知能力,因为在 Android 上是通过 GCM 实现的,所以国内这点并不好用,微博 PWA 就干脆没有写通知的功能

  • All in Browser

    其实这点就是第一点的补充,一个浏览器干所有的活,不用装那么多又大更新还要开 App Store 的应用。而这一点也包括在所有平台上都有同样的用户体验,虽然目前的 PWA 界面多是为移动设备而设计,但是至少我在 PC 上能一样很方便的用到它,而不是通过虚拟机或者其他手段。

我记得在早期 iPhone 刚发布的时候,Apple 的想推广的就是 Web App, 让用户可以用一个 Safari 干所有的活(可笑的是现在 iOS 还没支持 PWA),可惜当时的前端远远没有今天那么多好用新颖的技术,那时的移动设备性能也满足不了使用非原生代码的开销,所以最后 Apple 妥协了,推出了 App Store 直到今天。而现在 PWA 的推出,多了一个“渐进式”的前缀形容词,没有前几年强推 Web App 的那种势头,更加务实的风格更能被人们接受。

目前比较有用的 PWA 站点

其他的可以上 A selection of Progressive Web Apps 看,虽然好像都是国外的而且好久没有更新了。

怎么安装

非常简单,用你的 PC 版 Chrome 或者 Chrome Android 打开上一节的随意一个站点,等待一会儿就会有一条提示你可以添加到主界面的横幅在下方出现,点击即可。或者你可以手动使用“添加到主界面”的功能来实现。

>>> endl;

杂(三)

又是一个礼拜过去了,成都今年的严重雾霾晚来了一会儿,但是终究没有缺席。看着每天天气报告中那令人窒息的空气指数数字、全球领先的排位,感叹一句,国际化大都市不过如此。

被冬日的温度以及那浑浊的空气困在室内,也就只能每日流连在各种垃圾手游和几个大型在线射击游戏里。


今天还是想来写一下对于字体的一些感想,源起是看到烧饼的 Blog 字体设置上比较“怀旧”的采用了全局衬线字体、思源宋体优先的设定。我也是一个对思源系字体情有独钟的爱好者,能自定义的场合和自己输出的 PDF 等文档打印件中必然会采用思源系字体,比如本 Blog 就使用了思源宋体和黑体的组合,当然你系统里没有这两款字体就会回退,在 Windows 上回退了就很难看,除非你的浏览器里面把 sans-serif 和 serif 通过一些手段自定义了。

然后烧饼跟我说,Typekit 是有免费版的,一查,还真有,那肯定要用上啊。比较搞笑的是,我用的这个主题的作者原本在 head.ejs 中,是有调用 Typekit 的,但被我直接就去掉了。现在加回来之后,在没有思源系字体的桌面浏览器上,字体的显示是正常了,但是在移动端上,字体显示还是会被系统默认给覆盖掉,接下来需要想办法解决的,就是这点了。

题外话,这个主题已经被我修改的跟原版差距有点大了。包括一系列增大中间内容呈现框的宽度和图片大小设定等修改,在 Blog 内容显示上可以说已经完全是我个人喜好的体现了。
有空把分类目录写了,再把 About 页面写了,这个 Blog 的总体就算是完成了。
>>> endl;