看過來

初來乍到者,請參閱這篇「緣起」。它是總索引!

2017年5月21日 星期日

Java

超簡單介紹

Java 是一個以安定嚴謹為目標的的物件導向靜態型別程式語言。因為語法的相似度,所以常常被拿來與 C++ 做比較。在初期,常常被詬病的是它的效能:由於 Java 寫成的程式成品必須在 Java 虛擬機器(JVM, Java Virtual Machine)上面執行,而初期的 JVM 設計並不如現在的好。所幸此問題現在已經獲得了不小的改善。現在,比較新的 JVM 裡面會包含 JIT 編譯功能(即時編譯, just-in-time compilation),以及非常強大的垃圾回收模組 (garbage collector, GC)

開發工具

開發 Java 軟體的人,絕大多數都會使用整合開發環境。目前比較知名的整合開發環境有:
  1. NetBeans IDE
  2. Ellicpse
  3. IntelliJ IDEA
所有最基本的功能(例如程式碼自動完成)三者均具備。可以依照個人口味來挑選。

若講到建置 Java 程式的工具,除了整合開發環境可能內建的以外,還有如下三者:
  1. Ant
  2. Maven
  3. Gradle
現在已經比較少人使用 Ant 了。大多數人都使用 Maven 以及 Gradle。Maven 以及 Gradle 優秀的地方在於他們有一套程式相依管理規則,附帶可以自動於建置時去網路上的套件庫下載相依套件的功能。

學習資源

Java 因其歷史悠久,學習資源不勝枚舉
在學習 Java 時,要注意 Java 6 ~ 8 之間的語法以及標準程式庫之間有些的差異。

相關程式庫

不要忘了也去 https://github.com/akullpp/awesome-java 找找看!
  • 基礎
    • Vavr
      Functional programming library for Java8+
  • 框架
    • Vert.x
      提供事件驅動,non-blocking 程式設計模型的框架。附帶可以用來設計網路程式的客戶端以及伺服器端。

  • 網路程式設計
  • 檔案格式
  • 單元測試
    • JUnit
      自成標準的單元測試程式庫
    • AssertJ
      Fluent assertion library
  • 紀錄 (Logging)
    • slf4j
      整合並抽象化了多種 logging 方式的程式庫

2017年5月6日 星期六

[CentOS] CentOS 7 最小安裝 (minimal install) 於虛擬機上的設定

要進行網路程式開發,弄個虛擬機是一個很好的手段。然而要是安裝整個桌面系統則相當笨重,所以帶有最小安裝設定的發行板是最好的。

網路設定


取得 CentOS 7 的最小安裝光碟映像檔後,在虛擬機器上面安裝了 CentOS,結果發現沒有網路連線。想查狀況卻發現沒有 ifconfig。好吧,該怎麼辦呢?

還好是虛擬機器,主作業系統當然還可以使用。查詢之下發現最小安裝的時候沒安裝 ifconfig,因為可以用 ip a 來查詢連線以及網路卡狀況。

用 ip a 查詢後發現虛擬機器沒有被分配到 ip 位址。更進一步使用 nmcli d 查詢後發現 eth0 的網路連線沒有被啟動。利用 nmtui ,跟著畫面來操作之後,執行 service network restart,用 nmcli d 確認發現現在有網路可以使用了。

Keymap 設定


安裝時誤選了 uk 鍵盤,沒辦法打篩管記號,所以利用 loadkeys us 更正這項設定。

LAMP 設定


接著設定 LAMP (中的 AMP) LAMP = Linux + Apache + MySql (MariaDB) + Php

利用 sudo yum install php httpd mariadb-server 來安裝上述材料。

完成後,使用下面的指令來啟動服務

sudo systemctl start httpd
sudo systemctl start mariadb

接著設定成開機時也啟動

sudo systemctl enable httpd
sudo systemctl enable mariadb

(附帶一提,使用 systemctl list-unit-files 可以查到當前在系統上所有的服務)

設定完後,使用 curl localhost:80 可以看到 httpd 的預設網頁,說明 httpd 已經成功安裝,然而從主作業系統中使用 curl (ip):80 取得一樣的結果,所以需要修改防火牆。

(附記,ssh (ip) 可以連到客作業系統)

先確認當前所在的 zone:

firewall-cmd --get-active-zones

CentOS 預設的 zone 似乎是 public,所以

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload

然後就可以在主作業系統用 curl (ip) 取得網頁了!