本文同樣有在我的網站上張貼。

ExDactyl 是我從 2018 年開始研發的曲面鍵盤,是基於 Dactyl,在修改了傾斜角度,底殼外型修改,並且根據 Ergodox 的設計,額外加回六顆按鍵後的成品。過去有不少人一直在詢問這把鍵盤什麼時候可以購買,但因為這把鍵盤曲面的特性,在外殼製造,PCB 設計,降低製作難度與穩定性上一直都是需要克服的難題。


大家知道其實我是一直有在開發一把曲面的人體工學鍵盤 ExDactyl,而最近我想要辦一個活動,是免費借出這把鍵盤 (最多收押金跟運費,然後還鍵盤的時候退押金),只要幫我寫一篇使用心得就可以了。

更新,借用活動已經開始囉! 請看這篇文章

關於出借活動的公告,可以先按讚追蹤我的鍵盤粉專 ErgoKB,就可以獲得第一手資訊。

但因為這把鍵盤還有一些 pin 腳定義還沒有完全確定,所以目前我還沒辦法發 PR 到 QMK configurator ,讓借的人可以使用他們的介面來設定自己喜歡的鍵位。但由於 ExDactyl 其實就是曲面的 Ergodox,因此暫時性的我先借用 Ergodox-ez 的 ORYX configurator,從介面上設定好之後,選擇 Download source 下來,然後有了 …


更新: 借用活動已經開始囉,請看這篇文章,之後鍵盤相關的更新都會在新的網站 https://www.ergokb.tw/

今年的 COSCUP 才剛剛結束,但收穫實在非常大,同時今年 Ex-Dactyl keyboard 也有在會中亮相,立刻來做個更新。

Ex-Dactyl Keyboard v1 Release Model

首先我們就來個最重大的更新吧,差不多是我之前的版本,但我把一些後續增加的機構強固的部分修補完成,以下是 source code 的部分:

然後我把原專案產出的 model 移除掉,取而代之上傳到 Thingiverse 上面去:

我自己在使用這麼長一段時間後,我想作為 v1 的 release model 是沒有問題的。

轉變為 Community-Driven 的 keyboard

其實今年我看到眾多的開源硬體中,有一個 Cutiepie 的專案,他們的發展過程其實是一個非常適合我參考的對象,所以我覺得 Ex-Dactyl keyboard 某種程度上可以參考他們。

我後來在思考一件事情是,這把鍵盤對我來說是興趣,也許並不是開一間公司全職的做,所以在我拜託其他領域的人來協助我完成整個鍵盤的時候,我們之間的溝通和思考方向有蠻大的落差的。一是他們會用工業上的標準來衡量整個產品的耐用性,堅固性等等;二是他們是以 “要大量生產” 這件事為前提去思考生產的方法。

這並沒有不好,只是一開始我沒有真的想清楚鍵盤的走向,所以導致我一個人做了太多自己不具備專長的工作,而因為不具備這些專長,使得我在製作的時候很花時間,也往往在做出來之後再請他們 review 的時候又需要大改。在這樣的循環之下,導致開發十分緩慢。所以我非常慶幸今年我在 COSCUP 裡面接觸到這些能夠借鑒的專案,也因此,我打算要做一個非常重大的改變:

現在做的部分,我將直接作為 v1 的 model release 出去。而接下來,我想要借助 community 的力量,讓我們從 v2 開始繼續開發下去。我的專長其實比較偏向現在的韌體, configurator, configurator server 等等比較屬於 user 後面使用軟體的部分,所以我希望透過這次將現在已經做好的部分 opensource 出來,然後招募有志之士,讓我們一步一步的把整個鍵盤完成。

所以講到這裡,如果有興趣參與這個專案的人,歡迎來加入一個我的朋友創立的社團 — 鍵人谷。之後也許會在台北辦一些 meetup,請各路有興趣的人前來參加。而參加中的人如果能夠貢獻不論是電路或者機構等等,我想這樣會有更大的機會可以完成這把鍵盤。簡單來說 — 讓專業的來。

以上就是這次的更新,希望大家可以一起來幫忙把這把鍵盤完成!


更新: 借用活動已經開始囉,請看這篇文章,之後和鍵盤相關的文章都會在新的網站 https://www.ergokb.tw/

更新: 鍵盤的 3d model 和 source 已經釋出囉

https://medium.com/@alan81920/update-for-ex-dactyl-keyboard-4c90ee4449fa

嗨大家,距離上次有關鍵盤的文章也好久都沒有消息了,其實是在這段期間我退伍,也開始工作一陣子,有了更多的想法與嘗試以後,終於有一個可以跟大家分享,也差不多可以賣的鍵盤了。

他還不是最終版本,但已經是 beta 版了

首先要跟大家說聲抱歉,這次推出來的傢伙,並不是快一年前一直在努力的無線版本。先別激動,我並沒有放棄無線的版本,這一切的一切,我都會在這篇文章中交代。

為什麼我會在這其中有了這樣的轉變呢?最重要的一點是,這 …


本篇前面會有一堆我生活的小 murmur,覺得無聊可以跳過

Murmur

好久沒發文了,其實距離上一篇文之間經歷了不少事情,像是我去面試然後就做了一個電影推薦系統;然後又為了這個推薦系統,所以去摸了 celery (是芹菜,但也不是你想的那個芹菜)、golang,把松本行弘六年前出版的那本談程式世界的未來拿回來翻,也摸了 Erlang 等等。

正文開始

會想寫這篇文是因為前幾天在 ptt 上面看到有人在賣 HHKB,雖然是二手的但有送一堆東西,最重要的是他已經裝了一個可以自己 program 鍵位的controller,然後腦波不小心一弱,就用 “當作是自己的生日禮物” 這個藉口把它買下來了。在我剛拿到,試打了一下以後,就發現入手前在網路上有查到一些關於 HHKB 的評測文,我覺得其實差異有點大。所以本篇的第一個小主 …


前幾天把放在 safari reading list 裡的一篇文章拿出來看完,這是一篇關於 PPython 多執行緒的文章。在 CPU 單個核心效能提升幅度逐漸減少的這個時代,大家都朝著多核心的方向發展,如果我們能夠善用多核心平行運算的話,可以非常輕易的就讓程式的效能提升數倍。

Concurreny is not Parallelism

Python 有三個方法可以達到創造多執行緒,分別是:

  • Threading
  • Fork
  • Multiprocessing

這三者其實差異蠻大的,threading 最終只有使用一個 CPU Core 來運行,也就是說,在正常思路下,你的程式不只沒辦法透過分工給多個 CPU Core 來運算獲得加速外,還有可能因為要協調 thread 之間的互動跟資源分配,反而程式效能會下降;真正用了多個 CPU Core 的是 Fork 跟 …


最近借到一台 3D printer,要用來做 BlueErgo 的外殼,結果踩上了各式各樣的坑。

列印平台要調很平

這個是我遇過最慘最慘痛的坑了,因為這個東西所以我失敗了好多次好多次。我使用的 printer 是 CR8,他的列印範圍是一個方形。

這類的印表機在使用內建的調平功能時,他會在方形列印平台的四個角落 + 正中間點,將噴嘴移動到印表機認知的 “高度 0” 的位置,讓使用者可以確認噴嘴跟列印平台之間距離是否都相等。如果你的高度沒有調對,會讓你非常痛苦。高度沒有調對可以分為四種:

  • 太靠近平台:這個是非常非常慘的一種狀況,基本上噴嘴已經是抵住平台的狀況,因為你的噴頭只要稍有移動,他就會在你的平台上刮出一道痕跡來
  • 靠近平台,但不如上一種近,但如果你放他下去印一層平面的話,你會看到那層平面非常的粗糙,這是 …


前幾天看到一個 python 教學網站發出的廣告信,當中有一個 topic 是 “why Python import is so sxxk”,這讓我想起曾經有稍微搞懂但後來又忘記的 Python import…

Pyhon import 其實主要分成兩種:

  • Absolute imoprt
  • Explicit relative import

也就是一個是根據絕對路徑 import 的,一個是根據相對路徑 impot 的。但 Python 的 import 是根據 module 來分的,所以弄來弄去會讓人感到十分混亂。

Module

Python 的 package 其實視為一個資料夾包起來的所有東西,但是這個資料夾裡面一定要有一個檔案 __init__.py (內容是空的也沒關係)(更新: python 3.3 以後不強制 …


距離上一篇 openwrt 的文章也過了好幾個月 (遠目)。最近我姐喬遷新居,於是我幫他弄了一台新的路由器,剛好就把整個過程記錄下來。這次我一樣拿到了一台二手的 archer c7 v2 (剛好在沒屋頂找到)。然後 Openwrt 前陣子有一個分支叫 LEDE ,後來兩者又合併了,而在這之中 LEDE 有推出了 17 版,所以我這次就安裝 LEDE 17 版。

首先我們到下載頁面,根據自己的型號選擇韌體。archer c7 v2 的韌體可以在 17.01.4/targets/ar71xx/generic/ 底下找到,當中有許多眼花繚亂的選項可以下載,不過如果我們看最後幾個英文字的話,可以看到只有 sysupgrade 跟 factory 兩種可以用。 sysupgrade 是用來給本來已經安裝了 Openwrt (LEDE)的路由器用的,使用這個 upgrade 可以升級上去,而且可以保留原來的多數設定;而 factory 則是完整的乾淨安裝,用來給本來是別的系統而想重新安裝 Openwrt 上去的人使用。這邊因為我要重新安裝 Openwrt 上去,所以我選擇了 factory 的韌體下載。

接著就可以把路由器拿出來了。 一開始當然要先把路由器插電,然後要先能夠進去路由器的設定介面。在這邊我用有線的方式把我的電腦與 c7 的 lan port 做連接,因為路由器預設都會建立一個子網,然後自己是這個子網的 gateway 跟 dhcp server,所以先透過任何你懂的方式,查到自己的 IP 是多少,以及 getway 或 router 的 ip 是多少,找到以後就可以先從 web 介面進入

從 Mac 的網路設定介面可以看到我自己的 IP 是 192.168.0.100,而路由器的 IP 是 192.168.0.1

直接透過 web 介面,打入 ip 就可以到設定的介面了。接著請參考你手上的說明書,打入帳號密碼登入吧


今天在寫一隻要用在 coursera 某個課程作業的 auto testing 的程式,因為作業裡面給的皮是一隻很單純的 py 程式,資料的讀入跟結果都用 stdin 跟 stdout,為了配合他資料傳遞的方式 (用 stdin 跟 stdout),所以我也剛好研究了一下怎麼在 python 裡面呼叫新的 process,及怎麼與 stdin, stdout 溝通。

根據 python subprocess 的文件檔,大致上可以理解為 Popen 這個方法是比較低階的操作,而 run, 是基於 Popen 上面再包一層比較抽象的高階方法,此外大家也比較常用的可能還有這個,基於 run 上再包一層更高階的 check_output

Popen

首先從最低階的 Popen 方法開始講起,Popen 會開啟一 …

李松錡

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store