今年一共做了13个,大概是一个月一个。这其中有些 Project 计划是一起用的。比如 Gallery 和 Daily Picture 。Daily Picture 负责抓取图片,Gallery 负责前端显示, Image Excerpt 负责为十几张图片生成一个统一的颜色预览图。

👛 FRIEND :这是我目前正在进行的项目。我希望可以探索一下代币化个人价值和社交价值。目前的想法是可以将个人代币的价值与你朋友的代币进行锚定。个人可以更改这个锚定价格。毕竟人都在进步,如果你进步的比你朋友快,你就应该提高代币的锚定价格。

那这些个人代币可以怎么使用,又有什么价值呢?目前我想到的是这些代币可以用于赞助,VIP,付费阅读,付费提问,自定义化的付费服务,等等。代币可以分发给那些支持者,比如在社交媒体上给你点赞,转发你的推文等等。

这是我第一次尝试智能合约开发。踏过了 Solidity,各种开发框架,本地环境搭建,Debug,Test等等的坑。智能合约开发和 Debug 都比 Web 开发或者 Python 之类的难度高。由于智能合约更新的困难,我也写了很多 Test。Test 代码大概在合约代码的两倍左右。

具体的一些坑可以看我的 Twitter。关于智能合约开发的推荐流程如果大家感兴趣的化可以考虑以后整理一下。

🎰 Variational Inference Solver for CP Decomposition :这个是我第一次使用 Pytorch,第一次尝试机器学习。感觉倒是不错。Pytorch 非常的简单易用,至少写网络结构的时候是这样的。比较麻烦的是训练,测试和调参的代码。这些代码的行数是网络结构的4倍。

这个项目是张量计算的期末项目。虽说是张量积算课,这个项目更需要的是机器学习的技巧。在众多的 Variational Inference Solver 中,我们最后选择了 Variational AutoEncoder 去实现 CP Decompostion 的重建。

这个项目主要的困难之一是对问题的定义。这个题目是教授直接扔给我们的。看到题目的那一瞬间就是迷茫,根本不知道题目里的这些术语是什么意思。在未知的领域逐渐摸索,找到思路。这可能是对大多数人来说最害怕的部分。因为在探索的过程中不知道自己的思路是否正确,离终点到底还有多远。随着截止日期的临近,这种压力会越来越大。

接下来的困难就是技术实现上的难题了。之前提到过我以前从来没有用过机器学习,幸亏 Pytorch 上手容易,我并没有在网络结构上吃太多的亏。主要的问题还是调参。应该用多大的网络,训练数据要多大,batch,learning rate 又分别是多少。我最后采用了 Ray 来进行自动调参。自动调参的想法很简单,就是尝试不同的超参数组合。但自动调参的代码写起来还挺多的,上百行的样子。最后的效果其实也差不多,没有想象中翻天覆地的变化。

💰 Ethereum wallet analysis :这是在 DEFI 火热的时候写的。用于分析某个钱包地址 DEFI 投资的表现。如果这个钱包表现好的话,我可以选择跟单,也去赚一点钱。

这个项目的主要难点之一是数据清洗。我从 Zerio.io 上获取钱包的交易数据,用 Pandas进行清洗。第一次使用 Pandas 清洗数据遇到不少难点。比如怎么处理日期,怎么对行和列进行操作等等的基础问题。

后续的分析也遇到不少问题。分析的思路很简单,首先把交易根据交易对进行分类,然后分析每个交易对的盈利情况。进一步分析就把交易对的交易记录详细分成单子。去寻找开仓和平仓的时候,然后分析这一个仓位的盈利情况。但在实际操作中会遇到各种各样的问题。比如用户不平仓,用户的交易对比较复杂,把不同的代币进行呼唤。又比如用户从其他钱包里收到了钱,然后进行交易。这些情况都使分析更加困难。或许用 Time Weighted Rate Of Return 或者 Dollar Weighted Rate Of Return 会更好。

即使找到了好的钱包,真正跟单的时候也很困难。由于Defi的高波动率,即使是1,2分钟的数据延迟都会对收益造成巨大影响。

关于区块链的新技术,新思想如果大家感兴趣的化可以考虑以后整理一下。

🖼️ Daily picture :这个项目可以把你在 Pixiv 和 Twitter 上点赞的插画给下载下来。我的出发点是希望把我喜欢的插画下载到本地,方便随时欣赏。毕竟一张图片包含着那么多的信息,绝对不是在手机上一眼扫过去3秒内能够欣赏完的(上完艺术史的课才意识到一张画应该如何去体会)。因此我采用了增量更新的方式。如果你是第一次运行脚本,它会下载你最近喜欢的50张图片。当你下次运行脚本时,它只会下载你最新喜欢的所有图片。

这个项目的难点只是挑选合适的库。好用的 Pixiv 库还真的不多,大部分都有点缺胳膊少腿的感觉。

✉️ Webpush notification :这是我今年的第一个项目。它可以帮助基于 Hexo 的博客给读者通过浏览器推送通知。如果你希望你的读者能够第一时间知道你的更新,这个插件非常的实用。

在实际开发的过程中,遇到最大的问题就是 Hexo 文档。Hexo 的文档挺简陋的,关于插件开发在网上也没有太多的资料,大部分时候都得自己动动脑子。 而且制作插件也没有什么配套的开发或者 Debug 工具,得自己用最原始的方式慢慢来。

🚗 Ansible playbook for common VPS setup:在之前折腾新的 VPS 的时候,我采用了 Ansible 来做自动化部署。Ansible 我在以前介绍过,可以很方便的进行自动化运维,强大的 Devop 工具。这个仓库包含了我自己常用的 Ansible 脚本。

☁️ BlenderCloudRender:用 VPS 或者免费的 Goolge Colab 来渲染自己的 3D 作品。那段时间我特别喜欢做一些 3D 的东西。但是 3D 的东西渲染又很慢。所以动手写了这样一个脚本可以把渲染放在云端。由于专业的渲染服务器太贵,我就选择了把渲染交给便宜的VPS或者免费的 Google Colab。