Pycharm设置运行配置
Pycharm中运行python程序的时候不会调用source ~/.bashrc,所以有很多环境变量可能没有。
所以可以提前开一个终端,然后将所有环境变量保存下来
1env > ./environment.env
然后再在Pycharm运行配置中填入.env文件的路径。方便的加载环境变量。
在Pycharm中重命名项目
噩梦伊始在Pycharm中创建一个项目之后,我们可能对自己取的项目名称不满意:
比如,此时我想把名称A改为名称B。此时我们会发现,在Pycharm中有一个重命名项目的功能:
在执行完两个重构:重命名项目和重命名目录之后,可以发现如我们所愿,项目和目录名称都变了。
但这时如果运行原来的程序,会直接报错运行出错:
匆忙逃窜这是因为,目录名称改了,但是工作目录的名称没改。也就是运行配置没改。
此时就需要编辑配置:
发现有三个地方需要更改:
需要将第一个解释器改为~/PycharmProjects/B/.venv/bin.python
需要更改脚本路径为/Users/wanhuabai/PycharmProjects/B/.venv/bin.python
需要更改工作目录为/Users/wanhuabai/PycharmProjects/B
第二三项可以直接点击旁边的文件夹图标进行更改,而第一项的修改比较麻烦。
首先进入设置,改掉Python解释器的路径。在这个界面点击全部显示。
先移除解释器:
然后再添加解释器:
更改完这个之后运行配置中的解释器也会跟着改变。现在就可以 ...
体素、网格与点云
前言网上的关于体素(Voxel)、网格(Mesh)和点云(Point Cloud)的资料比较分散,而它们又是三维重建中很基础且重要的内容。故写了一篇文章总结了一下网上的相关资料。
一个三维空间中的物体在计算机中可以有不同的表达形式,图a是用点云(Point Cloud)表达,图b是用体素(Voxel)表达,图c是用网格(Mesh)表达
体素二维的图片可以用一个个像素来表示,将二维图片看成一个$n\times n$的矩阵,则矩阵中存储的每一个数就是一个像素。如果这个矩阵仅存储0和1,那就有一张黑白的图片;如果这个矩阵每个数都是8位无符号数,那么就有了一张灰度图像。
三维中的物体也可以用同样的思想来表示,即将一个三维的物体看成$n\times n\times n$的矩阵,矩阵中存储的每一个数就是一个体素。同样的,这个体素可以只有1位,也可以是8位或32位数。
网格多边形网格,也被称为“Mesh”,这里简称为网格,是计算机图形学中用于为各种不规则物体建立模型的一种数据结构。现实世界中的物体表面直观上看都是由曲面构成的,而在计算机里,曲面是由无数个小的多边形面片去组成的。Mesh既可以 ...
人工智能
人工智能的三大学派人工智能主要学派分为符号主义、连接主义、行为主义。
符号主义(Symbolicism)学派:认为人工智能源于数理逻辑。该学派将数学严格公理化,从公理出发,由逻辑推理得到引理,定理,推论。
连接主义(Connectionism)学派:认为人工智能源于仿生学,特别是对人脑模型的研究。
行为主义(Actionism)学派:来源于控制论及“感知—动作”型控制系统。该学派认为智能取决于感知和行动,人工智能可以像人类智能一样逐步进化,以及智能行为只能在现实世界中与周围环境交互作用而表现出来。
\begin{array}{|c|c|c|}
\hline \text { 学习模式 } & \text { 优势 } & \text { 不足 } \\
\hline \text { 用规则教 } & \begin{array}{c}
\text { 与人类逻辑推理相似, 解 } \\
\text { 释性强 }
\end{array} & \begin{array}{c}
\text { 难以构建完备的知识规则 } \\
\text { 库 }
\end{array} \\
\h ...
Macports常用指令
安装如果要安装名为portname的端口,则在命令行中输入以下指令:
1sudo port install portname
如果想查看安装时的详细信息,则加上-v参数。
1sudo port -v install portname
如果安装失败了想要重装,在重新运行sudo port install portname之前,需要运行以下指令:
1sudo port clean portname
卸载如果想卸载名为portname的端口,则在命令行中输入以下指令:
1sudo port uninstall portname
如果想将安装portname时同时安装的那些依赖卸载,则加上--follow-dependencies参数:
1sudo port uninstall --follow-dependents portname
更新如果要更新Macports或者安装的软件包,可以运行下面两条指令:
sudo port selfupdate:
这个命令会更新MacPorts本身,即MacPorts的基础系统。
同时,它会同步ports树,即更新可用的软件包列表。(只是软件包列表,不是软 ...
Pycharm配Jupyter NoteBook
配置:
Mac
Pycharm 2024.1
首先,需要有Pycharm Professional(学生免费)。
然后点击左下角终端:
命令行中输入pip install jupyter。
之后新建一个Jupyter Notebook文件,就可以愉快写代码了。
模块和cmake
首先需要指定cmake的最低版本为3.28(3.28才支持扫描模块)
12cmake_minimum_required(VERSION 3.28)project(untitle)
然后需要设置C++的标准为C++20(C++20才有模块),并启用了对C++模块的支持。
12set(CMAKE_CXX_STANDARD 20)set(CMAKE_CXX_SCAN_FOR_MODULES ON)
创建了一个名为simple_module的库。12add_library(simple_module)将几个.cppm文件作为C++模块添加到simple_module库中。1234567target_sources(simple_module PUBLIC FILE_SET CXX_MODULES FILES simple.cppm simpe_1.cppm simple_2.cppm)这行代码创建了一个名为untitled1的可执行文件,其主文件为main.cpp。
1add_executable(untitled1 mai ...
mac用ssh连linux服务器
前言网上的一些ssh免密连接linux服务器的资料都写的过于复杂,因此笔者写了一份简明的教程。
配置如下:
客户端(发起SSH连接的一方):Mac Sonoma14.4.1
服务器(接受SSH请求的一方):22.04.1-Ubuntu
简单SSH连接基本的ssh命令格式如下:
1ssh [用户名]@[主机地址]
例如,如果用户名是john,想要连接到主机地址为example.com的远程服务器,使用以下命令:
1ssh john@example.com
这个命令会尝试以用户john的身份建立到example.com的SSH连接。如果连接成功,将需要提供密码(如果有的话),之后就可以开始远程操作该服务器了。
可以使用远程主机的IP地址来代替域名。例如,如果远程服务器的IP地址是192.168.1.100,可以使用以下命令:
1ssh 用户名@192.168.1.100
SSH免密连接基本概念SSH免密连接需要在客户端生成公钥和私钥:
公钥:公钥将复制到服务器一端。
私钥:私钥要保存在客户端本地,也就是Mac上。
在SSH连接的时候,会根据公钥和私钥进行验证,具体的过程如下:
...
Ubuntu配置C++20环境
前言本文写于2024.5.19,我的系统为22.04.1-Ubuntu,默认带的是gcc11,它还不支持C++20。为了用上一些C++20的特性,便打算配置一下C++20的环境,期间走了不少弯路,故写一份笔记造福后人。
这里列出我的一些配置:
22.04.1-Ubuntu
CLion 2024.1
配置过程下载clang18首先,需要下载支持C++20的编译器。从cppreference上可以找到支持C++20的编译器有哪些。这里选择下载clang18,因为当下的gcc13尚不支持C++20的模块功能。
如果用cmake,cmake需要3.28以上才支持C++20模块功能
参考一篇知乎文章,在命令行下输入以下内容安装LLVM18(其带有clang18):
123wget https://apt.llvm.org/llvm.shchmod +x llvm.shsudo ./llvm.sh 18
下载完之后用下面的命令查看一下clang18是否成功安装。
1clang-18 --v
输出应该如下:
123456789Ubuntu clang version 18.1.6 (++20 ...
Python基础 - Python
参考文章:算法乐园的Python笔记
基本概念print函数基本用法最简单的用法就是直接打印一个字符串:
1print("Hello, World!")
这将在控制台上输出:
1Hello, World!
打印多个值你也可以在一次print调用中打印多个值,只需用逗号隔开它们:
1print("Hello,", "World!")
输出:
1Hello, World!
打印变量当然,print函数也可以用于打印变量的值:
123x = 10y = 20print("x =", x, ", y =", y)
输出:
1x = 10 , y = 20
换行与分隔符默认情况下,print函数会在每个值之间添加一个空格,并在最后添加一个换行符。你可以通过sep和end参数来自定义这些行为:
1print("Hello", "World", sep="-", end="!!!\n")
输出:
1Hello-World! ...