Margrop
Articles158
Tags353
Categories21
1password AC AP API AppDaemon Aqara Cron Date Diagrams.net HA HADashboard HomeAssistant IP IPv4 Java LVM‑Thin Linux MacOS MySQL NAS PPPoE PostgreSQL ProcessOn Proxmox VE SSL Shell TTS TimeMachine UML Uptime Kuma Web Windows activate ad adb adblock agent aligenie aliyun alpine annotation aop authy autofs backup baidupan bash bitwarden boot brew browser caddy2 cdn centos cert certbot charles chat chrome classloader client clone closures cloudflare cmd command commit container crontab ctyun ddsm demo dependency deploy developer devtools dll dns docker domain download draw drawio dsm dump dylib edge exception export fail2ban feign firewall-cmd flow frp frpc frps fuckgfw function gcc gfw git github golang gperftools gridea grub gvt-g hacs havcs heap hello hexo hibernate hidpi hoisting homeassistant hosts html htmlparser https idea image img img2kvm import index install intel io ios ip iptables iptv ipv6 iso java javascript jetbrains jni jnilib jpa js json jsonb jupter jupyterlab jvm k8s kernel key kid kms kodi koolproxy koolproxyr kvm lan lastpass launchctl learning lede letsencrypt linux live low-code lvm lxc m3u8 mac macos mariadb markdown maven md5 microcode mirror modem modules monitor mount mstsc mysql n2n n5105 nas network nfs node node-red nodejs nohup notepad++ npm nssm ntp oop openfeign openssl os otp ovz packet capture pat pdf pem perf ping pip plugin png powerbutton print pro proxy pve pvekclean python qcow2 qemu qemu-guest-agent rar reboot reflog remote remote desktop renew repo resize retina root route router rule rules runtime safari sata scipy-notebook scoping scp server slmgr so socks source spk spring springboot springfox ssh ssl stash string supernode svg svn swagger sync synology systemctl tap tap-windows tapwindows telecom template terminal tls token totp tvbox txt ubuntu udisk ui undertow uninstall unlocker upgrade url v2ray vhd vim vlmcsd vm vmdk web websocket wechat windows with worker wow xiaoya xml yum zip 中国电信 云电脑 交换机 光猫 公网IP 内存 内网IP 升级 启动 夏令时 天猫精灵 天翼云 安装 容器 导入 小米 常用软件 广告屏蔽 序列号 应用市场 异常 抓包 描述文件 时区 显卡虚拟化 智能家居 智能音箱 梯子 模块 流程 流程图 浏览器 漫游 激活 火绒 电信 画图 直播源 续期 网关 网络风暴 群晖 腾讯 虚拟机 证书 路由 路由器 软件管家 软路由 运维监控 镜像 镜像源 门窗传感器 防火墙 阿里云 阿里源 集客

Hitokoto

Archive

SpringBoot DevTools的大坑,没有之一

SpringBoot DevTools的大坑,没有之一

最近在SpringBoot的项目中新增了不少改动,然后就碰到了一个非常奇怪的问题。

Hibernate数据库查询报错

1
2
2021-03-03 17:08:28.016 ERROR 36216 --- [  XNIO-2 task-1] o.h.p.access.spi.SetterMethodImpl        : HHH000123: IllegalArgumentException in class: net.margrop.racentity.entity.Race, setter method of property: raceType
2021-03-03 17:08:28.016 ERROR 36216 --- [ XNIO-2 task-1] o.h.p.access.spi.SetterMethodImpl : HHH000091: Expected type: net.margrop.raceapi.entity.permanent.RaceType, actual value: net.margrop.raceapi.entity.permanent.RaceType

这简直就是奇了怪了
Expected typeactual value完全是一模一样,可Hibernate认为不一样,这可咋整。

Python3错误、调试和测试

Python3错误、调试和测试

错误处理

  • try
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try:
    print('try...')
    r = 10 / 0
    print('result:', r)
    except ZeroDivisionError as e:
    print('except:', e)
    finally:
    print('finally...')
    print('END')
Java / C开发人员应该知道的三个JavaScript怪癖

Java / C开发人员应该知道的三个JavaScript怪癖

JavaScript可能是一种欺骗性的语言,并且可能会造成极大的痛苦,因为它不是100%一致的。众所周知,它确实存在一些不好的,令人迷惑的或冗余的功能:臭名昭著的with语句隐式全局变量不稳定的比较可能是最著名的。

JavaScript是历史上最成功的火焰生成器之一!除了它所存在的缺陷(在新的ECMAScript规范中部分解决了这些缺陷)之外,大多数程序员都讨厌JavaScript的原因有两个:

  • 他们错误地认为DOM等同于JavaScript语言,该语言具有相当糟糕的API。

  • 它们来自C和Java等语言的JavaScript。他们被JavaScript的语法迷住了,以为它的工作方式与那些命令式语言的工作方式相同。这种误解将导致混乱,沮丧和错误。

因此,通常JavaScript的声誉比其应有的差。

在我的职业生涯中,我注意到了几种模式:大多数具有Java或C / C ++背景的开发人员所使用的语言功能在JavaScript中都假定相同,而又完全不同。

本文收集了最麻烦的文章,将Java方式与JavaScript方式进行比较以显示差异,并重点介绍JavaScript的最佳实践。

Python3 IO编程

Python3 IO编程

文件读写

读文件:read()会一次性读取全部内容

  • with 和 try…catch一样,更简介,自动调用close方法
    1
    2
    with open('/path/to/file', 'r') as f:
    print(f.read())
如何在Mac上执行一行命令,同时运行多个Python脚本?

如何在Mac上执行一行命令,同时运行多个Python脚本?

目前有4个Python脚本,打算使用一条命令,同时执行这4个脚本,如何操作呢?
我目前采用的办法比较简陋,使用了5个shell脚本来实现,不知道还有没有更好的方法。

shell脚本runAll.sh

1
2
3
4
5
6
#!/bin/bash
ls
open -a Terminal.app run17688821.sh
open -a Terminal.app run49763693.sh
open -a Terminal.app run857413.sh
open -a Terminal.app run856853.sh
Python3正则表达式

Python3正则表达式

re模块

1
2
3
s = r'ABC\-001' # Python的字符串
# 对应的正则表达式字符串不变:
# 'ABC\-001'

判断正则表达式是否匹配

1
2
3
4
5
>>> import re
>>> re.match(r'^\d{3}\-\d{3,8}$', '010-12345')
<_sre.SRE_Match object; span=(0, 9), match='010-12345'>
>>> re.match(r'^\d{3}\-\d{3,8}$', '010 12345')
>>>
如何在Home Assistant里面安装HACS

如何在Home Assistant里面安装HACS

如果是虚拟机环境(Home Assistant OS)

1.转到Supervisor面板
2.安装一个SSH附加组件(需要在用户个人资料中启用高级模式
3.配置所选的SSH加载项
4.启动SSH附加组件
5.连接到SSH附加组件
6.运行HACS安装脚本

1
wget -q -O - https://hacs.xyz/install | bash -
Centos 7.4 NFS自动挂载

Centos 7.4 NFS自动挂载

触发式自动挂载

用户登录时自动挂载NFS共享目录/home/share到本机/mnt/share

1
2
3
4
5
6
yum install -y autofs
vi /etc/auto.master
/mnt /etc/auto.conf(这个配置文件本身就没有要自己创建)
vi /etc/auto.conf
share 192.168.1.22:/etc/letsencrypt/live/margrop.net-0001/(nfs服务器上共享文件)
service autofs restart
搭建自己的密码管理服务器 Bitwarden

搭建自己的密码管理服务器 Bitwarden

很多人对于把密码放在网上,比如 lastpass 虽然官方说是提供加密了,服务器上看不到用户密码,但是还是不太放心,那么就可以搭建开源的 Bitwarden 搭建一个自己的密码管理服务器。

准备:一个 vps 服务器和一个域名且解析 IP 地址到服务器

【转】从 Authy 导出 TOTP token 的方法

【转】从 Authy 导出 TOTP token 的方法