文明5科研溢出打法

最近很是喜欢打《文明5》这个游戏,这个游戏的本质就是计算,对内政外交军事科技方方面面进行计算,在给定的约束下用各种资源和放大器(政策,宗教,意识形态,文明特性)来最大化输出(魅力,兵力,科技,同盟),尽可能快的获取对应的胜利。

既然是计算,免不了要知道各种计算规则,有些玩家为了更好的了解规则去读公开的代码,于是发现了各种可利用的算法漏洞。

比如自主政策左二的移民生产时间减半以及虔信开门的大小庙时间减半,被大家发现减半不是成本减半,而是锤子翻倍,由此诞生了溢出锤微操和拆庙微操。不过这两种处理时可以理解的,溢出值都是有上限的,也不会累加到再下一轮。

前段时间更有人发现了科技值的溢出方法,在这个方法里,溢出值是无限的。我认为这是一个bug,因为同一个科技贬值计算了两次。

#科技贬值

在文明5里面,一个科技,如果其他已遇见的玩家已经研究完成了,它需要的点数就比没人研究好的时候要少,8人标准图上,这个折算系数最多是1.2625,也就是七个玩家都完成了,就你没完成,那你需要的科技点数就是百科中显示点数的的1/1.2625≈79%.

#外籍学者提案

在世界议会里面,还能有一个提案叫做scholar resident,说明是「已被发现的科技,研究加速20%」,也就是说只要有人研究过,那折算系数最多变为1.515,而此时研究该科技的花费变成百科上写的66%.

#科研溢出

如果每回合的科研收益大于这个回合研究科技需要的点数,那么科研点数会溢出。

但是溢出并不是按1:1溢出的,而是看这个回合研究的科技有没有贬值。这个地方我估计文明的想法是「在贬值的科技上投入的科研点数要折算成未贬值的科研点数」,于是溢出的点数乘以科研贬值的折算系数,并且累计到下一个回合,具体的计算公式如下

本回合溢出=max{上回合溢出×折算系数+本回合科研点数-科技实际成本,0}

和0比较是因为如果上回合的折算溢出加上回合科研点数也研究不完当前科技的话,下一个回合的溢出就是0了。这也是我觉得不合理的地方,因为在科技实际成本里面已经计算过了科技贬值,但是在溢出的时候又要算一遍。但是平时溢出不会太多,至少不会超过你的回合科研点数。如果你是按步就班的进行科研,那么基本上你感觉不到溢出,因为科技成本是相当高的。

#滚雪球

但是,如果你留了不少远古科技还没有研究的话,比如青铜(单城标图,就你没研究的话,成本是40),回合科研是100,上一回合刚好研究完成溢出了99,把这个溢出用去研究青铜,一个回合就研究好,下一轮的溢出是多少?按照上面的公式计算的话,下一轮的溢出是209。那如果再把这209的溢出投入到建筑构造学(成本80)的话,再下一轮的溢出就是337了,如果你铁器(80)也没研究的话,再来一次溢出就是531了。这样你研究好了三个科技,溢出不但没有变成0,反而翻了5倍,变成了531,是你三个回合科研点数总和的两倍不到。

如果你第一个回合的溢出是899呢?三个科技后溢出变成2243,是你三个回合科研点数总和的7倍还多!如果有10个科技都是1.515的折算系数,那么走完这10个科技,你的溢出值将是41287,是你十个回合科研点数总和的40倍。

所以,到这里,你该知道怎样利用这个溢出来滚雪球了吧:

  • 压上线或者下线科技不研究,最大化折算系数
  • 在某科技研究好之后,烧一个大科学家,获得8倍的回合科研点数的溢出
  • 选择远古科技,依次秒掉被压的科技,溢出值以1.5为底的指数上升

所以爱因斯坦说「复利是宇宙间最伟大的力量

#秒掉未来科技?

那在启蒙时期烧一个大科的话,可以秒掉未来科技吗?答案是可以。

我们先看看从各个时期开始到飞船所有科技研究完所需要的科研点数(表格没有考虑科研的惩罚,如果是单城应该再乘以1.05,双城乘以1.10,以此类推):

初始时期 所需点数
文艺1178915
文艺2174625
工业1168300
工业2157740
现代1147400
现代2130350
原子1112310
原子289870
信息161710
信息219360

有18万左右的溢出值,是有可能秒掉所有飞船科技的。但是溢出值并不是可以无限指数上升,它的的上限是214748。这个数据说和2的31次方减1有关。超过了这个上限,呵呵,你的溢出值就变成负数了,这样面板就会显示你完成一个研究需要上千回合。

如果你想用这个方法放飞船的话,一定要选择好秒科技的路径,不要让溢出值超过上限。适当的秒一些电脑没有研究过的科技来减少溢出值,最好到18万左右,而且接下来所有科技电脑都没研究过(这个通过成本可以看出来),接下来就是纯消耗,不会再有复利了。

这里还要注意,为了避免溢出超过上限,可以利用牛津大学和理性关门来秒掉一些关键的科技,减少连乘的次数。

Windows下vim-LaTeX和Pathogen的问题

很久都没有写博客了,不知道还有人看不。

很久以前,升级vim插件里的vim-LaTeX,突然发现Windows下无法编译任何的tex文件,反复报错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Error detected while processing function Tex_RunLaTeX:
line 7:
E121: Undefined variable: s:target
E15: Invalid expression: s:target
line 10:
E121: Undefined variable: s:target
E116: Invalid arguments for function Tex_Debug
line 12:
E121: Undefined variable: s:target
E116: Invalid arguments for function Tex_GetVarValue('Tex_FormatDependency\_'.s:target) != ''
E15: Invalid expression: Tex_GetVarValue('Tex_FormatDependency_'.s:target) != ''
line 21:
E121: Undefined variable: dependency
E116: Invalid arguments for function Tex_Debug
line 25:
E121: Undefined variable: dependency
E116: Invalid arguments for function Tex_Strntok(dependency, ',', i) != ''
E15: Invalid expression: Tex_Strntok(dependency, ',', i) != ''
line 51:
E121: Undefined variable: initTarget
E15: Invalid expression: initTarget

然后也报错没有TCLevel这个命令,但是我在OSX下用是好的,所以就没管,只是没有在Windows下写TeX而已。

昨天才发现是这样的,不知道从哪个版本开始,vim-latex套件里面多了一个compiler文件夹,里面有一个tex.vim文件,按照官方的说法,这个文件夹应该是拷贝到你的vimfiles里面的。照理说pathogen应该是可以管理的,问题就在于Windows下,Vim的安装文件夹/compiler里面也有一个tex.vim,不知道是调用先后顺序还是怎样,Windows不会载入vim-latex里面的这个tex.vim,而是载入Vim自带的那个,所以……

解决方法就很简单了,把自带的那个tex.vim删了就行,一切变得正常

祝大家新年快乐!

Listary——给DOpus和Everything搭个桥

尽管Directory Opus很好用了,但是一直以来的问题就是他没法和everything这一超强的搜索引擎结合起来,尽管之前我也翻译过DOpus论坛上的解决方法,但是毕竟是一种硬编码的形式,路径什么的一旦不对就没法使用,现在好了,Listary的最新beta版本支持DOpus的beta版本,并且可以直接调用everything的搜索结果,让DOpus-Listary-Everything构成了强大的文件管理工具链。

Listary设置

安装好之后,我做的设置是:

  • 搜索-磁盘搜索中,使用Everything

  • 窗口类型独立设置里面,Directory Opus关闭「查找你键入的内容」(Find-As-You-Type)选项,这样是为了不和DOpus自己的Find-As-You-Type功能冲突

  • 窗口类型独立设置-Desktop,关闭「鼠标在空白区域弹出Listary快捷菜单」,以免和DOpus的双击唤出冲突。

使用

从桌面搜索

只要焦点在桌面,只要开始输入就是在桌面内查找你输入的内容

以「>」开始的搜索则是全局搜索

在DOpus里搜索

按Win+s或者鼠标中键,打开Listary工具栏,同样,在当前路径下查找你输入的内容,如果输入以「>」开头,则是全局搜索

在文件打开菜单中

比如在Gmail里面点击「添加附件」,在「打开文件」对话框下面就会有Listary的工具栏,在这里输入的任何内容都是搜索,用「>」开头的都是全局搜索,如果焦点不在Listary上的话,按Win+s聚焦到Listary的对话框上。

其他

Listary支持搜索的时候用拼音首字母查询,弥补了DOpus的不足,不过如果你使用的是Everything的引擎,则全局搜索的时候就没法用拼音首字母了。

Listary和TC可以更好的集成使用,就是在上述「打开文件」对话框中按Win+o可以打开一个TC标签,然后在此TC标签中进行操作,选中文件后再按Win+o,选中文件的路径就通过TC传给Listary然后传给「打开文件」的对话框了,这样在「打开文件」也可以使用TC进行操作。详见Listary+TC: 提高效率,取代传统低效的”打开/保存”对话框 | 善用佳软。然而现在对DOpus还没有Win+o支持,不过作者说这已经在他的开发计划之内了。

另外,Listary Pro现在正在以50人民币的优惠价进行销售,我本身这个软件用得不多,Pro版的介绍和购买详情也请移步善用佳软大哥的文章Listary:搜索增强软件,新版v4发布(赠Pro许可+优惠销售) | 善用佳软

DOpus 10.5 更新日志

2013年1月31日,Directory Opus稳定版升级到了10.5.0.0,以下是升级日志的大致翻译

Windows 8

已官方支持Windows 8,以下问题已解决

  • 双击文件启动的只是桌面程序,而不是Metro程序
  • 双击未知格式文件不再打开同步中心
  • 打开新列表窗的快捷键改为Win+Shift+E,Win+O不再生效
  • 「复制文件路径」功能正常

原生支持MTP设备

本版本开始原生支持MTP(Media Transfer Protocol)设备,MTP设备在DOpus里面以mtp://语法打开,现在在「计算机」里面可以看到已经连接的MTP设备并双击可以打开

标签群组可分别设置左右栏

现在标签群组里面新增一个选项「特定边框」(Specific Sides,这里中文译得不好)可以制定组中的标签是在左栏还是右栏打开

当勾选这一选项后,其左边的按钮可以用来将标签从左边移动到右边或者反过来

标签栏的右键菜单新增「Save Both Sides,保存两者」(中文还是没译好)命令,可以将目前打开的标签按照分栏保存成标签群组。

标签组管理

「首选项-文件夹标签-标签群组」中可以用文件夹来管理,只需要点击「新建文件夹」按钮并拖拽。 另外也新增一个「标记为隐藏」按钮。一旦一个标签群组被标记为隐藏,它就不会出现在标签栏右键菜单中。

可链接标签

在双栏视图中,可以将左右的标签页链接起来,点击已链接标签中的一个,在另一栏会自动跳到和它链接的那个标签。同时最多设置8对链接标签页。已链接标签会用不同颜色标识,该颜色可在首选项中修改。

已链接标签可选择为「Slave Tab, 附属模式」。一旦设置为附属模式,该标签的内容会和它的链接标签保持一致。附属模式的标签会变成斜体。附属模式的设置和取消在标签栏的右键菜单中。

首选项-文件夹标签-标签群组的编辑中也可以设置链接标签

链接标签的快捷键:

  • Ctrl+点击:设置/取消到当前标签的链接
  • Ctrl+Shift+点击:设置/取消到当前标签的附属模式链接
  • Shift+点击:在另一栏中不跳转到链接的标签

列表窗样式使用标签群组

在列表窗样式中,之前是可以分别定义左右栏的标签,现在该功能用标签群组代替。

标签外观改进


标签栏改进

  • 「首选项-文件夹标签」新增外观页
  • 「首选项-文件夹标签-选项」,新增「点击列表窗关闭按钮时只关闭活动标签」(而不是关闭整个列表窗),「显示新标签按钮」「在当前标签旁打开新标签」以及「当标签减少时显示菜单」
  • 把一个标签拖到桌面可以打开一个新的列表窗
  • 直到鼠标按键释放才激活标签(就是你拖动标签的时候不会马上切换过去)
  • 鼠标中键可以关闭标签(就是按滚轮),双击标签也可以(需要在「首选项-文件夹标签-选项」中设置)
  • 「首选项-文件夹树-选择事件」新增「切换至现有标签」选项,选中后在文件夹树里面点击一个已经在标签中打开的文件夹的时候会切换到该标签,而不是在当前标签打开这个文件夹。

即时查找可以切换标签

快捷键是「@」,可以在「首选项-列表窗-即时查找」中修改
在使用即时查找切换标签时,会弹出符合描述的标签列表,匹配的是路径和标签标题

文件夹树高亮当前文件夹路径

在「首选项-文件夹树-高亮显示所选文件夹的路径」中设置。勾选「高亮显示当前所有打开的标签」后非活动标签的高亮颜色较淡


群组栏

当文件以群组方式显示时,可以显示一个群组栏,在「首选项-文件夹-文件夹显示-当文件被分组时自动添加‘群组’栏」,群组栏的颜色和宽度可在首选项中设置。


Ctrl+滚轮可以调整字体和缩略图大小

  • 在缩略图中,可以调整缩略图尺寸
  • 在详细信息或者加强模式视图中,可以调整字体大小

列表窗可以自定义标题

在「首选项-显示-选项」中,可以自定义列表窗标题栏,其中可以用到几个特殊控制字

  • %P 当前文件夹完整路径
  • %N 当前文件夹名
  • %R 当前文件夹根目录
  • %D 当前目标文件夹完整路径
  • %M 当前目标文件夹名
  • %L 当前列表窗布局名
  • %T 最初标题

%P,%N和%R还可以在给标签命名的时候使用

其他改进和bug fix

(略)

在AWS上搭建shadowsocks-nodejs环境并搭配obfsproxy使用

本文作者为unclepulp,感谢赐稿

本文服务端为Amazon Linux AMI 2012.09(32bit),客户端为Windows7。

Amazon AWS的注册、EC2的开通(电话验证如不成功,可用Google voice验证)以及实例的启用请参考Amazon AWS 漫游指南

首先使用PuTTY登录EC2,然后输入如下命令:

1
sudo su

为避免部署的过程中出现网络中断的情况,可使用screen命令创建一个会话(screen命令的使用请参考SSH远程会话管理工具 - screen使用教程):

1
screen -S nodejs

接着更新一下系统:

1
yum update

部署服务端

部署shadowsocks-nodejs

1
2
3
4
5
6
mkdir tmp
cd tmp
yum install git
git clone https://github.com/clowwindy/shadowsocks-nodejs.git
cd shadowsocks-nodejs
vi config.json

i开始修改,修改server_port(如12345)和password。修改好后按ESC,然后输入 :wq 保存退出。

1
2
3
cd ..
mkdir /var/shadowsocks
cp shadowsocks-nodejs/ /var/shadowsocks -r

安装并部署nodejs

nodejs最新版可以在官网获取

1
2
3
4
wget http://nodejs.org/dist/v0.8.18/node-v0.8.18-linux-x86.tar.gz
tar zfvx node-v0.8.18-linux-x86.tar.gz
cp node-v0.8.18-linux-x86/bin/node /usr/bin/
echo "(node /var/shadowsocks/server.js >/dev/null 2>&1 &)" >> /etc/rc.local

部署obfsproxy

安装obfsproxy支持环境

1
yum install autoconf automake gcc make openssl-devel pkgconfig

安装libevent2

libevent2最新版本可在官网获取

1
2
3
4
5
6
7
wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar zfvx libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure
make
make install
cd ..

安装并配置obfsproxy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
git clone https://git.torproject.org/obfsproxy.git
cd obfsproxy
export libevent_CFLAGS=-I/usr/local/include
export libevent_LIBS="-L/usr/local/lib -levent"
export LD_LIBRARY_PATH=/usr/local/lib/
./autogen.sh
./configure
make
make install
cp /usr/local/lib/libevent-2.0.so.5 /usr/lib/
cd ..
echo "(/usr/local/bin/obfsproxy obfs2 --dest=127.0.0.1:12345 server 0.0.0.0:54321 >/dev/null 2>&1 &)" >> /etc/rc.local
iptables -A INPUT -p tcp --dport 54321 -j ACCEPT
yum install policycoreutils
service iptables save
service iptables restart
exit
exit
exit

此处端口12345为shadowsocks-nodejs的server_port,54321为obfsproxy 负责接收和发送混杂数据的端口。

然后请参考Amazon AWS 漫游指南三:VPN一文里的防火墙设置,并将12345和54321两个端口添加一下,添加好后重启实例。


部署客户端

  1. tor官网下载含Obfsproxy的Tor包,此包是自解压包,将解压后得到的APP目录中的所有文件拷贝到一个合适的目录,如D:\nodejs

  2. nodejs官网下载node Windows包,下载得到node.exe直接拷贝到D:\nodejs

  3. 访问shadowsocks-nodejs项目主页,点击界面中的zip,下载得到一个zip包,解压后将shadowsocks-nodejs-master目录中的所有文件全部拷贝至D:\nodejs

  4. 编辑config.json,将password修改为之前制定的密码,其它无需修改。

  5. 在D:\nodejs目录中新建一个文件,输入:

    1
    2
    3
    START node.exe local.js
    START obfsproxy obfs2 –dest=111.111.111.111:54321 client 127.0.0.1:8388
    EXIT

其中111.111.111.111为服务器IP地址,例如,如果Amazon EC2实例的public dns为ec2-111-111-111-111.us-west-1.compute.amazonaws.com,那么,此处的IP就填111.111.111.111。然后将文件保存为批处理文件,后缀为bat

  1. 双击该批处理文件,并将浏览器的代理设置为SOCKS5 127.0.0.1:1080 即可。

参考

鼠须管里使用颜文字

综合参考官方文档和这个教程。鼠须管里使用颜文字步骤如下,设置目录为~/Library/Rime

新增一个输入法

default.custom.yaml里面添加patch

1
2
3
patch:
schema_list:
- schema: kaomoji

编辑颜文字输入法

新建kaomoji.schema.yaml文件,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
schema:
schema_id: kaomoji
name: kaomoji
engine:
processors:
- key_binder
- speller
- selector
- navigator
- express_editor
segmentors:
- abc_segmentor
- fallback_segmentor
translators:
- r10n_translator
filters:
- uniquifier
translator:
dictionary: kaomoji
spelling_hints: 1
key_binder:
import_preset: default
speller:
alphabet: zyxwvutsrqponmlkjihgfedcba
delimiter: " ;'"
algebra:
- "derive/^.+$/all/"

编辑词库

新建kaomoji.dict.yaml文件,建立颜文字词库,文件格式为:

1
2
3
4
5
6
7
---
name: kaomoji
version: "0.1"
sort: origin
颜文字1[TAB键]输入码1
颜文字2[TAB键]输入码2

例如

d=====( ̄▽ ̄*)b [顶!]    ding

在当前输入法中使用颜文字

修改你输入法的*.schema.custom.yaml文件,添加

1
2
3
4
5
6
7
8
9
10
patch:
schema/dependencies:
- kaomoji
abc_segmentor/extra_tags:
- reverse_lookup
reverse_lookup:
dictionary: kaomoji
enable_completion: false
prefix: "`"
tips: "[颜文字]"

重新部署

重新部署鼠须管即可生效

注意此时文件夹内应该多出来kaomoji.table.bin, kaomoji.reverse.binkaomoji.prism.bin三个文件

截图

颜文字整理下载

Snipmate在Windows下和pathogen的兼容问题

今天在Windows台式机上写LaTeX的时候忽然发现怎么Snipmate不好使了,Tab键都要被按烂了居然还不能补全,但是OSX上用又是好的。

Google了各种关键字,都没有能直接解决问题的。StackOverflow和superuser上的问题更多的是关于如何载入自定义的代码段。

后来把Snipmate直接拷贝到Vim的安装文件夹下面,改名vimfiles,发现是可以用的,再结合googlecode上的一个issue,发现是snipmate/after这个文件夹pathogen没有载入,估计是不符合vim插件的通常结构。

于是解决方法很简单了,在.vimrc文件中加入

1
set runtime+=~/.vim/bundle/snipmate/after

因为我环境变量里面有$HOME,所以就可以用~来代替个人文件夹了

vimflowy: workflowy的vim实现

在很早一篇《像发微博一样做GTD》里面,我提到可以在Vim里面实现workflowy的功能。经过参考 Vimoutliner 和 VimOrganizer,我自己做了一个vim插件,可以实现workflowy的大部分功能。同时因为是基于纯文本的,随便扔一个网盘就可以同步了,移动设备上也可以方便的查看。

特点

  • 大纲列表,用缩进表示层级,TAB键可以切换展开/折叠
  • #和@关键字高亮和过滤
  • 标记完成功能

安装

项目主页在 http://www.github.com/laoyang945/vimflowy

安装只需要把文件拷贝到pathogen设定的插件目录即可

使用

用vim打开后缀为otl的文本文件后,插件就自动加载了。使用方法和workflowy基本相同,都是使用缩进来标记大纲层次,用冒号或者分号来标记补充内容。由于是基于vim的,对快捷键的支持当然是必须的

快捷键

  • [normal],,N(N=0~9): 所有条目展开到第N级,当N=0的时候表示全部展开
  • [normal],,dn: 标记当前节点及其所有子节点完成,并附加完成时间
  • [normal]zs: 显示所有含有光标下单词的条目(不包括补充内容)
  • [normal]zn: 和,,0的效果一样
  • [normal & insert],,d: 插入日期
  • [normal & insert],,t: 插入时间

截图

大纲,折叠,关键字和标记完成

文本过滤

欢迎各位Vimer和GTDer使用并提出意见和建议。

用Dropbox(或者其他网盘)同步Zotero需要注意的事项

不知道像我一样有两台电脑,又是zotero的忠实粉丝的人多不多。这种情况下就需要保持两台电脑上zotero数据的同步,免得在台式机上添加的文献后来在笔记本上看不了。

但是如果你只是简单的在zotero的设置-高级选项里面将zotero的文件夹放到dropbox(或者其他网盘)里面的话,你可能会遇到一个很大的问题:zotero.sqlite文件,就是zotero的数据库文件里面的数据会不完整,或者你发现在zotoro的数据文件夹里面有一堆的conflict文件,如果你的zotero.sqlite文件有数十兆的话,二三十个冲突文件就能有快1G的容量了。

这个问题的原因是,zotero.sqlite在打开的时候会被zotero锁定,此时Dropbox就认为这个文件已经有了修改,经过二进制对比,Dropbox会把修改部分上传并同步。如果两台电脑同时打开zotero/firefox的话,Dropbox会认为两边都是在更新这个文件,于是他会把对应修改的二进制文件合并到一块去,如果不能合并到一块去的话就生成冲突文件,在这个过程中很有可能就造成数据库文件的损坏(回想一下数据库课程里面是怎么说的)。因为这个原因,我一直避免同时打开两台电脑上的firefox。

昨天稍微研究了一下,这个问题还是挺容易解决的。其实只需要让zotero自己提供的网络同步功能同步数据库文件即可,然后存储在zotero里面的附件文件夹用符号链接的方式放到Dropbox目录里就可以了,这样把数据库和外部附件分开,以免Dropbox去处理zotero.sqlite。

具体的操作就是先把Zotero从Dropbox里面移出并在Firefox里面设置好,然后在Mac终端里

1
ln -s Zotero目录/storage Dropbox目录/zotero/storage

或者在Windows下,打开命令行

1
mklink /D Zotero目录/storage Dropbox目录/zotero/storage

Mac用户文件夹移动后恢复默认图标

很多人把MBP里面的光驱拆掉换成SSD+HDD的搭配,然后把个人文件夹中的一部分,比如音乐或者视频,放到HDD里面去,然后用软链接链回来。这样做的问题就是,这些文件夹没有特定的图标了。

如果想要把图标找回来,其实也挺简单,只需要在/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources下找到对应的icns文件,打开icns文件并复制其中某个分辨率的图标图像,然后在文件夹上右键选择Get Info,在新窗口点一下左上角的图标,然后粘贴即可。

有一个挺好使的免费软件Candybar(最近才免费的),可以替换系统图标,但是我并不是想替换系统默认的图标只是要使用默认图标而已。

至于侧边栏的图标,找了一圈没有什么好的方法,只有用XtraFinder开启彩色模式才能显示文件夹的图标。

最终的效果