Living a Simple Life is a Happy Life

Been here so long got to calling it home.

How to Sort Big Files

| Comments

在linux要排序一个100G的文件,压力比较大

并行解决之:

1
sort -S 50% --parallel=2 -uo list-sorted.txt list.txt

注意这一招在管道里面行不通,所以要用管道的话一定要先重定向到一个文件里面中转一下。

How to Dump Csv From Sqlite3

| Comments

1
2
3
4
5
6
7
8
#!/bin/bash

/usr/bin/sqlite3 test.db <<!
.headers on
.mode csv
.output out.csv
select username,password,email from passhouse order by site;
!

谈谈比特币的地址安全问题

| Comments

比特币的地址生成过程分为以下几个步骤:

  1. 随机生成一个32字节(256bits)的私钥k

  2. 采用椭圆曲线算法,以私钥k为起点,将其与曲线上预定的生成点G相乘以获得曲线上的另一点,也就是相应的公钥 K

  3. 进一步SHA256=>RIPEMD160 得到地址原始值A: A = RIPEMD160(SHA256(K))

  4. 对A进行Base58Check编码,添加前置版本号后Double SHA256取最后四个字节作为校验位,最后 Base58Check(前缀+Base58Check(A)+校验)得到最终地址

整个过程中,私钥的生成空间有256bits,由私钥推出地址过程中,由于用到了RIPEMD160散列,所以生成空间共有160bits。

也就是说,去除版本号变化,某一类型的比特币地址最多有 2160个。

为什么有步骤3呢,不光增加了地址复杂度,还降低了HASH碰撞空间(从256bits降到160bits)。

所以中本聪的选择只是带来了不必要的复杂度和浪费吗?最后证明,答案是否定的。有另外一个非常好的理由去使用这个”公钥的哈希值”的地址结构:量子加密技术。量子计算机可以破解椭圆曲线数字签名算法(也就是说,给定一个公钥,量子计算机可以相当快速的找到对应的私钥),但它们不能相类似的逆转哈希算法(或者说他们可以,但是将需要花掉280个步骤来完成一个比特币地址的破解,这仍然是相当不可行的)。因此,如果你的比特币资金存放在一个你没有支出过的地址里(这意味着公钥是没有公开的),它们在量子计算机面前也就是安全的,至少在你把它们花掉之前。有理论上的途径可以让比特币完全免于量子计算机的威胁,但一个地址只是一个公钥的哈希值的事实,意味着一旦量子计算机真的出现了,在我们全面切换之前攻击者可以造成的损失要小得多。

请参考:

http://www.8btc.com/satoshis-genius-unexpected-ways-in-which-bitcoin-dodged-some-cryptographic-bullet

Disable Performance_schema to Save Mysql’s Memory

| Comments

小VPS内存一般都不大,比如 1GB 什么的。估计总是发现装完 LAMP 就基本上内存全用光了。

访问量不大的话,可以在 my.conf 中加入以下配置,关掉性能优化。

1
2
[mysqld]
performance_schema=off

Enable Multiusers Support for Win10

| Comments

自从买了套正版Win10,感觉又回归软粉行列。这就是所谓的屁股决定脑袋。

开了hyper-v,日常使用足够了,我感觉hyper-v的虚拟化可能真的是Vmware的有力竞争对手。

然后WSL的横空出世,让人调侃win10将变成最好的Linux发行版,此言不虚啊。

最后我寻寻觅觅,找到了一个RDP多用户支持的工具:

https://github.com/stascorp/rdpwrap

妥妥的把Win10变成了Win2012 Server。

现在Win10日常使用组件好评度爆表依次为:

  • 多桌面

  • hyper-v

  • WSL

  • RDP