# Lập trình

> Để Dvina viết mã trong một dự án trên máy tính của bạn, xem xét từng thay đổi, rồi commit và tạo pull request ngay trong cuộc trò chuyện.

Dvina viết mã trong dự án trên máy tính của bạn, đồng thời nắm được các ghi chú, mạch trao đổi và lý do đằng sau công việc. Bạn mô tả điều mình muốn, xem xét những gì Dvina đã thay đổi rồi đưa vào sử dụng, ngay trong ứng dụng bạn dùng cho mọi việc khác.

## Trước khi bắt đầu

Tính năng lập trình có sẵn trong ứng dụng Dvina cho máy tính trên Mac, Windows và Linux. Bạn không cần cài đặt thêm gì. Dvina cần được cài trên ít nhất một máy tính; mọi thiết bị khác đều có thể bắt đầu công việc và theo dõi tiến độ.

Để tải ứng dụng cho máy tính, xem [Tải xuống và cài đặt Dvina](/docs/use-dvina/get-started/install).

## Mở dự án

Dự án là một thư mục trên máy tính của bạn: kho mã hoặc thư mục thông thường.

1. Trong ứng dụng cho máy tính, mở Dock và chọn dòng dự án (**Dự án**).
2. Chọn **Mở…** để chọn một thư mục hoặc kho mã, hoặc **Dự án mới…** để tạo thư mục mới trên máy tính này.

Khi tạo dự án mới, bật **Tạo kho Git** để lưu lịch sử mọi thay đổi, nhờ đó bạn có thể hoàn tác các chỉnh sửa của Dvina.

Cuộc trò chuyện sẽ làm việc trong dự án bạn chọn. Với dự án mã nguồn, Dock cũng hiển thị nhánh của dự án.

## Yêu cầu thực hiện công việc

Mô tả điều bạn muốn, chẳng hạn như "Sửa tính năng xuất CSV để dùng đúng ngày tháng". Dvina thực hiện yêu cầu đó dưới dạng tác vụ trên máy tính của bạn, và bạn có thể tiếp tục trò chuyện hoặc bắt đầu thêm tác vụ. Nhiều tác vụ có thể cùng làm việc trên một kho mã và tự thống nhất tác vụ nào commit trước.

Trước khi viết mã, Dvina đọc dự án cùng các thông tin liên quan: Dvina tìm trong các cuộc trò chuyện trước đây và tệp của bạn để nắm được lý do đằng sau công việc. Dvina cũng tuân theo AGENTS.md hoặc CLAUDE.md trong dự án của bạn.

## Xem xét các thay đổi

Phản hồi của mỗi tác vụ đi kèm các thay đổi, trong một thẻ mang tên tác vụ và có trạng thái **Sẵn sàng để xem xét**.

- **Xem những gì đã thay đổi:** Chọn **Thay đổi** để xem thay đổi của từng tệp trong bảng bên. **Tệp** cho phép bạn duyệt dự án.
- **Hoàn tác một lượt:** Bên dưới phản hồi đã thay đổi tệp, chọn dòng cho biết số tệp đã thay đổi, rồi chọn **Hoàn tác** và xác nhận **Hoàn tác lượt này?**. Các tệp trở về trạng thái trước lượt đó, còn những thay đổi được thực hiện sau đó vẫn được giữ lại.

## Commit và tạo pull request

1. Trong thẻ tác vụ, chọn **Commit**.
2. **Commit các thay đổi** liệt kê những tệp sẽ được commit trên nhánh của bạn, kèm **Tiêu đề** và **Thông điệp** được đề xuất. Chọn **Commit**. Chưa có gì được đẩy lên.
3. Để tạo pull request, chọn **Đẩy lên và tạo PR**. Dvina đẩy nhánh hiện tại lên trước, rồi tạo pull request. Các tệp chưa được commit sẽ không được đưa vào.

Pull request được tạo bằng thông tin đăng nhập Git của chính bạn. Dvina tạo pull request trên GitHub hoặc GitLab; với các dịch vụ lưu trữ khác, trang tạo pull request mới của dịch vụ đó sẽ mở trong trình duyệt của bạn. Khi hoàn tất, chọn **Xem PR**.

## Phê duyệt

Việc dựng và kiểm thử sẽ tự chạy. Việc xóa tệp, đẩy lên kho mã, thay đổi cơ sở dữ liệu, triển khai và mọi thao tác liên quan đến thông tin bí mật đều chờ bạn đồng ý. Thẻ phê duyệt nêu rõ lý do, chẳng hạn **Chạy lệnh này?** kèm theo **Xóa tệp** hoặc **Thay đổi cơ sở dữ liệu**, và bạn chọn **Cho phép** hoặc **Từ chối**. Quản trị viên có thể quy định những thao tác nào luôn cần hỏi ý bạn.

> [!IMPORTANT]
> Không có gì được đẩy lên kho mã khi bạn chưa đồng ý. Dự án của bạn là một thư mục trên máy tính, và với Git, bạn có thể hoàn tác mọi chỉnh sửa do Dvina thực hiện.

## Kiểm thử trên trình mô phỏng hoặc giả lập

Trong ứng dụng máy tính, Dvina có thể thử ứng dụng của bạn ngay trên máy tính này theo cách người dùng sẽ sử dụng: trong trình duyệt, trong iOS Simulator trên Mac, hoặc trong Android Emulator trên Mac, Windows hay Linux.

1. Mở Dock và chọn dòng **Thiết bị**.
2. Trong mục **Thiết bị này**, chọn **Trình duyệt**, **iOS Simulator** hoặc **Android Emulator**.

Khung thiết bị mở trong bảng bên. Trình mô phỏng đang tắt sẽ khởi động khi bạn mở. Để dùng thiết bị khác, chọn **Chọn thiết bị** ở đầu khung; mỗi thiết bị hiển thị hệ điều hành và trạng thái **Đang chạy** hoặc **Đã tắt**.

Để hiện hoặc ẩn trình duyệt, nhấn <kbd>⌘</kbd> <kbd>⇧</kbd> <kbd>B</kbd> trên Mac hoặc <kbd>Ctrl</kbd> <kbd>Shift</kbd> <kbd>B</kbd> trên Windows và Linux. Khi Dvina làm việc trong một khung mà bạn không xem, dòng **Thiết bị** sẽ có một dấu chấm.

### Cho phép Dvina sử dụng thiết bị

Lần đầu sử dụng trình mô phỏng hoặc giả lập, Dvina sẽ hỏi, chẳng hạn **Cho phép Dvina sử dụng iPhone 17 Pro?**. Vì Dvina nhìn thấy màn hình thiết bị, bạn đừng đăng nhập tài khoản thật của mình trên đó. Chọn **Cho phép** hoặc **Từ chối**. Thiết bị ghi nhớ lựa chọn của bạn, nên cuộc trò chuyện khác sẽ không hỏi lại. Khi bạn chưa cho phép, khung thiết bị sẽ hiển thị **Cho phép Dvina sử dụng thiết bị này**.

Khi Dvina làm việc, khung thiết bị hiển thị **Dvina đang sử dụng thiết bị này**, và cuộc trò chuyện hiển thị trực tiếp màn hình thiết bị. Chọn **Xem lớn** để xem ở kích thước lớn hơn. Các thao tác gửi, thanh toán và xóa trên thiết bị đều chờ bạn đồng ý, mỗi lần thực hiện.

Để tự sử dụng thiết bị, chọn **Tiếp quản**. Các thao tác chạm và nhấn phím của bạn sẽ được chuyển đến thiết bị. Bạn có thể nhấn **Màn hình chính**, và trên Android còn có **Quay lại** và **Ứng dụng gần đây**. Khi xong, chọn **Trả quyền điều khiển** để Dvina tiếp tục.

### Thiết lập iOS Simulator

Nếu iOS Simulator chưa được thiết lập, dòng tương ứng sẽ mở danh sách kiểm tra **Thiết lập iOS Simulator**. Mỗi bước tự được đánh dấu khi hoàn tất, kể cả khi bạn thực hiện ở nơi khác.

1. **Cài đặt Xcode:** Chọn **Mở App Store**. Xcode miễn phí và có dung lượng khoảng 7 GB; hãy mở một lần sau khi cài đặt xong.
2. **Chọn Xcode:** Chọn **Sao chép lệnh** rồi chạy trong Terminal. Lệnh yêu cầu mật khẩu của bạn, nên Dvina không bao giờ chạy thay bạn.
3. **Thêm trình mô phỏng iOS:** Trong Xcode, vào Cài đặt › Thành phần và tải iOS, hoặc chạy lệnh trong Terminal.
4. **Tạo thiết bị:** Chọn **Tạo iPhone**. Không có gì được tải xuống.

### Thiết lập Android Emulator

Nếu Android Emulator chưa được thiết lập, dòng tương ứng sẽ mở danh sách kiểm tra **Thiết lập trình giả lập Android**.

1. **Cài đặt Android Studio:** Chọn **Tải Android Studio**. Phần mềm này cài đặt những thành phần cần thiết để trình giả lập chạy; hãy mở một lần sau khi cài đặt xong.
2. **Thêm trình giả lập và công cụ nền tảng:** Chạy lệnh trong cửa sổ dòng lệnh, hoặc thêm các thành phần này trong Android Studio › SDK Manager.
3. **Bật tăng tốc phần cứng:** Trên Windows và Linux, hãy tự chạy lệnh vì lệnh cần mật khẩu của bạn hoặc quyền quản trị viên. Sau đó, đăng xuất rồi đăng nhập lại trên Linux, hoặc khởi động lại trên Windows. Mac không cần thực hiện bước này.
4. **Thêm ảnh hệ thống:** Chạy lệnh trong cửa sổ dòng lệnh, hoặc thêm ảnh hệ thống trong Android Studio › SDK Manager. Tệp tải xuống có dung lượng lớn.
5. **Tạo trình giả lập:** Chọn **Tạo trình giả lập**. Không có gì được tải xuống.

Nếu quản trị viên đã tắt các trình mô phỏng, các dòng sẽ hiển thị **Đã bị quản trị viên tắt**.

## Làm việc từ bất cứ đâu

Từ điện thoại hoặc trình duyệt web, hãy yêu cầu công việc cần làm trong cuộc trò chuyện. Dvina thực hiện công việc đó trong dự án trên máy tính của bạn, và các thay đổi sẽ chờ bạn xem xét. Máy tính của bạn cần bật và Dvina cần đang mở.

## Khi nào nên dùng

- Bạn đang phát triển phần mềm thực tế và muốn có đầy đủ bối cảnh: ghi chú, các quyết định và những cuộc thảo luận từ tháng trước.
- Bạn muốn hoàn tất một bản sửa lỗi khi không ngồi ở bàn làm việc.
- Bạn muốn thực hiện nhiều thay đổi cùng lúc, mỗi thay đổi đều sẵn sàng để xem xét.

## Mẹo

- **Ghi lại quy tắc làm việc của bạn.** Ghi cách bạn làm việc vào AGENTS.md hoặc CLAUDE.md, và Dvina sẽ làm theo.
- **Kiểm thử trên điện thoại.** Bạn đang xây dựng ứng dụng? Dvina có thể kiểm thử ứng dụng trong trình mô phỏng iPhone hoặc trình giả lập Android, thao tác chạm như người dùng của bạn sẽ làm. Xem [Kiểm thử trên trình mô phỏng hoặc trình giả lập](#test-on-a-simulator-or-emulator).
- **Bạn không phải lập trình viên?** Để tạo ứng dụng và trang hoạt động được, hãy dùng [Tạo](/docs/use-dvina/features/create).

## Nội dung liên quan

- [Dự án](/docs/use-dvina/features/projects)
- [Tác vụ](/docs/use-dvina/features/tasks)
- [Sử dụng máy tính](/docs/use-dvina/features/computer-use)
- [Cài đặt](/docs/use-dvina/get-started/install)
