博文

谈按键布局(二):全平台(包括 Linux)如何方便地修改布局

图片
前言 在上一篇博客中我已经介绍了我的按键布局,因为是独创的布局所以不可能在设置里选一下就直接切换。接下来我简要介绍一下切换布局的最佳实践(best practice)、 需求任意自定义布局,而不是使用预设布局可以一键切换到 qwerty 以满足游戏需求 全平台如何切换布局 全平台最重要的就是可移植性,而硬件的可移植性是最好的,所以全平台的布局切换唯一方案就是买个能硬件编程的键盘。下面简单推荐几个不贵的键盘 雷柏 vpro v500,100元,我用的就是这个pocker,350元,听说可以硬件编程 雷柏的键盘去官网下载一个驱动(只有 Windows 版),可以将它的模式切换键功能重设。键盘最右上角的模式切换键可以切换键盘到自定义模式,可以随意修改按键布局、添加键盘宏,或者重定义很少使用的 F1~F12,比如换成ctrl+alt+del,或者一键输入邮箱,或者控制音乐播放。 这种方式优点是不依赖操作系统,只要键盘插上去就可以直接使用你自定的布局了;用模式切换键也能一键切回到 qwerty Linux 如何软件切换布局 首先有个软件叫 klfc ,可以让你写一个 json 格式的配置,它帮你把剩下的事情都做了。 我的按键布局配置在这里 下载 https://github.com/39aldo39/klfc/releases解压./klfc --from-json json格式的配置文件 --xkb /tmp/dvcd /tmp/dv./install-system.sh重启 接下来需要配置三个地方: 在桌面设置里面,语言 -> 键盘布局 -> 选择你新建的键盘布局,比如我的布局在语言为 "Other"里面,叫 "Charles Dvorak"。注意这里的键盘布局可以保存两个,一个你自己的,另一个为标准 qwerty 布局(比如普通的中文布局)在 fcitx 设置(如果你们输入中文用的不是 fcitx 那我也不知道该怎么弄)里面,添加一种输入法,去掉“只显示当前语言”选项,找到并添加刚刚的键盘布局,并挪到最上面这个不需要改在 fcitx 设置里面下面一栏最右面那个图标,选择默认键盘布局那里,选择刚刚添加的布局
如果在配置的第一个地方你有两个布局,那么你就可以软件一键在自定义布局和标准布局之间切换了。当然,你的硬件键盘此时必须…

谈按键布局(一):我的布局方案

图片
前言 键盘布局是个小众得不能再小众的东西了,在大多数人都使用 qwerty 都不怎么熟练的情况下,很少有人愿意学习一个新的键盘布局,更别谈设计自己使用的键盘布局了。 虽然键盘布局很小众,程序员却可以对按键布局做很多微调,比如把括号挪到容易按到的地方,把 Ctrl 与 Alt 互换,或者把 CapsLock 映射到一个更有用的功能上。虽然 gnome-tweak-tool 能进行一定程度的切换,但那完全不够。 我的键盘布局
以 dvorak 为基础,将 CapsLock 映射到 “=”,将 ScrollLock 映射到 CapsLock,将 两个 Ctrl 和两个 Alt 互换。 对原布局微调是因为原来的 Ctrl 实在太难按到了,而 Alt 的使用频率远没有 Ctrl 高;dvorak 的等号也十分难按到,所以换了这个布局用 dvorak 十分方便。 我为什么切换布局 打字不够快的话不会感觉到传统的 qwerty 布局有什么不妥,但是当我使用 qwerty 布局打字速度足够快时,感觉: 手指在键盘上飞,打字一点都不轻松,换了 dvorak 之后手指不需要经常进行远距离移动标点符号、大于等于号都非常远,而且那个位置很不好按还容易按错 因此切换到了 dvorak,并对 dvorak 做了一个微调,上面已经说过了 我的按键布局缺点 这些缺点全都继承自标准 dvorak: 方括号和 F 键非常难按学习起来和 dvorak 一样困难所有快捷键基本也都需要重新学习了,vim/emacs 相当于重新学一遍用别人的电脑就不会打字了下一篇博客将谈谈如何在 Linux 下最方便地创建自己的布局

我是如何以 iTunes 为中心管理和全平台(Windows/Mac/Linux/Android/iOS/iPod)同步音乐的

图片
前言 经过多年的探索,我总结了一套最适合我的听音乐和管理音乐的方法,这个方法并不是十分容易实现,并且为了它我也写了一些脚本,因此我把它分享出来,大家如果有需要也可以试试看。 这个方法适合谁喜欢收藏经典音乐,喜欢将音乐下载到本地音乐库中听有 Windows/Mac,但也希望 Linux/iPod/Android 可以用(有全平台需求) 多平台同步: 使用 Winodws 或 Mac 的 iTunes 作为中心服务器使用 isyncr 从 Windows 同步到安卓设备,安卓设备使用任何可以识别到 m3u 格式的软件(Google play music, poweramp)听歌iTunes 可以直接同步到 iPod/iPhone使用 rsync 将整个 iTunes 文件夹同步到 Linux,使用 itunes2rhythmbox rsync 同步 bat 脚本:itunes-sync.bat
X: cd X:\music rsync -e ssh -rzhu --delete-before --info=progress2 --progress iTunes user@ip_address:~/Music pause 将 iTunes 库转换为 Rhythmbox 的库脚本:itunes2rhythmbox
https://github.com/the0demiurge/CharlesScripts/blob/master/charles/bin/itunes2rhythmbox

这样,在某些地方听到好听的歌就下载整个专辑到 iTunes,然后同步到所有设备即可;一切操作都在中心服务器中运行,而一旦中心服务器崩溃,Linux 里面还有一份 iTunes文件夹的完整拷贝,迁移到 Mac 或 Windows 都十分容易。
下载歌曲: 先 Google,看看能不能找到无损;不能的话就用国产音乐软件下载非无损也行,最好每次下载一整个专辑,再把这整个专辑打好评分 无损的音乐使用WinMount/DAEMON Tools Lite/foobar2000/dBpoweramp Music Converter,挂载为虚拟光盘让 iTunes 扫描,或直接转换成 Apple Loosless,补充完整标签即可 不足之处:依赖 iTunes,而 iTunes 不支持 LinuxWinod…

[解决]非ubuntu发行版默认打开文件行为异常

前言: 由于刚装好的gnome默认用vlc打开文件夹,双击压缩文件直接就解压了,默认使用google-chrome打开pdf,这可太过分了,所以今天又读了一些Arch Wiki,解决了这个问题 TLDR Gnome 桌面:yaourt -S gnome-defaults-list 解释:https://wiki.archlinux.org/index.php/XDG_MIME_Applicationslinux 默认文件打开方式和 MIME Type 的配置有关,而这个设置在 defaults.list 中会设置默认打开方式。某些软件在安装时会提供这个 defaults.list,而有的不会,这就造成了有的文件打开方式错乱。
我后来研究了一下 Ubuntu 有没有自带的 defaults.list,发现果然安装桌面的时候都会自带一个与桌面相关的 defaults.list,本着 aur 无所不包的想法,果然就找到了
https://aur.archlinux.org/packages/gnome-defaults-list/
进入这个页面看一下这个默认列表来源,想弄清楚为啥它在装 gnome 的时候不会自带,看到了一个链接:
http://archive.ubuntu.com/ubuntu/pool/main/g/gnome-session/gnome-session_3.26.1-0ubuntu5.debian.tar.xz
它的来源竟然是 Ubuntu!
这说明 Ubuntu 自己维护了一个很好的默认列表却没有有效提交到上游(自己偷着用?),还是 Arch Linux 打包时漏掉了它?

[解决] Arch Linux 中 vscode 和 sublime-text 都无法使用中文输入法

原来是因为没装 fcitx 的 gtk2 模块,所以只要
sudo pacman -S fcitx-gtk2 就可以了

看来不能精简过头啊


我居然用 gedit 写了一上午的 LaTeX ...

TensorForce: (可能是)最好用的强化学习库

前言: 实现好用的强化学习算法不容易,这之间需要踩许多坑。工业界使用强化学习的话可以考虑使用这个现成的库,基于宽松的 Apache-2.0 协议;学术界也可以将其作为 baseline 。我自己实现过一些算法,如果对论文理解的不正确,或代码里有小疏漏,查错和调试是一件非常难的事情。有的时候做项目移植别人的代码会降低许多风险。 优点: 1. 把有名的主流算法全都实现了,共十几种算法,算法效果在这里。 2. API 设计非常方便,非常值得借鉴,这也是为什么我没有推荐 OpenAI 的 baselines 3. TensorFlow 实现的 A3C 有两种可选选项:基于多线程的和基于分布式的,可以合理避免掉 Python 的GIL 4, 用了 TensorBoard 做可视化,会很好用 5, 代码结构比较清晰,静下心来慢慢看可以作为不错的教学代码
6. 可以快速应用自己设计的强化学习环境,只需要继承自Environment类并实现相关方法即可,把自己设计的环境包装一下工作量非常小 缺点: 1. 用的 TensorFlow,而不是PyTorch,如果单机多 CPU 并行依赖分布式,并不是个好思路,而且显存使用会很不合理,也会更麻烦,比 PyTorch 的 multiprocessing 麻烦多了,这也是为什么我切换到了 PyTorch
2. 包装的层数实在太多了,源码阅读起来时间成本很高,毕竟用的是 TF。竟然把 TF用成了PyTorch 风格 结论: 1. 工业界使用的话问题不大 2. 科研完全可以基于这个框架写新的强化学习算法,或只用它作为 baselines 3. 用它学习强化学习也不错 4. 学学它的 API 设计会很好,现有的开源强化学习代码通常写得都很乱 5, 我用 PyTorch 链接:TensorForce: A TensorFlow library for applied reinforcement learning

在Blogger上书写LaTeX公式

坑:如果你在后台设置的主题背景中编辑HTML,出现下面这个错误:
The widget settings in widget with id <b>AdSense1</b> is not valid. An internal error occurred. Please try again.我在网上发现有不少人都遇到过,而且没有太好的解决办法。所以我就用比较暴力的方法:
直接定位到这个插件的位置,把AdSense的两个插件相关的几行代码删掉。教程:1. 复制下面的内容 2. 在后台设置$\rightarrow$主题背景$\rightarrow$编辑HTML,把这些内容粘贴到head标签内
示例:$\LaTeX$
$\sum \limits_{i=0}^n(\gamma \times Q(s|a))$

此博客中的热门博文

免费爬墙网站项目(ShadowSocksShare)开发简记

Ubuntu Gnome 酷炫完整指南(一):小工具篇