如何科学用眼
问题作为一个每天都长时间观看屏幕的程序员,我经常感觉到视疲劳,如何能够有效缓解呢 DeepSeek-V3 深度思考:嗯,用户是一个程序员,每天长时间盯着屏幕,感觉视疲劳。首先,我得先了解视疲劳的常见原因和缓解方法。程序员的工作性质导致他们需要长时间专注屏幕,可能眨眼次数减少,屏幕蓝光影响,坐姿不良,还有环境光线问题等等。 视疲劳的主要症状包括眼睛干涩、疼痛、视力模糊、头痛,甚至颈部或肩部酸痛。所以,缓解的方法应该从多个方面入手。首先想到的是20-20-20规则,这是常见的建议,每20分钟看20英尺外的东西20秒,这样可以放松眼部肌肉。这个用户可能已经听说过,但需要具体执行方法,比如设置提醒,或者用软件辅助。 然后是调整屏幕设置,比如亮度、对比度、色温。降低蓝光可能有效,许多设备都有夜间模式,或者可以安装滤蓝光的软件。另外,屏幕的位置也很重要,应该让屏幕略低于眼睛水平,距离大约50-70厘米,这样能减少眼睛的紧张。 环境光线方面,避免屏幕过亮或过暗,保持室内光线柔和,减少反光。用户可能需要检查自己的工作环境是否有反光,是否需要使用防眩光屏幕或调整灯光位置。 眨眼次数减少会导致干眼,所以提 ...
现代化IDE或许让我丧失了一些技能
事情的来龙去脉: 2025年的大年初一,我尝试使用cursor(基于vscode魔改的集成了AI编码工具的一个编辑器)配置一下项目的开发环境,但是配置了半个多小时以失败告终,我发现自己已经过度依赖于现代化的IDE了,越来越关注于项目的开发而忽略了构建工具的使用,自己正在缺失某些部分的能力 问题现在我有这样的一个疑问:我作为一个cpp的程序员,在开发的时候使用CLion这种比较成熟的人性化IDE,通过图形化的方式我可以很方便得配置各种环境;但是到了vscode中,我需要通过安装插件的方式来配置cmake,或许我也可以接受,只要知道插件如何使用,我如何执行cmake命令就可以;但是如果给了我一个”裸“的环境,比如一个我依赖的各种库已经安装好了,但是并没有给我一个IDE的环境,需要我在命令行下使用cmake命令进行构建、编译,我需要配置大量的参数,这一定会十分麻烦。但是作为一个程序员,确实需要掌握这种使用最基本的工具的能力,而不是过度依赖于现代化的IDE,而我好像发现我逐渐丧失了这种能力,请问我应该如何去解决我心头的疑惑呢?或许有意识地进行在例如Linux命令行终端开发练习会有些作用吗? ...
cursor与Clion的思考
2025.1.28除夕。新年快乐,祝大家,也祝自己。 前言随着最近国产化AI大模型在deepseek R1的爆红之后热度又一次喷发,我也通过各种渠道开始了解到Ai编码工具对于开发者的影响。 最近网络上除了比较各家大模型的性能,随之而来的是各种在开发环境下引入Ai编码工具的教程,其中关注点最多的之一就是”vscode + cline + deepseek 平替 cursor”。《普通人也可以看的 AI 编程指南 | Cursor 教程|Cursor 使用技巧和思路|如何免费使用 Cursor|AI 编程_哔哩哔哩_bilibili》 这个视频中也提到了据统计中目前百分之六十的程序员都或多或少了解到了cursor这款Ai编辑器,但其中能够高效使用的不足百分之二十。 说来惭愧,其实我也是趁着deepseek爆红的这波流量,加上群里大佬的介绍,才刚刚了解到的cursor编辑器。cursor编辑器开启来就是一个定制化的vscode,内置了各种大模型,嵌入到vscode中,增加了许多能直接操控vscode对于整体项目结构和文件内容进行增删改查等功能。它还具有两个chat窗口,用户可以根据需求与Ai ...
个人鼠标配置小记
DPI与鼠标移动速度DPI和Windows鼠标设置中的”鼠标移动速度“宏观上都决定了鼠标的移动速度。不过,DPI是和像素大小强相关的,指的是一定时间内鼠标移动过的像素点数,所以说,不同分辨率显示器,设置相同的DPI,给人的感觉也是不一样的。 而Windows鼠标移动速度也会影响指针的速度,不过我们可以将两个变量固定其中的一个,比如推荐将Windows鼠标移动速度限定为10,这样减少可变因素。 我有一个1080P分辨率的显示器,我习惯的DPI是2400,如果我换到了我的4k分辨率显示器下,这个速度就会变慢一些了,因为4k是指3840*2160,短边像素数是1080P的两倍(长边的也是)(另外,2k分辨率其实是1080P的1.5倍)。所以理论上,需要将DPI调整到4800才能得到一致的体验。 但是,但是,但是!如果真的调成4800,会感觉非常快!这是因为鼠标速度受DPI影响,但并不只是受DPI影响,还受很多因素影响,我们无法理解和掌握所有的因素,但是我们可以尽可能减少变量,将他们设置成一致的。 个人感官来说,4k下的3200DPI大致可以达到1080P同等的2400DPI,另外,前提是 ...
组合键映射前进后退键
因为IDE JB全家桶中经常需要使用到前进与后退操作,该操作组合键ctrl + alt + left和ctrl + alt + right。 而本人又不想将让这两个组合键占用鼠标侧键(侧键本人设置为了切换桌面),于是思考使用tab加某按键,实现单手操作前进后退,于是在之前的ChangeTab.ahk中加入了tab + q和tab + w用来表示后退和前进: 12345678#NoEnvTab & Left::HomeTab & Right::EndTab & Up::PgUpTab & Down::PgDnTab & Q::Send, {Ctrl down}{Alt down}{Left down}{Ctrl up}{Alt up}{Left up}Tab & W::Send, {Ctrl down}{Alt down}{Right down}{Ctr ...
EXCLUDE_FROM_ALL参数简介
在CMake中,EXCLUDE_FROM_ALL 是一个选项,可以用于 add_custom_target、add_custom_command、add_library、add_executable 等命令。当设置为 TRUE 时,它指示CMake生成的构建系统不要将该目标包含在默认的构建目标中。 具体来说,EXCLUDE_FROM_ALL 的作用包括: 默认不构建:当执行构建命令(如 make 或 cmake --build)时,被标记为 EXCLUDE_FROM_ALL 的目标不会被自动构建。这意味着它们不会包含在 “all” 目标中。 显式构建:尽管这些目标不会在默认构建中生成,但用户仍然可以通过显式指定目标名称来构建它们。例如,如果有一个被 EXCLUDE_FROM_ALL 标记的可执行文件 my_executable,用户可以通过 make my_executable 来单独构建它。 依赖管理:如果其他目标依赖于被 EXCLUDE_FROM_ALL 标记的目标,这些依赖目标仍然会被构建。EXCLUDE_FROM_ALL 只影响默认构建目标的包含性,不影响依赖关系。 使用 ...
模块库简介
模块库(Module Library)是一种特殊的动态库,通常用于插件系统或模块化应用程序。在CMake中,模块库可以通过在add_library函数中使用MODULE关键字来创建。 模块库的特点包括: 动态加载:模块库设计为可以在运行时动态加载和卸载,这使得应用程序可以在不重新启动的情况下扩展功能。 独立性:模块库通常独立于主应用程序,它们可以包含自己的资源、依赖和初始化代码。 接口定义:模块库通常定义了一组接口或API,主应用程序通过这些接口与模块库交互。 可选性:模块库的加载通常是可选的,应用程序可以根据需要加载或不加载特定的模块。 在不同操作系统上,模块库的文件扩展名可能不同: 在Windows上,模块库通常是DLL文件。 在Linux上,模块库通常是.so文件。 在macOS上,模块库通常是.bundle文件。 模块库的使用场景包括: 插件系统:许多应用程序(如文本编辑器、图像处理软件、游戏引擎等)支持插件,这些插件通常实现为模块库。 模块化应用程序:一些大型应用程序可能被设计为模块化的,每个模块作为一个独立的库存在。 服务扩展:服务器软件可能支持通过模块库来扩展其 ...
CMake导入动态库注意事项及建议(Windows篇)
前言:不同操作系统对于可执行程序及其依赖的动态库的管理方式不同,以下内容针对的是Windows平台下的注意事项及建议,且部分文件是按照的MSVC构建套件下生成的文件格式举例。 当通过各种方式导入动态库之后,可能会遇到一个问题:cmake执行正常,构建编译正常,生成了exe文件,但是执行时却出了问题: 有些情况下构建阶段就会报错: 我们打开cmake生成的构建文件夹,找到可执行程序.exe(可执行程序在构建(即编译)完成后就生成了),将.dll文件拷贝到.exe同目录下: 再次执行,发现问题解决了,程序正常执行: 为什么找不到.dll的报错,通过将该文件复制到可执行文件的位置,运行时这个问题就解决了? 如果你确定了使用的库在导出是没有问题,那么问题很可能就出现在运行时动态库的链接上。 动态库在编译构建时不会打包进入程序中(这是与静态库的区别,静态库在编译的链接阶段会导入到可执行文件中)。 动态库只有在两种情况下会被可执行文件链接使用:load-time dynamic linking(加载时动态链接)和run-time dynamic linking(运行时动态 ...
CMake介绍-语法篇1
基本的Cmake结构 当我们创建好一个CLion的Cpp项目时,会发现CLion自动为我们生成了一个最基础的CMakeLists.txt文件。 初始内容如下所示: 12345678cmake_minimum_required(VERSION 3.30) # CMake最低版本要求,建议不要过高或过低project(cmaketest1) # 本项目的工程名set(CMAKE_CXX_STANDARD 11) # 设置C++标准,此处意为C++11add_executable(cmakeTest1 main.cpp test.cpp test.h) 命令解析cmake_minimum_required() 图示供下方文字参考 cmake_minimum_required是cmake的一个command,其设置项目的最低的cmake版本要求。如果实际环境的cmake版本小于该命令的设置,则报错。这个命令通常是必要的,且在CMakeLists.txt文件的一开始就使用。(如果有多层目录,那么子目录 ...
CMake介绍-概念篇
CMake是什么CMake 是一个开源的跨平台自动化生成建构系统、用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个函数库。CMake 通过使用简单的配置文件 CMakeLists.txt,自动生成不同平台的构建文件(如 Makefile、Ninja 构建文件、Visual Studio 工程文件等),简化了项目的编译和构建过程。 CMake 本身不是构建工具,而是生成构建系统(的配置文件)的工具,它生成的构建系统可以使用不同的编译器和工具链。 cpp编译过程cpp程序的编译过程: windows下生成可执行程序是.exe 编译工具链cpp程序自己肯定是无法做到上面这些流程的,必须借助一些外部的工具,来执行整个编译流程,编译器与链接器等就扮演了这个角色。通常来说,一个完整的编译流程,并不是只依赖于某一个编译链接工具,而是以来一连串的工具链。 Windows:MSVC和SDK MSVC并不是一个单独的编译、连接器,而是一套工具链集合。SDK主要提供了在编译链接过程中要使用到的C、C++标准库以及 ...
windows11-24H2输入法BUG及临时解决方法
Windows11更新24H2后出现输入法BUG 现象:当微软输入法选择“为每个窗口使用不同的输入法”之后,使用alt+tab切换窗口,输入法总是为默认的,而不是窗口上一次处于的输入法状态。 比如如果默认输入法是中文,目前处于微信界面,且输入法为英文,那么使用alt+tab切换到另一个软件,再切换回来,输入法并不是英文,而是变为了默认的中文。【目前仅在微软输入法上发现了BUG,其他输入法未知】 解决方法:目前只能是使用一个权宜之计,没办法完全解决,只能等待新版本的更新,所以说大家不要轻易更新电脑系统啊!! 打开兼容性微软拼音的兼容性选项 补充,微软原版本的输入法是win10的,因此无法使用win11的外观,不过还是可以通过win11的设置使得一些功能生效或关闭,此处更改一些设定,让输入法更好用: 关闭web建议,这样输入法的第2个位置就不会有一朵云彩形状的提示了,而且现在这个web建议功能已经失效了,纯粹占用空间。 候选词的个数可以多一些 观赏表情符号面板,这样候选测窗口最后面一列就不会显示表情符号标志了,实际输入过程中,表情符号标志没啥用
库-什么是动静态库
库库文件是计算机上的一类文件,提供给使用者一些开箱即用的变量、函数或类。库文件_百度百科 库的存在,就是为了代码的复用,同时减少项目结构的冗杂。 在项目编译过程中,执行到”汇编”阶段之后,项目从汇编语言变成了只有机器可以读懂的二进制机器指令,然后再执行”链接”。库文件就是一类二进制指令组成的文件,在”链接”的阶段被添加到项目中参与编译,最后生成可执行文件。 一个完整的库包括头文件、库文件。 库文件是通过.cpp源文件生成的,将源文件中的【某些内容】构建成了二进制指令,保存在了库文件中。 【某些内容】:用户有时候可以指定哪些类或函数构建到库文件中,而不是将源文件中全部的内容都导入到库文件中。这些被选择导入库文件中的,就成为导出类、导出函数、导出变量。通过为这些类、函数、变量设置”导出符号“,将它们标定成为导出类、函数和变量。 用户在使用库的时候,通过引入库中的头文件,来调用库中的类和方法。因为库文件内容全部都是二进制指令,用户无法读懂,所以必须要借助头文件,才能被用户所使用,此时头文件就像是一本说明书,告知了用户库中包含的类和方法,以及这些东西的作用。同时,头文件中的声明,也告 ...
修改环境变量之后vscode需要重启才能使终端生效
如题,修改环境变量之后,调用vscode内部终端,无法立即得到更新,需要重启一下vscode才行(就算是不重启,只是更新vscode内部终端也是没有效果的)








