Author Archives: chris

Javascript Array sort 在不同浏览器中的不同表现

昨晚发现了一个让我无法理解事情, 看下面的代码:

var x = [{id:1, val:1}, {id:1, val:32}, {id:1, val:42}];
x.sort(function(a, b){
  console.log(a.val, b.val, a.id <= b.id)
  if (a.id <= b.id){
    return 1;
  }else if (a.id > b.id){
    return -1;
  }
});
console.log(x.map(function(obj){return obj.val;}).join(','));

在IE已经Edge, 1.9.8版本的phantomjs里给出来的结果是: 1,32,42
而在Firefox, Chrome, Nodejs 下给出的是: 42,32,1
在比较函数里插入了一行代码发现了问题所在:

var x = [{id:1, val:1}, {id:1, val:32}, {id:1, val:42}];
x.sort(function(a, b){
  console.log(a.val, b.val, a.id <= b.id)
  if (a.id <= b.id){
    return 1;
  }else if (a.id > b.id){
    return -1;
  }
});
console.log(x.map(function(obj){return obj.val;}).join(','));

c

明显看出IE里a跟b的顺序与其他浏览器里不一样, IE里面是反的, 导致在这种特殊情况下结果的不一致, 看一下msdn与mdn上对于这个的不同描述:
mdn
m

感觉还是mdn上的更好理解, 而且Chrome跟Firefox参数的传入顺序似乎也更符合我们的心理预期.
如果排序过程中打印数值长度, 微软系列的竟然是0. 这也很特别.

[转]面试智力题(下)

12. 两个机器人,初始时位于数轴上的不同位置。给这两个机器人输入一段相同的程序,使得这两个机器人保证可以相遇。程序只能包含“左移n个单位”、“右移n个单位”,条件判断语句If,循环语句while,以及两个返回Boolean值的函数“在自己的起点处”和“在对方的起点处”。你不能使用其它的变量和计数器。

13. 如果叫你从下面两种游戏中选择一种,你选择哪一种?为什么?
a. 写下一句话。如果这句话为真,你将获得10美元;如果这句话为假,你获得的金钱将少于10美元或多于10美元(但不能恰好为10美元)。
b. 写下一句话。不管这句话的真假,你都会得到多于10美元的钱。


14. 你在一幢100层大楼下,有21根电线线头标有数字1..21。这些电线一直延伸到大楼楼顶,楼顶的线头处标有字母A..U。你不知道下面的数字和上面的字母的对应关系。你有一个电池,一个灯泡,和许多很短的电线。如何只上下楼一次就能确定电线线头的对应关系?
15. 某种药方要求非常严格,你每天需要同时服用A、B两种药片各一颗,不能多也不能少。这种药非常贵,你不希望有任何一点的浪费。一天,你打开装药片A的药瓶,倒出一粒药片放在手心;然后打开另一个药瓶,但不小心倒出了两粒药片。现在,你手心上有一颗药片A,两颗药片B,并且你无法区别哪个是A,哪个是B。你如何才能严格遵循药方服用药片,并且不能有任何的浪费?
16. 你在一个飞船上,飞船上的计算机有n个处理器。突然,飞船受到外星激光武器的攻击,一些处理器被损坏了。你知道有超过一半的处理器仍然是好的。你可以向一个处理器询问另一个处理器是好的还是坏的。一个好的处理器总是说真话,一个坏的处理器总是说假话。用n-2次询问找出一个好的处理器。
17. 一个圆盘被涂上了黑白二色,两种颜色各占一个半圆。圆盘以一个未知的速度、按一个未知的方向旋转。你有一种特殊的相机可以让你即时观察到圆上的一个点的颜色。你需要多少个相机才能确定圆盘旋转的方向?
 

 

 

 

 

 

 

 

 

 

 

 

 

答案:

12.  两个机器人同时开始以单位速度右移,直到一个机器人走到另外一个机器人的起点处。然后,该机器人以双倍速度追赶对方。程序如下。

while(!at_other_robots_start) {
move_right 1
}
while(true) {
move_right 2
}
13. 选择第一种游戏,并写下“我既不会得到10美元,也不会得到10000000美元”。

14. 在下面把2,3连在一起,把4到6全连在一起,把7到10全连在一起,等等,这样你就把电线分成了6个“等价类”,大小分别为1, 2, 3, 4, 5, 6。然后到楼顶,测出哪根线和其它所有电线都不相连,哪些线和另外一根相连,哪些线和另外两根相连,等等,从而确定出字母A..U各属于哪个等价类。现在,把每个等价类中的第一个字母连在一起,形成一个大小为6的新等价类;再把后5个等价类中的第二个字母连在一起,形成一个大小为5的新等价类;以此类推。回到楼下,把新的等价类区别出来。这样,你就知道了每个数字对应了哪一个原等价类的第几个字母,从而解决问题。

15. 把手上的三片药各自切成两半,分成两堆摆放。再取出一粒药片A,也把它切成两半,然后在每一堆里加上半片的A。现在,每一堆药片恰好包含两个半片的A和两个半片的B。一天服用其中一堆即可。

16. 给处理器从1到n标号。用符号a→b表示向标号为a的处理器询问处理器b是不是好的。首先问1→2,如果1说不是,就把他们俩都去掉(去掉了一个好的和一个坏的,则剩下的处理器中好的仍然过半),然后从3→4开始继续发问。如果1说2是好的,就继续问2→3,3→4,……直到某一次j说j+1是坏的,把j和j+1去掉,然后问j-1 → j+2;或者从j+2 → j+3开始发问,如果前面已经没有j-1了(之前已经被去掉过了)。注意到你始终维护着这样一个“链”,前面的每一个处理器都说后面那个是好的。这条链里的所有处理器要么都是好的,要么都是坏的。当这条链越来越长,剩下的处理器越来越少时,总有一个时候这条链超过了剩下的处理器的一半,此时可以肯定这条链里的所有处理器都是好的。或者,越来越多的处理器都被去掉了,链的长度依旧为0,而最后只剩下一个或两个处理器没被问过,那他们一定就是好的了。另外注意到,第一个处理器的好坏从来没被问过,仔细想想你会发现最后一个处理器的好坏也不可能被问到(一旦链长超过剩余处理器的一半,或者最后没被去掉的就只剩这一个了时,你就不问了),因此询问次数不会超过n-2。

17. 你可以把两个相机放在圆盘上相近的两点,然后观察哪个点先变色。事实上,只需要一个相机就够了。控制相机绕圆盘中心顺时针移动,观察颜色多久变一次;然后让相机以相同的速度逆时针绕着圆盘中心移动,再次观察变色的频率。可以断定,变色频率较慢的那一次,相机的转动方向是和圆盘相同的。

[转]面试智力题(上)

1. 考虑一个双人游戏。游戏在一个圆桌上进行。每个游戏者都有足够多的硬币。他们需要在桌子上轮流放置硬币,每次必需且只能放置一枚硬币,要求硬币完全置于桌面内(不能有一部分悬在桌子外面),并且不能与原来放过的硬币重叠。谁没有地方放置新的硬币,谁就输了。游戏的先行者还是后行者有必胜策略?这种策略是什么?

2. 用线性时间和常数附加空间将一篇文章的单词(不是字符)倒序。

3. 用线性时间和常数附加空间将一个长度为n的字符串向左循环移动m位(例如,”abcdefg”移动3位就变成了”defgabc”)。

4. 一个矩形蛋糕,蛋糕内部有一块矩形的空洞。只用一刀,如何将蛋糕切成大小相等的两块?

5. 一块矩形的巧克力,初始时由N x M个小块组成。每一次你只能把一块巧克力掰成两个小矩形。最少需要几次才能把它们掰成N x M块1×1的小巧克力?

6. 如何快速找出一个32位整数的二进制表达里有多少个”1″?用关于”1″的个数的线性时间?

7. 一个大小为N的数组,所有数都是不超过N-1的正整数。用O(N)的时间找出重复的那个数(假设只有一个)。一个大小为N的数组,所有数都是不超过N+1的正整数。用O(N)的时间找出没有出现过的那个数(假设只有一个)。

8. 给出一行C语言表达式,判断给定的整数是否是一个2的幂。

9. 地球上有多少个点,使得从该点出发向南走一英里,向东走一英里,再向北走一英里之后恰好回到了起点?

10. A、B两人分别在两座岛上。B生病了,A有B所需要的药。C有一艘小船和一个可以上锁的箱子。C愿意在A和B之间运东西,但东西只能放在箱子里。只要箱子没被上锁,C都会偷走箱子里的东西,不管箱子里有什么。如果A和B各自有一把锁和只能开自己那把锁的钥匙,A应该如何把东西安全递交给B?

11. 一对夫妇邀请N-1对夫妇参加聚会(因此聚会上总共有2N人)。每个人都和所有自己不认识的人握了一次手。然后,男主人问其余所有人(共2N-1个人)各自都握了几次手,得到的答案全部都不一样。假设每个人都认识自己的配偶,那么女主人握了几次手?

 

 

 

 

 

 

 

 

 

 

 

答案:

  1. 先行者在桌子中心放置一枚硬币,以后的硬币总是放在与后行者刚才放的地方相对称的位置。这样,只要后行者能放,先行者一定也有地方放。先行者必胜。
  2. 先将整篇文章的所有字符逆序(从两头起不断交换位置相对称的字符);然后用同样的办法将每个单词内部的字符逆序。这样,整篇文章的单词顺序颠倒了,但单词本身又被转回来了。
  3. 把字符串切成长为m和n-m的两半。将这两个部分分别逆序,再对整个字符串逆序。
  4. 注意到平分矩形面积的线都经过矩形的中心。过大矩形和空心矩形各自的中心画一条线,这条线显然把两个矩形都分成了一半,它们的差当然也是相等的。
  5. N x M – 1次显然足够了。这个数目也是必需的,因为每掰一次后当前巧克力的块数只能增加一,把巧克力分成N x M块当然需要至少掰N x M – 1次。
  6. 答案1(关于数字位数线性):for(n=0; b; b >>= 1) if (b & 1) n++;
    答案2(关于”1″的个数线性):for(n=0; b; n++) b &= b-1;
  7. 计算数组中的所有数的和,再计算出从1到N-1的所有数的和,两者之差即为重复的那个数。计算数组中的所有数的和,再计算出从1到N+1的所有数的和,两者之差即为缺少的那个数。
  8. (b & (b-1)) == 0
  9. “北极点”是一个传统的答案,其实这个问题还有其它的答案。事实上,满足要求的点有无穷多个。所有距离南极点1 + 1/(2π)英里的地方都是满足要求的,向南走一英里后到达距离南极点1/(2π)的地方,向东走一英里后正好绕行纬度圈一周,再向北走原路返回到起点。事实上,这仍然不是满足要求的全部点。距离南极点1 + 1/(2kπ)的地方都是可以的,其中k可以是任意一个正整数。
  10. A把药放进箱子,用自己的锁把箱子锁上。B拿到箱子后,再在箱子上加一把自己的锁。箱子运回A后,A取下自己的锁。箱子再运到B手中时,B取下自己的锁,获得药物。
  11. 握手次数只可能是从0到2N-2这2N-1个数。除去男主人外,一共有2N-1个人,因此每个数恰好出现了一次。其中有一个人(0)没有握手,有一个人(2N-2)和所有其它的夫妇都握了手。这两个人肯定是一对夫妻,否则后者将和前者握手(从而前者的握手次数不再是0)。除去这对夫妻外,有一个人(1)只与(2N-2)握过手,有一个人(2N-3)和除了(0)以外的其它夫妇都握了手。这两个人肯定是一对夫妻,否则后者将和前者握手(从而前者的握手次数不再是1)。以此类推,直到握过N-2次手的人和握过N次手的人配成一对。此时,除了男主人及其配偶以外,其余所有人都已经配对。根据排除法,最后剩下来的那个握手次数为N-1的人就是女主人了。

Ubuntu 过期版本更新

Ubuntu 如果某个版本的生命周期已经结束, 更新就没法进行了, 会出现类似下面的错误:

mohd-arafat-hossain@TUD:~$ sudo apt-get update
[sudo] password for mohd-arafat-hossain:
Ign http://bd.archive.ubuntu.com precise InRelease
Ign http://bd.archive.ubuntu.com precise-updates InRelease                     
Ign http://bd.archive.ubuntu.com precise-backports InRelease                   
Ign http://bd.archive.ubuntu.com precise Release.gpg                           
Ign http://bd.archive.ubuntu.com precise-updates Release.gpg                   
Ign http://bd.archive.ubuntu.com precise-backports Release.gpg                 
Ign http://bd.archive.ubuntu.com precise Release                               
Ign http://bd.archive.ubuntu.com precise-updates Release                       
Ign http://bd.archive.ubuntu.com precise-backports Release                     
Ign http://extras.ubuntu.com precise InRelease                                 
Ign http://ppa.launchpad.net precise InRelease                                 
Hit http://extras.ubuntu.com precise Release.gpg                     
Hit http://ppa.launchpad.net precise Release.gpg                     
Hit http://extras.ubuntu.com precise Release                         
Hit http://ppa.launchpad.net precise Release                                   
Hit http://extras.ubuntu.com precise/main Sources                              
Hit http://bd.archive.ubuntu.com precise/main TranslationIndex                 
Hit http://ppa.launchpad.net precise/main Sources                              
Hit http://bd.archive.ubuntu.com precise/multiverse TranslationIndex           
Hit http://bd.archive.ubuntu.com precise/restricted TranslationIndex           
Hit http://extras.ubuntu.com precise/main i386 Packages              
Ign http://extras.ubuntu.com precise/main TranslationIndex                     
Hit http://bd.archive.ubuntu.com precise/universe TranslationIndex             
Hit http://ppa.launchpad.net precise/main i386 Packages                        
Ign http://ppa.launchpad.net precise/main TranslationIndex                     
Ign http://security.ubuntu.com precise-security InRelease                      
Hit http://security.ubuntu.com precise-security Release.gpg                    
Hit http://bd.archive.ubuntu.com precise-updates/main TranslationIndex         
Hit http://security.ubuntu.com precise-security Release                        
Hit http://bd.archive.ubuntu.com precise-updates/multiverse TranslationIndex   
Hit http://bd.archive.ubuntu.com precise-updates/restricted TranslationIndex   
Hit http://bd.archive.ubuntu.com precise-updates/universe TranslationIndex
Hit http://security.ubuntu.com precise-security/main Sources         
Ign http://extras.ubuntu.com precise/main Translation-en_US                    
Ign http://ppa.launchpad.net precise/main Translation-en_US                    
Ign http://extras.ubuntu.com precise/main Translation-en             
Hit http://bd.archive.ubuntu.com precise-backports/main TranslationIndex
Hit http://bd.archive.ubuntu.com precise-backports/multiverse TranslationIndex
Hit http://bd.archive.ubuntu.com precise-backports/restricted TranslationIndex
Ign http://ppa.launchpad.net precise/main Translation-en
Hit http://bd.archive.ubuntu.com precise-backports/universe TranslationIndex   
Hit http://bd.archive.ubuntu.com precise/main Translation-en                   
Hit http://bd.archive.ubuntu.com precise/multiverse Translation-en             
Hit http://bd.archive.ubuntu.com precise/restricted Translation-en
Hit http://bd.archive.ubuntu.com precise/universe Translation-en
Hit http://security.ubuntu.com precise-security/restricted Sources             
Hit http://security.ubuntu.com precise-security/universe Sources               
Hit http://security.ubuntu.com precise-security/multiverse Sources             
Hit http://security.ubuntu.com precise-security/main i386 Packages             
Hit http://security.ubuntu.com precise-security/restricted i386 Packages
Hit http://bd.archive.ubuntu.com precise-updates/main Translation-en           
Hit http://bd.archive.ubuntu.com precise-updates/multiverse Translation-en     
Hit http://security.ubuntu.com precise-security/universe i386 Packages
Hit http://security.ubuntu.com precise-security/multiverse i386 Packages
Hit http://security.ubuntu.com precise-security/main TranslationIndex
Hit http://security.ubuntu.com precise-security/multiverse TranslationIndex    
Hit http://security.ubuntu.com precise-security/restricted TranslationIndex    
Hit http://security.ubuntu.com precise-security/universe TranslationIndex      
Hit http://bd.archive.ubuntu.com precise-updates/restricted Translation-en     
Hit http://bd.archive.ubuntu.com precise-updates/universe Translation-en       
Hit http://security.ubuntu.com precise-security/main Translation-en
Hit http://security.ubuntu.com precise-security/multiverse Translation-en      
Hit http://security.ubuntu.com precise-security/restricted Translation-en      
Hit http://security.ubuntu.com precise-security/universe Translation-en        
Hit http://bd.archive.ubuntu.com precise-backports/main Translation-en         
Hit http://bd.archive.ubuntu.com precise-backports/multiverse Translation-en
Hit http://bd.archive.ubuntu.com precise-backports/restricted Translation-en
Hit http://bd.archive.ubuntu.com precise-backports/universe Translation-en
Err http://bd.archive.ubuntu.com precise/main Sources     
  404  Not Found
Err http://bd.archive.ubuntu.com precise/restricted Sources
  404  Not Found
Err http://bd.archive.ubuntu.com precise/universe Sources
  404  Not Found
Err http://bd.archive.ubuntu.com precise/multiverse Sources
  404  Not Found
Err http://bd.archive.ubuntu.com precise/main i386 Packages
  404  Not Found
Err http://bd.archive.ubuntu.com precise/restricted i386 Packages
  404  Not Found
Err http://bd.archive.ubuntu.com precise/universe i386 Packages
  404  Not Found
Err http://bd.archive.ubuntu.com precise/multiverse i386 Packages
  404  Not Found
Err http://bd.archive.ubuntu.com precise-updates/main Sources
  404  Not Found
Err http://bd.archive.ubuntu.com precise-updates/restricted Sources
  404  Not Found
Err http://bd.archive.ubuntu.com precise-updates/universe Sources
  404  Not Found
Err http://bd.archive.ubuntu.com precise-updates/multiverse Sources
  404  Not Found
Err http://bd.archive.ubuntu.com precise-updates/main i386 Packages
  404  Not Found
Err http://bd.archive.ubuntu.com precise-updates/restricted i386 Packages
  404  Not Found
Err http://bd.archive.ubuntu.com precise-updates/universe i386 Packages
  404  Not Found
Err http://bd.archive.ubuntu.com precise-updates/multiverse i386 Packages
  404  Not Found
Err http://bd.archive.ubuntu.com precise-backports/main Sources
  404  Not Found
Err http://bd.archive.ubuntu.com precise-backports/restricted Sources
  404  Not Found
Err http://bd.archive.ubuntu.com precise-backports/universe Sources
  404  Not Found
Err http://bd.archive.ubuntu.com precise-backports/multiverse Sources
  404  Not Found
Err http://bd.archive.ubuntu.com precise-backports/main i386 Packages
  404  Not Found
Err http://bd.archive.ubuntu.com precise-backports/restricted i386 Packages
  404  Not Found
Err http://bd.archive.ubuntu.com precise-backports/universe i386 Packages
  404  Not Found
Err http://bd.archive.ubuntu.com precise-backports/multiverse i386 Packages
  404  Not Found
W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise/main/source/Sources  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise/restricted/source/Sources  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise/universe/source/Sources  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise/multiverse/source/Sources  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise/main/binary-i386/Packages  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise/restricted/binary-i386/Packages  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise/universe/binary-i386/Packages  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise/multiverse/binary-i386/Packages  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-updates/main/source/Sources  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-updates/restricted/source/Sources  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-updates/universe/source/Sources  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-updates/multiverse/source/Sources  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-updates/main/binary-i386/Packages  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-updates/restricted/binary-i386/Packages  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-updates/universe/binary-i386/Packages  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-updates/multiverse/binary-i386/Packages  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-backports/main/source/Sources  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-backports/restricted/source/Sources  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-backports/universe/source/Sources  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-backports/multiverse/source/Sources  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-backports/main/binary-i386/Packages  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-backports/restricted/binary-i386/Packages  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-backports/universe/binary-i386/Packages  404  Not Found

W: Failed to fetch http://bd.archive.ubuntu.com/ubuntu/dists/precise-backports/multiverse/binary-i386/Packages  404  Not Found

E: Some index files failed to download. They have been ignored, or old ones used instead.

可以用如下的方法解决:

  • 备份先有的配置文件:
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  • 替换源地址:
    sudo sed -i -e 's/ca.archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list

    这里的 ca.archive.ubuntu.com 就是之前在更新时提示错误的 url 里的一部分, 根据实际情况替换.

  • 运行更新命令:
    sudo apt-get update

go语言中string、int、int64互相转换

GO语言里面的函数名称的命名都挺。。。那个。。。让人难以理解。。。以至于很简单的事情却不知道如何下手。。。

转载自: http://www.marswj.com/post/53/Go-language-string-int-Int64-conversion

#string到int
int,err:=strconv.Atoi(string)
#string到int64
int64, err := strconv.ParseInt(string, 10, 64)
#int到string
string:=strconv.Itoa(int)
#int64到string
string:=strconv.FormatInt(int64,10)

Ubuntu 15.04 上安装最新版本 mongodb

1

Import the public key used by the package management system.

The Ubuntu package management tools (i.e. dpkg and apt) ensure package consistency and authenticity by requiring that distributors sign packages with GPG keys. Issue the following command to import the MongoDB public GPG Key:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
2

Create a list file for MongoDB.

Create the /etc/apt/sources.list.d/mongodb-org-3.0.list list file using the following command:

echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
3

Reload local package database.

Issue the following command to reload the local package database:

sudo apt-get update
4

Install the MongoDB packages.

You can install either the latest stable version of MongoDB or a specific version of MongoDB.

Install the latest stable version of MongoDB.

Issue the following command:

sudo apt-get install -y mongodb-org

Ubuntu 上安装最新版本的 ffmpeg

Install FFmpeg 2.7 Multimedia Framework and convert multimedia files on Linux Ubuntu Systems. Install FFmpeg 2.7 on Ubuntu 15.04, Ubuntu 14.04 and Derivatives. Below are the Terminal commands to upgrade to FFmpeg 2.7 on Linux.

FFmpeg 2.7 is a popular cross-platform solution to record, convert and stream audio and video. It includes libavcodec – the leading audio/video codec library.

FFmpeg 2.7 on Ubuntu 15.04

Run the following commands in Terminal to install FFmpeg 2.7 on Ubuntu 15.04, Ubuntu 14.04, Linux Mint 17.2, Linux Mint 17.1, Linux Mint 17 and Derivatives:

$ sudo apt-add-repository ppa:samrog131/ppa
$ sudo apt-get update
$ sudo apt-get install ffmpeg-real
$ sudo ln -sf /opt/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg

If you wish to uninstall and remove the FFmpeg 2.7 from Linux Ubuntu Systems, run the following command in Terminal:

$ sudo apt-get remove ffmpeg
$ sudo rm /opt/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg

Install FFmpeg on Debian 8.0 Jessie

Run the following commands in Terminal to install FFmpeg 2.7 on Debian 8.0 Jessie:

$ sudo sh -c 'echo "deb http://www.deb-multimedia.org jessie main" >> /etc/apt/sources.list'
$ sudo apt-get update
$ sudo apt-get install deb-multimedia-keyring
$ sudo apt-get install ffmpeg

If you wish to uninstall and remove the FFmpeg 2.7 from Debian 8.0 Jessie, run the following command:

$ sudo apt-get remove ffmpeg
$ sudo rm /opt/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg

Install FFmpeg on Fedora 22

Run the following command to install the latest FFmpeg version (FFmpeg 2.7 “Nash”) on Fedora 22:


$ sudo yum install http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-22.noarch.rpm
$ sudo yum update
$ sudo yum install ffmpeg

Install FFmpeg on Fedora 21

Run the following command to install the latest FFmpeg version (FFmpeg 2.7 “Nash”) on Fedora 21:

$ sudo yum install http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-21.noarch.rpm
$ sudo yum update
$ sudo yum install ffmpeg

If you wish to uninstall and remove the FFmpeg 2.7 from Fedora Systems, run the following command:

$ sudo yum remove ffmpeg

比AngularJS 更简单好用的前端框架Aurelia

AugularJS我用得并不多,但是,我的感觉是学习曲线挺陡峭的,需要理解他的那一堆的概念。在试图解决一个问题时引入了太多更复杂的东西,有点让人怀疑这样做是否值得。另外,Angular自己不包含模块加载的功能,需要依赖其他的库,比如requirejs。不过这样一来,angular的代码就更不清晰了,一层套一层,到处都是花括号,哪边要写错了,就头大了。
相比AngularJS,这个由前AngularJS开发团队成员开发的新的前端框架Aurelia就显示出很多优势:
1. 使用Typescript或者ES6/ES7的语法,这样让代码的可读性简洁度都有明显的提高;
2. 通过SystemJS等库提供默认的模块加载支持,比起requirejs等,这种加载模式更简单;
3. 省去了AngularJS的很多概念,很容易上手,一切代码都显得那么得优雅;
4. 对其他JS库的支持非常好, 尤其是很多nodejs下的库也可以拿过来用。

当然也有一些劣势:
1. 社区还没有AngularJS的大;
2. 由于使用了很多html5新的特性,导致对浏览器的兼容性支持较差。

Aurelia官网:http://aurelia.io/

Photoshop 中的生成器

现在的Photoshop中多了一个生成器的功能,自带的Image Assets可以让图片自动导成,只要PS文件里的图层按一定的规则命名即可,导出的速度也是出奇的快,这一点还挺怪异,按道理,最终它还是以jsx的方式来执行,但是用jsx来导成图片,那是出奇的慢,哪怕只是遍历一下所有的图层,如果PS文件大,图层比较多的话,也能导致软件卡着好半天。
不过有了这玩意,以前老师教的什么切图的方法就再也不需要了,做网页切图变得超级简单。不过自带的Image Assets是没有办法生成图片位置等信息,其实如果能把图片位置信息导出成CSS文件,那么,PS文件做好的时候,网页也就基本OK了。好在Image Assets这玩意是开源的,你可以依据它修改一个能导成CSS文件或者JSON文件的生成器。现在的Adobe系的插件开发基本上都改成基于Nodejs的技术了,比起之前的使用SWF做插件,确实是好了很多。

关于灵魂的一点思考

哥今晚又失眠了,又是被一个已经不记得内容的恶梦给吓醒的吧,这次醒后,没有思考怎么找妹子,也没思考怎么把工作做得更好,大脑不自主地开始想灵魂这是个嘛玩艺,这个可是千古未解之迷喽,凭咱这个一个程序员,靠失眠的这会功夫自然是无法解开的了,但是,咱平时也算是对这此东西有点兴趣,思考思考也无防。

哥是一名程序员,所以思维时自然也总会联想到电脑这种神奇的设备。或许世界上很多东西的原理都是相通的吧。这次思维的起点就是我在想世界上所有的物质似乎是不可被凭空复制出来的,童话里把一块钱放里去会出二块钱的罐子现实中听说过但是还没见过识呢。但是,想想电脑里的数据,我们一旦忽略掉电脑内部的动作过程,只看结果,那就是一份数据可以轻松变成两份,三份,N份。这个过程就显得特别的神奇了,也就变得不可理解了。就像某些巫术大师或者魔术大师们使用一些一般人不了解的化学反应或者是物理原理像变戏法一样糊弄一些不知情的人。不过,如果我们不去解释数据到底是一个什么东西,而看它的物理表现:”硬盘里的01的表示“,那它能被轻松复制的过程就变得没有什么稀奇的了。

说来电脑确实神奇,如果我们忽略掉或者看不到远程控制电脑的那个人,或者忽略掉电脑里那些预置好的”智能“软件,把它放回到另一个还处理原始社会的星球,那么那些人一定会把它当成是另一种生命体的,所以对于”什么是生命“这个问题,书中的“拥用细胞结构”只是一种归纳,并非演绎证明。

那么灵魂或者孤魂,黄大仙,狐狸精什么的又是什么呢?写程序时,有一个原则,那就是如果一个问题你没办法解决,引进一个第三者或者中间者,往往问题就可以被解决了。同样,对于解释这样的问题,哥也得引入一个第三者,那它是什么呢?

其实吧,哥不知道也知道它是个什么。为什么说哥不知道呢,因为哥确实就不知道嘛,要知道,哥都不做程序员了,哥就有更赚钱的事要做,哥还有拯救地球的事要做了,也不愁英雄找不到妹子了。

但是哥为什么说知道呢,因为哥把这玩艺与电脑的工作方式联系起来后发现有着惊人的相似性,似乎能解释很多哥想不明白的事情,那些动不动就被那些所谓相信科学的人用什么随机啦,心理作用了之类解释的事情。

刚才说了,电脑如果我们直接看它,我们可能会把它当成一个生命体,但是傻子也知道它不是,就算它表现得再像,但是。。。为什么你偏说它不是呢,原因不是什么他没细胞结构,他不能新陈代谢之类的屁话,真正的原因是你知道有一个“人”在控制他,如果没了这个控制他的人,它只能死板地在那运作,一切后续的行为理论上都是可知的,既定的(似乎随机行为对判定生命体是一种重要依据)。就像你点头鞭炮他就会炸,你骑自行车他就会跑是一样的。

好吧,来类比一下,现在我们把人的躯体看着是这电脑,他俩是等价的;灵魂看着就是那个控制电脑的人,它控制着我们的身体,但是它是个什么,暂且不管了,哥也不知道。等一下。。。不是说人是靠大脑控制的吗?好吧。。。那电脑是靠CPU发出一切的指令的。除此,人的大脑还有记忆功能,当然电脑的硬盘也有记忆功能。

哥试着拿这种电脑==躯体,人==灵魂的模式思考了一点问题,似乎还挺好使:

灵魂附体说,这个哥还真没见过,不过用这模式解释也挺好解释的,某人的电脑已经坏了,被送到火葬场烧掉了,但是这人嘛,也有些事情没做完,恋恋不忘,又不想去睡觉,此时,某个好心的同事愿意将自己的电脑让出来让他暂时用一下,也可能他这同事好弱小,好欺负,他趁人不备,霸占了过来,所以他就借这个别人的电脑与远程的其他电脑联系了一下,把该说的话给说了,但是呢,毕竟电脑是别人的,他只能借着聊聊天什么的,人家也不给在上面乱装软件什么的,上面已经装的软件什么的也不太熟悉,不太会用。数据什么的还都加了密码,很难破解。偶尔这家伙很厉害,是一个电脑高手,他能轻松破解密码,还在里面做了很多手脚,最后直接导致电脑主人都用不了这电脑了。。。或许这就是恶鬼缠身了。

人死了,数据在大脑中,思维也在大脑中,如果人有灵魂,那么灵魂的记忆思维又是从何而来。这个其实很简单,死的是那台电脑,时间长了,坏了,到火葬场烧了,回归自然了,但是,操作电脑的那个人他暂时还没死,也没想去睡觉,他的大脑里记住了一些他印象深刻的数据,于是此人没人电脑,虽然不能做事了,但是银行密码什么的,家人信息什么的还是记住的,一旦有机会,他还是有办法通过某些途径把这信息发出去的,像什么灵魂附体,托梦啊什么的。如果这人在电脑死了后很长时间不去睡觉,还在想着办自己的事情,到处游荡,那就是游魂野鬼了。

黄大仙,狐狸精真的有吗?想象一个极客或者黑客,他的电脑坏了,并且手头也没什么好的电脑,于是就找一个单片机吧,用它也可以去黑别人的电脑,做很多普通的单片机做不了的事。

就哥来说,有一件事一直想不明白,就是人被吓着了,各地方有着不一样的做法,有些人根本是从来都没听说过这事,但是却也健康活到现在。有些人却因为被吓着了,最后都会死。或许唯物论们会很容易的以什么心理作用一类的话来解释,但是,为什么一些还不懂事的小孩子也会在惊吓后出现症状并且是一般的医药无法医好的?想象一下,一个师傅带了一个徒弟,他先告诉徒弟的就是什么样子就是电脑出了故障需要维修,或者出现电脑无响应什么的情况应该如何处理。当然每个师傅会有自己的经验,他们会有不一样的处理方式,某些人相信医药,某些人相信鬼神。徒弟虽然刚出世,但是依然知道这个很重要,于是潜意识里就已经学会了,或者直接就遗传了,像鸭子一出生就会游泳一样。所以,当他们被吓着时,遗传的经验或者潜意识里从师傅那学来的经验告诉了他处理的办法。有些徒弟会认为被吓一下没什么,也就没什么了。而有一些严重的可能会认为这电脑坏了,不能用了,于是抛弃了,那就死掉了。这可能就是人们老说的“信则灵,不信则不灵”吧,我想宗教什么也应该也是同理可以解释的吧。

灵魂是物质的还是非物质的?这个问题似乎也很难回答,不过想象一下数据是物质的还是非物质的呢?一堆没了物理介质就无法存在的东西,但是却又不依赖于任何具体的物质介质。把一份数据从一处称到另一处,它依然是它。所以,我更相信灵魂本身应该是一种物质或者是暗物质一类的东西或者就像是电脑数据一样的东西。

外面天还没亮,不过,没灵感,写不下去了,就先写到这,回头想想更多的例子。至于这个坐在电脑前的人是个什么东西,这个得等科学家们研究了,咱是出不了答案了,或许是一种比人类看上去更低级的东西?或许他们没有人类这个好的记忆,却有着比我们更好的随机性,能在一些临界点的位置触发更多的思维点,触发人的大脑去思维运算。或许这也是为什么各种族原始社会时会有一些崇拜低等生物的现象了。