在 Mac OS中使用 Beyond Compare

Beyond Compare 是一款强大的文件比较(diff)软件,通过它我们可以比较两个目录、两个文件、两个文本之间的差别。但是在 Beyond Compare 的官网只提供 windows 和 Linux 版本下载,一度让我以为它不支持 Mac 平台,以至于在 Mac 上通过 wine 来间接使用它。前段时间 Scooter 公司在千呼万唤中发布了 Beyond Compare 的 Mac beta 版,完成了 Windows、Linux和Mac平台的全覆盖。如果你是 Mac 用户,而且又是 git 的重度使用者,为何不尝试一下呢?

下载 Mac 版的 Beyond Compare

由上文得知,Beyond Compare在下载页面是没有显示的,只有通过其官网的支持页面下载。下载地址:http://www.scootersoftware.com/support.php?zz=kb_mac。将解压后的 Beyond Compare 拖动到“程序”文件夹中安装。

安装 Beyond Compare 后,下一步就是安装它的命令行工具。打开 Beyond Compare 后,在”Beyond Compare”的下拉菜单中选择”Install Command Line Tools”,在弹出框中输入系统密码后,会自动将它的命令行工具安装到系统中。安装完命令行工具后,就可以在终端中输入 bcomp a.txt b.txt 来比较文件了。下面的步骤都是基于它的命令行工具进行的。

在 Git CLI 中使用

安装完 Beyond Compare 的下一步就是设置其为 Git 的 diff tool 和 merge tool。在终端中输入如下几条命令:

1
2
3
git config --global diff.tool bc3
git config --global difftool.prompt false
git config --global merge.tool bc3

这几条语句的作用是,当你在 Git 中使用 git diffgit merge 命令时,Git 会自动调用刚才的命令行工具来打开 Bycompare 来比较文件。

在 Tower 中使用

  1. 退出 Tower 工具
  2. 在终端中 cd ~/Library/Application\ Support/Tower
  3. 如果不存在 CompareScripts 文件夹,就使用 mkdir CompareScripts 来生成一个文件夹
  4. 下载 bcomp.sh 并放在上面的 CompareScripts 文件夹中
  5. 使用 chmod +x bcomp.sh 命令赋予其可执行权限
  6. 下载 CompareToools.plist 到 ~/Library/Application\ Support/Tower 文件夹下
  7. 启动 Tower

在 SourceTree 中使用

  1. 打开 SourceTree
  2. 在 SourceTree 的菜单中选择 “Performance”
  3. 在顶部的菜单栏中选择 “diff” 选项卡
  4. 在 “External Diff / Merge” 里
    • 如果是 “Visual Diff Tool”,选择 “Other”,在 “diff commend” 中输入 “/usr/local/bin/bcomp”,在 “arguments” 中输入 “$LOCAL $REMOTE”
    • 如果是 “Merge Tool”,选择 “Other”,在 “Merge Commend” 中输入 “/usr/local/bin/bcomp”,在 “arguments” 中输入 “$LOCAL $REMOTE $BASE $MERGED”

Duff’s Device in Javascript

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
/**
 * Duff's Device 
 * http://home.earthlink.net/~kendrasg/info/js_opt/jsOptMain.html#duffsdevice
 */
var iterations = 9999;
var testVal = 0;
var n = iterations / 8;
var caseTest = iterations % 8;

do {
    switch (caseTest) {
        case 0:
        testVal++;
        case 7:
        testVal++;
        case 6:
        testVal++;
        case 5:
        testVal++;
        case 4:
        testVal++;
        case 3:
        testVal++;
        case 2:
        testVal++;
        case 1:
        testVal++;
    }
    caseTest = 0;
}
while( --n > 0);

另外的一个 Jeff 的版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
 * Fast Duff's Device
 * @author Jeff Greenberg
 * http://home.earthlink.net/~kendrasg/info/js_opt/jsOptMain.html#fastDuffsdevice
 */
var testVal = 0;
var n = iterations % 8;
while (n--) {
 testVal++;
}

n = parseInt(iterations / 8);
while (n--) {
 testVal++;
 testVal++;
 testVal++;
 testVal++;
 testVal++;
 testVal++;
 testVal++;
 testVal++;
}

这儿有一些相关的链接: http://jsperf.com/duffs-device

Hacker News的全文输出RSS地址

Hacker News 是一家关于计算机黑客和创业公司的社会化新闻网站,由 Paul Graham 的创业孵化器 Y Combinator 创建。与其它社会化新闻网站不同的是 Hacker News 没有踩或反对一条提交新闻的选项(不过评论还是可以被有足够 Karma 的用户投反对票,或是投支持票);只可以赞或是完全不投票。简而言之,Hacker News 允许提交任何可以被理解为“任何满足人们求知欲”的新闻。这段话来自维基百科

hello world
1
2
3
<?php
echo "hello world";
?>

直接在HN上看新闻的话,得每次多点击下链接才行,要是目标网站被认证的话,还得搬一个翻墙梯子过来很是麻烦。我一直在找 HN 的全文输出链接,要是有一个RSS订阅源的话,可以直接在GR上订阅。还可以通过klip同步到kindle上面,没事的时候打开kindle就可以知道最近计算机界发生了什么事。下面几个是我找到的Hacker News的全文输出RSS链接。

选择的试题在数据库上不可用的解决方案

选择的试题在数据库上不可用的解决方案,我们在 tcexam 中添加一个测验的时候,经常会遇到系统提示“选择的试题在数据库上不可用”的提示。比如,一个测试中添加试题的时候,明明试题中有30道题目,但是在设置中设置为此试题库下的30道的试题则会报错,一般情况出现这种问题都是由试题添加者的在添加试题时不注意和试题有逻辑上的问题有关。下面就是 Glow 在实际使用中总结的解决方案。

  • 检查“问题”的格式与试题库配置的格式是否一致。
  • 检查题目试题库相应类型题目。
  • 试题本身有错误。
  • Tcexam 考试系统奇特的bug

    检查“问题”的格式与试题库配置的格式是否一致

一般这个问题出现的可能性比较小,添加试题时候,选择的是多选,然后下面试题列表选中的确实单选题。只要添加试题时看好试题库,就可以避免。

检查题目试题库相应类型题目

相对应的试题库中混杂了其他种类的题目,比如一个叫“单选题A”中的试题库中如果混杂有一道多选或者主观题的话,就不能添加为全部的单选题。

试题本身有错误

有的时候试题本身有错误的话,也会导致错误的出现。比如一个试题设置为单选题,但是在添加此试题的时候,把两个或者三个的答案设置为正确选项,就会导致错误。这种情况不好排查,Tcexam 没有自动检测试题类型不同的功能,只能手工挨个检查添加的试题的答案。

Tcexam 考试系统奇特的bug

Tcexam 考试系统有个神奇的bug,那就是在同一个试题库中如果有相同的试题题干的话,就会合并答案成为为一个问题。简而言之,就是不能出现相同的试题名称。这个问题最具有隐藏性,只有在添加试题的时候避免。例如,要求添加试题的老师提供的试题中有相同试题名称的时候,在实体名称的后面添加一个空格或者添加一个问号来解决。

Flag for Chrome修复更新PageRank

Flag for Chrome 是一款 chrome 上的插件,它能显示被访问网站服务器所在国家和地区、Geo、Google PageRank,、Alexa Rank和WOT等信息。功能和 firefox 上的 flagfox 还要强大。我就经常用它来看网站的所在国家和 PageRank。插件下载地址

在近段时间的使用中,以前 chrome 地址栏上 Flag for Chrome 显示的 PageRank 值显示为问号。经过一番检查,原来是 google 的 PageRank 已经停止使用,但是 PageRank 的 API 还没有撤销,只不过 google 把它更改了一下,加上插件作者好长段时间没有更新了,所以原本显示 PageRank 的地方成了问号。现在给大家介绍如何修复 PageRank 的显示问题。

  1. 找到插件的文件位置。一般来说,chrome插件的文件位置就是在它的安装目录里面。比如我的“C:\Users\用户名\AppData\Local\Google\Chrome\User Data\Default\Extensions\dbpojpfdiliekbbiplijcphappgcgjfn\0.4.1_0”,其中dbpojpfdiliekbbiplijcphappgcgjfn为 Flag for Chrome 在应用市场的 ID,“0.4.1_0”是插件的版本号。注意:AppData 文件夹为默认隐藏,需要修改文件夹选项将其显示。
  2. 修改 js 文件夹中的 PageRank.js 文件。替换“http://toolbarqueries.google.com/search?client=navclient-auto&hl=en&ch=”字段为“http://toolbarqueries.google.com/tbr?client=navclient-auto&features=Rank&ch=”。
  3. 重启 Chrome 浏览器。
大功告成,现在 PageRank 又回到我的地址栏了。在最后,恳请此插件的作者早日更新这个 bug。

Tcexam在线考试系统csv文件转换为xml文件

tcexam是一个非常优秀的在线考试系统,将纸笔考试转化为在计算机上在线完成,只要有计算机和网络就可以考试,大大简化了整个考试流程,将出题、考试、管理阅卷登常规过程一并纳入一个系统中,不仅减少了人力,而且极大的提高了整个效率和考试结果的可信度。Glow认为最大的收益方为组织考试的老师,它让老师免去了试卷排版和编排的工作,将更多的时间放在了出题的质量上,而且只需要提交 csv 格式或者 xml 格式的考试试题设置相关考试要求,其他的工作比如判卷就可以交与服务器完成,特别是当题目大多数为选择题时效果最明显。(TCExam的主页和下载页面为这个

为什么要把 csv 转换成 xml

TCExam 考试系统默认只能导入xml格式的考试试题,但是我们老师给的考试试题确实从Excel 转换后的 csv 格式。只有通过修改考试系统的源代码来让TCExam考试系统支持csv 格式的试题导入。这里 Glow 采用曲线救国的方法,将 csv 格式的试题先转换成xml,然后由老师手动导入到考试系统。下面是老师提供的 csv 格式的部分试题。

Notepad++小技巧之列编辑

怎样让敲代码从一个脑力劳动变成乐趣是任何一款编辑器的终极目标,在这里我不得不提到notepad++这款神器。我从使用它到现在已经有一年有余了,并且已经代替dreamweaver成为我在windows系统上的首选编辑器(为什么要用notepad++而不是dreamweaver?知乎上的相关讨论链接)。今天向大家介绍notepad++上的一个使用小技巧——列编辑。

在编写javascript的时候,我们经常要把某个代码块注释或者进行批量编辑时,要是一行一行的给行首添加//注释的话,应该是一件很闹心的事。但是在notepad++上用两个快捷键就可以很好的解决这个问题,提高编程效率。

步骤:

1.在notepad++中,先指定到要批量添加注释的地方,使用 Shift+Alt 快捷键不放,用鼠标点击要处理的代码后点击,notepad++会高亮选中的代码块。

2.快捷键选中代码块后,在你要批量添加的地方点击,然后快捷键 Alt + C,弹出编辑框如下图,在插入文本的输入框中添加你想输入的任何字符,这里我输入的是注释的//,点击回车,notepad++就自动在你想添加的内容。

买一送一:

vim中相关的操作为“块操作”,相关步骤如下:

  1. 在normal模式中,输入“ ^ ”到达行首,快捷键 ctrl + O 开始块操作。
  2. 快捷键 ctrl + d 向下移动,你也可以使用hjkl来移动光标,或是使用%,或是别的。
  3. 输入“I” (大写的 i),在插入模式中输入”//”,按Esc键。I是插入,插入“//”,按ESC键来为每一行生效。

给博客添加humans.txt

一、什么是humans.txt

humans.txt 就是记录这个网站相关制作人员和一些有贡献的作者的文本文档,告诉搜索引擎我们是人开发,而不是通过程序自动生成的网站,通常放在网站的根目录。humans.txt 是相对于 robots.txt 而言的,它不像robots.txt 中的针对搜索引擎的语句那么生硬,网站所有者可以在这个txt文档中加入网站简介和copyright显得更加人性化。

二、其他网站的使用

humans.txt的官方网站对humantxt给出了很好的定义和应用,大家可以猛击这里查看官网对于humans.txt的使用。Google也在它的网站添加了humans.txt,想必google的搜索蜘蛛以后会把humans.txt作为一部分参考。google的humans如下:

Google is built by a large team of engineers, designers, researchers, robots, and others in many different sites across the globe. It is updated continuously, and built with more tools and technologies than we can shake a stick at. If you’d like to help us out, see google.com/jobs.

三、如何添加humans.txt

说了那么多,现在给大家介绍一下如何在网站上添加humans.txt。

首先,新建一个txt文本文档,格式最好改为UTF-8(我用的是notepad++,“格式→转为UTF-8无BOM编码”),编辑完此txt文档后,命名此文件为humans.txt,上传到网站的根目录。

第二步,在header.php的<head></head>标签中插入如下的HTML代码:

<link type=“text/plain” rel=“author” href=“http://yourdomain.com/humans.txt” />

OK,大功告成,刷新一下网页,humans.txt添加成功。

 

三、最后要说的话

humans.txt相对于robots.txt来说还是一个很新的概念,但是不排除它受到一些开源组织和Google的推崇,最终成为一个标准。我们可以想象一下如果humans.txt 最终成为标准的话,会有如下影响:

  1. 该文件将被搜索引擎用来当做判断一个网站的信任程度的一个因素。
  2. html代码head部分将会进一步简化,类似于CSS的调用,可以将一些author, copyright等等元素统统放在这个文件里进行调用,缩减代码体积。
  3. 主流浏览器会推出相应的插件或者内置功能用来解释Humans.txt,让访客第一时间了解该网站“关于我们”的信息,更加方便用户对网站有一个基本的了解。现在firefox已经有这样的插件了(猛击真相)。

相关链接如下:

张鑫旭:humans.txt-网站相关人员信息记录的idea

humans.txt官方网站(英文)

谷奥:Google 不仅有 robots.txt,还有 humans.txt

《1Q84》阅读笔记

Notepad++ 是一款免费的开源的跨平台的代码编辑器。它支持包括中文在内的多国语言,功能强大,除了可以用来制作一般的纯文字说明文件,也十分适合当作撰写电脑程序的编辑器。Notepad++不仅可以实现语法高亮显示,也有语法折叠功能,并且支持宏以及扩充基本功能的外挂模组。

 

自从使用notepad++来代替dreamweaver编辑网页文件后,notepad++强大的代码高亮和标签选中后自动寻找闭合标签功能让敲代码变得更加方便。以前用dreamweaver的时候,代码一多的话,要想找到一个闭合的标签(比如“div”,在未加任何注释的情况下)的起始标签要花很长一段时间。但是在notepad++上面,只需点击闭合标签,notepad++就自动找到起始标签并且高亮它,非常方便了像我这样的懒人。