0%

過去兩年的時間投入了數據平台的建置,希望可以打造一個所謂的現代化數據平台(Modern Data Platform),這中間可是比想像中困難多了。但兩年過去了團隊成員從也是從小貓幾隻,一路成長到十多人的團隊。講到現代化的數據平台,NoSQL的儲存方案肯定是會被考量到的一項技術,在一陣研究和討論後,我們決定採用Cassandra當作在數據平台服務中,擔任NoSQL的主要儲存技術。

在導入的過程中當然沒有這麼順利,特別是對於只用過Oracle或是SQL Server等RDBMS技術,完全沒有碰過NoSQL的開發團隊,大家對於使用Cassandra總是有錯誤的想像,或是在不熟悉與不合適的使用情境下,最後造成大家與Cassandra「不歡而散」。

這篇想開始談談實際使用Cassandra後會因為Cassandra的設計限制遇到的問題,希望大家在一頭熱投入Cassandra的研究前,可以評估使用情境是否適合。我特別推薦在準備DataStax的Cassandra Developer Certification時上到的一堂課,這堂DS220提到許多Cassandra在實在作data modeling會需要知道的技巧和特性。

閱讀全文 »

上一篇有提到真的有重要的功能不支援web的情況下,可以採用conditional import的方式,在不同平台運行不同的程式片段,避免使用過多的平台判斷邏輯造成程式碼過長,或是在compile階段出現error。

假設今天要實作一個platform判斷邏輯,因為我們已經知道web平台不支援dart:io,且其他的平台(ios, android等)都可以用dart:io.Platform。所以設計的邏輯為,當dart:io能被使用時採用dart:io.Platform判斷運行平台,否則即判定為web。

首先可以先作一個簡單的列舉項目PlatformType,用來比較platform判斷結果。接著設計一個PlatformCheck類別,並實作類似dart:io的isPlatform檢查。而checkPlatform函式會實作在拆出去的platform_web或platform_io兩個dart裡面。

閱讀全文 »

打開Flutter web開發的方法並不困難,但在將手機app轉換(migration)到web app時會遇到許多轉換問題。在Flutter Engage的發佈會上官方有特別展示web migration要注意的地方。而使用Flutter開發跨平台應用程式時,第一個要考量到的就是package的跨平台兼容性。

使用pub.dev確認package兼容性

為了確保使用到的package在所有的平台都能正常的執行,專案在評估採用package時就必須確認是否兼容所有要發佈的平台,或是未來可能會發佈的平台。

剛起頭的專案在pub.dev尋找可採用的package時,就可以邊從資訊頁上方找到平台支援資訊。如果是從mobile轉移到web,就建議要掃過所有使用到的package,當然也可以直接把web app在debug模式跑起來就知道哪些不能用了。

閱讀全文 »

在使用CanvasKit渲染器開發Flutter web app時,會在app啟動時從CDN服務下載CanvasKit,因此在採用CanvasKit渲染器的情況下預設是需要有連網的環境,否則app在啟動時會因為無法下載CanvasKit出現Failed to load resource: net::ERR_INTERNET_DISCONNECTED的錯誤訊息。

但如果是在有連網限制的開發環境下,雖然可以在開發環境使用html渲染器進行開發,並在佈署環境使用CanvasKit渲染器來達到最佳的操作效果,但因為兩種渲染器方法不同,所以渲染出來的效果還是有所差異,這會造成開發和佈署的版面不一致。

雖然預設需要連網才能使用CanvasKit,但目前版本(2.2.2)可以透過指定CanvasKit URL的方式置換掉預設的URL,而且也支援將CanvasKit與web檔案bundle在一起佈署,達到在離線或是有連網限制的環境下執行。但這個方法目前只支援profile與release模式,不支援debug模式

閱讀全文 »

在Flutter正式將web支援放進stable channel後,現在只要從官網下載最新的stable版sdk,就可以直接開發與佈建web應用程式。這篇會紀錄Flutter web開發從前置準備到發佈前的環節,提供給有Flutter經驗而且要嘗試打開web支援的開發者。如果需要從頭開始建立Flutter的開發環境,可以依不同開發平台參考flutter.dev的說明。

閱讀全文 »

最近幾個月來工作的職務上有些轉換,加入到一個小規模的app開發團隊,並且嘗試導入Flutter開發一套codebase就能夠佈署到多個平台的跨平台app。其實網路上已經有非常多介紹Flutter的文章,而原生與跨平台的解決方案比較也很多人討論過,所以這篇會以一個初入Flutter的新手,到成功交付產品上線後,一直到採用Flutter Web的心路歷程分享。

老闆問:能不能弄個跨平台app

其實跨平台一直都存在並且持續有新的技術出現,雖然Flutter還很年輕,但是在這幾年的熱度也快速的竄升。我認為採用跨平台技術對於單純開發給公司內部使用的系統來說,最大的優點就是在人力的節省。在一個開發了web就會被問能不能放在行動裝置上,作了手機app就會被問能不能web也有的環境下,為了提供多個平台管道給使用者,一支系統難道不能只開發一次就好了嗎(彷彿老闆的聲音飄出來了)。

要開發多個平台可以使用的應用程式,除了能夠支援不同裝置尺寸的web應用程式外,如果需求面上又希望能保留行動裝置功能的支援,那Flutter自然是一個適合的選擇。

閱讀全文 »

上一講教了透過kernel trick來處理dual SVM中的轉換與內積,並介紹了不同的kernel function,從線性到無限多維轉換的Gaussian,但SVM還是有可能會overfit。overfit有兩種可能的原因,第一種為使用了過度複雜的轉換,第二種則是堅持要把所有資料完全的切分開來。以上面這個例子來說,如果可以容忍有錯誤分類,但可以使用簡單的線性切分也可以得到不錯的邊界;相反的,如果使用比較複雜的轉換確實完美的將資料都區分正確,反而容易造成overfit。

閱讀全文 »

上一講說明了dual SVM,好像可以讓SVM與高維度的z空間兩者可以脫鉤,但以計算的角度,仔細看會發現在整個求解過程中的Q矩陣還是會在z空間作內積。而在z空間的內積在運算可以拆成兩個部份,一個是先透過某個函式φ轉換到z空間,第二再進行轉換後的內積。但這樣的運算方法就會變成z空間的維度作內積。

閱讀全文 »