2016年12月7日 星期三
[OpenSUSE] 自 42.1 升級至 42.2 後沒有聲音
現象
如下列,所有現象均出現時,可以嘗試使用本解法- 播放音樂時發現沒有聲音
- 若使用 sudo 來播放的話有聲音
- 升級時,利用 DVD (或是自其映像檔衍生的 USB stick)升級,並且在升級過程中選擇了 import user (匯入使用者)
解法
執行如下指令sudo chown your_user_name /home/your_user_home_directory假如使用者名稱是 house,家目錄在 /home/house,則
sudo chown house /home/house
參考
2016年10月25日 星期二
VS Code 簡介
官方網站:https://code.visualstudio.com/
簡介
VSCode 是微軟公司所推出的程式碼編輯器,可以在各個主流平台上面運行。官方所釋出的預設模式已經包含了許多網路相關程式語言的支援(像是 JS, TypeScript, CSS, HTML 的編輯等等),並且可以利用外掛(Extension)來擴充其功能。也因為擴充功能的關係,它已經相當接近一個整合開發環境了。授權小爭議
有人在 VSCode 的程式碼倉庫詢問了「為什麼官方的執行檔發布包和程式碼倉庫的授權不一樣」之問題,官方之回答重點有:- 有許多軟體也使用了這樣的流程(像是 Chrome 建立在 Chronium 之上,但 Chrome 使用了非自由軟體的授權)
- 官方所散發的執行檔包裝是建置自 VSCode 的程式碼倉庫,不過在建置前,先調整了 product.json 使建置後的結果包含了微軟公司的商標、圖示等資料。
- 若對官方散發的執行檔所附帶的授權合約不滿意,您可以自行由 VSCode 的程式碼倉庫下載原始碼,自行建置屬於自己的執行檔
其他相關文章
2016年10月10日 星期一
JavaScript
超簡單介紹
JavaScript (簡稱 JS)是歷史悠久,使用也非常廣泛的一個動態程式語言。諸君所見到的一切網頁幾乎都含有 JS 程式碼,
「受歡迎」歸「受歡迎」,然而它也因為它語法上的「不確定性」以及其動態語言的本質受到許多人詬病。所謂「不確定性」是指其某些違背主流程式語言的規則(例如「所謂 this 為何物」的問題)。這樣的性質燃燒了許多有經驗的程式設計人員腦袋內的養分以及腦細胞。另外,動態語言的本質,讓大多數 JavaScript 陳述式結果無法輕易地被預測(間接讓設計整合開發環境的人傷透腦筋)
雖然如此,但若想不接觸 JS,就必須迴避幾乎所有跟 Web 開發的一切專案,會失去不少機會。再加上 Node.js 的出世,讓 JS 得以在伺服器端,甚至是桌面以及手機應用上大放異彩(藉著 electron 以及 cordova 等)。因此,還是有不少程式設計人員前仆後繼的投入學習。
開發工具
JS 的工具、程式庫相當相當相當的多,簡直就是戰國時代!因此,此處所列者為千秋所接觸過的工具。- 整合開發環境
- Visual Studio Code
在一定的限度內提供程式碼自動完成的功能
需要注意程式碼本身在 MIT 授權下發布,但是在官方網站上發布的執行檔則使用了比較有限制性的授權。請參看這裡的解說。 - Atom
具有高度自訂性的編輯器。由 Github 所開發。和 VIsual Studio Code 一樣,是使用所謂的 Web Technology 寫成的桌面軟體。 - 執行環境
- 瀏覽器
一般用來調整網頁顯示,以及增加網頁功能的 JS 都是在瀏覽器上運作
建議使用 Firefox, Chrome 或 Chromium,因為有好用的開發者工具。 - Node.js
獨立於客戶端網頁運作的 JS 程式碼均在 node.js 上運作 - 相依性管理工具
- npm
和 Node.js 相輔相成的套件管理工具
- 前處理工具
- Browserify
讓 node.js 的套件可以被用在瀏覽器環境上 - 建置工具
- Gulp
- 偵錯工具
- 您的瀏覽器
您的瀏覽器有開發者工具,好好利用吧! - Node.js (node debug xx.js)
- (族繁不及備載)
學習資源
- 互動式教學網站
- Codecademy
不錯的互動教學網站,非常適合初學者使用。也提供其他程式語言的教學 - 教學與練習網站
- CodeWars
也提供其他程式語言的練習
非基礎題目可能需要演算法的基礎 - Codingame
也提供其他程式語言的練習
非基礎題目可能需要演算法的基礎 - JSWarrior
小遊戲 - Untrusted
也是小遊戲 - exercism.io
練習網站。也提供其他程式語言的練習。特點是撰寫程式時可以離線,在本機上測試通過後才上傳程式碼。 - JavaScript 30
以「學習程式就是要親手打造點東西」的精神,提供一個 30 天的 JS 打造之旅。
千秋的練習:https://gitlab.com/chiakikame/JS30 - NodeSchool
提供許多線下 workshop :教完後就馬上動手做! - 參考文件
- MDN
提供完整的開發資料 - Can I use ...
很適合查詢某瀏覽器是否支援某組 JS API 的好工具 - JS 專家文串
- Eric Elliott
Programming JavaScript Application 的作者
相關程式庫
基本上,在 node.js 上可以執行的東西,有可能可以利用 browserify 使其可在瀏覽器上面運作;但是,只在瀏覽器上面運作的東西大多無法在 node.js 上面運作:因為大多是使用者界面元件相關的東西,會依賴在 node.js 上面沒有的瀏覽器 API 框架。- 基礎程式庫(執行引擎)
- 瀏覽器
在瀏覽器內執行 JS,以達成某些動態呈現的需求 - Node.js
在本機上執行 JS 的執行引擎 - 使用者界面框架(在瀏覽器上運作)
某些框架提供了需要 Node.js 才可以運作的「伺服器端呈現」(server-side rendering)功能 - Vue.js
新起之秀!下面列出 vue.js 相關的工具 - Quasar
可以用同一份程式碼建立網頁、桌面程式(Electron)以及手機程式的框架 - DejaVue
將使用 Vue.js 的程式圖形化使開發者易於了解 - avoriaz
測試使用了 Vue.js 程式的工具 - eagle.js
基於 Vue.js 的投影片播放框架 - React
- Mithril
- Marko
- AngularJS
- Riotjs
- hyperapp
- 使用者界面元件以及小服務(瀏覽器上面運作)
- 元件
- medium-draft
Rich text 編輯器 - medium-editor
Inline editor - quill
很強大的 rich text 編輯器 - trix
簡單的 rich text 編輯器 - pell
小巧,無相依元件的 rich text 文字編輯器 - uppy
檔案上傳元件。(開發中) - monaco-editor
在瀏覽器內,讓您的使用者使用和 VS Code 一樣的編輯器 - Keen-UI
基於 vue.js 的元件庫 - notyf
沒有其他相依元件的 notification 程式庫 - flatpickr
日期選擇器 - headroom.js
做出像是 medium.com 那樣子會自動隱藏 / 現身的 heading - tingle.js
在網頁繪圖區做出 modal 對話方塊的效果(跟 JS 的 alert 不同) - Choices
下拉式選單 / 文字方塊功能增強 - Tippy.js
工具提示(tooltip) - botui
建立一個可以利用對話的方式來收集使用者資訊(代替表單)的使用者界面 - 使用者界面功能
- validate.js
提供送出表單之前,驗證表單資料的功能 - blazy.js
在圖片上加上 lazy-loading 機制的幫手 - gotem
剪下功能。讓使用者按下某個機關後,把另個元素的內容放入剪貼簿 - 桌面或手機應用程式框架
- 伺服器框架(在伺服器上運作)
- expres
很知名常用的伺服器框架。下面列出常用的 middleware - body-parser
Json, text, raw, url-encoded 的 request body 處理 - multer
multipart/form-data 處理 - serve-favicon
「我的最愛」圖示 - compression
Response deflate / gzip 壓縮 - csurf
CSRF token middleware - helmet
藉著增加一些 HTTP header 來保護您的 express web app - koa
- hapi
- fastify
標榜高效能的伺服器框架 - 資料庫引擎或驅動程式
資料庫引擎的話,多半使用在以 node.js 為基礎框架的時候 - MongoDB(database connector / driver)
- LevelDB(embedded database)
若想要在 node.js 上面使用,建議以 npm 安裝 level package。(npm install level)
有些人指出 levelDB 的資料庫容易在像是斷電的情況下毀損(您可以參考其 github repository 的 issue 區域) - NeDB (embedded database,瀏覽器也可以使用)
小巧的資料庫引擎,不適合存放 big data 等級的資料 - neo4j-driver(database connector)
連接 Neo4j 的 driver,由 Neo4j 的開發團隊出品 - sqlite3(embedded database)
- rethinkdb (database connector / driver)
支援以 reactive 的方式取得資料的 NoSQL 資料庫 - pouchdb (browser database)
可離線資料庫。可以利用中央的 CouchDB 進行客戶端間的資料同步。
此資料庫引擎可以使用在瀏覽器或者 node.js 上 - rxdb (browser database)
利用 PouchDB 實現的可離線資料庫。
此資料庫引擎可以使用在瀏覽器或者 node.js 上 - 測試工具(框架等)
- tape (Node.js、瀏覽器)
符合 TAP (test anything protocol)協定的測試框架 - Postman
開發 WEB API 的好幫手:可以用來手動執行 API 查詢以進行測試 - phantomjs
多功能的 headless web browser,可以用在使用者界面單元測試、動態網頁的抓取、以及動態頁面的呈現(rendering)等。(爬動態網頁的爬蟲幫手)
可用 npm 安裝 phantomjs-prebuilt,或者從官方的下載區取得。 - json-server (node.js)
利用您提供的 json 檔案,產生一個 mock server 讓您可以測試前端 - 圖形或遊戲引擎(瀏覽器運作)
- CraftyJS
遊戲引擎 - WhitestormJS
3D 引擎 - Planck.js
2D 物理引擎 - picogl.js
嚴格說起來不算是 3D 引擎,而是在 webgl 2 上面再包上簡單的一層,使 webgl 容易使用。 - 基礎(語言擴充、工具箱等)
- 工具箱
- lodash (均可)
提供許多的工具,像是函數式程式設計輔助、字串處理、數學函數、比較函數等 - just (均可,瀏覽器使用須配合 browserify)
提供模組化的許多小工具(陣列使用、物件處理、字串處理等) - suger (均可)
提供模組化的許多小工具(時間、字串處理、物件 reduce ...) - ramda (均可)
提供 functional programming 工具的程式庫 - Folktale ( 均可,瀏覽器使用須配合 browserify)
內容豐富的 functional programming 工具箱,提供了像是 Monad, Either 以及 Maybe 工具。 - 字串處理
- 資料結構
- immutable.js (均可)
提供不可變(immutable)資料結構的程式庫 - mnemonist (均可?)
提供許多資料結構的實作 - graphology (均可?)
提供圖(graph)資料結構的實作 - freezer (均可?)
Immutable state holder,會在 state 有更動時發出事件供程式設計人員處理 - BitArray.js (均可?)
省記憶體的位元陣列 - wade
利用 Trie 提供快速搜尋的機制 - 數學、數字以及統計
- math.js (均可)
數學擴充 - simple-statistics (均可)
提供簡單的統計相關計算功能 - decimal.js (均可)
大數字操作 - swarm-numberformat (均可)
格式化大數字的輸出 - NodeJS 串流(stream)工具
別忘了瞧瞧資料剖析的部份,裡面可能有支援串流的程式庫 - through2
撰寫 Transform stream 的幫手
另有 through2-map, through2-filter, 以及 through2-reduce 三樣輔助工具。 - ez-stream
一個獨立的 stream library。可以包裹 node.js 的 stream。 - 其他
- 多工
- webworker-threads
thread-based - tiny-worker
process-based - skale-engine
平行與分散式運算引擎 - 記憶體相關
- big-map
利用 Buffer 提供 - 美工(繪圖、動畫、圖形處理)
- pdfkit (node.js、瀏覽器需用 browserify)
產生 pdf 檔案
使用中文字型、畫表格、換頁的實例請見這裡。 - jimp (node.js)
完全以 JS 實做的影像處理程式庫,支援 bmp, jpg, png。 - d3.js (瀏覽器)
可以將資料轉換成圖形的程式庫 - dimple.js (瀏覽器)
建構在d3.js 之上的作圖(統計圖)軟體 - d3-node (node.js)
讓伺服器端可以使用 d3.js 的功能 - billboard.js (瀏覽器)
建立在 d3.js 之上的圖表繪製程式庫 - color-blind (node.js)
模擬色盲者所看見色彩的程式庫 - PixiJS (瀏覽器)
2D 繪圖引擎,提供硬體加速 - KUTE.js (瀏覽器)
動畫引擎 - chartist (瀏覽器)
作圖(直方圖折線圖等)。簡單小巧沒有其他相依元件 - cropper.js (瀏覽器,Node.js ?)
影像處理(裁剪、放大、旋轉等) - sigma.js (瀏覽器)
作網路圖 - rough.js (瀏覽器)
在 HTML5 canvas 上做出手繪風格的圖形 - UTIF.js (均可?)
TIFF 影像解碼器,純 js 實做 - UPNG.js (均可?)
PNG 影像解碼器,純 js 實做 - web-dsp (瀏覽器)
以 web assembly 做出來的影像 / 影片處理程式庫 - GraphicsJS (瀏覽器)
繪圖程式庫(利用 SVG / VML 技術) - 檔案以及資料剖析
已知支援 node.js 串流的程式庫後方會有(stream)標記 - 字型
- Typr.js(均可)
TTF 以及 OTF 字型剖析(似乎不太活躍了) - opentype.js (均可)
Open Type (OTF)字型解析 - 壓縮檔
不要忘了內建的 zlib 可以提供 streaming 的 gzip 處理體驗 - node-zip
zip 壓縮檔處理 - adm-zip
zip 壓縮檔處理 - unzipper (node.js)(stream)
支援 streaming 的 zip 解壓縮處理 - compressjs (均可)
提供多種格式壓縮檔的壓縮與解壓縮
如果要 streaming ,所提供的 input 以及 output 分別要實做 readByte 和 writeByte - decompress (node.js)
提供多種格式的一口氣解壓縮的功能 - lzma-purejs (均可)
lzma 格式的壓縮以及解壓縮
如果要 streaming ,所提供的 input 以及 output 分別要實做 readByte 和 writeByte - xz (node.js) (stream)
lzma 格式的串流壓縮以及解壓縮 - unbzip2 (均可)(stream)
bz2 格式的 streaming 解壓縮 - 影片
- JSMpeg (瀏覽器)
mpeg1 & mp2 影音解碼器 - 圖檔(請參照美工部份)
- 其他格式
- parse5 (node.js)(stream)
HTML5 剖析器
具有 ParserStream (WritableStream) - htmlparser2 (node.js)
HTML 剖析器,提供 SAX 界面以及製作成 DOM 文件的方法(要配合 domhandler ) - json-parse-async
提供 JSON.parse 的非同步界面。實際剖析發生在相同的執行緒上面。 - JSONStream (node.js)(stream)
利用 Stream 的方式來剖析所指定的部份 JSON 資料
亦即它無法在 stream 完成後傳回完整的資料,這不是這個程式庫的目標 - oboe (均可)
利用類似 SAX 的方式來分段剖析 JSON - 網路通訊(Ajax、fetch api wrapper、檔案上傳等)
- resumable.js (瀏覽器)
可以將大型檔案切塊後上傳的工具。需要有伺服器端的配合。 - ftp (node.js)
- ftp-client (node.js)
包裝 ftp 的程式庫,但似乎無法做複雜的操作。若您知道目標檔案的位置而不需要探勘的話,似乎是不錯的選項 - jsftp (node.js)
除了 ftp 以外的選擇 - node-fetch (node.js)
在伺服器端使用 fetch API ! - request (node.js)
功能強大且方便使用的 http / https client - axios (均可)
功能強大且方便使用的 http / https client。具有取消 request 的功能 - phin (node.js)
輕巧的 http / https client。 - trae (瀏覽器)
Fetch-based http / https client。 - 機器學習
- 自然語言
- franc (均可)
語言偵測。franc-all 支援 375 種語言; franc 支援 175 種語言; franc-min 支援 75 種語言。 - 紀錄工具(logging)
- debug (均可)
簡單的 logging 工具。很多程式庫或者框架均利用 debug 來做錯誤紀錄。 - winston (node.js)
功能豐富的 logging 工具。支持非同步、多輸出端、以及自定義格式等功能 - 開發工具
- Gulp
- Npm
- Browserify
- phantomjs
多功能的 headless web browser,可以用在使用者界面單元測試、動態網頁的抓取、以及動態頁面的呈現(rendering)等。(爬動態網頁的爬蟲幫手)
可用 npm 安裝 phantomjs-prebuilt,或者從官方的下載區取得。 - nodemon
簡單的伺服器程式開發小幫手:在檔案有修改的時候幫你重新啟動伺服器軟體 - tldrlegal
檢查專案相依程式庫的授權,替你列出這些授權所應該遵守的義務 - pkg-ok
檢查 package.json 裡面紀錄的 main 以及 bin 欄位中的檔案是否存在。適合用在 npm prepublish hook
2016年10月9日 星期日
Kotlin
官方網站在這裡
「有個 IDE 來幫你作雜七雜八的事情,才容易體會倒寫程式的樂趣!」如果你跟千秋一樣認可這句話,可以考慮使用 IntelliJ IDEA :它不需要做額外的調整,直接支援 Kotlin!(雖然這裡的教學說要下載個外掛,但那個外掛在比較新版的 IDEA 裡面已經裝好了)附帶一提,Android 的開發工具 Android Studio 是基於 IntelliJ IDEA,且 IntelliJ IDEA 也有 Android 的開發外掛,所以您也可以使用 Kotlin 來開發 Android 程式!
當然,若諸位比較喜歡使用 Vim / Emacs 的話,也可以下載獨立編譯器來使用。
接著,撰寫好之後就是建置的工具。依千秋淺見,最好用的建置工具是 Gradle,因為:
全,而且簡單好用。如果已經有使用 Java 經驗的人,很推薦使用 Kotlin 看看!
簡單整理:
另外,也不要忘了去 https://github.com/KotlinBy/awesome-kotlin 看看!
超簡單介紹
Kotlin 是一個以 JVM / JavaScript 為編譯目標的靜態型別程式語言。其簡單輕巧但嚴謹的語法,使其獲得了 「android 上的 swift」 稱號,並且以 JVM 為編譯目標時,可以與現存的所有 Java 程式庫相容。開發工具
首先來講講撰寫工具吧!「有個 IDE 來幫你作雜七雜八的事情,才容易體會倒寫程式的樂趣!」如果你跟千秋一樣認可這句話,可以考慮使用 IntelliJ IDEA :它不需要做額外的調整,直接支援 Kotlin!(雖然這裡的教學說要下載個外掛,但那個外掛在比較新版的 IDEA 裡面已經裝好了)附帶一提,Android 的開發工具 Android Studio 是基於 IntelliJ IDEA,且 IntelliJ IDEA 也有 Android 的開發外掛,所以您也可以使用 Kotlin 來開發 Android 程式!
當然,若諸位比較喜歡使用 Vim / Emacs 的話,也可以下載獨立編譯器來使用。
接著,撰寫好之後就是建置的工具。依千秋淺見,最好用的建置工具是 Gradle,因為:
- 跟 IntelliJ IDEA 整合得挺好的
- 有相依程式庫管理系統,可以自 maven repository 或者 JCenter 自動下載相依程式庫,省去大量麻煩
- 可以建立跨平台的散布壓縮檔
- 可以幫您進行單元測試
全,而且簡單好用。如果已經有使用 Java 經驗的人,很推薦使用 Kotlin 看看!
簡單整理:
- 整合開發環境
- IntelliJ IDEA (可直接使用)
- Eclipse (未試用)
- 建置工具
- Gradle (較推薦,且具有整合開發環境支援)
- Maven (具有整合開發環境支援)
學習資源
如果您想要學習 Kotlin 的話,可以參考官方網站所提供的資源,略整理如下:- 官方網站的 Reference 區塊中,Where to begin 段落有提到該如何開始學
- Try Kotlin 網站提供線上練習以及教學
- Kotlin Koans 提供了 42 個練習主題
- Design patterns in Kotlin
列出許多設計模型在 Kotlin 下的寫法,值得參考
相關程式庫
這裡只列出以 Kotlin 寫成的程式庫,所以別忘了也參照 Java 的程式庫。Kotlin 可以使用所有 Java 的程式庫。另外,也不要忘了去 https://github.com/KotlinBy/awesome-kotlin 看看!
- 單元測試
- Hamkrest
利用 Kotlin 的特性對 Hamcrest 進行改良而得,據說用起來較 Hamcrest 好。需要配合 JUnit 這類單元測試驅動程式庫方可使用 - 網路通訊
- Fuel
HTTP 協定通訊程式庫,有特別的 Android 支援 - 資料剖析
- Klaxon
Json 剖析程式庫 - 概念實現
- Result
在 Kotlin 實現 Railway Oriented Programming 的程式庫 - 統計分析
- 機器學習
- komputation
類神經網路框架 - (待續)
2016年10月8日 星期六
緣起
自從開始留意一些網路上的程式設計以及語言學習資源後,千秋的書籤就一直呈現凌亂的狀態。
利用這個部落格,千秋把這些資源整理起來,並且寫上簡單的描述、或是自己寫的相關程式,供自己以及其他人未來做參考。
利用這個部落格,千秋把這些資源整理起來,並且寫上簡單的描述、或是自己寫的相關程式,供自己以及其他人未來做參考。
程式設計
- 程式語言(含相關程式庫)
- JavaScript
- CSS
- JVM-based languages
- Java
- Kotlin
- Rust
- C
- C++
- Haskell
- 平台
- Android
- Web
- Linux
- Windows
- 練習網站
- 工具
- 美術資源
- 圖示
- 字型
工具箱
電腦軟體工具,用途不限。和程式設計相關的工具會被列在上個區塊內- 命令列工具
- 檔案管理
- exa
用 rust 寫成,在 unix 系統下的 ls 改良版。 - (其他)
- 線上工具
- 繪圖
- draw.io
線上的 graph, diagram 繪製系統 - (其他)
- (其他)
語言學習
- 語言
- 教學網站
- 字典、辭典
- 文法查詢
- 其他工具
作業系統使用以及故障排除紀錄
(待補)圖示
諸君寫程式時,有時不可避免要使用一些圖案來使自己的使用者界面更加具有親和力,然而不少人和千秋一樣不擅長美術,而且常想,要是有人肯佛心提供一些圖示該有多好。
這裡列出所收集的,有提供免費圖示資源的網站
諸君在使用時,請留意這裡的「免費」是有條件限制的。至於是怎樣的條件,請參照網站上的授權。
Linea Free Iconset
請點這裡進入官方網站考察時間:201610090447+8
這套圖示分成 7 大類,共超過 700 個圖示,使用 CCBY 的授權。
圖示由簡單的線條構成,提供 SVG 以及 PNG 格式,可以很方便利用
Open Iconic
請點這裡進入官方網站;請點這裡進入 github 倉庫考察時間:201610090459+8
這套圖示可說是另一套付費圖示 Iconic 的「試用版」,svg 的部份使用 MIT 授權(詳細的授權可以參考 github 倉庫內的 *-LICENSE 檔案)
整套圖示中規中矩,提供 svg 以及 png 等格式可供利用。
特別的是,官方聲稱此圖示即使在 8px 下也可輕鬆辨識(hyper-legible),並且體積小,不會增加您使用者的負擔
(未來會陸續增加,敬請期待^^)
訂閱:
文章 (Atom)