Jupyterlab Code Formatter 的快捷键 Keyboard Shortcuts 设置
Jupyterlab Code Formatter 能够在 notebook 中对代码进行格式化,安装成功后,只需要点击代码格式化按钮。那么如何像在 pycharm 中一样使用快捷键对代码进行格式化呢,本篇记录一下。
安装格式化包
安装插件
1pip install jupyterlab_code_formatter
安装格式化支持
1pip install black isort
重启 Jupyterlab
设置快捷键打开 Jupyterlab,点击 settings -> Advanced Settings Editor -> Keyboard Shortcuts
在 User Preferences 中输入(下面是针对单个单元格进行格式化)
123456789"shortcuts": [ { "command": "jupyterlab_code_formatter:black", "keys": [ &qu ...
关于 HEXO 博客搜索功能不稳定问题
Hexo + GitHub (or VPS) + Markdown 搭配完成博文撰写与发布,记录个人每天学习到的知识以及产生的灵感,是非常方便的。但是,最近发现我的博客出现搜索功能紊乱的问题,有些博文明明存在却搜索不到。因此,经过长时间的探索发现一种解决方法。特此记录下来。
问题描述在登录到博客网站后,想要通过关键字搜索某篇博文,搜索不到,但是确信博文是存在的。经过一页一页翻找,确实找到了博文。断定搜索功能失效。
尝试,在本地重新生成和部署
1234cd bloghexo cleanhexo generate hexo deploy
再重新打开博文进行搜索,发现可以使用。但是,写完博文后再次生成部署,发现搜索功能又失效。
定位问题通过网站直接访问搜索网页: https://xujinzh.github.io/search.xml
发现在顶部有红色错误提示,第$i$行和第$j$列,字符编码错误。
在本地打开 public/search.xml 的第 $i$ 行和第 $j$ 列,看看它属于哪篇博文。
在博文中检查是否有不合法的字符出现。清除掉它们。
重新生成和部署清理完所有非法字符后 ...
旋转曲面的面积
定积分的所有应用一般总可以安装“分割, 近似求和, 去极限”三个步骤导出所求量的积分形式. 但为简便实用起见, 也常采用本篇介绍的“微元法”. 其实在求旋转体的体积时我们采用微小区间上柱体近似旋转体体积, 但是在求旋转曲面的面积时却不能用旋转体的侧面积近似旋转曲面的侧面积. 就像求弧长时需要用微小区间的弦长近似弧长, 不能用弦长直角边近似一样, 求旋转曲面的表面积不能用圆柱侧面积需要用圆台侧面积近似.
微元法在上一篇中我们知道, 若令 $\Phi(x) = \int^x_a f(t) \mathrm{d}t$, 则当 $f$ 为连续函数时, $\Phi^{\prime}(x) = f(x)$, 或 $\mathrm{d}\Phi = f(x)\mathrm{d}x$, 且$$\Phi(a) = 0, \Phi(b) = \int^b_a f(x) \mathrm{d}x.$$现在问题恰好反过来: 如果所求量 $\Phi$ 是某区间 $[a, x]$ 上的,或者说它是该区间端点 $x$ 的函数, 即 $\Phi = \Ph ...
服务器开机或IP改变自动发送通知邮件
我这里有个需求,就是服务器会因为断电等原因关机、重启,导致 IP 地址更改,无法通过 SSH 连接,也不能及时知道电脑何时开机。这里通过撰写 Python 代码,自动检测 IP、开机自动邮件通知。本篇以 Ubuntu 为例。
编写 Python 代码在目录 /home/jinzhongxu/PythonProjects 下编写 Python 模块 send_message.py
因为在 Ubuntu 系统下,当电脑重启时,目录 /tmp 下的文件会清空
在 Mail 函数中,sender 为 qq 邮箱,即发送给你通知信息的邮箱;recipients 为接收信息的邮箱,可以通过该登录该邮箱查看收到的通知信息,如 IP 更改、服务器重启等;password 为 qq 邮箱的授权码,smtp_server、port 等都需要到 QQ 邮箱进行认证获取;subject 为邮件主题;text 为邮件内容;attachment 为附件,比如图像、文件等。
简单通知信息12345678910111213141516171819202122232425262728293031323334353 ...
Transformer
Transformer 是一种 Seq2seq 模型,即 input a sequence, output a sequence. 应用包括语音识别(输入语音,输出文本)、机器翻译(输入一种语言文本,输出另一种语言文本)、语言翻译(输入一种语言的语音,输出是另一种语言的文本,如字幕)、语音合成(输入一种语言文本,输出另一种语言的语音)、聊天机器人(对话)等,这些都可以看作 QA(Question & Answering)问题,都可以使用 Seq2seq 模型解决。
Seq2seq一般的 Seq2seq 模型的一般框架
1input sequence -> Encoder -> Decoder -> output sequence
如 Transformer 就是该模型的一种。李宏毅老师的课件:Transformer
Self-attentionself-attention 中文是自注意力,它对于输入的向量输出相同数量的向量。
如上图所示,$a^i, i = 1, 2, 3, 4$ 为输入向量(如词嵌入向量),$q^i, i = 1, ...
在 Ubuntu 上删除软件和清理配置文件
在 Ubuntu(或其他 Debian 类系统)上安装卸载软件常常都是通过包管理器 apt (或 apt-get) 来实现的。通过 apt remove packagename 和 apt purge packagename 都可以卸载软件,那么它们都有什么区别呢,它们都做了什么呢?本篇进行简单介绍。
remove使用命令
1apt remove packagename
确实能够卸载软件,但是,它会保留软件的配置文件信息。当下次再次安装该软件时,将会检索到保留的配置文件,安装时将会跳过软件的配置环节。
dpkg使用命令 dpkg --list packagename 可以查看软件的信息,如
1234567$ dpkg --list pythonDesired=Unknown/Install/Remove/Purge/Hold| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend|/ Err?=(none)/Reinst-required (Status,Err: upperc ...
Python 定时任务
利用计算机能够帮助我们执行定时定点或者间隔时间段的任务,特别是对于容易遗忘、重复操作、准点执行等任务非常方便。除了在 Linux 上使用 corntab 等完成之外,在 Python 中也可以编程实现定时定点等任务的执行。本篇介绍 time, threading.Timer, schedule, apscheduler 等四个模块。
Time定时 3 秒后,依次执行相同任务 5 次
1234567891011from datetime import datetimeimport timedef showTime(count): time.sleep(count) print(datetime.now().strftime("%Y/%m/%d %H:%M:%S"))# 使用 while 可永久执行for i in range(5): showTime(3)
Threading.Timer定时 3 秒后,同时执行相同任务 5 次
123456789101112from datetime import datetimefrom threading ...
命令行运行 Python 代码时传参数
Python 代码能够以多种形式运行,如在 JupyterLab 中交互式方式、在 PyCharm 中以工程代码形式运行。有时,我们还需要在终端或CMD 以命令行的形式运行。这些运行方式都能够实现 Python 代码的运行。对于需要自定义参数的代码,在 JupyterLab 中我们可以把参数写入单元格内,在 PyCharm 中我们可以将参数写入配置文件内,那么在终端或CMD运行 Python 代码时,如何传入参数呢,下面介绍两种方法。
利用 sys 包编写名为 shellSysArgv.py 的模块
12345678910111213import sys# 测试命令行运行 python 代码时传参数def main(x, y): print(f"x={x}, y={y}") print("done!") if __name__=="__main__": x = sys.argv[1] y = sys.argv[2] main(x, y)
...
数学中集合在 Python 中的操作
在数学中,集合(Set)是一个基本概念,指具有某种特定性质的事物的总体,集合里的事物称作元素。元素 $x$ 和集合 $A$ 之间有属于($x \in A$)和不属于($x \notin A$)关系,集合有势(#$A$, $Card(A)$, $|A|$)的概念,集合有子集和包含关系($B \subset A$),两集合 $A, B$ 间有并($A\cup B$)、交($A \cap B$)、差($A - B$)、对称差($A \triangle B$)运算。在 Python 中,对于该数学概念进行了定义,下面我们进行介绍。
集合定义123456789101112A = set('abc')B = set(['c', 'd', 'e'])C = {'c', 'm', 'n'}A{'a', 'b', 'c'}B{'c', ...
利用 git 把本地代码保存到远程仓库
现如今大多数开发者都会将本地开发的代码托管到远程仓库,那如何将本地新创建的工程代码保存到远程服务器的新仓库呢?下面给出实现过程。
创建远程仓库以 github 为例。
登录账户,在界面右上交点击加号,选择 New repository,输入仓库名称,如 test,其他都不选。点击 Create repository
本地代码托管在本地,将代码首先初始化 git,然后添加远程仓库地址,上传即可。
1234567cd hello-testgit initgit remote add origin git@github.com:xujinzh/hello-test.gitgit add .git commit -m "release 1.0.0"git branch -M maingit push -u origin main
JupyterLab 中单元格同时能够输出多行的方法
在 JupyterLab 中书写 Python 代码非常的方便,交互性强,并且能够书写 Markdown 文档等。但是,使用其进行多行打印输出时,要么使用 print 函数,要么把需要输出的参数都写在最后一行,这大大降低了其交互性。下面给出一种解决方法。
解决方案 1每次在 JupyterLab 的第一行添加如下代码
123from IPython.core.interactiveshell import InteractiveShellInteractiveShell.ast_node_interactivity = "all"
解决方案2在配置文件中修改,这样不用每次在 JupyterLab 首行都添加代码
终端输入如下命令,创建 ipython_config.py 文件
1vim ~/.ipython/profile_default/ipython_config.py
在文件中写入如下内容
12c = get_config()c.InteractiveShell.ast_node_interactivity = "all"
...