DMHY 2.0 更新随想

这个工具从发布到现在也快一年时间了,是时候总结一下这将近一年的时间自己对技术的认知以及更新一下自己的一些态度 w。

最初有写这个工具的想法的时候是为了能在浏览条目的时候直接下载到种子,花园在首页只提供 magnet 链接,而在国内我这边 magnet 链接解析超级慢,这个不能忍,但是直接使用 torrent 文件的话,热门资源基本上 30s 内就开始有速度,于是便琢磨着怎么来简化自己获取源的步骤。第一个版本主要还是集中在浏览花园的主页及搜索列表里点击下载按钮后下载种子到 ~/Downloads 文件夹里,实现这个功能时涉及到的技术有 下载文件 这个使用 AFNetworking 照着示例代码搞定,解析番组详细内容页,提取出 torrent 下载链接,这里需要找一个支持 XPath or CSS 选择器 提取 HTML 网页内容,依然用 Ono 照着示例代码先熟悉后,找到下载链接的 XPath 值直接能够获取到一个带后缀为 torrenturl,然后把 mac OS 怎么显示处理后的数据到 UI 上搞定,差不多最初的个人需求就满足了。(当然由于使用的是花园 RSS 订阅和搜索两个地址,XML 解析什么的不可避免。)

在学校学那些知识点的时候,总是不知道有什么用,然后自己有个实际的需要之后,把理论上的那些东西变成实际应用起来,让自己做某些事情的时候能够更轻松点,这也是窝在高考后选择志愿的时候想的,不过直到去年才开始行动起来也是惭愧。

又经过一个月左右,把按天保存关键字(数据持久化使用的 Core Data 框架)解决之后,就开始放置开发了,原因嘛,整天忙于实习任务 w

在今年 2 月份时候,正好寒假在家里天天冷的要死(家里没空调的说),在想怎么把自动下载新章节的功能做出来,然后经过几天的打草稿,思考,又经过 2,3 天的填坑把功能实现出来之后,可以安心的连键盘,鼠标都不用点的第二天起床后直接看新章节啦。(懒是改进生产力的第一源泉 w),这个功能实现起来的技术细节基本上就是各种逻辑上的判断,比如:只获取当天的关键字,只把新章节的数据入库的同时调用下载的代码,不插入重复的数据。然后现在理清思路之后再看,原来就这么点内容却花了将近一周的时间思考,实现。不过像写代码或者说任何一种创作自己并不会的东西的那个过程,一点没有产出,我认为是正常的,因为是真的不会……而能通过模仿示例来实现自己需要的效果,这个是一个很幸福的过程,当然实际上也并没有那么多人能够把示例都给搞懂,并在实际使用中很好的使用。

然后在 3 月初的时候开始着手多站点搜索功能,这个时候找那几个 bt 站的 rss 订阅和搜索链接,有些是靠推导和猜的(因为没有多少人使用,所以放在不起眼的位置?),要支持多站点的话,那对数据的泛化支持,多种情况的判断是少不了了,差不多就是这个时候,decompress code(分解代码)和 function 这个概念才慢慢的使用起来,别问我为什么一直在写代码还是没怎么理解这些东西,当你脑子成一团糟自己也没有意识到需要改变的时候,是不会发现问题的。能发现这些问题并意识到,我是从 MIT 的 CS 公开课中学到的。(在看不下去书的时候,唯有带音频解说的材料才是让我不怠于学习/复习知识的手段,当然也在改变中,你看现在不是各种官方文档来回穿越的。)

不行,有点不知道该说什么了,果然长时间写代码,不说人话,交流能力是会下降的么,整天刷推也并没有改善自己不擅言辞的短点啊。

跳跃到 7 月 16 号左右(其实大部分内容可以从 commit message 中看嘛,虽然并不完全准确),花园服务器故障,用了几个月的自动下载功能瞬间瘫痪,于是开始着手支持多站点自动下载功能,大概 3 天后从想法变成了现实,程序运行正常,发布 2.0 版本,正式支持多站点自动下载。至于这里的技术细节,Core Data 的 data migration,Model Version,多 NSManagedObjectContext 造成的旧版本关键字删除时报错的 bug 修复,自己写带 block 的 function,对 block 作为 parameter 的使用,这些都是自己在以前没有写过的,从技术上来说自己相教于一年前无疑是进步的,不过进步了多少那是另一回事 233

然后从代码量上观察之后,删掉第三方库,自己大量变换更改的大概在 3k 行左右,算是一个个人可以随意更改的级别。不过至于这里的水分,不是有人常说代码的行数和实现起来的难度并没有直接关系嘛。也是,一个工具能够使用起来顺利和一个库能够让使用的软件都顺利运行,这个难度不用比较。不过能够把简单的事情做好,并且正常使用起来比只是随口说几句,「很简单的」,「n 个时间单位就能搞完」的这类空话要管用的多。

关于盗版党的一些想法

「存在既合理」这句话太万能,但是只说结论不给理由说明的都是强盗逻辑,当然强盗是没有逻辑的(也不对……)「一切的冲突在于阶级不同」这个也能说明一部分问题,不过背景过于庞大 ,嘛,不扯那些名言了。

至于盗版(动画)的大量存在:

  1. 钱。也就是经济基础,当然这里我不会从那些奸商的角度去看,毕竟窝不是商人,以动画来讲,如果要买 bd 的话,一卷的价格,拿 rezero 第一卷来说,当前是 5,545/7,560(打折后/原价),折合人民币 348/475(2016.07.27),也就是预订的话基本每卷 500 元左右,至于每个月买一部动画的一卷 bd 的成本对于哪个收入水平的人来说没什么生活影响,自己可以想象下。(动画的制作成本高,而商品的定价也在那里放着,短期内甚至长期内某人的收入水平不产生变化,又想享受,那就……下,不过如果没有盗版源的出现的话,那盗版党就无源可看,这个可能性出现的概率有多大,等到某一天全面进入监控社会后,恩。)
  2. 体验。获取简单(有大量人在背后作一条龙服务),内容完整(相对于暗牧白光)
    至于在中国,只要暗牧白光在某部动画中各种出现,下载不可避免……(连创作者表达东西的欲望都审查掉(censored),作为一个合格的观众,没看到难免留有遗憾。这里可以延伸下,作为一个看客,所看的内容都是创作者制作出来的,而看客能看到的内容在创作者将作品制作完成的时候是已经确定的,同时,创作者没有制作出来的内容是需要看客自行创作想象的,这个时候二次创作这中类型的创作能表达/传递出原作中没有表现出的内容,但是弄混了的话是不好的,至少对于原作来说。「迷音:我想要表达什么来着」)

从内容提供方的角度说,做一个体验(现在被概括的只说这两个字,却不说自己需要什么的,另人很无奈啊)很好的服务真的很难吗?我不知道……只是,由于每个企业所接触的关系方是多种多样的必须对各方提出的要求作出磨合,妥协之后所提供的服务才是内容提供方所提供的服务,在这过程中任何一个地方出现某个要求都会导致「一个体验很好的服务」这个和真的「服务」产生莫大的不同。(当然,这些东西大部分都是想象所产生的产物,并没有具有参考价值,我又不是业内人士,也不是分析师。不过能确定的是:我至少是一个无名的软件开发者,至于这个称号的分量有多重,自行想象 w)

跑题是不专业写作的一个重要萌点(才怪),不过想要表达一些什么并且说出来,这也是我写 blog 的目的之一,就这样跑题了也挺好的,又不是写高考作文。(不过看统计字数,有点可怕,不过,继续写吧,下面还要提下对技术的态度什么的呢~)

在接触了不同的编程语言,开发环境,文档风格之后,是能找到共同点,如果自己能够不去对比使用过的其它同类的话,那成为一个特定语言的使用者也挺不错的,不过能见到另一种说法是:技术是为需求服务的。使用什么技术是以你想要做的东西为基础选择的,可能这是以做产品的眼光去看的,不过作为一个开发者的话,不限制自己,逃出舒适区,让自己每天过的有意思这也是一种追求。(或许这种追求也只是一种借口,因为出于某种阴谋 #欢迎加入NHK ,自己不得不成为这样的自己。不过,还好,能发现有意思的东西,能体验到不同世界线的自己也挺好,并且指不定哪一天,各个世界线交错起来产生特殊的事件。「迷音:有点中二,逃。」)

如果想要做那件事情并且现有的技术有实现,自己却不懂那个技术的话,就去学习并使用现有的去实现那件事情。这种想法也许是因为自己软弱,没有能力造轮子改变现状,但让自己轻松并开心的实现想要的结果,是一种解决问题的方法。在经过一定时期对现有技术的不满后,才会去想要改善现有的技术,是一个成长的过程。(感觉有点奇怪,不过我是这样想的……)

嘛,自言自语就先放到这里。