Linux 开机无声音

开机后扬声器无声音

问题描述:个人笔记本电脑长久以来都有一个问题,开机之后扬声器没声音,从应用层看毫无问题,所有音乐视频照常播放,能调音量,就是没声音。必须插一下耳机,耳机里有声音。然后再拔出耳机,外部扬声器也有声音了。因此使用起来并无大碍,只需要准备一个耳机,开机之后插拔一下即可。

Linux 笔记本触摸板水平滚动问题

自打使用 linux 系统以来,触摸板这块的体验一只是个痛点:只支持基本的点击,双指垂直滚动。很久以来我就一直想要触摸板水平滚动的功能。今天终于实现了!

Synaptics

其实很久以前就照抄过一份xf86-input-synaptics驱动程序的触摸板配置:

使用 Yield 实现 Python 协程

考虑如下代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
def async_call(it, ret_list=None):
    try:
        value = ret_list[0] if ret_list and len(ret_list) == 1 else ret_list
        arg_list = it.send(value)
    except StopIteration:
        return

    if type(arg_list) in (list, tuple):
        imp_func, args = arg_list[0], list(arg_list[1:])
    else:
        imp_func, args = arg_list, []

    callback = lambda *cb_args: async_call(it, cb_args)
    imp_func(*args, callback=callback)

def make_async(func):
    def _wrapper(*args, **kwargs):
        async_call(func(*args, **kwargs))
    return _wrapper

def fd(_idx, callback):
    print("fd(%s, %s)" % (_idx, callback))
    # return 'EOF'
    callback('fd:%s' % _idx)

@make_async
def fb(_idx, callback):
    print("fb(%s, %s)" % (_idx, callback))
    ret = yield fd, _idx
    callback('fb:%s' % ret)

def fc(_idx, callback):
    print("fc(%s, %s)" % (_idx, callback))
    callback('fc:%s' % _idx)

@make_async
def fa(*args, **kwargs):
    print("fa(%s, %s)" % (args, kwargs))
    for idx in range(2):
        if idx % 2 == 0:
            f = fb
        else:
            f = fc
        ret = yield f, idx
        print("%sth iteration: ret in fa is %s" % (idx, ret))

if __name__ == '__main__':
    fa()

以上代码的运行结果为:

A point of python metaclass

Create class dynamically

Python doc says:

By default, classes are constructed using type(). The class body is executed in a new namespace and the class name is bound locally to the result of type(name, bases, namespace).

That’s means, a class statement is equivalent to the call of type method with three arguments:

  • name: name of the class
  • bases: tuple of the parent class (for inheritance, can be empty)
  • attrs: dictionary containing attributes names and values.

For example, the following classes are identical:

V3Ray 的配置笔记

学生时代曾为整个课题组的师生搭建过一个梯子,稳定运行两年多,最近突然爬不上去了。 寻思是哪里出了问题,经过一番定位,原来是之前的免费域名到期了。遂于昨晚开启修补 之旅,无奈运气不太好,每一环节都出了问题,最终搞到凌晨 3 点才重新爬上了梯子。

Python Iterables

Python 的迭代器(iterator)、生成器(generator)、可迭代对象(iterable),虽是老生常谈,但我毕竟要记录一下自己的见解,因有此篇。

Linux 的休眠

先区分一下两个名词:睡眠(sleep)和休眠(hibernate)。

  • 睡眠:将工作镜像写入内存(RAM),以便快速恢复。内存读写很快,所以睡眠的特点就是“睡得快”和“醒得快”。对于笔记本来说,合上盖子就睡了,打开盖子你的工作区间即刻就能恢复,很是方便。但是睡眠有一个缺点,就是要给内存供电,一旦断电,你的镜像数据就会丢失,工作区间将不复存在。当然这来自于内存的固有特点,建议百度 RAM。
  • 休眠:将工作镜像写入硬盘(disk,ROM),这样你也可以恢复工作区间。只是睡下去和醒过来的时间比内存慢不少。但是,它有一个好处就是断电了也不会丢失数据。当你再次开机,系统就会从硬盘里面读取镜像,恢复你的工作区间。

一个 really simple 的 LaTeX 宏包

众所周知,LaTeX 是一个高效易用的排版软件,基本上只要找到合适的模板,剩下的就只剩码字了。比起 MS Word,简直不知道高到哪里去。就拿最近写论文的事来说,我先用 TeX 码好字,然后要投的那个刊需要用 Word 提交。转格式转了我一下午带一晚上,太痛苦了。深刻的体会到什么叫自以为是,MS Word 自作聪明地给你调格式。当你敲下回车之后,天知道它又会自动帮你做些什么?!

Latexmk 基础用法

怎么想到用 latexmk 的呢?写论文呗!

本来呢,我一直习惯于使用命令行手敲

1
pdflatex someting.tex

千万别小看这种重复劳动,它不仅帮你加深记忆,还有最完整的输出,让你一窥 Tex 排版系统的内裤(→_→,一本正经胡说八道中……)。还记得 Archlinux 的哲学名言吗?–Keep it simple and stupid (KISS)–说得太对了呀!