Material Theme UI 更新5.0+后图标包不再有效?

JetBrains全家桶(IntelliJ IDEA、CLion等)开始升级2020.1了,如果你正在使用Material Theme UI插件的话,更新5.0.0+后会发现图标包风格还是原生的样子。并且刚更新后会有小弹窗:

如果去插件介绍页可以看到更新历史中写了:

据此,图标包迁移到了Atom Material Icons – Plugins | JetBrains。可以直接在IDE的插件页中搜索并安装。

Docker 容器内连接宿主机localhost

昨天有点特殊需求,需要整一个frp(frpc)的容器。这个东西肯定要去连公网的frps,接受外来的请求后转发给内网。然后发现要转发到内网还好,但是要转发到宿主机的localhost时候就有点问题了,翻了一下文档和问答,大概是这样的:

对于Linux上的Docker,可以直接在docker run时指定:

--network="host"

或者在docker-compose.yml中:

network_mode: "host"

这种方式挺适合现在这个应用场景的。

如果是默认的网桥模式,那么可以在容器中访问宿主机对应docker网桥的IP地址。对于Windows或是Mac的Docker(版本18.03之后,据引用中的链接),可以直接连接主机名host.docker.internal

引用:
nginx – From inside of a Docker container, how do I connect to the localhost of the machine? – Stack Overflow
Use host networking | Docker Documentation
Compose file version 3 reference | Docker Documentation
Networking in Compose | Docker Documentation

CentOS 安装screenFetch

今天想给虚拟机装个screenFetch,以前在openSUSE和Ubuntu上安装都是直接包管理安装,习惯性地直接yum install screenfetch一下竟然发现没有:

No package screenfetch available.

好吧只好去翻一下文档:Installation · KittyKatt/screenFetch Wiki · GitHub

所以先下载:

wget -O screenfetch-dev https://git.io/vaHfR

然后丢到/usr/bin或类似的目录,如果在PATH就比较方便:

sudo mv ./screenfetch-dev /usr/bin/screenfetch

记得加上可执行权限:

sudo chmod +x /usr/bin/screenfetch

此时应该可以使用了:

screenfetch
screenfetch

好了出现了新的问题,没有lspci,那么:

yum whatprovides lspci
pciutils
sudo yum install pciutils

宽度比较蛋疼,我还是ssh上去截个图吧:

screenfetch

Windows 10下使用Windows+Shift+S截图

好消息,好消息!如果你正在使用较新的Windows 10,那么截图只要:Windows徽标键+Shift+S即可触发截图和草图应用来抓取矩形截图、任意形状截图、窗口截图或是全屏幕截图Windows徽标键+PrtSc即可触发截图和草图应用直接抓取全屏幕截图不用再为了截图打开微信或QQ啦。

截图和草图应用

如果你觉得这个快捷键比较难按,你可以在设置->轻松使用->键盘中修改:

修改热键为PrtScn

什么?你说我火星了?好像不是我,是我的朋友们…(无中生友ing)

好,来说说这个功能。根据此文章Why doesn’t the screen clipping tool work anymore? – OneNote所述,该热键本是OneNote用户用于截图的,自Windows 10创意者更新(也就是1703)后,由截图与草图应用接管。相关文章还包括:What’s New in Windows 10’s Creators UpdateHow to take and annotate screenshots on Windows 10

还要注意的是,根据Snip & Sketch…. : Windows10 – Reddit。截取屏幕后,你通常直接从剪贴板中取得图片,但是在:%LOCALAPPDATA%\Packages\Microsoft.Windows.ShellExperienceHost_cw5n1h2txyewy\TempState\ScreenClip路径下仍然保存有图片的副本(也就是C:\Users\%USERNAME%\AppData\Local\Packages\Microsoft.Windows.ShellExperienceHost_cw5n1h2txyewy\TempState\ScreenClip)。可能有隐私泄露风险,请务必注意。

普通用户不需要sudo使用Docker

大多数情况下,普通用户使用Docker都需要使用sudo进行提权,否则可能要切换到root用户才可直接使用。其实只需要将当前用户加入docker用户组即可。

The docker group grants privileges equivalent to the root user. For details on how this impacts security in your system, see Docker Daemon Attack Surface.

Warning from Post-installation steps for Linux | Docker Documentation

确实有风险,可能导致利用Docker提权之类的问题。搞事之前一定要明白自己在做什么。

正常情况下应该已经存在docker用户组了,如果没有则需要:

sudo groupadd docker

来添加一个名为docker的用户组。

然后就可以将当前用户加入docker用户组:

sudo usermod -aG docker $USER

或者:

sudo gpasswd -a $USER docker

注销后重新登录即可生效。按文档,对于有图形界面的Linux,应该注销再登录即可,否则应该完全重启。如果不方便注销,可以尝试:

newgrp docker

此时应该可以不需要sudo来使用Docker了。

发现版本19.03起有一个实验性特性,以非root用户运行Docker守护进程:

dockerd-rootless.sh --experimental

引用:
Post-installation steps for Linux | Docker Documentation
How can I use docker without sudo? – Ask Ubuntu
Docker security | Docker Documentation

Chrome 离线安装

推荐同学用Google Chrome作为日常的浏览器,但是他表示很难下载成功。为了省事,我决定直接弄个离线安装包给他。

直接搜索chrome offline installer,找到了官方文档:下載及安裝 Google Chrome – 電腦 – Google Chrome說明。文中说明了在离线状态下安装Chrome,需要在联网的主机上下载备用Chrome安装程序,就是我想要的离线安装包了。

只要打开上述链接再点击下载Chrome就可以得到离线安装包了。

仔细看了一下那个链接,其实本质上只是在Chrome的官方网址https://www.google.com/chrome/后面加上?standalone=1而已。即:https://www.google.com/chrome/?standalone=1

访问试一下,没有问题,有图有真相:

IDM抓取到的,看文件名和大小应该没有问题。

类似问题:Google Chrome 离线安装包的官方下载地址是什么? – 知乎

Public DNS 个人常用的公共DNS

慢慢收藏一点方便自己查找。

DNSPod Public DNS 119.29.29.29

首选:119.29.29.29
备用:182.254.116.116

Public DNS+——DNSPod推出的域名递归解析服务
Public DNS+ 接入指南-DNSPod 技术支持-DNSPod-免费智能DNS解析服务商-电信_网通_教育网,智能DNS

阿里DNS

首选:223.5.5.5
备用:223.6.6.6
首选:2400:3200::1
备用:2400:3200:baba::1

阿里DNS

1.1.1.1

首选:1.1.1.1
备用:1.0.0.1
首选:2606:4700:4700::1111
备用:2606:4700:4700::1001

1.1.1.1 — the Internet’s Fastest, Privacy-First DNS Resolver

Google Public DNS

首选:8.8.8.8
备用:8.8.4.4
首选:2001:4860:4860::8888
备用:2001:4860:4860::8844

Get Started | Public DNS | Google Developers

docker-compose.yml 特殊字符转义

MYSQL_ROOT_PASSWORD等键值对,可能会有特殊字符的字符串。使用引号来包围含有特殊字符的字符串。如果含有符号$,使用$$来代表$

You can use a $$ (double-dollar sign) when your configuration needs a literal dollar sign. This also prevents Compose from interpolating a value, so a $$ allows you to refer to environment variables that you don’t want processed by Compose.

Compose file version 3 reference | Docker Documentation

引用:
How to escape # in docker-compose – Stack Overflow
escaping – How can I escape a $ dollar sign in a docker compose file? – Stack Overflow
MYSQL_ROOT_PASSWORD special character missing with docker-compose.yml configuration · Issue #123 · docker-library/mysql · GitHub
yml配置文件中有特殊字符解决方案_iamlzyoco的博客-CSDN博客

MySQL default_character_set_name

SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "DATABASE_NAME";
ALTER DATABASE DATABASE_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER DATABASE DATABASE_NAME CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

引用:
mysql – How to fix “Incorrect string value” errors? – Stack Overflow
character encoding – How to convert an entire MySQL database characterset and collation to UTF-8? – Stack Overflow

Windows上的MySQL my.cnf my.ini

在Windows上,通常说的/etc/my.cnfmy.ini。如果MySQL已经作为服务启动,那么可以很容易地找到:

Win+R以准备运行,输入services.msc

找到MySQL并查看属性:

“C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe” –defaults-file=”C:\ProgramData\MySQL\MySQL Server 5.7\my.ini” MySQL57

其中defaults-file就是my.ini的路径。

引用:
mysql – I can not find my.cnf on my windows computer – Stack Overflow
mysql – How to change max_allowed_packet size – Stack Overflow
MySQL Bugs: #68516: MySQL workbench installed with MySQL 5.6 links to MySQL55 my.ini