


Bài viết được sự cho phép của tác giả Thanh Lê Tại sao nên đọc bài này Đập vào mặt những đứa nói làm Frontend thì không cần logic, thuật toán Xem tui khoe công việc đang làm thôi Vấn đề Chuyện là mình đang build một feature cho https://getnimbus.io, trong đó có một tính năng gọi là Term explain, cơ bản khi bạn đang xem một trang web nào đó mà có một vài từ về web3 thì Nimbus sẽ giải thích từ đó là gì, một cách ngắn gọn nhất. [video width="2842" height="1806" mp4="https://topdev.vn/blog/wp-content/uploads/2024/01/term-explain.mp4"][/video] Đó cơ bản feature là vậy, tuy nhiên có một vấn đề nhỏ: Một trang web sẽ có rất nhiều content, và thường user khi đọc một article hay news thì thường sẽ chỉ focus vào content đó thôi. Nếu vậy sẽ cực kì khó chịu nếu mình show một đống term explain mà không năm trong main content. Vậy câu hỏi tiếp theo, làm sao mình tự động detect được node nào trong cây DOM chứ [...]
Read more →
Bài viết được sự cho phép bởi tác giả Sơn Dương CSP là gì Content Security Policy (CSP) là một lớp bảo mật bổ sung giúp phát hiện và giảm thiểu một số loại tấn công nhất định, bao gồm cả tấn công Cross-Site Scripting (XSS) và dữ liệu. Các cuộc tấn công này được sử dụng cho mọi thứ, từ đánh cắp dữ liệu, làm mất mặt trang web, đến phân phối phần mềm độc hại. Cách hoạt động của CSP Khi máy chủ phản hồi trong header với thẻ Content-Security-Policy hoặc một thẻ <meta> trong HTML Document như: <meta http-equiv="Content-Security-Policy" content="default-src 'self'"> thì ngay lập tức trình duyệt hỗ trợ sẽ kích hoạt các biện pháp bảo vệ người dùng bằng cách hạn chế việc tải và thực thi các tài nguyên như Javascript, CSS, iframe, Web Worker, fonts… Ví dụ thẻ <meta> trên tương đương với việc đặt thuộc tính Content-Security-Policy sau vào trong header của phản hồ [...]
Read more →
Bài viết được sự cho phép của tác giả Lê Hồng Kỳ Hướng dẫn sử dụng content provider trong android sẽ giới thiệu về Content Provider, vai trò và cách sử dụng nó. Content Provider là thành phần giúp cho những ứng dụng khác nhau trong cùng một thiết bị có thể đọc và ghi dữ liệu từ file hoặc từ SQLite của ứng dụng khác. Như vậy, content provider cho phép chúng ta tập trung dữ liệu tại một nơi mà có nhiều ứng dụng khác truy cập vào khi cần thiết. Hướng dẫn sử dụng content provider trong android – Ứng dụng hiển thị danh sách contact hiện có trong thiết bị Mô tả chức năng Hiển thị danh sách contact hiện có trong thiết bị khi người dùng chọn nút “LOAD ALL CONTACTS”. Ứng dụng có hỗ trợ thanh cuộn (scrollbar) cho phép người dùng trượt lên, xuống để xem hết contact. Mỗi một contact được hiển thị theo định dạng Tên : Số điện thoại [irp posts="52867" name="Sử dụng Sqlite trong [...]
Read more →
Bài viết được sự cho phép của tác giả Trần Văn Dem Hiện nay việc tìm kiếm các hướng dẫn về sử dụng hibernate, spring jpa là rất dễ. Tuy nhiên các hướng dẫn này thường chỉ giới thiệu cách sử dụng, quản lý Id của Entity thông qua strategy : AUTO,TABLE,SEQUENCE,IDENTITY. Nhưng rất ít hoặc rất khó tìm bài hướng dẫn nào nói cụ thể về các kiểu strategy này và cách sử dụng hiệu trong dự án. Bài viết này tôi sẽ giúp các bạn hiểu rõ hơn về các loại strategy này từ đó có thể tự tin lựa chọn trong project tránh các lỗi không đáng có. 1. sequence vs auto_increment Trước khi tìm hiểu về các loại strategy thì chúng ta nên phân biệt các loại dữ liệu này. Trước tiên thì 2 loại này sẽ là cách cơ sở dữ liệu của bạn dùng để tạo id cho bảng lưu trữ dữ liệu. auto increment Cá [...]
Read more →
Bài viết được sự cho phép của tác giả Giang Phan Trong bài viết trước tôi đã giới thiệu với các bạn sử dụng tính năng Reverse Engineering của Hibernate Tool để Generate code domain model classes, annotated EJB3 entity, Hibernate mapping files một cách tự động. Có một số trường hợp, chúng ta cần customize code generation chẳng hạn database được thiết kế có prefix “gp_” cho tất cả table. Tuy nhiên, trong code chúng ta không muốn có prefix này, ví dụ gp_user thì cần generate class là User. Để giải quyết vấn đề này, ta có thể tạo một Custom Strategy Class để tùy chỉnh việc tạo các tên class được generate. [irp posts="44290" name="Hibernate Criteria Query Language (HCQL)"] [irp posts="40410" name="Hibernate Batch processing"] Giới thiệu ReverseEngineeringStrategy Bên cạnh việc sử dụng XML trong file hibernate.reveng.xml, chúng cũng có thể tùy chỉnh việc generate bằng mã Java. Điều này có thể được thực hiện bằng cách tạo một lớp Java implements ReverseEngineeringStrategy hoặc extends DelegatingReverseEngineeringStrargetyclass. Cả hai đều nằm trong package org.hibernate.cfg.reveng. Có rấ [...]
Read more →
Bài viết được sự cho phép của tác giả Kiên Nguyễn Một ngày đẹp trời, sếp giao cho Tồ ngồi code vài ba con vịt – chẳng liên quan gì tới Strategy Pattern. Vịt thì cũng không nhiều loại lắm (vịt nhựa, vịt trời và vịt nhà). Làm dev cái qq gì lại đi code vài ba con vịt. Rõ điên, tồ cay lắm. Nhưng thôi, “ăn cơm chúa múa tối ngày”, không code có khi nó lại đuổi cmn mình mất. Tồ lọ mọ ngồi thiết kế class, kế thừa (inheritance) này nọ. Dự án kết thúc, Tồ lại về nhà, ăn ngon, ngủ yên. 3 tháng sau, dự án mantain, dự án thêm 30 loại vịt. Tồ mở code lên maintain, code thế này sao mở rộng được. Hướng thiết kế vừa khó sửa chữa, vừa mất thời gian. Tồ tìm hiểu ngay về STRATEGY PATTERN, cố gắng thiết kế lại. Thành công, tồ hiểu thêm về strategy, tiện viết luôn bài này chia sẻ cùng [...]
Read more →
Bài viết được sự cho phép của tác giả Edward Thiên Hoàng Chào mừng đến với THẾ GIỚI VỀ SỰ CHUẨN MỰC TRONG VIỆC THIẾT KẾ VÀ XÂY DỰNG KIẾN TRÚC CHƯƠNG TRÌNH. Như đã nói ở bài trước, mình sẽ bắt đầu viết những đoạn code đơn giản để minh họa bài toán CON VỊT áp dụng các kỹ thuật trong lập trình hướng đối tượng bằng Java. Yêu cầu là xây dựng chương trình để hiện thực những con vịt lên trên màn hình. [irp posts="38926" name="Các loại Design patterns"] [irp posts="7387" name="Top 5 công cụ mã nguồn mở dành cho MySQL administrator"] TÍNH KẾ THỪA TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Áp dụng tính kế thừa, ta có: Lớp Duck là lớp cơ sở cho những loài vịt cụ thể như MallarDuck, RedHeadDuck. public abstract class Duck { public void quack() { // Quack.. } public void swim() { // Swim... } public abstract void display(); } public class MallarDuck extends Duck { @Override public void display() { // Display MallarDuck } } public class RedHeadDuck extends Duck { @Override public void display() { // Display RedHeadDuck } } Ở đây, những con [...]
Read more →
Thuộc tính content trong CSS thường được sử dụng cùng với 2 ghost element là after và before, những giá trị nào có thể đưa vào cho thuộc tính content này <div data-done="&#x2705;" class="email"> [email protected] </div> .email::before { /* Chèn trước thẻ div giá trị của data-done + Email: */ content: attr(data-done) " Email: "; } Không phải giá trị nào đưa vào content này cũng hợp lệ /* Được */ ::after { content: "1"; } /* Không được */ ::after { content: 1; } Không thể tính toán gì đâu, nó chỉ là string thôi <div data-price="4" data-sale-modifier="0.9">Coffee</div> /* Méo chạy */ div::after { content: " $" calc(attr(data-price) * attr(data-sale-modifier)); } /* Nope */ ::after { content: calc(2 + 2); } Muốn nối chuỗi ư? /* Không chạy đâu, không phải javascript hay php */ ::after { content: "1" . "2" . "3"; content: "1" + "2" + "3"; /* Dùng bình thường thế này thôi */ content: "1" "2" "3"; content: "1 2 3"; } Đường dẫn hình thì được, mà không cho thay đổi kích thước hình ¯_(ツ)_/ p:before { content: url(image.jpg); } TopDev via Vuilaptrinh
Read more →