首页
书签
电子手办柜
统计
Search
1
《绿皮书》《Green Book》
709 阅读
2
如何用Siri唤醒电脑(by服务器)
528 阅读
3
欢迎使用 Typecho
413 阅读
4
斯人若彩虹,遇上方知有。
357 阅读
5
Visual Studio Code不受支持
328 阅读
杂谈
代码相关
日记
soul
清单
登录
Search
标签搜索
#python
#docker
#Ubuntu
#Excel
小冷柠's Blog
累计撰写
76
篇文章
累计收到
0
条评论
首页
栏目
杂谈
代码相关
日记
soul
清单
页面
书签
电子手办柜
统计
搜索到
15
篇与
的结果
2024-11-19
ANI-RSS通过webhook在钉钉群里面 推送信息
填入内容如下{ "markdown":{ "text":" 标题: ${title}\n 评分: ${score}\n TMDB: ${themoviedbName}\n BGM: ${bgmUrl}\n 季: ${season}\n 集: ${episode}\n 字幕组: ${subgroup}\n 进度: ${currentEpisodeNumber}/${totalEpisodeNumber}\n 首播: ${year}年${month}月${date}日\n 事件: ${text}\n  ", "title":"ani-rss" }, "msgtype":"markdown", } 就可以得到
2024年11月19日
63 阅读
0 评论
0 点赞
2024-11-11
python 中的 queue 队列
""" queue 的最核心的几个功能 """ import threading import queue def producer(q): """ 生产者 """ for i in range(10): q.put(i) def consumer(q): """ 消费者 """ while True: item = q.get() print('Consume:',item) q.task_done() q = queue.Queue() t1 = threading.Thread(target=consumer,args=(q,),daemon=True) t2 = threading.Thread(target=consumer,args=(q,),daemon=True) t1.start() t2.start() producer(q) q.join()
2024年11月11日
34 阅读
0 评论
0 点赞
2024-11-08
使用Pyenv python多环境管理工具
https://github.com/pyenv/pyenv安装#自动安装 curl https://pyenv.run | bash #安装后重启shell # 如果提示没有关联到pyenv echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc使用#安装并设定指定版本 pyenv install 3.13.0 pyenv global 3.13.0 #如果提示BUILD FAILED (Ubuntu 24.10 using python-build sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev curl \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev #升级pyenv pyenv update #查看电脑安装的所有python版本: pyenv versions #设置本地版本(当在此文件夹中调用python时,都会使用给定的版本。) pyenv local <version>
2024年11月08日
52 阅读
0 评论
0 点赞
2024-11-08
一个新装的Ubuntu 需要设置什么?
账号和权限给root 用户创建密码sudo passwd root切换rootsudo -su开启ssh 登录sudo nano /etc/ssh/sshd_config找到PermitRootLogin这一行。如果这一行被注释掉了(即前面有一个#号),先取消注释,允许root用户使用密码登录: PermitRootLogin yes只允许通过密钥认证的方式登录root: PermitRootLogin prohibit-password生成密钥对ssh-keygen -t rsa -b 4096复制公钥内容到目标主机上#id_rsa.pub echo "公钥内容" >> ~/.ssh/authorized_keys #添加文件权限 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys #然后重启ssh sudo systemctl restart ssh系统级代理设置编辑 /etc/environment文件,使用以下命令:sudo nano /etc/environment填入此项http_proxy="http://xx:xx@xx:xx" https_proxy="http://xx:xx@xx:xx" ftp_proxy="http://xx:xx@xx:xx" no_proxy="localhost,127.0.0.1,::1" #将 `proxy_server_ip`替换为你的代理服务器的IP地址, #将 `proxy_port`替换为代理服务器的端口号。保存文件并退出编辑器。重新启动系统,或者运行以下命令使代理设置立即生效:source /etc/environmentDocker 相关安装docker不要装他自己默认的docker 很垃圾 推荐使用 apt 安装sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io sudo apt install docker.io更新dockersudo apt update && sudo apt upgrade安装 docker composesudo apt-get update sudo apt-get install docker-compose-plugin下载最新的 Docker Compose 二进制文件访问 Docker Compose 的 GitHub 发布页面github获取最新版本号。以下命令示例使用了最新的版本号 v2.30.2,请根据需要替换为实际最新版本号。sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose为 Docker Compose 二进制文件添加执行权限sudo chmod +x /usr/local/bin/docker-compose创建一个符号链接(可选)为了使 docker-compose 更加方便地访问,你可以创建一个符号链接:sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose运行以下命令以验证 Docker Compose 是否已正确安装:docker-compose --version给docker 配置代理添加配置文件# 这项适用于Ubuntu sudo mkdir -p /etc/systemd/system/docker.service.d sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf在文件中添加代理配置[Service] Environment="HTTP_PROXY=http://xx:xx@xx:xx" Environment="HTTPS_PROXY=http://xx:xx@xx:xx" Environment="NO_PROXY=localhost,127.0.0.1"重新加载系统守护进程并重启 Docker# 此项适用于Ubuntu sudo systemctl daemon-reload sudo systemctl restart dockerPython相关直接使用pyenv 最简单使用Pyenv python多环境管理工具
2024年11月08日
70 阅读
0 评论
0 点赞
2024-11-05
一个比较好用的python logger脚本
在需要添加日志的python文件中#注入 from modules.logger import get_logger logger = get_logger(__name__,"sql.log") #日志写入 logger.warning("%s的%s的最大值为None,返回默认的None",\ table_name,select_columns)""" 日志模块 """ def get_logger(name, log_name="wr.log", debug_mode=True, notification=True): """ 获取日志对象 :param name: 日志名称 填入 "__name__" :param log_name: 日志文件名称 usage: from modules.logger import get_logger logger = get_logger(__name__) logger.info("这是一个info 的log信息有%s,%s等信息", param1, param2,) """ # 获取log文件路径 main__working_dir = getattr(sys, "_MEIPASS", os.getcwd()) log_dir = os.path.join(main__working_dir, "logs") if not os.path.exists(log_dir): os.makedirs(log_dir) # 创建logger logger = logging.getLogger(name) # 设置日志格式 formatter = logging.Formatter( "%(asctime)s - %(levelname)s -" "[%(filename)s:%(lineno)d] -%(funcName)s - %(message)s" ) # 创建一个滚动文件处理器,每个日志文件最大大小为5M,保存5个旧日志文件 rf_handler = RotatingFileHandler( os.path.join(log_dir, log_name), maxBytes=5 * 1024 * 1024, backupCount=5, encoding="utf-8", ) rf_handler.setFormatter(formatter) logger.addHandler(rf_handler) if debug_mode: # 如果debug模式打开,则输出到控制台 print("Debug mode is on, log will be output to console.") logger.setLevel(logging.DEBUG) console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) logger.addHandler(console_handler) elif notification: # 如果错误类型是error,则发送邮件通知管理员 notificatio_handler = NotificationHandler() notificatio_handler.setFormatter(formatter) logger.addHandler(notificatio_handler) return logger class NotificationHandler(logging.Handler): """信息通知""" def emit(self, record): if record.levelno >= logging.ERROR: error_message = self.format(record) dingrobot(error_message) def dingrobot( msg: list | str = "当你看到这个说明你没有填写msg", msgtype="text", access_token="access_token", safe_word=">-<", ) -> bool: """ 钉钉机器人推送 :param access_token: 钉钉机器人的access_token :param msg: 推送消息,可以是字符串或列表,列表第一个元素为标题,第二个元素为内容 :param msgtype: 推送消息类型,可选值为text或markdown :return: bool """ requests = importlib.import_module("requests") json = importlib.import_module("json") match msgtype: case "text": data = {"text": {"content": f"{safe_word}---{msg}"}, "msgtype": "text"} case "markdown": data = { "markdown": {"text": f"{safe_word}---{msg[1]}", "title": msg[0]}, "msgtype": "markdown", } headers = {"Content-Type": "application/json"} rebot_url = f"https://oapi.dingtalk.com/robot/send?access_token={access_token}" robot = requests.post( url=rebot_url, data=json.dumps(data), headers=headers, timeout=5 ) if robot.status_code != 200: return False return True if __name__ == "__main__": LOGGER = get_logger(__name__) LOGGER.debug("这是一个ERROR 的log信息有%s,%s等信息", "param1", "param2")
2024年11月05日
41 阅读
0 评论
1 点赞
1
2
3