git stash

My git stash commands usage order:

git stash [save [--patch] [-k|--[no-]keep-index] [-q|--quiet] [<message>]]
git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
git stash list [<options>]
git stash clear
git stash show [<stash>]
git stash drop [-q|--quiet] [<stash>]
git stash branch <branchname> [<stash>]

何种情况下使用这个git stash?我的使用场景
1. 比如我有个本地修改的数据库连接配置文件,不想提交到master,但是pull代码的时候又冲突了,我就先git stash save一下,pull下来之后再pop出来
2. 在某个branch有代码改动,但是突然有个别的任务需要切换branch的时候,我可以git stash save下来

技巧-用迅雷打开某些打不开的种子文件

有些时候我们从网上找到一个极具诱惑力的资源的种子,但是不幸的发现最猛的吸血迅雷却打不开这个torrent文件,非常非常的痛苦,这个时候不得不退而求其次,装个相对差一点的BitComet,发现种子文件竟然可以打开了,心情豁然开朗,但是坑爹的是等了半天竟然没有速度,这时候大家的心情我懂的!

这个问题的root cause应该是种子文件被修改,只能特定BT下载客户端才能识别了,八成是为了抵制吸血迅雷,这个时候大家一定都是想,要是能用吸血迅雷打开这个种子该多好啊!

好吧!Hold住!免费传授大家这招,在BitComet的你正在下载的这个任务上,右键->复制磁链,然后到迅雷里新建任务->粘贴,是不是成功了?速度也有了!

也许可以写个脚本生成Magnet URI?今天就不研究了。

空虚,贴一段代码


import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

class Line implements Comparable<Line> {
	int start;
	int end;

	public Line(int start, int end) {
		super();
		this.start = start;
		this.end = end;
	}

	/**
	 * Line l     |----------------------------|
	 * |----|
	 * |----------------|
	 * |-------------------------------------------|
	 *            |-------------------|
	 *            |--------------------------------|
	 *                                        |------------|
	 */
	@Override
	public int compareTo(Line line) {
		if (start < line.start) {
			return -1;
		} else if (end > line.end) { // start >= l.start
			return 1;
		} else if (start == line.start && end == line.end) {
			return 0;
		} else if (start == line.start && end < line.end) {
			return -1;
		} else {// (start > l.start && end <= l.end)
			return 1;
		}
	}

	public boolean isMergeable(Line line) {
		if (end < line.start || start > line.end)
			return false;
		return true;
	}

	public Line merge(Line line) {
		int x = (line.start <= start) ? line.start : start;
		int y = (line.end >= end) ? line.end : end;
		return new Line(x, y);
	}

	@Override
	public String toString() {
		return "[" + start + "," + end + "]";
	}

}

public class MergeAndSort {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		mergeAndSort(new Line[] { new Line(1, 2), new Line(1, 5),
				new Line(2, 8), new Line(4, 7), new Line(3, 9), new Line(4, 5),
				new Line(6, 7), new Line(5, 10) });

		mergeAndSort(new Line[] { new Line(1, 2), new Line(3, 5),
				new Line(7, 8), new Line(4, 7) });

		mergeAndSort(new Line[] { new Line(3, 5), new Line(1, 8),
				new Line(8, 8 ) });
	}

	private static void mergeAndSort(Line[] lineArray) {
		List<Line> lineList = new ArrayList<Line>();
		lineList.addAll(Arrays.asList(lineArray));
		System.out.print("Origin:");
		printLines(lineList);

		Collections.sort(lineList);
		System.out.print("Sorted:");
		printLines(lineList);

		List<Line> mergedList = merge(lineList);
		System.out.print("Merged:");
		printLines(mergedList);
		System.out.println();
	}

	private static List<Line> merge(List<Line> lineList) {
		List<Line> mergedList = new ArrayList<Line>();
		Iterator<Line> itr = lineList.iterator();
		if (itr.hasNext()) {
			Line current = itr.next();
			while (itr.hasNext()) {
				Line next = itr.next();
				if (current.isMergeable(next)) {
					current = current.merge(next);
				} else {
					System.out.println("[DEBUG] current " + current
							+ " can't merge next " + next);
					mergedList.add(current);
					current = next;
				}
			}
			mergedList.add(current);
		}
		return mergedList;
	}

	private static void printLines(List<Line> lineList) {
		for (Line line : lineList) {
			System.out.print(line);
			System.out.print(" ");
		}
		System.out.println();
	}
}


MacOS下安装wget

Mac下的应用程序默认在/Application目录下,且看上去都是以.app结尾的目录,里面有一个binary可执行文件

所有感觉和一般的Linux系统有点不一样,若遵循一般的Linux软件安装流程,有点没有把握的。

实践证明通常的Linux安装软件的方法在此其实也是可以安装成功的:

1. 在gnu下载wget的最新版本压缩包 http://ftp.gnu.org/gnu/wget/

2. $ cd wget-1.12

3. $ configure

4. $ make all

5. $ sudo make install

6. $ which wget

/usr/local/bin/wget

新接触MacOS的人估计和我一样会发现/usr/local/bin之前差不多是空目录,感觉不像Linux原本就存在不少可执行文件,成功之后觉得不是那么理所当然,有点怪怪的感觉。。。

还有一种办法是通过DarwinPorts来安装,这是个类似于ubuntu的包管理器,貌似很容易的样子,目前还么强烈的需求要尝试这玩意。

分享治打嗝秘方一则

晚上从地铁出来之后突然开始打嗝了,平时用的憋气法也不管用。

干吞一汤匙白糖这个办法是之前偶然在报纸上看到的,今天亲自试验了一下,真的有用!见效很快!

糖被证实可以减轻神经肌肉的紧张,避免肌肉发送错误的信息到隔膜,导致横膈膜痉挛性收缩,引起打嗝现象。

由QQ文件中转站超快速上传联想到

今天向QQ文件中转站上传了两个文件,一个30M,一个60M,都发现上传时间仅为1s

猜想了一下,这里应该是有算法的,如果服务器上以及同样的文件了,就不需要用户再上传,而是直接给出文件链接,这样既减轻了服务器压力,又给用户带来惊喜,真的很不错!

然后又联想到,难怪用QQ文件中转站的时候,要求装个客户端,说是能加速文件上传,这个浏览器插件说不定就是用MD5或者CRC32算出上传文件的key值,然后做个ajax请求,如果发现服务器上该文件存在,用户就不需要上传了。