

Thuộc tính display CSS chắc hẳn không còn xa lạ gì với các bạn lập trình viên Frontend, nó đóng vai trò nền tảng cơ bản khi khai báo một phần tử và xây dựng bố cục trên trang Web. Tuy nhiên không ít bạn vẫn còn nhầm lẫn hoặc không hiểu hết được các giá trị mà thuộc tính display CSS cung cấp. Để giải quyết vấn đề trên, bài viết này chúng ta sẽ cùng nhau tìm hiểu khái niệm Display CSS là gì và cách khai báo, sử dụng thuộc tính này trong CSS nhé. Display CSS là gì? CSS (Cascading Style Sheets) là thành phần đóng vai trò quan trọng trong việc định dạng và trình bày giao diện của trang Web. Trong CSS, thuộc tính Display mang ý nghĩa quy định cách mà một phần tử HTML hiển thị lên trang, từ đó ảnh hưởng đến việc tương tác với các phần tử khác trong layout chung. Đây là thuộc tính quan trọng nhất [...]
Read more →
Bài viết được sự cho phép của tác giả Sơn Dương JavaScript là một ngôn ngữ lập trình phổ biến và mạnh mẽ, với nhiều tính năng nâng cao giúp lập trình viên giải quyết các vấn đề phức tạp trong quá trình phát triển ứng dụng. Những khái niệm như Proxy, Symbol, Generator, WeakMaps, và Currying có thể không xuất hiện thường xuyên trong các dự án cơ bản, nhưng chúng mang lại nhiều lợi ích trong việc tối ưu hóa hiệu suất, bảo mật và tính linh hoạt của mã nguồn. Dưới đây là những khái niệm quan trọng mà mọi lập trình viên JavaScript cần hiểu rõ. 1. Proxy: Công Cụ Theo Dõi và Kiểm Soát Tính Năng Proxy là gì? Proxy trong JavaScript cho phép bạn tạo ra một đối tượng đại diện cho một đối tượng khác, từ đó có thể kiểm soát các thao tác như truy cập, thiết lập hoặc xóa thuộc [...]
Read more →
Hello anh em. Bài này mình sẽ note lại những phương pháp moi móc thông tin của BA mà mình biết và đã từng áp dụng. Đa phần là các phương pháp từ BABOK v3.0, bên cạnh một số dự án mình làm, và một số khác thỉnh giáo từ các bậc tiền bối 😎 Ô kê, đầu tiên là cái hình dưới đây. [caption id="attachment_65893" align="aligncenter" width="768"] 11 phương pháp moi móc thông tin phổ biến của BA[/caption] Sơ bộ thì Elicitation là việc moi móc yêu cầu/ moi móc thông tin từ khách hàng. Có “n” cách để làm việc này. Tuy nhiên, 11 cách sau đây là những cách thường được Business Analyst chúng ta dùng nhiều nhất. 1. MEETING Đầu tiên là phương pháp cực kỳ phổ biến. Có lẽ được dùng đến 96,69% trong các dự án. Thường thì meeting sẽ được chia thành 4 loại như sau: 1.1. Interview Phỏng vấn 1-1 hoặc phỏng vấn theo nhóm. Nói phỏng vấn vậy cho pho mồ chứ thực ra cũ [...]
Read more →
Bài viết được sự cho phép của tác giả Nguyễn Hoàng Phú Thịnh Hế lôôôô anh em, Bài viết này mình sẽ hệ thống lại rõ hơn công việc của BA theo trình tự thời gian làm dự án. Từ đó anh em sẽ có cái nhìn rõ ràng hơn về công việc của BA. Quy trình làm dự án Đầu tiên sẽ là quy trình tổng quan như sau. [caption id="attachment_65803" align="aligncenter" width="676"] Quy trình làm dự án[/caption] Như anh em thấy quy trình làm phần mềm nó gồm 6 bước: Analysis: phân tích xem mình sẽ làm những gì Design: mình sẽ thiết kế phần mềm như thế nào Develop: mình sẽ code ra sao Test: phần mềm được đem đi test Deploy: phần mềm được đưa vào sử dụng Maintain: giai đoạn bảo trì, hỗ trợ khách hàng sử dụng phần mềm. Quy trình dự án về cơ bản gồm 6 bước trên, nhưng thực tế nó sẽ linh hoạt theo từng phương pháp quản lý dự án (project [...]
Read more →
Bài viết được sự cho phép của tác giả Nguyễn Hoàng Phú Thịnh Hế lôôô anh em, bài này mình sẽ đi tiếp quy trình làm dự án phần mềm và công việc của BA trong đó. Ở phần trước mình đã note lại giai đoạn đầu tiên là Analysis, gồm 6 bước nhỏ: Project Definition >> Elicitation >> Analysis >> Documentation >> Verification >> Management. [caption id="attachment_65800" align="aligncenter" width="1696"] Recall lại 6 bước nhỏ trong giai đoạn Analysis ở bài trước[/caption] Hi vọng anh em sẽ không cảm thấy khó hiểu khi đọc đến đây. Sau bước Analysis này chúng ta đã có tài liệu mô tả yêu cầu, tức là đã biết được khách hàng cần gì. Giờ BA và team dự án sẽ đi vào giai đoạn thiết kế hệ thống sao cho đáp ứng những yêu cầu này nhé anh em 😎 2. Design Ở bước này, tùy level, trách nhiệm, và loại dự án, mà BA sẽ tham gia vào ít hoặc nhiều. Thực tế xảy ra là: hiếm khi BA ghi nhận các được yêu [...]
Read more →
Các giải thuật sắp xếp kinh điển như Bubble Sort, Insertion Sort, Selection Sort hay Quick Sort hẳn không còn xa lạ gì đối với các lập trình viên. Tuy nhiên thực tế trong nhiều bài toán, việc cải tiến các giải thuật trên để áp dụng cho chương trình một cách phù hợp với từng đặc thù dữ liệu tạo ra các giải thuật mới thú vị, Shell Sort là một ví dụ như vậy. Bài viết hôm nay chúng ta cùng nhau tìm hiểu về giải thuật Shell Sort và cách triển khai bằng ngôn ngữ lập trình Python nhé. Giải thuật Shell Sort Shell Sort là một giải thuật sắp xếp được cải tiến từ giải thuật sắp xếp chèn (Insertion Sort), mang lại hiệu quả sắp xếp tốt hơn trong nhiều trường hợp của bài toán thực tế. Ý tưởng chính của thuật toán này là việc khi sử dụng Insertion Sort trong nhiều trườ [...]
Read more →
Ô kieee xin chàoooo anh em. Đây là tập 2 của chuỗi bài note: Những kỹ năng cần có của người làm Business Analyst 😎 Nếu chưa đọc tập 1 thì click ngay đừng ngại. Review nội dung trước đó cho anh em đỡ quên: TỔNG QUAN 1. ANALYTICAL THINKING 1.1. Conceptual & Visual Thinking 1.2. Creative & Innovative 1.3. Problem Solving … 1.4. Decision Making Mình từng gặp một trường rất trớ trêu: dự án đã đóng rồi, hợp đồng thì cũng đã thanh lý, nhưng mình cứ bị kẹt vô thế nửa nạc nửa mỡ. Số là dự án đã qua 3 tháng bảo hành và đã đóng hoàn toàn dựa trên hợp đồng. Nhưng khách hàng thì cứ ỡm ờ. Lúc thì nói muốn ký gói bảo hành một năm, lúc thì không thấy đá động phản hồi gì hết. Mà oải cái là anh chàng Contact Point bên khách hàng cứ lâu lâu nhắn mình, nhờ support cái này, cái kia. Về lý, team mình không việc gì phải tiếp tục support. Nếu muốn support, khách hàng phải ký hợp đồ [...]
Read more →
Bài viết được sự cho phép của tác giả Nguyễn Hoàng Phú Thịnh Thời gian qua có nhiều anh em hỏi mình về ngành MIS. Và đặc biệt là câu hỏi: sau này ra trường, làm BA thì cần có những kỹ năng – kiến thức chuyên ngành như thế nào??? … Do đó, như lời giới thiệu ở trên, chuỗi bài này mình sẽ note về chủ đề: những kỹ năng cần có của một người làm công việc Business Analyst. Là một bài khá fundamental, nhưng cũng là dịp để bản thân mình dòm lại: thật sự BA cần có những kỹ năng nào, và liệu mình đã có đủ hết những kỹ năng đó hay chưa. Bắt đầu thôi nào! Tổng quan một chút Trong bất kỳ ngành nghề nào, chúng ta đều cần tới: Kiến thức và kỹ năng cần có của ngành nghề, công việc đó. Business Analyst cũng vậy, sẽ có: Nhóm các Kiến thức chuyên môn – Knowledge Areas (có thể [...]
Read more →
Bài viết được sự cho phép của tác giả Nguyễn Thành Nam GitHub không chỉ là nơi để chia sẻ mã nguồn mà còn là một kho tàng tài nguyên quý giá cho lập trình viên muốn nâng cao kỹ năng của mình. Từ các dự án mã nguồn mở cho đến tài liệu học tập chuyên sâu, GitHub cung cấp một nền tảng tuyệt vời để bạn cải thiện khả năng lập trình và tiếp cận những kiến thức mới. Trong bài viết này, chúng ta sẽ khám phá một số repositories nổi bật mà bạn có thể tham khảo để phát triển kỹ năng lập trình. 1. FreeCodeCamp FreeCodeCamp là một nền tảng học lập trình nổi tiếng, và repository của nó là một trong những nguồn tài liệu học tập phong phú nhất trên GitHub. Với hơn 40,000 giờ học miễn phí và hàng loạt bài tập thực hành từ cơ bản đến nâng cao, FreeCodeCamp giúp [...]
Read more →
Bài viết được sự cho phép của tác giả Nguyễn Thành Nam Trong thế giới ngày nay của phát triển web, việc lựa chọn mô hình rendering là một quyết định quan trọng đối với nhà phát triển. Bốn khái niệm quan trọng này bao gồm Client-Side Rendering (CSR), Server-Side Rendering (SSR), Static Site Generation (SSG), và Incremental Static Regeneration (ISR). Mỗi khái niệm đều mang lại những ưu và nhược điểm riêng, và việc hiểu rõ về chúng giúp đưa ra quyết định đúng đắn trong quá trình phát triển ứng dụng web. I. Các mô hình rendering 1. Client-Side Rendering (CSR) Client-Side Rendering là một mô hình phát triển web mà trong đó đoạn code HTML được render trực tiếp trên trình duyệt của người dùng bằng JavaScript. Phương pháp này tăng cường tương tác và giảm tải cho máy chủ, vì máy chủ chủ yếu phục vụ dữ liệu gốc. Trong đó, trình duyệt web sẽ ban đầu tải một tệp HTML trống. Sau đó, JavaScript và các [...]
Read more →
Trong kỷ nguyên số hóa, bản đồ không chỉ đơn thuần là công cụ chỉ đường mà còn là một phần quan trọng trong việc phát triển các sản phẩm công nghệ. Nền tảng bản đồ cung cấp nhiều chức năng quan trọng như dẫn đường, tìm kiếm địa điểm, và tạo ra trải nghiệm người dùng tốt hơn. Bài viết này sẽ thảo luận về việc sử dụng nền tảng bản đồ, các thành phần chính của nó, và cách tiết kiệm chi phí khi sử dụng dịch vụ bản đồ. Tại sao sử dụng bản đồ? Chức năng điều hướng và dẫn đường: Bản đồ giúp người dùng tìm đường và di chuyển từ điểm A đến điểm B một cách hiệu quả. Tìm kiếm địa điểm và danh lam thắng cảnh: Người dùng có thể tìm kiếm các địa điểm quan trọng như nhà hàng, khách sạn, và các danh lam thắng cảnh. Giao diện người dù [...]
Read more →
Trong bối cảnh thế giới ngày càng chú trọng đến sự bền vững và giảm thiểu tác động môi trường, các yếu tố chất lượng của kiến trúc phần mềm cũng đang dần thay đổi để thích ứng với yêu cầu này. Bài viết này sẽ trình bày chi tiết về tính bền vững như một yếu tố chất lượng mới trong kiến trúc phần mềm và những bước cần thiết để đạt được điều này. Các thuộc tính chất lượng Các yêu cầu không chức năng (non-functional requirements) là các tiêu chí quan trọng để đánh giá mức độ hoàn thiện của một hệ thống phần mềm. Chúng bao gồm hơn 80 thuộc tính đáng chú ý như tính sẵn sàng, độ tin cậy, khả năng mở rộng, bảo mật và bảo trì. Dưới đây là một số bộ thuộc tính chất lượng chính: Bảo mật (Security): Bảo mật thông tin, tính toàn [...]
Read more →
Bài viết được sự cho phép của tác giả Duy Phan Mình sẽ sử dụng lại ví dụ Booking Service Online trong phần trước đó Ở đây mình sẽ tạo ra các isolated service, đồng thời thiết kế để chúng giao tiếp với nhau thông qua một Message Queue. Ở đây mình chọn RabbitMQ làm Message Queue. 1. Triển khai BookingService // booking-service.ts import express from 'express' import amqp from 'amqplib' const app = express() const PORT = 3001 app.use(express.json()) let channel: amqp.Channel const paymentQueue = 'payment_queue' app.post('/booking', async (req, res) => { const { userId, eventId, numberOfSeats } = req.body // Pre-step 1: Validate booking request // Pre-step 2: Save booking request to application database const booking = { userId, eventId, numberOfSeats, bookingReservedSuccessfully: true, } /** * Step 1: Send Booking Request to PaymentService */ if (booking.bookingReservedSuccessfully) { await sendMessageToQueue(paymentQueue, { booking }) } res.json({ message: 'Booking request sent successfully' }) }) async function connectQueue(queue: string) { const connection = await amqp.connect('amqp://localhost') channel = await connection.createChannel() await channel.assertQueue(queue) } async function sendMessageToQueue(queue: string, message: unknown) { await channel.sendToQueue(queue, Buffer.from(JSON.stringify(message))) } app.listen(PORT, async () => { console.log(`BookingService is running on http://localhost:${PORT}`) await connectQueue(paymentQueue) }) BookingService xử lý các yêu cầu HTTP POST để tạo booking mới. BookingService cố gắng đặt trước một chỗ và nếu thành công, nó sẽ gửi mộ [...]
Read more →
Bài viết được sự cho phép của tác giả Duy Phan Thông tin được định nghĩa dưới dạng dữ liệu, kiến thức về thông tin, và trí tuệ về tri thức. Data, trong ngữ cảnh nhất định, sẽ trở thành Information. Information với context cụ thể sẽ trở thành Knowledge. Knowledge với những hiểu biết được đưa ra, sẽ trở thành Wisdom. Kim tự tháp dữ liệu là một khái niệm hình dung hệ thống phân cấp Dữ liệu - Thông tin - Tri thức - Trí tuệ. Information là một tập hợp các Data được xử lý từ nhiều nguồn khác nhau. Data được tổng hợp liên tục và không hữu ích cho đến khi nó đã được xử lý và được trình bày ở dạng có thể sử dụng được. Data bao gồm các dữ liệu thô hoặc các quan sát. Khi dữ liệu được sắp xếp, thông tin có thể được đưa ra. Các câu hỏi tại sao, ai, cái gì, ở đâu và bằng cách nào cho phép chúng ta sử dụng dữ liệu [...]
Read more →
Bài viết được sự cho phép của tác giả Nguyễn Thành Nam II. Câu hỏi phỏng vấn về Lập trình hướng đối tượng (OOP) (Phần 2) 20. Các kiểu constructor trong C++? Các constructor có các phân loại phổ biến như sau: Default Constructor: Hàm khởi tạo mặc định không nhận bất kỳ tham số nào. class ABC { int x; ABC() { x = 0; } }; Parameterized constructor: hàm khởi tạo này nhận về một hay nhiều tham số. class ABC { int x; ABC(int y) { x = y; } }; Copy constructor: là một hàm thành viên khởi tạo một đối tượng bằng cách sử dụng một đối tượng khác của cùng một lớp. class ABC { int x; ABC(int y) { x = y; } // Copy constructor ABC(ABC abc) { x = abc.x; } }; 21. Copy Constructor là gì? Copy Constructor hay hàm khởi tạo sao chép, có mục đích là sao chép một đối tượng sang một đối tượng khác. Điều đó có nghĩa là một phương thức khởi tạo sao chép sẽ sao chép một đối tượng và các giá trị củ [...]
Read more →