可在Mac上使用的IC卡讀卡機

整理一下可以在Mac上使用的IC卡讀卡機,目前是用 MacBook Pro 2015 mid , OS 是 OS X El Capitan 10.11.6 ,瀏覽器是 Safari ,用這個為準。

正常,常用

  • 虹堡科技 EZ100PU IC卡讀卡機 (顯示:CASTLES EZ100PU)
  • 逸盛科技 CR8 ATM智慧晶片讀卡機 17-SCR680 (顯示:Generic Smart Card)

可用,少用

  • 明桓 DigiFusion ATM+SIM ALL IN 1 CardReader 沒有型號 (似乎是裝RU035的驅動程式,年代久遠不確定) (顯示:MSI StarReader SMA)
  • 勁成 EasyATM Joy One 全功能記憶卡ATM晶片讀卡機 FPR0460202-011 (顯示:MSI StarReader SMA)

蔡英文總統就職演說全文

from http://www.appledaily.com.tw/realtimenews/article/new/20160520/866215/

各位友邦的元首與貴賓、各國駐台使節及代表、現場的好朋友,全體國人同胞,大家好

感謝與承擔

就在剛剛,我和陳建仁已經在總統府裡面,正式宣誓就任中華民國第十四任總統與副總統。我們要感謝這塊土地對我們的栽培,感謝人民對我們的信任,以及,最重要的,感謝這個國家的民主機制,讓我們透過和平的選舉過程,實現第三次政黨輪替,並且克服種種不確定因素,順利渡過長達四個月的交接期,完成政權和平移轉。

台灣,再一次用行動告訴世界,作為一群民主人與自由人,我們有堅定的信念,去捍衛民主自由的生活方式。這段旅程,我們每一個人都參與其中。親愛的台灣人民,我們做到了。

More

OSX下建立Ubuntu開機隨身碟

留個備忘,省得每次都要查其中某個指令…
參考資料來源是官方說明文件

從Ubuntu下載Ubuntu ISO檔案

轉換為DMG映像檔

hdiutil convert -format UDRW -o ubuntu-15.10-server-amd64 ubuntu-15.10-server-amd64.iso

找到隨身碟位置

diskutil list
diskutil unmountDisk /dev/diskXXX

寫出映像檔案到隨身碟

sudo dd if=ubuntu-15.10-server-amd64.dmg of=/dev/rdiskXXX bs=1m

退出隨身碟

diskutil eject /dev/diskXXX

Android開發 用zxing intent讀取QRcode二維條碼

巨人的肩膀

zxing
Official ZXing (“Zebra Crossing”) project home

journeyapps/zxing-android-embedded
ZXing Android Embedded
Port of the ZXing Android application as an Android library project, for embedding in an Android application.

build.gradle

dependencies {
    //skip...
    compile 'com.journeyapps:zxing-android-embedded:3.0.3@aar'
    compile 'com.google.zxing:core:3.2.0'
}
`</pre>

### 程式碼範例

<pre>`    public void testClick( View view ){
        IntentIntegrator it = new IntentIntegrator(this);
        it.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
        it.initiateScan();
    }
`</pre>

### 程式碼範例

<pre>`    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        //super.onActivityResult(requestCode, resultCode, data);
        IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if (scanResult != null) {
            String contents = scanResult.getContents();
            if (contents != null) {
                ((TextView)findViewById(R.id.textView)).setText( contents );
            }
        }
    }

Android開發 用Runnable做計時器遞增範例

Runnable物件用法

private Handler mIncHandler = new Handler();
`</pre>

<pre>`mIncHandler.postDelayed(mIncRunner, 1000);
`</pre>

<pre>`    private Runnable mIncRunner = new Runnable() {
        @Override
        public void run() {
            //執行內容
            mIncHandler.postDelayed(mIncRunner, 1000);
        }
    };
`</pre>

### 範例程式碼

<pre>`public class MainActivity extends AppCompatActivity {

    private Handler mIncHandler = new Handler();
    private boolean mCounterEnable = true;
    private int mCounter;

    //skip....
`</pre>

### 範例程式碼

<pre>`    @Override
    protected void onResume() {
        super.onResume();

        //讀取共用偏好設定中的計數值
        SharedPreferences sp = this.getPreferences( this.MODE_PRIVATE );
        mCounter = sp.getInt("to.fili.testinctimer.ooxxoioi", 0);

        //啟動計時器
        mCounterEnable = true;
        mIncHandler.postDelayed(mIncRunner, 1000);

        //偵錯用
        ((TextView)findViewById(R.id.nothing)).setText( String.valueOf(mCounter) );
    }
`</pre>

### 範例程式碼

<pre>`    @Override
    protected void onPause() {
        super.onPause();

        //指定計時器在下次執行後,暫停
        mCounterEnable = false;
    }
`</pre>

### 範例程式碼

<pre>`    private Runnable mIncRunner = new Runnable() {
        @Override
        public void run() {
            //累加計數值
            mCounter = mCounter+1;

            //將計數值存回共用偏好設定中
            SharedPreferences sp = MainActivity.this.getPreferences(MainActivity.this.MODE_PRIVATE );
            SharedPreferences.Editor spe = sp.edit();
            spe.putInt("to.fili.testinctimer.ooxxoioi", mCounter);
            spe.commit();

            //若計時器仍啟動中,設定下次執行(延遲)時間
            if(mCounterEnable) {
                mIncHandler.postDelayed(mIncRunner, 1000);
            }

            //偵錯用
            ((TextView)findViewById(R.id.nothing)).setText(String.valueOf(mCounter));
        }
    };