scrum poker, 点数估算
scrum poker Scrum Poker Cards (Agile) Android, iOS https://artarmin.com/embed/#?secret=jkb2vbmib7 scrum poker online, 在线点数估算 https://www.scrumpoker-online.org/en/room/04930078
scrum poker Scrum Poker Cards (Agile) Android, iOS https://artarmin.com/embed/#?secret=jkb2vbmib7 scrum poker online, 在线点数估算 https://www.scrumpoker-online.org/en/room/04930078
chrome weak up api, keep screen on, 屏幕常亮 chrome: enable-experimental-web-platform-features web 页面支持 https 才能使用 wake lock api android: 系统开启开发者模式 chrome 74 chrome://flags/#enable-experimental-web-platform-features Note: Like most other powerful web APIs, the Wake Lock API is only available when served over HTTPS. chrome 79+ Chrome Updates Experimental Wake Lock API Support https://www.infoq.com/news/2019/11/chrome-wakelock-api/#:~:text=The%20Wake%20Lock%20API%20prevents%20some%20aspect%20of,this%20feature%2C%20adding%20promises%20and%20wake%20lock%20types. To use the Wake Lock API, developers need to enable the #enable-experimental-web-platform-features flag in chrome://flags. chrome://flags enable-experimental-web-platform-features keep-screen-on.js export function wakeLock () { if ('wakeLock' in navigator && 'request' in navigator.wakeLock) { console.log('wakeLock supported') try { navigator.wakeLock.request('screen') console.log('Wake Lock is active') } catch (e) { console.error(`${e.name}, ${e.message}`) } } else { console.log('no wakeLock support') } } vue script <script lang="ts"> import HelloWorld from './components/HelloWorld.vue' import { Component, Vue } from 'vue-property-decorator' import { wakeLock } from './assets/keep-screen-on.js' @Component({ components: { HelloWorld } }) export default class App extends Vue { drawer = false foo = '' mounted () { this.$vuetify.theme.dark = true wakeLock() } } </script> demo https://wake-lock-demo.glitch.me/ ...
三菱欧蓝德, Outland 机油 机油:矿物质 5000km,半合成 7500km,全合成 8000-10000km,平时行使道路越畅通,机油时效越长, 驾驶沉稳不经常暴力的,全年使用0W-20没问题(强烈推荐),此机油也特别适合北方冬季使用, 时常习惯开快车的建议全年 5W-30, 天天开暴力机车的,建议 5W-40;2,机油格(机油滤清器):每次换机油必须一同更换; 矿物机油 矿物机油以石油提炼的矿物油为基础,然后添加添加剂制造而成。矿物机油最普通,整体性能一般,价格最便宜,主要用于中低端车型,一般车辆每跑5000公里或者半年时间一换,时间和公里数以先到者为准; 全合成机油 全合成机油是化学合成的机油,成本较高,它的高低温性、高速润滑效果非常突出,一般用于中高档车型。涡轮增压车型因为其转速高、扭矩变化大,基本都是推荐使用全合成机油。全合成机油一般每10000公里或者一年一换,相比矿物机油更耐用,更换周期更长。 半合成机油介于矿物油和全合成机油之间,本身由矿物机油和全合成机油以4:6比例混合而成。一般每7500公里或者9个月一换。 时间或者公里数达到后尽快去更换机油,最好是不要超出1000-2000的公里,超过2000公里因为机油润滑保护作用的下降,继续使用将损害发动机。 0W-20, 5W-30 0W 的机油会在 -35℃ 的时候结冰 5W 代表耐外部低温 -30°C 20W 耐低温为 -15°C 前面的数字越小说明机油的低温流动性越好,代表可供使用的环境温度越低,在冷启动时对发动机的保护能力越好,如 5W 代表耐外部低温 -30°C,而 20W 耐低温为 -15°C。W 后面的数字代表机油在 100℃ 时的运动粘度,数值越高说明粘度越高。40 代表 100 摄氏度时运动粘度标准为 12.5mm2/s 到 16.3mm2/s 之间 根据说明书选择。原厂机油一般是厂家根据车辆发动机活塞与缸体间隙来选定,如换用高型号的机油,会使发动机有一定磨损。 根据公里数逐渐增加型号。前10万公里完全可以用20的机油,10 万到 20 万可以选择 30 的机油,20 万以后选择 40 的机油。但如果之前一直使用高型号的机油,建议最好还是不要降低型号。 根据使用地点选择型号。需要根据机油冷启动性能的指标来选择,比如你要是在南方,用5甚至10的绝对没有问题,如果在北部,最好用5甚至0开头的。 机滤 每次换机油的时候一起换; 机油滤芯也叫“机油滤清器”,其上游是机油泵,下游是发动机中需要润滑的各零部件。 轮胎 225 55 R18 胎压 240 kPa 2.4 bar 34.8 psi 三菱欧蓝德乘用车的原厂胎压标准是 2.3-2.5bar 都属于正常范围,最高不要超过3.0,最低不要低于2.1, 高一点没关系,但是低压非常危险。冷车和空车时测量胎压最为准确,如果低压非常低就该检查轮胎是否有漏气现象,不分前后轮,因为乘用车一般不存在承重问题, 胎压过大,会导致,轮胎与地面的基础面降低,可以降低油耗,但是也会影响制动力,胎压过低,会导致,轮胎侧壁直接磨损地面,过快,或过久行驶,导致侧壁破裂,甚至爆胎。 ...
ssh command, openssh 端口转发 ssh 不登陆直接执行命令 openssh 9.0 sftp-server options, 参数 -T: 禁止分配伪终端, Disable pseudo-terminal allocation -t 或 -tt: 强制分配伪终端, Force pseudo-terminal allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu servi ces. Multiple -t options force tty allocation, even if ssh has no local tty -f:后台执行ssh指令 -N:不执行远程指令 -L listen-port:host:port 指派本地的 port 到达端机器地址上的 port, 建立本地SSH隧道(本地客户端建立监听端口), 将本地机(客户机)的某个端口转发到远端指定机器的指定端口. -v: verbose -vv: verbose -o: 指定配置选项, 具体参数看 “配置选项” 配置选项 StrictHostKeyChecking=no 忽略主机密钥验证 ssh -vv -T -oKexAlgorithms=ecdh-sha2-nistp521 git@foo.com KexAlgorithms: key exchange algorithm commands # 指定 shell 可以解决 This account is currently not available. sudo -u username -s /bin/bash ssh 不登陆直接执行命令 ssh root@192.168.50.31 "whoami" # 也可以用单引号 ssh root@192.168.50.31 'whoami' 指定私钥, 指定密钥 ssh -i /path/to/id_rsa 测试 ssh -T git@github.com ssh 强制使用密码登录, force ssh client to use only password auth ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no 192.168.50.1 -l root #debian sudo apt-get install openssh-server #archlinux sudo pacman -S openssh sudo /etc/init.d/ssh start|stop|restart ssh IP ssh IP -p 1234 -l root # ssh version ssh -V ubuntu sudo apt install openssh-server sudo systemctl start sshd -A option enables forwarding of the authentication agent connection There is a shortcut to archive this, if we don’t want to create a config file, we have another option, using -A flag with the ssh command. ...
calibre, 电子书管理 calibre-web k8s calibre-dp.yaml apiVersion: apps/v1 kind: Deployment metadata: name: calibre-web namespace: default spec: replicas: 1 selector: matchLabels: name: calibre-web template: metadata: labels: name: calibre-web spec: containers: - name: calibre-web-container image: lscr.io/linuxserver/calibre-web:0.6.25 imagePullPolicy: IfNotPresent env: - name: PUID value: "1000" - name: PGID value: "1000" - name: TZ value: "Asia/Shanghai" - name: DOCKER_MODS value: "linuxserver/calibre-web:calibre" - name: OAUTHLIB_RELAX_TOKEN_SCOPE value: "1" ports: - containerPort: 8083 volumeMounts: - name: calibre-data mountPath: /config subPath: calibre-data volumes: - name: calibre-data persistentVolumeClaim: claimName: pvc0 --- apiVersion: v1 kind: Service metadata: name: calibre-web-service namespace: default spec: type: NodePort ports: - name: http port: 18083 targetPort: 8083 nodePort: 31083 selector: name: calibre-web web podman run -d \ --name=calibre-web \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Asia/Shanghai \ -e DOCKER_MODS=linuxserver/calibre-web:calibre \ -e OAUTHLIB_RELAX_TOKEN_SCOPE=1 \ -p 8083:8083 \ -v calibre-data:/config \ -v calibre-library:/books \ --restart unless-stopped \ lscr.io/linuxserver/calibre-web:latest GUI podman run -d \ --name=calibre \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Asia/Shanghai \ -p 8080:8080 \ -p 8081:8081 \ -v calibre-data-tmp:/config \ --restart unless-stopped \ lscr.io/linuxserver/calibre:latest mail server setup https://github.com/janeczku/calibre-web/wiki/Setup-Mailserver
lsof command lsof means ‘List Open Files’ List all open files on the system or open files for specified PID 查看一个进程打开了哪些文件 #PID: 1098 sudo lsof -p 1098 ## 查看进程打开了哪些端口 # 以上命令返回的数据里 有 TCP 字样的就是 socket, 能看到端口号 install lsof # archlinux pacman -Sy lsof # ubuntu apt-get install -y lsof # centos yum install lsof -y 命令参数 -p <进程ID> 列出指定进程ID所打开的文件 -a 列出打开文件存在的进程 -c <进程名> 列出指定进程所打开的文件 -g 列出GID号进程详情 -d <文件号> 列出占用该文件号的进程 +d <目录> 列出目录下被打开的文件 +D <目录> 递归列出目录下被打开的文件 -n <目录> 列出使用NFS的文件 -i <条件> 列出符合条件的进程。4、6、协议、:端口、 @ip . -u 列出UID号进程详情 -h 显示帮助信息 -v 显示版本信息 查看 tcp 连接的建立时间 # 查看 tcp 连接 ss -nt|grep 50.32 # ESTAB 0 0 192.168.50.228:58048 192.168.50.32:2380 # 端口 :58048 lsof -i:58048 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME etcd 975 root 79u IPv4 8267566 0t0 TCP k8s0:58048->k8s2:2380 (ESTABLISHED) ...
docker registry install registry # sample, https://docs.docker.com/registry/configuration/ cat > /usr/local/etc/docker-registry-config.yml << EOF version: 0.1 log: fields: service: registry storage: delete: enabled: true blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registry http: addr: :5000 headers: X-Content-Type-Options: [nosniff] health: storagedriver: enabled: true interval: 10s threshold: 3 EOF # https://hub.docker.com/_/registry # docker docker run -d \ --restart=always \ -v /usr/local/etc/docker-registry-config.yml:/etc/docker/registry/config.yml \ -p 5000:5000 \ --name docker-registry \ -v docker-registry:/var/lib/registry \ registry:2.8.3 # podman podman run -d \ -v /usr/local/etc/docker-registry-config.yml:/etc/docker/registry/config.yml \ -p 5000:5000 \ --name registry \ -v docker-registry:/var/lib/registry \ registry:2.8.3 buildah tag de3ebb1b260b registry.wiloon.com/pingd-proxy:v0.0.1 buildah push registry.wiloon.com/pingd-proxy:v0.0.1 podman pull registry.wiloon.com/pingd-proxy:v0.0.1 registry.wiloon.com/pingd-proxy registry.wiloon.com/ping-proxy docker 测试 sudo docker image tag hello-world registry.wiloon.com/myfirstimage sudo docker image ls sudo docker push registry.wiloon.com/myfirstimage sudo docker image rm hello-world sudo docker pull registry.wiloon.com/myfirstimage sudo docker image ls nginx config server { listen 443 ssl; server_name registry.wiloon.com; ssl_certificate /etc/letsencrypt/fullchain.pem; ssl_certificate_key /etc/letsencrypt/privkey.pem; ssl_protocols TLSv1.2; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; client_max_body_size 0; chunked_transfer_encoding on; location /v2/ { if ($http_user_agent ~ "^(docker/1.(3|4|5(?!.[0-9]-dev))|Go ).*$" ) { return 404; } proxy_pass http://192.168.50.13:5000; proxy_set_header Host $http_host; # required for docker client's sake proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 900; } } 查看仓库镜像 # 镜像列表 curl https://registry.wiloon.com/v2/_catalog | jq . # 查询镜像 tag(版本) curl https://registry.wiloon.com/v2/rssx-api/tags/list 删除镜像与空间回收 podman inspect rssx-api|grep sha256 curl -I -X DELETE https://registry.wiloon.com/v2/rssx-api/manifests/sha256:5b367dbc03f141bb5246b0dff6d5fc9c83d8b8d363d0962f3b7d344340e458f6 https://zhuanlan.zhihu.com/p/33324217 ...
kde config 快捷键 功能 key krunner alt+space 快捷键设置 System Settings>shortcuts 多显示器 任务栏 https://superuser.com/questions/905591/kde-taskbar-task-manager-only-on-vga-screen-not-dvi-screen/906725 Right-click on the panel -> Panel Settings then drag the Screen Edge bar to the bottom of the screen to move the panel. Then right click on the panel -> Add Widgets -> Double-click on Task Manager. Then right-click somewhere near the middle of the panel -> Task Manager Settings -> Only show tasks from the current screen ...
正则表达式, regex # PCRE # 10.0.0.0/8; 172.0.0.0/12; 192.168.0.0/16 ^[\d|\.|\/|;| ]+$ 元字符 描述 将下一个字符标记为一个特殊字符, 或一个原义字符, 或一个向后引用, 或一个八进制转义符。例如,“n” 匹配字符 “n”。"\n" 匹配一个换行符。 [中括号] []是定义匹配的字符范围 [xyz] 字符集合。匹配所包含的任意一个字符。例如,"[abc]"可以匹配"plain"中的"a"。 [^xyz] 负值字符集合。匹配未包含的任意字符。例如,"[^abc]"可以匹配"plain"中的"p"。 [a-z] 字符范围。匹配指定范围内的任意字符。例如,"[a-z]"可以匹配"a"到"z"范围内的任意小写字母字符。 [^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如, "[^a-z]"可以匹配任何不在"a"到"z"范围内的任意字符。 [A-Za-z0-9] 数字和26个英文字母组成的字符串 {大括号} {} 一般用来表示匹配的长度, 比如 \s{3} 表示匹配三个空格,\s{1,3} 表示匹配一到三个空格。 PCRE PCRE: Perl-compatible regular expressions ^ 匹配字符串的开始位置 $ 匹配字符串的结束位置 \ 将下一个字符标记为一个特殊字符(File Format Escape)、或一个原义字符(Identity Escape,有 ^$()*+?.[{| 共计12个)、或一个向后引用(backreferences)、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。序列“\”匹配“\”而“(”则匹配“(”。 . 匹配除 \r \n 之外的任何单个字符。要匹配包括 \r \n 在内的任何字符,请使用像 (.|\r|\n) 的模式。 * 匹配前面的子表达式零次或多次。例如,zo能匹配“z”、“zo”以及“zoo”。等价于{0,}。 + 匹配前面的子表达式一次或多次。例如,“zo+“能匹配"zo"以及"zoo”,但不能匹配"z”。+等价于{1,}。 (pattern) 匹配pattern并获取这一匹配的子字符串。该子字符串用于向后引用。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“(”或“)”。可带数量后缀。 ? 匹配前面的子表达式零次或一次。例如,“do(es)?“可以匹配"does"或"does"中的"do”。?等价于{0,1}。 {n} n 是一个非负整数。匹配确定的 n 次。例如,“o{2}“不能匹配"Bob"中的"o”,但是能匹配"food"中的两个o。 {n,} n 是一个非负整数。至少匹配n次。例如,“o{2,}“不能匹配"Bob"中的"o”,但能匹配"foooood"中的所有o。“o{1,}“等价于"o+"。“o{0,}“则等价于"o_"。 {1,3} 匹配一次到三次 linux 测试正则表达式 https://anjia0532.github.io/2017/06/29/nginx-regex-test-way/ ...
PVE # 查看 pve 版本 pveversion macos hdiutil convert proxmox-ve_8.3-1.iso -format UDRW -o proxmox-ve_8.3-1.dmg diskutil list # insert the USB flash drive diskutil list diskutil unmountDisk /dev/diskX # rdiskX, instead of diskX, in the last command is intended. It will increase the write speed. sudo dd if=proxmox-ve_8.3-1.dmg bs=1M of=/dev/rdisk5 创建安装盘 U盘 wiloon.com/ventoy dd bs=1M conv=fdatasync if=./proxmox-ve_*.iso of=/dev/XYZ 去除 Proxmox 企业源 apt update && apt install vim vim /etc/apt/sources.list.d/pve-enterprise.list #deb https://enterprise.proxmox.com/debian/pve buster pve-enterprise 更新源 pve9 # ceph.sources Types: deb URIs: https://mirrors.bfsu.edu.cn/proxmox/debian/ceph-squid Suites: trixie Components: no-subscription Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg # debian.sources Types: deb URIs: https://mirrors.bfsu.edu.cn/debian/ Suites: trixie trixie-updates Components: main contrib non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg Types: deb URIs: https://mirrors.bfsu.edu.cn/debian-security/ Suites: trixie-security Components: main contrib non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg pve 6.x vi /etc/apt/sources.list ...
VirtualBox 显存 使用 4k 显示器的时候如果 virtualbox 显存设置的太小, 会导致黑屏. 剪贴板共享 Settings> General> Advanced> Shared Clipboard: Bidirectional NAT 端口转发 虚拟机> 设置> 网络> 网卡1> 高级> 端口转发> 添加 名称: ssh 协议: TCP 主机IP/host ip: 0.0.0.0 主机端口: 22 子系统IP: 10.0.2.15 子系统端口: 22 archlinux guest 在 virtual box 内安装的 archlinux, 需要安装 virtualbox-guest-utils, 可以获得更流畅的图形界面, 如 virtual 的无缝模式。 # for VirtualBox Guest utilities with X support sudo pacman -S virtualbox-guest-utils # for VirtualBox Guest utilities without X support sudo pacman -S virtualbox-guest-utils-nox # 启用 vboxservice, 否则无缝模式(seamless mode)的选项会是灰色的不可用状态 sudo systemctl --now enable vboxservice.service 剪贴板共享默认是关闭的, 在这里打开: Settings > General > Advanced > Shared Clipboard ...
Archlinux 安装 linux-lts 内核 Archlinux 如果做服务器用的话, 最好安装 LTS 内核, 否则…说不定哪次更新之后, 服务就起不来了, 比如最近遇到的 linux 5.19.1 和 netavark 的兼容问题. 折腾 k8s, 尝试安装 cri-o 的时候习惯性的先执行了 pacman -Syu (操作系统用的 archlinux ),然后再安装 cri-o, pacman -S cri-o, 理论上 cri-o 会默认在 sysctl 里配置 bridge-nf-call-iptables = 1,但是重启后发现 bridge-nf-call-iptables = 1 没生效,手动配置之后也不行,提示 br_netfilter 内核模块没加载, 手动加载 modprobe br_netfilter 又报错说找不到模块,看上去是前面更新系统的时候升级了内核,从 5.16.4.arch1-1 升到了 5.16.5.arch1-1,modprobe 还是到旧内核的目录找 br_netfilter 模块,简单Google了一下看到有人解决 modprobe 的问题建议用 LTS 的内核,又Google了一下 archlinux 换 LTS 内核,然后再 pacman -S cri-o 重启之后 sysctl 的配置果然没有问题了, 更换内核的过程记录如下。 ...
openwrt basic, opkg basic, ipk commands # 查看 openwrt 版本 cat /etc/openwrt_release # 更新所有软件,包括 OpenWRT 内核、固件等 opkg list-upgradable | cut -f 1 -d ' ' | xargs opkg upgrade wan dns 在 wan 口设置里的“高级设置”选项里去掉"使用端局通告的DNS服务器"的勾选就可以使用自定义的DNS服务器 ssh port vim /etc/init.d/dropbear validate_section_dropbear > port ssh public key vim /etc/dropbear/authorized_keys dns 配置 查看本机的 DNS 配置: $ cat /etc/resolv.conf search lan nameserver 127.0.0.1 发现使用的是本机 DNS 服务器,即 dnsmasq。 查看 dnsmasq 配置: $ cat /etc/dnsmasq.conf 手动指定上游 dns vi /etc/dnsmasq.conf server=223.5.5.5 server=223.6.6.6 openwrt 改IP vi /etc/config/network opwnert init opkg install coreutils-nohup opkg install ipset opkg remove dnsmasq opkg install dnsmasq-full openwrt cron /etc/init.d/cron start /etc/init.d/cron enable crontab -e crontab -l x86, firmware download https://downloads.openwrt.org/releases/19.07.6/targets/x86/ ...
resolv.conf, systemd-resolved, DNS # 查看版本 systemd-resolve --version # check systemd-resolved status resolvectl status resolvectl restart # disable dns on 53 port vim /etc/systemd/resolved.conf # switch off binding to port 53 DNSStubListener=no # disable LLMNR LLMNR=false https://cloud-atlas.readthedocs.io/zh_CN/latest/linux/redhat_linux/systemd/systemd_resolved.html 测试 域名解析 resolvectl query goproxy.cn resolvectl query baidu.com resolvectl query google.com 配置 vim /etc/systemd/resolved.conf [Resolve] # DNS: 上游的 dns 服务器, 可以配置多条, 用空格分隔 DNS=192.168.50.1 # FallbackDNS: 一个空格分隔的 IPv4 与 IPv6 地址列表。用作系统的替补 DNS 服务器。此选项所设置的 DNS 服务器仅在实在找不到可用 DNS 的情况下才会被使用。 FallbackDNS=223.5.5.5 223.6.6.6 114.114.114.114 #Domains= #LLMNR=yes #MulticastDNS=yes #DNSSEC=allow-downgrade #DNSOverTLS=no #Cache=yes #DNSStubListener=yes #ReadEtcHosts=yes # 重启服务 systemctl restart systemd-resolved # check systemd-resolved status resolvectl status # 确认状态 systemd-resolve --status link ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf archlinux ...
xfce disable taskbar items grouping Right click on the taskbar, select Panel -> Panel Preferences Select the Items tab , select Window Buttons in the list, click the Edit button on the right side Change Window grouping to Never xfce 快捷键 ctrl+F1 #切换工作区 列出已经配置的快捷键 xfconf-query -c xfce4-keyboard-shortcuts -l -v|grep thunar 修改 Applications> Settings> keyboard> application shortcuts passwordless login, xfce 免密码登录 https://wiki.archlinux.org/title/LightDM#Enabling_interactive_passwordless_login https://github.com/sgerrand/xfce4-terminal-colors-solarized /home/user0/.config/xfce4/terminal/terminalrc colorCursor=#93a1a1 ColorForeground=#839496 ColorBackground=#002b36 ColorPalette=#073642;#dc322f;#859900;#b58900;#268bd2;#d33682;#2aa198;#eee8d5;#002b36;#cb4b16;#586e75;#657b83;#839496;#6c71c4;#93a1a1;#fdf6e3 https://ethanschoonover.com/solarized/ https://github.com/altercation/solarized archlinux 登录后启动xfce4 https://wiki.archlinux.org/index.php/xinitrc ...
DataGrip console 中使用变量 select * from public.actor where actor.actor_id < ${a} 导出建表语句 打开DataGrip、找到目标表 选中之后右键点击SQL Scripts→SQL Generator. 就可以看到建表语句了
android 自动充电 Chanify 消息推送工具 https://github.com/chanify/chanify-ios/blob/main/README-zh_CN.md # sample podman run -it \ -v /my/data:/root/.chanify \ wizjin/chanify:latest \ serve --name=<node name> --endpoint=http://<address>:<port> # podman podman run -it \ -d --name chanify \ -p 30080:80 \ -v chanify-data:/root/.chanify \ wizjin/chanify:latest \ serve --name=chanify0 --endpoint=https://chanify.wiloon.com # docker docker run -it -d \ --name chanify \ --restart=always \ -p 30080:80 \ -v chanify-data:/root/.chanify \ wizjin/chanify:latest \ serve --name=chanify0 --endpoint=https://chanify.wiloon.com 启动服务配置好 nginx 之后, 在浏览器访问 https://chanify.wiloon.com, 能看到 endpoint 的二维码, 用 iOS chanify 客户端扫二维码添加节点. 切换到频道, 在频道上左滑查看 token 用自建的服务器发消息 curl --form-string "text=hello" "http://chanify.wiloon.com/v1/sender/<token>" curl "http://chanify.wiloon.com/v1/sender/<token>/msg0" 礼信通4芯数据传输 USB 定时开关遥控制器延长线智能 WIFI 电源数据 https://item.taobao.com/item.htm?spm=a1z09.2.0.0.3b462e8dwgAuy1&id=675291964059&_u=m2lc6g03a41 ...
ssh-agent, ssh agent, ssh forward ssh agent forward A > B > C 主机 A:运行 ssh-agent,并且已经加载私钥 主机 B:跳板机 主机 C: 目标机,已经配置好公钥,并且运行 sshd 检查主机 A ssh-agent 是否已经在运行 ps -ef | grep ssh-agent 主机 A ssh-agent 已经加载了密钥 ssh-add -l 主机 A 允许入站连接上的 SSH 代理转发, 将 AllowAgentForwarding 的值设置为 yes,表示允许进行代理转发, openssh 中 AllowAgentForwarding 默认值即为yes,所以,如果配置没有修改过,保持默认即可。 vim /etc/ssh/sshd_config AllowAgentForwarding yes 主机 A ssh 配置 ForwardAgent yes vim ~/.ssh/config #content host * ForwardAgent yes 主机 B 不需要运行 ssh-agent, 也不需要配置 ssh 的 ForwardAgent yes, 主机 B 在使用 ssh agent forward 连接 主机 C 成功之后,会创建 环境变量 $SSH_AUTH_SOCK ...
“epub pdf azw3 mobi” EPUB> PDF> azw3 Calibre 从 azw3 转换格式到 EPUB 只需要 1分半, 转 PDF 格式需要10分钟以上。 azw3 > EPUB https://divineengine.net/article/how-to-remove-drm-from-kindle-books-with-calibre/ mobi mobi 电子书格式能够流行普及起来,很大程度上依靠亚马逊这个巨大的内容提供商,以及电子书阅读器 Kindle。 其中mobi 电子书主要分为KF7 (也称mobi7) 和 KF8 (也称mobi8) 两种标准的Kindle 电子书。mobi7 不支持在Kindle 中更换字体、加粗等比较丰富的排版格式,mobi8 则支持这些丰富的排版格式。但亚马逊却不支持mobi8 邮箱传输至Kindle。 MOBI格式是Amazon专有的电子书格式。由于Kindle的普及以及亚马逊自身强大的内容供应,该格式可以成为一种常见的电子书格式。实际上,MOBI格式是亚马逊在EPUB的基础上开发的,因此这两种格式实际上非常相似,并且相互转换相对容易。 MOBI格式有两个主要标准,旧的KF7标准和新的KF8标准。两个标准文件扩展名是MOBI,并且文件名没有区别,但是两者之间仍然存在一些区别:KF8标准支持更丰富的排版格式,例如Kindle中的字体替换和粗体显示,而KF7标准不支持这些排版格式。此外,如果通过电子邮件推送将KF8标准电子书同步到Kindle,则该电子书的封面不会显示在Kindle上。 目前市面上的 MOBI 文件大部分是来自两种途径: 一种是 EPUB、pdf 或者 txt 转换成的 MOBI, 一种是从 Amazon 商店流出来的 MOBI。 azw3 目前从 Amazon 购买的书,大部分已经是azw3格式。而以前主流的mobi 格式则越来越少,azw3正逐渐取代mobi成为Kindle电子书的主流格式。 你可以将azw3 理解为亚马逊给mobi8电子书加的一个「壳」,目的是为了更好地保护电子书的版权 (DRM保护) 。也就是说,azw3格式的电子书兼具mobi8电子书支持丰富内容排版的特点。但亚马逊目前还不支持azw3格式的电子书邮箱传输至Kindle,也就是说你没办法将azw3格式的电子书存储至亚马逊云端,也没法将其同步至你的其他Kindle设备或者KindleAPP。 为了让azw3格式的电子书同时支持丰富的排版和邮箱传输,库管同样建议你使用 Calibre 软件将其转换为混合mobi7和mobi8的电子书格式 (both) ,然后再邮箱传输进Kindle。 与 MOBI 一样,AZW和AZW3 同样是亚马逊的私有格式,甚至可以说,MOBI 格式与 AZW、AZW3 格式在本质上并没有什么区别!MOBI 格式与 AZW、AZW3 格式的区别在于,AZW、AZW3 格式比 MOBI 格式多了一层“壳”;MOBI 与 AZW、AZW3 格式的关系你可以这么理解: ...
socat socat 测试端口连通性, test a remote port is reachable with socat # test tcp port socat /dev/null TCP:192.168.1.15:22 socat - tcp4:192.168.1.15:22,connect-timeout=3 # test udp port # https://serverfault.com/questions/416205/testing-udp-port-connectivity # set up a server listening on UDP port 1234 socat UDP-RECV:1234 STDOUT # or socat STDIO UDP-LISTEN:1234 # test udp port socat - UDP:localhost:1234 http server, 加载本地 .html 文件 echo "foo">foo.html socat -v -v TCP-LISTEN:8000,crlf,reuseaddr,fork SYSTEM:"echo HTTP/1.0 200; echo Content-Type\: text/plain; echo; cat foo.html" https://stackoverflow.com/questions/29739901/socat-fake-http-server-use-a-file-as-server-response ...