OpenVSCode Server

OpenVSCode Server podman run -d --name openvscode -p 1025:3000 -v "openvscode-data:/home/workspace:cached" gitpod/openvscode-server

2011-08-27 · 1 min · 12 words · -

Hash, MAC, HMAC

Hash, MAC, HMAC HMAC Hash-MD5, SHA-1, integrity MAC- keyed hash, integrity & authenticity. HMAC 长度和其所用的hash长度一样 Hash 是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。 如果两个散列值是不相同的 (根据同一函数),那么这两个散列值的原始输入也是不相同的。 这个特性是散列函数具有确定性的结果,具有这种性质的散列函数称为单向散列函数。 但另一方面,散列函数的输入和输出不是唯一对应關係的,如果两个散列值相同,两个输入值很可能是相同的。 但也可能不同,這種情況稱為「碰撞」,這通常是兩個不同長度的散列值,刻意計算出相同的輸出值。 Hash,一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入 (又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。 简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 HASH主要用于信息安全领域中加密算法,他把一些不同长度的信息转化成杂乱的128位的编码里,叫做HASH值. 也可以说,hash就是找到一种数据内容和数据存放地址之间的映射关系 了解了hash基本定义,就不能不提到一些著名的hash算法,MD5 和 SHA1 可以说是目前应用最广泛的Hash算法。 MD5(RFC1321) 是 Rivest 于 1991 年对 MD4 的改进版本,将任意长的明文 hash 成 128 bit 的杂凑值。 MD5是一种不可逆的加密算法,目前是最牢靠的加密算法之一,尚没有能够逆运算的程序被开发出来,它对应任何字符串都可以加密成一段唯一的固定长度的代码。 那么它有什么用呢?很简单,通过它可以判断原始值是否正确 (是否被更改过)。一般用于密码的加密。而我们所提供的MD5校验码就是针对安装程序的唯一对应的一段代码。你可以使用任何MD5运算器对下载的文件进行运算,运算出来的结果如果完全符合我们提供的MD5校验码,那么说明你下载的这个程序没有被中途修改过。 这个特征码有如下特性,首先它不可逆,例如我有一段秘密的文字如:“My Secret Words”,经算法变换后得到MD5码(b9944e9367d2e40dd1f0c4040d4daaf7),把这个码告诉其他人,他们根据这个MD5码是没有系统的方法可以知道你原来的文字是什么的。 其次,这个码具有高度的离散性,也就是说,原信息的一点点变化就会导致MD5的巨大变化,例如"ABC" MD5(902fbdd2b1df0c4f70b4a5d23525e932)和"ABC " (多了一空格)MD5(12c774468f981a9487c30773d8093561)差别非常大,而且之间没有任何关系,也就是说产生的MD5码是不可预测的。 最后由于这个码有128位那么长,所以任意信息之间具有相同MD5码的可能性非常之低,通常被认为是不可能的。 所以一般认为MD5码可以唯一地代表原信息的特征,通常用于密码的加密存储,数字签名,文件完整性验证等。 SHA1 是由 NIST NSA 设计为同 DSA 一起使用的,sha 是 Secure Hash algorithm 的缩写;它对长度小于 2^64 的输入,产生长度为 160bit 的散列值; SHA-1 设计时基于和 MD4 相同原理,并且模仿了该算法。 ...

2011-08-25 · 1 min · 211 words · -

Math

Math http://blog.csdn.net/jiutianhe/article/details/41349649 Section 1 linear 线性代数 (矩阵为主) Vector 向量 Matrix 矩阵 Matrix Decomposition 矩阵分解 Section 2 analysis 数学分析 (函数为主) Function 函数 Polynomial 多项式函数 Interpolation 插值 Integration 积分 Solver 求解 Section 3 Probabilityand Statistics 概率和统计 1) distribution 分布 2) fraction and complex 分数和复数 3) random and statistics 随机生成和统计初步 1) cluster and regression聚类和回归

2011-08-24 · 1 min · 51 words · -

modprobe, `lsmod`

modprobe, lsmod modprobe 可载入指定的个别模块,或是载入一组相依的模块。modprobe 会根据 depmod 所产生的相依关系,决定要载入哪些模块。 若在载入过程中发生错误,在 modprobe 会卸载整组的模块 https://blog.csdn.net/future_fighter/article/details/3862795 lsmod 功能: 列出内核已载入模块的状态 用法: lsmod 描述: lsmod 列出 /proc/modules 的内容。 输出为: Module(模块名) Size(模块大小) Used by(被…使用) # 查看某一个模块是否已经被加载 lsmod|grep wireguard 手动加载卸载 控制内核模块载入/移除的命令是 kmod 软件包提供的 # 手动加载内核模块 sudo modprobe wireguard # 手动卸载内核模块 modprobe -r wireguard # 或者 rmmod wireguard load kernel module at boot vim /etc/modules-load.d/wireguard.conf # load wireguard module at boot wireguard command systool -v -m module_name modprobe --show-depends modinfo 查看内核模块的信息,包括开发人员信息,依赖信息 modinfo module_name https://wiki.archlinux.org/index.php/Kernel_modules_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87

2011-08-20 · 1 min · 74 words · -

grep command

grep command grep: Global Regular Expression Print 按行处理, 输出文件中包含搜索字符串的所有行。 grep [OPTION...] PATTERNS [FILE...] 或 grep -E '123|abc' filename // 找出文件(filename)中包含 123 或者包含 abc 的行 egrep '123|abc' filename // 用 egrep 同样可以实现 判断指定文件中是否包含指定的字符串 # 文件中包含字符串,命令正常退出 $? = 0, 不包含 $? = 1 grep "prod" /path/to/file/web.xml > /dev/null if [ $? -eq 0 ]; then echo "Found!" else echo "Not found!" fi grep xxx -A5 grep xxx -B1 grep -C 5 foo file 显示 file 文件里匹配 foo 字串那行以及上下 5 行 #regex grep ".*A.*" foo.txt grep "foo\|bar" foo.txt # 统计某个字符串出现的次数 grep -o objStr filename|wc -l # 搜索子目录, recursively grep -r 'linux' * 参数 -i, –ignore-case: 忽略大小写 -A, –after-context=NUM print NUM lines of trailing context -B <显示行数> -before-context=<显示行数> #除了显示符合样式的那一行之外,并显示该行之前的内容。 -C 显示 file 文件里匹配 foo 字串那行以及上下5行 -r, -recursive, 搜索子目录 -l, -files-with-matches, 查询多文件时只输出包含匹配字符的文件名, 不打印匹配的文件内容。 -G, -basic-regexp BRE 模式,也是默认的模式 -E, -extended-regexp ERE 模式 -h, 查询多文件时不显示文件名。 -a, –text: 强制作为文本文件处理, 报错: Binary file [some_file] matches 的时候可以用。 -w pattern files : 只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical') -q, –quiet, –silent, 不显示任何东西到 stdout -P, –perl-regexp 使用 PCREs -n, –line-number 打印行号 grep 正则 https://blog.csdn.net/yufenghyc/article/details/51078107 ...

2011-08-20 · 7 min · 1447 words · -

dmesg

dmesg # 显示时间戳 dmesg -T Display messages in kernel ring buffer Linux命令dmesg用来显示开机信息,kernel会将开机信息存储在 ring buffer 中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。 dmesg[1] - print or control the kernel ring buffer dmesg用于检测和控制内核环缓冲。程序用来帮助用户了解系统的启动信息 dmesg |grep scsi -A 3 https://www.jianshu.com/p/4a029091b705

2011-08-20 · 1 min · 31 words · -

Provider 模式

Provider 模式 首先什么是Provider模式?Provider是由两个设计模式融合而来的: 策略模式+抽象工厂模式。这两个模式具体的介绍我在这里就不多说了,网上一搜一大把。provider 模式的作用是为一个API进行定义和实现的分离。这样就通过核心功能的灵活性和易于修改的特点使得API具有灵活性。通俗一点来说就是实现了定义和实现的分离,最终效果就是不需要更改代码即可实现程序不同逻辑的改变。 在 BlogEngine中,provider 模式被应用于提供不同的数据的持久化。为了保证解压后就能使用默认采用的是 xmlProvider。本文研究的重点就是了解这个 Provider模式,并知道 BlogEngine如何通过provider 模式使得不同数据持久化方式之间的灵活切换。 https://www.cnblogs.com/qianlifeng/archive/2010/12/07/1899343.html

2011-08-20 · 1 min · 13 words · -

Debian

Debian Debian 10 “buster”

2011-08-20 · 1 min · 4 words · -

yaml

yaml http://www.ruanyifeng.com/blog/2016/07/yaml.html YAML 语言 (发音 /ˈjæməl/ ) 的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。 它的基本语法规则如下。 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格。 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 # 表示注释,从这个字符一直到行尾,都会被解析器忽略。 YAML 支持的数据结构有三种。 对象: 键值对的集合,又称为映射 (mapping) / 哈希 (hashes) / 字典 (dictionary) 数组: 一组按次序排列的值,又称为序列 (sequence) / 列表 (list) 纯量 (scalars) : 单个的、不可再分的值

2011-08-19 · 1 min · 36 words · -

gitea

gitea Gitea是一款使用Golang编写的可自运营的代码管理工具。 在这个领域,名气最响的应该是Gitlab。但实际使用中Gitlab也有点问题,首先就是资源占用。Gitlab是使用ruby编写的,好几年之前刚出来的时候,一台1G内存的虚拟主机连安装运行都做不到,着实震惊。时至今日都已经发展到了以docker镜像分发,gitlab仍旧会有体积和运行时资源占用的问题。另一点就是功能,对于一般标准团队来说,gitlab的功能太过于丰富,这是往好的地方说,往坏的地方说就是它包含了太多不需要的东西,而这些东西还占用磁盘和运行时资源。 于是着手查看开源的alternative方案,很快就找到了golang研发的gitea。使用golang研发的软件分发都很容易,体积小,安装使用简单,运行时占用资源少。且gitea的功能很完备,某些自身不具备的功能也能通过第三方来解决,比如CI就可以结合同样是golang研发的drone来实施。 https://xenojoshua.com/2019/12/gitea-note/

2011-08-19 · 1 min · 5 words · -

emacs 启动 窗口最大化

emacs 启动 窗口最大化 (defun fullscreen (&optional f) (interactive) (x-send-client-message nil 0 nil “_NET_WM_STATE” 32 ‘(2 “_NET_WM_STATE_MAXIMIZED_VERT” 0)) (x-send-client-message nil 0 nil “_NET_WM_STATE” 32 ‘(2 “_NET_WM_STATE_MAXIMIZED_HORZ” 0))) (add-hook ‘window-setup-hook ‘fullscreen)

2011-08-18 · 1 min · 29 words · -

蓝牙 HID

蓝牙 HID The Human Interface Device (HID)定义了蓝牙在人机接口设备中的协议、特征和使用规程。典型的应用包括蓝牙鼠标、蓝牙键盘、蓝牙游戏手柄等。该协议改编自USB HID Protocol。 2.一些概念 (1)HID Reports:Bluetooth HID devices支持三种Report:Input, Output, and Feature。 (2)HID建立Control Channel和Interrupt Channel两个通道,report可以在这两条channel上传输,在Control channel上传输的report称为synchronous reports ;在Interrupt channel上传输的report称为asynchronous reports。 (3)Feature reports are always transferred synchronously using GET_REPORT or SET_REPORT requests。 (4)Report Protocol Mode和Boot Protocol Mode。Bluetooth HID Hosts至少支持一种,Bluetooth HID Device则需要支持Report Protocol Mode,并且Report Protocol Mode是Bluetooth HID Device的默认Mode。 HOG (HID OVER GATT) 蓝牙4.0的BLE (bluetooth low en)技术 https://www.zhihu.com/question/23785524 https://developer.aliyun.com/article/376006

2011-08-18 · 1 min · 61 words · -

shell params, 参数

shell params, 参数 在 shell 编程时. 可以使用参数。 Shell 有位置参数和内部参数 位置参数 由系统提供的参数称为位置参数。位置参数的值可以用 $N 得到, N 是一个数字,如果 为 1, 即 $1. 类似 C 语言中的数组, Linux 会把输入的命令字符串分段并给每段进行标号, 标号从 0 开始。第 0 号为程序名字,从 1 开始就表示传递给程序的参数。如 $0 表示程序的名字,$1 表示传递给程序的第一个参数, 以此类推。 内部参数 上述过程中的$0是一个内部变量,它是必须的,而$1则可有可无。和$0一样的内部变量还有以下几个。 # 传递给程序的总的参数数目 $# #上一个代码或者 shell 程序在 shell 中退出的情况,如果正常退出则返回 0,反之为非 0 值。 $? $* –传递给程序的所有参数组成的字符串。 下面举例进行说明 cat test.sh !/bin/bash test shell echo $0 # 第一个参数 echo $1 # 第二个参数 echo $2 # 程序执行结果 echo $? # 传递参数所组成的字符串 echo $* # 参数个数 echo $# ./test.sh yema Bhanv edu network ...

2011-08-12 · 1 min · 123 words · -

java gc监控, jstat

java gc监控, jstat jstat -<option> [-t] [-h] <vmid> [<interval> [<count>]] jstat -gc -h3 <jvm PID> 3000 -1 # -gc 显示gc的信息,查看gc的次数,及时间。 # -h: 即-h跟数字,代表隔几行显示标题 # interval: 毫秒,代表监控间隔时间段,默认毫秒做单位 # count: 代表取数次数 Jstat在分析java的内存GC时的应用 jstat可以查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。 参数: jstat -class pid: Statistics on the behavior of the class loader. 显示加载class的数量,及所占空间等信息; jstat -compiler pid: Statistics of the behavior of the HotSpot Just-in-Time compiler.显示VM实时编译的数量等信息; jstat -gc pid: Statistics of the behavior of the garbage collected heap.可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。 jstat -gccapacity:可以显示,VM内存中三代 (young,old,perm) 对象的使用和占用大小,如: PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。 ...

2011-08-09 · 2 min · 329 words · -

sftp config

sftp config cd /root/ssh emacs sshd_config remove the comments for RSAAuthentication, PubkeyAuthentication RSAAuthentication yes PubkeyAuthentication yes generate rsa key pair by puttygen edit file authorized_keys add public key which generate by putty. copy private key to client PC /root/.ssh/id_rsa

2011-08-04 · 1 min · 39 words · -

svn basic, command

svn basic, command ignore ca --trust-server-cert-failures="unknown-ca,cn-mismatch,expired,not-yet-valid,other" svn checkout https://your.repository.url/ --non-interactive --trust-server-cert-failures="unknown-ca,cn-mismatch,expired,not-yet-valid,other" --username=blah --password=blah 查看 svn 版本 svn --version svn merge # 分支合到主干 cd trunk svn merge -r <revision where branch was cut>:<revision of trunk> svn://branch/path # 分支当前版本为4847,想把4825到4847间的改动merge到主干 # cd trunk svn merge -r 4825:4847 svn://branch/path svn ci -m "merge branch changes r4835:4847 into trunk" # 主干合到分支 cd branch # 在r23创建了一个分支,trunk版本号更新到了25,想把23-25之间的改动merge到分支 svn merge -r 23:25 svn://trunk/path svn ci -m "merge trunk changes r23:25 into my branch" # cd trunk # 查看当前Branch中已经有那些改动已经被合并到Trunk中 svn mergeinfo svn://branch/path # cd trunk # 查看Branch中那些改动还未合并 svn merginfo svn://branch/path --show-revs eligible svn cat -- 显示特定版本的某文件内容。 svn list -- 显示一个目录或某一版本存在的文件列表。 svn list -v http://svn.test.com/svn #查看详细的目录的信息(修订人,版本号,文件大小等)。 svn log -- 显示svn 的版本log,含作者、日期、路径等。 svn diff -- 显示特定修改的行级详细信息。 resolve svn resolve --accept working 1.txt svn resolve --accept theirs-full 1.txt 使用1.txt.rNew作为最后提交的版本 svn resolve --accept mine-full 1.txt 使用1.txt.mine作为最后提交的版本 svn resolve --accept mine-conflict 1.txt 使用1.txt.mine的冲突部分作为最后提交的版本 svn resolve --accept theirs-conflict 1.txt 使用1.txt.rNew的冲突部分作为最后提交的版本 # 查看远程地址 svn info # checkout svn checkout --username user0 http://路径(目录或文件的全路径)[本地目录全路径] #查看目录状态 svn status svn status -u # checkout 指定版本 svn up -rXXXX #install yum install subversion svn checkout https://(项目名称).(域)/svn/(项目名称)/(DIR) (项目名称) --username [在此处输入用户名] svn update #更新到指定版本 svn up -r xxx # 如果出现 an unversioned directory of the same name already exists, 可以使用强制更新 #强制更新 svn up --force svn commit -m 'xxx' svn revert . svn delete --force foo svn revert foo svn propedit svn:ignore . svn propset svn:ignore dirname . None of the environment variables SVN_EDITOR, export SVN_EDITOR=vim cd /home/wiloon/tmp ...

2011-08-04 · 2 min · 290 words · -

dev env

dev env linux ubuntu kafka containerd + nerdctl yubico login selfsigned cert, use for nginx citrix OK 远程桌面正常使用 传文件, 用桌面版的 citrix Jetbrains OK webex fcitx 输入中文, 2404 使用正常, 字体需要 配置一下 会议模式 ok, 音质销差但是不影响 共享屏幕, 用网页版 中文输入法 fcitx outlook 用网页版 或者 Thunderbird gnome terminal: 可以配置保留所有命令行的输出, windows terminal 只能保留 32767 行 containerd + nerdctl install chrome, download deb install vscode, download deb install 1password, download deb export ssh private key from 1password sudo apt install git # ubuntu install python3 by default # pdm depends on python3.12-venv sudo apt install python3.12-venv curl -sSL https://pdm-project.org/install-pdm.py | python3 - export PATH=/home/ywang6/.local/bin:$PATH sudo apt-get install libpq-dev python3-dev clang # sudo nopassword # install zsh # install fcitx5 windows # install latest version of powershell https://github.com/PowerShell/PowerShell/releases/tag/v7.1.0 # 以 admin 启动 powershell, 执行以下命令 choco install golang choco install nodejs-lts choco install python2 winget 安装软件不知道会安装到哪 ...

2011-08-01 · 2 min · 364 words · -

javascript

javascript 长数字格式化 (10000).toLocaleString('en-US'); // 输出 10,000 打印对象类型 foo.getClass() window.event.keyCode ascii //check if ESC pressed if (window.event.keyCode == 27) { $("#english").val("); } //check if enter pressed keyCode == 13 日期 ms > date string new Date(1636183170962).toLocaleString('en-US') 日期时间函数 var a=new Date(); var y = a.getFullYear()+ “- “; var m = a.getMonth()+ “- “; var d = a.getDate()+ “- “; var h = a.getHours()+ “- “; var x = a.getMinutes()+ “- “; var s = a.getSeconds()+ “- “; var ms=a.getMilliseconds()+ “- “; ...

2011-07-30 · 3 min · 549 words · -

Flatpak

Flatpak Flatpak 由红帽员工亚历山大·拉尔森(Alexander Larsson)开发,并于2015年正式发布。它是用C编程开发的,提供了在Linux发行版上安装应用程序的一种快速和直接的方法。 Flatpak的工作原理是将一个应用程序组合并编译成一个包。此前,Flatpak被称为xdg-app。这个特定的框架使用了在沙箱环境中运行应用程序而不需要根特权的概念。因此,一些flatpak应用程序不能访问和利用系统的全部资源。 Flatpak应用程序主要针对三种桌面环境——FreeDesktop、KDE和GNOME。不幸的是,Flatpak不支持任何后端工具,因为它只生成在Desktop环境中运行的应用程序。这是这个包管理器的一个主要缺点,因为它不支持服务器,除非您安装像GNOME这样的桌面环境(DE)。 与Snap类似,Flatpak有一个名为Flathub的在线商店,用户可以在那里找到并下载他们想要的应用程序。Flathub首次发布时,只允许开发者发布免费和开源的应用程序。然而,在更新了他们的条款和条件之后,开发人员现在甚至可以发布专有包。 https://blog.csdn.net/weixin_39636364/article/details/120424180 pacan -S flatpak flatpak list flatpak search Spotify flatpak install flathub Spotify flatpak run com.spotify.Client flatpak uninstall <appid> flatpak uninstall --unused sudo apt-get remove --autoremove flatpak sudo apt-get purge flatpak ubuntu sudo apt install flatpak Add the Flathub repository flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo remove flatpak flatpak uninstall --all sudo apt purge flatpak rm -rf ~/.local/share/flatpak sudo rm -rf /var/lib/flatpak

2011-07-29 · 1 min · 74 words · -

RSA

RSA Java cipher What is Java Cipher? 在计算机系统中,Java Cryptography Architecture (JCA) 是一个使用 Java 编程语言处理加解密相关操作的框架。它是 Java 安全 API 的一部分,最早是在 JDK1.1 版本的java.security包中引入的。JCA 基于”provider“架构,并且包含一系列不同作用的 API,比如加密、秘钥生成与管理、安全随机数生成、证书验证等等。这些 API 为开发人员提供了在应用代码中集成安全操作的简易方式。 Java Cryptography Extension (JCE) 是 Java 平台的一个官方标准扩展,也是 JCA 体系的一部分。JCE 为加密、密码生成和管理、消息认证码等操作提供了一个框架和具体实现。其实 Java 平台本身就包含摘要生成、数字签名等操作的接口和具体实现,JCE 提供了一个更丰富的补充。而javax.crypto.Cipher 类则是 JCE 扩展的核心。 Cipher 实例化 我们可以通过调用静态getInstance方法,传入具体的转换模式名称,就可以实例化一个 Cipher 对象。下面是实例化 Cipher 的示例代码: public class Encryptor { public byte[] encryptMessage(byte[] message, byte[] keyBytes) throws InvalidKeyException, NoSuchPaddingException, NoSuchAlgorithmException { Cipher cipher = Cipher.getInstance(“AES/ECB/PKCS5Padding”); //… } } 转换模式 (transformation) 的具体含义 转换模式 (transformation) 是 Cipher 实例化的一个核心参数。transformation 参数的格式是: 算法/工作模式/填充模式(algorithm/mode/padding),如上述示例中AES/ECB/PKCS5Padding。 ...

2011-07-28 · 1 min · 126 words · -