從 Evernote 轉到 Joplin 的使用心得記錄

這陣子決定將自己的筆記從 Evente 轉換到 Joplin,順便把轉換的過程和心得記錄下來,方便有相同需求或是在評估 Joplin 的捧油可以有個參考。

現在的筆記軟體或平台很多,依每個人需求的不同都會有較適合的方案,最後我會選擇 Jopline 最主要的原因是

  • 程式碼開源
  • 資料存在自己家
  • Markdown 支援
  • 支援多種雲端儲存的同步方案
  • 跨平台,手機和PC都有(Linux, Windows, Mac/iOS, Android)
  • 有從 Evernote 匯入資料的方案

資料匯出

       記事資料轉換的第一步是將現有的記事資料從 Evernote 中匯出,在匯出之前有件事要先瞭解。 Joplin 在匯入資料時會匯入時的檔名建立一本 Notebook,並將該筆匯入的記事都放在該本 Notebook 中。因此從 Evernote 匯出 enex 格式資料時,建立也是以 Notebook 為單位,一本本的先匯出成檔案,並以 Evernote 中的 Notebook 名稱為檔名。

       這對記事本較多的捧油來說有點不方便,我的記事本數量在一百至二百之間,光是匯出資料就耗費了我不少時間。若是原本在使用 Evernote 時就只是用 Tag 在管理記事,而沒什麼用 Notebook 分類的捧油來說反而是方便不少。因為匯入後的 Tag 都還存在,每筆記事的建立時間和資料來源網址也都有保存著。所以都是利用 Tag 在管理而沒有使用 Notebook 的捧油倒是可以試試將整個 Evernote 的資料匯出成一個檔案後,再匯到 Joplin 中即可。

資料匯入

資料的匯入由 Joplin 上方選單中的 File 中的 Import,有兩個 ENEX 的選項,一個是 as Markdown,一個是 as HTML。


as Markdown 是指匯入後的記事以 Markdown 的格式來儲存,as HTML 則是將匯入後的記事以 HTML 的格式來儲存。以 HTML 格式儲存的優點是顯示的樣式較接近原本在 Evernote 中的樣式,還原度很高。但有個致命的缺點則是難以編輯,因為 HTML 的格式充滿了各種樣式的 TAG,並不如 Markdown 般的簡潔,不利於閱讀。

匯入為 Markdown 的格式筆記看起來相對容易閱讀,但若原本在 Evernote 中充滿著很多從網頁截取下來的文章,一旦轉存為 Markdown 格式很多樣式都出現跑版的情況。例如文字的顏色消失,一些特殊的表格或版面變得零亂或是段落變得和原本不一致。

為了取得一個平衝,我先將原本在 Evernote 中的記事先都以 HTML 的格式匯入到 Joplin 中,以後的筆記則使用 Markdown 來使用,遇到是自己需要編輯的筆記,則將 HTML 顯示出來的記事,用複製貼上的方法,重新再建立一筆 Markdown 的格式或是直接在 Joplin 提供的 Rich Editor 中做小幅度的修改。

資料同步

Joplin 目前支援六種資料同步方案,如下圖:


在這裡我是使用 Dropbox 做測試,點選 Dropbox 的選項後,會出現一組連向 Dropbox 的 URL。點選這組 URL 會連向 Dropbox 並要求授權,點選同意後會得到一組字串,將 Dropbox 提供的認證字串貼回 Joblin 即完成設定,接下來 Joplin 會開始進行資料同步到 Dropbox 中。但不得不說,第一次同步進 Dropbox 時耗費的時間真的很長,或許是因為我的記事量有五千多則。建議睡覺前讓他去同步,比較不會覺得佔用太多時間。同樣的,在另一端要將記事資料從 Dropbox 中同步到地端時所耗費的時間也是超長,手機就更不用說了,只能時不時的開起來同步一下。還好我的編輯主力都是在 PC 上,偶爾需要在手機上記錄而已,所以讓他慢慢同步是不會造成太大困擾。或許記事量若沒有那麼多的話,可能手機上就不用同步那麼久了!!

如果自己有 NAS 的話,也可以嚐試用 WebDAV 或是 File system 的方式進行同步。

網頁資料截取

Joplin 有截取網頁資料使用的 Plugin,讓我們在瀏覽網頁時看到需要存下的文章或圖時,可以很方便的存進 Joplin 中。

要注意的是,要使用 Web Clipper 的功能時,Joplin 需要筅開啟程式中的 Service 功能,截取的資料才能送得進 Joplin 裡。在上方的功能選單中的 Tools 中的 Option

在左側選單中的 Web Clipper 選項中依其說明,將 Step 1 的 clipper service 進行 Enable

目前有 for Chrome 和 for Firefox 兩種版本,可以參照以下提供的連結取得,或是透過 Joplin 的 Web Clipper 說明界面中取得。

在使用上和 Evernote Web Clipper 很接近,如果想把看到的頁面資料整個截取下來,可以透過 Clip simplified page 和 Clip complete page 來完成,差別只在抓下來的格式。Clip Simplified page 會將頁面的格式簡化後儲存,而 Clip complete page 再區分兩個選項,若想很接接看到頁面的格式則可以選擇 Clip complete page(HTML)(Beta) 的選項。至於那一種適合,就看各位捧油自行取捨了。

若只想儲存頁面中的某部份資料,可以先用滑鼠選取後,再使用 Clip selection 的功能進行截取,即可以只收錄我們選擇的部份。至於 Clip screenshot 和 Clip URL 就跟功能名稱一樣,讓我們選擇要收錄頁面中的哪部份截圖和儲存URL。同樣可以在功能選單中選擇要放進哪個 Notebook 和下 Tag,不過就沒有像 Evente Web Clipper 那樣有智慧預判所選擇文章可能的 Notebook 和 Tag,完全要自己選擇哦!

特別要注意的是在使用過程中發現 Clip selection 和 Clip complete page 最大的差別。一般頁面中的圖檔在收進 Joplin 時,若選擇的是 Clip complete page 或是 Clip simpleted page,其圖檔在收進 Joplin 時是保存其原本的連結,圖檔本身並沒有收進 Joplin 中。也就是說如果某天那個網頁消失了,或是原作者的圖床失效了,就會出現沒圖或是破圖的問題。這樣有些資料是在圖中的情況會造成日後閱讀的困擾,這時就需要使用 Clip selection 這個功能,這個功能會把頁面上的圖檔都一併存入 Joplin 中。就不擔心以後圖就不見了。

遇到的問題

  • Joplin 也有記事的版本管理,只是保存的版本的時間並不是每次一有異動就維入版本控管,看了一下官方的記事選錄說明,有兩個條件觸發時記事要自動加入版本控管。
    1. 異動的記事,在超過十分鐘沒有再進行異動時。
      這是針對正在編改的記事,這條件主要觸發是在異動筆記之後
    2. 在過去七天沒有異動過的記事。
      這是針對準備要開始異動時,系統發現這篇記事在過去七天內都沒異動過,當你準備改動時,系統會先把異動前的內容納入歷史記錄中。
      有這兩個條件的判定,並不是每次一異動就會納入歷史資料中,可以有效避免太多不必要的保存佔用空間和系統效能。
  • 首行縮排的問題,這似乎是所有 Markdown 的問題,因為中文有首行縮排的使用習慣,但在 Markdown 的編排中並沒有這個顯示習慣。一般來說,我們會在首行加入兩個全形的空白來處理這個問題,但我發現 Joplin 的排版會忽略全形的空白,所以只能改用第二個方案在需要加入空格地方加入以下字串,可以造出兩個全形空白的效果。
           
    
    使用 Markdown 主要也是讓我們專注在文章的內容中,避免排版佔用的時間,但畢竟 Markdown 仍是以英文為主要對象,因為排版引擎排出來的樣式難免有些不適合於中文中。

缺點

  • 方享記事必須要使用 Joplin NextCloud 服務,不然無法分享記事
    但這對我來說並不會有什麼困擾,我只是用 Joplin 來做筆記,並沒有要進行協作編輯。單純的分享可以透過匯出成 PDF 後再轉給我要分享的對象。

參考資料

JStock 在Linux下無法使用雲儲存功能的解決方案


JStock 是一套免費好用的股票投資組合管理軟體,可以管理手上的股票投資組合,計算投資損益還有自製指標篩選股的功能。
一直是個好幫手,但是突然發現在 Fedora 31 環境下的儲存資料到 Google 雲端和從 google 雲端讀取資料的功能居然異常,動彈不得。試了好幾個方法後,想到現用的都是 OpenJDK,或許改用 Orcale JRE 試看看。

於是到 Orcale JAVA 的網站下載了 zip 檔的 JAVA 回來,單獨給 JStock 使用看看。把 Orcale JAVA 解壓縮後跟 JStock 放在同一層,指定用這個版本的 Java 來開啟 JStock,果然就都正常了。

OpenJDK 在大部份的情況下使用都是 OK 的,但總是仍有一些小問題是需要用 Orcale JRE 來執行方能得到最完全的結果。留個記錄,希望遇到類似情況的朋友多個嚐試解決的方案。

Orcale Java 官方下載頁面: https://www.java.com/zh-TW/download/manual.jsp
可以找 Linux X64 的版本.

在 Fedora 31 下讓 Python 多版本共存的方法

在 Fedora 31 下每個版本的 Python 有各自獨立的套件名稱,可以簡單的直接透過套件管理工具 dnf 來簡易安裝各版本的 Python。
  1. 安裝 Python 3.7 可用以下指令
$ sudo dnf install python-unversioned-command

  1. 安裝 Python 3.6 可用以下指令
$ sudo dnf install python36

  1. 安裝 Python 2.6 
$ sudo dnf install python26

  1. 安裝 Python 3.9
$ sudo dnf install python39


各別的執行指令可以透過 rpm 的指令確認每個 package 在 /usr/bin/ 安裝的執行檔分別是什麼
$ rpm -ql python-unversioned-command
or
$ rpm -ql python36

透過 virtualenv 來造出所需要的執行環境,若需要 python 3.7 的執行環境則
$ virutalenv -p python [目錄名]
$ cd [目錄名]
$ source bin/activate

其他版本的執行環境,先用 RPM 找到執行檔後再利用 virtualenv 就可以造成那個版本下的執行環境
$ virutalenv -p [執行檔名] [目錄名]
$ cd [目錄名]
$ source bin/activate



將每個執行環境區分開來,可以確保每個環境不互相干擾的使用各自的 Library 哦即使是同一個版本下,也可以為每個 Project 造一個獨立的環境,每以讓每個 Project 的執行環境只安裝其必要的套件而不互相干擾,但缺點就是佔用的空間有點大就是了。

Nautilus - Gnome 檔案總管快捷鍵清單

一般功能
Ctrl + N  => 新增視窗
Ctrl + W => 關閉視窗或分頁
Ctrl + F => 搜尋
Ctrl + D => 將目前位置加入 Bookmark

分頁功能
Ctrl + T => 新增分頁
Ctrl + Page_Up => 移至上個分頁
Ctrl + Page_Down => 移至下個分頁
Alt + 0 ~ 8 => 開啟分頁

Navigate
Alt + 左鍵 => 返回前一層
Alt + 右鍵 => 向前
Alt + 上鍵 => 上一層
Alt + 下鍵 => 下一層
Alt + Home => 回到 user home
Ctrl + L => 輸入位置  (想複製和快速切換路徑時使用)

顯示
Ctrl + H  => 顯示/隱藏檔案 (快速檢視隱藏檔)
F9  => 顯示/隱藏側邊欄
F10  =>  顯示/隱藏動作選單
Ctrl + 1  => 列表檢視
Ctrl + 2 => 方格檢視
Space => 快速檢視檔案 (超級方便,MAC下也有這功能)

編輯功能
Shift + Ctrl + N  =>  建立資料夾
F2  => 重新命名
Ctrl + I / Alt + Enter  =>  顯示檔案屬性






Fedora 31 下安裝 fbprophet

Fedora 31
Python 3.7
一、在安裝 fbprophet 時,若遇到​ gcc 的錯誤,可以試試把
環境中的編譯套件裝好。
$ sudo dnf install 'C Development Tools and Libraries'

二、然後把 python3-devel 的套件也裝上,然後再裝一次。若還是不行把 python3-sip-devel 也裝上然後再試一次。
$ sudo dnf python3-sip-devel

三、使用 pip 安裝 fbprophet
$ pip install fbprophet




在 Fedora 31 環境下安裝 TA-Lib

環境: Fedora 31 Linux
Python Version: 3.7

一、先將環境下可能需要的編譯套件裝好
$ sudo dnf install 'C Development Tools and Libraries'


二、在 Fedora 環境下可以先到以下網址下載 ta-lib-0.4.0-1.i386.rpm 使用 dnf 裝起來後。​
再執行 pip install ta-lib

三、如果在第二步的 dnf 安裝時出現檔案衝突的錯誤訊息,就採用原始碼安裝的方式。
若仍不行,就下載 ta-lib-0.4.0-src.tar.gz ,
$ tar -zxvf ta-lib-0.4.0-src.tar.gz
$ cd ta-lib
$ ./configure --prefix=/usr
$ make
$ make install
$ pip install Ta-Lib

四、裝好後,如果執行仍會看到找不到 libta_lib.so.0 的問題,有可能是讀取 library 的路徑問題
importError: libta_lib.so.0: cannot open shared object file: No such file or directory

可以檢查 /usr/lib 目錄下是否有以下兩隻檔案而 /usr/lib64 目錄下卻沒有
  • libta_lib.so.0
  • libta_lib.so.0.0.0
可以在 /usr/lib64 目錄下建立連結到 /usr/lib 中
$ sudo ln -s /usr/lib/libta_lib.so.0 /usr/lib64/libta_lib.so.0
$ sudo ln -s /usr/lib/libta_lib.so.0.0.0 /usr/lib64/libta_lib.so.0.0.0

建立完成後, 再試一次. 

使用 ffmpeg 下載 m3u8 的影片檔





使用 ffmpeg 下載 m3u8 的影片檔

現在越來越多網站使用了像 m3u8 類的串流格式檔案,在這裡我們不提串流檔案的好處,來討論如果需要下載這類的影片做為素材時應如何處理。現在已經有些軟體有提供專用來下載 m3u8 的影像檔,但其實使用 linux 的我們,在最常使用的轉檔工具 ffmpeg 就可以處理這個問題,並不需要另外安裝其他的軟體。而且是相當簡單的指令,以下來看一下。   首先要先取得 m3u8 的位罝,不論是檔案還是網址都是可以的,例如

# ffmpeg -i "m3u8網址" -c copy media.mp4

只要沒有特殊其他的保護機制,這樣就可以透過 ffmpeg 將 m3u8 的網址下載下來成 media.mp4 的影像檔了。有時會需要指定 headers 和 user agent,則可以利用 -user_agent 和 -headers 二個參數來代入即可。

Docker SIGILL: illegal instruction 問題除錯記錄

Docker SIGILL: illegal instruction 問題除錯記錄 最近在一台平常執行得好好的伺服器上,遇到一個讓人頭痛的 Docker 問題。 原本 Portainer 和其他容器都可以正常運行,但在系統突然當機後,所有容器在啟動時都出現以下錯誤訊息: d...