Lần trước mình đã cùng tìm hiểu về cách tạo user, database và phân quyền cho MySQL/MariaDB rồi. Hôm nay vẫn là chủ đề cũ nhưng với một DB khác cũng cực kì phổ biến là PostgreSQL nhé.
Phần trước ở đây nếu bạn cần nhé.
Tạo user, DB và phân quyền cho MySQL/MariaDB, tất cả những gì bạn cần biết
Tạo user
User trong Postgres được gọi là ROLE. Có 2 loại role là login role và non-login role. Nghe t...
Nghe có vẻ đây là một chủ đề đơn giản, nhưng nếu đây lần đầu bạn tìm hiểu vấn đề này thì cũng không dễ lắm đâu nhé. Hệ thống user và phân quyền của MySQL cũng không mấy phức tạp đâu, chỉ mất một chút thời gian làm quen thôi. Mình cùng bắt đầu nào.
Tạo user
Để tạo user với MySQL chúng ta dùng query CREATE USER. Bạn có thể thêm IF NOT EXISTS để query không lỗi nếu user đã tồn tại sẵn.
Ví dụ mì...
Work from home nên mình chăm shopping online hơn hẳn. Hôm trước mình có canh flash sale trên một trang web nọ. Đợi từng giây để vào mua, thế mà khi đồng hồ đếm ngược về đến 0s ấn vào nút mua ngay thì đã không còn cái nào rồi. Xem lại thì hóa ra đồng hồ máy mình không hiểu sao chậm mấy phút, đồng hồ đếm ngược kia hóa ra chỉ là một cú lừa 😥.
Nghĩ lại thì hồi mới làm tính năng này lần đầu mình cũ...
Deploy và chạy ứng dụng trong docker container giờ cũng không còn là chuyện gì xa lạ nữa rồi. Hướng dẫn cũng có ở khắp mọi nơi. Nhưng khi nhúng tay vào làm mới biết mọi thứ không đơn giản chỉ là copy code và cài PHP. Nhất là cả những vấn đề mà bạn không thể nhận ra nếu bạn chỉ dừng ở bước build image mà chưa deploy và chạy nó trên production. Bài này mình sẽ tổng hợp những thứ mình biết sau nhữ...
Những Git repo khổng lồ với kích thước lên đến vài GB hay vài chục GB cũng không phải là chuyện hiếm gặp. Nhất là với những dự án có nhiều file binary lớn như video game chẳng hạn. Bạn sẽ có vài chục GB asset và mỗi commit có thể dễ dàng lên đến vài chục MB. Hoặc có thể đó là một monorepo với vài chục dự án và vài trăm thư viện dùng chung.
Ví dụ như cái này https://github.com/chromium/chromium...
Hãy đối mặt với một sự thật. Dù code của bạn có ngon đến đâu, kiến trúc hệ thống xịn thế nào thì cũng sẽ đến lúc hệ thống của bạn gặp sự cố (incident). Sự cố có thể đến từ code của bạn, code không phải của bạn, do sự cố từ nhà cung cấp dịch vụ. Việc nhắm đến 100% uptime giờ đây không còn là một mục tiêu ý nghĩa mà mọi người hướng đến mà thay vào đó giả định rằng incident sẽ xảy đến vào một ngày...
Với developer thì Git hẳn là công cụ rất quen thuộc và không thể thiếu rồi. Thế nhưng có mấy ai thực sự hiểu được Git. Từ khi mới ra đời thì độ phức tạp của nó đã ở một level hơn hẳn các công cụ quản lý source code khác.
Vậy nên mọi người đã cố gắng tạo ra những workflow với Git, để mọi người có thể dễ dàng làm theo mà không cần hiểu quá rõ về Git. Một vài workflow phổ biến có thể kể đến như G...
Dưới đây là vài sai lầm mà mình đã gặp khi code với Laravel trong dự án vừa rồi, viết lại ra đây để cho khỏi quên mất 🙄.
Dùng hasOne để lấy bản ghi đầu tiên/cuối cùng của relation hasMany
Ví dụ trong dự án mình có 2 model Series và Episode với quan hệ hasMany kiểu như này.
Và mình có yêu cầu tìm tất cả tập mới nhất của một series. Đây cũng là một vấn đề khá phổ biến. Trên stackoverflow có hẳ...
Chiếc MacBook Pro của mình vừa mới hỏng xong 🙁. Đây là chiếc laptop hỏng nhanh nhất mình từng có, mình mới dùng chưa được 1 năm 😭. Ừ thì đem sửa hay mua cái mới cũng được, nhưng mà giá nó đắt ghê 😭. Mình cũng chán laptop của Apple rồi. Mấy năm gần đây apple cũng k còn quan tâm đến trải nghiệm của developer trên MacBook nữa. Nhưng thà mỗi năm làm con mới giống hệt như cũ với cấu hình cao hơn thì...
Với những bạn đã có thực hiện dự án với Vuejs thì chúng ta đều biết một cách để truyền dữ liệu từ component cha xuống component con chính là sử dụng prop (prop này thì ở bên React cũng tương tự
). Tuy nhiên, trong trường hợp mà các component con được lồng nhau nhiều lớp thì bạn phải truyền prop đến từng component trung gian để nó đến được với component mà mình mong muốn. Điều này thật ...
Sau mấy bài viết về Nginx, Proxy server thì chúng ta vẫn còn rất nhiều việc cần làm để bước đầu đi tìm hiểu về server hơn nữa. Hôm nay mình lại viết một bài để bổ sung thông tin về Reverse proxy server. Chúng ta hãy cùng nhau tìm hiểu về nó nữa nhé

Reverse proxy server là gì?
Reverse proxy là một loại proxy server trung gian giữa một máy chủ và các client gửi tới các yêu cầu. ...
Tiếp nối ở bài trước , hôm nay mình sẽ tiếp tục giới thiệu qua với các bạn một số vấn đề của việc sử dụng Nuxt.js. Ở phần này, mình sẽ nói chi tiết về lấy dữ liệu bất đồng bộ trong Nuxt.
Ở hình trên, chúng ta đã thấy cách mà Nuxt xử lý các request và đưa ra phản hồi như thế nào. Ta hãy chú ý vào các hook sau liên quan đến vấn đề lấy dữ liệu bất đồng bộ.
- nuxtServerInit: Được sử dụng để lấy d...
Cũng khá là lâu rồi mình không đọc thêm về Vue do toàn làm React
. Nhưng rồi thời tới không cản nổi, giờ mình lại mày mò đọc về Vue để làm dự án mới về nó rồi. Một số bài viết trước mình cũng có nói đến cơ bản về Vue và ở bài này mình lượt qua một lượt các kiến thức về Nuxt. Bài viết sẽ ở dạng tổng quan về Nuxt và mong là mình sẽ không viết quá dài
.
Nuxt is a progressive framewo...
Sau một loạy bài về Nginx, mình đọc được khá nhiều lần về Proxy, Reverse Proxy, Proxy server. Và để đi giải thích cho những thuật ngữ đấy là gì thì hôm nay mình sẽ viết về Proxy server. Bước vào con đường với nhiều thức cần tìm hiểu làm mình cũng có tí hứng thú cũng như tò mò hơn
Chúng ta bắt đầu thôi nào (đây là bài cuối cùng của mình trong chuỗi sự kiện Viblo May Fest, sau đấy thì chưa ...
Tiếp nối phần trước , chúng ta đã điểm qua một số context trong cấu hình Nginx như là main, events, http, server, location. Và để tiếp nối ti tỉ thứ cần biết về Nginx thì ở bài viết này, mình sẽ tiếp tục đề cập đến một số context khác của Nginx
. Chúng ta bắt đầu tiếp nhé.
Upstream context Upstream context được sử dụng để định nghĩa và cấu hình upstream server. Context này xác định một n...
Ở phần trước, chúng ta đã cơ bản có thể tự mình cấu hình Nginx có thể hoạt động. Ở bài viết này, ta sẽ đi chi tiết hơn về từng phần trong tệp cấu hình để có thể tự do tùy chỉnh theo nhu cầu và các chức năng của ứng dụng của bản thân. Bài viết sẽ giúp bạn làm quen với các tham số và quy ước cơ bản trong Nginx.
Hiểu hơn về context trong cấu hình Nginx Hãy bắt đầu bằng việc xem tệp cấu hình mặc đ...
Ở bài trước mình có giới thiệu về Nginx. Nội dung bài viết hoàn toàn là lý thuyết để bản thân có cái nhìn tổng quan về việc Nginx có gì và làm được những gì. Vì vậy, hôm nay mình sẽ đi tìm hiểu cách cấu hình Nginx cho dự án của bạn. Mong rằng bài viết sẽ có ích đối với bạn.
Cài đặt Việc cài đặt Nginx từ nguồn cung cấp bao gồm các mô-đun của bên thứ ba giúp cho Nginx mạnh mẽ hơn nhiều. Nó cho p...
Đợt vừa rồi do yêu cầu dự án nên mình được ngồi cài lại đống server. Cũng có mấy thứ như php, composer, yarn ... thì cũng coi như là quen thuộc mà bản thân đã biết. Nhưng đến lúc bảo cài Nginx, rồi cấu hình cho nó thì mình chịu, có nước đi copy lại cấu hình từ server cũ cho nó chạy với nhờ người xem hộ
. Để tương lai không còn ngớ ngẩn với mấy chuyện cấu hình server thì hôm nay mình sẽ vi...
Trải qua những ngày tháng cặm cụi đọc về Functional Programming thì mình cũng may mắn hiểu được một phần nó về ý tưởng của nó. Mục đích mình đi tìm hiểu về lý thuyết functional là để giải thích cách viết của lodash/fp. Và đây có vẻ sẽ là bài viết cuối cùng trong chuỗi những bài viết về functional programming trong JS của mình. Mong rằng, mọi người đã có những thời gian tuyệt vời khi đọc các bài...
Tiếp nối câu chuyện tìm hiểu Functional Programming trong Javascript ở phần 1 thì tất nhiên hôm nay sẽ là phần 2 của chủ đề trên. Cũng không cần mở đầu dài dòng như lần trước. Chúng ta bắt đầu tiếp với những khái niệm còn lại.
Các khái niệm Referential transparency Giả sử chúng ta có một hàm tính diện tích của hình vuông như sau: Nếu ta truyền giá trị n = 2 vào hàm trên thì kết quả nhận được l...
