优化emacs的方法总结(新手向)

<2019-09-14>

开启debug

(setq debug-on-error t)

调整启动时垃圾回收的阀值

(setq gc-cons-threshold 402653184
      gc-cons-percentage 0.6)
(add-hook 'emacs-startup-hook
          (lambda ()
            (setq gc-cons-threshold 16777216
                  gc-cons-percentage 0.1
                  file-name-handler-alist nil)))

看看启动期间都干了什么

https://github.com/jschaf/esup
M-x package-install RET esup RET
M-x esup RET
稍等一会儿会显示详细的信息

使用use-package来自动加载

https://github.com/jwiegley/use-package

(unless (or package-archive-contents (package-installed-p 'use-package))
  (package-refresh-contents)
  (package-install 'use-package))

有些包特别有用,你希望可以很快就能使用它们,但是它们本身在Emacs启动过程中又不是必须的,可以使用defer来延迟加载, 例如

(use-package recentf
  :defer 1) ;;空闲一秒后加载

使用mode建立内部的延迟绑定

(use-package rust-mode
  :mode "\\.rs\\") ;;打开后缀名为rs的文件后加载

按下相应快捷键加载可以使用bind

(use-package magit
  :bind ("C-x g" . magit-status)) ;;按下相应快捷键后

禁用package-initialize 手动去填充path

这个path就是第一次安装的时候把所有的path缓存起来 ,第二次就跳过一些初始化的设置 ,直接加载 ,Emacs启动时间不少都花费在package-initialize上
可以看看这来两个
https://github.com/honmaple/emacs-maple-package
https://github.com/hlissner/doom-emacs

定位卡顿问题

例如我在编辑某个文件的时候特别卡,想要快速定位问题可以
M-x profiler-start
之后emacs会提示你检测内存还是cup ,选择好后可以执行一遍之前感到卡顿的那个操作 ,之后可以
M-x profiler-report
emacs 会显示出内存和cpu的统计数据 ,然后调整占用cpu和内存占用比较高的就行

TODO 加载顺序

可以把theme之类的放到前面加载 ,可以造成加载速度变快的错觉 (大雾
关闭工具栏 ,滚动条 ,菜单栏也会影响一点启动速度 ,这是因为它们会先加载出来然后再关闭 …

(tool-bar-mode 0)               ;;关闭工具栏
(scroll-bar-mode 0)             ;;关闭滚动条
(menu-bar-mode 0)               ;;菜单栏

emacs27 多了个xx.el 好像可以解决这个问题 ,待补充

emacs c/s 模式

启动emacs daemon

systemctl --user enable emacs.service

运行 emacsclient -n -c 就能连接上emacs daemon (不太喜欢这种 …)

补番计划

<2019-09-10>

DONE 魔法少女小圆

  • 超治愈嗷qwq,超喜欢红毛嗷.爱的战士虚渊玄原来是这么来的

https://www.bilibili.com/ba…

BUG! 樱花庄的宠物女孩

  • 已经看过辣,但是想在看一遍 :)

BUG! 反叛的鲁鲁修

  • 已经看过辣,但是想在看一遍 :)

BUG! 命运石之门

  • 已经看过辣,但是想在看一遍 :)

gorm 基本使用

:Go:
<2019-09-10>

连接数据库

var db *gorm.DB
func initdb() *gorm.DB {
        db, err := gorm.Open("mysql", "user:pwd@network(addr:port)/dbname?charset=utf8&parseTime=True&loc=Local")
        if err == nil {
                db.SingularTable(true) //取消复数形式
                return db
        } else {
                panic(err)
                return nil
        }
}
func main() {
        db = initdb()
        defer db.Close()
}

debug or error

调试单个操作,显示此操作的详细日志

db.Debug().Create(&user)

错误处理

if err := db.Create(&user).Error; err != nil {
        fmt.Println(err)
}

curd

func Createdb() {
        user := User{Username: "bob", Password: "12112121"}
        db.Create(&user)
}
func Deletedb() {
        user := User{Username: "aaa", Password: "asdsad"}
        db.Delete(&user)
}
func Updatedb() {
        db.Model(&User{}).Where("id = ?", 5).Update("username", "aaaaa")
}
func Querydb() {
        user := User{}
        db.First(&user).Where("id = ?", 5)
        fmt.Println(user)
}

CGO_ENABLED=0 go build -a -ldflags '-extldflags "-static"' .

rustup or cargo note

<2019-09-07>

rustup 基础使用

检查default

rustup show

查看toolchain

rustup toolchain list

切换版本

rustup default version

cargo 基础使用

创建项目

创建项目

cargo new project_name --bin

项目目录

projectname/src/main.rs / lib.rs //源文件 projectname/Cargo.toml //Cargo配置文件

Cargo.toml

Cargo.toml

[package]                   // 表明下面的语句用来配置一个包
name = "project_name"       // 项目名
version = "0.0.1"           // 版本
authors = ["Your name <you@example.com>"] // 作者
[dependencies]              // 依赖 (如果有)
rand = “^0.3.0”             // 依赖的外部包装箱,以及其需要版本

编译

debug 方式编译

cargo build

最终版本

cargo build --release

静态编译

安装MUSL

rustup target add x86_64-unknown-linux-musl
//或
rustup target add x86_64-unknown-linux-musl --toolchain=nightly

编译

cargo build --release --target=x86_64-unknown-linux-musl

Emacs 趣事 happy hacking

<2019-08-28>

在emacs中下五子棋再也不会被嘲讽了

evil

Evil is an extensible vi layer for Emacs. It emulates the main features of Vim, and provides facilities for writing custom extensions.
emacs里想用modal editing,emacser会给你推荐evil。vim里想用emacs binding,vimer会觉得你是不是疯了 :)
嗯 emacs 一定不VI好用,毕竟VI不能变成EMACS 2333

This file is a part of gnu emacs

开始的时候,emacs的auto-insert template里有句This file is a part of gnu emacs。然后大家都用起来了,许多人都懒得改。但是实际上只有GNU ELPA和emacs内置的package才能说自己是part of emacs,于是就有人手动把自己改成This file is NOT a part of GNU Emacs。 笑点类似「RMS感染了流感病毒,一周后流感病毒变成了GPL协议」这样的黑色幽默式的自嘲,总所周知FSF里的律师比程序员多 :rofl: 这个故事的结局是auto-insert template干脆把这行去掉了

Brings the restclient to vim!

熊十力痛骂徐复观[读书方法]

::
<2019-08-23>

1943 年,徐复观时任陆军少将,这一年他受到蒋介石的器重并成为高级幕僚。徐复观读到了 熊十力独创的新儒家哲学体系“新唯识论”,敬佩之情油然而生,遂萌发了从师之意。正好此 时,熊十力也在重庆梁漱泯先生主持的勉仁书院教书。徐复观便试着写了一封信,表示了仰 慕之情。不几天,熊十力便给他回了信。熊十力说到后生对前辈要有礼貌,批评徐复观来信 字迹潦草,诚意不足。徐复观立即去信道歉。经过几次通信后,熊十力约徐复观来书院面谈。

徐复观第一次去见熊十力,是身着陆军少将军服。徐复观向熊十力请教该读点什么书,熊十 力向他推荐了王夫之的《读通鉴论》。徐复观说这本书早已读过了。熊十力面露不悦之色, 说你并没有读懂,应该再读。

过了一段时间,徐复观再见熊十力,报告《读通鉴论》已经读完。熊十力让他谈谈心得,徐 复观就谈了许多对王夫之的批评。

熊十力还未听完就开始破口大骂:你这个东西,怎么会读得进书!任何书的内容,都是有好 的地方,也有坏的地方。你为什么不先看出他的好的地方,却专门去挑坏的;这样读书,就 是读了百部千部,你会受到书的什么益处?读书是要先看出他的好处,再批评他的坏处,这 才像吃东西一样,经过消化而摄取了营养。譬如《读通鉴论》,某一段该是多么有意义,又 如某一段理解是如何深刻,你记得吗?你懂得吗?你这样读书,真太没有出息!

多年后,徐复观回忆到:这对于我是起死回生的一骂。恐怕对于一切聪明自负、但并没有走 进学问之门的青年人、中年人、老年人,都是起死回生的一骂!近年来,我每遇见觉得没有 什么书值得去读的人,便知道一定是以小聪明耽误一生的人。

Other posts