Beamer
Simple Overlay
Use \pause
command.
Overlay Specification
\somecommand<overlay specification>[optional argument]{arguments}
overlay specification
= 1-3 (range), 5 (number), -3 (same as 1-3), 1- (from 1 on), …
Commands with Overlay Specifications
if <o.s.>
appears twice, it can be put at either place.
<text>
can even be a command, like \draw (0,0) -- (1,0);
only<o.s.>{text}<o.s.>
insert the text only in specified slides, for other slides, it takes up no space (throw text away).
item<o.s.>{text}<o.s.>
show the text in a list environment in the specified slides.
alt<o.s.>{default text}{alternative text}<o.s.>
display the default text in specified slides, otherwise show the alternative text.
temporal<o.s.>{before slide text}{default text}{after text}
alternate between three different texts.
visible<o.s.>{text}
only shown in specified slides, otherwise it doesn’t show up completely.
uncover<o.s.>{text}
compared to visible
, in unspecified slides the text can be transparent.
onslide
vim 配置
在 MinGW 中改变字体
在 how-do-you-configure-msyss-default-size-color-and-font 中提到,最简单的方法就是在窗口上边框点击右键配置相关参数。 我使用的是 mintty,支持这样的配置方法。更复杂的是 RXVT,可能需要更改相应配置文件。
Statusline 的配置
statusline 即 vim 窗口的状态栏,在命令栏的上方编辑区的下方。可以通过一行配置
|
|
注意,不能出现空格,如果想加入字面上的空格需要用反斜线转义。
也可以用多行带注释的方式
|
|
%t
和 %f
有区别,可以观察在 %f
下把焦点移到另一个 buffer 后发生什么变化。
making-statuslines-that-own 详细说明了配置要点,包括 %{...}
自定义内容,%-0{minwid}.{maxwid}{item}
的完全语法,%(...%)
将多个东西括起来等等。
Vimdiff
E97
vimdiff ( 包括 git mergetool、fugutive 的 :Gdiff ) 都需要可执行文件 diff 的支持。在 MinGW 中如果出现 E97,可参考 解决 E97 中的做法,简而言之使用 ln -s /usr/bin/diff /usr/share/vim/vim74diff
将 vim74diff 指向系统 diff。
diff 输出内容的解读可以参考 how to read diff。
Git Merge
回顾 git remote 和 git fetch 等命令可以看 git 远程操作。
如果在本地修改了一些配置文件,想更新软件主要版本,可以使用 git stash 来完成 merge 过程:
这时候会有冲突,使用 git mergetool 或者在 vim 中使用 fugitive 插件的 :Gdiff
均可。关于 fugitive 的使用可以观看 fugitive.vim视频介绍,git mergetool 的使用可以查看 vimdiff的说明。
arch
pacman
pacman有两个配置文件:/etc/pacman.conf
和/etc/pacman.d/mirrorlist
。前者指定根据什么来更新,通常是用后者。mirrorlist文件保存了一系列镜像地址,在进行pacman -Syu
时根据选择的镜像来更新。
图形界面的安装
要使用图形界面,可以安装集成好的桌面环境(DE)如Gnome、KDE等,也可以自由搭配安装桌面环境中的各个组件。最重要的组件是window manager(wm)和display server。display server似乎只有Xorg和Wayland,大部分使用的是Xorg。我现在使用的wm是awesome。
安装Xorg
pacman -S xorg-server
安装awesome
pacman -S awesome
display manager常常被DE用来启动桌面环境以及管理用户登录,我们自行安装的wm也需要dm,不过也可以直接startx。
startx是xinit的前段或包装,主要启动x server和执行DE、WM(每个都是一个client)等等。~/.xserverrc
是startx用来启动x server的脚本。/etc/X11/xinit/xserverrc
是其系统版本。系统版本的图形界面会在一个新的virtual terminal启动,为了限制它在启动它的vt中,需要
#!/bin/sh
exec /usr/bin/Xorg -nolisten tcp “$@” vt$XDG_VTNR
.xinitrc
用来指定xinit启动的client。对应系统版本为/etc/X11/xinit/xinitrc
。要自定义这个文件,首先要copy系统版本再其基础上修改,因为需要执行其他一系列脚本。自定义结果为
exec语句是最后一句,因为exec会进行进程替换。其他client应该fork或在后台执行。
需要注意的是,awesome默认使用的是xterm,arch刚刚安装完是没有xterm的,会出现打开terminal没有反应。安装xterm即可。
要启动图形界面,直接startx。awesome有退出选项。
要在登录时自动执行X,使用bash在~/.bash_profile
中加入
[[ -z $DISPLAY && $XDG_VTNR -le 3 ]] && exec startx
这样vt1~vt3都可以自动执行X了。
还有在使用中切换DE/WM,暂时没用到。
网络相关
DNS服务器配置文件是/etc/resolv.conf
,host文件是/etc/hosts
,dhcp配置在/etc/dhcpcd.conf
(默认使用duid,如果无法联网可尝试clientid,血的教训/(ㄒoㄒ)/~~)。还有很多在/etc/netctl
中,比如静态ip等等。
Cassandra初探
Cassandra是一个去中心化的、高可靠性高可扩展性的、高吞吐率的分布式存储系统。它是由Facebook开发,论文发表在paper address上。这里给出这篇论文中描述的关键概念。
Data Model
表是一组索引到一组多维数据的映射,就像传统数据库一样。数据列被组织为column family,一个column family可以包括多个列,此时存取单列记为column_family : column。除此之外还有super column family,一个super column family可以包括多个column family,此时存取单列记为column_family : super_column : column。
API
三个简单的方法:
这里的columnName可以是column family中的column,可以是column family,可以是super column family,可以是super column中的column。
Partitioning
Partitioning就是将数据分布到不同节点的特性。通过将负载高节点的数据转移到低负载节点,可以提高系统的可扩展性。并且Cassandra支持增量式扩展(scale incrementally)。使用的核心技术是consistent hashing,节点随机分配到标识符环上,key都被hash到一个标识符(和节点的标识符属于同一个标识符空间)。key找到第一个满足标识符大于key的标识符的节点,这个节点是这个key的coordinator。对这个key的请求会被route到这个节点。节点的加入和离开只会影响邻居节点管制的key,容易增量式扩展。基本的consistent hashing带来两个问题,一个是数据负载可能不均衡(?),第二个是节点的性能可能存在差异。Cassandra的做法是分析负载信息,移动低负载节点的位置从而降低高负载节点的压力。
Replication
Cassandra使用复制提高可用性和持续性(availability and durability)。可以指定一个复制因子$N$,系统会将数据复制到$N$个不同的节点。Coordinator负责将数据复制到其他$N-1$个节点中。有几种复制策略选择:“Rack Unaware”会复制到coordinator后面的$N-1$个节点;“Rack Aware”和“Datacenter Aware”会利用Zookeeper选择出一个leader,leader指定数据的其他$N-1$replica位置,节点加入时leader告知它负责哪些range,并且leader维护一个不变式使得每个节点不作为超过$N-1$个range的replica。Cassandra借用Dynamo的说法,将负责某个range的那些节点称为range的“preference list”。
通过将每行数据复制到不同的data center(推测应该是Datacenter Aware策略的结果),Cassandra提供了持续性(durability)保障。这样即使整个data center failure都可以处理。
Membership
Cluster membership基于Scuttlebutt(我并不了解),Scuttlebutt是一个高效的anti-entropy Gossip based mechanism(并没有详细介绍)。Cassandra中gossip并不仅仅用于membership还被用来分发系统控制状态。
Cassandra使用修改版的$\Phi$ Accural Failure Detector来探测节点failure。这个failure detection module为每个节点释放一个$\Phi$值,这个值在一个量表中表征某个含义(含义略)。
Bootstrapping
节点在加入时随机选择一个标识符,这个映射会被存储到硬盘盒Zookeeper上。标识符信息会被gossip给cluster的所有节点,cluster的节点就可以知道标识符环的节点位置。节点bootstrap的加入需要初始contact points,Cassandra称之为seeds,通常由Zookeeper配置。
(Facebook相关)Facebook环境中节点会暂时断开但并不意味着永久离开,因此不需要partitioning的重新平衡和unreachable replica的repair。因此节点的加入和离开由人来控制,然而人可能犯错,因此一个Cassandra实例的消息都带有这个实例的名字。当人工操作失误时,操作将被制止。
TikZ
TikZ是什么
PGF/TikZ是用于绘制几何和代数的向量图形的语言,PGF是底层语言,TikZ则是基于PGF的宏高级语言。PGF/TikZ可以在$\LaTeX$、plain $\TeX$、和\ConTEXt中使用. 这里主要关注TikZ在$\LaTeX$中的用法。
TikZ基础
设置使用环境
|
|
构造直线
|
|
不要忘记表达式尾的分号。
构造长方形
|
|
增加一点风格
|
|
如果help lines
定义在全局,则在文档开头使用\tikzset
|
|
一个风格的定义可以引用另一个风格。如Karl's grid
引用了上面的help lines
|
|
hexo_install_config
title: hexo_install_config
date: 2016-05-22 20:13:53
categories:
- 工具
- hexo
tags:
经过两天折腾,hexo总算像模像样了。中间走了不少弯路,这里记录下来方便后来人。
安装hexo
首先建议安装git,因为在后面使用主题时会用到。在windows下可以使用git for windows代替,一路默认即可。
接下来下载安装node.js。从官网下载安装即可。
下面进入正题。安装hexo是极为简单的。
用node.js的包管理工具
npm
安装hexo:$ npm install -g hexo-cli
在目标文件夹
<folder>
中初始化hexo:\$ hexo init <folder>
\$ cd <folder>
$ npm install
配置hexo
安装容易配置难。hexo可配置的内容非常多,建议仔细阅读hexo官方docs,当然也可以按照我的顺序来挂了我可不负责哟。这里暂不涉及hexo主题,hexo主题放在下一节。以下内容分别为
- hexo的目录结构
- 作者信息相关配置
- git部署
- mathjax支持
- 流程图支持
jensen_inequality
凸函数与凹函数
凸函数convex function
形象地说两头往上翘,中间往下沉。凹函数concave function
恰好相反,两头往下沉,中间往上翘。下图是一个凸函数
凸函数的定义在某些国内教材中和Wiki中的含义不一,注意区分。