跳到主要内容

115 篇博文 含有标签「开发工具与环境」

开发工具和环境配置相关文章

查看所有标签

Pandoc 开源的文档转换工具

· 阅读需 1 分钟
素明诚
Full stack development

Pandoc 是一个开源的文档转换工具,能够高效地将不同格式的文档进行转换。它支持多种输入和输出格式~

Pandoc 的功能

Pandoc 能够处理以下格式

输入格式 Markdown、DOCX、HTML、LaTeX、RTF、ODT、XLSX(通过间接方式)、TXT 等。

输出格式 Markdown、DOCX、PDF、HTML、LaTeX、EPUB 等。

安装与使用

安装

在 Windows 上,可以从 https://pandoc.org/installing.html 下载并安装。对于 Linux 用户,可以通过包管理器安装。

转换示例

DOCX 转 Markdown 使用以下命令将 DOCX 文件转换为 Markdown

pandoc input.docx -t markdown -o output.md

TXT 转 Markdown 将 TXT 文件转换为 Markdown 也很简单

pandoc input.txt -t markdown -o output.md

XLSX 转 Markdown 虽然 Pandoc 不直接支持 XLSX 格式转换,但可以先将 XLSX 转换为 CSV,然后使用 Pandoc

首先将 XLSX 文件另存为 CSV。

然后使用 Pandoc 进行转换

pandoc output.csv -t markdown -o output.md

Poetry 安装方式的几种方式

· 阅读需 2 分钟
素明诚
Full stack development

官方推荐的安装脚本(推荐哦~)

# Linux/macOS
curl -sSL https://install.python-poetry.org | python3 -

# Windows PowerShell
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

特点

  • 安装最新版本
  • 用户级安装,不需要 sudo
  • 安装后需要添加到 PATH

安装后的配置,添加到 PATH

# Linux/macOS - 添加到 ~/.bashrc 或 ~/.zshrc
export PATH="/home/$USER/.local/bin:$PATH"

# Windows
# 系统设置 > 环境变量 中添加 %APPDATA%\Python\Scripts

定期更新 Poetry 本身`poetry self update`

通过 pip 安装

pip install --user poetry

特点

  • 简单直接
  • 可能不是最新版本
  • 安装在用户目录下

通过包管理器安装

# Ubuntu/Debian
sudo apt install python3-poetry

# macOS
brew install poetry

特点

  • 系统级安装
  • 版本可能较旧
  • 自动添加到 PATH

验证安装

# 检查是否安装成功
poetry --version

# 检查配置
poetry config --list

基本使用命令

# 初始化新项目
poetry new my-project

# 在现有项目中初始化
poetry init

# 安装依赖
poetry install

# 添加新依赖
poetry add package-name

# 移除依赖
poetry remove package-name

# 更新依赖
poetry update

环境管理

# 创建虚拟环境
poetry env use python3.10

# 查看虚拟环境信息
poetry env info

# 列出所有虚拟环境
poetry env list

常用配置

# 设置虚拟环境在项目目录下
poetry config virtualenvs.in-project true

# 显示详细输出
poetry config --list

# 更改镜像源
poetry config repositories.foo https://foo.bar/simple/

注意事项

  • 建议使用官方安装脚本,保证获取最新特性
  • 安装后记得添加到 PATH
  • 如果使用 conda,确保在正确的 conda 环境中使用 poetry
  • pyproject.toml 是核心配置文件,要仔细维护

卸载 Poetry

# 使用官方脚本卸载
curl -sSL https://install.python-poetry.org | python3 - --uninstall

# 或直接删除安装目录
rm -rf ~/.local/share/pypoetry
rm -rf ~/.poetry

切换清华源

poetry config pypi-token.pypi https://pypi.tuna.tsinghua.edu.cn/simple/

增加 poetry 的超时时间,避免短时网络中断导致的传输错误。

export PIP_DEFAULT_TIMEOUT=1000

sudo -s 如何不输入密码

· 阅读需 2 分钟
素明诚
Full stack development

在 Linux 系统中,sudo 命令用于以超级用户权限执行命令。使用 sudo -s 可以启动一个新的 shell,允许你在这个 shell 中执行命令,而不必每次都输入 sudo

有时你会发现使用 sudo -s 时不需要输入密码,这通常是由以下几个原因造成的

用户权限配置

sudo 的权限是由 /etc/sudoers 文件控制的。如果该文件中为某个用户或用户组配置了特定的规则,允许他们在执行 sudo 命令时不需要输入密码。例如:

username ALL=(ALL) NOPASSWD: ALL

这条规则意味着用户 username 可以在任何主机上以任何用户身份运行所有命令,而不需要输入密码。

会话有效期

在第一次使用 sudo 时,如果输入了密码,该会话在默认情况下会保持有效(通常是 5-15 分钟),在此期间再次使用 sudo 时就不需要输入密码。使用 sudo -s 在这个时间范围内也不会要求输入密码。

特定命令的例外

有时,系统管理员可能会配置某些特定命令允许不需要密码。例如,可能有规则允许在不要求密码的情况下使用某些管理工具。

sudo 版本和配置差异

不同版本的 sudo 和系统的配置可能会有所不同,导致某些行为不一致。

如果你想检查具体的配置,可以使用 sudo -l 命令查看当前用户的 sudo 权限设置。

配置 sudo 不输密码

编辑 sudoers 文件:使用命令 sudo visudo 来编辑 /etc/sudoers 文件。这样可以避免语法错误导致的问题。

添加配置行:在文件中添加如下行,替换 username 为你的用户名

username ALL=(ALL) NOPASSWD: ALL

这行的意思是用户 username 在所有主机上以任何用户身份执行所有命令时不需要输入密码。

保存更改:保存并退出编辑器。visudo 会自动检查语法并确保没有错误。

测试配置:打开一个新的终端,尝试运行 sudo 命令以确认不再要求输入密码。

Python 的包如何导入导出和管理

· 阅读需 2 分钟
素明诚
Full stack development

Python 包的导入

Python 的“包”可以理解为一个包含模块的文件夹,用于组织和重用代码。要在你的代码中使用现有的包或模块,需要使用 import 语句。

导入整个模块

import math  # 导入标准库中的 math 模块
print(math.sqrt(16)) # 使用模块中的函数

导入模块中的特定函数或类

from math import sqrt  # 仅导入 sqrt 函数
print(sqrt(16))

为模块或函数起别名

import numpy as np  # 为模块起别名
from math import sqrt as square_root # 为函数起别名

导入自定义模块

假设你有一个 my_module.py 文件,其中包含一些函数

# my_module.py
def greet(name):
return f"Hello, {name}!"

在同一目录下的其他脚本中,可以这样导入

import my_module
print(my_module.greet("Alice"))

Python 包的导出(创建和发布)

创建自己的模块和包

模块:一个包含 Python 代码的 .py 文件。

:一个包含 __init__.py 文件的文件夹,里面可以有多个模块。

创建一个包结构

my_package/
__init__.py
module1.py
module2.py

在 module1.py 中

def func1():
print("Function 1")

在 module2.py 中

def func2():
print("Function 2")

__init__.py 中,可以指定要导出的模块或函数

from .module1 import func1
from .module2 import func2

这样,其他人就可以导入你的包,相当于提前把包汇总到了__init__.py

from my_package import func1, func2
func1()
func2()

包的管理

使用 pip 管理包

pip 是 Python 的包管理器,用于安装、升级和卸载包。

安装包

pip install package_name

升级包

pip install --upgrade package_name

卸载包

pip uninstall package_name

虚拟环境

使用虚拟环境可以为不同的项目隔离包的依赖,避免冲突。

创建虚拟环境

python -m venv env_name

激活虚拟环境

在 Windows

env_name\Scripts\activate

在 macOS/Linux

source env_name/bin/activate

在虚拟环境中安装包

激活环境后,使用 pip install 安装的包只会影响当前环境。

退出虚拟环境

deactivate

依赖管理

生成 requirements.txt 文件

pip freeze > requirements.txt

根据 requirements.txt 安装依赖

pip install -r requirements.txt

如果有任何疑问,欢迎提出

解决使用 Tabby 时 Screen 和 Xterm 终端无法使用鼠标滚动页面

· 阅读需 1 分钟
素明诚
Full stack development

起因

使用 screen 和基于 xterm 的终端时,滚动鼠标会出现下面这些字符

^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B

解决方案

screen 的配置进行修改,具体方法是在用户的 .screenrc 文件中添加一行配置

echo "termcapinfo xterm* ti@:te@" > ~/.screenrc

"termcapinfo xterm* ti@:te@" 是针对所有以 xterm 开头的终端类型进行配置。其中,ti@te@ 分别禁用了终端的初始化和退出模式。这些模式通常在进入和退出全屏应用时调用,禁用它们可以防止 screen 改变终端的显示状态,这是导致显示错误的常见原因。

解决远程开发时 Git 的安全策略和权限问题

· 阅读需 3 分钟
素明诚
Full stack development

JetBrains IDE 报错

detected dubious ownership in repository at '/home/smc/vchatbi' To add an exception for this directory, call: git config --global --add http://safe.directory /home/smc/vchatbi

这个错误是由于 Git 的安全策略导致的,Git 认为你尝试更新的目录的所有权存在问题,因此阻止了操作。这是为了防止潜在的安全问题。在这种情况下,你可以通过以下方法来解决这个问题

将目录添加为安全目录

终端中运行以下命令,将该目录标记为安全

git config --global --add safe.directory /home/smc/vchatbi

这样做的目的是告诉 Git 该目录是可信的,你可以正常进行更改和提交。

检查用户和组的权限

确保你当前用户对 /home/smc/vchatbi 目录拥有正确的权限。如果你有权限问题,可以使用 chown 更改该目录的所有者。例如,如果你当前的用户名是 smc,可以运行

sudo chown -R smc:smc /home/smc/vchatb

解决 Git 管理的文件都出现在缓存区问题

配置 sudo chown -R smc:smc /home/smc/vchatbi之后,所有的文件都出现在了缓冲区,虽然一个文件也没改变。

这是因为

执行 sudo chown -R smc:smc /home/smc/vchatbi 之后,所有的文件在 Git 的视角中变成了“修改过的”状态,这通常是因为修改了文件的元数据(例如所有权、权限等),而这些变更也会被 Git 记录下来。尽管文件的内容本身没有发生变化,但元数据的变更使得 Git 认为文件发生了改动。以下是一些可能的解决方案来处理这个问题

忽略权限变化

你可以让 Git 忽略文件权限的变化,通过以下命令来完成:

git config core.fileMode false

这样做会让 Git 忽略文件权限的变化,而只关注文件内容的变动。

检查看看是否真的有内容变化

你可以运行以下命令查看具体有哪些文件被标记为“修改过的”

git status

然后可以用以下命令查看特定文件的更改:

git diff <file_path>

如果你发现没有任何内容上的变化,只是因为权限或者元数据的变化,可以使用以下命令撤销这些变动:

git checkout -- .

这样可以把所有变动的文件恢复为 HEAD 版本的状态。也可以解决问题

解决远程开发时 JetBrains IDE 版本已过期的问题

· 阅读需 1 分钟
素明诚
Full stack development

报错如下

14385dd420e20adebabe19445d71edbf## 解决步骤

更新 IDE 版本

根据提示选择“JetBrains Installer”,从安装选项中选择最新版本来安装。

打开你的 IDE,选择“Help” -> “Check for Updates”来获取最新版本并进行安装。

更新 IDE 版本依旧报错

779db56e220a22ce978b3e08d64de502

重新填写远程主机的地址和密码,就可以恢复远程开发了

Git 批量仓库提交者信息

· 阅读需 2 分钟
素明诚
Full stack development

使用 git filter-branch 来修改提交者信息

打开终端在你的 Git 项目的根目录中打开命令行工具。

执行git filter-branch命令确保你的命令结构正确无误。下面是命令的完整形式,注意确保在你的 shell 中正确处理引号

git filter-branch --env-filter '
GIT_AUTHOR_NAME="sumingcheng"
GIT_AUTHOR_EMAIL="cjwdyzdyplxjg@gmail.com"
GIT_COMMITTER_NAME="sumingcheng"
GIT_COMMITTER_EMAIL="cjwdyzdyplxjg@gmail.com"
' --tag-name-filter cat -- --branches --tags

这个命令的部分,--env-filter 是用来设置新的环境变量,改变作者和提交者的姓名和邮箱。

查看输出在执行过程中,git filter-branch会输出处理的信息,包括每个被重写的提交。注意观察是否有任何错误信息或警告。

确认变更

在使用了git filter-branch命令之后,你可以使用以下命令来检查历史是否已经改变

git log --pretty=format:"%H %an %ae"

这个命令会列出所有提交的哈希值、作者名称和电子邮件地址,你可以通过这个输出确认信息是否已经更新。

常见问题

命令语法错误在某些 shell 环境下,命令的引号和空格可能需要特别注意。确保命令中的空格和引号都正确无误。

缓存问题有时候,Git 的一些客户端或者 GUI 工具会缓存旧的提交信息。尝试在命令行工具中直接查看提交历史,或者重启你的 Git 客户端。

分支保护如果你在使用某些托管服务(如 GitHub),请检查是否有分支保护规则阻止了历史的改变。

推送更改

如果本地的更改是正确的,而你想要将这些更改推送到远程仓库,你需要使用强制推送来覆盖远程的提交历史

git push origin --force --all
git push origin --force --tags

这将更新所有分支和标签的远程副本。

备份

在执行这类破坏性操作之前,总是好的做法备份你的仓库。如果事情出现意外,你可以使用备份来恢复原状。你可以简单地克隆整个仓库到另一个位置作为备份。

Linux 全方面配置 Bash 提升体验

· 阅读需 3 分钟
素明诚
Full stack development

配置 Bash 提示符(PS1)

编辑你的 .bashrc 文件来自定义命令行提示符,添加颜色和信息使其更有用

nano ~/.bashrc

在 Bash 中,PS1 是环境变量之一,用来定义主命令提示符,即你在命令行界面看到的每条命令前的文本。PS1 可以定制化显示用户的名字、当前工作目录、主机名等信息,还可以添加颜色,使得命令行界面更加直观和易用。

PS1 变量的组成

PS1 的设置可以包括纯文本和一些特殊的转义字符,这些转义字符用于插入动态信息,如下所示:

  • \u:显示当前用户的用户名。
  • \h:显示机器的主机名,但不包括域名。
  • \w:显示当前工作目录的完整路径。
  • \W:只显示当前工作目录的基础名称。
  • \d:显示日期。
  • \t:显示当前时间(24 小时格式)。
  • \n:新行。
  • \e:转义字符(用于添加颜色或其他控制代码)。

颜色代码

PS1 中添加颜色,通常使用 ANSI 转义序列来定义。

  • \[\033[01;32m\]:绿色
  • \[\033[01;34m\]:蓝色
  • \[\033[00m\]:重置颜色(结束颜色代码)

安装和配置 bash-completion

安装 bash-completion 增强命令补全

sudo apt-get install bash-completion

确保 .bashrc.bash_profile 包含以下行以启用它

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi

别名和函数

.bashrc 中定义常用命令的别名和函数,这些简短的别名可以提高日常工作的效率。

alias ll='ls -lah'
alias gs='git status'
alias df='df -h'

安装 Bash 框架

安装像 Bash-it 或 Oh My Bash 这样的框架,通常你只需要选择并安装其中一个。这是因为这两个框架的功能相似。

https://github.com/Bash-it/bash-it

git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it
~/.bash_it/install.sh

https://github.com/ohmybash/oh-my-bash 推荐

注意, Oh My Bash 所要求的最低版本(Bash 3.2)

bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"

这些框架提供了丰富的主题、插件和工具,让你的 Bash 更加强大和易用。

查看支持主题

ls ~/.oh-my-bash/themes/

找到你喜欢主题后,修改~/.bashrc,找到OSH_THEME="agnoster"我设置主题为agnoster

命令历史配置

配置 Bash 历史记录,增加存储的命令数量并忽略重复项,忽略重复项这个一定要配置,总有ll狂魔。

echo 'HISTSIZE=5000' >> ~/.bashrc
echo 'HISTFILESIZE=10000' >> ~/.bashrc
echo 'HISTCONTROL=ignoreboth:erasedups' >> ~/.bashrc

安全性增强

对敏感操作进行别名设置以增加安全性警告

alias rm='rm -i'

重新加载配置

保存所有更改后,运行以下命令来重新加载 .bashrc 配置

source ~/.bashrc

Linux MongoDB 数据的导出和导入

· 阅读需 2 分钟
素明诚
Full stack development

准备工作

检查 MongoDB 安装状态

如果你已经安装了 MongoDB 服务器,那么 mongodump 和 mongorestore 工具可能已经包含在内,你可以直接使用这些工具。如果未安装完整的服务器或使用 Docker 环境,需按以下步骤安装这些工具。

安装 mongodump 和 mongorestore

导入 MongoDB 的 GPG 公钥

执行以下命令导入公钥,确保软件来源的安全性。

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

添加 MongoDB 的软件源

我的是 Ubuntu,创建相应的源列表文件。以下示例适用于 Ubuntu 20.04 (Focal Fossa)。

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

更新软件包列表

更新 apt 包索引以包含最新的 MongoDB 软件源。

sudo apt-get update

安装 MongoDB 数据库工具

安装包含 mongodump 和 mongorestore 的数据库工具包。

sudo apt-get install -y mongodb-database-tools

验证工具安装

安装完成后,检查工具的版本以确认安装成功。

mongodump --version
mongorestore --version

使用 mongodump 和 mongorestore

数据导出

使用 mongodump 从源数据库导出数据。请确保正确替换 URI 中的用户名和密码,对密码进行 URL 编码(如有特殊字符),并指定足够权限的输出目录。

mongodump --uri "mongodb://myusername:mypassword@10.20.201.215:27017/fastgpt?authSource=admin&directConnection=true" --out /home/fastgpt-dump

数据导入

使用 mongorestore 将数据导入到目标数据库。添加 --noOverwrite 选项可以避免覆盖目标实例中已存在的数据。

mongorestore --uri "mongodb://name:你的密码@192.168.33.62:27017/fastgpt?authSource=admin" --noOverwrite /home/fastgpt-dump