Buffer là gì

Gần đây em hay gặp thuật ngữ buffer được sử dụng rất nhiều trong các tài liệu hướn dẫn trên mạng nhưng không hiểu rõ chính xác thì buffer là gì và buffer có vai trò như thế nào trong lập trình và tại sao phải sử dụng buffer?

khác nhau giữa "event.preventDefault()" và "return false"

Khi viết hàm callback cho một sự kiện nào đó như click vào một button để ngăn trình duyệt không xử lý sự kiện click theo như mặc định thì cả hai cách viết như ở dưới đây đều đưa về kết quả như nhau:

Cách 1: Sử dụng event.preventDefault().

$("button").click(function (event) {
    // code ...
    event.preventDefault()
});

Cách 2: Sử dụng return false;.

$("button").click(function () {
    // code ...
    return false;
});

Ngoài việc khi sử dụng return false thì không cần phải quan tâm tới tham số truyền vào là event thì giữa event.preventDefaul() và return false còn có điểm nào khác nhau?

Em có một trang được viết sử dụng Node.js và Express, trong đó em cần phải xác thực người dùng khi họ truy cập vào trang /dashboard.

Đoạn code để xử lý việc xác thực này như sau:

var auth = require('auth');
app.get('/dashboard', function (req, res) {
        var user = auth.check();
        if (!user) {
                res.send('Unauthorized');
        }   
        res.send('Welcome ' + user.username);
});

Khi lauch ứng dụng trên máy local và truy cập vào trang dashboard thì em thấy Node.js văng ra lỗi này:

Error: Can't set headers after they are sent.
    at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:335:11)
    at ServerResponse.header (/home/trananh/tmp/myapp/node_modules/express/lib/response.js:719:10)
    at ServerResponse.contentType (/home/trananh/tmp/myapp/node_modules/express/lib/response.js:552:15)
    at ServerResponse.send (/home/trananh/tmp/myapp/node_modules/express/lib/response.js:139:14)
    at /home/trananh/tmp/myapp/app.js:49:6
    at Layer.handle [as handle_request] (/home/trananh/tmp/myapp/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/trananh/tmp/myapp/node_modules/express/lib/router/route.js:131:13)
    at Route.dispatch (/home/trananh/tmp/myapp/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/home/trananh/tmp/myapp/node_modules/express/lib/router/layer.js:95:5)
    at /home/trananh/tmp/myapp/node_modules/express/lib/router/index.js:277:22

Ứng dụng thì vẫn chạy bình thường nhưng em không hiểu tại sao lại có thông báo lỗi như ở trên?

[Help] Lỗi You don't have permission to access / on this server

Em đang viết một trang web sử dụng PHP và sử dụng Apache. Khi mình đăng nhập xong và truy cập vào trang thông tin cá nhân thì thấy màn hình trống hiện ra với thông báo lỗi

  • Forbidden You don't have permission to access / on this server*

Vào thư mục /var/logs/apache2/ và xem tất cả các tập tin log thì cũng chỉ thấy dòng thông báo trên mà không có thêm chi tiết nào khác được cung cấp.

Có bác nào biết cách fix lỗi này không chỉ em với?

MySQL thay đổi kiểu dữ liệu của cột trên bảng

Em có một cơ sở dữ liệu MySQL với một bảng tên là oc_products và trên bảng oc_products này đang dùng một cột có tên là price với dữ liệu là INT(11) để lưu giá của sản phẩm. Bây giờ em muốn chuyển về kiểu dữ liệu VARCHAR(255) thì phải làm thế nào?

Nên đặt thẻ <script> ở đâu trong HTML

Khi học về cách nhúng mã JavaScript từ tập tin bên ngoài vào trang HTML thì em thấy nhiều tài liệu hướng dẫn nên đặt thẻ <script> để tham chiếu tới file bên ngoài này ở cuối trang (trước thẻ <body>). Điều này giúp đảm bảo trang HTML được tải về mà không bị block bởi việc tải tập tin JavaScript.

Tuy nhiên ở một số tài liệu lại để một số thẻ <script> như khi muốn nhúng thư viện jQuery ở bên trong thẻ <head>.

Như vậy thì nên đặt thẻ <script> tham chiếu tới tập tin khác ở đâu trong trang HTML vậy các bác?

C#: Kích Thước Của Mảng - Array Length

Trong C#, để lấy ra kích thước của một mảng chúng ta sử dụng method Length():

myArray.Length

Ví dụ:

using System; 
namespace codehub { 

class TestArrayLength {
    public static void Main() 
    {
        string[] days; 
        days = new string[] {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
        Console.Write(days.Length);
    }
}

Đoạn code trên sẽ in ra kết quả cho kích thước của mảng days là 7.

XAMPP - Port 80 in use by "unable to open process" with pid 4!

Em đang chạy website viết bằng PHP và MySQL sử dụng XAMPP trên hệ điều hành Windows. Trước đó thì em vẫn khởi động XAMPP được và chạy website bình thường
. Nhưng hôm nay không hiểu sao sau khi bấm vào nút Start để khởi động Apache thì bị lỗi này:

10:01:33 PM [Apache] Problem detected!
10:01:33 PM [Apache] Port 80 in use by "Unable to open process" with PID 4!
...

Em có thử gỡ XAMPP và cài lại nhưng vẫn bị lỗi. Trước đấy em chưa từng gặp lỗi này và cũng không cài thêm phần mềm nào mới vào máy.

Xin nhờ các bác hướng dẫn em giúp khắc phục lỗi này với ạ.

Many thanks!

PHP: Chuyển tiếp người dùng sang trang khác

Trong PHP làm cách nào để khi người dùng truy cập vào một địa chỉ URL thì ngay lập tức sẽ được chuyển tiếp một địa chỉ URL khác mà không hiển thị bất cứ nội dung nào trên trang đó?

Ví dụ như khi người dùng truy cập trang cá nhân của người dùng khác thì mà người dùng này chưa đăng nhập thì sẽ được chuyển sang trang đăng nhập?

Server và Hosting khác nhau như thế nào?

Đọc xong bài viết giải thích về web server là gì thì em cũng đã được web server với server khác nhau như thế nào rồi nhưng giờ lại thấy nhiều sách dùng thuật ngữ là hosting thay cho server. Ví dụ như họ viết web hosting thay vì web server.

Một số lại chỉ viết web host hay host thôi bỏ đuôi ing đằng sau đi. Tóm lại là 1 thuật ngữ server thôi mà lại thấy có nhiều cách gọi khác nhau nên không biết chúng đều là một hay có sự khác nhau nào ở đây không vậy các bác?

Hai thẻ <strong> và <b> khác nhau như thế nào

Khi đọc mã lênh HTML của một số tài liệu thì mình thấy họ hướng dẫn sử dụng thẻ <strong> để đánh dấu văn bản in đậm:

<strong>Chữ In Đậm</strong>

Nhưng một số tài liệu khác lại sử dụng thẻ <b>:

<b>Chữ In Đậm</b>

Khi kiểm tra cách dùng của cả hai loại thẻ <strong> và <b> trên các trình duyệt khác nhau thì mình không thấy có sự khác biệt nào.

Như vậy thì hai thẻ <strong> và <b> khác nhau ở chỗ nào?

HTML5 Ra Đời Năm Nào

Câu hỏi được đưa ra trong buổi phỏng vấn cho ứng viên: Phiên bản mới nhất của HTML tới thời điểm này là HTML5 được chính thức cho ra đời năm nào? Hãy cho biết câu trả lời của bạn cho câu hỏi này.

Facebook được viết bằng ngôn ngữ gì

Câu hỏi này không liên quan tới lập trình nhiều nhưng em vẫn đang tò mò không biết trang Facebook được viết bằng ngôn ngữ lập trình nào? Em từng đọc ở đâu đó nói rằng Facebook được viết bằng PHP nhưng khi nói chuyện thì có một số lại khẳng định rằng PHP chỉ là ngôn ngữ dùng để viết tầng frontend của Facebook?

Có nhiều cách khác nhau để kiểm tra tốc dộ đường truyền internet bạn đang sử dụng. Một trong những cách nhanh chóng, đơn giản cũng như rất đáng tin cậy đó là sử dụng Speedtest. Trong bài viết này chúng ta sẽ tìm hiểu cách sử dụng công cụ này để kiểm tra tốc độ internet (kết nối thông qua wifi hoặc dây cáp) mà bạn đang sử dụng.

Bước 1: Đảm Bảo Bạn Kết Nối Tới Internet Của Bạn Đang Hoạt Động

Bạn cần chắc chắn rằng đường tryền internet của bạn không gặp phải sự cố khi kiểm tra. Cách đơn giản là truy cập trang chủ Google và nếu như bạn thấy hộp tìm kiếm xuất hiện thì có nghĩa là internet của bạn đang hoạt động.

Bước 2: Kiểm Tra Tốc Độ Đường Truyền Internet

Truy cập trang chủ Speedtest.net và click vào chữ Go.

Đợi khoảng 1 phút để trang web trả về kết quả cho tốc độ upload (tải lên) và tốc độ download (tải xuống) của đường truyền internet bạn đang sử dụng.

Kết quả trả về của tôi như sau:

Bước 3: Tốc Độ Đường Truyền Internet Như Thế Nào Là Nhanh

Thông thường thì tốc độ upload và download của bạn sẽ gần tương đương nhau, tốc độ tải lên nhanh thì tốc độ tải xuống cũng sẽ nhanh và ngược lại tốc độ tải lên chậm thì tốc độ tải xuống cũng thường sẽ chậm. Tuy nhiên tốc độ tải lên (tải xuống) của đường truyển internet như thế nào thì được coi là nhanh và như thế nào thì được coi là chậm.

Mỗi quốc gia khác nhau có tốc độ đường truyển internet trung bình khác nhau. Ví dụ tốc độ trung bình của các đường truyền internet tại Mỹ là tử 50 Mb/s cho tới 150 Mb/s (50 Megabit trên giây). Ở Việt Nam tốc độ trung bình của các đường truyền internet là tử 3.5 Mb/s cho tới 25.5 Mb/s.

Đơn vị Mb/s (Megabit trên giây) còn được viết tắt theo cách khác là Mbps (Megabit per second).

Lưu ý: Đơn vị Mb/s khác với đơn vị MB/s (hay Megabyte trên giây, in hoa chữ B). Tuy nhiên hai đơn vị này có thể chuyển đổi qua lại trong đó 1 byte = 8 bit hay cũng tương tự 1Mb = 8Mb.

Như vậy nếu tốc độ tải lên (tải xuống) của đường truyền internet mà bạn đang sử dụng là 50 Mb/s thì có nghĩa là khá cao ở Việt Nam tuy nhiên lại là khá thấp ở Mỹ.

Một thông tin bổ sung thêm cho bạn đó là tốc độ truyền dữ liệu của USB 2.0 tối đa là 480 Mb/s hay tương đương với 60 MB/s (460/8 = 60).

jQuery - Upload file sử dụng AJAX

Em đang code tính năng upload file ảnh sử dụng AJAX trong đó ở trang thông tin người dùng có một form cho phép người dùng có thể cập nhật ảnh avatar của mình như sau:

<form method="POST" action="/users/update_avatar" enctype="multipart/form-data">
    <div>
        <label for="avatar">Chọn file ảnh:</label>
        <input type="file" id="avatar" name="avatar"/>
    </div>
    <div>
        <button>Cập nhật avatar</button>
    </div>
</form>

Toàn bộ quá trình cập nhật avatar sẽ được thực hiện hoàn toàn bằng AJAX để giúp người dùng không phải tải lại trang. Em đang bị vướng ở khúc gán dữ liệu vào form. Đối với input thuộc kiểu
văn bản thì việc này đơn giản. Tuy nhiên ở form trên dữ liệu cần gán lại lấy từ file ảnh. Mọi người cho em hỏi có cách nào để thực hiện việc gán dữ liệu này thông qua jQuery hay không?

javascript:void(0) là gì?

Thuộc tính href của link liên kết thỉnh thoảng được đặt với giá trị là javascript:void(0). Mọi người cho mình hỏi giá trị này là của HTML hay JavaScript. Nếu là của JavaScript thì nó là hàm nào?