BloggerAds

2018年9月2日 星期日

備份家庭照片真的不是一件簡單的事情 - 其二

呈上一篇,話說到使用 Photos 來輸出未修改的原始檔案,輸出的目錄名稱會有個缺點,那是什麼呢?就是 Photos 是會混合地點名稱在目錄裡面的,而且還放在最前面。舉例來說:
有一些照片是在「土城」拍的,一些照片是在「鶯歌」拍攝的,依據它的命名規則,你的目錄將會是「土城 - 地址, YYYY年M月D日」和「鶯歌 - 地址, YYYY年M月D日」這樣的形式,但我個人不太喜歡,主要因為這樣子的文字排序會無法方便的依據日期找照片!

而且網路上搜尋一下常見的整理照片方式大概都是依日期分類,不然就是現在很夯的 AI 輔助分類,不過由於 AI 輔助分類並不會被資料夾影響,所以我們可以先假設照片應該都要先依據日期分類好比較好整理照片!所以目前的功課便會是如何讓資料夾只剩下日期就好。

前面也說了,照片的目錄會依據某個固定的結構來產生,這時候就要利用正規表示法來好好的過濾掉我們不要的部分,留下需要的部分。我目前工作上使用的是 C# 語言,所以就用它寫了一個可以在特定的目錄自動進行更名的程式,有需要參考的可以至此連結觀看程式碼!

邏輯概念為下:
  1. 列舉目標目錄下面所有的子目錄
  2. 針對每一個子目錄名稱,使用正規表示式分離出日期部分
  3. 針對日期部分,使用正規表示式將年、月、日分離,最後使用 YYYY-MM-DD 格式取代原本的日期格式(這是配合 Moments 的目錄架構,方便日後整理,可以選擇性跳過不處理!)
  4. 將資料移至修改名稱後的目錄中
寫程式會花費一小段時間,但是一勞永逸,以後相同的事就交給它處理即可~
至此照片初步按照日期整理完畢,就等 Moments 內建的 AI 或是轉檔程式完成他們的工作了!

不過不知道是否是實驗時檔案增減的關係,現在 Moments 似乎有點錯亂了,照片縮圖明明回報已經完成,但是網頁或是 App 上面卻都無法顯示,而且發現有些照片它歸類的日期似乎不太對,很錯亂的感覺!看來又要找時間研究一下怎麼回事了~

2018年8月31日 星期五

備份家庭照片真的不是一件簡單的事情 - 其一

很久沒有發文了,今天就從最近正在做的「備份家庭照片」開始吧~
自從開始使用蘋果小白以來,一直是用 iPhotos 或 Aperture 來整理照片的,後來 Photos 這個程式取代了他們之後,再加上 iCloud 上面 200G 一個月也才NT$90,所以實在是很久沒有自己備份照片了!最近和老婆一致覺得雲端的照片實在是太雜亂了,找照片的時候其實並不算方便,再加上其實 iCloud 速度其實也不算快,尤其是影片方面,在台灣好像有點串流不動的感覺,而我有一部 Synology DS716+,這部 NAS 主要拿來做一些檔案備份,而剛好其實上面也有支援備份手機照片的功能,所以就姑且一試吧!沒想到試了才發現,問題其實還蠻多的啊!

問題:如何將之前的已經備份在雲端的照片備份至 NAS 呢?
依據我現在的使用環境,目前家裡的電腦、手機均可以連線到 NAS,而 NAS 上面也有做網路分享檔案,所以看起來最簡單的方法是透過下列工具來備份:

  1. Synology Moments App
  2. Qubii備份豆腐 - 口袋相簿
  3. 在 Mac 上面使用 Photos 輸出未修改的原始檔案

上面列出的方法每個我都實際操作過,但後來我用的方法是最後一個,現在說明一下遇到了些什麼問題。

一開始選用 NAS 提供的解決方案,也就是使用 Synology Moments App,主要因為功能上看起來還不錯,可以按日期排列,也支援 AI 辨識照片內容並分類,也蠻符合實際上的使用需求的,但開始備份後就發現踩到蘋果的地雷了!!!

簡單解釋就是説,目前任何 iOS App 存取照片的時候,其實都不能直接存取檔案,而是向 iOS 系統發出讀取的需求,由系統協助處理這個讀取需求,如果照片在裝置本身,就讓發出需求的 App 間接的讀取裝置本身的照片,而如果照片是備份在雲端,這時候系統就會幫發出需求的 App 從雲端下載一份至本地,再讓發出需求的 App 間接的讀取裝置本身的照片,系統自己管理這些照片什麼時候該留,什麼時候該刪除,沒有任何程式可以干預系統。所以問題就來了,當系統容量還充足的話,偶而去看看幾張雲端的照片那是沒問題的,可是如果密集的跟系統要求存取雲端的照片,那就是空間災難了!

因為你晚上可能想說睡覺前開始備份,隔天早上應該就備份完了,但結果是隔天早上系統彈出「儲存空間不足」給你看,備份也中止了!這時除了把已經備份過的照片和影片刪除之外,你沒有其他的選擇,而且你刪除了之後,它依舊是有機會發生的!所以你可能要來來回回好幾次才有機會完成備份雲端照片啊!

同理,使用Qubii備份豆腐也是一樣,它在掃描階段似乎就直接跳過無法透過系統下載的照片數量,舉例來說,我的照片和影片加起來是一萬八千多張,但Qubii備份豆腐顯示只備份一萬五千多張,看到少這麼多當下就不想繼續用它備份了!因為我不知道缺的檔案怎麼備份耶~

最後選用的是使用 Photos 來輸出未修改的原始檔案,這種方式在 NAS 有網路分享的狀況之下,直接將未修改的檔案就灌進去 NAS 裡面,讓 NAS 上面的 Moments 直接用灌進去的檔案運算,在速度和備份時間上都是屌打前面兩種方式的!個人推薦最後一個方式是最好的備份方式!不過要有部 Mac 就是了!

不過輸出的目錄名稱有個缺點,下一篇再繼續和大家聊,然後就會需要寫個電腦程式來協助了~

2016年9月21日 星期三

[心得] 鬼打牆的 Fences 購買經驗

昨天看見一篇[電腦玩物][桌面上最簡潔專案管理! Fences 3.0 我的整理法教學],覺得這軟體實在是太方便了,於是乎我也很想購買,但最後覺得這間公司真是在網購上不太用心,造成了一堆購買糾紛,從該網頁後方的討論串就可以知道了!

本來想在該文章後面回文,但是不知道是打太多字還是怎樣,無法貼成功,只好在自己的部落格把本來想回的內容留下,相信 Google 大神應該會收錄過去給需要的朋友們看看吧!

這裡跟大家分享一下我的購買流程:
1. 我購買的是他們的 Object Desktop Manager,裡面有包含 Fences。
2. 購買過程中自動跳出折扣選項,所以我購買的價格是 $19.99 USD
3. 購買過程中填寫了我的電子信箱,但是沒有填寫密碼(因為它寫 Optional)
4. 完成購買後收到信件,上面說明要去他們網站建立帳號,並且有提供一個連結給我,但整封信並無安裝序號和可用來下載剛剛購買的軟體的位置
5. 使用該信中提供的連結去註冊帳號但是不斷失敗
6. 於是寄信去他的客服信箱並附上我的購買單據號碼
7. 客服回信說要用另一個連結註冊帳號,是另一個網址
8. 使用該網址建立帳號並完成認證
9. 登入後點[My Downloads]即可看到購買項目下載連結和序號
10. 到這裡已經花了一天才完成安裝下載

總結:
1. 請先註冊好帳號再進行購買,因為看起來不管怎麼樣到最後都是要綁帳號的
2. 他們的網頁上註冊帳號的連結是廢的,請用 [https://www.stardock.com/accounts/createaccount] 註冊
3. 購買後只有一年更新服務,一年後需要付一點錢維持更新服務,但我不知道是多少!這在購買的時候居然都沒有提到,太過分了!

2016年8月24日 星期三

[教學] 不說沒人會知道的 Necrobot 裝置隱藏設定

當遊戲很熱門,遊戲機器人產業自然就興起,不可諱言的因為這是人性!
任何工具使用應當都有詳細的說明,但是這個開源的機器人工具,用了一大堆屬性參數,卻沒有什麼文件敘述它!真的太不友善了!

我先針對裝置資訊的部分先去程式碼裡面看過後,發現一件大家都不說也不講的恐怖程式預設值,也許是某些帳號被封號的原因!

首先 Necrobot 在決定使用裝置資訊之前會先用下列「判斷式一」進行判斷:
如果"DevicePackageName"不是"random"而且也不是"custom"的話,就直接使用設定檔裡面的裝置資訊作為當前的裝置資訊。
這段看起來沒什麼錯,但看這段程式碼最上面的註解,照道理這行程式應該寫成:
如果"DevicePackageName"不是"random"而且是"custom"的話,就直接使用設定檔裡面的裝置資訊作為當前的裝置資訊。
差異在哪裡?最原始的作者原來應該是想讓用"custom"作為"DevicePackageName"來讓使用者改成自己裝置的設定,但也許大家都不知道的關係,所以後來把條件放寬了,讓隨便打的名子都可以成功,但…原來用"custom"當作"DevicePackageName"的人就莫名其妙被跳過了!

再來程式將會使用下列「判斷式二」:
如果"DevicePackageName"是"random",就直接使用程式裝置清單中的設定作為當前的裝置資訊。
最後是使用下列「判斷式三」:
如果到這裡目前的"DeviceId"依舊是空的或無數值,或是目前的"DeviceId"為"8525f5d8201f78b5",則用亂數產生器產生一個"DeviceId"作為當前的"DeviceId"
二和三的判斷式我建議都不要執行到,因為判斷式二等於自己告訴 Niantic 我正在使用機器人,判斷式三對一般正常的使用者極其不合理,因為你每次執行都等於用了一台新的機器在跑!

所以結論是:請把"DevicePackageName"設定成其他不是"random"也不是"custom"的字串,使用自己的裝置資訊來掛 Necrobot,這樣裝置資訊就不會是你被封號的原因了!

還等什麼,現在就去看看你是怎麼設定的吧!
裝置設定不知道怎麼擷取?請參考下列連結:
IOS的Auth手機參數設定教學
Android的Auth手機參數設定教學

2016年8月23日 星期二

[教學][Pokemon Go] 到底該先升級好? 還是先進化好?


從 8/6 號開放至今,兩個禮拜去了,目前練到 LV23 級,也在網路上蒐集了一堆資料,知道有隱藏的 IV 要參考,CP 越高越好,道場則是技能取向,技能 DPS 要越高越好!

那衍生出來的問題就是我到底該先升級好呢?還是先進化好呢?
要 IV 好,要 CP 好,還要技能好這三種狀況均符合,不用說大家都知道這隻精靈就是必留必練,但總是不可能大家都能夠同時蒐集到這三好,所以一定要有策略增加蒐集到的機率,並且節省星塵數量,所以目前的心得是:

大前提:
IV 值一定要盡量高

設定條件:
一、如果可以進化成高等精靈,可以考慮留 CP 好的精靈
二、如果是不可進化的精靈,可以考慮留技能好且 CP 可達到較高值的精靈


原因:
當 IV 好的狀況下,已經代表精靈本身的體質不錯了,所以考慮未來道場的對戰,技能最為重要!由於各精靈都有兩個招式可以使用,一種為普攻用,一種為特殊攻擊,系統交叉分配之下想要精靈獲得好的技能,唯有靠進化精靈或是精靈直接擁有兩種途徑,但老人家我是沒那個生命到處趴趴走,只能上下班沿路遇到什麼抓什麼,要說直接抓到,應該是很難發生的,所以在設定一的條件下,反而會比較有機會獲得三好的精靈!
某些高階精靈或是一般精靈不能進化,那當然一定要比技能了!技能好,投資星塵的報酬率才會好,因為大家總不會想要花了上萬的星辰,結果技能卻很難打道場的狀況發生!


最後,希望大家都能抓到理想中的精靈!我要來去蹲點等伊布了!

2016年6月15日 星期三

[心得] 第一次使用行動支付就上手

最近行動支付炒得沸沸揚揚的,而且上班的路徑上也出現推廣的優惠,個人覺得蠻有趣的,所以上個月在 Apple Store 上面找了幾款行動支付的 APP,註冊並嘗試使用,以下是目前我有下載也註冊過的電子錢包或行動支付APP:
  • PI 行動錢包
  • 歐付寶行動支付
  • Wali智慧錢包
  • Citygo mWallet
  • MoneyCoin
上面不管是任何一款APP,基本上註冊流程都不算簡單,除了需要填寫一堆資料,也需要和簡訊或是電子郵件做一些互動,所以目前覺得長輩們可能比較容易在註冊過程中發生問題,而這部分一般的年輕人可能相對較長輩們容易上手!

實際上我有拿來測試支付的 APP 是【PI 行動錢包】與【歐付寶行動支付】,而支付的是台北市停車費,這後面再詳細說明!

先來根據目前見到的這些 APP 的特性來做一些簡單的說明:
第一,認證方式:
主要使用「手機號碼(簡訊認證)」與「電子郵件認證」。這是很容易理解的部分,畢竟支付上還是需要一個可以辨別客戶端的方式,而這兩個方式裡面,手機認證又相對於電子郵件認證簡單,因為所需的資訊都在手機上面,只要會看簡訊大概就能完成流程初步流程,這部分【PI 行動錢包】與【歐付寶行動支付】都有做,但印象中電子郵件認證似乎會提示你要完成,由於我已經不太記得這部分實際上的操作,所以大家可以看過就好!

第二,帳號登入保護:
這部分使用了「6 碼密碼保護」作為登入帳號的保護機制,雖然短,但是我推測應該有結合手機或是地域認證機制在裡面,而且目前似乎也不會每次登入都詢問使用者密碼,不知道是不是有設定還是說有其他的詢問機制,至少目前快一個月了還沒看到有跳出來問過我!

第三,支付保護:
所有的 APP 全部支援「4 碼數字密碼」保護,想必是為了加速付款速度,畢竟大家應該都不喜歡付錢還要點很久才能用,另外也有支援「手勢圖形」,但我個人覺得不會快到哪裡去,而且使用者應該會設定一個很簡單的圖形來加速物款流程,所以也失去了安全的意義!再來要說一下【歐付寶行動支付】,它支援 Apple 的「Touch ID」認證,這是目前我覺得最直覺且快速又安全的方式,【歐付寶行動支付】將這功能放了進去真應該給它一個讚!

第四,支付、收款方式:
這部分很一致地都使用了「二維條碼」當作支付或收款的方式,一方面應該是因為手機相機可以很容易就支援辨識,二來這部份的程式技術也已經非常成熟,不管是伺服器端或是手機端的程式都應該算是相對容易實現的,有機會應該來把它的二維條碼解開來看看!

最後跟大家提一下我使用【PI 行動錢包】與【歐付寶行動支付】來支付停車費的經驗:
【PI 行動錢包】
1. 掃描後程式讀取出停車費資訊
 2. 選擇付費方式,這裡我選擇我已經輸入的信用卡
 3. 再次確認付費資訊
 4. 完成付款


【歐付寶行動支付】
1. 掃描後程式讀取出停車費資訊
 2. 選擇付費方式,這裡我選擇我已經輸入的信用卡
 3. 完成付款

以手續上來說,【歐付寶行動支付】比【PI 行動錢包】少了一個再次確認的步驟,所以付款的速度上會快一些,但是由於【歐付寶行動支付】的優惠是從購物金裡面扣款,等於是變相的收回送使用者的 500 購物金,而【PI 行動錢包】本來就無購物金,但它也很忠實的達成了79折的承諾,所以使用者觀感上面來說,【PI 行動錢包】會有比較好的感覺!這只代表我的評論,大家參考就好!

最後再大總結一下,行動支付 APP 在一開始註冊與設定上面會花比較多的功夫,但是似乎不容易避免,所以長輩們申請的時候請找身邊年輕的朋友幫忙會比較好上手,設定完成後在使用上就非常方便,至少以我繳停車費的經驗,可以不用特地跑到超商去繳錢真的非常方便!而像是最近家裡做鋁門窗的時候,我真的超想用行動支付來支付尾款的,因為就可以不用特地跑去領錢,實在超方便的!可惜對方不會用!

備註:測試期間剛好有機會搭台灣大哥大的計程車,也是可以使用行動支付 APP 付款,但向司機大哥詢問後,司機大哥是說即使車上有悠遊卡或是支援行動支付 APP 付款,大部分的人還是選擇使用現金付款,不過最後我還是用悠遊卡付款,但發現司機還要做一些機器的操作才能完成付費,看來悠遊卡在計程車上也不快速阿!

2016年5月26日 星期四

[心得] Forward Declaration

最近跟美國的某同事跨海在解決程式上編譯的問題時,他請我用 Forward Declaration 或是把 Include 放到 CPP 裡面。

恩~什麼是 Forward Declaration,在網路上查到個文章:
程序員筆記: forward declaration: 一個小技巧,說真的,在我得知這個技巧時還蠻驚訝的 :P 驚訝之餘也感嘆自己見識太少與能力不足, 竟然有如此巧妙的技巧可以取代我一直覺得理所當然的事
看了一下原來是早已習以為常的一個使用方法,很快的我把程式裡對應的部分修改了一下,但還是有些問題沒解決,主要是雖然把 Header 檔案移至 CPP 裡面了,但不幸的是專案同時有兩個 CPP 檔案同時用了相同的這個 Header 檔案,而這個 Header 檔案裏面包含 class 的實作,所以會出現兩個 OBJ 檔案同時存在相同的實作,造成連結時發生錯誤!這要注意一下!並不是所有的 Header 檔案都適合使用這種方式遷移的!