主页

高等代数知识点

单位向量

单位向量是指模等于1的向量。由于是非零向量,单位向量具有确定的方向。

一个非零向量除以它的模,可得所需单位向量。设原来的向量是 $\overrightarrow{AB}$,则与它方向相同的单位向量 $e=\frac{\overrightarrow{AB}}{\vert AB \vert}$;

单位向量的性质:

  1. 单位向量的长度为1个单位,方向不受限制。
  2. 起点为原点的单位向量,终点分布在单位圆上,常可设为 $\overrightarrow{a}=(\cos{\alpha}, \cos{\beta})$,反之亦然。
  3. 如果 $AB$ 为非零向量,那么与 $AB$ 共线的单位向量为 $\pm\frac{\overrightarrow{AB}}{\vert AB \vert}$。

阅读更多

乔布斯2005斯坦福大学演讲

乔布斯演讲原文链接

I am honored to be with you today for your commencementnouskəˈmensmənt, 学位授予典礼;毕业典礼】from one of the finest universities in the world. Truth be told, I never graduated from college, and this is the closest I’ve ever gotten to a college graduation. Today I want to tell you three stories from my life. That’s it. No big deal. Just three stories.

我今天很荣幸能和你们一起参加毕业典礼,斯坦福大学是世界上最好的大学之一。我从来没有从大学中毕业。说实话,今天也许是在我的生命中离大学毕业最近的一天了。今天我想向你们讲述我生活中的三个故事。不是什么大不了的事情,只是三个故事而已。

阅读更多

Linux 系统中文件的 atime, mtime 和 ctime

先上结论:

  • Access time (atime): 最近一次读取文件内容的时间。
  • Modifty time, (mtime): 最近一次修改文件内容的时间。
  • Change time (ctime): 最近一次更改文件元数据的时间
  • 修改文件内容会同时修改 mtimectime,具体原因见下面对 struct stat 的分析。

阅读更多

VSCode Tips

Regex Engine in VSCode

部分内容参考自 Regex in VSCode

VSCode 包含两种搜索方式:

搜索方式 快捷键 正则引擎 作用
Search Ctrl-Shift-F ripgrep 活动侧边栏上的放大镜图标,用于搜索当前工作区中的所有文件夹
Find/Replace Ctrl-F JavaScript 仅适用于当前文档的简单查找/替换工具(可通过单击 编辑->查找 访问)

VSCode 中的工作区搜索由开源的 ripgrep 面向行的搜索工具提供支持。 ripgrep 引擎在底层使用 Rust 正则表达式。如果 ripgrep 引擎无法解析正则表达式,VSCode 会回退到 PCRE2 引擎来处理结果。

比如,ripgrep 不支持反向引用 (backreferences) 和环视 (lookaround),如果搜索中用到这两个功能,VSCode 将自动调用 PCRE2 引擎。

相比之下,编辑器 Find 使用 JavaScript(特别是 ECMAScript 5)正则表达式引擎,该引擎支持反向引用和环视。

阅读更多

理解 sudoers

sudoers 是默认的 sudo 策略插件,它确定用户的 sudo 权限,其策略在 /etc/sudoers 文件或 LDAP 中定义。

sudoers 语法

sudoers options

sudo 的行为可以通过 Default_Entry 行进行修改

  • 输入密码后 30 分钟内不需要再次输入密码
Defaults            timestamp_timeout=30
  • 不再需要用户 peter 输入密码
Defaults:peter      !authenticate

User specifications

User_Sepc

阅读更多

Ansible 笔记

Ansible: What’s the difference between task, role, play and playbook?

Playbookplay 的列表。顶层的 playbook YAML 里只做两件事:

  • 定义 play
  • 使用关键字 import_playbook 从另一个 playbook YAML 文件导入 plays。

playbook 只能被 ansible-playbook 调用。

Task,用手册的话说,就是用来调用一个 ansible 模块。但是,task 不知道它应该运行在哪些主机上。

Play 用来将任务绑定到要运行的服务器上。这里的重点是强制关键字 hosts,它告诉哪些主机受到影响以及如何受到影响。

阅读更多

jq 命令

jq 程序是一个 过滤器:接受输入并产生输出。它有很多内置过滤器用于提取对象的特定字段,将数字转换为字符串或各种其他标准任务。

过滤器可以通过多种方式组合,可以通过管道将一个过滤器的输出传递到另一个过滤器,或者将过滤器的输出收集到一个数组中。

一些过滤器会产生多个结果,例如过滤器会生成其输入数组的所有元素,然后对数组的每个元素运行第二个过滤器。通常,在其他语言中使用循环和迭代完成的事情在 jq 中只是通过管道将过滤器组合在一起来完成。

阅读更多

Openshift

以下命令,如无特别说明,均可以使用 kubectl 替换 oc

kubectl 命令自动补全

参考 kubectl auto completion 设置别名和自动补全。

echo 'source <(kubectl completion zsh)' >>~/.zshrc

echo 'alias k=kubectl' >>~/.zshrc
echo 'complete -o default -F __start_kubectl k' >>~/.zshrc

如果使用 oh-my-zsh,可以直接使用 kubectloc 自动补全插件

阅读更多

Maven 生命周期

生命周期 (Build Lifecycle)

Maven 的核心概念基于 Build Lifecycle。Maven 有三个内建的 build lifecycle

Build Lifecycle Description
default handles project deployment
clean handles project cleaning
site handles the creation of project’s web site

生命周期中的阶段 (Build Phase)

  • Build lifecycle 由多个阶段组成
  • 阶段的执行是有序的,执行某个阶段,会先执行其前面的所有阶段

阅读更多

Jenkins

容器中运行

Master

如果使用 nginx 作为反向代理,并设置 context path 为 /jenkins,需要向容器传入环境变量 --env JENKINS_OPTS="--prefix=/jenkins"

在主机上创建 /var/jenkins_home 目录并修改权限,使得 container 中的 jenkins user 可以访问

mkdir /var/jenkins_home

chown -R 1000:1000 /var/jenkins_home
  • 无证书访问,启动端口为 8080
docker run -it --name jenkins-master -v /var/jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 --restart=on-failure -e JENKINS_OPTS="--prefix=/jenkins" jenkins/jenkins:lts-jdk11

阅读更多

Windows Subsystem Linux (WSL)

安装 Windows 默认发行版

列出可用的发行版

wsl --list --online

# short
wsl -l -o

安装可选的 Linux 发行版

wsl --install -d <distro>

常用操作

关闭 WSL 中的 Linux

wsl --terminate <distro>

# short
wsl -t <distro>

阅读更多

Github API

在 Organization 间迁移 Repositories

Github 提供了 Transfer a repository API, 可以在个人或组织间转移仓库。

在 Github 页面个人头像上选择 Settings -> Developer settings -> Personal access tokens,添加一个新的访问token,作为访问 Github API 的密码。

下面的脚本可用于批量转移多个仓库。

阅读更多

Pandas

在 Jupyterlab 中使用 Pandas

pip install jupyterlab

如果是在 WSL2 系统中使用 Jupyterlab,需要如下配置才能默认使用 Windows 主机上的浏览器打开界面

禁用 use_redirect_file

jupyter lab --generate-config

vim ~/.jupyter/jupyter_lab_config.py
c.ServerApp.use_redirect_file = False

使用环境变量 BROWSER 指定 Windows 主机浏览器路径

export BROWSER="/mnt/c/Program Files/Mozilla Firefox/firefox.exe"

使用 localhost 作为 WSL 系统主机名

vim /etc/wsl.conf
[network]
hostname = localhost

启动 jupyterlab,指定 IP 和端口,否则可能报错

jupyter lab --ip=0.0.0.0 --port 8080

导入 Pandas

import pandas as pd
import numpy as np

print(pd.__version__)
print(np.__version__)

数据结构

pandas-data-structures

阅读更多

Wolfram 使用

安装 Wolfram Engine for Developers

Wolfram Engine for Developers 是 Wolfram Language 的后端核心,安装完成后可以使用 WolframScript 进入命令行执行代码。

安装 WolframLanguageForJupyter 插件

使用 Jupyter notebook 做为 Wolfram Engine 的前端

pip install jupyterlab

git clone https://github.com/WolframResearch/WolframLanguageForJupyter.git

./configure-jupyter.wls add

现在可以在 jupyter lab 中打开 Wolfram Language 的 Notebook。

阅读更多

SELinux 设置

关闭 SELinux

getenforce 命令检查 SELinux 是否已禁用,其结果为 EnforcingPermissiveDisabled 之一,修改 SELinux 配置文件可将其禁用。

sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

如果只想临时关闭 SELinux,可以输入命令

setenforce 0

阅读更多

为 Markdown 添加样式

使用 inline CSS style

在表格中使用颜色

<style>
    .mytable td:nth-child(1) { font-weight: bold; }
    .mytable tr:nth-child(1) td:nth-child(n+2):nth-child(-n+4) { background: red; }
    .mytable tr:nth-child(2) td:nth-child(2) { background: deepskyblue; }
    .mytable tr:nth-child(2) td:nth-child(3) { background: palegreen; }
    .mytable tr:nth-child(2) td:nth-child(4) { background: orange; }
</style>

|       | Column 1 | Column 2 | Column 3 |
| ----- | :------: | :------: | :------: |
| Row 1 |  R1 C1   |  R1 C2   |  R1 C3   |
| Row 2 |  R2 C1   |  R2 C2   |  R2 C3   |
{:.mytable}

阅读更多