常用的elisp函数/配置

配置

启停emacsd的proxy

(setq url-proxy-services
      '(("http". "127.0.0.1:7890")
        ("sock5". "127.0.0.1:7890")
        ("https". "127.0.0.1:7890")))
进入阅读→

MacOS技巧与窍门

通用

  • ⇧⌘/ 搜索当前应用的所有菜单项. 然后使用上/下箭头键浏览结果, 按 Return 键执行该菜单栏操作.
  • ⌃F2 将键盘焦点移至应用程序的菜单栏. 开始输入菜单标题的前几个字母以跳转到该菜单.
  • 展开大纲视图时按住 Option 键可递归展开所有子项. (测试此操作最简单的地方是 Finder 的列表视图. )
  • 在模态对话框/面板上, 按 Command + 按钮的第一个字母来按下该按钮. ⌘.Escape 键的快捷方式.
  • 按住 ControlOption 键并点击窗口, 可在不提升窗口的情况下将焦点切换到该窗口.
  • 按住 Command 键并拖动工具栏图标可将其移动到新位置.
  • 默认情况下, 点击滚动条内部会部分滚动到点击位置. 按住 Option 键并点击滚动条, 可直接跳转到点击位置.
  • 拖动滚动条滑块时按住 Option 键可缓慢滚动.
  • 在滚动视图中, 使用上/下箭头键可小幅度滚动. 按住 Option 键可大幅度滚动, 按住 Command 键可滚动到开头或结尾.
  • 按住 Option 键并按下 Page Up/Page Down 键, 在滚动的同时移动光标.
  • 在将 Tab 键视为输入的文本字段中, 按 Control-TabControl-Shift-Tab 可将焦点移动到上一个或下一个控件.
  • 将指针悬停在单词上时, 按 ⌃⌘D 可查看该单词的内联词典定义.
  • ⌃F6 将焦点移动到浮动窗口.
  • 要快速查找文本, 选择一些文本, 然后按 ⌘E, 再按 ⌘G.
  • ⌃⌫ 仅删除前一个字符的重音符号(例如, é 将变为 e).
  • 在" 字体" 窗口中, 输入 *X 可缩放当前字体大小, 例如 *1.5.
  • 输入文本时, 按 ⌥⇧K(在美国键盘上)可插入 Apple 标志.
  • 按住 Command 键并拖动画中画 (PiP) 视频播放器, 可将其移动到任意位置, 而无需使其吸附到屏幕角落.

屏幕截图

进入阅读→

在CIDER中JavaDoc的的显示

翻译自cider作者Bozhidar Batsov的文章

正文

长期以来, 在CIDER中处理Java源码一直是个痛点. 这个问题很大程度上源于cider在早期设计中决定只在classpath路径中查找Java源码–当时以为这是最简单的实现方式.

进入阅读→

Rx.NET介绍第三部分: 从理论到实践

本书的第一部分着重介绍了响应式扩展(Rx)的基本理念和类型. 在第二部分, 展示了 Rx 所提供的操作符, 这些操作符使能够定义想要应用于源数据的转换和计算. 这第二部分本质上属于函数式编程.

Rx 的操作符大多类似于数学函数, 也就是说, 对于特定的输入, 它们的行为方式总是保持一致.

它们不受周围世界状态的影响, 也不会对其状态做出任何改变. 在函数式编程中, 这类机制有时被描述为"纯"的.

进入阅读→

Rx.NET介绍第二部分: 从单一事件,到整体洞察

当今时代, 数据以惊人的速度被创建, 存储和传播, 处理这些数据就像试图直接从高压水枪中喝水一样令人应接不暇.

为了从数据中获得整体洞察, 我们需要实时确定数据的相关性, 对数据进行分组处理, 并将其作为一个整体来分析, 以发现从单个原始输入中可能无法察觉的模式或其他信息.

用户, 分析人员和管理人员需要处理比以往更多的数据, 同时还要提供更高的性能和更有价值的输出.

进入阅读→

AI标准问答模板

BUG 问题标题

问题描述

  • 清晰描述Bug的现象
  • 预期行为 vs 实际行为
进入阅读→

sqlite疯狂的有趣的一些事实

本文翻译自slqite的一些事实

事实

  1. SQLite是部署和使用最广泛的数据库. 目前有超过一万亿(1000000000000)个SQLite数据库在活跃使用.

    全球人均100多个...

    它由三个人维护, 且不接受外部贡献.

  2. SQLite的使用量可能超过所有其他数据库引擎的总和.

    数十亿份SQLite副本存在于世界各地, 无处不在.

  3. 它也可能是部署最多的前五大软件模块之一.

  4. Hwaci是SQLite背后的公司. 他们似乎还对音乐感兴趣???.

  5. SQLite起源于一艘美国军舰.

    D. Richard Hipp(DRH)在为美国海军驱逐舰USS Oscar Austin开发软件时, 发现现有软件在服务器宕机时会停止工作(这是在2000年代).

    对于一艘战舰来说, 这是不可接受的. 于是DRH提出了一个问题: 如果数据库不需要服务器就能运行会怎样? 这在当时是一个创新的想法.

  6. 比开源更开源(版权在公共领域, 或者说完全开放版权).

    SQLite在法律意义上不是开源的, 因为"开源" 有特定的定义, 并且需要获得开源倡议(OSI)批准的许可证.

    相反, SQLite属于公共领域, 这意味着它比任何开源许可证的限制都更少.

  7. 他们不接受外部贡献. 你不能简单地提交一个拉取请求并期望补丁被接受.

  8. 不是谁都能贡献代码.

    贡献SQLite是邀请制的(我没有具体来源). 只有在你被邀请并签署了一份将你的贡献奉献给公共领域的宣誓书后, 你才能提交补丁.

  9. SQLite中每行代码对应超过600行的测试代码.

    测试覆盖了库中100%的分支(以及100%的MC/DC). 测试套件非常多样化, 包括模糊测试, 边界值测试, 回归测试, 以及模拟操作系统崩溃, 断电, I/O错误和内存不足的测试.

  10. 测试代码更加重要.

    有趣的是, 一些SQLite测试是专有的. 实现100%分支覆盖的测试套件TH3(Test Harness 3)是专有的, 不对外开放. 我不知道还有哪个项目将代码免费, 但测试套件收费. 然而, 他们一份TH3都没卖出去. DRH在一次播客中说: "100% MCD测试, 也就是TH3, 是专有的. 我原本以为我们可以把这些测试卖给航空电子制造商并以此赚钱. 但我们一份都没卖出去, 所以这个计划没成功. " 要获得访问权限, 需要加入SQLite联盟, 年费为12万美元.

  11. 这是一个有趣的商业模式. 通过付费支持, 维护服务, 联盟会员和商业扩展来创收.

  12. SQLite没有行为准则(CoC).

    采用了源自<圣本笃规则>第四章"善工工具" 的道德准则.

  13. 在SQLite中: 没有法律声明, 只有一句祝福:

  14. SQLite非常快, 甚至可以与系统调用 fopen 一争高下.

    在某些用例中, 使用SQLite代替文件系统可以快35%.

  15. SQLite vs Redis(猜猜哪个更快?)

    在某些用例中, 由于网络栈和(反)序列化开销, SQLite可能比Redis更快.

  16. 但与大多数数据库不同, SQLite采用单写模型. 你不能有多个并发写入者.

    这一情况在2010年通过引入WAL模式有所改变. 在此之前, 你只能有多个读取者或一个写入者, 但不能同时存在.

  17. 其他数据库中常见的功能在SQLite中并不常见:

    • 默认是回滚日志模式, 限制你只能有多个读取者或一个写入者
    • 外键是禁用的, 需要手动启用
    • 它是" 弱类型" 的. SQLite称之为" 类型亲和性" . 这意味着即使你定义了类型, 你也可以在列中插入任何内容. 强类型列需要手动启用.
    • 许多你期望在其他数据库中使用的ALTER命令在SQLite中不起作用. 例如, 你不能为现有列添加约束. (他们最近增加了重命名列名的功能)

    其他SQLite的怪癖.

  18. 我讨厌它没有类型. 完全是YOLO风格:

    CREATE TABLE user(id INTEGER);
    INSERT into user VALUES ("YOLO!"); --- 这居然能行!
    

    不仅如此, 如果你给出一个随机类型, 它也不会抛出任何错误.

    CREATE TABLE t(value TIMMYSTAMP);
    

    没有TIMMYSTAMP类型, 但SQLite愉快地接受了. 它有五种类型: NULL, INTEGER, REAL, TEXT, BLOB. 想知道更离谱的吗? 类型亲和性是通过子字符串匹配实现的!

    CREATE TABLE t(value SPONGEBLOB) --- 这是BLOB类型!
    
  19. 这是我最喜欢的轶事之一. 当用户开始在半夜给开发者打电话时, SQLite不得不将默认前缀从 sqlite_ 改为 etilqs_.

  20. SQLite非常重视向后兼容性

    SQLite 3的所有版本都可以读取和写入由最早的SQLite 3版本(3.0.0, 发布于2004年6月18日)创建的数据库文件.

    这就是"向后兼容性". 开发者承诺在未来所有SQLite 3版本中保持数据库文件格式的向后兼容性.

  21. 重视向后兼容性, 以至于即使他们发布了一个错误, 也不会修复它.

  22. SQLite的作者D. Richard Hipp(DRH)认为现有的版本控制系统不合适, 于是他编写了自己的版本控制系统, 名为Fossil. 当然, Fossil是由SQLite驱动的. 这让我想起了Linus编写Git的故事. DRH还编写了自己的解析器生成器, 名为Lemon.

  23. DRH基于Donald Knuth的<计算机程序设计艺术>(TAOCP)中的算法编写了B-Tree, 并在飞机上完成了编码(非常硬核).

  24. SQLite的发音是" Ess-Cue-El-Lite" . 虽然没有官方指南, 但DRH在SQLite论坛中提到:

    " 我编写了SQLite, 我认为它应该发音为' S-Q-L-ite' , 就像一种矿物. 但我对你们怎么发音都无所谓. :-)"

进入阅读→

及格线上的shell

了解以下内容, 在shell的世界应该能做到生活自理...

shell是古老的

有些老毛病...

进入阅读→

回顾十年前Stroustrup谈<C++的本质>的演讲

cpp

十年前Bjarne Stroustrup(C++ 语言发明者, 下文称BS)在苏格兰格拉斯哥和爱丁堡所作的一次演讲. 十年之后重看这个演讲, 还是有诸多感慨的.

BS在演讲中强调了 C++ 的核心特性及其在实际应用中的权衡, 包括资源管理, 面向对象编程和泛型编程.

进入阅读→

Clojure Luminus 嵌套事务

事务一般是针对数据库操作而言的. 事务一般用在管理同时出现的多处数据库增删改操作,以保证数据一致性. 嵌套事务,顾名思义就是事务出现了嵌套使用的情况. 本文首先说明了嵌套事务的各类情形,接着简单介绍了Clojure Luminus数据库相关组件,基于组件给出了嵌套事务处理的方案,并在最后附上了测试用代码.

嵌套事务

  1. 嵌套事务常见情景:嵌套事务的位置
进入阅读→