0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Nền Tảng Đơn: Makefile Là Công Cụ Xuất Bản Đa Nền Tảng

Đăng vào 1 ngày trước

• 4 phút đọc

Nền Tảng Đơn: Makefile Là Công Cụ Xuất Bản Đa Nền Tảng

Vấn Đề

Tôi viết ở một nơi. Độc giả thì ở khắp mọi nơi.

Tôi cập nhật nội dung. Các phiên bản cũ vẫn tồn tại mãi mãi trên nhiều nền tảng khác nhau.

Tôi xuất bản thủ công. Thời gian trôi đi với mỗi lần sao chép-dán.

Khám Phá

Nội dung của tôi sống trong Git. Đó là nguồn gốc duy nhất của sự thật.

GitBook đọc từ Git. dev.to có thể đọc từ Git. Medium cũng có thể đọc từ Git. Mọi thứ đều có thể đọc từ Git.

Vậy tại sao tôi lại phải sao chép-dán?

Kiến Trúc

Copy
Git (Nguồn Gốc của Sự Thật)
    ↓
GitHub (Quản Lý Phiên Bản)
    ↓
GitBook (Giao Diện Chính)
    ↓
Makefile (Công Cụ Xuất Bản)
    ├-> dev.to
    ├-> Medium
    ├-> Hashnode
    └-> Bất Kỳ Nơi Đâu

Một nguồn. Vô số điểm đến.

Triển Khai

Quản Lý Trạng Thái Không Cần Cơ Sở Dữ Liệu

Copy
# .clarity/devto-articles.json
{
  "ten-bai-viet": "2829234",  # ID bài viết trên dev.to
  "bai-khac": "2829233"
}

# .clarity/devto-checksums.json  
{
  "ten-bai-viet": "a3f5b2c8d9e1f4g6",  # MD5 hash
  "bai-khac": "b4g6c3d0e2f5a7h8"
}

Không cần cơ sở dữ liệu. Chỉ cần các tệp JSON. Git theo dõi chúng. Đơn giản.

Phát Hiện Thay Đổi Không Phức Tạp

Copy
CURRENT_CHECKSUM=$(md5 -q article.md)
SAVED_CHECKSUM=$(jq -r '.article' .clarity/devto-checksums.json)

if [ "$CURRENT_CHECKSUM" = "$SAVED_CHECKSUM" ]; then
    echo "[OK] Không có thay đổi, bỏ qua"
else
    # Cập nhật chỉ những gì đã thay đổi
fi

So sánh hash MD5. Tệp đã thay đổi? Cập nhật. Tệp không thay đổi? Bỏ qua.

Khác Biệt Nền Tảng Là Tính Năng

GitBook sử dụng thẻ \ nhưng dev.to không hiểu chúng.

Giải pháp? Loại bỏ chúng trong quá trình xuất bản:

`makefile CONTENT=$(cat article.md | sed 's///g') `

Mỗi nền tảng có thực tế riêng của nó. Thích nghi, đừng chống đối.

Quy Trình Làm Việc

  1. Viết bằng Markdown (Git)
  2. Đẩy lên GitHub
  3. GitBook tự động cập nhật (webhook)
  4. Chạy make sync-devto
  5. Tất cả các nền tảng được cập nhật

Một lệnh. Tất cả các nền tảng đồng bộ.

Ví Dụ Thực Tế Từ Hệ Thống Của Tôi

Tạo Bài Viết Mới

`bash

Viết tại địa phương

code docs/claude-ai-vibe-coding/new-article.md

Đẩy lên Git

git add . && git commit -m "bài viết mới" && git push

Đồng bộ mọi nơi

make sync-devto # Cập nhật hoặc tạo theo nhu cầu
`

Cập Nhật Bài Viết Hiện Có

`bash

Chỉnh sửa tại địa phương

code existing-article.md

Hệ thống phát hiện thay đổi qua MD5

make sync-devto

Kết quả: [OK] Tên Bài Viết - Không có thay đổi, bỏ qua

hoặc

Kết quả: -> Đang Cập Nhật: Tên Bài Viết (ID: 2829234)

`

Giới Hạn Tốc Độ? Giải Quyết

`makefile if [ "$HTTP_CODE" = "429" ]; then echo "Giới hạn tốc độ. Chờ 35 giây..." sleep 35 $(MAKE) retry fi `

Kiên nhẫn như mã. Không phải xử lý lỗi, mà là triển khai tính năng.

Tại Sao Là Makefile?

Tôi đã sử dụng GitHub Actions. Sau đó tôi tỉnh dậy.

GitHub Actions = Máy tính của họ, quy tắc của họ, thời gian của họ.
Makefile = Máy tính của tôi, quy tắc của tôi, thời gian của tôi.

`makefile

Điều này chạy trên MÁY CỦA TÔI

publish:
@echo "Tôi kiểm soát điều này"

Điều này chạy trên MÁY CỦA HỌ

.github/workflows/publish.yml

Tôi chờ, tôi hi vọng, tôi cầu nguyện

`

Kiểm soát quan trọng hơn tiện lợi.

Triết Lý

Nguồn Gốc Đơn: Git. Không phải Notion, không phải Google Docs. Git.

Không Phụ Thuộc Nền Tảng: Viết một lần, xuất bản ở mọi nơi.

Tự Động Hóa Trên Ký Ức: Tôi không nhớ để cập nhật. Mã nhớ cho tôi.

Trạng Thái Không Cần Cơ Sở Dữ Liệu: Tệp JSON trong .clarity/. Git theo dõi chúng. Xong.

Thích Nghi, Đừng Ép Buộc: Mỗi nền tảng là khác nhau. Biến đổi nội dung để phù hợp.

Nhận Diện Mô Hình

Điều này không chỉ về việc viết blog. Nó liên quan đến:

  1. Luồng Thông Tin: Một nguồn -> Nhiều đích
  2. Quản Lý Trạng Thái: Tệp cục bộ > Cơ sở dữ liệu từ xa
  3. Phát Hiện Thay Đổi: Checksums > Timestamps
  4. Thực Tế Nền Tảng: Biến đổi > Phàn nàn
  5. Kiểm Soát: Makefile > Dịch vụ CI/CD

Bắt Đầu Của Bạn

`makefile

Nhà xuất bản khả thi tối thiểu

sync:
@for article in docs/*.md; do \
if [ file_changed ]; then \
curl -X POST platform.com/api \
-d "$$(cat $$article)"
fi
done
`

Mở rộng từ đây. Thêm trạng thái. Thêm checksums. Thêm nền tảng.

Kết Quả

  • Viết một lần, xuất bản ở mọi nơi
  • Không cập nhật thủ công
  • Không quên nền tảng
  • Không có sự không khớp phiên bản
  • Kiểm soát hoàn toàn

Blog của tôi có mặt ở khắp mọi nơi. Thời gian của tôi là của tôi.

Kết Luận

Ngừng đăng nhập vào các nền tảng. Ngừng sao chép-dán. Ngừng nhớ để cập nhật.

Viết trong Git. Để Makefile xử lý phần còn lại.

Xuất bản không phải là về nền tảng. Nó là về luồng.

Git -> Makefile -> Thế Giới.

Đó là tất cả. Đó là hệ thống.


Phần của triết lý Tài liệu Zero -> Mã Sống. Xem thêm: Git như động cơ tiến hóa - cách mà các commit trở thành bài học.


Đọc nguyên bản: Nền Tảng Đơn: Makefile Là Công Cụ Xuất Bản Đa Nền Tảng

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào