跳到主要內容

發表文章

目前顯示的是 3月, 2020的文章

[Linux] 安裝 conda 並用 conda 安裝套件

本篇文章介紹 conda 在 Linux 安裝與基本使用方法。 conda 是一個套件包管理器,跟 apt-get 一樣。conda 的宗旨最初是為了管理複雜的 Python 語言包安裝,後來開始支援其它語言包的安裝(例如 R 語言)。 在 Linux 安裝 conda 指令無法採用 apt-get 指令,要安裝 conda 有兩種方式: 安裝 Anaconda。Anaconda 是一個 Python 的發行版,專門用於計算科學,內建很多的預設數據科學的軟體包,因此會安裝 Anaconda 會需要較大的硬碟空間,會安裝約 3 GB 大的檔案到電腦內。 安裝 Miniconda,是最小安裝版本的 Anaconda,內建 conda、Python 和一些基本套件和基本工具。我目前是安裝這個,因為我不想要安裝一些目前還用不到的語言包。 Minicoda 可以在 這個網站 下載。 我選擇 Python 2.7 的 Linux 64-bit 版本下載,安裝過程 不需要使用 sudo 權限 ,否則之後 conda 執行上會有權限問題,conda 在執行的時候是無法使用 sudo conda ... 來執行指令的。 安裝過程如下(作業系統為 Linux 發行版:Elementary OS): 執行 (不需要加 sudo)  bash ./Miniconda2-latest-Linux-x86_64.sh 會出現歡迎畫面: Welcome to Miniconda2 4.7.12 In order to continue the installation process, please review the license agreement. Please, press ENTER to continue >>> 按 Enter 後,閱讀完授權合約,輸入 yes 接受合約條款。 Do you accept the license terms? [yes|no] [no] >>> 預設安裝路徑是家目錄的 minicoda2,按下 Enter 可即刻安裝。 Miniconda2 will now be installed into this...

[C++] 電影駭客任務 Matrix 文字效果

1999 年上映的電影駭客任務(Matrix)於明年要推出第四集了。這部電影不論在哲學觀以及拍攝效果,在當年的影史上都是一個突破。 其中這部電影中最著名的電腦執行畫面深植在多少技術愛好者的心中: 本篇文章記錄我如何用 C++ 實作這種電影 matrix 文字下雨(raining)效果,這種文字效果有很多種作法,可以做得很精緻,我採取比較簡單的一種實現方法: 首先程式的邏輯從如何刷新 M x N 的文字 random 陣列開始。 假設有一個 M x N 的 random 文字陣列,我們可以從第 0 個 row 開始刷新每個字元。 假設現在正在處理第 0 個 row,我們走訪每個字元,然後隨機挑選某幾個文字更新,更新的方法有將當前字元用空白字元替換,或用任意非空白字元替換兩種情況。 當第 0 個 row 更新完之後,就刷新螢幕,然後繼續更新下一條 row,也就是更新第 1 個 row。 重點來了。 刷新螢幕的方法,順序為: 先清空螢幕 先顯示最新刷新的 row。 依序顯示之前刷新的 row。 原始碼如下: // C++ program for implementation of falling matrix effect #include<iostream> #include<string> #include<thread> #include<cstdlib> #include<ctime> #include<chrono> const int cols = 60 ; const int rows = 30 ; const int switch_num = 5 ; const int delay = 90 ; char screen[rows][cols]; using namespace std; int main ( int argc, char ** argv) { srand(time(NULL)); bool status[cols] = { 0 }; ...

[C++] CMake 建置 C/C++ 程式

在編譯程式的時候,會設定一些組態(configuration,簡稱 config)。 這些組態包含我們的編譯過程需要用哪一種編譯器,哪一些函式庫,要編譯哪些檔案和編譯的指令等等。 以 Linux 環境而言(Windows 系統的操作也大同小異,原理都是一樣的),在編譯 C++ 專案時,上述這些組態可以寫在一個叫做 Makefile 的檔案裡。在 Makefile 檔案所在資料夾執行 make 指令,make 這隻程式,就會吃進 Makefile 並根據 Makefile 內的組態設定做出對應編譯的動作。 通常這個 Makefile 寫起來很繁瑣,因此才會有 cmake 這個工具的誕生。 CMake 是一個能自動幫我們產生 Makefile 的程式。 CMake 基本的觀念就是,我們只要指定好編譯器種類,以及我們要編譯的目錄、執行檔名稱等等設定,CMake 就會產生 Makefile。 CMake 基本使用方式,假如我們有個資料夾結構如下: . ├── build ├── CMakeLists.txt ├── lib ├── reference │   └── matrix_effect.cpp └── src └── meffect.cpp 這種資料夾結構是我習慣的 hierarchy。用這樣的資料夾做管理,專案比較不會凌亂。 src 資料夾裡面放 .cpp 程式碼。 lib 資料夾放程式碼用到的外部函式庫,即 include 的 header file。 而程式碼編譯成執行檔的動作,則在 build 資料夾內操作。 reference 資料夾內則放一些參考資料跟文件。 build 資料夾內有個 CMakeLists.txt,這個檔案就是 cmake 指令需要的檔案,以這個專案資料夾結構為例,CMakeLists.txt 內容可以這樣寫: cmake_minimum_required( VERSION 2.8.9 ) project( meffect ) include_directories( lib ) file( GLOB SOURCES "src/*.cpp" ) add_executable( meffect ${ SOURCES }) 然後在 build ...

[Linux] 用 dd 指令燒錄 usb 開機碟

環境:elementary os 目標:把預燒錄的 iso 檔案燒錄到 usb 隨身碟內,做成開機磁碟。 用 lsblk 指令看隨身碟掛載在哪個位置。(通常掛載在 /media/... 路徑內,或是用視窗的檔案瀏覽器觀看顯示的 usb 磁碟名稱,再看 /media/ 下哪一個磁碟名稱跟 usb 隨身碟同名) lsblk 顯示的畫面會類似: sdc          8:32   1   7.1G  0 disk └─sdc1   8:33   1   7.1G  0 part /media/<這裡會顯示 usb 路徑及名稱> 下指令卸載隨身碟: umount /media/<usb 路徑及名稱> 然後再次用 lsblk 檢查是否卸載成功。 用 sudo 權限下 dd 指令燒錄: sudo dd if=<path_of_iso_file>.iso of=/dev/sdc bs=1M bs=1M 意思是一次要寫入幾個 byte,官方說明寫著: bs=BYTE:  read and write up to BYTES bytes at a time (default: 512); overrides ibs and obs. 燒錄結束時,會顯示類似如下的 report: 輸入 1419+1 個紀錄 輸出 1419+1 個紀錄 1488797696 bytes (1.5 GB, 1.4 GiB) copied, 831.393 s, 1.8 MB/s