2021年9月6日

建立自己的日程筆記Daily log ,更好追蹤自己的生活


昨天你做了什麼?很快的可以想起來。上週做了什麼?要仔細想一想才想得起來。上個月的今天作了什麼?要查行事曆或者日曆,才能想起來。但是很多時候,我的日記記得不夠詳細,或者不夠有效率。頂多記一些想法或者重要的事。有些當下不覺得重要,但是後續想要回想卻怎麼也想不起來。面對這種狀況,該怎麼辦?


最好的幾決方案:「做日程紀錄」。但是記錄要怎麼做?要放在哪?我有幾個解決方案!

日曆活動記錄Daily Log:

過去我已經導入基於日曆的計畫與執行Time Blocking的方式,我的日程表原本就已經被我的計畫所填滿。因此只需要有意識的將正在做的事填寫進去,就可以記錄下工作與活動。這個作法呼應了TIme blocking的方式,也可以說是事後time blocking。不過有幾個點要特別強調:

  1. 即時紀錄事件:要記錄這種活動,強烈建議要每天做。依我自己經驗,過了一週後已經對當時的活動遺忘的差不多了!一週後再來寫,回憶的誤差通常大到自己無法接受。
  2. 貼上補充文件或連結:寫下活動標題,不代表再過一週或更久,自己還能瞭解這個活動的內容。因此盡量把活動的附加文件連結貼上去,事後回顧可以更清晰的知道當下的狀況。
  3. 補充細節:細節的補充強烈建議在其他的日記筆記中補充細節,但是針對這有些單純的單一活動,有時候也可以在日曆的活動上進行細節補充,讓自己可以更充分瞭解這個活動內容。


連結日程筆記Reflection Note

除了日曆上的活動記錄外,使用日記的方式進行記錄也是很重要的。相對日曆上得記錄比較著重時間導向,在日記上記錄比較適合呈現思考邏輯或與其他活動之間的連結。我的日記者主要以思考為主,因此不會以一天一篇記錄流水帳。在每日的紀錄上,可以記錄下當天產出的筆記或閱讀的素材連結,也可以提供未來參考之用。尤其是如果這類筆記或素才是橫跨很多天或者時間,而不適合單一時間記錄呈現的活動。

我目前整合使用Devonthink or Obsidian這類的筆記軟體來進行日記,可以直接把照片或檔案的連結貼上來當作附件。這樣就可以進一步把daily log 與日記以及附件整個連結再一起。


學而時習之

寫下daily log or Reflection,並不會在當下造成影響。正面的影響其實是在一段時間之後,當我們因為某些因素回顧的時候,可以順利找到當時思緒的邏輯與流程。有時候單純產出的筆記,如果沒在日記中與當時的場景結合,就會越來越脫離現實。後續的回顧也是Spaced Repetition的一個很好的體現。

 

See Also 

| CQI365 | 林軒名醫師 | 等待雨果 |: 整合HighlightsApp + Obsidian,建立效率的整合閱讀與標記流程

| CQI365 | 林軒名醫師 | 等待雨果 |: 利用三種住院病歷記錄概念,提升我們的專案能力

| CQI365 | 林軒名醫師 | 等待雨果 |: 使用Devonthink3.7取代Obsidian做筆記


2021年9月1日

如何使用python 執行Propensity score matching 研究

 #PropensityScoreMatch #Python #Statistics

最近開始整理之前的研究檔案,其中一個retrospective cohort study所收集到的實驗與對照組人數落差太大,對照組是試驗組的10倍以上。為了減少研究的落差,可以採用Propensity score matching的方式。

以下有兩個方法透過python來處理:

## method1:

參考:matched pairs in Python (Propensity score matching)

from sklearn.preprocessing import StandardScalerfrom sklearn.neighbors import NearestNeighbors

def get_matching_pairs(treated_df, non_treated_df, scaler=True):
treated_x = treated_df.values
non_treated_x = non_treated_df.values
if scaler == True:
scaler = StandardScaler()
if scaler:
scaler.fit(treated_x)
treated_x = scaler.transform(treated_x)
non_treated_x = scaler.transform(non_treated_x)
nbrs= NearestNeighbors(n_neighbors=1,algorithm=’ball_tree’).fit(non_treated_x)
distances, indices = nbrs.kneighbors(treated_x)
indices = indices.reshape(indices.shape[0])
matched = non_treated_df.iloc[indices]
return matched
matched_df = get_matching_pairs(treated_df, non_treated_df)
Python code

這段程式碼使用sklearn的scalar先把數值標準化,在透過NearestNeighbors的方式,找到最接近的個案!可以直接拿來產出兩組,在進行後面的研究流程。

## method 2

參考:heart-propensity-score-matching.pdf

# python 
model = ‘treated ~ age + male +edu’ propensity = smf.logit(formula=model, data = df).fit() propensity.summary()

1. 這個方式,透過logit regression,產出一個針對’group’的預測數值。
2. 可以直接這個數值當作一個控制變因來使用!



## See Also :

如何使用python 執行Propensity score matching 研究 - CQI365 - Medium

透過Selenium 完成Google Form 自動填寫

 這幾個月公司每天都要上線填體溫與TOCC,但實際上每天關在家中哪裡都沒去,每天的TOCC都一樣。體溫基本上也都在正常範圍。為了不要每天填寫TOCC,因此我寫了一個script來Automate整個填寫過程。真的可以說,懶惰是進步的動力。

## 主要工具:Selenium。
Selenium 主要透過模擬瀏覽器,來完成一些網頁操作的任務。因此很適合操作性的網頁自動化。相對比爬蟲是在做抓取資料以提供後續分析,兩者不太一樣!

ps. 要透過selenium 來啟動瀏覽器,要注意一下使用的瀏覽器種類,並去該瀏覽器的網站下載driver。

### code:

from selenium import webdriver
import random
from datetime import datetime
year = datetime.now().year
month = datetime.now().month
day = datetime.now().day
driver = webdriver.Edge(‘C:/WebDriver/bin/msedgedriver’)
driver.get(‘https://docs.google.com/…’)
date_check = driver.find_elements_by_xpath(“//div[contains(@class,’quantumWizTextinputPaperinputContentArea exportContentArea’)]//input”)[0]
date_check.send_keys(year, month, day)
position_Check = driver.find_element_by_xpath(“//div[@class=’appsMaterialWizToggleRadiogroupEl exportToggleEl’ and @id=’i12']”)
position_Check.click()
code_check = driver.find_elements_by_xpath(“//div[contains(@class,’quantumWizTextinputPaperinputContentArea exportContentArea’)]//input”)[1]
code_check.send_keys(‘XXXXX’)
name_check = driver.find_elements_by_xpath(“//div[contains(@class,’quantumWizTextinputPaperinputContentArea exportContentArea’)]//input”)[2]
name_check.send_keys(‘XXX’)
travel_Check = driver.find_element_by_xpath(
“//div[@class=’appsMaterialWizToggleRadiogroupEl exportToggleEl’ and @id=’i51']”)
travel_Check.click()
contact_Check = driver.find_element_by_xpath(“//div[@class=’appsMaterialWizToggleRadiogroupEl exportToggleEl’ and @id=’i65']”)
contact_Check.click()
temeprature = str(round(random.uniform(35.8, 37), 1))
temperature_check = driver.find_elements_by_xpath(“//div[contains(@class,’quantumWizTextinputPaperinputContentArea exportContentArea’)]//input”)[5]
temperature_check.send_keys(temeprature)
submit = driver.find_elements_by_xpath(“//div[@role=’button’]”)[0]
submit.click()
driver.close()

## 封裝與自動化

最後將上述得程式封裝成exe檔,並透過window安排自動化排定執行時間。這樣就搞定了繁瑣的TOCC。



##See Also 

透過Selenium 完成Google Form 自動填寫 - CQI365 - Medium

2021年7月13日

在Devonthink 邊觀看YouTube 影片作閱讀心得筆記


#2021, #20210710, #Devonthink #Youtube #ZettelKasten


剛剛在Matters 中看到這篇文章:Obsidian x Youtube take notes 用 obsidian 做 Youtube 筆記獲益良多。 直接在筆記軟體中邊聽邊看邊做筆記,可以有效率的建立筆記。避免聽完看完轉頭就忘的窘境。因此我這邊也來根據這個思路,使用我的筆記軟體Devonthink來進行類似的流程,提供給大家參考。

方法一:將YouTube 嵌入markdown筆記

  • 在Youtube 中選擇分享,並選擇嵌入模式。 
  • 再嵌入模式複製嵌入的程式碼。 
  • 貼上要做的筆記中。以這個youtube為例,程式碼如下:
<iframe width="560" height="315" src="https://www.youtube.com/embed/
YQA8OKwATHI" title="YouTube video player" frameborder="0" 
allow="accelerometer; autoplay; clipboard-write; encrypted-media; 
gyroscope; picture-in-picture" allowfullscreen></iframe>
  • 在Markdown預覽窗格可以直接看到嵌入的youtube框架,直接可以播放。 
  • 在markdown筆記中繼續寫筆記。

嚴重的問題:

做筆記時如果按存檔,會導致預覽更新,會讓影片重新播放。 因此這個方法比較適合撰寫完整筆記的最後,進行嵌入以做提供參考資要連結。不適合邊做筆記邊播放。

方法二(推薦):使用Devonthink內建的Annotation :

  • 抓取:將要進行筆記的YouTube使用Devonthink clip 抓取Bookmark。 
  • 在Devonthink 點選該檔案,可以在devonthink直接連結到YouTube觀看。 點選Annotation 功能列。
  • 點選Annotation, 使用Markdown格式。 
  • 在annotation側邊欄可以直接邊看影片編寫筆記。
  • 這個Annotation 檔案還是獨立的Markdown檔案,可以進一步獨立編輯或在連結到其他檔案。 

結論與比較

其實這兩個方法不適合拿在一起比較,各有各適合的場景。第一個方法比較適合輸出筆記使用。而第二個方法才是真正做筆記的流程。因此應該是可以把兩個方法結合,先用第二個方法作筆記,最後完成筆記時,再把嵌入連接貼上去,完成最後的筆記輸出。


2021年7月10日

Workflow: 連接Devonthink and Evernote,更有效率的進行網頁捕捉與存檔。

#2021, #20210710, #Evernote #Devonthink #CloudHQ


主題

透過CloudHQ成功把Devonthink 與Evernote,經過Dropbox中介完成連接。

為什麼要這麼做?

Devonthink clip 還是沒有辦法向Evernote clip那麼強悍,有些網頁無法處理。例如Medium。

如何做?

  1. 註冊cloudHQ帳號
  2. CloudHQ 中連結Evernote 與Dropbox(我Devonthink index 在dropbox中的檔案)
  3. 選擇要同步的Evernote筆記本與dropbox folder。
  4. 選擇同步方式:我選擇同步HTML檔案。
  5. 在Devonthink index 該dropbox檔案夾。
  6. 在同步的Evernote筆記本新增檔案,等待一段時間,就會同步到Dropbox對應的資料夾,進一步同步到Devonthink indexed的Group。
  7. 將同步的檔案,搬到其他Devonthink 資料夾,回到Evernote該筆記本中刪除或搬移該檔案。



殘存問題:

  1. Evernote免費版以及CloudHQ免費版本的檔案上傳限制,會讓這個辦法有容量限制。解決辦法就是花錢!
  2. 要記得在devonthink不要直接編輯在同步檔案夾的資料,會被同步進一步洗掉!要記得把文件搬移到其他資料夾在編輯。
  3. 使用過的檔案,在Devonthink無法直接刪除,刪除了還是會被同步進來。要回到Evernote筆記本中處理掉。
  4. 在Devonthink中,HTML檔無法使用Highlight or Annotation,因此需要重新建立Annotation markdown進行閱讀筆記。

實際應用場景

  1. 想要抓下的網頁,透過Evernote Clip 抓下後直接存到對應的筆記本。
  2. 等待一段時間後,到Devonthink可以看到HTML檔案。搬移該檔案到其他檔案夾後進行閱讀與編輯。
  3. 在Liner畫線的部分,也可以透過Evernote clip輸出到Evernote再轉入Devonthink比較美觀。

2021年7月5日

Markdown Citation (Referecnce) 引用文獻方法

很常在Markdown文章中,引用其他文章或資源,這時候會需要幾個常用的方法來進行引用。以下介紹一下常用的兩個方式。

直接引用

在句子中直接導入其他文章標題,可以使用Item link or Wikilink。

Ex:

  • Item link: 在這這篇文章介紹了MECE法則。
  • Wiki Link: 今天的日記 2021-06-27 Reflection,可以直接被wiki link所以引用。

Citation 文獻方式

在比較學術的文獻,會需要把引用的論文放在後面,而非引用在文字段落中,因此需要另外一個方式。主要方法是在段落中使用 [^FN] 的方式,而在最後段落使用 [FN]: link的方式呈現。 如同下面這段話引用Academic markdown and citation這篇網路連結1,而在後面使用Reference的方式呈現原來的連結。會呈現的方式,如下圖:

  1. Academic Markdown and Citations · Chris Krycho  ↩︎


2021年6月26日

Alfred and KeyboardMaestro 整合流程

#KeyboardMaestro #Alfred

前言:

為了避免過了幾個月或幾年,忘記當初怎麼建立alfred and KeyboardMaetro連線,還是要寫下當時的思路。這篇文章介紹如何連結Alfred 與keyboardMaestro,讓我們不需要背誦快速鍵,直接透過keyword啟動。雖然比起使用快捷鍵較慢,但是不需要記憶按鍵,只需要記得大概的名稱即可啟動巨集。

前置步驟

Alfred

KeyboardMaestro

  1. 安裝Keyboard Maestro 9.2: Work Faster with Macros for macOS
  2. 新增相關Maestro

流程:

  • 直接在使用快捷鍵呼叫 Alfred 。
  • 輸入km ,後面跟著要啟動的maestro。 


評論

其實Keyboardmaestro也有這個功能 Trigger Macro by Name可以達到同樣的效果。但是透過Alfred,可以整合alfred 其他功能,讓介面可以整合在Alfred中。

參考:

2021年6月4日

Mac 雙螢幕工作流



 雙螢幕

  • 心血來潮,把Mac mini 當作螢幕架升高了螢幕,也讓MBP可以打開螢幕而不影響大螢幕視野。因此索性把筆電的散熱架撤掉,打開MPB螢幕連接原來大螢幕,組成垂直的雙螢幕桌面。
  • 過去我不太喜歡雙螢幕,人只有一組焦點,在多螢幕也只能盯著一個看。但是進來的工作常會在程式間切換,加上即時通訊軟體的切換,只有一個螢幕真的會不斷在畫面上切換畫面,真的有點困擾。
  • 剛好最近把自己的主螢幕架高,多出來的下方空間,可以把

垂直螢幕 vs 水平螢幕

  • 通常大家常見的雙螢幕多半是水平切換的雙螢幕,過去我也使用過雙螢幕。但是在螢幕越來越大的狀況下,水平的螢幕真真得是、不太有地方放。
  • 此外,比起水平切換,我個人認為垂直切換比較符合人性。其實我們在打字的過程中,往往也需要低頭看一下鍵盤。因此只要適當的安排垂直畫面上得軟體與流程,垂直畫面反而讓工作流程更加順暢。

我的配置:

  • 上層螢幕:負責「觀看」,較大的螢幕較大的亮度,觀看不管影片還是文字都很舒服。因此擔任「輸入」。
  • 下層螢幕:負責「輸出」,包含即時通訊、Drafts等軟體,都在下層螢幕。
  • 搭配:如果有需要互相參照的工作,例如論文等,就可以透過雙螢幕把不的文件,放置在不同的地方。

結語:

目前雙螢幕運作沒幾天,感覺還沒有真正找到他的強大之處,或許大家也可以分享一下自己的螢幕配置吧!


延伸閱讀:

- Matters

熱門文章