Enabling Wayland for Visual Studio Code

缘由 在 Debian 13 GNOME 开启 Wayland 的环境下,使用官方 DEB 包安装的 Visual Studio Code 默认不启动 Wayland 支持,在 XWayland 中运行。 经检验,此时 Code 的菜单出现显示问题。 检测 一般可以用 Xeyes 程序检查 XWayland 窗口。安装好 Xeyes 后可以在终端中运行,光标放在待检测的窗口中,如果 Xeyes 的眼睛随着光标动态移动,就说明是 XWayland 窗口。 解决方法 将 /usr/local/applications 中的对应 .desktop 文件复制到 ~/.local/share/applications 中,在其中的 Exec 配置中加入 –ozone-platform-hint=auto: [Desktop Entry] Name=Visual Studio Code Comment=Code Editing. Redefined. GenericName=Text Editor Exec=/usr/share/code/code --ozone-platform-hint=auto %F Icon=vscode Type=Application StartupNotify=false StartupWMClass=Code Categories=TextEditor;Development;IDE; MimeType=application/x-code-workspace; Actions=new-empty-window; Keywords=vscode; [Desktop Action new-empty-window] Name=New Empty Window Name[cs]=Nové prázdné okno Name[de]=Neues leeres Fenster Name[es]=Nueva ventana vacía Name[fr]=Nouvelle fenêtre vide Name[it]=Nuova finestra vuota Name[ja]=新しい空のウィンドウ Name[ko]=새 빈 창 Name[ru]=Новое пустое окно Name[zh_CN]=新建空窗口 Name[zh_TW]=開新空視窗 Exec=/usr/share/code/code --ozone-platform-hint=auto --new-window %F Icon=vscode 可能需要注销重新登录生效。

September 20, 2025

Learning Common Lisp

学习Lisp语言 我们慢慢学,一点一点完善这个材料,所以你会看到这个文章在不断增长。 什么是Lisp 比起其他很多语言,Lisp可以更快地完成工作:) 尽管这些语言都是图灵完备的,但是一些语言更快更好地可以完成任务。它是可编程的编程语言,你可以为语言添加任何想要的特性。 1956年发明,后来由于美国国防部以及AI编程的支撑发展很快。80年代出现了Lisp计算机。为了防止社区特性分裂,81年成立了组织进行标准化,84年出书,86年首批Common Lisp诞生。96年ANSI出了标准。 除了Common Lisp,还有一些其他的Lisp方言,例如Scheme。

July 27, 2025

Simple Examples of Cargo

Cargo示例 Cargo Cargo是Rust编程语言官方的项目管理器和包管理器。 例1 创建工程: $ cargo new test_project 运行工程(在工程目录中): $ cargo run 例2 使用The Rust Programming Language中第二章示例代码: use std::cmp::Ordering; use std::io; use rand::Rng; fn main() { println!("Guess the number!"); let secret_number = rand::thread_rng().gen_range(1..=100); loop { println!("Please input your guess."); let mut guess = String::new(); io::stdin() .read_line(&mut guess) .expect("Failed to read line"); let guess: u32 = match guess.trim().parse() { Ok(num) => num, Err(_) => continue, }; println!("You guessed: {guess}"); match guess....

July 27, 2025

Install Bluetooth Manager for Debian Xfce

给Debian+XFCE安装一个蓝牙管理器 Debian+XFCE安装完后,配置蓝牙键盘的时候发现没有可视化管理器。搜索了一下,发现有几款,google上这么说的: Bluedevil:KDE缺省的管理器。 BlueMan:更加通用,是一个基于GTK+的管理器,可以被应用于XFCE、MATE等。 所以就安装一个: sudo apt install blueman 装完就能用了。

July 22, 2025

Install Pyside6

安装个PySide试试 这次使用venv试下: sudo apt update sudo apt install python3-venv python3-pip mkdir myproject cd myproject python3 -m venv ./venv source venv/bin/activate (venv) ~/workdir/myproject$ pip3 install pyside6 $ python Python 3.11.2 (main, Apr 28 2025, 14:11:48) [GCC 12.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import PySide6 >>> (venv) vi app.py from PySide6.QtWidgets import QApplication, QWidget import sys app = QApplication(sys.argv) window = QWidget() window.show() app.exec() python3 app....

July 20, 2025

Nl2sql

为什么要自然语言2SQL? 数据分析 数据用途除了支撑业务系统自身业务流程,还可以作分析。分析数据一直是企业决策的重要依据。分析数据经历过这些阶段: 固定报表:那个时候是数据工程师根据业务需要,整理数据,开发出可视化报表,并生成调度任务,定期给相关业务部门或者领导提供生成好的报表结果,一般领导有需求,到分析和生成报表,周/月为单位。 自助分析:那些数据分析师或者数据科学家,采用可视化拖拽式的工具,按照自己的思路展开,进行数据的分析,这个时候可以分钟/小时级别进行数据的探索,领导们提出大的思路,数据科学家找到原因。 智能洞察:这个阶段主要是给一线业务人员或者领导快速按照自己的分析需要进行数据查询和分析的。业务人员/领导一般不熟悉技术,但是他们才是数据的最终用户,对业务很敏感。让他们能直接的使用数据,才能减少数据到最终用户的路径。这个时候技术就应该提供一个很便捷的方式,自然语言是交流的最好选择。 刚才提到,数据的思维是不断完善的,一般有个想法,进行数据分析后,如果和想法一致,则会深入的探索分析,如果不一致,也需要尽快看其他分析角度。这种迭代一定要在最终使用人脑的海里不断的深化,才能形成数据思维,支撑到他们的决策,从而将数据的价值快速体现出来。 另外,看到这些数据后,还需要能给出分析,辅助人进行原因分析和深层地洞察,验证或推演,从而支撑自己的决策。 用户难点 用户如果通过自然语言交互,受到语言本身灵活性,自身经验和平时交流习惯的影响,会有这些复杂性: 包含的术语多,专业性强,有很多的“黑话”,这些行业特有的专业知识,很难理解,需要告诉大模型如何去分析他们的真实含义。 不同的人提问的方式灵活多样,甚至不同的人导致的上下文含义也不同。例如:领导说xxx情况,可能是想了解总体分布。而具体业务人员问的xxx情况,可能向了解情况的细节,甚至他负责的领域的细节。 有些语言的表达是模糊的,主观的,例如:某业务人员说清帮我分析下高风险的事件。到底什么是高风险,怎么定义高风险的阈值,这些都需要定义,甚至二次澄清。 用户问的一连串问题,后面的和前面的是有丰富联系的,例如刚问了某街道的某种分布情况。客户又问,那另一个街道呢?这里隐含是指和上几个问题一致的上下文。 用户问了问题,得到数据后,如果不知道这些数据是怎么计算的,也会有一些疑惑。数据的可解释性对问问题的业务人员也很重要,要让他们信任数据。这个也是他们能够反复使用和依赖这些工具的基础。 技术困难 持续演进 NL2SQL现状 通过大语言模型进行的NL2SQL发展很快,近两年的几个项目是: QueryGPT(Uber 2024年),是个端到端的系统,使用LLM(GPT-4)构建了多步骤的管道,并结合检索和代理模块。整体架构类似RAG方法,给定一个问题,首先对实例查询以及架构信息的向量库进行相似性搜索,获取上下文。这些示例和架构片段作为小样本提示提供给 LLM,指导其生成 SQL。由于 Uber 的数据生态系统非常复杂(有些表有 200+ 列),因此 QueryGPT 结合了专门的Agent来处理这些复杂的场景。意图Agent 将用户的请求分类成特定的业务域(例如“手机”或“广告”),从而缩小相关的表和示例查询的范围。然后, 表Agent 会建议查询应使用的特定表,从而允许用户反馈以更正表选择中的任何错误。在生成之前, 列修剪Agent 从这些表的结构中修剪不相关的列,以减少提示词长度(在使用具有有限上下文窗口的模型时至关重要)。最后,通过LLM生成一个 SQL查询(以及对应的解释),该查询将结果返回给用户。这种分层设计结合了检索、域过滤和迭代优化,使QueryGPT能够在128K Token的GPT-4上下文中处理Uber的大型架构,并可靠地生成复杂的多表查询。QueryGPT 体现了一种 混合架构 ,其中多个对模型的调用专注于子任务(如意图分类、架构选择等),从而最终生成准确的SQL。值得注意的是,它作为生产服务运行,到 2024 年中,它为数千名 Uber 员工在制定运营查询方面节省了大量时间。 DIN-SQL (2023),利用了一些最先进的提示词策略,而不是新的模型架构。关键思想是利用 思维链分解 :DIN-SQL 不是提示 LLM 直接输出最终的 SQL,而是将生成分解为更小的子问题,并逐步将中间解决方案反馈到模型中,例如,可能首先提示 LLM 确定哪些表和列是相关的,然后制定部分子句(SELECT、WHERE),最后组合和验证完整的查询。DIN-SQL 还引入了 自我纠正循环 ,其中分析 LLM 的初始答案,如果检测到错误(例如,与 schema 或执行结果不匹配),则提示模型修改其查询。这种 分解的提示 + 反馈 方法在小样本情况下 产生了显著的准确率提升 (~+10%)。在 Spider 基准测试中创下了新纪录,测试集的执行准确率为 85.3%,超过了之前的所有微调模型。它还在较新的 BIRD 基准测试中达到了最先进的水平(55....

June 29, 2025

LLM Productivity Specification

LLM Personal Productivity Platform - Design Specification 1. Project Overview 1.1 Purpose A personal productivity platform that combines LLM chat capabilities with visual workflow design, enabling users to create, manage, and execute AI-powered automation workflows for personal tasks. 1.2 Core Features LLM Chat Interface: Direct conversation with AI models Workflow Designer: Visual drag-and-drop workflow builder Task Automation: Execute workflows automatically or on-demand Personal Dashboard: Overview of workflows, chat history, and productivity metrics 1....

June 15, 2025

Whats Fonts Used in a Web page

如何查看网页的字体 当你浏览网页,看到一个好看的字体的时候,想知道它是什么字体,自己也想用一下这个字体。怎么知道呢?Firebug或者Webkit Inspector可以,但是不简单,有一个插件可解决。这就是WhatFont插件。例如我看到这个页面的代码很好看: ![[Pasted_image_20250608231522.png]] 我是在Firefox中看到的,就要在Firefox中看什么字体,如果放在chrome中,就有可能看到的效果不一样。在Firefox中先安装WhatFont插件,然后看下什么字体: ![[Pasted_image_20250608232034.png]] 这个字体是monospace,可是monospace也是操作系统映射的,一般在font.conf中。如何知道这个monospace到底被操作系统映射成什么字体的呢? $ fc-match -v "monospace" Pattern has 40 elts (size 48) family: "Noto Sans Mono"(w) familylang: "en"(s) style: "Regular"(s) stylelang: "en"(s) fullname: "Noto Sans Mono Regular"(w) fullnamelang: "en"(s) slant: 0(i)(s) weight: 80(f)(s) width: 100(f)(s) size: 12(f)(s) pixelsize: 12.5(f)(s) foundry: "GOOG"(s) antialias: True(w) hintstyle: 1(i)(w) hinting: True(s) verticallayout: False(s) autohint: False(s) globaladvance: True(s) file: "/usr/share/fonts/truetype/noto/NotoSansMono-Regular.ttf"(s) index: 0(i)(w) 可以看到,最终渲染的字体是“Noto Sans Mono Regular”,这个才是最终显示字体。我们也可以做个实验,找个WPS,用“Noto Sans Mono Regular”字体输入一段文字,看下效果,确实一样。 ![[Pasted_image_20250608232654.png]]

June 8, 2025

Install and Using FastGPT

部署和使用FastGPT 一、部署FastGPT 1.1 安装docker 安装docker和docker compose,参见docker安装。 1.2 Docker部署FastGPT mkdir fastgpt cd fastgpt curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json # pgvector 版本(测试推荐,简单快捷) curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/deploy/docker/docker-compose-pgvector.yml # oceanbase 版本(需要将init.sql和docker-compose.yml放在同一个文件夹,方便挂载) # curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/deploy/docker/docker-compose-oceanbase/docker-compose.yml # curl -o init.sql https://raw.githubusercontent.com/labring/FastGPT/main/deploy/docker/docker-compose-oceanbase/init.sql # milvus 版本 # curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/deploy/docker/docker-compose-milvus.yml # zilliz 版本 # curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/deploy/docker/docker-compose-zilliz.yml 启动: sudo docker compose up -d sudo docker ps 访问: 通过 ip:3000 直接访问(注意开放防火墙)。登录用户名为 root,密码为docker-compose.yml环境变量里设置的 DEFAULT_ROOT_PSW。初次密码是1234。 1.3 非容器化部署 安装nodejs、mongodb、pg数据库及pgvector插件。 克隆fastGPT源码。...

June 2, 2025

Index of LLamaIndex

LLamaIndex里面的Index CVP栈里面的V就是一种Index。使用LLamaIndex的时候,会用到各类的Index。 一、索引类型 1. 列表索引(现在叫总结索引Summary) 顺序的节点,逐个进行查询。 [Node]->[Node]->[Node] 查询 查询的时候,如果无任何参数,直接返回所有的Node。 同时提供很多种查询方法,例如,嵌入式查询会返回TopN的邻居,或附加其他关键字过滤条件。 2. 向量索引 可以提供语义相似度进行检索。数据存储在一个向量存储内。 查询出TopN的相似节点。然后进行返回。 3. 树索引 从下而上构建,上级是下级的总结。每个父节点包含子节点的信息。使用时候可以从父节点开始,或者直接从叶节点开始。 树索引的查询涉及到从根节点的便利。 4. 关键词索引 关键词和节点(LlamaIndex中的Node)之间是N-to-N的连接。 其实就算是标签和节点的关系。 查询的时候就是找查询中的关联关键词。 5. 图索引 有关系结构的索引,使用的时候可以在这个基础上进行二次索引,并且在找到相关节点后,进行相关知识的关联检索。 二、构建和使用索引 documents = SimpleDirectoryReader('data').load_data() index = GPTVectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine() response=query_engine.query("What did the author do growing up?") print(response) 三、保存和加载索引 索引生成需要调用GPT等模型,保存索引可以多次使用,从加快速度,节省token,降低大模型使用成本 保存索引: index.storage_context.persist() 加载索引: from llama_index import StorageContext, load_index_from_storage storage_context = StorageContext.from_defaults(persist_dir="./storage") indexindex = load_index_from_storage(storage_context)

June 2, 2025