設定 caddy server ,只許可 cloudflare ip 訪問
當我們使用 cloudflare 作為防火牆/CDN或是其他事情需要 cloudflare 擋在前面,此時就需要設定 caddy 只能讓 cloudflare存取。caddy 的設定會是如下(cloudflare ip 記得隨時更新) (ban-not-cloudflare) { @notcloudflare_ips { not remote_ip 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22 2400:cb00::/32 2606:4700::/32 2803:f800::/32 2405:b500::/32 2405:8100::/32 2a06:98c0::...
Read post
2022 使用筆記軟體回顧
2022 年初,一開始是使用 Standard notes ,後來因為有一堆小 bug 、搜索功能不夠好用和不容易做到筆記關連,所以跳槽到 obsidian。 使用 obisidan 時,一開始用得很順利。後來當筆記越來越多,在加上受到 atomic note 啟發,產生了更多檔案。這時候,obsidian 就顯得不好用一些(他檔案和資料夾在同一個 tree),最後因為 standard notes 支援筆記關連與上傳檔案後,又跳回 Standard notes。 其實從跳離 Standard notes 到跳回 Standard notes ,Standard notes 搜索功能並無改進什麼,不過因為採用 atomic note 概念,所以原生的搜索功能就變成好用。 過去我筆記的習慣,是喜歡開一則筆記,然後裡面塞滿東西。在這個情形下,Standard notes 只能幫我找到那個筆記,至於我要的內容我要自己去找。但是當我採用 atomic note 概念時,每則筆記都是完整最小內容的筆記,因此我透過 Standard notes 搜索時,就可以準確找到我要的東西(而非還要在很...
Read post
2022 八月,nvim 從 coc 生態系轉成內建 lsp 心得
過去使用 nvim ,coc.nvim 生態系,快一百個 plugin 。coc.nvim 使用起來雖然簡單,不過 nvim 啟動速度大概快一秒。 後來將 coc.nvim 換成 nvim-lspconfig 與 nvim-cmp 後,也順便移除了非 lua 或 vim script 寫的 plugin,在 plugin 數量快一百三十個與設定檔行數變多的前提下,nvim 的啟動速度降到 0.3 秒左右,快十分多 ...
Read post
資料夾筆記法
最近在思考筆記方法,後來覺得透過檔案資料夾形式作筆記最簡單,也最方便。不需要用 tag ,也不需要用複雜軟體。 你可以使用純文字檔做筆記,也可以透過 markdown 格式。當內容需要透過章節來分段時,此時就將現在的檔案檔名變成資料夾名稱,原本分段的標題就變成了資料夾底下的個別檔案。如果你想要保留順序,則在檔案名稱前面加編號。也沒有一定要每個分段就是一個檔案,關鍵在於每個檔案是否是最小不可分割的筆記(atomic note) 如果要搜索資料,則可以透過 fzf、ripgrep等軟體。當然,你也可以使用作業系統內建的檔案管理工具做搜索,彈性很高。 因為使用檔案資料夾筆記方法,所以通常你可以將此方法套用至各種不同的筆記軟體(當然要支援無限深度的資料夾)。 也因為是檔案資料夾筆記法,所以你可以支援各種格式。你的資料夾能夠放什麼,就能做什麼筆記。 舉個簡單的例子來示範檔案資料夾筆記法。假設你`linux 工具`資料夾有 rofi 檔案,裡面紀錄編譯方法。有一天你想要額外記錄 rofi on的快速鍵,那麼你就將 rofi 變成 linux 工具資料夾下的資料夾,裡面擺編譯方法與快速鍵兩...
Read post
ansible default 行為
預設要觸發 default 值,需要上一個變數是未定義 如 "{{ undefined_variable | default(default_var) }}" 只有 undefinedvariable 未定義時,才會使用 defaultvar 的值 如果需要上一個變數是空值時,則用預設值,需要傳入 true 到 default 的第二個參數 如 "{{ empty_value | default(default_var, true) }}" 如果 emptyvalue 是空字串空陣列等,則會使用 defaultvar 的值 ...
Read post
建立第二個頭腦
過去一直都是靠頭腦再記事情,不太需要做額外的筆記或是建立知識管理系統。因為總覺得遇到問題,基本上都可以透過 google 找到答案。 後來記性變差後,有在做一些筆記。直到有一次我再找一個問題的解答,不過一直 google 都找不到。後來向別人要關於那主題的相關資料,才找到關鍵字。這時候我才發現,我需要一個知識管理系統作為我第二個頭腦。 知識管理系統,或是第二個頭腦的重點,在於如何讓你過去所學習的東西,如何在未來需要時,能夠快速地有效使用它(快速的找到該知識與有效的使用該知識解決問題,兩者缺一不可)。有些人靠的是強大的記憶力,但是我覺得我記憶力不好,所以需要依賴系統。 過去我是使用 Standard notes 作為筆記軟體。不過要拿來當知識管理系統的話不夠好,主要是搜索不夠強與附加檔案不方便。 最後採用 Obsidian 軟體。 Obsidian 有下面功能: 強大的搜索功能。能夠搜索 section (#下面區塊)、tag等 能夠嵌入 pdf 等檔案,也可以嵌入你的筆記或是筆記的一部分 支援雙向連結 支援 markdown 他是使用檔案存資料,因此你可以用 nvim 或...
Read post
Standard notes 介紹
前言 之前都是用 vimwiki 在做筆記。不過 vimwiki 不方便用手機存取。因此開始評估各種筆記軟體。 評估過下面軟體,最後選擇了 Standard notes。 Standard notes 優缺點如下: 優點 Open source 原生支援 web。 支援資料夾(使用 tag 實作)(付費) 支援無限制的子資料夾 (畢竟資料夾只是 tag 而已)(付費) 許可筆記放在不同資料夾裡面。(付費) E2E 加密 能夠將筆記轉成 blog 支援使用密碼保護特定筆記 他可以先選定 tag ,在搜索 tag 下的資料 缺點 使用 markdown 格式不支援圖片 無使用法鍵盤操作筆記功能,如搜索筆記 搜索功能十分陽春。他只會列出所有包含關鍵字的筆記。至於要找筆記內的關鍵字,要在搜索一次。 不方便做到提醒功能 評估過其他軟體列表: everntoe: 優點: 支援 web, desktop app, mobile app 現在的 web 版本比過去好很多(之前 web 介面不好看)。 功能豐富 缺點: 不支援 markdown 沒有加密 筆記本、搜索...
Read post
直接從 linux command line 的 stdin 複製資料
從 stdin 複製資料 下載下面程式 https://chromium.googlesource.com/apps/libapps/+/master/hterm/etc/osc52.sh 之後就可以透過將資料丟到 hterm-copy 的 stdin,terminal emulator 則會自動複製資料 執行下面指令 sudo curl https://raw.githubusercontent.com/kjelly/auto_config/master/roles/mybin/files/mybin/hterm-copy.sh -o /usr/bin/hterm-copy 之後就可以透過將資料丟到 hterm-copy 的 stdin,系統則會自動複製資料 和 vim 整合 如果想要和 vim(or neovim) 做整合,則執行下面動作 下載 https://raw.githubusercontent.com/kjelly/auto_config/master/roles/vim/files/clipboard-provider 確保 clipboard-pro...
Read post
測試 terminal 是否支援 true color
用下面腳本可以測試 terminal 是否支援 true color curl https://raw.githubusercontent.com/kjelly/auto_config/master/roles/mybin/files/mybin/test-true-color.sh | bash 或是直接使用以下的程式碼 #!/bin/bash # # This file echoes a bunch of 24-bit color codes # to the terminal to demonstrate its functionality. # The foreground escape sequence is ^[38;2;<r>;<g>;<b>m # The background escape sequence is ^[48;2;<r>;<g>;<b>m # <r> <g> <b> range from 0 to 255 inclusive. ...
Read post
在 chrome secure shell 使用 NERD fonts
要在 chrome secure shell 使用 NERD fonts 字型,開啟 chrome secure shell 的選項,在 Custom CSS (URI) 填入 https://cdn.jsdelivr.net/gh/kjelly/webfont@latest/css/nerd.css 。 之後就可以在 Text font family 填入下面字型名稱,使用該字型。目前之支援的字型有: Knack Nerd Font Mono FiraCode Nerd Font Mono Hack Nerd Font Mono UbuntuMono Nerd Font Mono SauceCodePro Nerd Font Mono SpaceMono Nerd Font Mono Hurmit Nerd Font Mono DroidSansMono Nerd Font Mono InconsolataLGC Nerd Font Mono RobotoMono Nerd Font Mono Iosevka Nerd Font Mono AurulentSansMono Nerd...
Read post
mapr 介紹
mapr 是一個非同步,批次執行指令的程式。擁有以下特點: 非同步執行指令 可以指定同時執行指令的數目 指令執行失敗時,不在執行下一個指令 能夠取得過去執行程式的結果作為這個指令的輸入(過去結果儲存在檔案裡面) 能夠從檔案、指令執行結果、標準輸入做為指令參數 能夠自動產生暫時檔案或是 uuid 作為指令參數 使用情境 檢查特定主機的特定路徑是否有檔案,有檔案則顯示主機名稱 mapr -f '@a=hosts' 'ssh @a ls /somepath/somefile' 'echo @a' --last --no-header 上述指令執行從檔案讀取主機名稱(一行一個主機名稱),之後透過 ssh 指令檢查 /somepath/somefile 路徑是否存在, 如果存在則執行 echo 指令,印出主機名稱。如果路徑不存在,則不會執行 echo 指令。 @a會被替換成檔案hosts裡面的每一行。檔案有 n 行,則執行 n 次。 刪除 OpenStack 下 project 所有的 volumes mapr -c '@a=openstack volume list --...
Read post
kubernetes 接 ceph 當 storage backend
kubernetes 版本:1.13.0 不同版本的設定可能會不一樣,我在201903測試過可以用 未來可能會有些許不同 不過原則應該都一樣 原則: kubernetes 支援用 rbd 當 storage backend。但是 kube-controller-manager container 未必會包含 rbd 指令。如果 kube-controller-manager container 未包含 rbd 指令,你建立 storage 時就會看到 『failed to create rbd image: executable file not found in $PATH, command output:』的錯誤。這時候,你就要提供新的 container ,讓 kubernetes 可以透過你提供的 container (之後都叫 provider )來執行 rbd 相關操作。該 provider 放在 kube-system 下。 腳本簡易說明: 一開始建立名為 rbd-provisioner 的 serviceAccount ,之後在建立 secret 用來放 ceph...
Read post
在 linux 下使用指令將照片自動轉正
使用下面工具可以做圖片轉正 sudo apt install imagemagick mogrify -auto-orient *.jpg ...
Read post
debian 出現 locale: Cannot set LC_ALL to default locale: No such file or directory
debian 出現 locale: Cannot set LC_ALL to default locale: No such file or directory  的解決辦法 sudo apt install locales sudo locale-gen en_US.UTF-8 sudo dpkg-reconfigure locales ...
Read post
輸家競標
網路上有種競標方式,它的特性是每次下標都要付錢,我不知道到該怎麼稱呼這種競標方式。姑且叫他輸家競標。 為什麼我要叫他輸家競標呢? 因為你一下標你就輸了(輸了錢和時間),在這種競標模式下,只有兩個贏家,賣家、平台提供者。 在一般的競標模式下,競標者為了確保自己的最大利益,通常不會一次加碼太多錢。直到沒有人願意再加碼,此時競標就成立,買家確定。 可是在輸家競標的情形下,一旦你下標,要嗎你成為買家,要嗎你失去你因下標的而付出的錢。許多人為了避免損失之前下標的錢,就會盡量的下標,直到物品金額他無法負擔。也因為大部分下標的人不願意失去他因下標的而付出的錢。因此最後成交金額常常會比一般競標方式高,而買家通常不會得到太多好處(因為他需要負擔成交價、因下標而損失的錢、使用平台費用)。 一般的競標,因為出價不需要成本(當然有時間成本),所以要嗎成為買家,要嗎就浪費時間(輸家競標既浪費錢也浪費時間)。所以不會有買家競相出價的情形。因此一般的競標方式,對買家有利許多,賣家則還好。 ...
Read post
論生活中常見成本概念
這篇文章探討生活中的常見成本,讓你在思考成本時,有個方向。以下的名詞並非所有都是經濟學術語。成本不一定是金錢。 擁有成本:這是指當你從一個狀態轉變到另一個狀態(注:後者狀態的價值比前者狀態還高),所付出的成本。例如你從沒有車到有一台車,購買車的成本。或是從有第二台車到有第三台車的購車成本。 維持成本:維持狀態,使其狀態的價值避免嚴重減損。例如保養車的成本,避免車損壞。 機會成本:當你做一個選擇而需要放棄其他選擇,則其他選擇的最高價值者,為機會成本。在思考時間相關的問題時,應注意機會成本的問題。 沉沒成本:當你做了某件事,然後發現做下去沒意義(或價值)。但是因為過去花費的成本,又讓你繼續做沒意義(或低價值或非完全理性)的事。則過去花費的成本則為沉沒成本。例如你不小心買了一張很難看的電影票,你覺得去看只是又浪費時間。但最後又去看,而浪費了時間。該張電影票則為沉沒成本。 了解了上述成本的意義,則以情境來描述上面成本概念。 情境一: 當你花錢買書,則買書錢為擁有成本(你必須付出錢,才能擁有該本書)。當你買了很多書,因而需要額外租空間來放書,則租額外空間的錢則是書的維持成本(為...
Read post
新部落格!
舊的blog 在blogger 不過後來覺得 blogger 不好用 就很少寫文章了 現在用了 standard notes 後 發現 standards notes 有提供 blog 功能 覺得很方便 畢竟我的 blog 主要是用來記錄電腦筆記 這樣我自己的筆記和電腦筆記都可以用 standard notes 管理 ...
Read post
探討解決問題的方法
在做決策時,一開始需要盡可能列出問題的所有可能解法,這樣可以避免在單一解法陷入太深,而看不到其他情形。在找出許多可能解法後,則需要深入探討評估各種解法。需要廣度分析、深度分析。評估各種解法,可以從下列三種角度來分析 利益分析:分析各種解法能夠帶來的好處。這會是優先考慮的角度,畢竟沒有好處的解法是不需要考慮的。 風險管理:任何解法都會有副作用,評估各個副作用發生的可能性,並副作用會造成的損害。 損害控制:當採取該解法時,發生不利或不預期的事情時,是否能夠降低損害或是接受該損害。  以下象棋為例子,一開始要思考各種可以走的走法。之後深入分析各個走法,找出各個步數可能優缺點。評估各種走法,思考各種走法,有何風險。如會損失一隻”車”或是”馬”。損害控制像是這樣的走法,可能只會讓你損失兩隻兵,但是不會輸掉遊戲之類的。 ...
Read post
ssh tunnel 只會監聽 localhost
當你在用 ssh tunnel 時 如用下列指令 ssh -NfR 0.0.0.0:1194:192.168.10.1:1194 remoteserver 你把 0.0.0.0 改成各種組合 他還是只會監聽 localhost 需要將 sshdconfig 的 GatewayPorts 改成 yes& 才有作用 ...
Read post