博文

你绝对没想到的 python 小技巧:定义一个类但出现三个类

 前言 跟同事聊天时同事有的一个很怪的需求:衍生类,也就是说定义一个类,但希望还能同时出现两个与它强相关的衍生类。不多说了,看代码吧: def test(cls): class A(cls): @staticmethod def test(): print('A', cls.__name__) class B(cls): @staticmethod def test(): print('B', cls.__name__) globals()[cls.__name__ + 'A'] = A globals()[cls.__name__ + 'B'] = B return cls @test class T(object): ... TA.test() TB.test() 原理很简单,装饰器test输入一个类,同时基于该类在全局注册两个类,然后返回原类,实际使用时就会发现我们定义了一个类却一下子得到了三个类。用这种方法可以做很坏的事情: 比方说我们在全局注册类的时候,让新类的命名与旧类完全无关,同时不返回原类,用户看到我们调用某个类却找不到该类在哪里定义的,通常的 IDE 对于这种做法完全无能为力。 更进一步,如果新类的类名是通过某种运算得到的,那么用户就算用搜索也找不到这个类定义的位置。 还有更坏的做法,可以挂羊头卖狗肉。比如实现了A类和B类,但是通过装饰器让A和B功能互换,接口却保持一致,一般人阅读代码时绝对想不到它们发生了这种变化。 最后,如果你想做这种坏事,要记得保护你的这个装饰器,把它混淆起来让人没办法阅读就对了。

外文阅读者的福音:生词提示功能

图片
 前言 某天浏览网页发现kindle有一个“生词提示”的功能,可以在英文书籍上面显示中文或英文释义,这样就免得查字典了。由于kindle上只有部分从商店购买的正版书支持该功能,在网上查询发现一个“wisecreator”可以让任意书籍支持生词提示。 只有kindle能用还不够,我也希望digital paper支持该功能,而digital paper只支持PDF。这时我想起以前在真白萌论坛看到有一种给汉字上加假名注解的方法,即html ruby标签,便写了一个简单的小工具自动为epub添加注解,然后使用calibre转换为PDF即可。 使用说明 for kindle 使用pip安装 wisecreator : git clone https://github.com/tmilovanov/wisecreator.git 装上还不能运行,参考 https://github.com/tmilovanov/wisecreator/issues/42 ,还需要替换wisecreator/third-party中的KindleUnpack为 这里的最新版 安装:pip install . 安装calibre(或它自带的ebook-convert) 然后就会出现一个wisecreator的命令,用它给mobi或azw3加入生词提示功能。 fore epub https://gist.github.com/the0demiurge/b88fd09221d205beb2b8fd5cdc17cc6f 装上依赖项,用python运行该代码即可。词典可以从 https://github.com/mahavivo/english-wordlists 下载,建议用GRE红宝书 NAME     add_annotations.py - dictionaries can be found at https://github.com/mahavivo/english-wordlists SYNOPSIS     add_annotations.py BOOK_PATH SAVE_PATH <flags> [DICT_LIST]... DESCRIPTION     add annotations for e...

macOS 的命令行补全工具推荐:fig

图片
前言 命令行 shell 里面我使用 fish-shell 已经很久了,fish 真的非常好用,配合 omf 之后命令行就变成了完全体,zsh 的各种终端增强插件与 fish 自带的功能里面相比都不值一提(因为 zsh 的插件真的太慢了)。 前不久读过小众软件的 这篇文章 推荐的 fig,感觉很有趣,试用了一下也不错,因此推荐给大家。 正文 这个软件仅限于 macOS 使用,不过对于 fish 用户来说只是一个锦上添花的功能,所以 Linux 没有也无伤大雅。安装方法很简单,直接 brew install homebrew/cask/fig 即可。 使用效果直接看图就行,就是把命令行补全从类似于 ipython 的 cli 显示改成了类似于 Spyder 的gui 显示。 最后稍微提一下,这个软件的教学做得非常好,值得学习一下。

macOS Launchpad 备份与整理工具推荐:lporg

 前言 我使用软件都会整理得非常整洁,比如 macOS 上面各种软件都要分类排序整理好。不凑巧 macOS 内部 bug 特别多,就包括这个 launchpad。 最近我的 launchpad 出了个问题,几十个整理好的软件被弄得乱七八糟,试过 launchpad manager,可就这么差的一个软件居然还要花钱。在 GitHub 上一搜就找到同样功能的一个命令行工具: lporg 。 使用 按照 lporg 主页说的用brew安装好后,可以先save一下,把软件列表保存下来,然后手动整理一下yaml,再load回去。以后只需保存这个yaml,就能快速恢复了。该工具当前还有些小问题,部分系统软件似乎不听管教,load之后不会按照设置来走,不过这些问题无伤大雅。

在iOS使用原生输入法自然码双拼方案

前言 自从 上篇文章:在macOS使用原生自然码双拼方案 介绍了macOS使用自然码方案后,自然就能发现其实苹果早就实现了多种双拼方案,却只让部分双拼方案可选,这着实令人不解。后来在网上搜了一下, 发现iOS也能够选择原生自然码方案了。  方法流程  使用系统自带的备份软件Finder或者iTunes备份一下iOS设备,文件路径在 /Users/$USER/Library/ApplicationSupport/MobileSync/Backup/ 。 用iOS备份提取器把备份提取出来,我这里用的是文章里推荐的iMazing。不太推荐这个软件,因为没注册的话用起来有些麻烦。 修改备份文件中的 /HomeDomain/Library/Preferences/com.apple.InputModePreferences.plist ,把双拼方案改为5,这与macOS如出一辙。 如果没有Xcode,可以使用苹果电脑内置的命令 plutil 。 先用 plutil -convert json com.apple.InputModePreferences.plist 把配置文件转换为json 然后把里面的数字改成5,变为 {"ShuangpinType":5} 最后用 plutil -convert binary1 com.apple.InputModePreferences.plist 转换为二进制。 使用备份提取器把修改过的 com.apple.InputModePreferences.plist 放回去覆盖掉原来的文件。如果能直接把这个备份还原回去就大功告成了,不然就走到下一步。 前一步我用的iMazing不花钱不让还原备份,所以我把备份导出为原始文件格式,发现与Finder(或iTunes)备份的格式是一样的,所以就直接把文件拷贝到 /Users/$USER/Library/ApplicationSupport/MobileSync/Backup/ ,先删除原来的备份,然后放入修改后的备份。接下来再使用Finder(或iTunes)还原备份。  手机还原成功后会重启,然后发现双拼方案变成自然码了。 多一句嘴,如果在使用自然码之前已经在用别的双拼方案了,键盘上面还会有个分号。这个不必担心,在设置中删掉双拼键盘再加回来,双拼键盘就没有分号了。 参...

谈手表、智能手表与智能穿戴

前言 我从小学开始就天天戴手表,从几块钱的到上千块钱的也都戴过一些,电子表到机械表各有涉猎。最近想换表了,谈谈这些年来我对于手表的心得,也许对于想购买手表的朋友们可以作为些参考。 懵懂时期 小学时戴过家里的中古机械表,海鸥、北极星,还拆坏过一个北极星。没有人能抵抗得了复杂机械结构的魅力,所以当时的心里就种下了一颗想要机械表的种子。 当时作为一名小学生,肯定不会让我戴太贵的表,所以几块钱的玩具手表也戴过,三十多块的运动手表也戴过。这种廉价的手表防水性能不好,并且还不错的手表电池能坚持一年,不好的只能用三个月,时间准确度当然也不能有太高要求。那时电脑还没普及,手机更少见,时间基准只能靠上课下课铃声或者新闻联播作为参照物。 卡西欧时期 初中时家人走在路上捡到一块卡西欧的Baby-G,外观非常丑,功能却非常丰富,竟然还能储存通讯录。当时家里也没人认识这个品牌,也就当作一块便宜的电子表给我戴了,我也没把它当做什么好表,不过确实感觉挺好用,和以前戴过的手表都不一样。 前面也说了,我也没把卡西欧当做什么好表,所以怎么折腾就怎么戴。天天把手表泡在水池里玩,当球抛着玩,拆开看结构再装回去。因为看起来就结实,而且怎么折腾也没坏,所以就越玩越过分。就这样,这一块卡西欧我戴了好几年。 有一年冬天,这块卡西欧放在了羽绒服里面忘记了,结果有一整年没找到它。换成以前戴的手表后总感觉各种不方便,这就是所谓的失去了才知道它的美好。第二年找到了这块表之后,发现即便过了一整年,也不用调时间,感叹了一下手表确实不错之后,又继续了手表的虐待之旅。摔在地上次数大概有三位数之后,手表终于坏了。 一块二手卡西欧在手里戴了三四年,没怎么调过时间,没有换过电池,经历过那么多虐待才损坏,给我留下了深刻的印象。可惜当时心里想的全都是机械表,认为自动上链功能意味着永远不用换电池。手里拿着手表店也修不好的卡西欧,想着下回买个机械表吧。也是这时才知道,原来这个手表算是名牌的一种,价格也要几百块。 机械表时期 卡西欧坏了,初中也结束了,正式步入高中校园。我和许多手表小白一样,被淘宝爆款百元机械表深深吸引住了。价格只要一百块,还能从正反两面欣赏裸露出来的机芯和齿轮,走时误差大些可以忍受,大不了每星期都调整一两次时间;自动上链效率低一些也没关系,大不了手动再上发条补充一下;不能放水也没关系,小心点对待就好了。直到有一天,自动上链的摆...

关于电子游戏的随想

我的兴趣十分广泛,电子游戏是其中之一。我非常喜欢电子游戏,因为它带给了我大量的快乐。电子游戏曾被游戏从业者自封为“第九艺术”,那么电子游戏能被称为一门独立的艺术吗?它与其他艺术形式有什么区别和联系呢?我不时会思考这个问题。 既然会被称为“第九艺术”,那么就相应存在着其他八大艺术,也就是绘画、雕刻、建筑、音乐、文学、舞蹈、戏剧、电影。音乐、舞蹈、戏剧与电影之间关联性非常强,其中戏剧和电影仅仅是舞台与演出形式略有不同,而音乐和舞蹈也可以直接组成歌剧。电子游戏也存在着多种类别,其中许多类别与八大艺术的关联性非常强。带着前面提出的两个问题,我回顾了我所喜爱的各种类型游戏。 第一类:文本类游戏 我在小学和中学时最大的娱乐就是阅读,《傲慢与偏见》、《少年维特之烦恼》为我的爱情观带来了很大的影响;凡尔纳的几十本科幻小说带我体验了大航海时代的旅行;《歇洛克·福尔摩斯》从细微之处找到关键信息,剧情反转妙趣横生;《百万英镑》和《漂亮朋友》让我见识到了好运眷顾的人生。阅读的优点同时也是遗憾之处在于,必须要发挥想象力。我想象不出维特所爱的绿蒂的美,总担心自己所想象出的美达不到歌德所爱的少女那般;只靠想象,也很难想象出《神秘岛》中生活的多姿多彩;仅靠“美髯公”三个字也难以在心中复现出能够获得如此称号的朱仝的胡须。说实话,看到莫泊桑对于“漂亮朋友”的外表描述时,只能在脑海中浮现出一名小人物。 当然,为了弥补文字的缺憾,有的小说会加入插图,比如文库版的日本轻小说。《凉宫春日》系列提前画好了团长的人设,以此为基础创作的漫画和动画中各个角色都十分一致。这就比《哈利·波特》系列好不少。我在阅读该小说之前看过《哈利·波特》的电影,也看过《哈利·波特》的动画,还见过《哈利·波特》系列的游戏,其中人设不一致的地方相当多,曾带给了我不少混乱。 文本类游戏我接触得比较晚,玩过的第一个游戏是PSP模拟器中的《我的妹妹不可能那么可爱!》系列。当时一玩就比较上头,几天时间内不光刷完了所有线路,还看完了所有同名小说和动漫。现在的文本类游戏包括galgame,但在游戏分类上除了被分类为电子小说,还常常被分类为冒险类游戏(Adventure Game, AVG),实在是有点名不副实,这要从此类游戏的起源讲起。 冒险游戏的始祖《巨洞冒险》(Colossal Cave Adventure),最初的游戏名称就叫《Adventur...

解决索尼 Digital Paper DPT-RP1 手写笔 DPTA-RS1 失灵问题

问题描述 灵敏度很差,划好几下只能有一次有反应 画出的笔画不直,歪歪扭扭 插上电源没有反应,灯不亮 更新:2021-02-25 笔没电了我现在都用MacBook充电头+typeC转接线+原装充电线充电,今天笔的充电灯居然亮了 更新:2020-11-19 后来笔干脆罢工写不了字了,插在台式机充了一晚上电也不行。在网上查了好多地方,也没找到什么有用的解决方法信息。在 贴吧看到有不少人说笔充不进去电 ,重置digital paper就好了,我也就也重置了一下digital paper,发现笔还是写不了字。 在恢复备份的时候,本想把笔插到Mac上然后看一下dmesg能不能识别到,实测确实识别不到,本来万念俱灰的时候想着再试一下看看能不能写字,点进笔校正界面,随便一画,发现居然能写字了! 赶紧切换回笔记界面,发现也能写字了,但是写没两个字就说笔没电,看来是之前在台式机上充不上电。赶紧用显示器的USB口把笔充上电。 第二天用笔写字的时候,发现笔还说电量低,看来显示器也充不上电。只好试试别的充电方法了。当初买的iPod shuffle就有这种问题,特别挑充电口,不知道原因,如果有人遇到或了解为啥不妨在评论区和我交流一下。 总结: 笔很挑充电口,在很多地方充不上电,和iPod shuffle一样 贴吧上说不能在笔或者digital paper充电的时候写字,不然会让充不满电 贴吧上说重置一下digital paper就能恢复第2条引起的笔充不了电情况 Sony官网说充电的时候不要压到笔尖,不然会停止充电 我的笔充电灯坏掉了,很久都没亮过了,很难判断充没充上电 贴吧说笔充电3小时就能充满,不建议充电更久 解决方案 原来是因为笔芯没插紧,狠狠地把笔芯怼进去问题1和2就解决了。至于充电灯不亮也不影响什么,就不管了。

Flash被淘汰后打开swf文件的最佳方法

前言 众所周知,Flash安全漏洞实在太多,在网页上显示内容性能也不好,各大浏览器厂商群起而攻之,因此当前大多数非套壳浏览器都不再默认支持Flash。不巧的是有的下载版网课是swf格式的,而且童年回忆的4399小游戏也是swf格式。想要将swf文件下载到本地,多少年后也可以重温童年回忆似乎不再那么容易。 正文 我在网上搜了一下,发现Adobe Flash Player原来有独立运行版,不依赖浏览器可以单独打开。点击网址  https://www.adobe.com/support/flashplayer/debug_downloads.html  ,找到适合自己操作系统的版本下载即可。ArchLinux可以直接 yay -S flashplayer-standalone;macOS可以 brew cask install flash-player。之前在找mac相关软件的时候好多人都推荐付费软件,真的没必要。

最方便的电子词典库+macOS支持

前言 经常使用词典查单词就会发现大多数词典都很难满足自己的需求。经过多年查字典的经历我总结了一套查字典的需求如下: 能够快速看到释义,要求短小精悍 再少见的词汇或缩写都有收录 看不懂中文释义时能够给出英文释义 能看到近义词反义词 最好能有例句 作为Linux用户,跨平台是必须的 上述四个需求实际上是互相冲突的。有英文释义和例句(比如厚厚的牛津词典及其电子版)的词典不短小精悍,要耐着性子从很长的篇幅里面寻找到释义,很烦;简明词典内容太少,近义词和英文释义就不指望了。单个词典显然无法解决问题,需要多个词典组合来满足所有需求。本文将介绍我使用的词典库系列。 词典库推荐 ECDICT, 简明英汉字典增强版 最强的简明英汉词典,收录非常全面,是我使用频率最高的词典库,平时查单词扫一眼就能知道单词的意思。推荐ECDICT-ultimate,词汇收录得更广。官方GitHub项目中没有提供可供macOS自带词典使用的字典库,因此我写了一个python脚本将官方提供的字典进行了转换。ECDICT-ultimate中的英文是来源于WordNet的释义,很容易看懂。我转换的macOS版词典可以选择是否显示英文/人名释义,比官方提供的格式看起来要好很多。 WordNet 虽然WordNet算是一个数据库,网上能搜到很多名为WordNet的词典。WordNet将词汇与Thesaurus相结合,英文释义简单易懂,比我看过的许多英英辞典更轻松理解词汇的含义。WordNet包含近义词反义词,背单词时很方便。英文词典是绝对必要的,许多单词看中文完全无法理解,只有看英文释义才能理解;或者有的词汇有多个看起来没有关联的含义,阅读英文释义时能够理解不同含义之间的关联(比如course这个单词,看中文释义感觉它的含义非常多,看英文才明白本来是指“道路”的“道”);有不同的单词中文释义是一样的,但看英文释义才能明白这不同单词的区别。 Thesaurus Thesaurus严格来说不是一个词典,而是类似于中文的“辞海”,例句、近义词反义词都有,随便找一个就行,属于不常看但没有也不行。 词典软件推荐 QStarDict 比较简单轻量,GoldenDict虽然比这个显示效果好但占用太多系统资源。本词典软件可以设置划词后使用快捷键翻译,很方便。 sdcv 命令...

MacBook日文键盘四种输入模式输入法切换(同样适用于其他布局的键盘)

前言 以前买了个日文键盘的MacBook,日文键盘与中文键盘布局差别不小,不过适应了之后发现其实日文键盘用起来比普通键盘布局更加舒服。而且比普通键盘多了两个输入法切换键,最近就再考虑把这两个键利用起来。 工具 Karabiner-Elements 方法 日文键盘比普通键盘多了“英数”和“かな”键,前者将输入法强制切换到英文,后者强制切换到平假名。由于我主要使用中文输入法和Dvorak布局的英文键盘,偶尔使用日文输入法和qwerty布局,使用这两个键可以很方便地进行四种输入模式的切换,如下所示: 英数 -> Dvorak fn+英数 -> qwerty かな-> 中文 fn+かな -> 日文 通过编写配置文件即可。值得注意的是切换到日文的部分我并没有直接使用切换语言的api,而是将fn+かな直接映射为かな键,这与后文提到的macOS的bug有关。 问题与Walkaround macOS有个历史悠久的bug是输入法切换api在cjk之间互相切换时输入法指示器显示已切换却无法使用该输入法,解决方法是切换为英文输入法后再切换到前一个输入法(可以在karabiner-elements里面自动实现)。  输入法切换为英文时不会像之前按英数键一样自动将输入一半的内容直接提交为英文,而是出现一个不会消失的输入法框。解决方案是使karabiner-elements先触发一次英数键后再切换键盘布局。 使用上述walkaround之后输入法切换不够稳定,有的时候可能切换不到中文输入法或有的时候かな键变成了切换为日文。解决方法是将按一次键触发的多个动作中最后一个动作延迟触发,比如我使英数键或かな键弹起时触发最后一个动作。 如果没有在karabiner-elements里面专门设置键盘布局的话默认会按照美式布局进行映射,会发现各别日文独有的按键没识别到,不要忘记设置好。 总结: 输入法的切换存在两种方式,有状态和无状态。有状态即默认的使用caps lock在两种输入模式之间转换,而无状态是不论当前处于何种输入模式直接切换到指定输入模式。无状态切换更省心,既不需要每回都去看输入法指示器,也不会忘记切换输入法而导致需要删掉使用错误输入法打的字。我发现我的博文能解决的问题实在是小众得不能更小众,以汉语为母语的dvorak键盘布局与日文键盘使用...

在macOS使用原生自然码双拼方案

2020-09-20 更新: 在iOS使用原生输入法自然码双拼方案 前言 搜了一下Google,发现今年(2019年)忽然能搜到使用自然码的方法了,终于可以不用忍受搜狗和微软的方案,以及Linux和mac使用不同方案的不便了。 方法 只要运行下面的代码: $ defaults write com.apple.inputmethod.CoreChineseEngineFramework shuangpinLayout 5 就可以了。其实苹果已经自带了自然码方案,只是还不让选择。 参考文献   macOS 原生输入法设置自然码

谈按键布局(三):人体工学按键布局的终极解决方案-以 Ergodox 为例

图片
前言 上一篇 谈到软件改布局,本篇讲的终极解决方案是从硬件层面改变布局。我用了几个月时间逐渐适应了以Dvorak作为日常布局,使用Linux打命令和写代码的舒适度得到了大幅提升。这体现在:打字的时候,手指不需要总是大幅度移动、标点符号符号更好按了,右手小拇指也变得舒服得多。然而还是有一些地方很难以忍受,所以有了这个终极解决方案。 传统方案的不足 传统键盘由于历史原因(防止打字机卡键)设计的倾斜布局使得左手特别难按,手腕很不舒服。 倾斜布局使得我到现在盲打数字区域都会打错。 之前的快捷键位置都变了,非常不好按,我应对的方法是忍着。 vim很适应的hjkl现在的位置变得非常不舒服,虽然可以通过修改vim配置解决,但治标不治本,因为没办法一下改掉所有vim模式插件的运行模式。 玩游戏的时候按键位置变得很不方便,切换按键布局也很麻烦,我应对的方法是不玩游戏。 退格键很远,又没有足够多的按键把退格键映射到好按的位置。 终极方案 综合考虑上面几个不足,从选购键盘开始,把这些问题全都解决掉: 应对倾斜布局: 选择直来直去的键盘 。通过长时间调查,发现有TypeMatrix、xd75re、planck、ergodox、kinesis、X-bows等上下对齐的键盘。最初非常想要X-bows,可是这个键盘太小众,键盘和键帽太难买到;ergodox又是分体键盘,所以一步到位,既然选择要人体工学就直接选择最极端的键盘。 可能有朋友担心ergodox适应起来困难,我可以很负责任地说,适应成本很低。我为了适应dvorak花了一个星期才能够完全盲打,敲代码速度花了一个多月时间才勉强赶得上之前的打字速度,而双拼打中文的速度至今赶不上曾经的QWERTY键盘。而适应ergodox只需要一天,除了左手下排字母刚开始比较容易打错之外,打字速度与准确度与换键盘相比并没有显著区别。 如果不会盲打,淘宝也有有刻键帽可选。 应对Dvorak下快捷键、游戏、vim不好按 购买可编程(尤其是支持tmk/qmk固件的)键盘。 这种键盘可以进行极高的自定义。比如 我的键盘布 局 。 这种固件是按层编程的,可以在网页上图形化地进行设计,再烧录到键盘中的单片机里。由于可以设计多层(我的键盘至多能写32层),可以通过发挥想象力在键盘里面设计各种各样的功能...

Free Office:Linux下最(并不)好用的 Office 软件

前言 最近用Office处理电子表格比较多,而Linux下最常见的两个Office的表现都十分糟糕,电子表格动不动就卡死。难道Linux就真的没有好用的Office软件了吗?其实不然。我在AUR里面用office作为关键词搜到了一些office软件,并逐个尝试了一下,发现还真有比wps和libreOffice好用的软件,而这些软件的市场占有率还很低,真是好奇怪。 2019-08-02 更新 实际上FreeOffice功能缺失太严重了,毕竟只是免费版。只是外观看着感觉不错,用起来实际上并不行。 FreeOffice 官网链接 刚下载好这个软件一看居然要注册码。心想真奇怪,不是叫"FreeOffice"吗,为啥还要注册码?登陆官网发现实际上注册是免费的,会向你的邮箱发送一个免费的注册码,可以永久免费使用,真是够奇葩的。。。 使用评价: 性能方面: 界面非常好,不像wps使用自己做的一套显示框架,也不像libreOffice拖着一大堆沉重的Java运行环境,所以这个office第一感觉是速度非常快,外观也类似于MS office 2016,满足了我对linux下office的所有要求。 功能方面: Linux的office功能都没有能根MS office抗衡的吧,能满足常用功能就可以了。具体的因为还没怎么体验过,所以功能方面的都只是猜测,过段时间体验之后再更新。 综合评价: 再见,libre Office!再见,wps! 2018.10.13更新: 速度: 第一次启动比较慢,如果有已经打开的窗口的话秒开。由于不会长驻内存,所以建议如果不是偶尔看看文档的话就先开一个文档别关。 功能: 功能比较欠缺,大概和Linux下的wps差不多,不支持公式,电子表格的筛选也十分有限。 结论: wps可以删掉了,libre office可能还有点用,Linux下面居然还真的有可以流畅使用的Office。 PJeOffice 使用评价: 用java写的,不知道为什么还没打得开,等打开之后再评价吧。 2018.10.13更新:最终也没能够成功打开,所以不建议使用。

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

图片
前言 在 上一篇博客 中我已经介绍了我的按键布局,因为是独创的布局所以不可能在设置里选一下就直接切换。接下来我简要介绍一下切换布局的最佳实践(best practice)。 如果你对这篇博客不感兴趣,不妨看看本系列的下一篇: 谈按键布局(三):人体工学按键布局的终极解决方案-以 Ergodox 为例 需求 任意自定义布局,而不是使用预设布局 可以一键切换到 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/dv cd /tmp/dv ./install-system.sh 重启 接下来需要配置三个地方: 在桌面设置里面,语言 -> 键盘布局 -> 选择你新建的键盘布局,比如我的布局在语言为 "Other"里面,叫 "Charles Dvorak"。注意这里的键盘布局可以保存两个,一个你自己的,另一个为标准 qwerty 布局(比如普通的中文布局) 在 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/Chromebook/iOS/iPod)同步音乐的

图片
前言 经过多年的探索,我总结了一套最适合我的听音乐和管理音乐的方法,这个方法并不是十分容易实现,并且为了它我也写了一些脚本,因此我把它分享出来,大家如果有需要也可以试试看。 这个方法适合谁 喜欢收藏经典音乐,喜欢将音乐下载到本地音乐库中听 有 Windows/Mac,但也希望 Linux/iPod/Android 可以用(有全平台需求) 2019.10.29 更新:解决了itunes2rhythmbox中日韩歌曲无法匹配的问题 这个问题困扰我好久,歌曲名本身看起来是一样的,但是却找不到相应的文件,原因是unicode编码方式会使有的字看起来一样编码却不一样。比如日语中的が本应是一个字符,从mac复制过来后文件名变成了2个字符か和右上角的两个点的两个字符,韩语也同理。我也没有办法穷举出所有的变化,所以就使用源文件与目标文件路径字符串之间的编辑距离以及路径中ascii码的编辑距离两个特征进行匹配,寻找最接近的音乐文件以匹配。新版的itunes2rhythmbox脚本见 这个链接 #!/usr/bin/env fish #!/usr/bin/env python3 import heapq import multiprocessing import os import re import sys from itertools import zip_longest from xml.etree import ElementTree help_message = '''Usage: Close Rhythmbox, then type: itunes2rhythmbox If you are to move or sync your whole iTunes library to Rhythmbox, This script will help you to convert iTunes playlist to Rhythmbox style playlist, and import the playlist to Rhythmbox directly. Before using this script, you should have: - an iTunes folder copied directly from your Wind...

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

前言: 由于刚装好的gnome默认用vlc打开文件夹,双击压缩文件直接就解压了,默认使用google-chrome打开pdf,这可太过分了,所以今天又读了一些Arch Wiki,解决了这个问题 TLDR Gnome 桌面:yaourt -S gnome-defaults-list 解释: https://wiki.archlinux.org/index.php/XDG_MIME_Applications linux 默认文件打开方式和 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

此博客中的热门博文

最方便的电子词典库+macOS支持

MacBook日文键盘四种输入模式输入法切换(同样适用于其他布局的键盘)

[SOLVED] Supermicro cannot connect to VGA video port or iKVM