寫教學的最大目的是教會未來的自己

網站架設

mariaDB+galera 的ㄧ些優缺點

我們公司網站www.funtime.com.tw 已經使用mariaDB+galera 的DB cluseter 系統已經一段時間了

我們是使用兩台DB 的同步運作模式

這套同步系統的最大好處是她的同步運作效率很高,相同的資料量用檔案匯入要4小時’ 但SST 同不只需2小時

先來介紹一下galera的運作原理

galera 是在收到query時先作分析,如果是單純select 就會直接回應給對方,如果是insert這類會更改DB的指令,就會同不丟給每個cluster上的DB

另外galera有一個快取機制,儲存最新更新的資料,如果當某個DB故障重啟時,她會使用其他DB的ˊ快取來回復,這稱作IST  她速度很快

另外還有一個機制叫做SST,這是當 DB掛點帶久超出快取容許範圍,就會作整個DB的重新同步,這時間就會比IST久很多

SST有一個恐怖缺限,就是在同步時,會把另一台DB鎖死,當然為了同步這樣做合理,但碰到我們公司這樣只有兩台DB的情況下就麻煩了

ㄧ台掛了兩台都不能用………

 

當然官方建議的方案是 開三台………..

好吧 這套系統的缺陷就在這了,對於需求不上不下的網站來說這有點浪費

 

Post to Twitter Post to Plurk Post to Facebook Send Gmail

MYSQL 轉mariaDB+galera的兩三事

前幾個月我們公司的網站的資料庫系統從MYSQL 5.1.3轉移到mairaDB ,其中最大的目的就是使用galera 同步技術,這當中碰到一些狀況…..

這一篇 主要就是說明一些我所知道的事,至於怎麼安裝的,請自己google吧…..

 

 

一開始我要說的是”MYSQL 轉 mariaDB 不保證完全相容….”,沒錯就是不完全相容,架設你的網站用的SQL 有點複雜,強烈建議先去測試一下,個人猜測是這樣的,mariaDB 只保證 從他所說的MYSQL版本移植過去是相容的,其他版本號不保證,另外因為mariaDB有些加速的手法會導致部分語法失靈,個人目前碰到兩種狀況 閱讀全文

Post to Twitter Post to Plurk Post to Facebook Send Gmail

網站平移備份

最近在做網站的測試,所以開了 台測試server,要把網站的資料複製到測試server

本來我都是 先把MYSQL 匯出、FTP 下載所有檔案

 

最近我學到新的快速方法

參考資料 http://jashliao.pixnet.net/blog/post/164556993-%E6%AF%8F%E5%A4%A9%E4%B8%80%E5%80%8Blinux%E6%8C%87%E4%BB%A4–scp%E6%8C%87%E4%BB%A4%28%E9%81%A0%E7%AB%AF%E6%AA%94%E6%A1%88%E5%8A%A0%E5%AF%86%E6%8B%B7%E8%B2%9D-

 

1. 檔案水平轉移法

scp -r /home/XXX/public_html/* XXX@IP:/home/XXX/public_html

用法和 cp 相同 -r : 轉移資料夾

從本地 複製到 遠端特定IP 的特定資料夾

倒過來寫也OK 可以從遠端抓資料過來

 

2.MYSQL 水平備份

mysqldump -u [SOURCE_userid] -h [SOURCE_IP] -e -q –password=[SOURCE_PASSWORD] SOURCE_db_Name | mysql -u [DISTANCE_userid] –password=[DISTANCE_PASSWORD] -h [DISTANCE_IP] DISTANCE_db_Name

 

這是直接把DB dump出來後直接匯入到 另一台DB 中,不過要特別注意 如果資料庫太大 超過連線時間 會直接炸開喔

Post to Twitter Post to Plurk Post to Facebook Send Gmail

提升資料庫 (SQL)效能

引用自 http://blog.xuite.net/j2ee/code/15120677-調校+SQL+以徹底改善應用程式效能

單純引用 給自己看

有些程式員在撰寫前端的應用程式時,會透過各種 OOP 語言將存取資料庫的 SQL 陳述式串接起來,卻忽略了 SQL 語法的效能問題。版工曾聽過某半導體大廠的新進程式員,所兜出來的一段 PL/SQL 跑了好幾分鐘還跑不完;想當然爾,即使他前端的 AJAX 用得再漂亮,程式效能頂多也只是差強人意而已。以下是版工整理出的一些簡單心得,讓長年鑽究 ASP.NET / JSP / AJAX 等前端應用程式,卻無暇研究 SQL 語法的程式員,避免踩到一些 SQL 的效能地雷。

1、資料庫設計與規劃

• Primary Key 欄位的長度儘量小,能用 small integer 就不要用 integer。例如員工資料表,若能用員工編號當主鍵,就不要用身分證字號。

• 一般欄位亦同。若該資料表要存放的資料不會超過 3 萬筆,用 small integer 即可,不必用 integer。

• 文字資料欄位若長度固定,如:身分證字號,就不要用 varchar 或 nvarchar,應該用 char 或 nchar。

• 文字資料欄位若長度不固定,如:地址,則應該用 varchar 或 nvarchar。除了可節省儲存空間外,存取磁碟時也會較有效率。

• 設計欄位時,若其值可有可無,最好也給一個預設值,並設成「不允許 NULL」(一般欄位預設為「允許 NULL」)。因為 SQL Server 在存放和查詢有 NULL 的資料表時,會花費額外的運算動作 [2]。

• 若一個資料表的欄位過多,應垂直切割成兩個以上的資料表,並用同名的 Primary Key 一對多連結起來,如:Northwind 的 Orders、Order Details 資料表。以避免在存取資料時,以叢集索引掃描時會載入過多的資料,或修改資料時造成互相鎖定或鎖定過久。

—————————— 閱讀全文

Post to Twitter Post to Plurk Post to Facebook Send Gmail

檢查圖片連結失效

有些時候會有照片失效的狀況,為了避免出現 叉叉 的難看畫面,有下列方法解決

以下三種方法 都可以在圖片時效的情況下 替換另一張預設照片

 

1. HTML 法

在<img> 中增加 onError=”this.src=’XXXimg.jpg’ ”

2.jquery法

$('img').attr('onError','this.src="XXXimg.jpg"');

3.jquery終極處理方法
$('img').error(function(){
 $(this).attr('src', 'XXXimg.gif');
 $(this).attr('width', '1px');
 $(this).attr('height', '1px');
})

Post to Twitter Post to Plurk Post to Facebook Send Gmail

PHP 所有$_SERVER的可用參數表

引用自 http://www.w3schools.com/php/php_superglobals.asp

下表列出了可以去裡面$ _SERVER中最重要的元素:

Element/Code Description
$_SERVER[‘PHP_SELF’] Returns the filename of the currently executing script
$_SERVER[‘GATEWAY_INTERFACE’] Returns the version of the Common Gateway Interface (CGI) the server is using
$_SERVER[‘SERVER_ADDR’] Returns the IP address of the host server
$_SERVER[‘SERVER_NAME’] Returns the name of the host server (such as www.w3schools.com)
$_SERVER[‘SERVER_SOFTWARE’] Returns the server identification string (such as Apache/2.2.24)
$_SERVER[‘SERVER_PROTOCOL’] Returns the name and revision of the information protocol (such as HTTP/1.1)
$_SERVER[‘REQUEST_METHOD’] Returns the request method used to access the page (such as POST)
$_SERVER[‘REQUEST_TIME’] Returns the timestamp of the start of the request (such as 1377687496)
$_SERVER[‘QUERY_STRING’] Returns the query string if the page is accessed via a query string
$_SERVER[‘HTTP_ACCEPT’] Returns the Accept header from the current request
$_SERVER[‘HTTP_ACCEPT_CHARSET’] Returns the Accept_Charset header from the current request (such as utf-8,ISO-8859-1)
$_SERVER[‘HTTP_HOST’] Returns the Host header from the current request
$_SERVER[‘HTTP_REFERER’] Returns the complete URL of the current page (not reliable because not all user-agents support it)
$_SERVER[‘HTTPS’] Is the script queried through a secure HTTP protocol
$_SERVER[‘REMOTE_ADDR’] Returns the IP address from where the user is viewing the current page
$_SERVER[‘REMOTE_HOST’] Returns the Host name from where the user is viewing the current page
$_SERVER[‘REMOTE_PORT’] Returns the port being used on the user’s machine to communicate with the web server
$_SERVER[‘SCRIPT_FILENAME’] Returns the absolute pathname of the currently executing script
$_SERVER[‘SERVER_ADMIN’] Returns the value given to the SERVER_ADMIN directive in the web server configuration file (if your script runs on a virtual host, it will be the value defined for that virtual host) (such as [email protected])
$_SERVER[‘SERVER_PORT’] Returns the port on the server machine being used by the web server for communication (such as 80)
$_SERVER[‘SERVER_SIGNATURE’] Returns the server version and virtual host name which are added to server-generated pages
$_SERVER[‘PATH_TRANSLATED’] Returns the file system based path to the current script
$_SERVER[‘SCRIPT_NAME’] Returns the path of the current script
$_SERVER[‘SCRIPT_URI’] Returns the URI of the current page

Post to Twitter Post to Plurk Post to Facebook Send Gmail

CSS div 置中作法

參考資料

http://www.flycan.com/article/css/css-div-position-center-1562.html

 

 

通常利用CSS 對div 方塊排版的時候,常常會使用left : 50% 這類排版方式

但是這有個很大問題 他是依照方塊的 左上角當作基準點,所以 無法做照真正的置中(或是其他比例)

解決方法是利用 margin

 

使用 margin-left : -[div一半寬度]px

就可以解決了

垂直部分也可以這樣解

Post to Twitter Post to Plurk Post to Facebook Send Gmail

好用的網頁技術學習網站codecademy

經過兩周成功嶺的”專業訓練”(大概是調整了生活作息吧) 終於進入了職場,正式脫離了學生身分。

 

我目前的工作是網站的前端工程師,簡單來說就是把行銷、美術所設計的畫面、功能製作出來,這部份我原先的知是都是來自於我在IND的自己摸索,當然還有課堂上的學習(感謝馬尚彬教授的指導,並給我更多練習的機會)

 

建立一個網站有許多技術需要結合,期中網站前端顯示的部分那就更多樣化了

目前我是使用PHP+CSS+JS(jQuery) 為主要開發語言,在這裡推薦一個很好用的教學網站

http://www.codecademy.com/

這是一個英文網站,它提供了六七種常見的網頁開發與研教學,對於一個初學者或是有點基礎但是要快速了解新語言的好網站

 

它是使用漸進式 透過大量的練習問題來達到教學目的

另外在寫作的過程中它會即時把結果顯示在瀏覽器上

這就是它最棒的地方

 

Post to Twitter Post to Plurk Post to Facebook Send Gmail

MYSQL 密碼加密(透過PHP)

最近我的第一個自製PHP網站 被攻打下來了阿….

雖然不太清楚原因

 

所以最近找了個方法 把MYSQL 中所有的密碼通通加密了,這樣應該會安全些

 

參考資料

http://www.hkcode.com/programming/242

http://result945.pixnet.net/blog/post/27077947-mysql-密碼使用md5加密

 

加密方法是 透過 md5() 這個語法來完成,剛剛測試,上面兩種方法加密結果是相同的

 

我使用的方法是

在密碼 $passwd 放入SQL 之前 寫下

$passwd=md5($passwd);

 

如果 資料庫原先是明碼存的,可以透過 update `XXX` SET `passwd`=md5(passwd) where 1 來解決

不過在轉碼之前請先備份,還有確保密碼長度 超過32字元

 

 

Post to Twitter Post to Plurk Post to Facebook Send Gmail

請勿使用AppServ

前陣子看到一篇 台大關於AppServ的安全通報,建議大家 不要在使用AppServ來架設網站

AppServ 應該算是一套 XAMP 的整合包,但是因為久沒更新 被發現許多漏洞沒有補上

參考網址:http://www.cc.ntu.edu.tw/chinese/epaper/0026/20130920_2607.html

 

底下直接引用他們的文章

 

網站管理者不可不知:AppServ套件成為駭客入侵後門

作者:李美雯 / 計算機及資訊網路中心網路組程式設計師


使用AppServ可以在Windows作業系統中輕鬆安裝與架設網站伺服器,AppServ包含Apache、PHP、Mysql與 phpMyAdmin等網站環境元件,深受一般人的歡迎。因為AppServ已經5年未更新,駭客利用其phpMyAdmin的漏洞植入木馬後門程式,因 而觸發多起資安事件。本中心特此深入分析AppServ套件漏洞與木馬後門的運作原理,以提供網站管理者有效解決方案。

前言
102年6月份,計資中心接獲本校45台主機Sdbot資安事件,這45台異常主機非常特別,同時觸發內對外的IRC異常連線及外對內的Sdbot異常連 線。雖然在通報後主機管理者有處理異常主機,但有些主機卻因處理不完善,而再次觸發同樣的資安事件。透過網路流量分析系統也發現遭通報的異常主機對外發出 大量的UDP Flooding攻擊。為了確實回復異常主機以有效阻止異常主機對外攻擊,我們決定深入分析Sdbot木馬程式的運作原理,提供本校網站管理者最佳解決方 案。

AppServ漏洞與Sdbot運作原理
在隨機分析3台被通報為異常主機的網路封包後,我們發現這些異常主機的phpMyAdmin頁面存在著被外部主機存取的紀錄,初步得知這些異常主機的問題 與phpMyAdmin有關。而phpMyAdmin可讓管理者透過Web介面管理後端Mysql資料庫,提供資料庫之匯出、匯入、刪除與修改等功能,使 用該套件可增加管理後台資料庫的便利性。至於為何以及如何被惡意程式操控,則需要更進一步的分析。

經過向被通報的異常主機管理者查詢後確認這些主機都有一個共通性,均安裝了AppServ 2.5.10套件。AppServ套件在安裝時自動幫使用者將Apache、PHP、Mysql與PhpMyAdmin四個套件安裝並設定好,就因為這樣的方便性,許多學生架設網站時喜好採用這個整合套件,圖一為安裝好AppServ後的預設首頁。

 

閱讀全文

Post to Twitter Post to Plurk Post to Facebook Send Gmail

Copyright © 2024. All Rights Reserved.

歡迎光臨
初音