大象笔记

知者行之始,行者知之成

万维广告的收益真是惨不忍睹

上周一时兴起申请并接入了万维广告,但是,测试了几天,效果很不理想。直接上数据吧。 虽然万维广告的展示内容,很清新,也是 IT 相关的广告,但是点击率极低,跟百度联盟简直是难兄难弟。都是 0 。。。尝试了几个位置,无论是醒目的地方,还是不醒目的地方,都没有任何效果。所以,我还是恢复了 Google 的广告位,将万维的放到了右侧侧边栏底部。毕竟 AdSense 即便不点击,也是有收入的,不愧是行业标杆。 为何点击率这么低 我的分析是: 相对 Google AdSense,万维的广告主质量还是低了很多,除了亚马逊这样的大厂广告,其他小厂广告没啥技术含量,怕是很难吸引目标人群。 广告形式虽然简洁, ...

阅读全文...

TeamsACS 在处理 BootStrap 事件时, 如何生成的密码

TeamsACS 是一个开源的 tr069 ACS 实现。其在处理 CPE 发送的 BootStrap 事件时,逻辑有点绕。 BootStrap 处理逻辑 判断 CPE 请求的 body 非空时,如果是 BootStrap 事件,生成连接用的账号/密码。注意,这里没有直接返回给 CPE,而是通过 golang channel 缓存了起来。 判断 CPE 请求的 body 为空时,不再判断事项类型,从 golang channel 中获取之前生成的账号/密码,以 soap 格式返回给了 CPE 我不太理解 tr069 协议为何要这样设计。为何要多走一步? 返回的 SOAP XML 数据格式 ...

阅读全文...

Android Studio flamingo 使用 jetpack compose 模板新建项目

今天将 Android Studio 升级到了最新版本 Android Studio Flamingo 2022.2.1 Patch 1。 但是新建项目的时候发现找不到 Jetpack Compose 的模板选项了,印象中之前版本是明确标注了哪些模板是基于 Compose 的。 后来在 Android Studio 的官方更新说明里找到了: https://developer.android.com/studio/releases?hl=zh-cn#updates-to-npw-nmw Android Studio Flamingo Canary 6 添加了用于创建项目或模块的新模板。默认情 ...

阅读全文...

通过 Makefile 及 ssh 远程执行命令,实现服务器线上服务的自动部署

最近一直写接口文档,基于 swaggo 实现的文档服务。由于要跟前端配合,所以每天都要频繁更新接口文档,非常麻烦。之前是半自动化状态: makefile 中 scp 文档程序到服务器 手动登录服务器,再 makefile 执行 systemd reload 文档服务 (文档服务基于 golang gin 所以需要重启服务) 最近在看一个开源项目的 Makefile 时,发现可以使用 ssh 远程执行命令,这样就不需要手动登录服务器来操作了,甚好。 Makefile 代码 .PHONY: doc doc: swag init --output api_docs --tags "微 ...

阅读全文...

android 系统上关联文件类型与编辑器,用 kotlin 自动实现

起因是,我想保存一个 golang 代码源文件到 Android 手机上,方便在等车的时候继续阅读代码。但是我发现 Android 系统上居然没有一个类似纯文本编辑器的 app,小米系统内置的阅读器排版混乱,且无法编辑,默认诱导去下载 WPS。所以我想实现一个简单的纯文本编辑器,方便打开各类源码文件。 以下是 ChatGPT 给出的提示,暂未测试,存档一下。 文件类型与编辑器关联 在 Kotlin 中,可以使用以下代码来关联文件类型和编辑器: val mimeType = "application/pdf" //要关联的文件类型 val packageName = &quo ...

阅读全文...

如果一件事缺乏正反馈,如何坚持下去

上周上班路上,在听播客津津乐道的时候,听到一个嘉宾说坚持写了七个月的博客就放弃了,因为没有人看,没有正反馈,很难坚持下去。 第一次听到正向反馈这个词,我觉得很有意思。而我恰好也遇到了类似的问题。 这个博客网站已经运营了快 10 年,最初只是个 VimWiki 生成的静态网站,内容都是技术笔记,方便我自己在不同电脑上同步查看。 起初没什么流量,我也对流量不报什么希望。后来因为要学习 Laravel 框架,就边学边开发了现在这套博客。 没想到自此流量开始多起来,也因为有了些流量,有了所谓的正反馈,就有动力去记录更多的笔记。 见证了日 UV 从 50 到 7000 的过程,然后跌落至日均 3000。 ...

阅读全文...

将 github 上的指定 commit 转换为 patch 文件

为啥会有这个需求 因为目前正在用的一个开源项目已经停止为何 N 多年了,很多新功能都不支持。 然后有不少三方开发者提交了 patch,但是这些 patch 并没有合并到项目中。 所以,我 fork 了一份主项目,然后需要将这些 patch 一一打补丁进去。 生成 patch 文件 将 github commit 转换成 patch Add .patch (or .diff) at the end of the commit URL: 例如,假如一个 commit 的 github 地址是: https://github.com/genieacs/genieacs-sim/pull/18/c ...

阅读全文...

TeamsACS 对于 BootStrap Event 的处理逻辑

实际上类似于 TeamsACS 对于 PERIODIC Event 的处理逻辑 的处理逻辑, 只不过多了一个 UpdateManagementAuthInfo 的处理流程。 UpdateManagementAuthInfo 的调用参数 err = cpe.UpdateManagementAuthInfo("bootstrap-session-"+common.UUID(), 1000, false) UpdateManagementAuthInfo 的定义 主要逻辑就是由 ACS 向 CPE 发送 auth 用的 username / password。 usernam ...

阅读全文...

百度联盟 / Google AdSense 的替代品万维广告

Google AdSense 价量齐跌 疫情以来 Google AdSense 暴跌,终于等到疫情结束,又国际关系恶化,AdSense 惨不忍睹,单价/填充率都骤降。同样流量的网站广告收入只能占到微信小程序广告的一半,以前可是完全相反。估计很少企业在上面投中文广告了。我看到的大部分是微软的广告。 百度联盟摆烂无底线 至于百度联盟,基本上是没有底线的状态,不管多少展示,只要不点击,收益永远是0。更无法接受的,其展示内容一如既往的低端,不能直视,完全是电线杆上的牛皮癣广告的风格,十年如一日。如果你留意过,会发现很少有正经网站会放置百度广告。 短视频平台一统江山 我自己的切身体会是,抖音类短视频平台 ...

阅读全文...

TeamsACS 对于 PERIODIC Event 的处理逻辑

Event 类型的判别 tr069/handlers.go func (s *Tr069Server) processInformEvent(c echo.Context, lastInform *cwmp.Inform) { ... cpe := app.GApp().CwmpTable().GetCwmpCpe(lastInform.Sn) cpe.CheckRegister(c.RealIP(), lastInform) cpe.UpdateStatus(lastInform) // 通知系统更新数据 cpe.NotifyDataUpdate(false) log.In ...

阅读全文...

tr069 协议中何时使用 basic auth 或者 http digest auth

由于没有在 TeamsACS 的 tr069 server 部分代码中没有找到 HTTP Digest Auth Middleware 的逻辑。 我开始怀疑我对 tr069 协议的 auth 部分理解有问题。所以查询了 tr069 协议文档。 参考: https://www.broadband-forum.org/download/TR-069_Amendment-1.pdf 第一版,不推荐 https://www.broadband-forum.org/technical/download/TR-069_Amendment-5.pdf 推荐看第五版,这部分说明跟第一版有差异。这个文档真是 ...

阅读全文...

tr069 server TeamsACS 中的 Basic Auth 与 HTTP Digest Auth

我在 TeamsACS tr069/server.go 中只找到了 BasicAuth middleware, 并没有 http digest auth (准确地说 auth_client.go 中有实现,但是 server 逻辑里没有). Basic Auth TeamsACS 中 basic auth 的实现很敷衍,并没有校验密码。有几种可能: 要么我代码没有看仔细,逻辑有遗漏。可以给 CPE 模拟器增加 BootStrap 事件等模拟通信,由后台生成账号/密码,并观察后续流程 要么 TeamsACS 作为开源版本,隐藏了部分实现 支持 TLS 的情况下,ACS 不需要实现 http d ...

阅读全文...