查看微信 OpenID 的简单方法

最简单的方法:使用sougou的微信搜索功能 http://weixin.sogou.com/

查看微信openID的简单方法

Look: 看到openID了哇

Ubuntu 切换 JDK 版本

Install

sudo update-alternatives --install /usr/bin/java java /opt/jdk1.7.0_67/bin/java 50
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.7.0_67/bin/javac 50
sudo update-alternatives --install /usr/bin/javah javah /opt/jdk1.7.0_67/bin/javah 50
sudo update-alternatives --install /usr/bin/javaws javaws /opt/jdk1.7.0_67/bin/javaws 50
sudo update-alternatives --install /usr/bin/javap javap /opt/jdk1.7.0_67/bin/javap 50

Config

sudo update-alternatives --config javac
sudo update-alternatives --config java
sudo update-alternatives --config javaws
sudo update-alternatives --config javap
sudo update-alternatives --config jar
sudo update-alternatives --config jarsigner

Swift 中强引用、弱引用、无主引用使用规则

  • 两个属性的值都可能是 nil, 并有可能产生强引用环。这种场景下适合使用弱引用。
  • 一个属性可以是 nil,另外一个属性不允许是 nil, 并有可能产生强引用环。这种场景下适合使用无主引用。
  • 两个属性都必须有值,且初始化完成后不能为 nil, 这种场景下要一个类用无主引用属性,另一个类用隐式展开的可选属性。

Linux Zip 乱码

  • Install 7-zip
    sudo apt-get install p7zip-full
    
  • Install convmv
    sudo apt-get install convmv
    
  • Unzip
    LANG=C 7z e somefile.zip
    
  • Convert
    convmv -f gbk -t utf8 -r --notest *
    

Swift 属性监视器

class StepCounter {
    var totalSteps: Int = 0 {
        //可省略newTotalSteps,swift默认为newValue,在didSet中的oldValue就是使用了swift的默认值
        willSet(newTotalSteps) {
            println("TotalSteps = \(newTotalSteps)")
        }
        didSet {
            if totalSteps > oldValue {
                println("Added \(totalSteps - oldValue) steps")
            }
        }
    }
}

let stepCounter = StepCounter()
stepCounter.totalSteps = 100
stepCounter.totalSteps = 200
stepCounter.totalSteps = 300

Output

TotalSteps = 100
Added 100 steps
TotalSteps = 200
Added 100 steps
TotalSteps = 300
Added 100 steps