Dual Boot - linux pc机上安装win10

一般来说,制作双系统pc时,在linux pc上安装windows是一种不明智的行为。但是,有些时候迫于无奈,我们也会遇到这种情况,~~真是糟糕~~。本文记载我遇到的两种不同启动系统时的解决方式。

BIOS Systems

  1. 为win10腾出空间
  2. 安装win10
  3. 挂载/boot目录或分区
  4. 安装引导程序(GRUB)

Install Opencv with python3 on MacOS

首先 tap homebrew/science

1
brew tap homebrew/science

The tap command allows Homebrew to tap into another repository of formulae. Once you've done this you've expanded your options of installable software.

These additional Git repos (inside usr/local/Library/Taps) describe sets of package formulae that are available for installation.

homebrew/science 中有两个版本的 opencv,分别是 opencvopencv3 。一个是 stable 2.4.13.2 版本的,另一个是 stable 3.2.0 版本的,你可以通过 brew info 命令查看它们的具体信息。

解决 Django model 的 field 的 default 没生成到sql语句中的问题

本文适用于 python3Django (1.10.5)

在一个app的model中,为 Field 设定 default 关键字参数后,由Django生成的创建相应table的sql语句中,并没有如愿地包含default描述。

比如,

在app的model.py文件中包含:

1
2
class Test(models.Model):
price = models.IntegerField(default=0)

运行 ./manage.py makemigrations && ./manage.py sqlmigrate ... 后,Django 生成下列 SQL:

1
2
3
4
CREATE TABLE `test` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`price` integer NOT NULL
);

解决方案,改动django源码:

Django websocket

Django Websocket

Django isn't supported websockt by default!

在十几年前,网站并不复杂,绝大部分网页都是静态页面。以数据库为后端、mvc架构的web应用是夺人眼球的事物,但是现在,依靠ajax获得全部相关数据的单页面web应用也已经随处可见。当然,随处可见的还有依靠websocket实现的实时的web应用。

Django 作为有十几年年龄的web框架,它的内核是基于简单的请求-响应概念建成的:浏览器发出一个请求,Django 接收到后调用一个相应的 view 函数,该函数会返回一段响应数据,然后 Django 将这段数据发送回浏览器。

这不适用于WebSockets!view 仅存在于单个请求的生命周期,并没有机制去处理 打开一个连接发送数据给没有相关联的特定的一个客户端

[翻译] Go Walkthrough: io package

原文

Go 是一种被设计为处理bytes数据的编程语言。无论你拥有的是bytes数组,bytes数据流,或者是单个byte,Go 使它易于处理。自那些简洁的原语,我们构建我们的抽象概念和服务。

io 包是标准库中最基础的包之一。它为处理bytes数据流提供了一个接口和辅助函数的集合。

Reading bytes

当处理bytes时,有两个基础的操作:reading 和 writing。让我们先看一下读取bytes。

Reader interface

为从数据流中读取bytes的基础结构是 Reader 接口:

1
2
3
type Reader interface {
Read(p []byte) (n int, err error)
}

这个接口的实现遍及标准库,从 network connectionsfiles, 再到 wrappers for in-memory slices

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

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

1
2
3
4
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:

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

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

1
$ 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的函数调用栈上某个函数的源码所处在的文件位置及其行号

1
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的功能才逐渐强健起来。