2014年11月5日

Google Calendar 與 Gmail 5.0

為了配合 Android Lollipop 的推出,Gmail 跟 Google Calendar 也翻新成 Material Design 的界面,順便加了一些新功能。

Google Calendar 5.0

  1. 跟 Google Now、Inobx、Google Keep 的 reminder 整合了。不知道Google Tasks哪時會被徹底關掉?
  2. App 可以顯示國家、宗教節慶但跟 Web 版的節慶行事曆無關。App 看得到 Web 的,反之不然。App 跟 Web 版的聯絡人生日是同一份,沒有上面這問題。
  3. 不知道為啥日期的顯示模式是「1天」跟「5天」,沒有「7天」或「工作日」模式。

Gmail 5.0…… 除了界面翻新、支援 IMAP、POP3 ,好像沒什麼特點。

想提早嘗鮮的可以從 APKMirror 下載(,這非 Google 官方途徑、後果請自負。)

是說,Google 的 app 界面設計可以一致點嗎?Gmail 的「設定」為什麼不像 Google Calendar、Inbox 一樣固定在側欄、永遠可見呢?(←單純因為label太多,捲到生氣、惱羞成怒)

2012年3月2日

[Android] 替 TextView 加上圖示

Android 的 TextView 除了顯示文字,還可以在上、下、左、右加上圖示。
透過程式,有三種方法:

TextView#setCompoundDrawablesWithIntrinsicBounds(int, int, int, int);
TextView#setCompoundDrawablesWithIntrinsicBounds(Drawable, Drawable, Drawable, Drawable);
TextView#setCompoundDrawables(Drawable, Drawable, Drawable, Drawable);

前兩個方法會完整顯示指定的 drawable;若使用最後一個方法記得要先呼叫 Drawable#setBounds() 指定 drawable 的顯示範圍。像這樣:

aDrawable.setBounds(0, 0, 60, 60);
textView.setCompoundDrawables(aDrawable, null, null, null);

2012年2月21日

[Android] 圓角框的陷阱

陷阱 1. 只有特定角落要圓角效果

作法:
指定預設值(「android:radius」)為大於 1 的值,再把不需要圓角的角落指定為「0dp」;
而且預設值不可以跟特定角落的圓角半徑值相同。

2012年1月9日

密碼應該怎麼存?

最近明文密碼的話題很紅,
決定來重貼以前關於密碼編碼(password hashing)的筆記:

  • 編碼(hash)時請記得加鹽(salt)
  • 不要整個系統都用一樣的 salt,請每次都以亂數方式產生。
  • 把 salt 跟 hash 放一起,不要分開存。
  • 結合方式最好可以有變化,
    例如:由明碼長度決定 salt 的插入位置。

用 PHP 寫起來大概像這樣:

$salt = substr(hash_func(uniqid(rand(), true)), 0, $saltLen);

$hash = hash_func($salt . $plain);

$saltStart = strlen($plain);
return substr($hash,0,$saltStart) . $salt . substr($hash,$saltStart+1);

另外,理想狀況是客戶端跟伺服器端間以加密方式(如,SSL)傳遞密碼。但是事情往往沒有這麼美好,沒辦法用 SSL 的話,可以參考〔延伸閱讀〕第 3 篇提到的「瀏覽器端 hash」。

@yllan 補充

密碼不要用 md5 比較好,要找比較難算的 hash function 例如 bcrypt 可以參數調整難易度。否則就算加了鹽,md5 還是很容易 crack

@yunglinho 補充: 《How To Safely Store A Password

  • Salts Will Not Help You
  • Use bcrypt

延伸閱讀:

  1. 密碼為什麼不能存「明文」? | 我的密碼沒加密
  2. A Basic Lesson in Password Hashing - seanmonstar
  3. hoamon's sandbox: 不應該在資料庫中紀錄使用者的明碼密碼

2011年6月24日

Radix Sort 搭配 Sleep Sort(Ruby 版)

看了 fcamel 的〈運用 radix sort 的概念加速 sleep sort〉,下午試著用 Ruby 改寫,順便拿掉暫存檔。但是相同 digit 的 thread 不一定照原本的順序結束,而變成 unstable sorting;我只好又加上「依 digit 分組」來避開這問題。