大象笔记

知者行之始,行者知之成

软著代码自动提取,并生成代码文件

申请软著需要提交 60 页代码,或者 3000 行代码。手动一个文件一个文件的复制黏贴太麻烦了。 特别是像 Android 项目这种目录层级特别多的,完全是浪费时间。 于是写了个 shell 脚本,自动生成 txt 格式的文件,然后全部复制到 word 中即可。 以 Android Kotlin 项目为例: shell 脚本 gen_code.sh #!/bin/bash set -e # or use "set -o errexit" to quit on error. set -x # or use "set -o xtrace" to prin ...

阅读全文...

Golang 后台模板分页组件,基于 Tailwind CSS

为何不适用基于 Javascript 的分页组件 For SEO. 写 Web 就是为了能被用户搜素到,如果不是为了这个目的,web 版本都没有存在的价值。 而分页导航又是被搜索引擎收录的关键,所以一定要在后台进行渲染,不要使用 Javascript。 后台模板实现 现在来看,Laravel Django 这类框架还是比 gin 爽,毕竟内置了分页组件。 可以参考这个封装,顺便学习一些 template html 库的使用。 https://github.com/AndyEverLie/go-pagination-bootstrap 封装的很好,复用性很强。但是需要改造的地方。 TODO [ ...

阅读全文...

Android 从相册选择照片,或者拍照

之前实现了 Android 拍照获取图片,现在需要再加上从相册选择照片。 交互 其实有多种交互方式: 界面上直接放两个按钮:一个是拍照,一个是从相册选取。简单直接。 点击拍照按钮,弹出一个选择框,提供两个选项,一拍照,二从相册选择 对于界面空间富裕的场景,我觉得第一种方式就非常方便了。当然,我也懒得搞那么复杂。。。 可是微信里面那个相机为啥那么方便呢?是否是自定义实现的相机,而不是调用的默认的相机应用。 kotlin registerForActivityResult 实现,目前推荐 registerForActivityResult 并没有 startActivityForResult ...

阅读全文...

Android Kotlin JSONObject 解析接口返回的 JSON 数据

我想试试不依赖三方库,例如 GSON,的情况下,用 Android 内置的 JSONObject 来解析后台接口返回的 JSON 字符串。 后台返回的 JSON 格式为: { "err_code": 0, "count": 4, "img": "static/public_images/20220405_093125_cb6e46b6301542ada1ee8e4a7a182e1f.jpg", "shape": [ 232, 174 ...

阅读全文...

Android Kotlin 使用 OkHttp3 上传拍照获取的 Bitmap 图片

断断续续耗费了快一天时间,终于把 Android 拍照并使用 OkHttp3 上传图片的功能实现。 整体感受: Kotlin 相关的资料还是少,即便是英文的资料也不足,特别是三方库。大部分都是 Java 的代码 Android 这些类库相关接口废弃得过于频繁,就算找到了示例代码,经常是已经废弃的接口。对新手很不友好 无聊的概念太多,必须沉住气,要不很容易掀桌子 家里有孩子需要看,不可能一直坐在电脑边,身边有本纸质参考书翻翻,即便是过时的实现方法,还是有启发的,也可以了解基础知识 OkHttp 官方文档 https://square.github.io/okhttp/ 只不过文档是基于 Ja ...

阅读全文...

安装并搭建 Tailwind CSS 开发环境

顺风 CSS Tailwind 中文意思是顺风。而我一直以为这个单词的意思是台风。。。 实际上台风是,typhoon。 为何要使用 Tailwind CSS 在写小程序样式的时候,为了排版方便,我自己也形成了一套基于 flex 的布局 class,跟 tailwind css 的理念是一样的,确实写起来很快 Tailwind CSS 官网整理出来所有的 class,可以一目了然地对比各种样式的区别,比自己去挨个尝试方便多了 安装 Tailwind 如果本机没有 npm 或 npx 可以参考这里安装最新的 node,自带了 npm,npx。 npm install -D tailwindcs ...

阅读全文...

猛男流泪,微信小程序要防止被扒取反编译

我一直知道有专门的开源工具可以把小程序的代码反编译出来,还未曾尝试, 没想到就有邪恶的手伸向了我的小程序。。。 然后他发了个我代码的截图,估计是想炫耀一下。我口吐芬芳后,就把他拉黑了。 就算他能上架,我也不太担心被抢走用户。毕竟 没啥用户,每天一百来个用户快一年没增长了 流量没那么好来,特别是短时间没法变现的,更加没有动力去拉流量 但是,这事还是让人非常恶心,就像房子里有个蟑螂一样,就算你们不在一屋,也异常恶心。 “奕弘” 们是做什么的 我在搜素“小程序反编译”的时候,居然神奇地搜到了微信里要扒我小程序的这个人奕弘,因为他回复了几个关于反编译的问题。这个人的名字经常变更,非常狡猾。目 ...

阅读全文...

作为大龄程序员我都开始对自己有年龄歧视了

烟台疫情这半个月,我的身体是彻底吃不消了。 手腕疼、腰痛、拉肚子,整个人像飘在天上一样,毫无工作状态。 病因 疫情爆发后,上周六我就没敢继续去公司,怕被封在外面。 赶上小闺女发烧,呕吐加拉稀,只能抱着到处溜达。 手腕本来这段时间就不太好,抹了腱鞘炎的药也没有明显效果, 这下直接干废。摸着鼠标就疼。 这个腰痛,算是持续性伤害,确实是年纪大了。 之前抱老大,每天来回永旺,玩一样。现在想想感觉不可思议。 拉肚子应该是被小闺女传染的,先是我妈被传染,然后是我。 一天拉了10趟以上,平均两个小时一次,晚饭一口没吃, 靠一瓶宝矿力续命。撑过了几近崩溃的一日一夜。 过了两天,此刻才完全恢复。 本来计划去市里 ...

阅读全文...

Golang Gorm Sum decimal 字段类型

感觉是 Gorm 的 Bug,在使用 Pluck 获取 Sum 结果时总是报错。 而用 Scan 就没有问题。 可行的做法 Scan type FHSum struct { Total float64 } var total FHSum db.Select("sum(money) as total").Scan(&total) 这样能获取到 sum 的结果。 Pluck float64 报错 var total []float64 // slice 的第一个数字就是 sum 值 db.Select("sum(money) as total&quot ...

阅读全文...

MySQL 查询日期类型字段在某个月的数据

在做的一个财务预算管理小程序部门支出流水功能,需要能查询出指定月份的财务流水数据。 MySQL 数据库中存储了财务支出条目发生的日期,需要能通过年月来过滤查询。 例如,我要查询 2022 年 3 月份的所有财务数据。 方法一(推荐) SELECT * FROM financial_history WHERE `date` BETWEEN '2022-03-01' AND LAST_DAY('2022-03-01') MySQL LAST_DAY 函数返回当前 date 或 datetime 类型值对应月份的最后一天。 MySQL LAST_DAY() returns the last d ...

阅读全文...

Go 1.18 版本新特性,及升级步骤

今年 315 唯一的好消息是,Golang 1.18 版本发布。 新特性 支持泛型 Generics 模糊测试 Fuzzing Workspaces 性能提升 20%。但是由于支持了泛型,编译时间比 1.17 慢 15%。 详见:https://go.dev/blog/go1.18 总体而言,新特性,我个人基本用不上。。。我果然是一个不合格的 CRUD 程序员。 泛型 Generics golang 官方文档介绍得通俗易懂,不需要过多解释。 https://go.dev/doc/tutorial/generics 可惜,我至今所有语言都没用过泛型这个特性。 模糊测试 Fuzzing 使用随 ...

阅读全文...

通过 git lfs 将数据库文件加入 git 项目管理

之前只是看了 git lfs 的介绍,但是没有上手一试,正好遇到新项目想把测试数据库的数据导出,并存储到 git 项目中, 方便其他开发环境导入。 Ubuntu 上安装 git-lfs sudo apt install git-lfs 如果未安装,会提示错误。安装引导安装就好。 > git lfs install fatal: 'lfs' appears to be a git command, but we were not able to execute it. Maybe git-lfs is broken? > git-lfs Command 'git-lfs' not ...

阅读全文...