#refactoring
#clean-code
#architecture
Phân tích mã nguồn cũ, phát hiện vấn đề và viết lại theo chuẩn hiện đại.
Hãy đóng vai kiến trúc sư phần mềm cấp cao. Phân tích đoạn mã nguồn sau đây, xác định các vấn đề về hiệu năng, độ耦 kết (coupling) cao và khả năng bảo trì kém. Sau đó, đề xuất và triển khai giải pháp tái cấu trúc mã nguồn áp dụng các mẫu thiết kế (Design Patterns) phù hợp và nguyên tắc SOLID để đảm bảo tính mở rộng và dễ kiểm thử. Giải thích chi tiết lý do cho từng thay đổi bạn thực hiện.
#system-design
#distributed-systems
#scalability
Lên kiến trúc cho hệ thống quy mô lớn với yêu cầu về độ sẵn sàng và phân tán dữ liệu.
Thiết kế kiến trúc Backend cho một nền tảng mạng xã hội quy mô lớn cần hỗ trợ 50 triệu người dùng hoạt động đồng thời với độ trễ thấp (low latency). Tập trung vào chiến lược Sharding cơ sở dữ liệu, việc sử dụng Caching hàng đầu (Redis Cluster), Message Queues (Kafka) để xử lý bất đồng bộ, và cơ chế Consistency hashing. Hãy cung cấp sơ đồ khối (block diagram) bằng văn bản mô tả luồng dữ liệu và giải thích các đánh đổi (trade-offs) trong việc lựa chọn giữa CP và AP theo định lý CAP.
#macro
#refactoring
#automation
Ghi một macro phức tạp để tự động hóa việc thay đổi định danh biến và cập nhật các tham chiếu trong toàn bộ tệp.
Ghi một macro vào thanh đăng ký 'q' để tìm từ đầu tiên trên mỗi dòng (ví dụ: tên biến cũ), thay thế nó bằng một tên mới có quy tắc đặt tên (camelCase), sau đó chuyển xuống dòng tiếp theo và lặp lại quá trình cho 20 dòng tiếp theo. Đảm bảo macro có thể xử lý các dòng trống hoặc dòng comment bằng cách bỏ qua chúng.
#global-command
#regex
#bulk-edit
Thực hiện thao tác chỉnh sửa hàng loạt trên nhiều dòng không liên tiếp bằng lệnh :g.
Sử dụng lệnh :g (global) để tìm tất cả các dòng chứa chuỗi 'TODO' và xóa chúng. Ngay sau đó, hãy sử dụng lệnh :g để tìm tất cả các dòng kết thúc bằng dấu chấm phẩy ';' và thêm chuỗi '// processed' vào cuối các dòng đó mà không ảnh hưởng đến nội dung gốc trước dấu chấm phẩy.
#visual-block
#columns
#increment
Sử dụng chế độ khối trực quan để chèn số thứ tự tăng dần hoặc thực hiện phép tính trên cột dữ liệu.
Hãy tưởng tượng bạn có một danh sách 10 dòng chưa có số thứ tự. Sử dụng chế độ Visual Block (Ctrl-v) để chèn một cột số thứ tự ở đầu mỗi dòng, bắt đầu từ 1 và tăng dần lên đến 10. Sau đó, sử dụng lại Visual Block để tăng thêm 100 đơn vị vào mỗi số trong cột đó mà không cần nhập lại từng số.
#regex
#substitution
#lookahead
Thực hiện tìm và thay thế nâng cao sử dụng biểu thức chính quy nhìn trước (lookahead) để định dạng lại văn bản.
Tìm tất cả các từ có 3 chữ cái theo sau bởi một khoảng trắng và một chữ số (ví dụ: 'abc 123'), sau đó thay thế toàn bộ chuỗi bằng chính từ đó nhưng được viết hoa và chữ số được nhân đôi (ví dụ: 'ABC 246'). Sử dụng các nhóm bắt giữ (capture groups) và thay thế thông minh.
#registers
#copy-paste
#memory
Sao chép, cắt và dán dữ liệu giữa các thanh đăng ký có tên khác nhau để ghép dữ liệu phức tạp.
Sao chép từ đầu tiên của dòng 1 vào thanh đăng ký 'a'. Sao chép từ cuối cùng của dòng 5 vào thanh đăng ký 'b'. Di chuyển đến dòng 10 và dán nội dung của thanh đăng ký 'a', sau đó thêm dấu gạch ngang '-', và cuối cùng dán nội dung của thanh đăng ký 'b' trên cùng một dòng.
#vi
#linux
#navigation
Tìm hiểu cách di chuyển con trỏ trong trình soạn thảo vi mà không cần chuột.
Mở một tệp tin bằng lệnh 'vi ten_file.txt'. Trong chế độ lệnh (mặc định), hãy thực hành di chuyển con trỏ bằng các phím: l để sang phải, h để sang trái, j để xuống dòng và k để lên dòng.
#vi
#editing
#insert-mode
Cách chuyển đổi từ chế độ lệnh sang chế độ chèn để soạn thảo.
Để bắt đầu gõ văn bản, nhấn phím 'i' để chèn văn bản trước con trỏ hoặc 'a' để chèn sau con trỏ. Sau khi nhập xong nội dung, hãy nhấn phím Esc để quay lại chế độ lệnh.
#vi
#file-management
#basics
Tìm hiểu các lệnh cơ bản để lưu công việc và đóng vi.
Để lưu thay đổi, gõ ':w' và nhấn Enter. Để thoát không lưu, gõ ':q!'. Để vừa lưu vừa thoát cùng lúc, hãy gõ ':wq' và nhấn Enter.
#vi
#deleting
#editing
Cách xóa các ký tự thừa trong văn bản bằng phím tắt.
Di chuyển con trỏ đến ký tự bạn muốn xóa. Đảm bảo bạn đang ở chế độ lệnh (nhấn Esc nếu cần), sau đó nhấn phím 'x' để xóa ký tự tại vị trí con trỏ.
#vim
#macro
#automation
#text-editing
Thực hiện ghi macro và áp dụng lặp lại để định dạng danh sách dữ liệu thô.
Bạn có một danh sách dữ liệu thô với định dạng 'ten, tuoi, dia_chi' trên mỗi dòng. Hãy ghi lại một macro (bắt đầu bằng qa) để chuyển đổi dòng đầu tiên thành định dạng JSON object: {"ten": "...", "tuoi": "...", "dia_chi": "..."}. Sau đó, dừng ghi macro và áp dụng macro này cho 20 dòng tiếp theo trong tệp bằng cách sử dụng lệnh lặp lại phù hợp.
#vim
#regex
#substitution
#pattern-matching
Sử dụng biểu thức chính quy nâng cao để thay đổi quy tắc đặt tên biến.
Trong tệp hiện tại chứa nhiều biến viết theo kiểu CamelCase (ví dụ: 'bienMauNangCao'), hãy sử dụng lệnh :substitute để chuyển đổi tất cả chúng sang kiểu snake_case (ví dụ: 'bien_mau_nang_cao'). Yêu cầu phải sử dụng nhóm bắt (capture groups) để xác định các chữ cái viết hoa và xử lý vị trí của dấu gạch dưới chính xác.
#vim
#philosophy
#interface
Phân tích lý thuyết về sự tách biệt giữa chế độ chèn và chế độ lệnh.
Giải thích khái niệm cốt lõi của 'modal editing' và tại sao việc tách biệt hành động 'nhập văn bản' và 'thao tác trên văn bản' lại dẫn đến hiệu quả cao hơn về mặt lý thuyết so với các trình soạn thảo modeless. Hãy thảo luận về việc giảm tải cho các ngón tay và tối ưu hóa sự phối hợp bàn phím.
#vim
#grammar
#structure
Hiểu cấu trúc ngữ pháp của các lệnh vận hành trên vùng văn bản.
Vim coi văn bản như một cấu trúc ngữ pháp có thể thao tác. Mô tả cách các động từ (verbs/commands như d, c, y), danh từ (nouns/text objects như w, p, ") và giới từ (prepositions/motions như f, t) kết hợp lại. Phân tích sự khác biệt về mặt logic giữa 'inner' (bên trong) và 'around' (bao quanh).