大象笔记

知者行之始,行者知之成

rust web 框架 loco 安装

之前尝试了 rust 的 Axum 框架,并写了两个练手的小工具。但是感觉上还是太简陋了,跟 golang 的 gin 类似, 没有自带的 ORM 以及模板系统,对初学者非常不友好。 我需要的是一个类似 Laravel 这样的完善的框架,有自己的代码结构规范,以及各种内置功能。 恰好看到了 loco 这个框架,号称对标 Ruby on Rails 这个经典框架。 The one-person framework for Rust for side-projects and startups 而且是基于 Axum 的封装。于是忍不住想尝试一下,顺便把之前写的小工具重构成基于 Loco 的。 ...

阅读全文...

回家办公,显示器屏幕越多开发效率就越高么

最近晚上回家发现越来越不想打开电脑,即便开了电脑,面对两个显示器, 经常一行代码也没写,就刷起了 B 站上的红警视频 (一个看视频,另一个闲置状态)。。。然后到点关机睡觉。。。 也许是最近连续两周早起晨跑,到了晚上就犯困吧。 昨晚发的关于烟台网站开发的文章,也是在手机上码完字,直接发布的。也没有用到电脑。 反倒是,拿出落灰已久的笔记本,倚靠在沙发上,还能干点正经事。 为何在小小的笔记本屏幕上,和更小的手机屏幕上,我能静下心来写点东西。 反而到了大显示器,多显示器下,就开始分心,不知所措。总想边看视频,边工作。 实际上只完成了看视频的任务。。。 我觉得大概是之前养成的"习惯" ...

阅读全文...

烟台某些网站开发公司真是太糊弄了

公司一个网站找了一个烟台本地网站开发公司(某明网络),开发完成后,跟设计完全不符,而且这个刚毕业的开发人员连样式都搞不定。没办法,最后让我去擦屁股。非常无奈,钱让外面公司赚走了,活都我干了。。。 白白浪费两个周时间,一肚子火。 糊弄点 页面底部用了一个假的icp 备案号。域名不做工信部的 icp 备案。直接用的香港服务器。我是在阿里云上部署新网站时,发现域名访问被拦截了,才意识到这个问题。虽然海外服务器可以省去 icp 备案,但是公安备案是省不了的,而公安备案也没做。 不配置 https。一行命令搞定的事情,就是不弄。 不能发布文章。。。真的是纯静态页模板。第一次见这么糊弄的。 合同里有中英 ...

阅读全文...

第一次给个人网站提交公安联网备案

昨天接到烟台开发区当地派出所的电话,说我的个人网站需要 3 天内提交公安联网备案。我同事也收到了公司网站的公安联网备案要求。看来这次是集中催办了。 好在,同事今天下午操作了一遍备案流程,帮忙踩了不少坑,我晚上仅仅耗时半个小时就完成了备案提交。 具体参考,阿里云官方文档 “公安联网备案及注销”: https://help.aliyun.com/zh/icp-filing/basic-icp-service/user-guide/the-public-security-network-for-record-and-cancellation#concept-dw1-2sl-zdb 登录全国互联网安全 ...

阅读全文...

失眠头疼,晨跑

这段时间,估计是压力太大,晚上睡不着,或者凌晨醒了就无法入睡,要么天天做噩梦。还伴有严重的头疼。上一次有这种状况还是十多年前了。 早上翻来覆去也无法再次入睡,加上头疼欲裂,心想:算了,出去跑一圈吧,还能缓解压力。 好多年不跑步,担心心脏适应不了,于是慢跑一小段就走一会。为了控制运动量,临时下载了 keep app,初始化配置真繁琐哇 😓 今天状态还可以,沿着柳林河跑了一圈,正好两公里。严格来说是快走了两公里。。。 也许是运动量太小,没有感觉到身体不适的状况。 但是,沿着河边跑总要选择岔路口,容易分神,准备明天由柳林河,穿过小树林,沿海边跑了。 烟台这个城市比较好的一点是,人口密度小,跑步的人 ...

阅读全文...

Android Kotlin 调用 ZXing 扫描二维码

要在 Android 平板上实现一个输入激活码激活的功能,但是激活码太长,40 个字符,太长不好输入。所以想通过生成二维码,然后扫描二维码,提取激活码的方案。 我看目前 Google 官方推荐使用 ML kit 来识别二维码,但是由于使用的是华为平板,担心依赖于 Google 服务的功能无法运行,所以使用了 ZXing 这个库。 下面是一个教程: https://tutorialwing.com/implement-android-qr-code-scanner-using-zxing-library-in-kotlin/ 参考这里面的 fragment 部分。 摄像头权限 <uses- ...

阅读全文...

Windows 11 上通过国内源安装 Rust

下载 首先,从 Rust 官方网站下载 rustup-init.exe 64 位安装包。 https://www.rust-lang.org/tools/install 网络连接错误 但是直接点击 rustup-init.exe 进行安装,会报错。大意是网络无法连接。 这个跟之前在 Linux 上安装 rust 是一样的问题,被网址被国内和谐了。 info: profile set to 'default' info: default host triple is x86_64-pc-windows-msvc info: syncing channel updates for 'stable- ...

阅读全文...

rust 框架 loco 源码阅读:loco-cli 代码生成模版机制

主要是想了解一下 loco-cli 是如何通过命令行生成代码文件的。 因为我非常想基于 rust 来实现 android,或者 golang CRUD 之类的模板代码生成。特别是,对既有文件进行插入修改的策略。 逻辑代码 https://github.com/loco-rs/loco/blob/master/loco-cli/src/generate.rs 模板代码 以包含了 CRUD api 及 route 的 controller 模板为例: https://github.com/loco-rs/loco/blob/master/src/gen/templates/scaffold/api ...

阅读全文...

SuiteCRM 二次开发:合同金额与默认货币合同金额的区别

在通过 logic hook 开发 SuiteCRM 合同回款率计算功能时,遇到一个疑问: 为何合同模块有两个合同金额字段?在计算回款率时,我应该使用哪个作为合同金额计算的参考呢? total_contract_value:合同金额 total_contract_value_usdollar:合同金额(默认货币) 这两个字段在数据库的 aos_contracts 表中就能看到,在 admin 的工作室功能中也能看到。 同时,可以看到所有钱相关的字段,都是用了两个字段表示。即便加上了更多的币种,比如人民币,美元,欧元等,也是这两个字段。有 usdollar 后缀的字段,就是默认货币。 实测 ...

阅读全文...

SuiteCRM 二次开发:基于 logic hook 实现合同回款率的计算

SuiteCRM 的这套 hook 机制还是挺灵活的。就是文档有的少,大部分靠摸索。 部署时,只能在工作日晚上,或者周末没人使用时才能部署。异常痛苦。 关联记录存储时相关的 hook 这个属于 Module Hooks,即模块级的 Hook。 after_relationship_add after_relationship_delete 除了关系的添加和删除,实际上应该还有收款记录的值修改需要监听。 after_save 看起来,在合同模块添加 Hook,不如在收款记录模块添加 Hook 更方便管理。因为统计函数能够复用。 后续补充: 这里还是想简单了。关系的添加和收款金额变更这两种 ...

阅读全文...

SuiteCRM 二次开发:创建 logic hook 实现自定义逻辑

昨天看了一天 SuiteCRM logic hook 的资料,并搜索了 github 上能搜到的所有代码。 但是,感觉效果并不好,公开出来的代码太少,只能零散的学到一些小技巧。 于是,我决定直接在测试环境中通过调试来摸索一番。 修改 logic_hooks.php 例如,我想在客户新关联一个联系人时,自动触发一段 logic hook 逻辑代码。 那么,我需要进入到目录 custom/modules/Contacts 打开 logic_hooks.php, 在最后添加上自己定义的逻辑,修改完后,如下: <?php // Do not store anything in this fil ...

阅读全文...

SuiteCRM 线上代码用 git 管理

先吐个槽,我发现让销售用上 CRM 真是一件难事。昨天忍不住爆了粗口,感觉没必要。 大家都在装糊涂,或者为自己那点利益使唤别人,就由着他们吧。少说话,多干活。经验是自己的。 言归正传,我发现 SuiteCRM 中新建了模块,或者修改了内置模块之后。SuiteCRM 的代码也会随之更改,即生成了新的 model 类型。(不得不说,PHP 确实是世界上最好的语言) 所以,除了对线上数据库做好备份之外,还需要对线上的代码做个备份。 git 代码管理的必要性 我发现在变更了大量默认配置之后,线上日志中,出现了大量的报错日志。基本都是跟新增的模块对应的 SQL 查询相关。我非常害怕哪天这个系统崩溃了, ...

阅读全文...