debian软件源source.list文件格式说明

在安装完debian操作系统之后大家做的第一件事大概就是修改source.list文件了吧,否则你是无法在线更新软件的,那么source.list文件中的各个配置项的具体含义你搞懂了么?下面就以我的source.list文件为例为大家讲解一下。

deb http://mirrors.163.com/debian/ wheezy main non-free contrib
deb http://mirrors.163.com/debian/ wheezy-proposed-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ wheezy main non-free contrib
deb-src http://mirrors.163.com/debian/ wheezy-proposed-updates main non-free contrib

其中可以把每一行分为四个部分,说白了,当你在线更新某个软件时,debian就是遵照这四个选项(准确的说是后三项)的指示找到软件来给你安装的:

deb ftp地址 版本代号 限定词
deb http://mirrors.163.com/debian/ wheezy main non-free contrib

其中,

单播,组播(多播),广播以及任播

单播(unicast): 是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用单播传输,例如一切基于TCP的协议。

组播(multicast): 也叫多播, 多点广播或群播。 指把信息同时传递给一组目的地址。它使用策略是最高效的,因为消息在每条网络链路上只需传递一次,而且只有在链路分叉的时候,消息才会被复制。

广播(broadcast): 是指封包在计算机网络中传输时,目的地址为网络中所有设备的一种传输方式。实际上,这里所说的“所有设备”也是限定在一个范围之中,称为“广播域”。

任播(anycast): 是一种网络寻址和路由的策略,使得资料可以根据路由拓朴来决定送到“最近”或“最好”的目的地。

在Linux运行ifconfig, 如果网卡信息中包含UP BROADCAST RUNNING MULTICAST,则支持广播和组播。

Detail Introduction

(来自维基百科)

  • 单播:

merge and rebase, fetch and pull

git 有些指令功能相似,但其中却有着很大的区别

merge and rebase

比方说,有以下情况的git repository:

rebase1.png

在这里,你可以用 pull 命令把 origin 分支上的修改拉下来并且和你的修改合并; 结果看起来就像一个新的"合并的提交"(merge commit):

rebase2.png

但是,如果你想让 mywork 分支历史看起来像没有经过任何合并一样,你也许可以用 `git rebase`:

$ git checkout mywork
$ git rebase origin

runtime.Caller

Caller reports file and line number information about function invocations on the calling goroutine's stack. The argument skip is the number of stack frames to ascend, with 0 identifying the caller of Caller. The return values report the program counter, file name, and line number within the file of the corresponding call. The boolean ok is false if it was not possible to recover the information.

Caller 返回在goroutine的函数调用栈上某个函数的源码所处在的文件位置及其行号

func Caller(skip int) (pc uintptr, file string, line int, ok bool)

skip为相对于Caller函数的位置,它用来在goroutine函数调用栈上定位目标函数 pc为 program counter

my_vim_grouping

算算日子我已经用了两年vim了,在这两年间它在我手中近乎每半个月就发生一次变化,或巨大或微小。vim就像一坛酒,我一直酿着它,馋时抿一口,渴时喝两口,到了今日它的味道已经越来越香醇,也更加适合我的口味。

想想也觉得有趣,当初只是为了提升逼格才使用vim学习vim,而现在我已经完全无法适应别的编辑器了。理由?理由有很多,有一个理由每当我接触到一个现代化的IDE或编辑器时都提到:

要用鼠标切换光标真的好麻烦

所谓第一印象就很差。也只有emacs这类老牌编辑器才能留住我的进一步尝试的欲望了。

最初的vim配置全部都是从网上他人的blog中抄来的,不知道语句的语法,也不知道语句的效果,一股脑地拉到vimrc,如此一来初步美化了我的vim的GUI,然而功能方面还是和最初时差不多,一点都体验不出有什么比其他编辑器好的地方。直到,我在github上发现了vim的plugin管理器( 我用的是 Vundle ), 我的vim的功能才逐渐强健起来。

vagrant 是坑...

如果自己重头开始建一个 base box,在为支持 vagrant 必要步骤即为:

mkdir ~/.ssh/
cd ~/.ssh

wget http://github.com/mitchellh/vagrant/raw/master/keys/vagrant
wget http://github.com/mitchellh/vagrant/raw/master/keys/vagrant.pub

mv vagrant.pub authorized_keys

然而,如果根据已有的 base box ,在里面装一大堆乱七八糟的东西后,再把它打包,成一个新的 box ,按照官网上说的,也很简单:

cd ~/.ssh

rm authorized_keys
wget -O authorized_keys http://github.com/mitchellh/vagrant/raw/master/keys/vagrant.pub

然而,我得到的结果是:

我感觉我的审美变了

今晚,我再一次将我的图库整理了一遍,去除低劣的卖萌,卖肉,卖腐,卖泪,将更加精粹的更符合我现在口味的图留了下来。

(或许,被我去除的图并不低劣,但是啊,这毕竟是我的图库,一个随着我的审美变化而变化的图库,……所以,被我舍弃的图啊,请原谅我吧~)

就拿单人物肖像画来举例:

最初,我喜欢简单大方

{<1>}

147

Python Path

大家都懂 python 模块搜索路径优先级为:

  1. 在当前目录下搜索该模块。
  2. 在环境变量 PYTHONPATH 中搜索。
  3. 在 python 安装路径中搜索。

然而,第一条其实很含糊,尤其是对类似学过模块管理功能先进的 nodejs 党的人来说。

先举个栗子:

#dir map
/project
|------ main.py
|------ /lib&lt;/p&gt;
        |------ __init__.py
        |------ ex1.py
        |------ ex2.py

main.py 为可执行文件,要导入 ex1.py 。 而 ex1.py 依赖于 ex2.py ,所以 ex1.py 中需要导入 ex2.py 。那么问题来了,ex1.py 中该怎么写导入语句呢?

我是 nodejs 入门脚本语言的,所以第一反应是 :

import ex2

实例对象无法修改类变量的对象引用

class Example:
Call=0


print(Example.Call)
a = Example()
b = Example()
print(a.Call)
print(b.Call)

a.Call = 1
print(Example.Call)
print(a.Call)
print(b.Call)

作为Example的实例,a修改类变量为1,我预期是 在使得Example.Call变幻时,同时使b.Call也发生变化。

然而, 结果是:

0
0
0
0
1
0

Example.Call 与 b.Call 都没发生变化。可能的情况是 a.Call改变了对象引用 不与Example.Call引用同一对象,但这样的话 类成员就显得有些迷了, 比方说,我改变Example.Call的对象引用,b.Call不再与Example引用同一个对象, 那类成员不就失去了原来的意义,只能当是实例初始化时可供类修改的成员。

所以,我们还一个实验:

Archlinux Gnome3 环境下与fcitx的斗争

在 archlinux,无论是 fcitx 还是 ibus 配置都有点麻烦 (っ- ‸ – ς)

伟大的wiki给了我们非常好的指导

然而, 我还是在 fcitx 的安装配置上踩到了多个坑。

Start, 简单而又愉悦地根据 archwiki 上的指导, 安装 fcitx 与相应的辅助包:

sudo pacman -Rncd ibus
sudo pacman -S fcitx fcitx-configtool fcitx-im fcitx-qt5

在这里需要注意的也就是: 最好装上fcitx-im和fcitx-qt5, 除非你确认自己不需要

Then, 再次简单而又愉悦地根据 archwiki 上的指导, 修改 ~/.xprofile, 然后 reboot ( 这里主要是为了能够在 terminal 中使用 fcitx )

#at ~/.xprofile

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx