【MSYS2】Win10上安裝GCC

首先要先安裝MSYS2,接著開啟MSYS2 輸入以下指令

$ pacman -S mingw-w64-i686-gcc

$ pacman -S mingw-w64-x86_64-gcc

$ pacman -S gcc



再輸入

$ gcc

就會噴出如下的東西,代表有裝成功了

gcc: fatal error: no input files

compilation terminated.



最後要把這三個加入環境變數PATH中

C:\msys64\mingw32\bin

C:\msys64\mingw64\bin

C:\msys64\usr\bin

【Windows】【Golang】Go語言 套件管理工具之一 - Glide

世界上套件這~麼多種,數也數不清,
所以需要有管理套件的工具(為了管理套件方便而開發出來的某種套件)

在Go語言中 有不只一種管理套件工具,
Go glide是Go語言中 屬於較早期的管理套件之一(版本1.5)
而後來也推出了用 Go Module的方法來管理套件(版本1.11)
雖然都是套件管理,但兩者並非同樣的東西。

1.13版本之後預設會開啟 GoMod (Go Module)模式,
若要回到 Go glide (GOPATH模式) 則要設置環境變數
$ export GO111MODULE=off
若要回GoMod則是
$ export GO111MODULE=on

【Windows】【Golang】在Windows上開發GO語言- JetBrains Goland環境部署

【安裝GO語言】


Go官網下載Windows 32或64 bit 版本,並安裝好GO之後 (目前到1.15版本)
預設的Go的根目錄會在 C:\go 底下,裡頭包含執行go語言基本必備的官方library。
最早的幾個版本在安裝好之後需要自己添加環境變數,如GOPATH、GOROOT,
但從好幾個推出的版本前開始,就都不需要再加入環境變數。


【IDE】PhpStorm 設置 XAMPP 的 PHP Interpreter


第一次使用JetBrains的IDE,

點擊右上方的瀏覽器執行寫好的網站,


【C】【Compiler】Inline、Function、Macro 秒懂神解釋

曾經學過C語言,
矇矇懂懂只知道 function跟 macro是類似的東西,不清楚具體的差異為何。

將以 C語言 來舉例,
通常在C語言寫程式中,第一行都是
#include <stdio.h>

【macOS】在Vscode上設定Zsh


按 Command + Shift + P
搜尋user,點打開使用者設定



【macOS】現代終端機都這麼潮嗎?Iterm2、zshell、oh-my-zsh、powerlevel10k



你還是我所認識的終端機嗎... 

這可不是只有畫面變 Colorful 了, 
git 分支都能幫你顯示、甚至貓咪都出動了, 
按 tab 鍵的效果也有進一步的功能,擁有更棒的寫程式體驗。

【macOS】【Homebrew】Homebrew基本教學

Homebrew是以ruby寫的。
Homebrew is a free and open-source software package management system that simplifies the installation of software on Apple's macOS operating system and Linux.
Written by Max Howell, the package manager has gained popularity in the Ruby on Rails community and earned praise for its extensibility.

安裝Homebrew

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
意思是用 bash、crul,執行 https://raw.githubusercontent.com/Homebrew/install/master/install.sh 的腳本

看更多文件說明
$ brew help
$ man brew

【Linux】【Apache】http重新導向https

Apache設定檔


環境:Ubuntu 16.04 、Apache 2.4.18


Ubuntu 的Apache 中並沒有 httpd.conf 這個設定檔,
httpd.conf 通常指的就是在 /etc/apache2 底下的設定檔。

若要修改Apache 的設定,
在 /etc/apache2/sites-available 資料夾底下有兩個設定檔,分別是:
000-default.conf:http 的設定檔案
default-ssl.conf:https 的設定檔案

經由這兩個檔案來協助,
通常不會直接去動 /etc/apache2/apache2.conf

【Windows】【IIS】no mapping for the unicode character exists in the target multi-byte code page.

在Win10上使用IIS時,遇到

FTP 資料夾錯誤
複製檔案到 FTP 伺服器發生錯誤。請確認您有權可以將檔案放到伺服器上。
詳細資料:

200 Type set to I.
207 Entering Passive Mode (IP...).
451 No mapping for the unicode character exists in the target multi-byte code page.



【Git】Git LFS:Git Large File Storage

下載 https://git-lfs.github.com/

$ git lfs install
設定檔在 ~/.gitconfig裡,多了這幾行

【Hardware】晶片製造流程介紹 IC Design Flow

IC(Integrated circuit 集成電路、積體電路) 與 Chip(晶片)的差異:
可以指同一種東西,Chip常由多個IC組成,
在晶片製造後期通常會稱晶片為Chip而較少稱作IC。


【Python】安裝 Jupyter Notebook

> pip3 install jupyter

安裝完後

> jupyter notebook




【Git】git push 上傳時卡在"Writing objects 0% "

想把較大的檔案文件上傳到github,大約1GB大小,

由於以往沒有上傳這麼大的檔案過,雖然盡量不要直接上傳大型二進位檔案(影片或大圖片)上傳及下載速度會拖很久,

但這次上傳的是C#教材範例程式,檔案真的很肥。

當欲上傳時 $ git push 卻卡在"Writing objects 0% "

因上傳的資料夾太大了、Buffer卻沒這麼大,可以把上傳Buffer調整大一點


$ git config --global http.postBuffer 524288000

或者

$ git config http.postBuffer 524288000

前者在Win10作業系統 設定檔路徑為 C:\users\User\.gitconfig
後者設定檔在 .git\config


(524288000 Bytes = 500MB)
(1048576000 Bytes = 1GB)
(2097152000 Bytes = 2GB)

數字不可調超過電腦記憶體大小。

除了調整Buffer大小之外,也可以分批上傳。

【Java】JDK、JRE、JVM等 JAVA名詞介紹

JDK:Java 開發工具包(Java Development Kit),專門給程式設計師用的一個軟體開發套件。
又被稱Java SDK軟體開發工具包。
常看到J2SE、或是SE版本是Java標準版本 Standard Edition,
EE版本則是企業版本 Enterprise Edition。
JDK裡包含有JRE。

JRE:運行"用Java製作好的軟體"時所需要的環境(Java Runtime Environment)。
所以一般使用者、玩家們要載、安裝 JRE 才能玩"透過java開發的遊戲、軟體"。

JVM:Java虛擬機器(Java Virtual Machine),可以想像成模擬器,已經包在JRE裡面。
透過JRE裡面的JVM運行,我們才得以跨平台使用java軟體。
就類似能在電腦上模擬手機運行畫面、進而玩手機遊戲。


【版本對應】
JDK 1.7 <=> JRE 7u... <=> Java SE 7
JDK 1.8 <=> JRE 8u... <=> Java SE 8
JDK 11 <=> Java SE 11 (Java 11 的 JRE包含在JDK11裡,但沒有單獨釋出JRE 11,
所以官方網站只找的到JRE7、JRE8...等,卻找不到JRE 11)

【Android】【Linux】Android vs Linux的差別

Android 是 Google基於 Linux核心上開發出來的。

而 Linux是用C語言開發的。
Android之所以能跑 Java 編寫出來的app,是因為在核心上運行了JVM虛擬機器。

JVM透過 Kernel 來運行,Android app 透過 JVM來執行。

【Linux】Linux vs Unix 的差別

Unix是多行程、多用戶的作業系統,透過文字指令來操作。

先有不開源的 Unix,才有 開源自由軟體Linux(GNU/Linux)。

Linux 跟 Unix 指令、功能皆大同小異,
Linux 是 Unix的重現版,但是Linux並沒有包含任何Unix的程式碼。

Linux是Kernel
Linux發行版(Linux distributions) 是作業系統。


【Python】if __name__ == '__main__' 的意思

初學 Python 看別人程式碼的時候,
以為 if __name__ == '__main__':  這串敘述等同C語言 int main() 裡面的區塊。

但後來才認識到,這串 if __name__ == '__main__':  效果及用法卻截然不同。

尤其是 python 就算有這句敘述,仍然是由上而下一行行執行,
而C語言則是先執行int main()區塊。




用python寫好的一個.py檔案,只會發生以下兩種情況:

【Python】requirements.txt 寫法


在 Python Package中,通常會加入一個名為 requirements.txt 的檔案,

裡面放的是執行這包 Package 所需要用到的library套件。

(在Github隨便找幾篇別人寫的程式來當範例:


【Chrome套件】不用登入會員也能看蘋果日報、擋住各大閒置視窗--uBlock Origin


在蘋果日報網站上看新聞時,常常要登入會員才能看

(推測是以網頁cookie來記錄使用者看了幾則新聞)



我們可以透過 Chrome 擴充套件 -- uBlock Origin (好用程度跟 AdBlock 並駕齊驅)來防止需要登入才能看的狀況。

另外,uBlock Origin 除了阻擋瀏覽器的一般廣告之外,還能而外執行指令、小腳本、或過濾條件。


【這到底是什麼】 WIFI的 3G、4G、5G世代?頻率5GHz 與 2.4GHz 差異?

常聽到的3G、4G、5G網路是什麼?
WiFi中的 5G跟2.4G又是什麼?

上述兩者大相逕庭。
3G、4G、5G網路指的是網路世代(Generation),
每個世代傳輸速度都進步了至少10倍以上速率、盡可能降低網路延遲。
世代彼此間的通訊協議、訊號涵蓋範圍、基地台的傳輸功率(包括對人體潛藏的風險)皆有所不同。
今年是2020年,台灣所使用的手機基本都是 4G行動網路。



5GHz 與 2.4GHz 指的是頻率通道,要透過5GHz頻率傳輸還是要走2.4GHz這條通道。
5GHz 技術較新,欲連接的設備(如筆電、手機)不一定都支援。
5GHz 帶寬較寬,理論上能比 2.4GHz 傳輸來的快。
5GHz 訊號能射得比較直比較遠、2.4GHz 較會繞障礙物。
2.4GHz 容易受到家中電器的訊號干擾,如微波爐、使用2.4GHz頻段的無線滑鼠或鍵盤 (滑鼠、鍵盤以及WIFI訊號都會斷斷續續的)

【Win10】開啟熱點分享

不論是筆電或桌電要開分享,必須先開啟WIFI,否則會找不到開啟熱點選項。
(桌機的主機板必須有無線網卡支援WIFI、或者插上外接WIFI裝置 如:USB轉無線Wi-Fi)

【Foobar2000】播放.tak 無損音樂

不知道為何 Potplayer 雖然支援 .tak格式,但卻無法正常打開音樂文件來播放,遇到曲目都會自動地不斷跳下一首。






【Router】【中華電信】ADSL數據機-管理者帳號密碼

家用的中華電信Hinet路由器 (ZyXEL ADSL Modem) 俗稱小烏龜
這台中華電信免費安裝的熱點分享路由器,
因為沒有天線,Wifi訊號沒辦法傳送到很遠




【Python】PYTHONHOME 跟 PYTHONPATH 簡略說明


系統環境變數:

PATH:放置系統指令(Windows CMD等等)的路徑,以便系統能找到指令所在位置的資料夾,
同時也會放置了PYTHON指令腳本及Library。




PYTHONHOME:如果沒有設定此值的話,PYTHONHOME預設值為 python安裝目錄。所以通常不用特別為此值進行設定。若要自己設定,在Windows系統輸入環境變數
PYTHONHOME值=%PATH%、或指向python安裝目錄




PYTHONPATH:用來放私人或自己開發的模組套件的位置。
如:模組放在桌面上PYTHONPATH=C:\Users\使用者名稱\Desktop

【Win10】刪除開機選單


在同一台電腦上配置2個以上Windows作業系統的話,

除了透過 Bios 選擇要用哪個磁區開機之外,如果是Windows系統 Windows也有提供自己的開機選單(Windows Boot Manager),用以載入不同版本的Windows作業系統。


【Python】對付__pycache__的幾種方法


python在執行包含其他模組import module的過程中,會出現__pycache__的資料夾,
這顧名思義是python cache的檔案。



裡面是一些 .pyc檔案。


註:
.py:編寫好的程式碼、Script。
.pyc:Python經過編譯(Compile)後產出的位元組碼(Bytecode)。以便未來在 import module時,程式能夠更快載入。
$ python -m compileall main.py
.pyo:優化(Optimizations)過後的.pyc。
.pyd:可視為.dll檔案。
.pyw:以視窗模式執行的檔案(以pythonw.exe開啟)。





防止__pycache__產生的方法:

在下指令的時候,可單次防止__pycache__資料夾產生
$ python -B main.py


或者另一個方法是,

添加系統環境變數 PYTHONDONTWRITEBYTECODE=1 (或是其他非空數字)

可防止之後在命令列模式下產生__pycache__資料夾。








至於若直接對.py檔右鍵 點擊 Edit with Idle,按F5執行仍會跑出__pycache__資料夾來,對此還不知道如何解決。

Idle 的 Command在註冊表中的這個路徑
電腦\HKEY_CLASSES_ROOT\Python.File\Shell\editwithidle\shell\edit36\command

其預設值為
"C:\Users\GJLMoTea\AppData\Local\Programs\Python\Python36\pythonw.exe" -m idlelib "%L" %*




防止__pycache__上傳到Github的方法:

今天若僅是不將__pycache__上傳同步到github上,
新增一個 .gitignore 檔案到專案裡也是一個辦法,
並輸入進以下內容
__pycache__/
*.py[cod]
這樣一來便防止所有的 __pycache__ 資料夾、防止所有的 .pyc、.pyo、.pyd 檔案上傳。

【Win10】在BASH上 alias自己想要的編輯器 - start notepad++




在Windows平台上使用BASH Shell,卻不想再使用 Vim 或 Nano 編輯器嗎?
或是使用CMD,卻不想使用 Notepad編輯器?

想透過 Notepad++ 這個強大的編輯器,來增加使用上的便利性。



預想是能夠在安裝了Notepad++之後,能夠:

$ notepad++ 小說.txt

像這樣一行指令就能出現新的 Notepad++視窗,來開啟小說.txt這個檔案

【Win10】建立索引,讓資料能被搜尋、加快資料搜尋速度


Win 10電腦上,有些放在D槽或其他磁碟區的資料沒辦法透過搜尋來找到,
在查找上顯得不方便。


搜尋索引選項