从《庄子-齐物论》中的一句想到的

庄子《齐物论》中的相对主义

“物无非彼,物无非是……彼出于是,是亦因彼。彼是方生之说也。”
“因是因非,因非因是……是亦彼也,彼亦是也。彼亦一是非,此亦一是非。”
庄子指出善恶、是非等概念是相互依存的对立面,强调人为划分“好”(是)的同时,必然创造出“恶”(非)的对立面。宣扬某种“好”的标准,反而会强化对立冲突。
现在常在地铁或公交上,明明旁边有空座,而坏老人强行让别人让座,甚至打骂年青人,甚至直接坐到年青女性的身上;

就象庄子中所说的这样,我们总是宣传在公交车上让座是文明礼貌,一直宣扬这个是好的。但是却突出了不让就是“恶”,却让一些老人产生了必须让座的想法。

被阉割过的名言警句后,半句才是真正的至理名言

  1. 可怜之人,必有可恨之处 完整版是: 可怜之人,必有可恨之处;可恨之人,必有可悲之苦。
  2. 富贵险中求 完整版是: 欲从心头起,贪向胆边生,富贵险中求,也在险中丢, 求时十之一,丢时十之九。
  3. 以德报怨 完整版是: 以德报怨,何以报德? 以直报怨,以德报德。
  4. 未经他人苦,莫劝他人善 完整版是: 未经他人苦,莫劝他人善,你若经我苦,未必有我善。
  5. 百善孝为先,万恶淫为首 完整版是: 百善孝为先,论心不论迹,论迹寒门无孝子。万恶淫为首,论迹不论心,论心世上无完人。
  6. 岁月不饶人 完整版是: 盛年不再来,岁月不待人,节气不饶苗,岁月不饶人。
  7. 初生牛犊不怕虎 完整版是: 初生牛犊不怕虎,长出角来反怕狼。
  8. 家和万事兴 完整版是: 父爱则母静,母静则子安,子安则家和,家和万事兴。 父懶则母苦,母苦则子惧,子惧则家衰,家衰败三代。
  9. 读万卷书,不如行万里路 完整版是: 读万卷书,不如行万里路。行万里路,不如阅人无数。 阅人无数,不如名师指路。 名师指路,不如自己去悟。

teable学习一,本地安装,并初步运行

teable 是什么

Teable是一款基于Postgres的No-Code数据库工具,提供类似电子表格的界面,支持实时协作、多视图展示和AI集成等功能‌。

今天先讲一下本机安装teable,非docker安装法, 系统为debian12

一 环境准备

  1. 安装nodejs, npm,
    2
    1
    sudo npm install -g pnpm  # teable的安装需要pnpm, 所以必须安装。
  2. 1
    2
    3
    4
    5
    6
    7
    8
    9
    git  https://github.com/teableio/teable.git
    cd teable
    pnpm install
    make switch-db-mode # 然后会在终端下有菜单,可以先择数据库类型 1 为sqlite3, 2. postgresql
    cd apps/nextjs-app
    cp .env.development .env.development.local
    cd apps/nestjs-backend
    pnpm dev

    4 然后在浏览器下输入地址: localhost:3000

github上,对电脑虚拟机的辅助项目

一 Bottles:一款可轻松实现 Linux 上运行 Windows 软件的工具。

该项目由python写成,提供了清爽易用的 GUI 界面,用户就算不懂任何编程技巧,也可通过wine,轻而易举地在 Linux 系统上,运行 Windows 的游戏和软件。
地址:github.com/bottlesdevs/Bottles

二 使用 WinApps 在 Linux 桌面上无缝运行 Windows 应用程序

WinApps for Linux 使运行 Windows 应用程序变得容易 https://github.com/Fmstrat/winapps,安装说明在https://nowsci.com/winapps/
这个东东严格来说不算是虚拟机,只是先安装qume/kvm虚拟机,然后在其中安装win10, 或win11后开通远程桌而,这个winapps的作用就是利用linux运程桌面可以运行
qemu/kvm虚拟机中的windows程序,比如excel, ppt,或文件管理器,看起来就象是linux的原生应用一样。

New blink 是一款虚拟机可用来跑静态编译的 x86-64 Linux,它适用于不同的操作系统和硬件架构。它和 qemu-x86_64 实现类似功能,除了 blink 不是一个 4 mb 的二进制而是一个约 158 kb 的小东西之外,在某些基准测试中,比如:gcc 模拟,blink 比 Qemu 更快。由于体积小,作为折中的方案,blink 在系统集成方面不如 Qemu 丰富。
GitHub 地址→github.com/jart/blink

四 winlator 模拟器

winlator模拟器一款可将手机变身成为一部真实的pc,可畅玩各种电脑端游戏,兼容性强大,并且对于手机的性能没有过高的要求

https://github.com/dockur/windows

简介:Docker 容器中的 Windows

六 轻量级虚拟机新宠——Multipass

Multipass的底层技术基于Hypervisor,支持KVM、Hyper-V和VirtualBox等虚拟化技术。这意味着无论你的操作系统是Ubuntu、macOS还是Windows,Multipass都能提供稳定而高效的服务。虽然Multipass在功能上可能不及VMware那样全面,但它在轻量化和易用性上展现出独特优势。VMware拥有强大的虚拟化功能,非常适合企业级环境和生产环境的复杂需求。但如果你的需求倾向于轻量级的开发和测试,Multipass则是一个理想的选择。

七 Docker-OSX — 在Docker中运行macOS

https://github.com/sickcodes/Docker-OSX
Docker-OSX是一个开源项目,而且支持多个版本的MacOS,比如说Catalina、Big Sur等。使用Docker部署Docker-OSX毕竟是运行一个系统,所以硬件上不能太差
Docker-OSX 借助 OSX-KVM 和 OpenCorePkg 在 Docker 容器内创建高度实用的 macOS 环境。该项目支持多个 macOS 版本,包括 Catalina、Big Sur、Monterey 和 Ventura。

还有一个类似的项目,dockur/maco

https://github.com/dockur/macos,也是在docker中运行macos,不过这个macos的版本少一些

八 WebVM https://github.com/leaningtech/webvm

浏览器中的linux虚拟机,2025年5月实际部署,以网页出现404失败。

九 xoureldeen/Vectras-VM-Android

Vectras VM是一款基于QEMU的Android虚拟机应用,支持模拟Windows、macOS、Linux和Android等操作系统。https://github.com/xoureldeen/Vectras-VM-Android

Hexo添加菜单与分类之二

想在hexo增加一个与categories或tags平行的类别,好增加菜单的索引肿么办呢?

以 hipaper 主题为例子,比如增加一个叫”fenlei”的类别与菜单,步骤如下:

1
2
3
hexo new page fenlei # 会生产 source/fenlei/index.md文件
vim source/fenlei/index.md

在source/fenlei/index.md文件头部增加如下内容
layout: “fenlei”
fenlei: “”

在 themes/hipaper/layout目录下增加 fenlei.ejs,内容如下

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
<div class="archives-wrap" style="margin: 0px;">
<div class="row">
<!-- Fenlei 云 -->
<div class="archives-tags-wrap">
<%
// 构建 fenlei 数据(仿照 site.tags 结构)
const fenleiData = {};
site.posts.forEach(post => {
if (post.fenlei) {
const fenleiList = Array.isArray(post.fenlei) ?
post.fenlei :
[post.fenlei];
fenleiList.forEach(f => {
const key = f.toString().trim();
if (key) {
if (!fenleiData[key]) {
fenleiData[key] = [];
}
fenleiData[key].push(post);
}
});
}
});
%>
<% if (Object.keys(fenleiData).length) { %>
<blockquote>
<% Object.keys(fenleiData).sort().forEach(fenlei => { %>
<a href="#<%= fenlei %>"
style="font-size: <%= Math.min(22, 14 + fenleiData[fenlei].length * 2) %>px;">
<%= fenlei %> (<%= fenleiData[fenlei].length %>)
</a>
<% }) %>
</blockquote>
<% } %>
</div>

<!-- Fenlei 文章列表 -->
<% Object.keys(fenleiData).sort().forEach(fenlei => { %>
<div class="archives-wrap">
<div class="archive-year-wrap" id="<%= fenlei %>">
<h1 class="archive-tag"><%= fenlei %></h1>
</div>
<div class="archives">
<% fenleiData[fenlei].sort((a, b) => b.date - a.date).forEach(post => { %>
<%- partial('_partial/archive-post', {post: post, index: true}) %>
<% if (post.subtitle && post.subtitle.length) { %>
<h3 class="post-subtitle">
<%- post.subtitle %>
</h3>
<% } %>
<% }) %>
</div>
</div>
<% }) %>
</div>
</div>

<style>
/* 保持与 tags 相同的样式 */
.archives-tags-wrap a {
margin-right: 15px;
line-height: 2;
display: inline-block;
}
</style>

编辑 themes/hipaper/config.yml文件,增加菜单
menu:
fenlei: fenlei

以后在撰写markdown文件里,文件头要增加 fenlei: “你的内容”

streamlit学习笔记八-----一些特别的插件

一些有用的streamlit插件

1.垂直划块库,
安装pip install streamlit-vertical-slider
网址 https://github.com/sqlinsights/streamlit-vertical-slider
2. 把一些字符串组成各种图案,美化网页用
安装pip install steamlit-wordcloud
网址 https://github.com/rezaho/streamlit-wordcloud
3.登录插件
安装pip install st-login-form
使用说明 https://st-lgn-form.streamlit.app/
4.时间轴插件
安装 pip install streamlit-timeline
说明网址 https://github.com/innerdoc/streamlit-timeline

streamlit学习笔记九-----streamlit新版支持原生多页面二

本文介绍 st.Page 与 st.navigation方法结合,这个方法复杂但灵活,首先推荐

1
2
$ pip install streamlit --upgrade #先升级到最新版 streamlit

假设主页面的文档main_page.py如下:

1
2
3
4
5
6
7
8
import streamlit as st

def page_2():
st.title("页面三测试")

pg = st.navigation([st.Page("test1.py"), st.Page("test2.py"),st.Page(page_2,title="这个页面是个函数") ],position="sidebar")
pg.run()

另两个页而的文件 test1.py与test2.py与main_page.py在同一个目录下,不用另建目录。

  1. 这里先用st.Page声明了页面
    st.Page(
    pages, # 如果是字符串,就是声明的页面目录+文件名; 也可以是本页内定仪的一个函数
    title, # 页面标题,可以不用
    icon, # 页面图标,特殊字符串,也可以不用
    url_path, # 就是页面是一个www.**.时用
    default, # True,则页面不是一个web, 可以不用
    )
  2. 再把st.Page声明的页面传送到st.navigation([st.Page(“test1.py”),st.Page(“test2.py”),st.Page(test_3函数),st.Page(“test4.py”),…..])中,以便在.run时过行。
    st.navigation(
    pages, # 是一个列表或字典
    position, # 没有声明就是=“sidebar”,表示导航在侧边栏中,如果=“hidden”,则隐藏导航栏
    expanded, # False,如果菜单多了,可以折叠; True,不折叠菜单
    )

上面的例了中,pages是一个列表,如果要对页而进行分类,则可以用字典,便如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import streamlit as st

def page_1():
st.title("页面三测试")

def page_2():
st.title("页面四测试")

pages = {
"测试页面": [
st.Page("test2.py", title="这个是测试文件2"),
st.Page("test3.py", title="这个是测试文件3"),
],
"测试函数": [
st.Page(page_2, title="测试函数2"),
st.Page(page_1, title="测试函数1"),
],
}

pg = st.navigation(pages)
pg.run()