上星期大家都有來聽小編在 COSCUP 分享的「模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構」嗎?這個技術已經有實作在 Funliday-旅遊規劃 的 Web 跟 Android 囉。這個議題結束後,有朋友問了一些問題,這裡順便來統整回答一下:
1. client side upload 方式從 server 產出的 signed URL 是個什麼樣的東西?
signed URL 是為了讓沒有 access key 及 secret key 的 sender 也能在有權限管理的保護下做 S3 的檔案處理,而 Funliday 在這裡的實作是不用原檔名做 key,改用 UUID 產生避免檔名衝突。
2. client BlurHash decode 的效率如何?
在做 BlurHash decode 的時候因為用到的是 CPU 運算,而且 JavaScript 又是 single thread 的關係,所以在 decode 同時移動畫面的話,可能會造成 CPU 不夠力的 client 會有極短暫的延遲時間。這時候可以考慮把 decode 丟到 web worker 處理,避免卡到 UI thread 的順暢度。用 Android 的術語來說就是開 AsyncTask 啦!
3. 你們後來是使用哪種方式做上傳呢?
原先是使用 server side (2) 的方式,但在處理 MQ 上傳後的 notify 花了不少時間,而且上傳到 S3 也沒這麼快,所以後來改用 client side 的方式做上傳功能,運作上也比原先的方式順暢。
4. 為什麼不用 medium 的方式處理 blur?
因為 medium 檔案比 BlurHash 的字串大很多,而且要多發一次 request,成本比 BlurHash 高出不少,所以我們認為用 BlurHash 會是比較好的。
---
當然也是要感謝 gslin 大大,他在 4/26 (日) 簡單介紹了 BlurHash。小編下午看到這篇文章,馬上丟去 slack 問我們的設計師大大,看她覺得這效果如何?她過沒多久回覺得不錯,小編就在星期日的下午開始處理 server side 的實作。隔天星期一有了初步的成果,然後給我們的安卓五星上將看,星期二就完成 Android 實作並上線了!
也是因為 CDN 那塊後來把原先的 lambda 改用自己寫的 server 處理,所以實作 BlurHash 才能這麼快。lambda 這塊也是血淚史,下略 10000 字,之後有機會再跟大家分享。
---
歡迎大家對這塊有興趣的也來交流一下喔!
#blurhash #coscup
同時也有1部Youtube影片,追蹤數超過2萬的網紅さとるふぃっしゅ / satorufish,也在其Youtube影片中提到,結果としては負けました(。´Д⊂) 午前4時まで粘ったのに… UUIDを使って削除フラグ立てて上書きインストールでいけると思ったら、 やってるうちに俺のサブiPhoneがおかしくなってきました(∩ω-) メインのiPhone7を使わなくてよかった… アイコンがたちまち増えてくるばかりで超お手上げです...
「android uuid」的推薦目錄:
- 關於android uuid 在 Kewang 的資訊進化論 Facebook 的最讚貼文
- 關於android uuid 在 Kewang 的資訊進化論 Facebook 的精選貼文
- 關於android uuid 在 さとるふぃっしゅ / satorufish Youtube 的精選貼文
- 關於android uuid 在 How can I generate constant UUId for Android? - Stack Overflow 的評價
- 關於android uuid 在 UUID Android - gists · GitHub 的評價
- 關於android uuid 在 Get no UUID permissions at Android M? #53 - githubmemory 的評價
- 關於android uuid 在 How to get UDID of Android Device - YouTube 的評價
- 關於android uuid 在 Change UUID of Android Device 的評價
android uuid 在 Kewang 的資訊進化論 Facebook 的精選貼文
最近跟手機串接其中一支 API 的時候,小編在規格上設計了 request 必須帶一個 UUID 的值給 backend,以 Android 來說其實直接使用 UUID.randomUUID().toString() 就可以了,但 iOS 熱門的 FCUUID library 看起來好像給了一個錯誤的實作,而且大家好像常誤解了 UUID 的意思。為了這件事,昨天凌晨跟朋友弄了一個小時 Orz
---
一般大家常知道的 UUID 應該是像這樣 8909ea35-8b0e-4e1a-8ba3-9c0af47c77ca,由 8-4-4-4-12 及 16 進制的字元,共 36 個字元所組成的,Java 及一些 npm 的 library 也是如此實作。可是 iOS 的 FCUUID 卻是產生 8909ea358b0e4e1a8ba39c0af47c77ca,連續 32 個字元的字串
---
下面是對話內容,沒想到 UUID 的格式還有不一樣的 Orz
---
(I: ios, B: backend)
* I:你說的uuid有長度限制嗎?
* B:uuid 就是 36 chars
* I:format我不用管對吧,我只要送36個字元過去
* B:uuid 就 uuid
* I:你要well format的uuid,還是我給你一串36個字元的字串
* B:well format 的 uuid
* I:ok
* B:因為我就是講 uuid 啊 xddd
* I:這詞早就被亂用了
* B:怎說?
* I:很多人的uuid不是那個uuid阿,就一串unique的id,以前接過很多api,uuid就unique的id,他們就這樣叫,也沒人在管,uid??uuid??阿災,他們都這樣叫
* B:不夠嚴謹,這工程師不行吧
(半小時後)
* I:要不要dash呢?
* B:要,因為是 uuid
* I:我現在的uuid是用lib產生的
* B:昏
* I:uuidForSesion,這method聽起來是不是很完美,完全就是我們要的
* B:看起來是
* I:但他是32個char,沒4個dash
* B:心累 orz
---
雖然小編不會寫 Objective-C 但還是去 FCUUID 翻了一下程式碼 (https://github.com/fabiocaccamo/FCUUID/blob/master/FCUUID/FCUUID.m#L99),發現作者拿到 UUID 之後把 - 取代為空字串,所以只剩下 32 個字元。看了 README 的所有內容也沒提到會改變 UUID 的格式,「This library provides the simplest API to obtain universally unique identifiers with different levels of persistence.」
最後看到更有趣的一個 method (https://github.com/fabiocaccamo/FCUUID/blob/master/FCUUID/FCUUID.m#L358),uuidValueIsValid 會判斷所傳入的字串是否為 UUID 格式,結果不知道是不是為了相容於正確的 UUID 格式,裡面的 regex 寫成 ^[0-9a-f]{32}|[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$,讓小編啼笑皆非 囧
只不過在 GitHub 上都沒有討論到 32 個字元及 36 個字元的話題,不知道是不是使用 FCUUID 的 iOS 開發者都沒有這種需求呢?
#uuid #ios #fcuuid
android uuid 在 さとるふぃっしゅ / satorufish Youtube 的精選貼文
結果としては負けました(。´Д⊂)
午前4時まで粘ったのに…
UUIDを使って削除フラグ立てて上書きインストールでいけると思ったら、
やってるうちに俺のサブiPhoneがおかしくなってきました(∩ω-)
メインのiPhone7を使わなくてよかった…
アイコンがたちまち増えてくるばかりで超お手上げです…苦笑
泣く泣く以前の状態に復元です。
(…Wi-Fiない状態の時よく俺はバックアップを取ったと関心です。。。)
バックアップはこまめにね、みんな…
みなさんすみません、プロファイルは作れませんでした。
いつかちゃんと仕様理解してみます、、、
ちなみにですが、
ソースコードを見たところ野獣先輩ウイルスは情報抜き取ったり等の悪いことは記述されていないようにも思えます。
android uuid 在 UUID Android - gists · GitHub 的推薦與評價
import android.provider.Settings;. import android.telephony.TelephonyManager;. public class UniqueID {. public static String getDeviceId(Context context) {. ... <看更多>
android uuid 在 Get no UUID permissions at Android M? #53 - githubmemory 的推薦與評價
Android M 6.0.1 get UUID, error initializing cordov:getDeviceil:Neitheruser10215 nor current process has android.permission.READ_PHONE_STATE. CjoyHome. ... <看更多>
android uuid 在 How can I generate constant UUId for Android? - Stack Overflow 的推薦與評價
... <看更多>
相關內容