DailyTick 開發實錄 —— 開始

来源:http://www.cnblogs.com/holmescn/archive/2017/01/04/dailytick-start.html
-Advertisement-
Play Games

2009 年我讀了李笑來老師的《把時間當朋友》,知識了柳比歇夫的時間記錄法。當時激動壞了,馬上動手實踐起來。一開始的時候,是用一個小本子,走到哪兒都帶著。完成一件事,就記錄一下花費的時間。這樣的做法持續了一周多的時間,我發現每天浪費在 Google Reader 上的時間大幅度減少了。那個時候,我使 ...


2009 年我讀了李笑來老師的《把時間當朋友》,知識了柳比歇夫的時間記錄法。當時激動壞了,馬上動手實踐起來。一開始的時候,是用一個小本子,走到哪兒都帶著。完成一件事,就記錄一下花費的時間。這樣的做法持續了一周多的時間,我發現每天浪費在 Google Reader 上的時間大幅度減少了。那個時候,我使用的是一部 Nokia S40 手機,可以上網。於事,又在淘寶上買了一個 PHP 空間,用 PHP(好像是Yii2)做了一個線上版的。一直用到過年(這書是夏天發佈的)。然後就悲劇了。賣我 PHP 空間那個店跑路了,我的大概一兩個月的數據就那樣沒有了。當時非常的受打擊。一下就沒有心情做記錄了。

大概又過了一年,我有了一臺 S60 的手機。然後嘗試過用各種方法再寫一個時間記錄的工具。但都感覺很難用,還不如手記的方便。後來因為學業之類的問題,這個工具也就沒有繼續做了。

2014年左右,我的手機已經換成了 Android,那時候設計了一個叫 ToDo-Doing-Done 的時間記錄工具,和現在的 aTimeLogger 有一點像。只是我多了一個 ToDo 的功能。這個東西也是各種方案去嘗試,體驗都差得我自己都不想用。

到了2016年,我重新開始嘗試做時間記錄。一開始嘗試使用 WPS 的手機版來記錄,也用過 Google Docs,還有番茄土豆,最後還是使用了 aTimeLogger。在記錄的過程中,我反覆思考和感覺自己在時間記錄上有什麼樣的需求。aTimeLogger 能不能完全滿足我的需要。最後,我想到了現在這個項目:DailyTick。

aTimeLogger 做為時間管理的工具,已經是非常好用的了。其實還有一個也不錯的,而且 UI 做的比 aTimeLogger 好看多了的 Mr.Timer。但是,仔細看李笑來老師的文章,你會發現,他反覆強調的一點是:時間是不能管理的,能管理的只是我們自己的註意力。我反覆思考、對比他所謂“時間不能管理”這個說法和主流的時間管理概念有什麼不同。我一開始的感覺,這不都是一樣的事情嗎?不就是規定自己一天中的哪段時間應該乾什麼。然後嚴格執行這個計劃。比如:看書1小時,寫作1小時,給某某打電話30分鐘。或者就算用番茄工作法,也不過是把這個時間變成一個番茄時間而已啊?!

然後我又仔細回憶柳比歇夫的故事,慢慢想通了一點(也可能是我想錯了):在柳比歇夫的故事里,並沒有提到他計劃乾什麼事情需要多長時間。他只是在記錄自己做每件事情的時間。然後對這些時間進行統計。也就是說,我們要把自己的生活在時間這個維度上數字化。我應該是在2016年5月到6月這個時間段里想通這個問題,並開始設計 DailyTick 的。但一真沒有時間動手開發。在那之後,我儘量用 aTimeLogger 模仿 DailyTick 的思想去記錄每天的行程。然後在周末的時候整理、統計,對比本周和前一周的各項記錄項目和時間使用量。看看哪個多花了時間,哪個少花了時間,哪個可以削減,哪個應該增加。如此一直從9月搞到12月。

我發現 aTimeLogger 最大的問題就是統計不方便,記錄也太麻煩。先說記錄麻煩:每當要開始一個任務的時候,總有一個難題,就是這個事情是什麼分類的事。如果記得太粗,你能看到的每天的時間花費都是非常整塊和時間。而這段時間里的效率沒法分辨。如果記得太細。那就需要在乾這個事情的時候,去找到對應的類別。而有的時候,一件臨時插進來的事情,很可能找不到分類。如果這個時候你要新創建一個分類——哈哈,你懂的。

再來說一下統計的功能。aTimeLogger 是把一天里(或者一周、一年)按照分類來加總,形成一個餅圖。就如剛纔說的,如果你要統計得細,那就需要創建很多的分類。雖然 aTimeLogger 可能考慮到這個問題,提供了一個分組的功能。但分組的選擇有時候也是一個災難。比如你創建了一個“工作”分組,裡面有“打電話”、“發郵件”和“面談”。那麼不常用的工作可能會被你摺疊到“工作”這個分組的內部。一段時間不用,甚至會忘記一個類別在哪個分組裡(如果分組和類別太多和話),然後還要一個分組一個分組的找(好像又說回到上一個話題了)。總之就是統計功能太單一。我的做法只能是在備註里寫上工作或者學習的內容,然後周末再自己一條一條的加起來。由於這種方式很麻煩,一段時間之後,我就放棄了,只記錄“工作”、“閱讀”、“學習”這樣的整塊的時間,不再統計細部的時間了。

那麼,DailyTick 的設計哲學是什麼呢?我舉了個比較形象的例子(其實是我不想畫圖了^_^):你有一個圓形的鐘錶。表轉一圈是24小時。早晨8點起來,你在表盤上畫了一個記號。然後去洗漱。洗漱完——可能是花了10分鐘——你回來,又在表上做一個記號。諸如此類。當然,你還需要一個本子,用來記錄每個記號代表的事件。同時,還可以給這個事件做一個標簽。於是,這個時間記錄就豐富起來。

比如:8點30分從家出門,步行到公交站,記錄了一下(事件:走路到公交站,標簽:走路、通勤);坐上公交,到了公司,再記錄一下(事件:坐公交到公司,標簽:公交、通勤)。看到了嗎?你不但可以記錄做了什麼事(就像 aTimeLogger 的分類一樣),還可以給每個事件增加新的統計緯度。比如,如果你經常出差,還可以在標簽里記錄事件發生的地點,這樣你就可以知道自己一個月在哪個城市待的時間最長。

也許你會說:我要上公交了,哪兒有時間做記錄?!所以,這裡的記錄方式非常簡單:你只需要在通知欄里點一下,就相當於剛纔在表盤上刻了一個記號,等你到了公司,把把事件和標簽補上(感覺像刻舟求劍)。也許你還會說:我記錄了一堆,都忘了哪個事情對應的是哪個時間了。那我好像幫不了你了。只能提醒你:要經常做好記錄,不要等一天的最後再記錄,那樣很多事情都記不得了。另外,標簽這個事情,其實只要事件記錄了,標簽什麼時候加並不重要。這個可以在一天的最後,邊回憶一天的工作,邊加上標簽。我會把最常用的6個標簽和最近使用的6個標簽直接顯示出來,剩下的就只能自己輸入了(可能會有 autocomplete)。

有了這些記錄和標簽,再做統計就方便多了。當然,如果你統計也不想做,我應該會推出一些增值服務:把一段時間的記錄導出成,比如 PDF 文件、Excel 文件。當然既然是增值服務了,這部分是要收費的。

DailyTick 會使用 Xamarin 來開發,客戶端的源碼是開放的。和另一個項目 CoreCRM 一樣,開發的過程也會記錄在這個博客里。伺服器(也就是所謂的增值服務)是不開源的。當然,在客戶端,這部分通信的代碼也不開源。可能會留一個介面文件。

DailyTick 的 GitHub 地址:https://github.com/holmescn/DailyTick



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • HTML5的FILE api,有一個slice方法,可以將BLOB對象進行分割。前端通過FileList對象獲取到相應的文件,按照指定的分割方式將大文件分段,然後一段一段地傳給後端,後端再按順序一段段將文件進行拼接。 斷點續傳原理 目前比較常用的斷點續傳的方法有兩種,一種是通過websocket介面 ...
  • EntityFramework 在VS2015添加新建項時,選擇數據->ADO.NET 實體數據模型,有一下選項 來自資料庫的EF設計器,這個就是我們最常用的EntityFramework設計模型了,選擇它,然後根據設計好的資料庫,就會生成一個edmx文件,和一個資料庫上下文,然後我們就可以不用寫s ...
  • 某天發現生成二維碼的工具(zxing)運行的很慢,於是乎上網上尋找生成二維碼的工具,發現常見的開源工具有如下三種: Zxing(zxing.dll) ThoughtWorks(ThoughtWorks.QRCode.dll) QrCodeNet(Gma.QrCodeNet.Encoding.dll) ...
  • 1 context.Response.ContentType = "image/jpeg"; 2 //生成隨機的中文驗證碼 3 string yzm = "人口手大小多少上中下男女天地會反清復明楊中科小寶雙兒命名空間語現在明天來多個的我山東河北南固安北京南昌東海西安是沙河高教園學" 4 ... ...
  • FullCalendar提供了豐富的屬性設置和方法調用,開發者可以根據FullCalendar提供的API快速完成一個日曆日程的開發,本文將FullCalendar的常用屬性和方法、回調函數等整理成中文文檔,以供參閱。當前版本1.6.4。 普通顯示設置 屬性 描述 預設值 header 設置日曆頭部 ...
  • AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); WindowsPrincipal principal = (WindowsPrincipal)Thread.CurrentPrincipal; ...
  • C# 基礎回顧 - 匿名方法 目錄 簡介 匿名方法的參數使用範圍 委托示例 簡介 在 C# 2.0 之前的版本中,我們創建委托的唯一形式 -- 命名方法。 而 C# 2.0 -- 引進了匿名方法,在 ≥ C# 3.0 的版本中,我們會用 Lambda 表達式進行取代匿名方法,並且用 Lambda 表 ...
  • 在《ASP.NET Core應用的錯誤處理[1]:三種呈現錯誤頁面的方式》中,我們通過幾個簡單的實例演示瞭如何呈現一個錯誤頁面,這些錯誤頁面的呈現分別由三個對應的中間件來完成,接下來我們將對這三個中間件進行詳細介紹。在開發環境呈現的異常頁面是通過一個類型為DeveloperExceptionPage... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...