CentOS 7.X Lamp環境安裝 (Linux+Apache+MariaDB+PHP)

CentOS 7.X Lamp環境安裝 (Linux+Apache+MariaDB+PHP)

全文引自:https://blog.exfast.me/2016/05/centos-install-7-x-lamp-environment-linux-apache-mariadb-php/

看到網路上的人都推說,Linux Server使用CentOS架設比較適合,從預設開啟防火牆就知道了,我就來試試看CentOS與目前本站使用的Ubuntu Server差在哪。

安裝CentOS與更新套件清單

  1. CentOS官方網站下載最新版CentOS-7-x86_64-DVD-1511.iso,安裝過程就省略了,本人是使用最小安裝,所以只有指令介面,反正要當Server使用,如果安裝GUI的話反而浪費資源對吧?
  2. Ubuntu與CentOS安裝套件的方式有點不太一樣,Ubuntu是使用apt-get這個指令來安裝,但CentOS是使用yum來安裝套件,這點需要注意一下。首先先更新一下列表吧,使用管理員權限的帳號輸入

    -y 是忽略詢問是否同意直接更新

安裝Apache網頁伺服器

  1. 安裝前記得先使用上面的指令更新套件清單唷,不然可能會有奇怪的問題。
  2. 輸入指令
  3. 安裝完畢後接著就要啟用服務拉,輸入指令

安裝MariaDB(MySQL)資料庫伺服器

  1. 在CentOS 7.X中MySQL是被替換成MariaDB的,所以就借此也來體驗看看MariaDB的資料庫囉。
    輸入指令

    這樣就安裝成功囉!
    01

  2. 來啟動服務吧

    01

設定MariaDB伺服器

  1. 安裝完畢後,就來設定一些資料庫的基本設定吧!
    輸入指令

Stack堆疊的資料結構

不知道各位是否有接聽電話插撥 (call waiting) 的經驗? 我們會先把第一個接聽的人先暫時停著,然後接聽新打來的電話。不知道目前插撥最多能接聽多少通電話?假設依照這個方法一直接聽新的插撥電話,就會一直把上一通電話暫時儲存,等新接通的電話結束後,再回復上一通、上上一通、一直到第一通接聽的電話。

堆疊 (Stack) 就是類似的資料結構。「堆疊」有兩個方法 (method) 可以呼叫:推進 (push) 和 彈出 (pop)。透過這兩個方法的使用,我們可以達到讓資料「先進後出」的效果 (LIFO: Last In First Out)。甚麼是先進後出呢?讓我們再舉一個例子:搭電梯。當我們搭電梯的時候,通常最先進電梯的會擠在後面,後進電梯的比較靠近門口。如果都是同一層離開電梯,剛才比較慢近來電梯的人,反而是比較早離開電梯的人,這就是「先進後出」(LIFO) 的效果了。

再回到剛才接聽插撥電話的例子,正好就是先進後出的例子!最後插撥的先結束對話,最早打來的最慢結束對話。接下來讓我們看看,堆疊實際運作的情形,會向下面這一張動畫所顯示的:

 push

上面這張圖就是顯示堆疊 (stack) 把三個數字 1、2、3分別push到堆疊裡面的過程。堆疊本身看起來就像是我們把書本放在桌上的樣子一般,最早放的書本會在最底下,最後放的書本會在最上面。當我們把書本從最上面開始拿 (pop) 的時候,會拿到最後放的書本,最後才拿到一開始放下去的書本。因此把數字從堆疊 (stack) 裡面 pop出來的過程,會像下面這張動畫顯示的樣子:

pop

從上面這張圖,我們可以看出來,我們依照1、2、3的順序把數字 push 到堆疊裡面,pop的時候出來的順序就會變成 3、2、1,也就是先進後出了!

堆疊在遞迴式走訪樹的應用

介紹完了堆疊,最常應用到堆疊這個資料結構的演算法,應該就是「遞迴」 (recursive) 方法了。所謂遞迴,就像是站在兩面鏡子之間,相同的影像不停地反射,只是每反射一次都小一些。之前接聽插撥的例子也是遞迴的例子,就是先暫停目前的工作,但是不是忘記,而是先依照順序存起來,然後先處理新的工作。等到新的工作處理完,再按照先進後出的順序,把剛才暫停的工作回覆過來處理好

 post

因此,之前在〈由樹的前序、中序、後序走法來談資料結構〉裡面提到的前序、中序、後序的走法,也可以透過遞迴加上堆疊的資料結構來完成!譬如說上面這棵樹,我們從樹根7開始,發現有分支就往下走,但是我們先不把樹根忘掉,因此把樹根7 push到堆疊裡面。接者按照同樣的方法,往樹葉的方向走,一直走到樹葉的部分 ,再按照先進後出的順序,把堆疊pop出來的東西印出來,就是後序走訪這棵樹的方式了!

遞迴走訪樹的演算法如下 (移到文章後面以方便整理版面)

讓我們跑跑上面這一段演算法,演算法可以運作的東西,就是堆疊(stack)這個資料結構,以及輸入的這棵的資料結構。最後會輸出後序走訪這棵樹的過程。(請參考文章後面的過程,這邊先略過整理一下版面)

演算法和資料結構的用途 

因此到目前為止,我們終於知道了演算法和資料結構的初步的概念,也終於看到了一些基本的應用,像是「樹」、「堆疊」、「遞迴」等應用。然而或許還是會有些疑惑,就是演算法和資料結構,要怎樣子在電腦上面跑呢?如果說電腦聽不懂人類的自然語言,電腦又要怎樣子聽懂演算法的敘述呢?這邊我想先用一個比方來說明,也就是作文的比方。

當我們寫一篇作文的時候,我們可能會有一些寫作方法,譬如說第一段寫主旨,第二段寫例子,第三段寫反立推翻第一個例子,第四段寫結論,如此起承轉合,完成一篇文章。我們可能進一步把題目分成敘述文、論說文、和抒情文。不同種類的文章,我們會有不同的段落起承轉合。然而各類題目的段落安排方式,和我們用字淺詞的方式,可以分開來。甚至同樣的段落安排,我們可以用英文來寫。

因此演算法和電腦的關係,有些類似上面寫作比方的關係。電腦只看得懂機器0101碼,但是我們有高階程式語言,像是C, C++, 或是JAVA,透過編譯器 (compiler) 或是直譯器 (Interpreter),可以把我們寫的程式翻譯成機器看的懂的機器0101碼。程式語言,就如同寫作的時候,可能用中文寫,也可能用英文寫。但是演算法和資料結構,則是像寫作的時後段落安排的方法,論說文一種方法,敘述文一種方法,抒情文一種方法,是一種介於作文題目和文章句子之間的轉換過程

整理起來,寫作可以分成下面四個層次:

  1. 作文題目和題型 (敘述文、論說文、抒情文、其他題型)
  2. 段落安排 (針對題型的解決方法)
  3. 文章實際的句子 (可以是中文、也可以是英文)
  4. 每個單字的字母筆劃,或是中文字的筆劃 (包括標點符號的使用)

演算法資料結構對應這個層次的比方:

  1. 要電腦處理的問題和問題類型 (排序、搜尋、比對)
  2. 演算法和資料結構 (針對問題提出的解決方法)
  3. 實際寫出程式 (演算法可以和程式一一對應,但不限任一種程式語言)
  4. 程式透過編譯器(compiler)翻譯成機器0101碼

不知道看完這個例子,各位是否更了解資料結構的角色呢?電腦看不懂演算法或資料結構,但是演算法和資料結構,卻是問題解法和程式語言之間的橋樑

下面列出剛才提到的地迴走訪樹的演算法和執行過程。 (tree) 除了可以排序、搜尋、搭配遞迴和堆疊以外,還有本體論 (Ontology) 的應用。其他各種樹狀結構,像是壘堆 (heap)、追求效率而發明的紅黑樹 (Red-Black Tree) 和費布那西樹(Fibonacci Tree)等等。日後有機會再一一向各位介紹吧!

遞迴走訪樹的演算法如下

1. 設定目前節點在樹根

2. 如果目前節點有子節點 (child node),就把目前節點先 push到堆疊,然後往下走。有兩個子節點的話先走左邊再走右邊的子節點。

3. 如果目前節點沒有子節點 (child node),或是子節點已經拜訪過,就印出目前節點的號碼,並且 pop 出堆疊上一次儲存的節點,設定成現在要拜訪的節點,然後回到步驟2,直到堆疊變成空堆疊為止。

執行遞迴和堆疊來後序拜訪一棵樹的執行過程

step1:

current node: 7

stack: (empty)

printed order: (empty)

step2:

current node: 7

stack: 7   (###push 7###)

printed order: (empty)

step3:

current node: 3  (###go to left child node###)

stack: 7

printed order: (empty)

step4:

current node: 3

stack: 7, 3  (###push 3###)

printed order: (empty)

step5:

current node: 1  (###go to left child node###)

stack: 7, 3 

printed order: (empty)

step6:

current node: 1

stack: 7, 3

printed order: 1 (###print 1 because no other child nodes###)

 step7:

current node: 3  (###go back to node 3###)

stack: 7  (###pop 3###)

printed order: 1

step8:

current node: 2  (###go to right child node)

stack: 7, 3  (###push 3 again###)

printed order: 1

step9:

current node: 2

stack: 7, 3

printed order: 1, 2 (###print 2 because no other child nodes###)

step10:

current node: 3  (###go back to node 3###)

stack: 7  (###pop 3###)

printed order: 1, 2

step11:

current node: 3 

stack: 7 

printed order: 1, 2, 3 (###print 3 because child nodes are visited###)

step12:

current node: 7 (###go back to node 7###)

stack: (empty) (###pop 7###)

printed order: 1, 2, 3

step13:

current node: 6 (###go to right child node###)

stack: 7 (###push back 7###)

printed order: 1, 2, 3

step14:

current node: 6

stack: 7, 6  (###push 6###)

printed order: 1, 2, 3

step15:

current node: 4  (###go to left child node###)

stack: 7, 6 

printed order: 1, 2, 3

step16:

current node: 4

stack: 7, 6

printed order: 1, 2, 3, 4 (###print 4 because no other child nodes###)

 step17:

current node: 6  (###go back to node 6###)

stack: 7  (###pop 6###)

printed order: 1, 2, 3, 4

step18:

current node: 5  (###go to right child node)

stack: 7, 6  (###push 6 again###)

printed order: 1, 2, 3, 4

step19:

current node: 5

stack: 7, 6

printed order: 1, 2, 3, 4, 5 (###print 5 because no other child nodes###)

step20:

current node: 6  (###go back to node 6###)

stack: 7  (###pop 6###)

printed order: 1, 2, 3, 4, 5

step21:

current node: 6 

stack: 7 

printed order: 1, 2, 3, 4, 5, 6 (###print 6 because child nodes are visited###)

step22:

current node: 7 (###go back to node 7###)

stack: (empty) (###pop 7###)

printed order: 1, 2, 3, 4, 5, 6

step23:

current node: 7

stack: (empty)

printed order: 1, 2, 3, 4, 5, 6, 7 (###print 7 because child nodes are visited###)

done!

圖片像素、解析度、大小計算

解析度 dpi 單位為「1吋裡有多少像素(pixel)」,藉此可以來換算圖片「畫素+解析度」換算成實際紙張時長與寬為多少。
例如一張圖片為 800 x 600 pixel,然後解析度為 300dpi,則換成實際紙張大小如下:

(800/300) x (600/300) = 2.6吋 x 2吋 = 6.6cm x 5.08cm

一般相機規格常說的百萬像素,是這樣算來的:

大家常講的「一千二百萬畫素」之類的數值
其實是一個乘積:感光元件上長與寬邊感光點數的總乘積
例如長邊有四千個點
而寬邊有三千個點
感光元件上的「總感光點數」就是長寬相乘的 4000*3000 = 12,000,000
也就是我們常說的「某相機是一千二百萬畫素」的由來了

常見畫素的長與寬感光點數:

30萬畫素 640 x 480
48萬畫素 800 x 600
78萬畫素 1024 x 768
100萬畫素 1280 x 960
200萬畫素 1600 x 1200
300萬畫素 2048 x 1536
400萬畫素 2240 x 1680
500萬畫素 2560 x 1920
600萬畫素 3072 x 2048
800萬畫素 3360 x 2460
1000萬畫素 3648 x 2736

圖片和螢幕的長與寬比例:

  • 直接解析互除就可以知道比例是 4:3 or 16:9 了。
  • 1024 / 768 = 1.33 (為 4:3 比例)
  • 1920 / 1080 = 1.77 (為 16:9 比例)

圖片的檔案大小計算方式如下:

檔案大小 = 像素總量 X 每個像素的大小
◎ 灰階模式中 1 pixel 相當於 1 byte 的大小。
◎ RGB 模式中 1 pixel 相當於 3 bytes 的大小。
◎ CMYK 模式中 1 pixel 相當於 4 bytes 的大小。

例如上圖的像素總量為:400(寬) X 561(高) = 224400
則檔案大小為:
400 X 561 X 3(bytes) = 673200(bytes) = 673.2 (KB)
接近 658 KB

1bytes = 0.001 kb
1bytes = 0.000001 mb


bps 流量單位換算

bps 是 bit per second 的縮寫,意思是「位元/秒」

bit,常以「b」表示。電腦傳輸資料的最小單位,也就是「0」或「1」
bit,位元,常以「b」 表示。
Byte,位元組,8 bit = 1  Byte,以「B」表示。
Kilo Byte,一千位元組,常以「KB」表示,1024 B   = 1 KB
Mega Byte,百萬位元組,常以「MB」表示,1024 KB  = 1 MB
Giga Byte,十億位元組,常以「GB」表示,1024 MB  = 1 GB

換算乙太網路速度規範: 10Mbps, 100Mbps, 1000Mbps.
10Mbps    =    1280 KB/s  =    1.25 MB/s
100Mbps    =   12800 KB/s  =   12.50 MB/s
1000Mbps    =  128000 KB/s  =  125.00 MB/s  (1Gbps)

備份與還原 Google Chrome 瀏覽器的書籤

Google Chrome 瀏覽器的書籤功能有很好的同步機制,相同帳號不論在哪台電腦與哪處登入,均能存取相同的書籤內容,相當方便,但若無同步的需求,僅想要備份或還原 Chrome 瀏覽器的書籤資料,也只需將 Bookmarks 檔案複製出來即可,相當簡單。

如何備份與還原 Google Chrome 瀏覽器的書籤?

1.滑鼠右鍵點擊[開始]按鈕 >[執行] > 輸入 %LocalAppData% 。
ContentPhoto2268

ContentPhoto2268

2.複製路徑   帳戶AppdataGoogleChromeUserDataDefault  下的 Bookmarks 檔案將其存放到其他儲存體,即完成備份;當要還原時,便將該檔案,在複製放回上述路徑即可還原。
ContentPhoto2268

CentOS 7 快速設定 LAMP(Linux + Apache + MariaDB + PHP)

Redhat 在 7 月份釋出了最新版本的作業系統 – Redhat Enterprise Linux 7,CentOS 也在當月不久釋出 CentOS 7,本文介紹如何快速的在 CentOS 中建置 LAMP(Linux + Apache + MariaDB + PHP)服務。
RHEL7/CentOS7 已不包含 MySQL 資料庫,取而代之的是由原先 MySQL 開發團隊所維護的 MariaDB,其功能與函式使用均與 MySQL 相同,基本上若無使用特別的套件,大部份的應用程式應該都相容可以,無需修改程式。

關閉 firewall

安裝 HTTP、PHP、MariaDB 與相關工具

安裝 phpMyAdmin

設定 MariaDB Innodb
修改 /etc/my.cnf 檔案,在 [mysqld] 下新增

啟動 httpd 與 mariadb,並設定開機時啟動

設定 MariaDB 資料庫的 root 密碼

最後,開啟 Web Browser,輸入 http://your-ip/sql 使用 phpMyAdmin

001002

Scratch2.0 時鐘設計

電子時鐘設計

clock-with alarm.sb2

https://drive.google.com/file/d/0BxySTj1oD-r0UWwwRmxhVmlFeHM/preview

 

 

壹、秒針製作前的觀念

要製作時鐘之前,有一些觀念我們要先知道:

一個圓有360度,60秒轉一圈,所以每一秒改變的方向為6度。

接下來我們再把步驟想清楚:

一:在執行時為了讓秒針可以顯示在最上層並壓住分針和時針。

二:接著我們要讓秒針隨著時間一秒一秒的移動。

步驟想好了,但是要想達到這兩樣的功能,我們需要甚麼樣的程式方塊呢?

 

貳、分針製作前的觀念

要製作分針之前,同樣有一些觀念我們要先知道:

一個圓有360度,60分轉一圈,所以每一分改變的方向與秒針一樣為6度。

1分鐘等於60秒,也就是說:每10秒,分針會加1度,所以除了指向【目前的分鐘*6】外,再加上【目前的秒/10】可以得到更精細的分針方向。

這樣一來我們就可以知道分針製作的步驟跟秒針是一樣的,但是少了幾個小地方:

一、在執行分針不需要顯示在最上層。

二、接著我們要讓分針的移動是:目前的分鐘乘6加上秒針除以10。

步驟想好了,但是要達到這兩樣的功能,我們需要甚麼樣的程式方塊呢?

 

参、時針製作前的觀念

要製作時針之前,同樣的也是有一些觀念我們要先知道:

一個圓等於360度,12小時轉一圈,所以每1小時改變的方向為30度。

小時等於60分鐘,也就是說:每2分鐘時針會加1度,所以除了指向【目前的小時*30】外,再加上【目前的分鐘/2】可以得到更精細的時針方向。接下來我們再把步驟想清楚:

一、在執行時針不需要顯示在最上層。

二、接著我們要讓時針的移動是:目前的小時乘30加上分針除以2。

步驟想好了,但是要想達到這兩樣的功能,我們需要甚麼樣的程式方塊呢?

 

數位計時顯示

鬧鐘設計

 

Windows Server 2016 安裝與中文化

2016年9月底,微軟正式推出 Windows Server 2016 作業系統, 微軟官網180天評估軟體下載位置: http://www.microsoft.com/zh-tw/evalcenter/evaluate-windows-server-2016

因目前官網ISO只支援:中文 (簡體)、英文、法文、德文、義大利文、日文、俄文、西班牙文。
尚未正式推出正體中文版ISO,但仍可透過下載英文版 Windows Server 2016 ISO檔案,
先安裝好系統後連接網路,再下載安裝 KB3193497 language pack-Chinese Traditional Taiwan
來進行系統操作介面中文化。

Windows Server 2016 安裝與中文化簡易步驟說明:

  1. 安裝時間格式請改選為:Chinese (Traditional,Taiwan)

  2. 鍵盤輸入請改選為:Chinese Traditional-US
    http://ithelp.ithome.com.tw/upload/images/20161006/20103019gMo78vCE9R.png

  3. 請選擇安裝 Windows Server 2016 版本。
    http://ithelp.ithome.com.tw/upload/images/20161006/20103019yT294WtLyu.png

  4. 安裝完成、輸入預設administrator登入密碼後,登入系統,連接上網路
    http://ithelp.ithome.com.tw/upload/images/20161006/20103019Y7vPqTPSgO.png

  5. 進入控制台 Control Panel→ 點選 Clock Language and Region 準備下載中文語言
    http://ithelp.ithome.com.tw/upload/images/20161006/201030194IoU2vGEAA.png

  6. 點選 Language
    http://ithelp.ithome.com.tw/upload/images/20161006/20103019XDCZtjBXqs.png

  7. 點選中文(台灣)右邊 Options 選項。
    http://ithelp.ithome.com.tw/upload/images/20161006/20103019RAxVw4zADz.png

  8. 系統自動 Checking availability 請稍後。
    http://ithelp.ithome.com.tw/upload/images/20161006/20103019KQuJtdkJg4.png

  9. 檢查完成後,請點選 Download and install language pack
    就可以正式下載安裝 Chinese(Traditional, Taiwan) language pack.
    http://ithelp.ithome.com.tw/upload/images/20161006/20103019OwEdYdMOB1.png

  10. 安裝完成KB3193497 zh-TW_LP中文化語言包後,就可以進行中文顯示介面變更。
    http://ithelp.ithome.com.tw/upload/images/20161006/20103019qNqMGHqU5r.png

  11. 請再點選左上方語言進階選項 Advanced settings
    http://ithelp.ithome.com.tw/upload/images/20161006/20103019RTpypehpXf.png

  12. 點選複寫Windows顯示語言:Override for Windows display language:中文(台灣)

  13. 點選 Apply language settings to the welcome screen,system accounts and new user accounts
    將語言設定套用至歡迎畫面,系統帳戶及新的使用者帳戶,登出Windows系統後設定正式生效。
    http://ithelp.ithome.com.tw/upload/images/20161006/20103019ubShrzDsfb.png

  14. 中文化 Windows Server 2016 Server 設定完成,請記得再執行Windows Update更新系統。
    http://ithelp.ithome.com.tw/upload/images/20161006/20103019DbNcgeEQ2i.png

  15. 系統更新後,版本將會更新到最新 Build 14393.rs1_release.160915-0644 版次。
    http://ithelp.ithome.com.tw/upload/images/20161006/20103019GxpCIUDRDf.png

  16. 設定完成測試用 Windows Server 2016 Hyper-V系統服務,Windows ServerVM可以透過
    微軟官網提供 Automatic Virtual Machine Activation自動虛擬機器啟用(AVMA)詳細說明:
    https://technet.microsoft.com/en-us/library/dn303421(v=ws.11).aspx

各種常見的標點符號打法

先同時按鍵盤的「Ctrl」+「Alt」+「,」三個按鍵,開啟符號表來輸入

如果要打上引號:就是按鍵盤的「Ctrl」+「Alt」+「,」三個按鍵後,再按 ”=”即可。

如果要打向左的符號鍵, :就是按鍵盤的「Ctrl」+「Alt」+「,」三個按鍵後,再按”B”即可。

以下類推…..

輸入「破折號」與「刪節號」

WordWordPad……等文書資料處理軟體中,使用新注音輸入法輸入中文字的時候,要如何輸入標點符號「破折號」與「刪節號」呢?說明如下:其他標點符號的輸入詳見:標點符號快速鍵

1.依據教育部網站的說明,「破折號」為一條連續的直線,占兩個中文字的寬度,如下圖所示。

2.想要在Word 2013輸入句子「四季──春、夏、秋、冬。」先輸入「四季」,如下圖所示。

3.按鍵盤的Ctrl+Alt+,三個按鍵開啟符號表,按鍵盤的Z輸入「破折號」。

4.如下圖所示,已經輸入「破折號」

5.已經輸入的「破折號」只有一個字的寬度,接著按鍵盤Ctrl+Y鍵,重複輸入破折號,如下圖所示,「破折號」為一條連續的直線,且占兩個字的寬度。

6.最後再輸入「春、夏、秋、冬。」,完成句子的輸入,如下圖所示。

7.依據教育部網站的說明,「刪節號」為連續六個點,占兩個中文字的寬度,如下圖所示。

8.想要在Word 2013輸入「辭典可以告訴我們許多詞語,包括人名、地名、制度、成語、典故……的含義。」先輸入辭典可以告訴我們許多詞語,包括人名、地名、制度、成語、典故「辭典可以告訴我們許多詞語,包括人名、地名、制度、成語、典故」,如下圖所示。

9.按鍵盤的快速鍵Ctrl+Alt+.三個按鍵輸入「刪節號」〈連續按兩次.〉,如下圖所示。

10.最後再輸入「的含義」,完成句子的輸入,如下圖所示。