Localhost là từ ghép của hai chữ “local” và “host“. Local dịch theo nghĩa IT là máy tính của bạn, Host theo nghĩa IT là máy chủ. Vậy localhost nghĩa là một máy chủ được vận hành trên máy tính của bạn.
Localhost bao gồm nhiều ứng dụng đi kèm với nhau và tất cả các ứng dụng đó sẽ kết hợp với nhau để tạo ra một môi trường có thể chạy mã nguồn WordPress trên máy tính của chính bạn bao gồm:
Phần mềm Webserver tên Apache, đây là webserver thông dụng nhất.
Phần mềm PHP để xử lý mã PHP vì WordPress viết bằng ngôn ngữ PHP.
Phần mềm MySQL Server để lưu trữ và xử lý cơ sở dữ liệu, do WordPress sử dụng MySQL làm nền tảng cơ sở dữ liệu. Cơ sở dữ liệu thường được mình viết theo chữ tiếng Anh là database.
Phần mềm PHPMyAdmin để xem và quản lý cơ sở dữ liệu MySQL.
Như vậy, đối chiếu với yêu cầu cơ bản của một website WordPress thì localhost đã hoàn toàn đáp ứng được.
Localhost vận hành như thế nào
Khi cài đặt Localhost vào máy tính rồi, thì máy tính của bạn đã có một phần mềm Webserver để chạy ứng dụng website với địa chỉ là http://127.0.0.1. Đây là địa chỉ IP dạng localhost, ngoài ra bạn cũng có thể chạy localhost với đường dẫn là http://localhost.
Thông thường khi cài Localhost, mỗi khi cần sử dụng bạn sẽ cần mở bảng điều khiển của localhost lên và kích hoạt cho nó khởi động các ứng dụng đi kèm.
Lưu ý trước khi cài đặt
Xoá toàn bộ ứng dụng liên quan tới localhost
Nếu bạn có cài đặt các phần mềm liên quan đến việc làm localhost như PHP, MySQL thì hãy xoá hết. Và bạn không nên cài XAMPP trên Windows Server đã cài đặt IIS.
Lưu ý nếu bạn dùng Skype
Nếu máy bạn đang cài đặt phần mềm Skype thì localhost sẽ không hoạt động được do Skype đã chiếm quyền sử dụng cổng mạng 80, đây là cổng mặc định của webserver. Do đó, bạn hãy mở Skype -> Tools -> Connection Options -> và bỏ chọn phần “Use port 80 and 443…..” rồi nhập một cổng bất kỳ để Skype sử dụng.
Sửa xong, hãy khởi động lại máy để hoàn tất.
Tắt tường lửa
Nếu máy bạn có cài đặt tường lửa từ Windows hay từ một phần mềm Antivirus nào khác thì hãy tắt nó đi vì có thể nó sẽ chặn cổng 80 hoặc các ứng dụng webserver.
Tắt UAC trên Windows
Nếu máy của bạn đang dùng Windows và có bật chức năng User Account Control thì hãy tắt nó đi khi dùng localhost để tránh các vấn đề bị giới hạn quyền.
Tìm cách tắt trên Google
Hướng dẫn cài đặt Localhost
Để cài Localhost chúng ta có rất nhiều cách và phần mềm, tuy nhiên nếu bạn là người mới thì mình khuyến khích các bạn dùng phần mềm XAMPP để cài localhost vì:
XAMPP hoàn toàn miễn phí.
Dễ sử dụng.
Hỗ trợ các hệ điều hành thông dụng như Windows, Mac, Linux.
Tuy nhiên trong bài này mình chỉ hướng dẫn cho hệ điều hành Windows.
Để tải XAMPP, đầu tiên bạn truy cập vào địa chỉ https://www.apachefriends.org/download.html và chọn phiên bản XAMPP phù hợp với hệ điều hành của máy tính bạn đang sử dụng, và bạn nên chọn phiên bản PHP 5.4.31. Lưu ý là XAMPP chỉ có phiên bản cho hệ điều hành 32bit nhưng 64bit vẫn hoạt động bình thường.
Lưu ý: Hiện nay XAMPP đã ra bản mới hơn hỗ trợ MariaDB nhưng bị lỗi rất nhiều, bạn nên dùng phiên bản XAMPP 1.8.3 có thể tải tại đây. Nếu bạn dùng Mac thì tải tại đây.
Sau khi tải file cài đặt về xong, hãy chạy nó, sau đó chọn Next.
Ở phần chọn đường dẫn, bạn hãy chọn đường dẫn cần lưu cài đặt của XAMPP. Lưu ý rằng đường dẫn này bạn phải nhớ vì khi cài đặt web lên localhost, bạn phải truy cập vào thư mục này. Bạn nên để mặc định làc:\xampp. Tiếp tục ấn Next.
Ở trang kế tiếp, bạn bỏ chọn phần “Learn more about Bitnami for XAMPP“. Và ấn Next 2 lần nữa để bắt đầu quá trình cài đặt XAMPP.
Sau khi cài xong, ấn nút Finish để kết thúc cài đặt và mở bảng điều khiển của XAMPP. Tuy nhiên, hãy khởi động lại máy sau khi cài đặt xong để tránh tình trạng không khởi động được localhost.
Khởi động Localhost
Bây giờ bạn hãy vào thư mục c:\xampp và mở file xampp-panel.exe lên để bật bảng điều khiển của XAMPP.
Bảng điều khiển của XAMPP
Bạn để ý sẽ thấy hai ứng dụng Apache và MySQL có nút Start, đó là dấu hiệu bảo 2 ứng dụng này chưa được khởi động, hãy ấn vào nút Start của từng ứng dụng để khởi động Webserver Apache và MySQL Server lên thì mới chạy được localhost.
Nếu cả hai ứng dụng chuyển sang màu xanh như hình dưới là đã khởi động thành công.
Sau khi khởi động xong, bạn hãy truy cập vào website với địa chỉ là http://localhost sẽ thấy nó hiển thị ra trang giới thiệu XAMPP như hình dưới.
Bạn có thể ấn vào nút English phía bên dưới để truy cập vào trang quản lý localhost.
Tạm thời là thế, cách chi tiết cài đặt WordPress vào localhost XAMPP mình sẽ hướng dẫn ở phần sau.
Thao tác trên localhost
1. Làm việc với thư mục và tập tin
Một điều khá cơ bản nhưng rất quan trọng khi bạn làm việc với website mà bất kể là localhost hay hosting đó là hiểu cơ chế phân thư mục của WordPress.
Bây giờ bạn hãy vào thư mục C:\xampp\htdocs\ và tạo một thư mục tên “thachpham“, thư mục này sẽ chứa website của mình.
Như ở trên, mình đã hướng dẫn bạn tạo một thư mục tên là thachpham trong thư mục htdocs và bạn có thể sử dụng đường dẫn http://localhost/thachpham để chạy. Vậy bây giờ mình có thể nói, thư mụcC:\xampp\htdocs\thachphamchính là thư mục gốc của tên miền http://localhost/thachpham
Bây giờ bạn thử copy một tập tin nào đó vào trong thư mục C:\xampp\htdocs\thachpham rồi chạy tên miềnhttp://localhost/thachpham, bạn sẽ thấy nó liệt kê file mà bạn vừa copy vào.
Nếu bạn click vào file ảnh đó thì trình duyệt sẽ hiển thị ảnh với đường dẫn là http://localhost/thachpham/tên-tập-tin. Đây được xem là một link ảnh trong website của bạn.
Tương tự, hãy thử tạo một thư mục bất kỳ rồi copy một tập tin nào đó vào, thì bây giờ bạn có thể truy cập xem ảnh với đường dẫn là http://localhost/thachpham/tên-folder/tên-tập-tin.
Như vậy bạn có thể hiểu, cái đường dẫn trên website nó sẽ phân thứ cấp tùy theo cấu trúc thư mục và file trong đó.
2. Tạo cơ sở dữ liệu MySQL (Database)
Thao tác này bạn sẽ phải làm trong bước cài đặt WordPress trên localhost nhưng ở đây mình sẽ hướng dẫn trước để bạn có thể làm thử luôn.
Khi nhắc đến database, bạn phải nhớ là nó bao gồm 3 thành phần chính là:
Tên user của database.
Mật khẩu của user database.
Tên database.
Database Host (thường thì điền là localhost, bất kể là bạn dùng ở localhost hay host bình thường).
Bạn hãy tưởng tượng rằng, user của database sẽ có nhiệm vụ đọc và ghi dữ liệu vào database nên khi sử dụng các mã nguồn PHP, bạn phải khai báo cùng lúc cả user của database và tên database.
Đối với localhost, bạn không cần tạo user cho database mà sẽ sử dụng thông tin user như sau:
Tên user database: root
Mật khẩu: bỏ trống
Do vậy, chúng ta chỉ cần tạo database là đủ.
Để tạo database, bạn hãy truy cập vào localhost với đường dẫn http://localhost/phpmyadmin. Sau đó bạn nhấp vào menu Databases.
Sau đó ở phần Create databsae, bạn nhập tên database cần tạo vào ô Database name, phần Collation bạn hãy chọn là utf8_unicode_ci như hình dưới rồi ấn nút Create kế bên.
Tạo xong hãy nhìn bên menu tay trái, nếu nó xuất hiện tên database vừa tạo là thành công. Vậy bây giờ, chúng ta tạm có một databse với các thông tin như:
Database Host: localhost
Database user: root
Database password: trống
Database name: thachphamblog
Còn cách sử dụng với nó như thế nào thì mình sẽ nói ở bước cài WordPress trên localhost cho thực tế.
Tới đây bạn đã có một cái localhost sử dụng địa chỉ dạng http://localhost/ hoặc http://127.0.0.1/ rồi. Nếu bạn đã rành việc sử dụng localhost và cần thêm tên miền ảo thì ấn qua trang 2 để tiếp tục xem phần nâng cao. Lưu ý là không dành cho người mới.
Cách đổi cổng mạng cho Localhost
Mặc định Localhost sẽ sử dụng cổng 80, bởi vì khi bạn gõ tên miền như http://localhost thì tức là nó đã sử dụng cổng 80 để đọc các dữ liệu web trong localhost. Tuy nhiên nếu như bạn đã dùng cổng 80 cho một ứng dụng khác, hoặc đơn giản là không khởi động Apache được thì bạn nên thiết lập cho Apache trong Localhost sử dụng một cổng khác, như 8080 chẳng hạn.
Trước khi đổi, mình cần các bạn lưu ý là sau khi đổi xong thì bạn phải truy cập vào website với tên miềnhttp://localhost:8080 thay vì chỉ là http://localhost.
Để đổi cổng, bạn mở bảng điều khiển XAMPP lên và chọn nút Config của Apache, sau đó chọn Apache (httpd.conf).
Sau đó bạn tìm dòng này:
Listen 80
Đổi thành
Listen 8080
Sau đó bạn Stop cái Apache và Start lại rồi thử truy cập vào localhost theo đường dẫn http://localhost:8080, nếu truy cập được thì bạn đã làm thành công. Và cũng nên lưu ý rằng, sau khi đổi cổng thì mỗi khi truy cập bạn phải sử dụng đường dẫn có kèm theo số cổng bạn vừa đổi sang vì mặc định nếu không điền thì nó sẽ sử dụng cổng 80.
Nếu bạn có sử dụng tên miền ảo như mình hướng dẫn ở trên thì bạn cũng nên sửa lại file C:\xampp\apache\conf\extra\httpd-vhost.conf cho nó sử dụng port 80 thay vì 8080.
Trong CodeIgniter, khi bạn thiết lập cấu hình bật bảo vệ CSRF (Cross Site Request Forgery) trong config.php $config['csrf_protection'] = TRUE; thì mọi truy vấn từ client tới server đều được kiểm tra xem có chứa token hay không. Khi làm việc với các truy vấn ajax thì bạn sẽ phải thêm tham số token vào thủ công khá là mệt. Trong bài viết này, mình sẽ chỉ các bạn một cách để tự động thêm token vào mọi truy vấn ajax. Read More
Tuần vừa qua rất nhiều lỗ hổng được công bố trong phần mềm xử lý ảnh nổi tiếng, ImageMagick. Những lỗ hổng này nhanh chóng được đặt tên là ImageTragick. Mặc dù một lỗ hổng trong phần mềm xử lý ảnh trông có vẻ không phải là một vấn đề đối với chủ sở hữu trang web nhưng thực tế nó chính là một vấn đề bảo mật đáng quan tâm.
Rất nhiều trang web cho phép người dùng tải lên những hình ảnh và thường xử lý các hình ảnh này bằng cách sử dụng phần mềm như ImageMagick. Ví dụ, nếu bạn tải một bức ảnh cá nhân để sử dụng như một ảnh đại diện, nó sẽ thường được thay đổi kích cỡ bởi trang web. ImageMagick rất phổ biến và có các plugin làm nó dễ dàng sử dụng với PHP, Ruby, Node.js và các ngôn ngữ khác vì thế nó thường dùng cho các trang web trong việc thay đổi kích cỡ hoặc crop ảnh. Read More
PHP Debugbar là một thư viện giúp bạn có thể debug PHP như console của Dev Tools khi debug JavaScript. Trong bài này mình sẽ hướng dẫn các bạn cách tích hợp thư viện tuyệt vời này vào CodeIgniter. Read More
Tình hình là trong lúc vào tải phim tại phimmoi.net thì tôi vô tình phát hiện ra cái bug này, thường gặp phải khi kết hợp giữa PHP và JSON/JS để tạo nội dung động.
jQuery đã và đang trở thành một công cụ rất hữu dụng cho các nhà thiết kế web. Một trong những thành công là tạo ảnh trượt (gallery, slideshow, carousel...). Hôm nay mình sẽ giới thiệu tới các bạn vài plugin mà bạn nên tham khảo khi dự định tạo một slideshow của riêng mình.
Bạn là chủ của một cửa hàng kinh doanh, chủ một shop quần áo, chủ một quán ăn ngon hay chủ một doanh nghiệp … bạn muốn website của mình có một thông tin gì đó trực quan để khách hàng có thể dễ tìm đến bạn, giải pháp tốt cho chúng ta là google map hay bản đồ google.
Hầu hết ai cũng bít đến google map đây là một công cụ định vị bản đổ rất nổi tiếng, toàn bộ bề mặt trái đất đều có ở trong bản đồ google này, kể cả địa chỉ bạn muốn nhúng vào webiste. Khách hàng sẽ không mất nhiều thời gian để tìm bỏ công tra cứu đường đi đến bạn nếu như ta sử dụng dịch vụ này.
Việc nhúng bản đồ của google vào website của bạn cũng khá đơn giản thôi, đầu tiên bạn đăng ký với google một tài khoản đó chính là Gmail của bạn. Sau đó đăng nhập vào tài khoảng ấy tiếp đến truy cập vào link: https://maps.google.com/maps, bạn click vào Địa điểm của tôi.
Chọn Địa điểm của tôi trong google map
Sau đó bạn nhìn bên phải tim địa chỉ nào bạn muốn nhúng vào website, giả sử mình chọn địa chỉ trường ĐH Công Nghiệp Hà Nội. Sau đó chọn Lưu vào. Sau đó chọn tạo bạn đồ mới và lưu lại.
Chọn địa điểm sử dụng trong bản đồ google
Sau đó nếu bạn muốn chỉnh sửa thì bấm vào Chỉnh sửa bên sidebar trái của google map. Ở đây bạn có thể chỉnh sửa tiêu đề hiển thị, dòng ghi chú cho bản đồ của bạn.
Edit địa chỉ đã chọn trên Google map
Các bước đến đây gần như là hoàn thành, bạn xem lại địa chỉ ok thì ta get code mang về để vào web là chúng ta có bản đồ cho doanh nghiệp mình trên website.
Bạn click vào biểu tượng hình liên kết thân quen của mình và dòng dưới là dòng google cho chúng ta nhúng vào web. Bạn có thể thay đổi kích thước của frame (khung) này sao cho phù hợp với giao diện website của bạn.
Kết luận: Việc nhúng bản đồ của google vào website có nhiều cách, trên là cách đơn giản nhất giờ chỉ việc style CSS lại cho đẹp là OK. Chúc thành công!
Giờ đây, khi nhắc đến Ajax, chắc hẳn bạn - những người yêu thích lập trình - không còn cảm thấy xa lạ như trước kia mà thậm chí còn hình dung ra sự giản đơn và thuận tiện biết bao khi ứng dụng nó. Nhưng, liệu bạn đã nắm vững những quy tắc then chốt, những “mẹo nhỏ” hữu ích khi lập trình với Ajax chưa nhỉ? Dù bạn đã rõ hay...trót quên, vẫn xin mời bạn tham khảo bài viết này như một cách ôn lại kiến thức trọng tâm đầy bổ ích! A. 10 lưu ý vàng cần ghi nhớ
1. Đánh dấu trang và quay lại Khi tự bạn điều khiển những gì đang diễn ra trên website, sử dụng JavaScript để làm xuất hiện hay biến mất các đối tượng trên trang hay thậm chí là sau khi toàn bộ trang được hiển thị hoàn toàn, bạn sẽ nhanh chóng nhận ra rằng, nút Quay lại (Back) của trình duyệt đã mất hoàn toàn tác dụng! Nút Quay lại này hoạt động bằng cách dùng đối tượng ‘history’ của trình duyệt, lưu lại danh sách tất cả các trang đã được truy cập liên tiếp gần đây nhất. Nhưng, nếu bạn không mở bất kỳ trang mới nào (vâng, như bạn biết, Ajax không cần phải refresh trang khi cần hiển thị thông tin), thì đối tượng ‘history’ kia rõ ràng chẳng lưu được chút manh mối gì. Đây là điều bạn cần lưu ý khi viết các ứng dụng Ajax. Và nếu như cần thiết, hãy trang bị cho site của bạn một nút Back của riêng mình. Người dùng có thể muốn quay lại cửa sổ trước đó và bạn có nhiệm vụ phải lưu giữ những thông tin di chuyển này. Thật đáng tiếc là ngay cả tiện ích đánh dấu trang (Bookmark) cũng trở nên vô dụng như thế! Đáp án cụ thể cho bài toán này ra sao, xin được dành câu trả lời cho bạn nghiên cứu.
2. Đưa ra thông báo trực quan Phần lớn thời gian của mình, Ajax hoạt động một cách “thầm lặng” và điều này đôi khi “làm khó” người dùng. Nếu bạn tải về một lượng lớn thông tin và đang chờ đợi phản hồi từ phía máy chủ, chắc chắn một hình ảnh “nhấp nháy” nào đấy sẽ vô cùng có ích với người dùng. Một chiếc đồng hồ cát xoay tròn, và khách hàng sẽ biết rằng họ cần kiên nhẫn! Bức hình này nên là dạng ảnh động (.gif), đồng thời phối hợp với đoạn mã JavaScript dưới đây, hiệu ứng “ẩn, hiện” sẽ càng thêm phần thú vị: document.getElementById(“image1”).style.visibility= “visible”; document.getElementById(“image1”).style.visibility= “hidden”; Rõ ràng rằng, người dùng luôn muốn thấy một tín hiệu nào đấy báo cho họ biết rằng kết nối đang được thực hiện, dạng như thanh tiến trình màu xanh với các gạch nối càng lúc càng đầy cũng là một ý tưởng không tồi, và chắc chắn họ sẽ hài lòng với site của bạn!
3. Hãy để người dùng "tự nhiên" Các ứng dụng Ajax dường như đang tự mình thi hành “phận sự” bởi chúng được thực thi phía sau giao diện người dùng. Chúng luôn sẵn sàng kết nối tới server, ngay cả khi người dùng không hề mong muốn – trong trường hợp họ vô tình gõ nhầm thông tin chẳng hạn. Rất dễ hình dung cảm giác lúc đó của bạn ra sao, khi ngay lúc bạn vừa gõ một chữ nào đấy, lập tức thông tin này đã được lưu lại database mà chẳng hề “xin phép” lấy một lời. Vậy nên, để tốt nhất, bạn hãy lưu ý một số điều nhỏ sau: - Đừng bao giờ lưu thông tin ngay lập tức, vừa tốn băng thông mà chưa chắc đã được sự đồng ý của người dùng. - Hãy nhớ rằng, người dùng luôn muốn “giao tiếp” nhiều hơn với ứng dụng. Hãy làm các thủ tục xác thực dữ liệu ngắn gọn hơn, đỡ mất thời gian hơn và cho người dùng quyền quyết định khi nào thì cần xác thực. Đấy chính là yếu tố tiên quyết trong quá trình thiết kế giao diện người dùng! - Cuối cùng, đừng quên cung cấp cho người dùng cách thức “sửa sai” thao tác (Undo).
4. Ghi nhớ các trình duyệt Thế giới thật rộng lớn và cũng có rất nhiều trình duyệt! Người dùng sử dụng trình duyệt họ yêu thích, còn bạn, sẽ ra sao khi chỉ kiểm tra ứng dụng của mình trên một loại trình duyệt mà thôi? Sẽ thật tệ nếu bạn chỉ viết riêng cho Internet Explorer, Firefox mà quên mất rằng, trong thế giới World Wide Web, có vô vàn trình duyệt khác nhau, có loại thậm chí còn không hỗ trợ JavaScript, loại khác lại mặc định tắt chúng đi! Hãy ghi nhớ điều này và xây dựng trước một phương án dự phòng không bao giờ là thừa cả.
5. Cho người dùng thấy sự thay đổi Sức mạnh của Ajax chính là việc hiển thị dữ liệu trên một trang không cần refresh bằng cách dùng thẻ <meta id="refresher"> hay ngay cả các đối tượng thuần HTML như textbox chẳng hạn. Ứng dụng Ajax có thể thay đổi dữ liệu ngay sau khi chúng thông báo tới server, nhưng lại không thông báo với người dùng. Lấy ví dụ, bạn có một bảng dữ liệu và mặc định rằng sẽ được tự động cập nhật ngay khi database có thay đổi. Người dùng có thể không nhận thấy rằng thông tin đã không còn như trước, rằng bạn đã thay đổi thành phần trang, và đương nhiên là họ đã hụt mất những thông tin quan trọng. Lại một lần nữa, việc phát ra “tín hiệu” thay đổi tới người dùng sẽ giúp bạn rất nhiều. Nếu bạn vừa thay đổi một số chữ, đơn giản thôi, hãy làm cho nó hiển thị khác đi một chút. Đoạn mã sau dùng để thay đổi màu chữ trong thẻ <Div> thành màu đỏ bằng cách sử dụng linh hoạt thuộc tính style: document.getElementById(“targetDiv”).style.color = “red”; Còn nếu bạn muốn thay đổi màu nền, hãy dùng đoạn mã document.getElementById(“targetDiv”).style.background-color = “red”; Trong đó, “targetDiv” là mã ký hiệu của thẻ Div mà bạn gán cho.
6. Tránh làm chậm trình duyệt Những ứng dụng Ajax có thể rất lớn và chắc chắn chiếm dụng một lượng tài nguyên vật lí không nhỏ. Tốc độ CPU, bộ nhớ RAM có thể bị “ngốn” rất nhiều nếu như bạn không quan tâm xử lí những đối tượng phức tạp trong quá trình khởi tạo hay tham chiếu. Thông thường, một số nhà phát triển ứng dụng lại xài Ajax cũng chỉ bởi vì nó đang “nóng”!! Quan niệm này cần được lưu tâm hơn! Đúng vậy, Ajax có thể giải quyết được nhiều vấn đế, nhưng bạn không nhất thiết phải dùng nó nếu chẳng có lí do gì. Đừng quên rằng, không phải trình duyệt nào cũng hỗ trợ Ajax (hoặc thậm chí ở chế độ mặc định tắt JavaScript). Vậy nên, đừng vì độ “hot” của Ajax mà quên đi mất tính khả dụng và tôc độ của chương trình bạn nhé!
7. Quản lý những thông tin riêng tư Với Ajax, thật dễ để bạn gửi thông tin lên server mà không cần sự chú ý của người dùng. Nói theo cách khác, quá trình liên lạc giữa máy khách (client) và máy chủ (server) được diễn ra một cách “thầm lặng”. Nhưng sự thật là, không phải người dùng nào cũng muốn gửi thông tin lên server ngay. Bạn hãy lưu tâm đến vấn đề nhạy cảm này! Mặc dù thương mại điện tử tại Việt Nam chỉ mới chập chững những bước đầu tiên, những tổn thất xảy ra là điều không thể tránh khỏi, nhưng chính vì thế bạn càng phải nâng cao tinh thần bảo vệ người dùng. Internet rõ ràng đầy rẫy những cạm bẫy và sự thật thì môi trường này không phải là nơi hoàn hảo để lưu giữ thông tin có tính riêng tư. Nếu bạn định gửi mã số Thẻ tín dụng hoặc mã Bảo mật của thẻ mà không được sự đồng ý của người dùng, rất có thể bạn sẽ phải đói mặt với nhiều rắc rối! Do đó, hãy cho người dùng thấy được lợi ích của việc hoài nghi: Luôn hỏi trước khi gửi dữ liệu!
8. Xây dựng phương án dự phòng Sự sống còn của Ajax phụ thuộc vào tín hiệu kết nối tới server, nhưng người dùng thì không phải lúc nào cũng trực tuyến. Server của bạn có thể bị “chết đứng” bất cứ lúc nào, và người dùng rất có thể đang làm việc với các thông tin được lưu trong bộ đệm trình duyệt từ trước đó! Nếu bạn không thể kết nối đến server khi đang online, thì việc xây dựng một phương án dự phòng là rất cần thiết (một server dự trữ chẳng hạn). Cũng đừng quên việc hỗ trợ các trình duyệt không có JavaScript nữa nhé!
9. Hiển thị thông tin trên các cỗ máy tìm kiếm Cơ chế tìm kiếm của Google dựa trên việc sàng lọc thông tin từ hàng tỉ website theo thông số mà người dùng cung cấp, nhưng ứng dụng Ajax của bạn lại load thông tin lên dựa trên sự tương tác của người dùng mà chẳng cần refresh lại trang - điều này khiến Google sẽ không thể “nhìn” thấy được những thông tin như thế. Vậy nên ghi nhớ kỹ rằng, để thông tin trên website của bạn có thể được các cỗ máy tìm kiếm “mò” tới, bạn cần cung cấp những dữ liệu đặc tả nội dung trang. Làm điều này như thế nào? Không khó! Chỉ cần sử dụng các thẻ<meta> đặt trong phân đoạn của mã trang, các cỗ máy tìm kiếm có thể “đánh dấu” bạn dễ dàng! Và nếu thực sự hứng thú về các thẻ <meta> này, mời bạn ghé qua địa chỉ sau đây để tìm hiểu thêm cặn kẽ:http://www.seocentro.com/tools/search-engines/metatag-analyzer.html
10. Cuối cùng, xin lưu ý đến bộ đệm trình duyệt Một số trình duyệt như Internet Explorer thường lưu lại thông tin về các website đã truy cập trong bộ đệm riêng của nó (thuật ngữ chuyên ngành gọi là “cache”). Điều này đồng nghĩa với việc, nếu ai đó truy cập đến cùng một địa chỉ URL trong một khoảng thời gian giới hạn nào đấy, thông tin hiện lên cho họ có thể chính là những thông tin vừa xem (được lấy ra từ cache). Về nguyên tắc, điều này làm quá trình tải trang nhanh chóng hơn, các thông tin được coi là giống với lần truy cập trước có thể sẽ không cần phải tải về lần nữa, mà chỉ cần lấy từ cache ra và hiển thị lên. Nhưng với các website có ứng dụng Ajax thì đây đúng là một vấn đề lớn! Tại sao lại như vậy? Rất đơn giản, ở Ajax không có tính năng làm mới toàn bộ trang mà chỉ là một vài thành phần trong trang! Do đó, nếu khi bạn đã thay đổi dữ liệu trên trang mà kết quả trả về giống hệt như lúc trước thì không còn nghi ngờ gì nữa, bạn chắc hẳn đã gặp rắc rối rồi! Vậy nên, để hạn chế việc lưu thông tin đệm trong ứng dụng Ajax, bạn có thể đặt nhiều thông số header khác nhau khi gửi trả dữ liệu từ server, như đoạn code PHP dưới đây: header(“Cache-Control”, “no-cache”); header(“Du-lieu-header-tuy-y”, “no-cache”); header(“Expires”, “-1”); Mặc dù vậy, đoạn code trên lại không có tác dụng gì với Internet Explorer do việc lưu thông tin trong cache của IE lại phụ thuộc phần lớn vào địa chỉ trình duyệt. Do đó, có một cách rất hay là luôn thay đổi địa chỉ ứng dụng khi truy vấn đến server. Để làm điều này, bạn chỉ cần khai báo một biến ngẫu nhiên nào đấy (mà server chẳng dùng làm gì) vào phần cuối của địa chỉ, chẳng hạn như: var myUrl = “data.php?name=bcvt” + “&t=” + new Date().getTime(); Một ý tưởng không tồi khi đưa thêm biến “t” vào địa chỉ URL trên, với “t” là thời gian hiện tại tính bằng mili giây. Vì địa chỉ này chắc chắn chưa từng được truy cập, nó sẽ không bị lưu trong bộ đệm cache trước đây và ứng dụng của bạn chắc chắn sẽ chạy “ngon lành”!
B. Lời kết Như bạn thấy đó, việc lập trình Ajax tuy hết sức thú vị những cũng ẩn chứa nhiều “rắc rối nho nhỏ” phải không nào? Nếu không biết cách khắc phục chúng hoặc không để ý lưu tâm, các ứng dụng của bạn rất có thể sẽ hoạt động không được như mong muốn khi thiết kế. Hy vọng qua bài viết, các bạn hiểu được phần nào những “yếu điểm” của Ajax để từ đó tìm tòi hơn, sáng tạo ra những “chiêu thức” khắc phục cho riêng mình.
1. Chuyển host lưu trữ file hoặc ảnh cỡ lớn sang nơi khác Nhiều người cùng online một lúc có thể làm nghẽn đường truyền của bạn với hàng đống yêu cầu xem cùng một tấm hình trên website. Gánh nặng dữ liệu có thể chuyển sang những website chuyên để lưu trữ và chia sẻ ảnh như ImagaShack, Photobucket hay Flickr. Bằng cách này, máy chủ web của bạn chỉ cần đảm bảo phần text và file ảnh cỡ nhỏ, giảm đáng kể băng thông đồng nghĩa với việc phục vụ được nhiều người một lúc hơn. Nếu muốn chia sẻ những file nhỏ, khoảng 2 – 5MB, với khách viếng thăm, bạn có thể sử dụng dịch vụ Google Pages như một máy chủ web phụ. 2. Tối ưu hóa mã CSS Hiện nay, nhiều website bắt đầu sử dụng CSS (Cascade Style Sheet) để định dạng. Mặc dù bảng CSS nhìn bắt mắt và hiệu quả hơn định dạng bảng HTML, nhưng nó đòi hỏi bạn phải tối ưu hóa code của chúng mới mong đạt được tốc độ tối ưu. Đoạn mã CSS “sạch” sẽ giúp trình duyệt giải mã trang web nhanh hơn. Ví dụ: Thay vì viết:
Theo các chuyên gia tối ưu hóa của Yahoo thì các mã CSS nên được đặt ở phần đầu của web. Điều này đặc biệt ý nghĩa nếu trang của bạn lớn và có nhiều đối tượng. Nếu bạn đặt CSS ở cuối hoặc giữa trang web, trình duyệt sẽ dùng định dạng mặc định để hiện thị, sau đó mới tái định dạng bằng CSS. Điều đó đòi hỏi thêm thời gian tính toán và tất nhiên người dùng sẽ khó chịu khi nhìn một website vỡ tung khi chưa định hình.Thậm chí, một số trình duyệt cũng cấm đặt CSS tại cuối website. 3. Tối ưu hóa hình ảnh Có 4 loại định dạng hình ảnh sử dụng phổ biến trên web: PNG, JPG, /JPEG và GIF. Hầu hết các phần mềm xử lý ảnh như Adobe Photoshop đều có tính năng “Save for Web” để tối ưu tỉ lệ giữa chất lượng hình và kích thước file. 4. Khai báo kích thước hình ảnh Nhiều lập trình viên nghiệp dư “quên” khai báo tag chiều cao và rộng của ảnh khi viết mã HTML. Hai thông số này báo với trình duyệt kích thước của ảnh trước khi dữ liệu được tải về. Nếu không được khai báo trước, trình duyệt phải tự tính toán kích thước bằng cách download toàn bộ hình ảnh về, sau đó mới đến lượt các dữ liệu khác. Khi khai báo hình ảnh có đầy đủ các tag, trình duyệt sẽ dành 1 khoảng trống vừa đúng kích thước ảnh và tiếp tục tải dữ liệu. Như vậy, người xem có thể đọc ngay phần văn bản trong khi hình ảnh vẫn tiếp tục được hiện ra từng phần. 5. Giảm thiểu sử dụng Javascript Các hiệu ứng hoạt hình của Java script rất bắt mắt và nhiều người có xu hướng đưa chúng vào website của mình. Tuy nhiên, sử dụng quá nhiều Javascript có thể làm trình duyệt bị treo cứng khiến người dùng bực mình. Phải cân nhắc thật kỹ lưỡng trước khi sử dụng chúng. Vị trí đặt các đoạn mã script cũng khá quan trọng đối với tốc độ hiển thị. Lời khuyên của dân lập trình chuyên nghiệp: chỉ để những script thực sự quan trọng có ảnh hưởng toàn trang lên đầu, còn những hiệu ứng khác (hoạt hình, thống kê,…) thì cho xuống cuối trang. Việc đưa Javascript và CSS ra liên kết bên ngoài tốt hơn là chèn thẳng vào trang web. Những file này sẽ được lưu tại bộ nhớ đệm (cache) của trình duyệt và người dùng sẽ không phải download lại chúng mỗi khi cần đến. Nó giảm đáng kể thời gian và băng thông của máy chủ cũng như người dùng. 6. Tối ưu hóa liên kết Chú ý mỗi đường link được đặt trên website hay blog của bạn được viết một cách ngắn gọn và chính xác. Ví dụ mỗi entry trên 360 Yahoo đều có 1 phần “Permanent Link” để lấy liên kết chính xác và gọn gàng hơn nhiều so với những gì hiển thị trên ô địa chỉ (address bar) của trình duyệt. Việc sử dụng chính xác đường link sẽ giảm bớt những yêu cầu không đáng có đối với máy chủ trong một số trường hợp. 7. Giảm bớt các yêu cầu HTTP tới máy chủ Khi mở website, mỗi đối tượng trên trang (hình ảnh, script, hình vẽ, đường kẻ, …) đều tạo ra 1 yêu cầu tới máy chủ để tải về. Tất nhiên, càng nhiều đối tượng thì việc tải về càng lâu hơn. Vì thế, hãy giảm thiểu số đối tượng trên cùng 1 trang và cố gắng gộp file CSS với các script lại với nhau.
Cách đơn giản để làm website của bạn thành web đa ngôn ngữ
Chỉ cần copy và paste “Translate This Button” vào vị trí bất kì trên website của bạn, hoàn toàn miễn phí và sử dụng đơn giản. Nó hoạt động tốt hầu hết trên mọi website. Translate This Button là JavaScript translation widget có dung lượng khá nhẹ, có thể dịch bất kỳ trang web nào một cách nhanh chóng bằng cách sử dụng ajax và google translate.
MySQL là hệ thống cơ sở dữ liệu quan hệ. Ý nghĩa cơ bản của MySQL là nó có thể lưư trữ thông tin ở những vùng khác nhau và liên kết chúng lại với nhau. Chúng ta có thể chứa bất cứ thứ gì trong một cơ sở dữ liệu. Ví dụ như những thông tin liên quan đến một người: chẳng hạn như first name, last name, address, phone….
MySQL cho phép bạn tạo những thông tin riêng lẻ trên bảng hoặc những khu vực chứa thông tin thích hợp. Trong MySQL mỗi bảng bao gồm những trường dữ liệu (field) riêng lẻ.
Bởi vì MySQL là hệ quản lý dữ liệu quan hệ, nó cho phép chúng ta tạo những bảng thông tin riêng, hoặc những vùng thông tin thích hợp. Trong hệ thống cơ sở dữ liệu không quan hệ, tất cả những thông tin được lưu trữ trong một bảng lớn tạo nên những khó khăn trong việc sắp xếp và chỉ có thể chép dữ liệu mà bạn muốn. Trong SQL, mỗi bảng bao gồm những phần riêng biệt, biễu diễn mỗi thông tin.
Bạn có thể tạo ra cơ sở dựa trên những loại thông tin mà bạn lưu trữ. Những bảng riêng biệt của MySQL liên kết với nhau nơi mà giá trị của vùng phổ biến là như nhau.
Ví dụ: Cho rằng bảng bao gồm tên khách hàng, địa chỉ và số ID, bảng khác bao gồm số ID, nơi ở, ….Vùng chung là số ID, thông tin được lưu trữ trong hai bảng riêng biệt sẽ liên kết với nhau nơi mà số ID là như nhau. Điều này cho chúng ta thông tin về khách hàng cùng lúc.
Khi bạn tạo một bảng ban đầu, bạn cần nói với MySQL server kiểu nào của thông tin sẽ lưu trữ trong mỗi bảng. Các kiểu khác nhau được cho trong bảng sau:
Loại MySQL
Diễn tả
Ví dụ
Char(length)
Mọi ký tự đều có thể là loại này, nhưng có chiều dài cố định
Trạng thái của khách hàng có 2 ký tự
Varchar(length)
Mỗi ký tự đều có thể trong loại này, dữ liệu có thể thay đổi chiều dài từ 0 đến 255 ký tự.
Địa chỉ của khách hàng có chữ và số, thay đổi trong chiều dài
Int(length)
Có chiều dài từ -2147483648 đến 2147483647.
Số sản phẩm trao tay
Int(length)
unsigned
Lưu trữ số từ 0 đến 4294967295.
ID khách hàng
Text
Kích thước dữ liệu là 65536 ký tự.
Cho phép đoạn text dài hơn được lưu trữ, không có loại giới hạn đến 255 ký tự.
Decimal(length, dec)
Có thể lưu trữ số thập phân
Giá cả
Enum(“option1”, “option2”,..
Lưu trữ giá trị chắc chắn như đúng hoặc sai
Giới tính của người dùng nam hoặc nữ
Date
Lưu trữ ngày như yyyy-mm-dd
Ngày sinh nhật,…
Time
Lưu trữ giờ như hh:mm:ss
Giờ một hoạt động mới được đưa vào trang Web
Datetime
Lưu trữ ngày và giờ như yyyy-mm-dd hh:mm:ss
Ngày và giờ sau khi người đến thăm trang Web
Mặc dù những loại trên đáp ứng được nhu cầu cần thiết, một bảng các kiểu cho dưới đây cũng thường gặp.
Loại MySQL
Diễn giải
tinyint(length)
Lưu trữ số nguyên từ -128 đến 127 (thêm tham số unsigned thì cho phép lưu trữ từ 0 đến 255)
smallint(length)
Lưu trữ số nguyên từ -32768 đến 32767 (thêm tham số unsigned thì cho phép lưu trữ từ 0 đến 65535)
loại MySQL
Diễn giải
mediumint(length)
Lưu trữ số từ -8388608 đến 8388607 (thêm tham số unsigned cho phép lưu trữ từ 0 đến 16777215)
bigint(length)
Lưu trữ số từ -9223372036854775808 đến -9223372036854775807 (nếu thêm tham số unsigned cho phép lưu trữ từ 0 đến 184467440709551615)
Tinytext
Cho phép lưu trữ trên 255 ký tự
mediumtext
Cho phép lưu trữ trên 1677215 ký tự
longtext
Cho phép lưu trữ trên 4294967295 ký tự
Blob
Bằng với kiểu text, trừ trường hợp dương khi sắp xếp và so sánh, cho phép lưu trữ trên 65535 ký tự
tinyblob
Bằng với kiểu tinytext, trừ trường hợp dương khi sắp xếp và so sánh
mediumblob
Bằng với kiểu mediumtext, trừ trường hợp dương khi sắp xếp và so sánh
longblob
Bằng với kiểu longtext, trừ trường hợp dương khi sắp xếp và so sánh
Nếu trả lời có như varchar, text, char, tinytext, mediumtext, longtext, blob, tinyblob, mediumblolb, longblob. Sau đó cần quan tâm có bao nhiêu ký tự được lưu trữ? Nó sẽ biến đổi thế nào?
· Có bao nhiêu ký tự được lưu trữ? Thay đổi thế nào?
· 0 đến 255 ký tự, chiều dài thay đổi: sử dụng varchar nếu bạn muốn xóa tất cả những khoảng trắng, giá trị mặc định. Sử dụng longtext nếu bạn thay đổi về chiều dài. Sử dụng blob nếu bạn không giữ về khoảng cách.
· 256->65536 ký tự: Sử dụng text nếu bạn không cần trường hợp dương trong tìm kiếm, sắp xếp, so sánh. Dùng blob nếu cần trường hợp dương.
· 65537->1677215 ký tự: Sử dụng mediumtext nếu bạn không cần trường hợp dương trong tìm kiếm, sắp xếp, so sánh. Dùng mediumblob nếu cần trường hợp dương.
· 1677216->4294967295 ký tự: Sử dụng longtext nếu bạn không cần trường hợp dương trong tìm kiếm, sắp xếp, so sánh. Dùng longblob nếu cần trường hợp dương
Nếu trả lời có thì có lẽ chứa chữ cái và số, nhưng phải một trong số có giới hạn về giá trị enum
Nếu trả lời không, nó bao gồm thời gian, ngày tháng
My SQL server của bạn muốn biết vùng dữ liệu của bạn có rỗng hay không, bạn dùng NULL hoặc NOT NULL. Nếu vùng dữ liệu được định nghĩa là NOT NULL thì người dùng bắt buộc phải nhập dữ liệu vào. Nếu dùng NULL thì vùng dữ liệu sẽ không chứa giá trị gì hết.
MySQl sử dụng INDEXES để giải quyết việc nghiên cứu dòng thông tin. INDEXES làm việc thế nào? Bạn tưởng tượng bạn có một cái phòng đầy ắp, toàn những thứ bạn có được mà chưa bao giờ bạn đụng đến. Bạn muốn tìm lại thông tin gì đó, bạn phải mất khá nhiều thời gian để làm việc này. Bạn cảm thấy khó chịu và bạn bắt đầu sắp xếp chúng, tổ chức lại chúng.
Bạn thử tưởng tượng lượng thông tin được lưu trữ trong bảng, vào thời gian nào đó bạn cần tìm vài thứ, bạn bắt đầu tìm tất cả những dòng, bạn sẽ làm gì nếu có 10000 dòng? Chuyện gì sẽ xảy ra?
Bằng cách sử dụng hệ thống chọn lọc bên trong, MySQl sẽ giúp bạn tìm nhanh chóng và chính xác, nó làm được điều này nhờ sử dụng INDEXES, cũng được biết như một khóa.
MySQL yêu cầu INDEX trong mỗi bảng, vì thế có vài thứ được đến. Thông thường, bạn sử dụng khóa chính, hoặc tạo ra sự duy nhất để giữ dữ liệu riêng lẻ. Trường này phải “not null” và “unique”
Bạn có thể làm những chí định khác khi tạo cơ sở dữ liệu, nhưng tốt hơn cho người sử dụng. Để biết thêm về danh sách những tham số, bạn có thể tham khảo thêm :www.mysql.com
Bạn đã sử dụng print_r(), nhưng bạn cũng đã sử dụng print() để trình bày đoạn text hoặc giá trị biến trong trang web của bạn. Sự khác nhau giữa echo() và printf() là khi bạn sử dụng print(), một giá trị 0 hoặc 1 sẽ được trả lại cho sự thành công hay thất bại của lệnh print(). Trong trường hợp này, bạn cũng có thể nói mọi thứ không in ra khi sử dụng lệnh print(). Trong khi echo() chỉ đưa ra những gì không có mà bạn biết là không có hoặc nó làm việc không chính xác.