KVM虚拟机启动时显示网络 'default' 未激活”的错误

在使用 KVM 启动虚拟机时,如果遇到“所需操作无效:网络 ‘default’ 未激活”的错误,通常是因为 KVM 的默认虚拟网络(default)没有启动或配置不正确。以下是解决该问题的步骤:

  1. 检查默认网络状态
    首先,检查 default 网络的状态,确认它是否已启动。
    1
    2
    3
    4
    5
    6
    7
    sudo virsh net-list --all

    输出示例:

    名称 状态 自动启动 持久
    --------------------------------------------------
    default 不活跃 yes yes
    如果 default 网络的状态是“不活跃”,则需要启动它。
  2. 启动默认网络

如果 default 网络未启动,可以使用以下命令启动它:

1
sudo virsh net-start default

然后再次检查网络状态,确认它已启动:

1
2
3
4
5
6
7
sudo virsh net-list --all

输出示例:

名称 状态 自动启动 持久
--------------------------------------------------
default 活跃 yes yes
  1. 设置默认网络自动启动

为了确保 default 网络在系统重启后自动启动,可以设置其自动启动属性:

1
sudo virsh net-autostart default
  1. 检查网络配置

如果 default 网络仍然无法启动,可能需要检查其配置文件。默认网络的配置文件通常位于 /etc/libvirt/qemu/networks/default.xml。

你可以使用以下命令查看配置文件:

1
sudo virsh net-dumpxml default

确保配置文件中的设置正确无误。如果有问题,可以尝试重新定义网络:

1
2
sudo virsh net-define /etc/libvirt/qemu/networks/default.xml
sudo virsh net-start default
  1. 重启 libvirtd 服务

如果以上步骤仍然无法解决问题,可以尝试重启 libvirtd 服务:

1
sudo systemctl restart libvirtd

KVM虚拟机挂载linux下的共享目录方法一

在debian 12下安装好了KVM/qemu虚拟机,并安装好了win10后,发现win10无法访问linux主机下的文件,不象virtualbox下,设置下共享目录就行,如何办呢?

一 在 virt-manager 中设置挂载标签

  1. 首先,确保你的客户虚拟机已关闭。从 virt-manager GUI 中,选择虚拟机并单击“打开(Open)”以调出控制台设置。

  2. 单击工具栏中显示虚拟硬件详细信息的图标。然后单击左侧面板上的“内存(Memory)”。选择选项“启用共享内存(Enable shared memory)”。单击“应用(Apply)”。
    查看XML选项,确保 XML 在 XML 选项卡中显示,如下所示。
    type=”memfd”/>
    mode=”shared”/>

  3. 启用共享内存
    单击底部的“添加硬件(Add hardware)”。

    从添加新硬件窗口的左侧面板中选择“文件系统(Filesystem)”。

    然后在详细信息选项卡中选择 “驱动(Driver)” 为 “virtiofs”。单击“浏览(browse) > 浏览本地(browse local)”并从 Linux 系统中选择主机路径。

    在“目标路径(Target path)”中,输入你想要的任何名称。它只是一个文件标签,将在挂载过程中使用。目标路径中的此名称将作为 Windows 中的驱动器挂载,即资源管理器中的我的电脑。
    为 Windows 添加文件系统挂载
    单击“完成(Finish)”。
    在 virt-manager 主窗口中,右键单击 Windows 虚拟机,然后单击“运行(Run)”启动虚拟机。如果未显示虚拟机,请单击“显示图形控制台”(工具栏中的监视器图标)

  4. 设置 WinFSP – 适用于 Windows 的 FUSE, 确保 Windows 虚拟机(客户机)正在运行。
    首先,我们需要安装 WinFSP(Windows File System Proxy)– FUSE for Windows。这使你能够毫无困难地挂载任何类 UNIX 文件系统。
    从客户 Windows 计算机打开 WinFSP 的 GitHub 页面。
    下载 WinFSP .msi 安装程序。
    在 Windows 虚拟机上安装软件包。安装软件包时请确保选择 “Core”。完成安装。

  5. WinFSP 设置, 创建 VirtIO-FS 服务
    网页进入https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/, 进入stable-virtio文件夹,并下载virtio-win-guest-tools.exe。
    下载完后,点击安装,安装时选择viofs.
    安装完成后,重新启动虚拟机。

  6. 检测安装完成情况。
    重启后,在开始菜单中搜索打开“设备管理器”。
    进入系统设备并查找 “VirtIO FS 设备”。它应该被识别并且驱动程序应该由 Red Hat 签名。
    注意:(可选)如果你看到感叹号,即未检测到驱动程序,请按照 virtio-fs.gitlab.io 说明下载 ISO 文件、安装它并手动检测驱动程序。

  7. 打开开始菜单并搜索“服务”。
    向下滚动找到 “VirtIO-FS Service”。右键单击并单击“开始”启动该服务。
    或者,你可以以管理员身份从 PowerShell/命令提示符运行以下命令来启动服务。

    1
    2
    3
    sc create VirtioFsSvc binpath="C:\Program Files\Virtio-Win\VioFS\virtiofs.exe" start=auto depend="WinFsp.Launcher/VirtioFsDrv" DisplayName="Virtio FS Service"

    sc start VirtioFsSvc
  8. 启动 Virt IO 服务

    服务启动后,打开资源管理器,你应该看到你在上面第一步中创建的挂载标签,该标签应映射为 Z 驱动器。

以上摘抄自 https://www.163.com/dy/article/IA96BL2L0511CPOJ.html

毛不易作品

一 消愁

作词 : 毛不易
作曲 : 毛不易
编曲 : 赵兆
制作人 : 李健/赵兆

当你走进这欢乐场
背上所有的梦与想
各色的脸上各色的妆
没人记得你的模样

三巡酒过你在角落
固执的唱着苦涩的歌
听它在喧嚣里被淹没
你拿起酒杯对自己说

一杯敬朝阳 一杯敬月光
唤醒我的向往 温柔了寒窗
于是可以不回头地逆风飞翔
不怕心头有雨 眼底有霜

一杯敬故乡 一杯敬远方
守着我的善良 催着我成长
所以南北的路从此不再漫长
灵魂不再无处安放

躁动不安的座上客
自以为是地表演着
伪装着 舞蹈着 疲惫着
你拿起酒杯对自己说
一杯敬朝阳 一杯敬月光
唤醒我的向往 温柔了寒窗
于是可以不回头地逆风飞翔
不怕心头有雨 眼底有霜

一杯敬故乡 一杯敬远方
守着我的善良 催着我成长
所以南北的路从此不再漫长
灵魂不再无处安放

一杯敬明天 一杯敬过往
支撑我的身体 厚重了肩膀
虽然从不相信所谓山高水长
人生苦短何必念念不忘

一杯敬自由 一杯敬死亡
宽恕我的平凡 驱散了迷惘
好吧天亮之后总是潦草离场
清醒的人最荒唐
清醒的人最荒唐

二 我这样的人

作词 : 毛不易
作曲 : 毛不易
编曲 : 赵兆/宋涛
制作人 : 李健/赵兆

像我这样优秀的人
本该灿烂过一生
怎么二十多年到头来
还在人海里浮沉

像我这样聪明的人
早就告别了单纯
怎么还是用了一段情
去换一身伤痕

像我这样迷茫的人
像我这样寻找的人
像我这样碌碌无为的人
你还见过多少人

像我这样庸俗的人
从不喜欢装深沉
怎么偶尔听到老歌时
忽然也晃了神
像我这样懦弱的人
凡事都要留几分
怎么曾经也会为了谁
想过奋不顾身

像我这样迷茫的人
像我这样寻找的人
像我这样碌碌无为的人
你还见过多少人

像我这样孤单的人
像我这样傻的人
像我这样不甘平凡的人
世界上有多少人

像我这样迷茫的人
像我这样寻找的人
像我这样碌碌无为的人
你还见过多少人

像我这样孤单的人
像我这样傻的人
像我这样不甘平凡的人
世界上有多少人

像我这样莫名其妙的人
会不会有人心疼

三 牧马城市

游历在大街和楼房
心中是骏马和猎场
最了不起的脆弱迷惘
不过就这样
天外有天有无常
山外有山有他乡
跌了撞了 心还是回老地方

游离于城市的痛痒
错过了心爱的姑娘
宣告世界的那个理想
已不知去向
为所欲为是轻狂
防不胜防是悲伤
后来才把成熟当偏方

当所有想的说的要的爱的
都挤在心脏
行李箱里装不下我 想去的远方
这来的去的给的欠的 算一种褒奖
风吹草低见惆怅 抬头至少还有光

游历在大街和楼房
心中是骏马和猎场
最了不起的脆弱迷惘
不过就这样
天外有天有无常
山外有山有他乡
跌了撞了 心还是回老地方

游离于城市的痛痒
错过了心爱的姑娘
宣告世界的那个理想
已不知去向
为所欲为是轻狂
防不胜防是悲伤
后来才把成熟当偏方

当所有想的说的要的爱的
都挤在心脏
行李箱里装不下我 想去的远方
这来的去的给的欠的算一种褒奖
风吹草低见惆怅
抬头至少还有光

把烦恼痛了吞了认了算了
不对别人讲
谁还没有辜负几段 昂贵的时光
若男孩笑了哭了累了
说要去流浪
留下大人的模样
看岁月剑拔弩张
总会有个人成为你的远方

双系统下,linux如何启动时自动挂载windows分区

装了双系统,在linux下访问windows分区时,点进去,会要求输入root密码,然后挂载成功,就可以访问了。每次都这样,能不能启动自动挂载?答案是可以的。

1. 查看windows分区的磁盘信息
1
$ sudo fdisk -l   # 查看windows分区,比如得到 /dev/sda2
2. sudo blkid获取Windows分区的UUID。例如,如果d盘(/dev/sda2)的UUID是UUID=”908265F98265E466”,记录下这个UUID。
3. 使用文本编辑器打开/etc/fstab文件,例如使用命令sudo vim /etc/fstab。在文件末尾添加一行,格式如下:
1
2
3
# 挂载 windows 分区
UUID=908265F98265E466 /media/你的用户名/my-win-file ntfs defaults 0 0

其中,UUID=908265F98265E466是之前获取的UUID,/media/你的用户名/my-win-file是挂载点,ntfs是文件系统类型,defaults是挂载选项,0 0表示不进行备份和fsck检查, my-win-file名字你随便起。

4. 好了,sudo reboot, 重启电脑就行了。

github上,一些对平时工作有用的工具项目

https://github.com/pavlobu/deskreen

该项目利用 WebRTC 技术将电脑屏幕,通过 WiFi 镜像到具有 Web 浏览器的设备屏幕上,实现屏幕共享功能,使其成为电脑的辅助显示器。

https://github.com/flytkgl/PDFQFZ

该项目是用于在 PDF 文件上加盖骑缝章的工具,适用于 Windows 平台。它不仅免费且开源,使用时可以指定目录,对多个 PDF 文件进行批量处理,并支持预览、调整印章大小和位置等功能。

https://github.com/stalwartlabs/mail-server

该项目是用 Rust 编写的邮件服务器,支持 SMTP、IMAP 和 POP3 等常见邮件协议,内置强大的垃圾邮件和钓鱼网站过滤器。

https://github.com/llwslc/grammar-club 语法俱乐部

这是旋元佑老师写的一本英语语法书籍,旨在帮助读者建立扎实的语法基础,适合各个水平的英语学习者

https://github.com/gristlabs/grist-core 颇为实用的现代化开源数据表格

GristCore:用Grist,让数据自动化,Grist-core项目是Grist的心脏,是一个创新的在线数据协作平台,它突破了传统电子表格的局限,引入了先进的自动化和数据管理功能。这个基于Web的平台允许用户以一种直观且灵活的方式创建、编辑和共享电子表格,同时提供了强大的自动化规则

  1. Grist内置了对Python语言的全面支持,允许用户在电子表格中直接编写和执行Python代码。这种支持不仅限于基本语法,还包括对Python标准库的调用
  2. Grist还提供了与Excel类似的函数库,使得用户能够利用熟悉的函数进行数据处理
  3. AI助手的集成,如OpenAI gpt-3.5-turbo或Llama,进一步增强了公式生成的能力
  4. Grist文件采用便携式格式,便于在不同环境和平台间迁移。它基于广泛部署的SQLite数据库引擎,这意味着任何能够读取SQLite的软件都能够访问Grist文件中的数据。
  5. 利用grist-static工具,用户可以在静态网站上展示Grist数据,无需依赖特殊的服务器环境
  6. grist-desktop是一个独立的桌面应用程序,允许用户在本地环境中查看和编辑Grist文件。有windows,linux,macOS版本
  7. Grist提供了便捷的编辑工具和丰富的格式化选项,包括单元格的选择、列表选择、彩色标签等,以增强数据的可视化和组织。
  8. Grist为日期和时间提供了专门的编辑器,以及针对特殊数字(如货币)的格式选项
  9. 支持数据的导入导出至Google Drive、Excel格式、CSV等。
  10. Grist提供了多种模板以帮助用户快速开始使用,并具备访问控制选项,允许用户根据需求设置文档、工作区或团队网站的共享权限。

nocobase学习一,安装,并初步运行

NocoBase 是什么

NocoBase 是一个极易扩展的开源无代码开发平台。 不必投入几年时间、数百万资金研发,花几分钟时间部署 NocoBase,马上拥有一个私有、可控、极易扩展的无代码开发平台, Nocobase文档

特点

1. 数据模型驱动

多数以表单、表格或者流程驱动的无代码产品都是在使用界面上直接创建数据结构,比如 Airtable 在表格里新增一列就是新增一个字段。这样的好处是使用简单,不足是功能和灵活性受限,难以满足较复杂场景的需求。
NocoBase 采用数据结构与使用界面分离的设计思路,可以为数据表创建任意数量、任意形态的区块(数据视图),每个区块里可以定义不同的样式、文案、操作。这样既兼顾了无代码的简单操作,又具备了原生开发的灵活性。

2. 所见即所得

NocoBase 可以开发复杂和有特色的业务系统,但这并不意味着需要复杂和专业的操作。只需一次点击,就可以在使用界面上显示出配置选项,具备系统配置权限的管理员可以用所见即所得的操作方式,直接配置用户的使用界面。

3. 一切皆插件

NocoBase 采用插件化架构,所有新功能都可以通过开发和安装插件来实现,扩展功能就像在手机上安装 APP 一样简单。

本地安装试验

1. 首先必须安装了 Node.js 18+、Yarn 1.22.x 以上版本
配置并启动了所需数据库 SQLite 3.x、MySQL 8.0.17+、MariaDB 10.9+、PostgreSQL 10+ 任选其一
1
2
3
4
5
6
7
8
9
10
11
12
$ npm install --global yarn  # 在ubnntu下,有可能要用到sudo
$ yarn config set registry https://registry.npmmirror.com/
$ yarn config set sqlite3_binary_host_mirror https://npmmirror.com/mirrors/sqlite3/
# 配置SQLite,并生成目录
$ yarn create nocobase-app my-nocobase-app -d sqlite #会生成 my-nocobase-app目录
$ cd my-nocobase-app
$ yarn install
$ yarn install --production # 生产环境部署时,为了减少体积,可以只安装必要的依赖
$ yarn nocobase install --lang=zh-CN # 安装 NocoBase
$ yarn dev # 启动nocobase开发环境,或者 yarn start 启动生产环境
$ yarn build # 如果是生产环境时,代码有改变,要先执行这一步。

2. 登录 NocoBase

使用浏览器打开 http://localhost:13000/ 初始化账号和密码是 admin@nocobase.com 和 admin123


我的天,在anlinux下, 用npm安半yarn, 太难了。最终一个办法解决了。

  1. 上 github 搜索yarn后,进入yarn
  2. 下载 yarn_1.2*.**_all.deb, 下载了最新版本的安装文件,也有别的linux版本
  3. dpkg -i yarn_1.22.22_all.deb 成功

安装 yarn 过程中遇到的坑

  1. 不得不吐槽一下 npm, TMD安装神马东东都慢。 好了,有三个镜像参考一下。
    1
    2
    3
    4
    5
    $ npm config get registry  # 获取当前镜像,每次设置完,执行一下,可以看到是否设置成国
    $ npm config set registry https://registry.npm.taobao.org # 淘宝镜像
    $ npm config set registry http://mirrors.cloud.tencent.com/npm/ # 腾讯云镜像
    $ npm config set registry https://mirrors.huaweicloud.com/repository/npm/ # 华为镜像

    为啥子要说三个镜像呢,因为在安装过程中,有时用淘宝好用,安装另一个,又要换华为镜像好用。
  2. sudo npm install –global yarn时,只要加 –global,必须加sudo,否则会出错,没有权限, 这时安装出错。我公司的网络,用淘宝镜像好了,在家里,换成华为镜像才行。
  3. 执行 yarn create nocobase-app my-nocobase-app -d sqlite 又报错,显示
    “yarn create v1.22.22 [1/4] Resolving packages… error Error: certificate has expired”
    改成腾讯镜像又可以了。
  4. 执行 yarn install时, 报错
    “error https://mirrors.cloud.tencent.com/npm/@tootallnate/once/-/once-1.1.2.tgz: connect ENETUNREACH 2409:8c54:3810::16:443 - Local (:::0)
    error https://mirrors.cloud.tencent.com/npm/unique-filename/-/unique-filename-1.1.1.tgz: connect ENETUNREACH 2409:8c54:3810::16:443 - Local (:::0)
    error https://mirrors.cloud.tencent.com/npm/encoding/-/encoding-0.1.13.tgz: connect ENETUNREACH 2409:8c54:3810::16:443 - Local (:::0)
    error https://mirrors.cloud.tencent.com/npm/unique-slug/-/unique-slug-2.0.2.tgz: connect ENETUNREACH 2409:8c54:3810::16:443 - Local (:::0)
    error https://mirrors.cloud.tencent.com/npm/@gar/promisify/-/promisify-1.1.3.tgz: connect ENETUNREACH 2409:8c54:3810::16:443 - Local (:::0)
    error https://mirrors.cloud.tencent.com/npm/minipass-sized/-/minipass-sized-1.0.3.tgz: connect ENETUNREACH 2409:8c54:3810::16:443 - Local (:::0)”
    于是执行
    1
    2
    3
    $ npm cache clean --force
    $ sudo npm config set registry https://registry.npmjs.org --global

    又可以了。

github上,有趣的python库

一 great-tables: github.com/posit-dev/great-tables

用 Python 制作漂亮的表格。这个 Python 库可以用来制作实用且美观的表格。它提供了一套表格组件,通过组合不同的表格部分,如表头、表尾、行标签(stub)以及跨列标签(spanner labels)等,帮助 Python 开发者轻松制作漂亮的数据表格。

二 Fabric:一Fabric 是一款开源框架,旨在通过将人工智能无缝集成到日常任务中,来增强个人能力

Fabric 包含三个主要组件:

Mill:托管和提供对人工智能模式访问的(可选)服务器
模式:以 Markdown 文档表示的细粒度人工智能用例
拼接:启用高级功能的模式链序列

Fabric 的一个优势在于它的模式系统,该系统由 Markdown 提示组成,可以在任何人工智能应用程序中直接调用和编辑。这使用户能够自定义模式并将其集成到他们的工作流程中。
仓库描述

Fabric 是一个利用人工智能来增强人类的开源框架。它提供了一个模块化框架,可以使用可在任何地方使用的众包人工智能提示集来解决特定问题。
案例

从文本中提取见解和摘要
生成创意内容
分析数据并做出预测
转换音频
总结视频

自定义模式: Fabric 允许用户创建并存储其自己的模式(本地),以便实现个性化的人工智能应用程序。
使用建议

将模式集成到日常工作流程中
构建自定义模式来自动化任务
利用拼接创建复杂的人工智能应用程序

结论

Fabric是一款很有前途的工具,它让个人能够利用人工智能的力量来改善他们的日常生活。它的开源特性和模块化设计确保了持续开发和社区贡献,确保其持久性和实用性。

三 marker 把PDF转换为markdown文件

地址: https://github.com/VikParuchuri/marker,据说把PDF文档转换为markdown文件,只要 pip install marker -i 中科大镜像

四 Aurora 是一个用 Python 实现的静态站点生成器。 https://github.com/capjamesg/aurora

Aurora 站点默认包含几个目录:

_layouts:存储您网站的模板。
assets:存储静态文件,如图像、CSS 和 JavaScript。
posts:存储博客文章(可选)。
pages:存放要生成的静态页面。 

新的 Aurora 站点将附带一个pages/index.html文件,您可以编辑该文件以开始使用。
建立您的网站(静态)

您可以通过运行该命令将您的站点构建为静态站点aurora build。
Aurora 根据您所在的目录进行工作。

默认情况下,Aurora 站点在根目录中具有以下结构:

pages:存储用于生成您的网站的所有页面的位置。
pages/_layouts:您可以在此存储用于生成网站的布局。
pages/_data:您可以在此处存储用于生成页面的 JSON 数据文件。有关如何使用此目录从数据文件生成页面的信息,请参阅本文档后面的“渲染数据集合”部分。
pages/posts:如果您将网站用作博客,则可以在此存储所有博客文章。文章目录将使用附加逻辑进行处理,以自动生成日期存档和类别存档页面(如果适用)。 

您在 中创建的任何文件pages或 文件夹中pages(不包括_layouts和_data)都将呈现在您的网站上。例如,如果您创建一个pages/interests/coffee.html文件,这将生成一个名为 的页面_site/pages/interests/coffee/index.html。

https://github.com/pyscript/pyscript

该项目可以让开发者在 HTML 文件中直接使用 Python 编程语言,像 JavaScript 文件一样引入和执行 Python 代码,支持更小的 MicroPython、常见第三方库和操作页面元素等功能,适用于快速创建交互的数据可视化、网站原型和在线教育等 Web 应用场景。

github上,CMS,CRM,项目管理等对工作效率有关的项目

一 Docz

Docz是一个基于 MDX 的文档工具,所以不要浪费时间建立文档网站。使用 docz 快速记录您的项目。
特征:
由 Gatsby 提供支持 - 快速的开发体验和快速的构建时间。
零配置
随心所欲地定制。
基于 MDX
插件
打字稿支持

二 BackdropCMS

Backdrop是一个建立在Drupal之上的免费开源内容管理系统。免费构建高度可定制的网站。借助背景,您可以构建从个人博客网站到电子商务网站的任何内容

三 NocoDB

NokoDB是Airtable的开源替代品。将任何数据库转换为智能电子表格。

四 几个开源的CRM

1. SugarCRM

后面的SuiteCRM和Vtiger在内的另外几款CRM,都是以sugarCRM为基准开发出来的,SugarCRM可以履行公司可能需要的几乎每一项业务职能,包括客户、线索和合同管理、报表和分析、移动支持,以及一整套营销工具。
缺点:收费,只有社区版功能少但免费,但对小公司来说绝对很有用

2. Suite CRM

Suite CRM 使用自定义模块、布局和关系开发工具来处理销售、服务和营销。该 CRM 还具有实时仪表板,这意味着随着数据流入,新数据提供了对管道指标、开放项目状态和现金流等内容的更广泛见解。
缺点:帮助台支持可能很慢,因为它是基于社区的。还有一个适度的学习曲线,Pure SuiteCRM 是免费的,免费开源版本的集成和功能不像付费版本那样发达。SuiteCRM 不与 ERP 软件集成。

3. X2 CRM

这个开源版本采用了通用(非开源) X2CRM 平台的许多核心模块
缺点:该平台更适合大型企业而不是精益创业公司,并不是使用最广泛的平台,因此您可能会发现通过其小型社区获得所需的支持很棘手。

4. Vtiger CRM http://www.vtiger.com/

本人用过了,部署也方便。就是学习曲线高,复杂

5. Espo CRM

EspoCRM 为潜在客户和机会、客户和联系人跟踪提供全功能销售自动化。它还通过定义关系并将它们与多个帐户相关联来密切关注联系人。EspoCRM 的社交流允许您跟踪活动并“关注”与您的工作相关的特定记录。
缺点:试用了一下,感觉做为个人的CRM很好用。就是感觉没有时间轴的概念

6. Twenty 用 Notion 的方式管理客户关系的平台

该项目是由社区驱动的开源客户关系管理系统(CRM),可以通过可视化流程的方式管理你的客户,灵感来自 Notion。提供了添加、筛选、排序和跟踪客户等功能,支持自托管即自行通过源代码免费构建服务。

7. Airtable, 可以通过数据库来构建CRM, 但免费版功能有限
8. Fat Free CRM https://github.com/fatfreecrm

这个本人上去看了一下,感觉使用习惯还是偏西方老旧,功能性不适合国人

五 APITable https://github.com/apitable/apitable,

demo演示要一注册一大堆东东,遂作罢

六 低代码 Postgres 数据库:Teable github.com/teableio/teable

这是一个基于 Postgres 的低代码数据库应用构建平台,它提供了简单、类似电子表格的界面,可轻松创建企业级的数据分析应用,支持海量数据(数百万)、图表、数据排序/过滤/聚合/格式化、分组和数学公式等功能。作为 Airtable 的开源替代品,适用于运营/活动数据分析、客户关系管理、CMS 数据接口等场景。

七 Nocobas 又一个低代码平台 https://docs-cn.nocobase.com/welcome/getting-started/installation/create-nocobase-app

NocoBase 是一款开源、可扩展性优先的无代码/低代码平台,旨在构建强大的业务应用程序和企业解决方案。

  1. 数据模型驱动
    多数以表单、表格或者流程驱动的无代码产品都是在使用界面上直接创建数据结构,比如 Airtable 在表格里新增一列就是新增一个字段。这样的好处是使用简单,不足是功能和灵活性受限,难以满足较复杂场景的需求。

NocoBase 采用数据结构与使用界面分离的设计思路,可以为数据表创建任意数量、任意形态的区块(数据视图),每个区块里可以定义不同的样式、文案、操作。这样既兼顾了无代码的简单操作,又具备了原生开发的灵活性。
2. 所见即所得
NocoBase 可以开发复杂和有特色的业务系统,但这并不意味着需要复杂和专业的操作。只需一次点击,就可以在使用界面上显示出配置选项,具备系统配置权限的管理员可以用所见即所得的操作方式,直接配置用户的使用界面。
3. 一切皆插件
NocoBase 采用插件化架构,所有新功能都可以通过开发和安装插件来实现,扩展功能就像在手机上安装 APP 一样简单。

八 Huly https://github.com/hcengineering/platform

Huly 平台是一个强大的框架,旨在加速业务应用程序(例如 CRM 系统)的开发。此存储库包含多个应用程序,例如聊天、项目管理、CRM、HRM 和 ATS。各种团队都在该平台上构建产品,包括Huly和TraceX。

一体化项目管理平台(Linear、Jira、Slack、Notion、Motion 的替代品)

九 .Teable:开箱即用的 Airtable 替代品

引言
Teable 是一款基于 Postgres 构建的无代码数据库,旨在为非技术用户提供直观且强大的数据管理解决方案。它融合了电子表格的易用性和数据库的强大功能。

项目作用
Teable 提供了一个简洁易懂的电子表格界面,支持:
单元格编辑和公式支持
数据排序、筛选和聚合函数
数据格式化、分组和冻结列
导入/导出功能
行样式和条件格式
试用teable

  1. 安装 rust语方 环境,https://www.rust-lang.org/tools/install
  2. clone teable,并编译
    1
    2
    3
    4
    5
    $ git clone https://github.com/teableio/teable.git
    $ cd teable
    $ cargo build --release
    $ cargo run

  3. 集成到你的项目: 在你的项目配置文件 Cargo.toml 中添加 Teable 的依赖,然后你就可以在你的代码中尽情使用 Teable 提供的各种强大功能了。
    1
    2
    3
    [dependencies]
    teable = { path = "../teable" }

《安和桥》-歌词

安和桥—–词曲宋冬野

让我再看你一遍
从南到北
像是被五环路,蒙住的-双眼
请你再讲一遍
关于那天

抱着盒子的姑娘
和擦汗的男人

我知道 那些夏天
就像青春一样回不来

代替梦想的也只能是勉为其难

我知道 吹过的牛逼
也会随青春一笑了之
让我困在城市里
纪念你

让我再尝一口
秋天的酒
一直往南方开
不会太久

让我再听一遍
最美的那一句

你回家了
我在等你呢

我知道 那些夏天
就像青春一样回不来

代替梦想的也只能是勉为其难

我知道 吹过的牛逼
也会随青春一笑了之
让我困在城市里 纪念你

我知道 那些夏天
就像你一样回不来

我也不会再对谁满怀期待

我知道 这个世界
每天都有太多遗憾
所以你好 再见

hugo 中的文章添加时间线2. hugo-shortcode-timeline的修改

上次说到采用hugo-shortcode-timeline在文章里加时间线,初衷是我为了写工作报告,可是发现在写作时,还要写from time,to time等,可是我只想显示当时的时间,如何办呢?于是想办法改了一下。步骤如下:

一. 在github上下载 hugo-shortcode-timeline
二. 把 hugo-shortcode-timeline目录 copy到当前hugo blog的themes目录下
三. 修改config.toml,把原来的指定主题语句改为

theme = [“你原来的主题名”,”hugo-shortcode-timeline”]

在 themes/hugo-shorcode-timeline/layouts/shortcodes/目录,把even.html 另存为report.html并修改如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
{{$duration := ""}}

{{$to := now }}
{{ if ne (.Get "date") ""}}
{{$to = time (.Get "date") }}
{{end}}

{{$enabledTime := ne (.Get "date") ""}}

{{if $enabledTime }}
{{$from := time (.Get "date") }}
{{$tmonths:= mul ($to.Sub $from).Hours 0.00136986301 }}
{{$months := mod $tmonths 12 }}
{{$years := math.Floor (div $tmonths 12)}}
{{$yearStr := "years"}}
{{if lt $years 2 }}{{$yearStr = "year"}}{{end}}
{{$monthStr := "months"}}
{{if lt $months 2 }}{{$monthStr = "month"}}{{end}}

{{$duration = ""}}
{{if gt $years 0 }}{{$duration = printf "%s %.0f %s" $duration $years $yearStr}}{{end}}
{{if gt $months 0 }}{{$duration = printf "%s %d %s" $duration $months $monthStr}}{{end}}
{{end}}

<div class="container">
<div class="content collapsible {{ if .Get "collapsed" }}collapsed{{ end }}">
<div class="title">{{$to.Year}}-{{$to.Month}}-{{$to.Day}}</div>
{{if $enabledTime }}
<div class="duration" {{ if eq .Ordinal 0 }} id="duration" {{ end }}>
{{ if ne .Ordinal 0 }} {{$duration}} {{ end }}
</div>
{{ end }}
<div class="body">{{.Inner}}</div>
</div>

<div class="date">
{{ if ne (.Get "date") ""}}
{{$to.Year}}<br>{{$to.Month}}-{{$to.Day}}
{{ else }}
Present
{{ end }}
</div>

</div>

{{ if and (eq (.Ordinal) 0) $enabledTime }}
<script>
function non0plural(number, name) {
if (number == 0) {
return "";
}
return number + " " + name + (number > 1 ? "s" : "");
}

function monthDiff(d1, d2) {
let months;
months = (d2.getFullYear() - d1.getFullYear()) * 12;
months -= d1.getMonth();
months += d2.getMonth();
return months <= 0 ? 0 : months;
}

el = document.querySelector("#duration");
function refresh() {
const start = new Date({{.Get "from"}});
const now = new Date();

const total_months = monthDiff(start, now);
const months = total_months % 12;
const years = Math.floor((total_months) / 12);
el.innerHTML = non0plural(years, "year") + " " + non0plural(months, "month");
}
window.setInterval(refresh, 1*1000);
</script>
{{ end }}

那么在markdown文章中写报告则为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{{< timeline >}}

{{% report date="2023-06-20" %}}
蓝总有意初步试定一吨,但临时变卦想用更高倔强的钢,暂时我们还做不到。我们讨论一下是否调用二治的钢材生新送样?还要讨论二治给我们的价格
{{% /report %}}

{{% report date="2023-05-29" %}}
蓝总自己的结构己完成,参数可以,但什么时候生产还得看情况
{{% /report %}}

{{% report date="2023-05-17" %}}
客户测试完成,表示与我们的报告性能一致,这0.5米长样品做为质检留底
{{% /report %}}

{{% report date="2023-05-12" %}}
检测报告送达,并附上0.5米长的样品供客户测试
{{% /report %}}

{{% report date="2023-05-11" %}}
客户蓝总需要一个三百吨的螺纹钢才,但是需要我们提供检测报告

{{% /report %}}

{{< /timeline >}}