工具 - webdancer's Blog

pages or is-programmer, it is a question

从今年7月份,我将blog由is-programmer平台转到了github的pages平台。转向pages的理由很简单,静态blog很简洁,再加上Scturtle写了一个静态blog生成器。但是用了一段时间以后,我还是决定再转回is-programmer。

什么是Pages?

根据github官方的介绍,github pages就是通过github发布的公共网页,可以自由的通过多种方式来发布网页。github官网对其的介绍:
Github Pages are public webpages freely hosted and easily published through our site. You can publish online using the Automatic Page Generator. If you prefer to work locally you can use the GitHub for Mac and Windows apps, or the command line.
的确Pages很简洁,而且你对你的内容与很大的控制权,不会担心博客内容会丢失。但是同时功能少,如果你想获得一个功能可能很繁琐,这时候会影响你书写内容。当然这很适合那些喜欢折腾的同学,但是我自己觉得这影响了我书写内容。

pages or is-programmer, it is a question

到底选择那个平台,仁者见仁,智者见智。不过,现阶段我还是选择is-programmer吧,这是我的菜。将来,谁知道?不过我的确喜新厌旧,呵呵。

 

ubuntu下安装与使用vim-latex suite

 
1、下载插件
从http://sourceforge.net/projects/vim-latex/files/下载vim-latex插件。
2、安装插件
  1. 解压下载的压缩包到~/.vim目录。
  2. 设置vimrc。详细参见:http://vim-latex.sourceforge.net/documentation/latex-suite/recommended-settings.html
  3. 安装help文件。helptags ~/.vim/doc
  4. 设置Vim-latex-suite。使用xelatex命令进行文档的编译,利用evince浏览生成的pdf文档。可以通过修改~/.vim/ftplugin/latex-suite/texrc完成这些操作。
#第88到92行,我进行了如下修改,就是让tex总是被编译成pdf

88 if has('macunix')

89 TexLet g:Tex_DefaultTargetFormat = 'pdf'

90 else

91 TexLet g:Tex_DefaultTargetFormat = 'pdf'

92 endif


#第117行修改,使用xelatex完成 tex -> pdf 的编译

114 " ways to generate pdf files. there are soo many...

115 " NOTE: pdflatex generates the same output as latex. therefore quickfix is

116 "       possible.

117 TexLet g:Tex_CompileRule_pdf = 'xelatex -interaction=nonstopmode $*'



修改147行,指定用evince程序打开pdf文档

144 elseif has('macunix')

145 " Let the system pick.  If you want, you can override the choice here.

146 TexLet g:Tex_ViewRule_ps = ''

147 TexLet g:Tex_ViewRule_pdf = 'evince
 
        5.重启vim。
 
 
==================================转========================================
1. 初用时需熟记的几个键:Ctrl-J,F5, F7,F9,Shift-F5,Shift-F7,\ll (compile快捷键),\lv(view pdf 快捷键),\ls,Ctrl-X Ctrl-K(根据字典补全) 等。
 
2.  写出\cite{ 后按 F9 无反应,没有给出交叉引用,原因在于vim中的Python接口对latex-suite来说有些问题,将其禁用即可。只需要将 ~/.vim/ftplugin/latex-suite/texrc 中默认的打开~/.vim/ftplugin/latex-suite/texrc,将
TexLet g:Tex_UsePython = 1
                         改为
TexLet g:Tex_UsePython = 0
                      就行了!
 
3. 为了能够正向搜索,应设定好参数并使用\ll编译,然而当工作目录下有makefile时,\ll并非执行设定的编译命令,而是执行makefile,于 是导致无法正向搜索,郁闷了半天。其实只要禁用makefile即可,同样~/.vim/ftplugin/latex-suite/texrc中
TexLet g:Tex_UseMakefile = 0
 
4. 正向搜索设置,在 ~/.vim/ftplugin/tex.vim 中指定
let g:Tex_CompileRule_dvi='latex -src-specials -interaction=nonstopmode $*'
说明上说还要设定  :TCTarget dvi ,可是没有设也行,反而把这句话写在上面文件中时运行vi会提示错误,但是在vi中执行该命令却可以,反正能用就不管它了。设定好了以后需重新编译tex文件(用\ll),然后\ls可以搜索并预览。
 
5. 反向搜索,参考了 http://bbs.ctex.org/viewthread.php?tid=39072&extra=&page=1
注意反向搜索仅支持gvim,且gvim要以远程模式启动:
gvim --servername latex-suite --remote-silent   filename.tex
启动后  为了能够使用反向搜索,必须让 xdvi 知道当前编辑器是工作在 remote 模式下的
VIM,以便在用户搜索的时候调用编辑器显示查找结果。在你的 ~/.vimrc 或~/.vim/ftplugin/tex.vim中添加以下内容:
let g:Tex_ViewRule_dvi="xdvi -editor 'gvim --servername latex-suite --remote-silent'"
这样便可\ll编译后\ls查看了,反向搜索时记住要按着Ctrl键双击某处 (似乎左键单击即可),就会跳到tex源文件的相应地方。
 
6.  为了方便,自己也做了一些设置,包括快捷键,在 ~/.vim/ftplugin/tex.vim 中:
map    <F4>   <ESC>:q<CR>      "F4关闭窗口(buffer)
map    <F2>   <ESC>:w<CR>\ll   "F2保存并编译
imap   <F2>   <ESC>:w<CR>\ll
map    <F3>   <ESC>\lv                  "F3查看
imap   <F3>   <ESC>\lv
nmap   <Tab>  <C-j>                    "用Tab键来代替Ctrl-j跳转,方便多了
imap   <Tab>  <C-j>
vmap   <Tab>  <C-j>
set keywordprg=:help         "按K键查找光标处单词的帮助,默认是man
cmap  xxx   !make                
set    iskeyword+=.,_       "便于fig.xx,prl101_12345等形式的搜索补全,否则默认情况下不把fig.xx当成一个词,而是当成fig和xx两个次,中间的“.”被当做词的分隔符了。
 
7. 其实只要  latex -src-specials -interaction=nonstopmode  xxx.tex
编译出的dvi文件,就已经包含了正向与反向搜索的信息,就可以正向或反向搜索,如果是用xdvi打开的话,按Ctrl左键单击便可反向搜索,只不过xdvi默认弹出的是 xterm -e vi 的窗口,其实是可以自己指定编辑器的,比如 
xdvi -editor gedit 
照样反向搜索,至于上面所加的gvim的参数只是保证不是每次反向搜索都要打开一个gvim窗口而已。
 
8. 临时取消快捷键定义,比如你想输入双引号,可是一打出"就自动变成``,那么要怎么禁止自动替换,直接输出"呢?
记住 <Ctrl-v> 即可!
<Ctrl-v>" 得到 "
SS<Ctrl-v>S 得到 SSS
~<Ctrl-v>~ 得到 ~~
 

系统迁移

话说在我的t60上跑win7还是有点吃力,感觉最近用的软件好像linux下几乎都有,干脆直接割掉win,转到linux单系统。反正实验有win7,如果需要就远程登录吧。

前期准备:

关注的问题主要有三个:数据;应用程序;linux发行版的选择
 
1.数据
怎么把自己的数据能够进行有效的迁移,进行的方式是云端+本地数据结合。迁移的主要数据类别为:
    >>书籍。自己保存的电子书,使用坚果铺子同步。
    >>文档。自己写的一些文档,使用坚果铺子同步。
    >>代码。自己写的代码和整理的代码库,使用git管理,github做代码仓库。
    >>音乐。自己下载的一些音乐,数量不是很大,主要是收藏音乐列表同步,使用坚果铺子。
    >>视频。不用转移,看过就删了。
    >>软件配置。
        >>vim的插件和vimrc。
        >>网络配置。ip,hosts等
 
2.程序
看看windows下面使用的程序在替代程序(软件顺序是按windows软件管理的排序)。
    >>utorrent -->> wine utorrent / utorrent server
    >>vim -->> vim
    >>ms office -->> libre office(兼容性问题,暂时没有好办法)
    >>adobe flash player -->> adobe flash player
    >>CAJViewer -->> 没有很好的替代软件,不过用处不大
    >>Ctex -->> texlive
    >>evernote -->> web evernote
    >>foxmail -->> thundbird
    >>git -->> git
    >>gnuplot -->>gnuplot
    >>chrome -->> chrome
    >>sun JDK -->> openJDK
    >>matlab -->>matlab
    >>VC -->> gcc
    >>firefox -->>firefox
    >>PDF-Viewer -->> 文档查看器
    >>PPTV -->> web pptv
    >>python -->> python
    >>R -->> R
    >>ting -->> web ting /weibo music
    >>xchat -->> xchat
    >>阿里旺旺 -->> web(这个也是不好办)
    >>坚果云 -->> 坚果云
    >>搜狗输入法 -->> ibus 拼音
    >>QQ -->> web QQ
    >>有道词典 -->> web 有道,星际霸王
    >>goagent-->> goagent
 
3.linux发行版和软件源
 
linux的发行版很多,这应该是你迁移到linux的动力,而不是阻碍。
我选择ubuntu 12.04,使用中科大的源。
 
转移遇到的问题
  1. 网络设置。不知道unbutu里面的network-manager-gnome怎么又抽风了,反正没能设置成功,删了。那只能手动设置interfaces和resolv.conf,气人的是ubuntu的dns设置更改了,那只能通过resolvconf工具来改了。
  2. vim。由于我的vim插件是直接从win拷过来的,很多插件提示,多余的M结尾符,通过set ff=unix解决。
  3. tex。在win下面,使用的是ctex,由于对中文支持较好,转到ubuntu下面,使用texlive,集成了xetex,加上vimlatex感觉够用了。
  4. 看球。由于以前在win下用pplive看球,现在只能上pptv.com上看了,不过有些节目不能直播,比较悲剧。不知道为什么不能看北邮的iptv,这点悲剧了。。。。

 

#转帖#版本控制入门简介

版本控制已经出现有些年头了。然而,我还是会被人问起一些,诸如版本控制是什么或者它是如何工作的,这样基础的问题。本文会概括地解释版本控制解决的重要问题,本文使用的场景针对的是源代码版本控制。

目前有很多不同类型的版本控制系统(Version Control System, VCS)。一些VCS,比如SubversionCVS,以中央仓库(repository)为中心进行架构。此外,还有分布式的VCS(Distributed VCS,DVCS), GitMercurial 是两个新近出现的DVCS。然而,在上述两种类型的环境中,通常会有一个“指定的”中央仓库。对应地,比如一个Subversion服务器或者一个GitHub仓库。下面会基于这个场景进行图示说明。那么让我们开始吧。

在开发者拷贝到本机之前,服务器需要创建一个仓库。创建初始仓库会由于产品不同而有所差别。从现在起,你所要知道的就是,在服务器上有一个初始空间。我把这个版本称作版本“A”。

现在,每个开发者(开发者1和开发者2)都会拷贝版本“A”到他们本地电脑。再一次地,从服务器拷贝的过程会由于产品不同采用的技术会有所差别。

每个开发者会在他们的本地拷贝上进行开发。他们的本地拷贝基于版本“A”。然而,由于他们应该不会做同样的开发,因而他们的版本会有所差别。因此,会有2个以上的版本会同时被创建,比如版本“B”和版本“C”。

开发者1首先完成了她的工作并提交到服务器。服务器上的当前版本被更新成版本“B”。

开发者2现在完成了他的工作并试图提交到服务器。然而,这是服务器告知他基于开发的版本已经发生改变。这也是为什么采取版本控制的首要原因之一。这个特性是对网络共享代码然后由开发者手动更新的一个跨越式发展,这确保了之前的编辑没有被新的修改覆盖。

开发者2必须首先获得所有版本“B”的变化,并合并到他的修改中,然后才可以提交到服务器。这个过程听起来有些复杂。然而,大多数现代的版本控制系统十分高级,能够自动在开发者的本地拷贝上完成合并。有几种情况会产生冲突(例如:开发者1和开发者2同时修改了同一个文件的同一行)。这就是一些VCS产品比其他更高级的地方。不论如何完成合并,现在开发者2在他们的本地系统上同时混合了版本B和版本C。

现在开发者2可以提交他的版本到服务器。

这是一个版本控制的基础。通过注意观察图中服务器的连线可以发现版本控制的原理。服务器记录了所有先前的版本包括发生的变化,什么时候发生以及由谁进行修改。当需要进行代码回溯或者引入其他bug时,这个记录能够解除困境。

我希望本文能够为版本控制系统提供一个基础的介绍。如果你有任何疑问,请就你问题发表评论。

archlinux入门--设置时钟

如果你的机器是windows7和arch双启动的系统,可能windows与arch时间上出现不同步的问题。这是由于windows与linux对待硬件时钟不一致,即每次操作系统启动时读取硬件时钟,计算系统时间的方法不一致。这里介绍两个概念,

      *硬件时钟是bois中的时间;

      *系统时间是操作系统kernel中的时间。

下面介绍操作系统计算出自身系统时间的两种方式:

      *把系统硬件时间当作本地时间(local time),即操作系统中显示的时间跟BIOS中显示的时间是一样的

      *把硬件时间当作 UTC,操作系统中显示的时间是硬件时间经过换算得来的

注:协调世界时,又称世界标准时间或世界协调时间,简称UTC,在中国大陆的本地时间比UTC快8小时,就会写作UTC+8。

有了以上基础,就可以设置windows7和arch3了,两个系统必须使用相同的方式,要么是UTC,要么是localtime。

1.windows 和arch 均采用UTC。

   arch设置:在/etc/rc.conf里面设置:

HARDWARECLOCK="UTC"
TIMEZONE="Shanghai/Asia"

 windows设置:新建chTimetoUTC.reg,输入以下内容,运行。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
     "RealTimeIsUniversal"=dword:00000001

然后,在bios里面设置正确的硬件时钟就okay了。

2.windows和arch均采用localtime设置。

   arch设置:在/etc/rc.conf里面设置:

HARDWARECLOCK="UTC"
TIMEZONE="Shanghai/Asia"

  windows设置:windows默认采用,不用设置。

注:*RealTimeIsUniversal = 0 Windows使用本地时间。   *RealTimeIsUniversal = 1 Windows使用UTC时间。

选择使用那种设置,取决于我们自己,在arch wiki里面建议使用UTC,对localtime的描述为:

Warning: 使用 localtime 将导致很多已知的不可修复的BUG.尽管,没有计划放弃对localtime的支持。

我自己的观点是:在系统安装时选择localtime会省去很多的麻烦。

参考:

【1】http://forum.ubuntu.org.cn/viewtopic.php?t=256151

【2】http://space.itpub.net/23137730/viewspace-661609

【3】https://wiki.archlinux.org/index.php/Beginners%27_Guide/Preface

archlinux入门--软件管理

ABS:arch build system , a port-like system.
ABS-----------|ABS tree           :ABS的目录结构
                     |PKGBUILDS    :bash脚本,包含了软件代码的URL
                     |makepkg          :根据PKGBUILDS,产生二进制的安装包pkg.tar.gz
                     |pacman            :   包管理
                     |AUR                 :用户软件仓库
1.ABS的安装
   #pacman -S abs
2.ABS的配置
   #vim /etc/abs.conf
3.建ABS tree
   #abs
4.建build目录
 $mkdir -p $HMOE/abs
5.ABS方式编译软件, 举例,安装gksu为例

复制port 到Build目录

$ sudo cp -r /var/abs/extra/gksu ~/abs

写PKGBUILD文件

$ vim PKGBUILD

产生可安装的二进制文件

$ makepkg -s

root安装产生的二进制文件

# pacman -U gksu-2.0.2-3-i686.pkg.tar.xz

------------------------------------------------------------------------------------------------------------------------

pacman : arch的包管理软件。
配置位置:/etc/pacman.conf
使用:
1.安装
   # pacman -S package_name1 package_name2 …
2.卸载
  # pacman -R package_name
3.升级软件包
  # pacman -Syu
4.查询
从库查询软件:     $ pacman -Ss string1 string2 …
从本地查询软件:  pacman -Qs string1 string2 …
5.安装本地包
   # pacman -U /path/to/package/package_name-version.pkg.tar.xz
详细的使用说明:man pacman

------------------------------------------------------------------------------------------------------------------------

yaourt:是pacman的一个外壳,而且支持AUR。

yaourt的使用与pacman的用法基本相同。

archlinux入门--安装

        archlinux的详细安装过程,在这里就不赘述了,在https://wiki.archlinux.org/index.php/Beginners%27_Guide有详细的描述,在这里记录一下自己安装过程出现的问题。

1.我使用的U 盘安装,使用了×nix的方式:
# dd if=archlinux-2010.05-{core|netinstall}-{i686|x86_64|dual}.iso of=/dev/sdx
要注意:是sdx,而不是sdx1.[wiki中特别提到]。当时看着手机,漏了一些文字。

2.安装过程中的分区。
根据不同的用户机器情况,分区也不不同。wiki中提到了四种方式,特别注意:
Warning: 磁盘分区会毁掉原分区内的数据。强烈建议先备份重要的数据
我使用了第三种方式,由于原来的分区是安装fedora的,我还以为只是简单的把分区挂到对应的目录。没想到都给我格式化了,所以分区要注意,避免自己的数据遗失。

3.安装grub。

由于以前安装的fedora没有卸载,在fedora上覆盖安装arch,发现grub没有正确的安装。建议先保存文件,格式化一下分区,这样应该不容易出问题。如果因为因为没有正确的安装grub,导致grub无法引导系统启动,可参考https://wiki.archlinux.org/index.php/Grub,应该可以修复。

在安装arch的过程中出现了上面的问题,其中(2)影响最大,导致我在暑假的时候做的很多东西都没了;(3)顺道学了一下grub的知识。只要仔细的阅读文档,安装arch并不是很困难,不要想我这种小白犯了这么多错。

4.安装显卡。
机子是N卡,我安装了nvidia的私有驱动。https://wiki.archlinux.org/index.php/Nvidia。过程并不困难,可以直接用pacman安装。

5.gnome3安装。
在这里,犯了一个很fool的错误:以为只安装gnome-exra就好了。唉!没有安装gnome软件包,导致gnome启动不了,郁闷了很久。

6.日期和时间设置。

选择UTC还是localtime呢?推荐UTC,还是要仔细的设置一下,我设置成了UTC,但是在双系统下时间并不同步呀。

7.安装networkmanager,yaourt
参考英文wiki
 

git基础

      一、构建git仓库。

有两种取得 Git 项目仓库的方法。第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库。第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来。下面尝试第一种方法:

在项目目录下:

git init

     二、构建更新到仓库。


1.查看状态:

git status

刚新建的仓库是没有任何文件被跟踪的:

# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#	__init__.py
#	__init__.pyc
#	apache/
#	bookmark_base/
#	manage.py
#	media/
#	settings.py
#	settings.pyc
#	template/
#	urls.py
#	urls.pyc
nothing added to commit but untracked files present (use "git add" to track)

2.跟踪新文件

git add  XXX

3.提交

git commit -m ""

       三、远程仓库。

git remote add origin git@github.com:username/Hello-World.git
git push origin master

文章来源:《pro git》作者:Scott Chacon
 




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee