香港的IT人

個多月前的GoBee.Bike共享單車保安問題的新聞令我認識(他不認識我)一名香港的IT人 – Gap撈Tech. Google下佢係何方神聖,見到佢網站內有好多技術文章,先致驚嘆原來香港係有人做依啲IT,open source嘢,因為我學寫program,遇到唔識都會上google,以中文黎講,都係揾到啲台灣同國內的文章,都無咩見到香港的,又證明咗我係幾咁井底.哈哈哈!

Gap撈Tech: https://blog.gaplotech.com/

AppAppDuck: http://www.appappduck.com/index.html

** 本文同時會張貼在我的google blog:  https://leotseblog.blogspot.com **

PHP – scandir, foreach, is_dir, is_file, nested

近期工餘時間都忙於一個學習專案,因為想出一個自己想做的一個課題,慢慢將佢實現,而從中所學到的會比只看書所學到的會更多(唔洗講都一定要用google),而我依家個學習專案係做一個有前後台的網站,無錯,就係好似wordpress咁有cms,當然我嗰個係超陽春(用wordpress做比喻,我自己都覺得過份咗,哈哈),做到一個可刪除檔案的頁面時又遇到問題,就係點樣可以將folder內的folder(sub-folder)內的檔案都可以找出來刪除呢,而又要去除其中的’.’與’..'(一點與兩點,代表自己directory及上一個directory),搞咗好耐,以下就分享下我嘅做法(這裡用顯示folder 或 file代替):

nested('../../../files/news');   //呼叫 nested 函式

function nested ($arg){   //開始 nested 函式
 $dir = scandir($arg);   //用 scandir() 把指定directory內的folder及file名以arry型式放入 $dir
 foreach ($dir as $value)   //用 foreach() 把array內的元素游走一次
 {
   if(($dir[0] == $value) || ($dir[1] == $value))   //去除 directory 內的 '.'與'..' 自己directory及上一個directory
     continue;
 
   if (is_dir($arg.'/'.$value))   //用 is_dir() 確定是否folder
   {
     echo $arg.'/'.$value." ---- is a folder<br>";   //如是folder,印出
     nested($arg.'/'.$value);   //如是folder,再呼叫函式自己以確定內裡(sub-folder)的是folder或file
   }
   elseif (is_file($arg.'/'.$value))   //用 is_file() 確定是否file
     echo $arg.'/'.$value." ---- is a file<br>";   //如是 file,印出
   else
     echo $arg.'/'.$value." ---- Not file or folder<br>";   //如不是folder或file(仲有咩?),印出
 }
}

當然,上返php官網都有好多勁人post咗好多example上去,但係對我黎講就有啲難理解,以下係相關網站:

PHP官網: http://php.net/manual/en/function.scandir.php

教學網站(簡體): http://www.w3school.com.cn/php/func_directory_scandir.asp

ps. 如果在自己的Linux電腦測試,記得要留意permission問題,即係folder(777,755,…)果啲,要比apache server有寫入權限,而selinux亦都要設定嗰個folder可以被讀寫權限,我都搞咗幾日,以下係我參考的網站:

CentOS 7 + SELinux + PHP + Apache – cannot write/access file no matter what

** 本文同時會張貼在我的google blog:  https://leotseblog.blogspot.com **

 

PHP,MySQL,JavaScript入門好書介紹

圖片來源: http://lpmj.net/4thedition/

今次想介紹一本好書,就係O’Reilly出版,Robin Nixon寫嘅 “Learning PHP, MySQL, & JavaScript” 已經出到第四版,依本書可以話係我對PHP及MySQL網頁編程嘅啟蒙書,我係在公共圖書館借返黎的,當時係借中文譯版第二版,而點解我會覺得依本書係一本好書呢? 因為佢會由教用server開始,裝XAMMP(windows,Mac,Linux都有提點裝),介紹編輯器,PHP與MySQL的互動,當然仲有介紹JavaScript, Ajax, HTML5, CSS, JQuery等等,最重要佢有提一啲編程資安的資訊,跟住本書一步一步做到最後會做咗成個網站出黎(資質所限,我當然還沒有做到),所以一本咁全面嘅書係好值得介紹比想學及初學網頁編程嘅朋友們.當然我己經在灣仔電腦城二樓賣電腦書嗰間舖頭買咗第四版中譯本返屋企喇XD.

相關連結:

書本網站連結: http://lpmj.net/4thedition/

Amazon網站連結: https://www.amazon.com/gp/product/1491918667/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1491918667&linkCode=as2&tag=lephmyanja-20&linkId=EB4KF46RFKL4PXWM

博客來網站連結: http://www.books.com.tw/products/0010685274

** 本文同時會張貼在我的google blog:  https://leotseblog.blogspot.com **

Godaddy hosting加入Let’s Encrypt發行的certificate(https)

近期收到Let’s Encrypt的電郵通知話我嘅cert就快到期,咁今日親有時間就動手搞搞自己個Rohole.com,在我兩個多月前申請使用Let’s Encrypt時其實都搞咗成日,到今次更新張cert諗住有經驗會容易啲,但都搞咗幾個鐘(其實係自己唔記得點做啫XD),所以要係呢到做個記錄,同時又分享下我嘅做法:

1)  去到Let’s Encrypt 網站: https://letsencrypt.org/ 按下首頁中間大大隻字既Get Started,跟住就會見到建議使用Certbot

2)入到去好簡單美觀嘅Certbot首頁,選擇Software係用Apache on Other Unix,跟住會有教在Shell中download certbot-auto及更改為可執行檔案。(ps. 因為我係用自己嘅蠢方法,將cert放在自己電腦再手動upload上godaddy,因為其他方法都唔識所以咁做XD)

3)Download 咗certbot-auto及更改為可執行檔案之後,就可以用佢網站內documention 內既command,即係: $sudo ./certbot-auto certonly –manual(留意: manual前係兩個 – , copy 時會變成一個)跟住佢會叫你入domain,咁我就更係入rohole.com

4)再之後會Note你話個IP address會公開記錄咗話係要求過取得certificate,選Y:

( *** ps. cPanel就唔cap圖了 *** )

5)跟住就會要你確定server有個file,內裡有一串字,而我是用godaddy的linux server(最平嗰個),進入到cPanel後選擇“檔案管理員”,跟住會彈咗個視窗出黎,選擇”Web Root (public_html)”及“顯視隱藏檔案 (名稱開頭是 . 的檔案)“

6)去到檔案管理員的版面,按下左上角”+資料夾”,跟住shell(step 5)中的指示新增”.well-known”資料夾(記得有一點係前面),後再double click”.well-known” 再按 “+資料夾” 以新增 “acme-challenge”資料夾

7)我自己用Fedora的,所以用gedit把shell(step 5)中所指示的那句約80多個英數字copy到gedit,存檔時記得file name是根據shell(step 5)的指引,即係那句約80多個英數字的開首約40多個英數字作為檔名

8)回到cPanel中把剛剛的約40多個英數字作為檔名的檔案上傳到”acme-challenge”資料夾內

9)又回到自己的shell(step 5)按Enter鍵,等一會就會Congratulations!你及說明幾時到期及張cert放在那裡

10)在shell中鍵入”su”(為方便直接用root身份)及輸入蜜碼,再鍵入”cd /etc/letsencrypt/archive”,再鍵入”ll”(兩個L),會見到自己個domain,再鍵入”cd rohole.com”(當然係根據返自己個情況),進入自己domain個folder裡面,會見到4個file都係”.pem”尾

11)輸入”gedit cert.pem”,佢會用gedit開個file出黎,內容就係certificate,按”Ctrl + a”張內容全選,再按”Ctrl + c” copy自選內容,再去到cPanel中的“安全性”中有”SSL/TLS”並按下

12)在”安裝並管理網站的 SSL (HTTPS)” 下,按下 “管理 SSL 網站”

13)在”安裝 SSL 網站”下的網域選取需要安裝cert的domain

14)在“憑證:(CRT)”中貼上剛剛copy出來的certificate.(Step 11)

15)關閉Step11的gedit後,再在shell中鍵入”gedit privkey.pem”以開啟私蜜金鑰,同樣的把內容全都copy

16)又回到cPanel中,在入了Step14的”憑證:(CRT)”之下的”Private Key(KEY)”中貼上剛剛copy的privkey.pem的內容

17)最後在cPanel的底部按下“安裝憑證”,等一會便成功裝好憑證。

相關網站:

https://letsencrypt.org/

https://certbot.eff.org/

https://hk.godaddy.com/

PS: 其實網上有好多教學,有啲用windows攞cert,有啲會比較簡單,希望依編文都有啲啲啲啲參考價值 XDD。

PS2:** 本文同時會張貼在我的google blog: https://leotseblog.blogspot.com **

XAMPP 安裝簡介

之前上堂有同學對電腦不熟識,在安裝XAMPP遇到問題,所以嘗試拍片,由download 到 安裝 到 在瀏覽器開啟網頁的整個過程,本人亦是一名初學者,希望此片對其他初學者有啲啲啲啲參考作用,謝謝!

XAMPP網址: https://www.apachefriends.org/index.html
拍片軟件: https://www.ezvid.com/download
Text editor: https://atom.io/
Text editor: http://bluefish.openoffice.nl/index.html

 

** 本文同時會張貼在我的google blog:  https://leotseblog.blogspot.com **

網頁中的框中框的位置

曾幾何時,在學習html 的時候,經常想將 div 內的 div 放到指定位置,但總是不成功,如下圖:

外框往往縮到上面,無法框着內裡的框,而我的作法是內框的css定了 float: left; 或 float: right; 外框就唔設定overflow, 我明明html是這樣寫的:

<div id="box1">
   <div id="in_box1"></div>
   <div id="in_box2"></div>
   <div id="in_box3"></div>
</div>

div內div, 但係個外框點解會縮咗上去呢? 以前我的做法是唔要外框,直接將內框定位,但有時真係想加返個框框都無辦法,一路學下學下,睇下睇下,終於知到點做到, 只要在box1的css力加上 overflow: auto; (當然,係唔係auto 就自己決定) 咁就得.

上面例子網頁: https://rohole.com/exercise/box.html (原始碼加咗說明)

** 本文同時會張貼在我的google blog:  https://leotseblog.blogspot.com **

HTML,Javascript,CSS,小習作

前幾個月都一直在網上自學Python,http://automatetheboringstuff.com/ 都係因為個人比較懶散,所以3~4個月都係睇到第11課,不過都真係獲益不少,又但係之前一直學習的網頁開發進度又慢咗落黎,算喇,Python都係睇到第11課後先放一邊,再來温一温習HTML,一直諗下有啲咩習作可以做一做,等自己記返啲啲啲啲HTML5啲嘢,就做一個用Javascript黎運算bit,byte,kilobyte…的轉換器喇,因為係電腦有時都見到啲用byte黎做單位嘅嘢,咁我心算又計唔到,又懶開個計數機出黎計,咁不如自己做一個轉換器喇(其實以上都係借口黎),作為Javascript練習都幾好呀,咁就用咗1個星期嘅工餘時間黎搞依個頁面,好簡單,以我能力暫時係比到依啲出黎,希望有人見到都覺得有啲啲啲啲用。

個Converter頁面: https://rohole.com/exercise/converter1.html

參考網站:
鳥哥的 Linux 私房菜: http://linux.vbird.org/
Will保哥: http://blog.miniasp.com/post/2010/04/08/unit-information-Bit-Byte-KB-MB-GB-TB-PB-EB-ZB-YB.aspx
W3school: http://www.w3schools.com/default.asp

** 本文同時會張貼在我的google blog:  https://leotseblog.blogspot.com **

2017第一Post (Linux,Hosting,SSL https)

之前留意到話Chrome會將非https的網站應定為不安全,依幾日終於的起心肝搞搞自己個網站(又咪係裝得個wordpress,除咗default啲嘢咩都無,但話曬比咗錢租網址同Server,唔玩下又唔甘心),依個係我第一篇在Rohole上的文,就同大家簡述下我開依個Rohole網站所使用的網站與工具。

  1. OS(Operating System): Linux  Fedora 25(自己用啫,免費的)(https://getfedora.org/)
  2. Hosting: Godaddy(在全球都好出名,我哋依啲國際網站更係用佢)(https://hk.godaddy.com)
  3. SSL: Let’s Encrypt(即係網址前面有https,代表傳送資料時會有加密,由多間公司/組織付出,提供免費SSL證明)(https://letsencrypt.org/)

以下就同大家分享上面三項嘅使用經驗:

Linux (Fedora): 第一次接觸到Linux係1999年,當時剛出身打工儲咗幾個月錢砌我自己出錢嘅第一部電腦,當時買嘅底板牌子係Abit(唔知有無人聽過,而家已經唔見有),佢除咗有driver CD, 仲有隻Linux CD,不過當時只係留意佢碟面有隻企鵝之後就無理過佢。後來香港有一段時間興起科網熱(應該全世界都熱),一啲台灣電腦書店開到成行成市,當然一啲大型書店都有賣電腦書,見到本Linux 7.3(講緊係Redhat)有3隻碟送都唔洗100蚊,咁就買咗返屋企,果時仲特登去工聯會報咗個 Linux課程(其實得4堂),學下點裝機同 setup,可惜的是開始不久電腦就壞咗,我就懷疑是否linux 嘅關係,跟住就放棄咗,直到2年前,應該係年紀大咗,真係好想做一個網站同寫app,而Linux係server 界最多人用而且好多軟件都係唔洗錢,所以又走去灣仔電腦城砌咗部電腦專裝 Linux 玩,不幸的是原本用開嘅 laptop 又壞咗,就係咁,Linux 就成為我主要使用嘅 OS ,而我主要係用Fedora 的(因為聽聞佢啲軟件更新係最快,試到無問題就納入redhat),係初初啲setting要google 外,用落都無咩問題(有Chrome,有 office,pdf),裝啲軟件都好方便(好多都已經包裝好曬,好似係windows裝咁),php/python 都係打句command就攪掂,真係直得一試.

Godaddy:  而家依個網站就係用Godaddy嘅服務而建成,Godaddy係上年響工聯會上堂時阿Sir推薦的,因為佢真係國際知名而且有好多軟件都可以一鍵安裝.例如: wordpress, Drupal, Joomla, Magento, OpenCart, PrestaShop, phpBB,…,真係好放便,而我依家用緊嘅就係虛擬主機,$28蚊一個月,仲有一個域名送,用wordpress建站(暫時),睇下遲啲有無能力做到自己想做嘅嘢而再加入依個網站內,跟住就升級虛擬主機機能.

Let’s Encrypt: (網址列上,網址前的https)因為上年睇到一則新聞而留意SSL,就係Chrome將會開始對沒有SSL的網站列為不安全,所以google下SSL係咩,就係將網站要傳送的內容加密,例如有啲網站要登入,所輸入的名及密碼就會經過加密後傳送回網站,又例如投票時所選的項目,都會加密咗先會傳送回網站.其實可以在godaddy買到依個服務,但係見到有免費嘅更係用喇,而Let’s Encrypt係由好多大公司贊助而成發出ssl憑證嘅網站/公司,佢入面都會提到Certbot作為栛助取得憑證的工具,但所發出嘅憑證只有3個月有效,所以一年要做4次更新憑證嘅動作,依個用wordpress建做嘅Rohole.com就係2017年1月15號取得憑證及上線的.

依編文就係2017年1月15號當日開始寫的,諗住新年前可以post到黎,但係都係要係新年假期先有時間寫好依編文,其實小弟都係在工餘時間寫下文,學下寫程式咁,啲文同技術都好膚淺,只是想記錄吓同分享吓自己關心的事,如果咁啱有人黎到依個網站又剛好係啱佢睇就好喇.真係希望一個月可以post到一編文,我想做嘅計劃可以響依一兩年內做到.

ps. 本文同時會張貼在我的google blog:  https://leotseblog.blogspot.com