写博客

今年开通了博客,一开始写了一些学习AI的笔记,后来写的全部都是自己的生活上的事了(因为懒得学习了)。具体为什么写博客可以参考这篇文章

创业

在家无聊所发动的创业计划,具体可以参考这篇文章。总结一下就是开发了一个扫雷app并发布到了Google Play Store,9月发布的 App 现在还是没能为我带来任何收入(现在只有 1-2 美元,还未到达提现标准 (100 USD))。而且现在我,朋友和家人也懒得刷广告了,现在的每日收益为0,代表完全没有路人玩家再刷广告🥲🥲。

学习了Flutter

公司有提供一些Udemy的课程,我那时拿了Angular的课程,发现那个讲师讲的很好,而且他的课程会随时间更新。于是我就去查看他的其他课程,看到他有Flutter的课程,想到我现在的技术栈缺少GUI开发(前端除外),于是就买来学习。

这个课程总的来说还是不错的,适合没接触过Flutter的初学者入门。这个课程比较专注于使用Flutter开发Android app,pc/网页端则没有过多的涉及。虽说专注于Android app开发,但是课程内容太浅了,没有涉及到深层的内容比如说使用原生Android API,SharedPreferences,后台通知,后台挂机,本地存储,Android 的 internal 和 external storage 之类的概念,以及内置 SQLite 支持。这个课程比较聚焦于线上app,比如说使用firebase来存储,Google Maps API 来显示地图之类,网络请求。

我学了后为了测试我的能力,就像上面说的开发了扫雷app。

第一次团建

第一次参加公司的团建,去了马六甲3天2夜。团建内容就是很普通地早上和下午参加心灵鸡汤的讲座/活动来教导团队合作之类的,晚上则是自由活动。

第一次报税

我终于也到了需要报税的年龄了🥲。幸好我妈是做会计的,帮我处理了很多报税时遇到的事情。

考证

今年公司赞助我考了OCP Java 21证书,一开始是老板问我想不想考,我看到有赞助,而且OCP java 21 感觉是含金量很高,毕竟是Oracle官方的证书。最主要的是,我想拿个证书去找朋友装B哈哈。

我大概用了 8-9 个月来备考,我使用的是官方教材,总共1.5k页我已经忘了我到底是怎么啃完的。我大概每个星期六和星期日读个 1-2 个小时,有时如果没心情还会”逃课”。我是10月尾考的,所以在10月时就开始比较焦虑每天大概读10页这样。幸好还来得及在考试前读完整本教材。

考试当天吓死我,我一开始本来打算使用公司电脑考,但是完全访问不到考试网站(应该是因为防火墙之类的设定),最后火急火燎地换回个人电脑来考,幸好没有错过开始时间。而最后我也压线过了,再错多两题就不及格了。这是我的证书😁😁

第一次贡献开源 (虽然是2024年的事了,但不妨碍我水:3)

樱之刻汉化项目

这是我第一次贡献的开源项目,那时刚打完樱之诗,樱之刻就发售了但是我不会日语无法游玩,去划github时看到了这个项目。这项目使用了GPT来汉化,我下载来玩一下,感觉还不错,我的第一章就是通过这个项目来玩的,但是过后绿茶发布了汉化就转去看人工汉化的了。

关于我贡献的部分,主要是有人提供了汉化cg,而我只是改一点脚本来让游戏应用这些cg而已,但是还算是做了一点东西吧?大概。算是圆了我想贡献汉化的梦想。

Sakana插件

这个则是2025年贡献的项目,这是我设置博客时使用的插件,具体就是左下角的那个Sakana~。在设置插件时本来是想增加一个按键来让用户关闭Sakana的,如果用户发现它挡住了内容。然后发现关闭的函数有bug,于是就顺手提了个PR修复了bug。但是最后我也没做成关闭按键(太懒了),直接把Sakana放置在左下角(一开始是右下角会遮蔽内容)就完事了。

CTF Wiki

今年某段时期想搞CTF(主要是为了CTF里的逆向来学习galgame逆向)寻找学习资料时发现了这个项目,看到了有些很简单的翻译任务就顺手做了,来蹭蹭9k star的热度:3

第一次出国,和朋友去日本旅行

计划12月尾去,顺便去参加冬季comiket希望买得到票🙏🙏

第一次投资

今年Moomoo打广告很凶,我就下载来玩一玩。一开始很sok,只敢跟着epf买,epf买啥我买啥,也赚了一点。但是后来看到他投资一些很奇怪的什么保健品公司,我就不打算跟了。就自己随便买了一些股票来玩玩,那时很天真想着要去抄底就去暴跌榜找榜1的股来买,结果买了还是持续的跌,血亏。然后大的来了,特朗普上任了,关税战开启,每个股票跌倒谷底,亏了很多,全部亏了回升不上来。之后我朋友介绍我IPO,想着新股应该怎样都不会跌过IPO买的底价吧,结果也错了,买了Cuckoo,结果一直跌一直跌,干。后来我就不想玩了,把股票全卖了,幸好我玩的都是小额,最后亏了2/300🥲。

失败经历

galgame逆向

我一直以来梦想着能学会galgame逆向。很久之前找到了一个很详细的逆向教程,但是没有时间去实践。今年终于有时间了去认真学习逆向galgame,阅读反汇编后的汇编代码企图理解如何加密/解密文本,结果最后还是失败了😢😢。完全看不懂汇编代码怎样加密/解密,或者说我连加密函数在哪里都找不到。我应该永远无法到达凤毛麟角的 galgame 汉化大神的水平吧……

日语学习

因为要去日本旅行,下载了duolingo学日语,坚持了300+天每天做一题,结果发现自己还是不会日语🤡就直接删了。

本地漫画阅读器开发

学会Flutter膨胀了,突发奇想想写一个本地漫画阅读器来玩玩。结果使用Flutter写漫画阅读器有很严重的性能问题,我就转去学习原生android开发,但是还是有性能问题,最后放弃了。

前言

关于为什么会开发扫雷app及为什么会选择扫雷,可以参考这篇文章

流程及参考文章

开发

最简单的一步,正常地开发就好。广告盈利的话需要集成AdMob,可以参考官网。需要注意的是最后打包流程,如果要发布到google play store需要使用aab格式。打包需要使用到keytools来生成keystore为你的程序签名,需要记住你的keystore的用户与密码,而flutter SDK并不包含keytools,需要自己去网上下载。具体的打包aab流程可以参考这篇文章。打包时需要注意以下东西

  • pubspec.yaml里的version: 这会影响你上传去Google Play Console的aab,Google Play Console并不允许你上传重复的版本,当你更新了某些功能要上传新版本时,一定要更改pubspec.yaml里面的version。Google Play Console看的版本是+后面的数字,比方说 version: 1.5.0+13,前面的1.5.0能重复,但是+13并不能重复。当你有新更新时,你可以再次使用1.5.0版本但是必须增加后面的版本version: 1.5.0+14
  • 广告ID: 开发时注意使用测试ID,打包发布时记得改去真实的ID。记得有2个地方的id需要变更,一个在AndroidManifest.xml,一个是你在apps里面初始化使用传入的adUnitId

发布

1. 注册Google Play Console账号,需要25美金

没有什么特别,去官网注册即可。注册后,可以开发无数的app上架Google Play Store,但是需要通过审查。

2. 寻找测试者

需要14个人。最难的一步,我没有朋友T^T,创建了几个小号+家人才终于筹够14人。

3. 测试2个礼拜

由于那时我使用的是小号,所以并没有每个账号都去下载来测试,实际下载人数应该时4,5个人而已,可能因为这个一直审查失败。感觉他会检查测试者是否安装/运行时间/反馈之类的来决定是否进行了完整的测试来决定是否批准。我那时失败了4,5次后本来打算放弃了,但是我咽不下这口气,尤其是我的25美金。所以在我放弃前我向客服发送了邮件投诉说我的app很小,并不需要如此完整的测试,而且我本人测试时候也发现了几个bug也迭代了几个测试版本。本来也没抱有期待,但是过了2个月后突然说审查成功,如果你的app很小也有正当理由可以试下这条邪修路。

4. 开发者网站和隐私政策

如果你要在Google Play发布app,你需要一个开发者网站,而且还要有一个网站来描述你的app的隐私政策。这步不难,我都是AI帮我写开发者网站,隐私政策也是AI帮忙写的。部署网站方面则有很多免费的第三方静态网站部署比如Github Page,Firebase,Vercel等等。我是使用Firebase来部署。

5. 发布

正常发布,没有特别需要注意的事情。

6. 更新注意

上传新版本时需要注意你app的版本和广告ID,详情看回上面开发

其他注意事项

添加Google Play Games成就注意事项

当你添加Google Play Games成就时,需要填你app签名使用的SHA1。但是你需要注意你有没有启用这个设置

如果你启用了Google Play签名,你需要使用Google Play的SHA1签名,而不是你打包使用的keystore的SHA1。

前言

我本身是软件工程学士毕业,现在也有稳定的朝九晚六的工作。但是我的薪水是我朋友里面最低的,而且我父母/朋友也一直忽悠我创业。我朋友一直想着我创业然后聘请他们当月薪5千的保安😂😂。于是我就萌发了创业的想法。

创业经历

编程接单 [❌]

由于我的专业是编程,所以很自然地都会想到编程接单。尝试过数个接单平台,但是有些平台需要付费才能提交方案,如果顾客接受方案你才算成功接单,太坑了;而有些平台里面发布的单子感觉很诈骗,比如租借google play账号,一个月几十美金,不然就是在这些接单平台招收全职员工??也尝试过开FB公共主页,小红书宣传编程接单/大学assignment咨询。但是完全没有水花,每则贴文都只有不到50个观看。主要难点还是找不到客户,编程方面有chatgpt之类的其实并不难,但是很难找到客户,除非你本身有人脉。

做meme page [❌]

我平时刷Facebook,看到那些meme page贴文会放些广告连接来赚钱。想着这不是蛮简单的mah,只需发发贴文就能躺着赚大钱。于是我开通了一个新的Facebook meme 主页。但是这个的问题和上面的类似,曝光量太少了,很难让多数用户接触到。而且我的想法是像做点新闻热点/普遍的meme,但是太难了。新闻meme,不一定每天有有意思的新闻,而普遍meme要灵感。而meme page需要每天发几篇文,不然不够活跃。

写blog靠广告赚钱 [❌]

……你看这个blog的文章数就知道这个计划惨败了:_(

开发安卓app靠广告赚钱 [🤔]

当我刷视频跳出来那些弱智短视频的游戏,就会产生我上我也行的想法。于是我就开始了制作一些小游戏来赚广告钱。至于开发的app类型,我是想类似三消之类的小游戏类似Candy Crush这样的。于是脑袋风暴了一下,发现扫雷是最简单的。不需要像三消之类做左右/上下移动动画,只需做点击的逻辑就可以了。详细的扫雷app开发过程会在下一篇文章。

创业结果

这是刚发布一个月的收益(多数为自己/朋友/家人刷的)。Google Play Console的安装总量也看得出都是认识的人安装的,并没有路人安装并游玩。但是你可以看得出其实靠自己看广告也能有收益。只要在每次达公交时候玩上2把看几次广告也能成为不错的被动收入。虽然只是蚊子腿,而且还需要100美金才能提取(不确定,但是看官方文档很像是)。而他的成本为:

Google开发者账号(25美元 约等于100马币)+ 之前我为了学习Flutter而买的教程(60马币)= 160马币,再加上你的闲暇时间

如果你觉得这值得,也愿意折腾Google play 商店,并且在上线后能坚持偶尔刷刷广告(注意不要刷得太频繁,可能会被封号),那么我觉得这也是个不错的被动收入。

反向传播

公式和图表

$y=x_1w_1 + x_2w_2 + b$,以下的图表表示着正向传播的流程

输入

$x_1=2, \ x_2=0$

初始权重

$w_1=-3, \ w_2=1, \ b=6.8814$

            graph LR
            
    w2["w2 | data 1.0000 | grad 0.0000"]
    x2["x2 | data 0.0000 | grad 0.0000"]
    w1["w1 | data -3.0000 | grad 0.0000"]
    x1["x1 | data 2.0000 | grad 0.0000"]
    b["b | data 6.8814 | grad 0.0000"]



    mul1((*))
    xw2["x2 * w2 | data 0.0000 | grad 0.0000"]


    mul2((*))
    xw1["x1 * w1 | data -6.0000 | grad 0.0000"]



    add1((+))
    sum_xw["x1*w1 + x2*w2 | data -6.0000 | grad 0.0000"]


    add2((+))
    y["y | data 0.8814 | grad 1.0000"]


w2 --> mul1
x2 --> mul1
mul1 --> xw2

w1 --> mul2
x1 --> mul2
mul2 --> xw1

xw2 --> add1
xw1 --> add1
add1 --> sum_xw

sum_xw --> add2
b --> add2
add2 --> y
          

正向传播后,我们就要开始反向传播了

阅读全文 »

导数的作用

来源

  • [YT] The spelled-out intro to neural networks and backpropagation: building micrograd
  • micrograd
  • bilibili中文字幕版本

神经网络原理

你知道的,神经网络都是以下这样的结构。然后每个节点的计算公式都是 $\sum_{i=1}^{n} (w_nx_n)+b$

神经网络的正向传播

简单来说就是正常的接收2个输入 $x_1,x_2$,然后通过一大堆计算获得$y$

            graph LR
            subgraph Input Layer
    I1((x1))
    I2((x2))
end

subgraph Hidden Layer 1
    H1_1((H1_1))
    H1_2([H1_2])
end

subgraph Output Layer
    O1((y))
end

I1 --w1--> H1_1
I1 --w2--> H1_2
I2 --w3--> H1_1
I2 --w4--> H1_2

H1_1 --w5--> O1
H1_2 --w6--> O1
          
阅读全文 »

前言

本来我是懒惰设置博客的,但是因为我朋友突然间跑来炫耀说他写了个个人网站。而我这个朋友完全不懂代码,我好奇他能写出什么样的就去看了下。好家伙,还蛮不错的,仔细问了下他是用cursor写出来的这样他还来找我说他一天就做完而我做不出来。结果我一气之下,就产出了这个博客网站。

阅读全文 »