Hugo使用规则

概述 本文用于梳理要如何使用 hugo ,如后续使用中需要使用哪些命令,当前对博客的一些规划,使用规则等; 整体布局 支持三个维度: 专题(series):用于将一个主题相关的内容连接起来; 分类(categories):主要用于区分文章的类别,当前划分如下几种: 坐岸观水:个人感想,日记等等; 蜻蜓点水:主要是一些轻度技术内容,如博客配置,网络配置,玩机配置等; 浮游水面:技术相关的想法,但是不涉及具体技术细节的; 深入水底:纯技术相关的内容,如技术学习教程,技术总结等; 标签(tags):标识文章所涉及的一些关键词,热点,关键技术等等,可以尽量多添加; 使用文件头部 meta 定义的方式来添加对应的维度标记,下面是一个模板: ...

2025年11月1日 · 1 分钟 · 野生莲藕

Hugo博客配置

安装 此部分省略,可直接使用 AI 提供; 配置中文 基础配置 # 配置语言 languageCode: zh-cn defaultContentLanguage: zh-cn # 所有语言都放入独立子目录 false defaultContentLanguageInSubdir: false 注意: 这里的语言是 zh-cn,但是 PaperMod 主题的多语言配置中对应的是 zh.yaml 文件 多语言翻译文件 经过基础配置,部分界面已经是中文了,但是像阅读时间这种还是英文的,这里将 PaperMod 的主题中的文件拷贝过来; cp themes/PaperMod/i18n/zh.yaml i18n/zh-cn.yaml hugo server -D 参考 https://blog.rzlnb.top/ https://www.yuweihung.com/posts/2021/papermod-lang-zh/ https://github.com/adityatelange/hugo-PaperMod?tab=readme-ov-file https://github.com/adityatelange/hugo-PaperMod/wiki/Features

2025年11月1日 · 1 分钟 · 野生莲藕

PopupWindow 顶部多行显示

这里我们以解决 PopupWindow 显示的一个问题作为目标来进行分析。 问题描述 想要的效果 在控件上方显示,可能是单行,也可能是多行。 实现方式 使用 showAsDropdown 时,可通过 yOffset 参数指定Y轴方向上的偏移量: 偏移量 = anchorView.height + popupWindow.height 对于第 2 种单行的弹出框来说,实现起来比较简单: class RawPopupWindowActivity : DemoButtonsActivity() { private var popupWindow: PopupWindow? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) addButton("单行Popup") { v -> showPopup(v, Constants.TEXT_SHORT) } addButton("多行Popup") { v -> showPopup(v, Constants.TEXT_MEDIUM) } addButton("多行Popup") { v -> showPopup(v, Constants.TEXT_LONG) } } private fun showPopup(anchorView: View, content: String) { popupWindow?.run { dismiss() } popupWindow = PopupWindow(applicationContext).apply { isOutsideTouchable = true PopupHelper(applicationContext).run { contentView = binding.root setText(content) } width = WindowManager.LayoutParams.WRAP_CONTENT height = WindowManager.LayoutParams.WRAP_CONTENT setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) // 测量高度 contentView.measure( View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.UNSPECIFIED) ) // 显示时向上移动 anchorView.height + contentView.measuredHeight showAsDropDown(anchorView, 0, -(anchorView.height + contentView.measuredHeight)) } } } 实现效果及问题 最终效果如下: ...

2022年4月16日 · 4 分钟 · 野生莲藕

Android Jacoco覆盖率统计配置

Android Jacoco 覆盖率统计Gradle配置,包括生成本地单元测试报告,仪器单元测试报告,合并两种测试的报告,合并两种测试的执行数据并在AndroidStudio的编辑器中查看每一行的覆盖率情况。 如何让测试任务生成 Jacoco 覆盖率统计数据? 这里我们仅仅从Gradle任务来说,不考虑 AndroidStudio/IDEA。 本地单元测试(Test) 对于本地单元测试来说,原先有一个 testDebugUnitTest 的测试任务,如果不做配置,该任务只会生成测试通过情况的报告。只要应用 jacoco 插件,然后运行 testDebugUnitTest 任务时,就会同时生成jacoco覆盖率统计执行数据文件。 ...

2022年3月19日 · 5 分钟 · 野生莲藕

AAR Java8 接口 NoSuchMethodError 错误解决记录

遇到一个初看时非常诡异的问题,现已解决,特记录一下解决过程。 🙋‍♀️ 是什么问题? 错误日志 APP运行过程中,忽然报了一个莫名其妙的错误: NoSuchMethodError, 报错的地方是 rxjava3 的 Disposable.disposed() E/AndroidRuntime: FATAL EXCEPTION: main Process: com.github.hanlyjiang.sample, PID: 7357 java.lang.NoSuchMethodError: No static method disposed()Lio/reactivex/rxjava3/disposables/Disposable; in class Lio/reactivex/rxjava3/disposables/Disposable; or its super classes (declaration of 'io.reactivex.rxjava3.disposables.Disposable' appears in /data/app/~~veR3ZUFYzXjZ48FDcAW0Nw==/com.github.hanlyjiang.sample-bhuZG0wVNdVKs_mfxOh5gg==/base.apk) at com.github.hanlyjiang.lib_mod.ViewTest.disposable(ViewTest.java:8) at com.github.hanlyjiang.sample.MainActivity.lambda$onCreate$0(MainActivity.java:15) at com.github.hanlyjiang.sample.MainActivity$$ExternalSyntheticLambda0.onClick(Unknown Source:0) at android.view.View.performClick(View.java:7456) at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119) at android.view.View.performClickInternal(View.java:7433) at android.view.View.access$3700(View.java:836) at android.view.View$PerformClick.run(View.java:28832) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7902) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:933) ⏰ Tip ...

2022年3月13日 · 6 分钟 · 野生莲藕

Dagger 在Android库(SDK)模块中的使用实践

本文主要描述如何使用Dagger解决实际项目中遇到的问题,这两个问题是: 如何在库(SDK)模块中使用Dagger依赖注入? MVP中的Dagger依赖注入如何实现无感注入? 本文不会介绍如何使用Dagger,只专注于描述如上两个问题的解决的前因后果及解决方案。 背景 接手开发一个SDK,大致情况如下: ...

2022年3月6日 · 14 分钟 · 野生莲藕

使用Kotlin编写gradle脚本

将gradle 脚本从 groovy 迁移到 kotlin dsl。 概述 IDE 支持 Build import Syntax highlighting 1 Semantic editor 2 IntelliJ IDEA ✓ ✓ ✓ Android Studio ✓ ✓ ✓ Eclipse IDE ✓ ✓ ✖ CLion ✓ ✓ ✖ Apache NetBeans ✓ ✓ ✖ Visual Studio Code (LSP) ✓ ✓ ✖ Visual Studio ✓ ✖ ✖ Gradle Kotlin DSL scripts 中的Kotlin语法高亮 Gradle Kotlin DSL scripts 中支持代码补全,导航到源码,文档查看,重构等等; Kotlin DSL 脚本命名 命名 Groovy DSL script 文件使用 .gradle 扩展文件名 ...

2022年2月24日 · 4 分钟 · 野生莲藕

CLion搭建Arduino开发环境

记录下使用Clion配置Arduino开发环境的过程。 Arduino 开发的环境有下面几种: Arduino IDE:目前有1.8.x 和 2.0.0 Beta版本; VSCode + PlatformIO; CLion + PlatformIO; 目前已经试过了前面两种,都感觉不是很满意。 Arduino IDE对代码跳转的支持不是很好,2.0支持,1.8不支持,2.0的选择Arduino的开发板还正常,但是选择esp32的板子一直显示红色的警告,无法跳转。 VSCode 则是实在用不习惯。(主要是一直用AndroidStudio,操作熟络了,不愿意学😫) 所以准备尝试下CLion。测试之后,感觉到了熟悉的味道😋。 ...

2021年12月2日 · 2 分钟 · 野生莲藕

鸿蒙开发基础知识

基于官方文档整理的鸿蒙开发的基础知识 Ability框架 简介 整体内容 同Android 对比关系: FeatureAbility - Activity ServiceAbility - Service DataAbility - ContentProvider CES - 广播 ANS - 通知 线程通信 InnerEvent - Message EventHandler - Handler EventRunner - Looper EventQueue - MessageQueue Ability说明 同Android 单独提供 Activity,Service,ContentProvider 的基类不一样,鸿蒙这三个组件全都是继承自 Ability,那么如何区分一个Ability到底是哪种组件呢? ...

2021年11月30日 · 11 分钟 · 野生莲藕

Arduino LCD库安装与使用

从github下载 LiquidCrystal 的库,安装到Arduino IDE,并点亮1602 LCD。 准备使用Arduino UNO点亮一个LCD1602,发现ArduinoIDE(我用的2.0Beta版本)中默认没有安装 LiquidCrystal 的库,所以需要手动进行安装。 安装 第一种安装方式是从Arduino IDE的 Library Manager中搜索🔍并安装。另外就是手动安装,这里我们采取手动安装的方式。 ...

2021年11月30日 · 1 分钟 · 野生莲藕