Talk is cheap

Show me the code

正在查看标签 “ Linux ” 下的文章:

为 Telegram Desktop 生成 Emoji Sprite

Telegram Desktop 在 v1.5.8 版本中新增了自定义 Emoji 样式的功能,但这些样式我都不喜欢。辣鸡咕鸽还我小果冻!

没有一个好看的

稍微翻了一下 Telegram 的数据目录,发现下载的 Emoji 都保存在 ~/.local/share/TelegramDesktop/tdata/emoji 这个目录下,而且都是以 Spirte 图片的形式存储的。于是我们就有丰富的 hack 空间啦!

我知道没有人喜欢看这些罗里巴嗦的步骤,所以把下载链接先放在这里

UPDATE: Telegram Desktop 在 v2.1.3 版本中新增了对 Emoji 12.1 的支持,所以之前的 Sprite 失效了。虽然 Blobmoji 并没有完全覆盖,但总比没有要好 ... 新版(v2)下载连接在这里。(2020/09/27)

- MORE -

在 Arch Linux 中安装 WordPress

现在的博客程序用着挺好的,为什么去折腾 WordPress ?此中有很深刻的原因,而且我也没准备更换博客系统。不过还是踩了一些坑,得记录下来。

- MORE -

使用 GZip Bomb 对抗站点扫描工具

如果你翻看过公网 nginx 服务器的 access.log 的话,一定会发现很多尝试搞你的人。比如:

47.52.119.128 - - [12/Nov/2018:15:47:22 +0800] "POST /wp-admins.php HTTP/1.1" 404 153 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
92.154.49.175 - - [12/Nov/2018:17:37:39 +0800] "GET /mysql/admin/index.php?lang=en HTTP/1.1" 404 555 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"
14.141.146.139 - - [13/Nov/2018:02:25:17 +0800] "POST /qq.php HTTP/1.1" 405 157 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"
63.146.211.234 - - [13/Nov/2018:05:43:50 +0800] "POST / HTTP/1.1" 405 157 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"

诸如此类,懒得给这些 IP 打码了。这些类似的请求一次少说也有上百个,弄得 Nginx 的日志里面红红一片。其实一开始是懒得搭理这些东西的,毕竟对我来说也没什么损失,大不了跑点流量,反正国外辣鸡主机流量跟不要钱似的。

趁着双 11 ,剁手入了一台辣鸡主机, 2C2G 的配置看起来很是豪华。但才刚跑完 vps2arch初始化脚本 ,就发现已经有人摸到我的 IP 开始扫描奇怪的东西了。这怎么能忍?于是我决定搞点防御措施,至少要让那些只会用工具扫描的 Script Boy 们吃点苦头。

- MORE -

使用命令行工具处理图片

用手机拍摄的照片将要在互联网上公开转播的时候,我通常会担心两点。第一,图片的 EXIF 信息会不会泄漏;第二,尺寸太大,传输速度不理想。虽然大部分服务商都会压缩图片,但如果不是自行处理一下的话还是会感觉怪怪的。但如果使用 Krita/GIMP 之类的工具,有些杀鸡焉用牛刀的感觉。所以简简单单的命令行工具就足够了。

- MORE -

制作极限压缩的 Material Icons 图标字体

UPDATE: 写了一个傻傻的 Python 脚本 来自动处理字体,只要将所需要的图标名称每行一个写入 icon-names.txt ,就能一键生成压缩好的字体文件。(2018/04/26)

以下是原文。


这几天挖了 新坑 MelodyPlayer ,其中有用到 Google 的 Material Icons 。虽然它的 woff2 格式只有 42KB ,但我只用了其中的 10 个图标,加载整个字体文件显得很不划算。虽然 Material Icons 提供了制作 Sprite 的方案,但只有 SVG 或 CSS Sprite ,我的用法是 <button> 里写图标的名字,不能兼容。

我不愿意改代码,于是想寻找一种提取字体中特定字符的方法。

经过一番搜索,找到了 fonttools 这个强大的工具,可以精确控制字体文件的每一个 Glyph ,最大限度压缩字体。

- MORE -

一次意外的 rm -rf

本事件发生于 2018 年 1 月 9 日 晚 22:27:41

我最喜欢的 Interactive Shell 是 Fish 。Fish 有个特性是自动补全命令以及目录。当你在 Fish 中输入 ~ 这个字符,按下 Tab 键,就会列出一系列系统中已存在用户的 home 目录来供你选择。

Home 目录补全

- MORE -

XPS 13 9350 更换 Intel 8260 AC 无线网卡

Dell XPS 开发者版与普通版最大的区别大概就是无线网卡了。开发者版是 Linux 友好的 Intel 网卡,而其他的版本一般是 Dell 自己的网卡,在我看来就是 Broadcom 网卡的马甲。据说 Broadcom 的网卡对黑苹果很友好,然而我又不用 ... 但最近在更新 linux-lts 内核的时候,却出现了很大的问题。

在上个星期更新内核到 linux-lts-4.9.62-1 时,出现了网卡不可用的情况。给出的报错信息为

# journalctl
11月 20 14:43:34 quad kernel: brcmfmac: brcmf_p2p_create_p2pdev: set p2p_disc error
11月 20 14:43:34 quad kernel: brcmfmac: brcmf_cfg80211_add_iface: add iface p2p-dev-wlp58s0 type 10 failed: err=-16

# dmesg
[    4.061743] usbcore: registered new interface driver brcmfmac
[    4.061803] brcmfmac 0000:3a:00.0: enabling device (0000 -> 0002)
[    4.184308] brcmfmac 0000:3a:00.0: Direct firmware load for brcm/brcmfmac4350-pcie.txt failed with error -2
[    4.645165] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Oct 22 2015 06:16:26 version 7.35.180.119 (r594535) FWID 01-e791c176
[    4.660415] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
[    4.681113] brcmfmac 0000:3a:00.0 wlp58s0: renamed from wlan0
[    6.054543] brcmfmac: brcmf_p2p_create_p2pdev: set p2p_disc error
[    6.054549] brcmfmac: brcmf_cfg80211_add_iface: add iface p2p-dev-wlp58s0 type 10 failed: err=-16

Google 了好半天,没有发现什么有用的信息,于是滚回 mainline 内核看看。结果一切正常 ...

但我就是要用 LTS 内核,这个 Broadcom 网卡已经让我不爽很久了!于是某宝买了个网卡,就有了下面的故事。

- MORE -

微信开发者工具 在 Linux 中的使用与吐槽

听说微信开发者工具更新了,啊不,不是听说,其实是在某挨踢之家看到的 一篇文章 ,出于好奇,就进去看了一下。发现下载页面只提供了 Win32/64 以及 macOS 的下载。真抠门啊,不给个 Linux 版的。我猜这个“开发者工具”是用 Electron 驱动的,于是下载了一个 macOS 版的准备看看。

下载下来是个 dmg ,可以用 7z x file.dmg 直接解包。这是解包之后的目录结构:

微信web开发者工具
├── Applications
├── .background
│   └── dmg-background.tiff
├── .DS_Store
├── [HFS+ Private Data]
├── .HFS+ Private Directory Data\015
├── .VolumeIcon.icns
└── wechatwebdevtools.app
    └── Contents
        ├── _CodeSignature
        ├── Info.plist
        ├── MacOS
        ├── PkgInfo
        ├── Resources
        └── Versions

打开 wechatwebdevtools.app/Contents/Resources ,里面出现了 app.nw 这个文件夹,原来用的是 nw.js 。继续进入,果然有 node_modules 以及 package.json 。然后进入 node_modules 看一下,发现了 react , react-dom , react-redux ........ 以及一大堆的 babel 插件。从 stage-0 到 stage-3 ,babel-register , babel-minify 一应俱全。在打包的时候就不能把这些 devDeps 给删掉吗???

暂停一下,继续来看看能不能运行。

AUR 里面装一个 nwjs-bin 就行了。然后 cd 到 app.nw 运行

- MORE -

Arch Linux & KDE Plasma 配置笔记

换了新电脑之后,便入了 Arch Linux 的深坑。一开始是三天两头换桌面环境,还尝试使用 Unity for Arch ,最后还是停在了 KDE Plasma 。因为听说(真的是道听途说) f2fs 对固态硬盘很友好,便尝试在根文件系统上使用 f2fs 。但没有比较,也感觉不出来系统有多快,反而遇到很多坑 ... 装系统和日常使用的时候都有。比如系统启动的时候突然闪出一个 [FAILED] ,关机的时候半天关不掉(这里似乎忘了提示信息是什么了,反正是一个 1min 30s 的正计时,但时间到了以后又会顺延 1min 30s ,有时能到二十几分钟 ... ),Chrome 三天两头提示个人配置文件已损坏,但重启电脑又接着恢复 ... 等一系列坑爹的问题。一忍再忍,终于忍无可忍,但这时候就要期末考试了,所以只能继续忍下去。现在期末考试终于结束了,可以愉快的重装系统了!

首先是备份,直接把 /home 打成 tar 包复制到固态最后面一块刚划出来的分区里面备用。然后进入 LiveCD ,把 f2fs 分区干掉,换成 ext4 。这里又想吐槽一次了,f2fs 居然不支持分区移动和收缩,要拓展分区只能用 resize.f2fsparted 也是拿他没什么办法。

arch-chroot 分割线

先安装基本的软件包,当然少不了 fish shell 了!

pacman -S sudo fish git vim zsh nodejs npm shadowsocks-libev proxychains

在 Arch Wiki 的 KDE 安装环节,只提到了安装 kde-applications 软件包组或 kde-applications-meta 包。但这样会搞出很多没用的包,比如各种游戏,莫名奇妙的化学工具,“KDE 元素周期表”等等 ... 需要酌情做一些精简。

- MORE -

Chrome 终于修复了高 DPI 下 IME 漂移的 bug

今天,北京时间 2017 年 4 月 20 日,Chrome for Linux 浏览器更新了 58.0.3029.81 版本。此次更新修复了一个陈年旧 bug :在 HiDPI 下输入法定位漂移的问题。相信高 DPI Linux 用户都会有亲身体会,而且基于 Chromium 的 Electron 应用也会有这个问题。现在这个 bug 终于被修复了,喜大普奔!接下来就坐等 Electron 同步最新的 Chromium 源码,皆大欢喜了!!!

喜大普奔

- MORE -