UP | HOME

我的软件清单

目录

子贡问为仁。子曰:“工欲善其事,必先利其器。居是邦也,事其大夫之贤者,友其士之仁者。”

– 《论语 . 魏灵公》


感谢自由软件,感谢 Richard Stallman 。本文软件根据字母顺序排列。


1 autohotkey   windows_autokey keystroke shortcut

1.1 用途

Windows平台目录层叠,鼠标点击的工作方式非常低效。比如,我要进入“我的电脑->E:-> work->inspur->FY17->project-plans”,要鼠标点击或键盘敲击回车多次。AutoHotkey 完美的解决了这个问题。

1.2 安装配置

AutoHotkey主页下载安装程序。安装后编写AutoHotkey脚本文件定制快捷键。文件名需要以 .ahk结尾。关于AutoHotkey脚本语法在安装目录下找帮助文件 AutoHotkey Help File

回到最初问题,按下Win+时直接进入FY17目录:

; Ctrl+Win+i goto directory
^#i::Run explorer.exe E:\work\inspur\FY17

按下Ctrl+Win+g时,用Google搜索剪贴板内容:

很多时候Google无法连通。可替换为Bing或Baidu:

使用Emacs的用户更希望交换Swap/Ctrl键位置:

完整配置参考我的GitHub项目system-config。Windows下的各种配置我维护在子目录 win-customize下,AutoHotkey脚本文件autohotkey.ahk。我的配置中有很多和安装 如见目录相关的内容,需要根据实际调整,比如mingw安装在E:盘时,需要修改PATH 环境变量。

一般在配置好之后更希望能够随机自启动。加入到用户的自启动菜单。一般在目录 C:\Users\%Username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

执行system-config/win-customize/add-autostart.cmd,添加所有自启动的条目。

2 TODO cygwin   unix_like_env

3 diff

4 emacs   editor os

Emacs不仅仅是一个相当好的编辑器,它是一个操作系统。请移步专题笔记《Emacs笔记》。

5 TODO fio   test performance block

FIO(Flexible I/O tester)是Linux下IO子系统和调度器的性能测试软件. 可以从 kernel scmGithub下载.

6 git   version_control

6.1 别名简化/alias

对于高频GIT用户,适度定义别名可提高效率和使用舒适度。

如下示例是几个简单的别名示例:

git config --global alias.c checkout
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.last 'log -1 HEAD'
git config --global alias.url 'ls-remote --get-url'

配置后需要移除的,使用–unset。例如: git config --unset --global alias.url

命令行BASH下用户,可以用bash alias进一步简化:

alias g=git
alias gco='git co'
alias gst='git st'
alias gurl='git url'

GitHub system-config common文件.gitignore和.bash_alias有我日常使用的别名清单。

6.2 代理设置/proxy config

GIT支持四种协议:本地协议(Local)、HTTP协议、SSH协议、GIT协议。具体细节参考 中文手册EN Manual

GFW管控可能导致网络访问异常,一般通过代理解决。GIT三种协议均支持透过代理访问。 一般个人代理使用HTTP居多(比如LanternGitHub Lantern),此处描述使用HTTP代理 时配置GIT三种协议代理的方法。

假定HTTP代理的URL是 http://127.0.0.1:49529/

6.2.1 使用connect进行代理转换

connect源码最初在BitBucket上,也可以从GitHub上 下载。Home有更多connect配置说明。mingw64执行 pacman -S mingw64/mingw-w64-x86_64-connect 直接安装。之后写两个简单的wrapper 脚本依次命名为.socks.proxy和.socks.ssh.proxy,置于HOME目录下:

#! /bin/bash
echo "[$(date)] proxy sock connect $@" >> ~/.socks.log
connect -H "127.0.0.1:49529" "$@"
#! /bin/bash
echo "[$(date)] proxy ssh $@" >> ~/.socks.log
ssh -o ProxyCommand="~/.socks.proxy %h %p" "$@"

6.2.2 GIT协议代理

配置 git config core.gitProxy ~/.socks.proxy 启用代理。示例:

~$ git ls-remote --get-url
git://git.kernel.org/pub/scm/linux/kernel/git/axboe/fio.git
~$ git config core.gitProxy ~/.socks.proxy
~$ git fetch
~$ tail -1 ~/.socks.log
[Sat, Dec 16, 2017  10:42:10 AM] socks proxy git.kernel.org 9418

日志显示已经透过代理访问了。

设置时提供参数 --global 则全部GIT协议使用代理。在clone时使用代理,但又不设置 全局代理的,在clone时提供参数-c,此时不会进行SHELL正则变换,需要使用 $HOMEgit clone -c core.gitProxy=$HOME/.socks.proxy git://URI

6.2.3 SSH协议代理

配置 git config core.sshCommand ~/.socks.ssh.proxy 启用代理。示例:

~$ git config --get remote.origin.url
git@github.com:yygcode/ycc
~$ git config core.sshCommand ~/.socks.ssh.proxy
~$ git fetch
~$ tail -2 ~/.socks.log
[Sat, Dec 16, 2017  11:00:50 AM] proxy git ssh git@github.com git-upload-pack 'yygcode/ycc'
[Sat, Dec 16, 2017  11:00:50 AM] socks proxy github.com 22

--global 全局参数同样有效、clone时使用-c参数添加,同样要使用 $HOME 而不是 ~。 另外,export环境变量 GIT_SSH=~/.socks.ssh.proxy 也可设置SSH协议代理。

6.2.4 HTTP(S)代理

配置 git config http.proxy http://127.0.0.1:49529/ 。数据直接走代理,无法从.socks.log中获取信息。

6.2.5 指定域名代理设置

GIT支持指定域名代理设置,参见git-config

~$ git ls-remote --get-url
git://dpdk.org/dpdk
~$ git config --local core.gitProxy #comment: Result is empty
~$ git config --global core.gitProxy "$HOME/.socks.proxy for dpdk.org"
~$ git config core.gitProxy
/home/yanyg/.socks.proxy for dpdk.org
~$ tail -1 ~/.socks.log
[Sat, Dec 16, 2017  11:16:53 AM] socks proxy dpdk.org 9418

6.3 签署/Signature

GIT提供GPG签署验证提交是否来自可信来源。参考GIT手册-签署

如下是操作序列:

~$ gpg --list-key
# generate key if you don't have a key
~$ gpg --gen-key
gpg (GnuPG) 1.4.22; Copyright (C) 2015 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: yanyg
Email address: yygcode@gmail.com
Comment: Yanyg's Private Key for Sign
You selected this USER-ID:
    "yanyg (Yanyg's Private Key for Sign) <yygcode@gmail.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
....................+++++
+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
......+++++
....+++++
gpg: key 5119691E marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/5119691E 2017-12-16
      Key fingerprint = 6B65 DF67 5F20 C96D 1A8A  6C26 0EDC 325E 5119 691E
uid                  yanyg (Yanyg's Private Key for Sign) <yygcode@gmail.com>
sub   2048R/BE6D4AE9 2017-12-16

# export your public key to github or some position you need
~$ gpg --list-key
/home/yanyg/work/.gnupg/pubring.gpg
--------------------------
pub   2048R/5119691E 2017-12-16
uid                  yanyg (Yanyg's Private Key for Sign) <yygcode@gmail.com>
sub   2048R/BE6D4AE9 2017-12-16
~$ $ gpg --armor --export 5119691E
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQENBFo0cg8BCADAcAj7/ZbUAj1nosygefq5gHG+GCsry6AKc50yvy76DS+xQFk7
XyCdnKtB8daMkRECi0SriNGH02xRf3p32Bub7EUHPTxMV2++a42m8ACjMA5q9ghe
06Zn217JQgiOzi/9W9WArAag9xMDVPIAYwmMriX2BH3CaM5A5jPZLcHyfTIPndWJ
mMuu9+29wZZB4SxgtWOdqfIa4UC4/mo54l6RsrL2jXuHpiJJyh7/z5o9rzh89byn
...
=olfS
-----END PGP PUBLIC KEY BLOCK-----

# config git signature
~$ git config --global user.signingkey 5119691E
~$ git config --global commit.gpgSign true

7 gnupg

GnuPG(The GNU Privacy Guard)是一款用于文件加密、签名,满足IETF RFC4880定义。

GnuPG目前有两个版本gpg和gpg2。gpg用于服务器和嵌入式设备,gpg2用于桌面。gpg2提供 agent缓存密钥,首次输入密码后可以在一段时间内不用再次重复输入密码。

gpg4win是Window下的实现,支持图形界面。

8 kazam

Kazam是一款优秀的录屏软件。与screenkey搭配使用完成日常录屏:

SUPER-CTRL-Q - Quit
SUPER-CTRL-W - Show/Hide main window
SUPER-CTRL-R - Start Recording
SUPER-CTRL-F - Finish Recording

9 TODO latex   typesetting_system

10 mingw   gcc_env

Mingw(Minimalist GNU for Windows, Windows下极简GNU环境), 提供Windows下GNU软件 编译工具链。MSYS是其配套的命令行环境(基于cygwin实现的小巧玲珑的环境),现已被 MSYS2替代。MSYS2是基于现在cygwin(POSIX兼容层)的重现实现,提供与Windows更好的 互操作。安装配置参考MSYS2

11 msys2   distro_building_platform_win msys2 mingw

11.1 安装

MSYS2是Windows系统下的软件分发和构建平台, 提供类UNIX环境. 阅读MSYS2 WIKI获取更多信息.

下载64bit32bit版本, 安装后重复执行操作"启动, 运行\(pacman -Syuu\), 退出", 直到提示所有软件升级完毕:

yanyg@yanyg01 MINGW64 ~
$ pacman -Syuu
:: Synchronizing package databases...
 mingw32 is up to date
 mingw64 is up to date
 msys is up to date
:: Starting core system upgrade...
 there is nothing to do
:: Starting full system upgrade...
 there is nothing to do

执行\(pacman -Ss ..., pacman -R , pacman -Ql [name-pattern]\)搜索, 安装, 卸载, 清单列举 软件包. 参考Using Packages.

例如, 编译pdf-tools时提示错误缺少\(glib2.0, poppler\)等. 安装方式如下:

~$ ./configure
configure: loading site script /mingw64/etc/config.site
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
...
checking for poppler... no
configure: error: Package requirements (poppler) were not met:

No package 'poppler' found
~$ pacman -Ss poppler
mingw32/mingw-w64-i686-poppler 0.59.0-2
    PDF rendering library based on xpdf 3.0 (mingw-w64)
mingw32/mingw-w64-i686-poppler-data 0.4.8-1
    Encoding data for the poppler PDF rendering library
mingw32/mingw-w64-i686-poppler-qt4 0.36.0-1
    PDF rendering library based on xpdf 3.0 (mingw-w64)
mingw64/mingw-w64-x86_64-poppler 0.59.0-2
    PDF rendering library based on xpdf 3.0 (mingw-w64)
mingw64/mingw-w64-x86_64-poppler-data 0.4.8-1
    Encoding data for the poppler PDF rendering library
mingw64/mingw-w64-x86_64-poppler-qt4 0.36.0-1
    PDF rendering library based on xpdf 3.0 (mingw-w64)
~$ pacman -S mingw-w64-x86_64-poppler
resolving dependencies...
looking for conflicting packages...
warning: dependency cycle detected:
warning: mingw-w64-x86_64-harfbuzz will be installed before its mingw-w64-x86_64-freetype dependency

Packages (27) mingw-w64-x86_64-c-ares-1.13.0-3  mingw-w64-x86_64-cairo-1.15.6-2  mingw-w64-x86_64-curl-7.56.1-1  mingw-w64-x86_64-fontconfig-2.12.6-1  mingw-w64-x86_64-freetype-2.8.1-1
              mingw-w64-x86_64-graphite2-1.3.10-1  mingw-w64-x86_64-harfbuzz-1.7.1-1  mingw-w64-x86_64-icu-58.2-2  mingw-w64-x86_64-jansson-2.10-1  mingw-w64-x86_64-lcms2-2.8-1  mingw-w64-x86_64-libidn2-2.0.4-1
              mingw-w64-x86_64-libjpeg-turbo-1.5.2-1  mingw-w64-x86_64-libmetalink-0.1.3-3  mingw-w64-x86_64-libssh2-1.8.0-1  mingw-w64-x86_64-libtiff-4.0.8-1  mingw-w64-x86_64-libunistring-0.9.7-1
              mingw-w64-x86_64-lzo2-2.10-1  mingw-w64-x86_64-nghttp2-1.26.0-1  mingw-w64-x86_64-nspr-4.17-1  mingw-w64-x86_64-nss-3.33-1  mingw-w64-x86_64-openjpeg2-2.3.0-1  mingw-w64-x86_64-pixman-0.34.0-3
              mingw-w64-x86_64-poppler-data-0.4.8-1  mingw-w64-x86_64-spdylay-1.4.0-1  mingw-w64-x86_64-sqlite3-3.20.0-1  mingw-w64-x86_64-xz-5.2.3-1  mingw-w64-x86_64-poppler-0.59.0-2

Total Download Size:    29.74 MiB
Total Installed Size:  166.38 MiB

:: Proceed with installation? [Y/n] y
:: Retrieving packages...

11.2 Windows配置

Windows中文版本使用GBK编码,mingw使用UTF-8字符集,执行系统命令会显示乱码,修改 msys2使用GBK解决此问题。启动MSYS2 MINGW控制台,右键在Options->Text,修改Locale 为zh_CN,Character Set为GBK,完成后Save,Apply。执行locale相关信息已修改为中文:

$ locale
LANG=zh_CN.GBK@cjknarrow
LC_CTYPE="zh_CN.GBK@cjknarrow"
LC_NUMERIC="zh_CN.GBK@cjknarrow"
LC_TIME="zh_CN.GBK@cjknarrow"
LC_COLLATE="zh_CN.GBK@cjknarrow"
LC_MONETARY="zh_CN.GBK@cjknarrow"
LC_MESSAGES="zh_CN.GBK@cjknarrow"
LC_ALL=

此配置下各类命令的帮助都是中文的,部分帮助会有些许显示异常,但不会影响使用。如果 在bash初始化文件(~/.bashrc, ~/.bash_profile)将LANG修改为en_US.UTF-8,在显示 中文文件名时会有乱码,如果没有中文文件名则不会有问题。更完美的解决方案还未找到。

下面是中英文两种man的截取:

$ man man
...
默认将按预定的顺序查找所有可用的  ▒▒▒▒ (默认是“1 n l 8 3 0 2 5 4 9 6 7”,

$ LANG=en_US.UTF-8 man man
available sections following a pre-defined order ("1 n l 8 3 0 2 5 4 9 6 7" by default,

习惯于使用英文帮助的,设置LANG为en_US.UTF-8,连同经常使用的几个alias一起加入到 ~/.bash_profile。注意此时如果有中文文件名会显示乱码。

$ cat ~/.bash_profile
# WARNING: uncomment the below line if all files name are english.
# export LANG=en_US.UTF-8
export LS_COLORS='no=00:fi=00:di=015;37;44:ln=015;36:pi=40;33:so=015;35:do=015;35:bd=40;33;01:cd=40;33;01:or=015;05;37;41:mi=015;05;37;41:ex=015;32:*.cmd=015;32:*.exe=015;32:*.com=015;32:*.btm=015;32:*.bat=015;32:*.sh=015;32:*.csh=015;32:*.tar=015;31:*.tgz=015;31:*.arj=015;31:*.taz=015;31:*.lzh=015;31:*.zip=015;31:*.z=015;31:*.Z=015;31:*.gz=015;31:*.bz2=015;31:*.bz=015;31:*.tbz2=015;31:*.tz=015;31:*.deb=015;31:*.rpm=015;31:*.rar=015;31:*.ace=015;31:*.zoo=015;31:*.cpio=015;31:*.7z=015;31:*.rz=015;31:*.jpg=015;35:*.jpeg=015;35:*.gif=015;35:*.bmp=015;35:*.ppm=015;35:*.tga=015;35:*.xbm=015;35:*.xpm=015;35:*.tif=015;35:*.tiff=015;35:*.png=015;35:*.mng=015;35:*.xcf=015;35:*.pcx=015;35:*.mpg=015;35:*.mpeg=015;35:*.m2v=015;35:*.avi=015;35:*.mkv=015;35:*.ogm=015;35:*.mp4=015;35:*.m4v=015;35:*.mp4v=015;35:*.mov=015;35:*.qt=015;35:*.wmv=015;35:*.asf=015;35:*.rm=015;35:*.rmvb=015;35:*.flc=015;35:*.fli=015;35:*.gl=015;35:*.dl=015;35:*.pdf=00;32:*.ps=00;32:*.txt=00;32:*.patch=00;32:*.diff=00;32:*.log=00;32:*.tex=00;32:*.doc=00;32:*.mp3=015;32:*.wav=015;32:*.mid=015;32:*.midi=015;32:*.au=015;32:*.ogg=015;32:*.flac=015;32:*.aac=015;32:'
alias whence='type -a'                        # where, of a sort
alias grep='grep --color'                     # show differences in colour
alias egrep='egrep --color=auto'              # show differences in colour
alias fgrep='fgrep --color=auto'              # show differences in colour
alias l='ls --show-control-chars --color=auto'
alias la='ls -aF --show-control-chars --color=auto'
alias ll='ls -alF --show-control-chars --color=auto'
alias ls='ls --show-control-chars --color=auto'

12 pdf   Acrobat_reader Foxit

12.1 emacs pdf

  • 开始使用emacs pdf-tools/epdfinfo浏览pdf文档后,基本不使用其他的浏览工具了。 参见Emacs笔记了解更多技术细节。

12.2 使用技巧

  • Acrobat PDF超链接是一个经常使用的特性,在跳转后,使用Alt+Left Arrorw(Previous View)返回。

13 patch

14 screenkey

录制计算机演示视频时通常会希望记录按键。screenkey是Linux下使用过的最合适的一款。 GitHub Screenkey下载最新的screenkey,如下命令安装:

~$ sudo apt-get install python-gtk2 python-setuptools python-distutils-extra
~$ sudo ./setup.py install

15 sdcv   dictionary

SDCV是星际译王(Stardict)的命令行版本. 星际译王是一款跨平台的国际词典开源软件, 项目领导胡正先生, 开发人员Sergey<kubtek@gmail.com>, Evgeniy<dushistov@mail.ru>, Tao Wang<dancefire@gmail.com>, 贡献人员Alex Murygin <murygin@aitoc.com>. 因个人习惯只使其命令行版本. 感谢胡正.

SDCV源码在Github上, 在cygwin64下默认编译选项遇到\(popen/pclose\)未定义错误, 这是 由于\(popen\)不是ISO C++标准导致的. 修改编译参数\(-U__STRICT_ANSI__\)解决.

SDCV需要单独下载词典, 点击这里获取字典压缩包, 根据示例命令解压.

# Change to sdcv directory
~$ git show --oneline
51db56f (HEAD -> master, origin/master, origin/HEAD) Merge pull request #38 from nijel/master

~$ mkdir build -p
~$ cd build
~$ cmake -D CMAKE_CXX_FLAGS="-U__STRICT_ANSI__" -D CMAKE_INSTALL_PREFIX:PATH=/usr ..
~$ make
~$ make lang
~$ make install
~$ sdcv -v
Console version of Stardict, version 0.5.2
~$ mkdir -p /usr/share/stardict/dic
~$ tar -C /usr/share/stardict/dic -xvf ~/Downloads/stardict-langdao-ec-gb-2.4.2.tar.bz2
stardict-langdao-ec-gb-2.4.2/
stardict-langdao-ec-gb-2.4.2/langdao-ec-gb.dict.dz
stardict-langdao-ec-gb-2.4.2/langdao-ec-gb.idx
stardict-langdao-ec-gb-2.4.2/langdao-ec-gb.ifo
~$ sdcv 字典
Found 1 items, similar to 字典.
-->朗道汉英字典5.0
-->字典

dictionary; glossary; vocabulary; wordbook
【电】 dictionary
相关词组:
  活字典
  字典的
  字典集
~$ sdcv dictionary
Found 1 items, similar to dictionary.
-->朗道英汉字典5.0
-->dictionary

*['dikʃәnәri]
n. 字典, 词典
【计】 词典

我做了编译调整的版本在这里下载.

16 sharex   screencast screen_recording

ShareX是自由/开源软件, 基于.NET开发, 只能运行在Windows系统上. 支持截屏/录屏, 并 进行各种各样的分享. 界面支持多语言. WIKI知乎有介绍.

主页上可找到完整的介绍文档. 录屏配置主菜单位于:

  • 英文界面: Task settings->Capture->Screen recorder->Screen recorder options
  • 中文界面: 任务设置->截图->屏幕记录->屏幕录制选项

录屏使用ffmpeg实现, 菜单"录屏配置->FFmpeg路径"下点击…设置或下载FFmpeg. 默认 配置未包含音频, 在录屏配置菜单'音频源'中选择麦克风或适当的音频源.

默认热键=Shift+PrtSc=启动/停止录屏, 启动时拖曳鼠标修改录屏区域. 点击菜单 "截图文件夹…"查看历史截图和录屏文件. 热键和录屏文件夹均可在主界面下找到配置 菜单.

我的配置:

  • FFmpeg路径: %MyDocuments%\ShareX\Tools\ffmpeg.exe
  • 录屏路径: G:\screencast
  • 截图路径: G:\screenshot

Q&A

  • 设置录屏路径和截图路径无效 关闭ShareX界面时, ShareX依然在后台运行. 在任务栏右键ShareX图标, 选择"退出", 然后再次启动.
  • 什么是GDI Grab 录屏选项中, 视频源可以选择"GDI Grab". GDI Grab是Windows系统下基于GDI的录屏设备. 参考FFmpeg GDI Grab.

17 source code pro   fonts emacs

17.1 二进制安装

GitHub Adobe Fonts下载OTF/TTF:

  1. Win7打开控制面板->外观和个性化->字体, 把target目录下OTF/TTF下字体文件拖动到 控制面板字体窗口安装.
  2. Win10右键字体文件, 选择导入
  3. LINUX创建目录/usr/share/fonts/adobe,把OTF/TTF文件拷贝进去,执行 sudo fc-cache -frsv

17.2 Windows

  1. 下载Source Code Pro. 不使用git下载ZIP压缩包并解压缩;
  2. 安装Adobe提供的AFDKO字体开发套件, 下载Win版本, 根据解压缩文件夹下 FDK/Read_Me_First.html方式操作;

After downloading and decompressing the FDK, the only installation step is to add the directory for the FDK programs to your system's environment variable "PATH". This variable contains a list of directory paths, as a single string of text with the directory paths separated by semicolons. When the system needs to find a program that you have typed in a command-line, it looks for that program in all the directories listed in the PATH variable. You need to add the path to the executable FDK directory at '<path to FDK>\Tools\win' to this list. Fortunately, the FDK comes with a command file to do this for you. In order to run this file successfuly, your account does need system admin privileges.

Download the AFDKO archive file and decompress it. You should now have a folder named "FDK". Move it wherever you want (example: C:\Program Files (x86)\FDK). Open the "FDK" folder. and find the file "FinishInstallWindows.cmd". Open a command prompt window. If you do not know how to do this, read the file "FDK\Technical Documentation\CommandLineHowTo.pdf". Note! The command window must be run with Administrator privileges. If you open a regular command line window, the script will fail. To open a command window with Adminstrator priviliges, right click on the command program icon, and choose "Run with Adminstrator privileges." Enter the path to the script file in the command window. An easy way to do this is to: Click once on the file "FinishInstallWindows.cmd". This will place the path to the parent directory at the top of the Explorer window. Copy the directory path from the top of the Explorer window by selecting the text and copying it. Paste it into the command window (right click, and choose the option "Paste"). Finish the command-line by typing the name of the script file, "FinishInstallWindows.cmd" at the end of the directory path, and then press "RETURN/ENTER". If all went well the FDK should now be ready to run. To test it, do the following:

Open a Command Prompt window. (Start Menu > Run… > cmd.exe) Type "autohint -h" (no quotes) and hit "Return". This should give you the Help information about the Autohint tool. NOTE: If you move the FDK directory to a new location, you will need to change the PATH variable as well.

上述操作概要描述:

  • 拷贝FDK到软件安装目录, 假定为 C:\Program Files (x86)\FDK;
  • 以管理员权限打开Cmd, 进入FDK目录, 执行FinishInstallWindows.cmd;
  • 系统环境变量增量 C:\Program Files (x86)\FDK\Tools\win;
  • 注销或重启系统, 再次登录;
  • 进入Source Code Pro目录, 执行build.cmd;
  • Win7打开控制面板->外观和个性化->字体, 把target目录下OTF/TTF下字体文件拖动到控制面板字体窗口安装.
  • Win10右键字体文件, 选择导入

17.3 Linux

从源码构建需要Adobe SDK,从这里Adobe Afdko下载安装。下载ZIP后解压缩,将其移动到 ~/bin目录,执行FinishInstallLinux创建链接和PATH(自动修改~/.profile),重新登录 终端,在source-code-pro下执行./build.sh构建。

因FDK为32位的,因此在64位系统下需要安装libc6-i386,否则会包错误并建议重新安装。 同时需要安装libreadline.so.6、fonttools。libreadline.so.6可以从Debian下载。

yanyg@t440:~/bin/AFDK/FDK-25-LINUX.b65322$ ./FinishInstallLinux

Adding a symbolic link from '/home/yanyg/bin' to the FDK directory /home/yanyg/bin/AFDK/FDK-25-LINUX.b65322.

Adding a command to your login file that will append the FDK path to the $PATH environment variable...
   I added some lines to the  startup file /home/yanyg/.profile for the bash/sh/zsh versions of the Terminal program,  in order to add the 'FDK/Tools/linux' directory to your PATH environment variable.
Changed to file /home/yanyg/.profile
If you cannot run the FDK tools by name from the command-line after logging out and then back in, then your
Terminal program may be using a different login file than the ones I modified.
If so, you will need to identify your login file, and then add the same two lines to that file.

You must log out, and log back in, before the changes will take effect.
The FDK will then be ready to use.
# Exit and Re login to terminal
yanyg@t440:~/git/source-code-pro$ sudo apt-get install libc6-i386
yanyg@t440:~/git/source-code-pro$ ./build.sh

Checking that any glyphs in the processed glyphs layer are up to date.
makeotf [Note] Converting source font 'Roman/Black/font.ufo' to temporary Unix Type1 font file 'Roman/Black/font.ufo.tmp'.
makeotf [Note] setting the USE_TYPO_METRICS OS/2 fsSelection bit 7 from fontinfo keyword.
makeotf [Note] setting the WEIGHT_WIDTH_SLOPE_ONLY OS/2 fsSelection bit 8 from fontinfo keyword.
makeotf [Note] setting the OBLIQUE OS/2 fsSelection bit 9 from fontinfo keyword.
makeotf [Note] Writing options file Roman/Black/current.fpr
makeotf [Note] Running makeotfexe with commands:
   cd "/home/yanyg/git/source-code-pro/Roman/Black"

18 TODO svn   version_control

19 TODO tex   typesetting_system

20 TODO tmux   terminal multiplexer

21 TODO vim   editor

22 vmware horizon(ESXi Client)

Vmware Horizon Clients支持Windows/Linux/Mac/Andriod,从这里下载

22.1 linux(debian)

Debian系统下载bundle包,添加可执行权限chmod +x,执行安装。2017年底版本为4.6.0。 Debian已升级libpng到16,vmware-view需要libpng12,从这里下载libpng12,点击这里 查看所有的libpng版本。下载deb后执行sudo dpkg -i <deb-name>安装,也可使用 dpkg -x <deb-name> . 抽取文件到当前目录,确认与系统文件无冲突后cp -a拷贝。 之后创建脚本和热键,方便操作:

#! /bin/bash

[ -n "$(ip route list | grep "100.0.0.0")" ] || {
        echo "Add route for 100.6.1.176 ..."
        sudo ip route add 100.0.0.0/8 via 100.6.2.254 dev enp2s0
}

vmware-view -s 100.6.1.176 -u yanyg -p <your-password> -q \
        >/tmp/vdi.log 2>&1 &

22.2 windows

22.3 Debian

Linux系统下

23 youtube-dl

24 tmp

24.1 arch and design