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與更新套件清單
- 從CentOS官方網站下載最新版CentOS-7-x86_64-DVD-1511.iso,安裝過程就省略了,本人是使用最小安裝,所以只有指令介面,反正要當Server使用,如果安裝GUI的話反而浪費資源對吧?
- Ubuntu與CentOS安裝套件的方式有點不太一樣,Ubuntu是使用
apt-get
這個指令來安裝,但CentOS是使用yum
來安裝套件,這點需要注意一下。首先先更新一下列表吧,使用管理員權限的帳號輸入1sudo yum update –y-y 是忽略詢問是否同意直接更新
安裝Apache網頁伺服器
- 安裝前記得先使用上面的指令更新套件清單唷,不然可能會有奇怪的問題。
- 輸入指令1sudo yum install httpd –y
- 安裝完畢後接著就要啟用服務拉,輸入指令1service httpd start
安裝MariaDB(MySQL)資料庫伺服器
- 在CentOS 7.X中MySQL是被替換成MariaDB的,所以就借此也來體驗看看MariaDB的資料庫囉。
輸入指令1sudo yum install mariadb mariadb–server –y這樣就安裝成功囉!
- 來啟動服務吧1service mariadb start
設定MariaDB伺服器
- 安裝完畢後,就來設定一些資料庫的基本設定吧!
輸入指令<div class="crayon-button-icon" style="box-sizing: border-box; font-family: inherit; background: url('http://blog.ilc.edu.tw/images/toolbar/buttons.png') 0px -112px; border: 0px; padding: 0px; margin: -8px 0px 0px; width: 24px; position: absolute; left: 0px; top: 11.25px; height: 16px !important; font-size: inherit !importaStack堆疊的資料結構
不知道各位是否有接聽電話插撥 (call waiting) 的經驗? 我們會先把第一個接聽的人先暫時停著,然後接聽新打來的電話。不知道目前插撥最多能接聽多少通電話?假設依照這個方法一直接聽新的插撥電話,就會一直把上一通電話暫時儲存,等新接通的電話結束後,再回復上一通、上上一通、一直到第一通接聽的電話。
堆疊 (Stack) 就是類似的資料結構。「堆疊」有兩個方法 (method) 可以呼叫:推進 (push) 和 彈出 (pop)。透過這兩個方法的使用,我們可以達到讓資料「先進後出」的效果 (LIFO: Last In First Out)。甚麼是先進後出呢?讓我們再舉一個例子:搭電梯。當我們搭電梯的時候,通常最先進電梯的會擠在後面,後進電梯的比較靠近門口。如果都是同一層離開電梯,剛才比較慢近來電梯的人,反而是比較早離開電梯的人,這就是「先進後出」(LIFO) 的效果了。
再回到剛才接聽插撥電話的例子,正好就是先進後出的例子!最後插撥的先結束對話,最早打來的最慢結束對話。接下來讓我們看看,堆疊實際運作的情形,會向下面這一張動畫所顯示的:
上面這張圖就是顯示堆疊 (stack) 把三個數字 1、2、3分別push到堆疊裡面的過程。堆疊本身看起來就像是我們把書本放在桌上的樣子一般,最早放的書本會在最底下,最後放的書本會在最上面。當我們把書本從最上面開始拿 (pop) 的時候,會拿到最後放的書本,最後才拿到一開始放下去的書本。因此把數字從堆疊 (stack) 裡面 pop出來的過程,會像下面這張動畫顯示的樣子:
從上面這張圖,我們可以看出來,我們依照1、2、3的順序把數字 push 到堆疊裡面,pop的時候出來的順序就會變成 3、2、1,也就是先進後出了!
堆疊在遞迴式走訪樹的應用
介紹完了堆疊,最常應用到堆疊這個資料結構的演算法,應該就是「遞迴」 (recursive) 方法了。所謂遞迴,就像是站在兩面鏡子之間,相同的影像不停地反射,只是每反射一次都小一些。之前接聽插撥的例子也是遞迴的例子,就是先暫停目前的工作,但是不是忘記,而是先依照順序存起來,然後先處理新的工作。等到新的工作處理完,再按照先進後出的順序,把剛才暫停的工作回覆過來處理好。
因此,之前在〈由樹的前序、中序、後序走法來談資料結構〉裡面提到的前序、中序、後序的走法,也可以透過遞迴加上堆疊的資料結構來完成!譬如說上面這棵樹,我們從樹根7開始,發現有分支就往下走,但是我們先不把樹根忘掉,因此把樹根7 push到堆疊裡面。接者按照同樣的方法,往樹葉的方向走,一直走到樹葉的部分 ,再按照先進後出的順序,把堆疊pop出來的東西印出來,就是後序走訪這棵樹的方式了!
遞迴走訪樹的演算法如下 (移到文章後面以方便整理版面)
讓我們跑跑上面這一段演算法,演算法可以運作的東西,就是堆疊(stack)這個資料結構,以及輸入的這棵樹的資料結構。最後會輸出後序走訪這棵樹的過程。(請參考文章後面的過程,這邊先略過整理一下版面)
演算法和資料結構的用途
因此到目前為止,我們終於知道了演算法和資料結構的初步的概念,也終於看到了一些基本的應用,像是「樹」、「堆疊」、「遞迴」等應用。然而或許還是會有些疑惑,就是演算法和資料結構,要怎樣子在電腦上面跑呢?如果說電腦聽不懂人類的自然語言,電腦又要怎樣子聽懂演算法的敘述呢?這邊我想先用一個比方來說明,也就是作文的比方。
當我們寫一篇作文的時候,我們可能會有一些寫作方法,譬如說第一段寫主旨,第二段寫例子,第三段寫反立推翻第一個例子,第四段寫結論,如此起承轉合,完成一篇文章。我們可能進一步把題目分成敘述文、論說文、和抒情文。不同種類的文章,我們會有不同的段落起承轉合。然而各類題目的段落安排方式,和我們用字淺詞的方式,可以分開來。甚至同樣的段落安排,我們可以用英文來寫。
因此演算法和電腦的關係,有些類似上面寫作比方的關係。電腦只看得懂機器0101碼,但是我們有高階程式語言,像是C, C++, 或是JAVA,透過編譯器 (compiler) 或是直譯器 (Interpreter),可以把我們寫的程式翻譯成機器看的懂的機器0101碼。程式語言,就如同寫作的時候,可能用中文寫,也可能用英文寫。但是演算法和資料結構,則是像寫作的時後段落安排的方法,論說文一種方法,敘述文一種方法,抒情文一種方法,是一種介於作文題目和文章句子之間的轉換過程!
整理起來,寫作可以分成下面四個層次:
- 作文題目和題型 (敘述文、論說文、抒情文、其他題型)
- 段落安排 (針對題型的解決方法)
- 文章實際的句子 (可以是中文、也可以是英文)
- 每個單字的字母筆劃,或是中文字的筆劃 (包括標點符號的使用)
演算法資料結構對應這個層次的比方:
- 要電腦處理的問題和問題類型 (排序、搜尋、比對)
- 演算法和資料結構 (針對問題提出的解決方法)
- 實際寫出程式 (演算法可以和程式一一對應,但不限任一種程式語言)
- 程式透過編譯器(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 mbbps 流量單位換算
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% 。
2.複製路徑 帳戶AppdataGoogleChromeUserDataDefault 下的 Bookmarks 檔案將其存放到其他儲存體,即完成備份;當要還原時,便將該檔案,在複製放回上述路徑即可還原。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
12root # systemctl stop firewalld.serviceroot # systemctl disable firewalld.service安裝 HTTP、PHP、MariaDB 與相關工具
12root # yum install httpd mariadb-server mariadb php php-mbstring php-mysql php-gdroot # yum install wget unzip安裝 phpMyAdmin
123root # cd /var/www/html/root # wget -O sql.zip ‘http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.2.5/phpMyAdmin-4.2.5-all-languages.zip?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Fdownloads.php&ts=1405605567&use_mirror=jaist’root # unzip sql.zip; mv phpMyAdmin-4.2.5-all-languages/ sql; rm -rf sql.zip設定 MariaDB Innodb
修改 /etc/my.cnf 檔案,在 [mysqld] 下新增1innodb_file_per_table = 1啟動 httpd 與 mariadb,並設定開機時啟動
1234root # systemctl start mariadb.serviceroot # systemctl start httpd.serviceroot # systemctl enable mariadb.serviceroot # systemctl enable httpd.service設定 MariaDB 資料庫的 root 密碼
1root # mysqladmin -u root password ‘your-password’最後,開啟 Web Browser,輸入 http://your-ip/sql 使用 phpMyAdmin
子網路遮罩教學法
Scratch2.0 時鐘設計
電子時鐘設計
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 安裝與中文化簡易步驟說明:
安裝時間格式請改選為:Chinese (Traditional,Taiwan)
鍵盤輸入請改選為:Chinese Traditional-US
請選擇安裝 Windows Server 2016 版本。
安裝完成、輸入預設administrator登入密碼後,登入系統,連接上網路
進入控制台 Control Panel→ 點選 Clock Language and Region 準備下載中文語言
點選 Language
點選中文(台灣)右邊 Options 選項。
系統自動 Checking availability 請稍後。
檢查完成後,請點選 Download and install language pack
就可以正式下載安裝 Chinese(Traditional, Taiwan) language pack.安裝完成KB3193497 zh-TW_LP中文化語言包後,就可以進行中文顯示介面變更。
請再點選左上方語言進階選項 Advanced settings
點選複寫Windows顯示語言:Override for Windows display language:中文(台灣)
點選 Apply language settings to the welcome screen,system accounts and new user accounts
將語言設定套用至歡迎畫面,系統帳戶及新的使用者帳戶,登出Windows系統後設定正式生效。中文化 Windows Server 2016 Server 設定完成,請記得再執行Windows Update更新系統。
系統更新後,版本將會更新到最新 Build 14393.rs1_release.160915-0644 版次。
設定完成測試用 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”即可。
以下類推…..
輸入「破折號」與「刪節號」
在Word、WordPad……等文書資料處理軟體中,使用新注音輸入法輸入中文字的時候,要如何輸入標點符號「破折號」與「刪節號」呢?說明如下:其他標點符號的輸入詳見:標點符號快速鍵。
1.依據教育部網站的說明,「破折號」為一條連續的直線,占兩個中文字的寬度,如下圖所示。
2.想要在Word 2013輸入句子「四季──春、夏、秋、冬。」先輸入「四季」,如下圖所示。
3.按鍵盤的「Ctrl」+「Alt」+「,」三個按鍵開啟符號表,按鍵盤的「Z」輸入「破折號」。
4.如下圖所示,已經輸入「破折號」。
5.已經輸入的「破折號」只有一個字的寬度,接著按鍵盤「Ctrl」+「Y」鍵,重複輸入破折號,如下圖所示,「破折號」為一條連續的直線,且占兩個字的寬度。
6.最後再輸入「春、夏、秋、冬。」,完成句子的輸入,如下圖所示。
7.依據教育部網站的說明,「刪節號」為連續六個點,占兩個中文字的寬度,如下圖所示。
8.想要在Word 2013輸入「辭典可以告訴我們許多詞語,包括人名、地名、制度、成語、典故……的含義。」先輸入辭典可以告訴我們許多詞語,包括人名、地名、制度、成語、典故「辭典可以告訴我們許多詞語,包括人名、地名、制度、成語、典故」,如下圖所示。
9.按鍵盤的快速鍵「Ctrl」+「Alt」+「.」三個按鍵輸入「刪節號」〈連續按兩次「.」〉,如下圖所示。
10.最後再輸入「的含義」,完成句子的輸入,如下圖所示。