Giải nén tar gz nodejs
Câu chuyện của chúng tôi bắt đầu với sự tích hợp giữa một số AWS Lambda và bộ chứa S3. Bộ chứa này sẽ nhận các tệp JSON và sự kiện đó sẽ kích hoạt lambda để xử lý đầu vào đó. Vấn đề? Vì vậy, thỏa thuận này là gì? Xử lý tarball luôn tệ, tôi ghét phải tạo luồng, tôi ghét thêm nhiều phụ thuộc bên ngoài để thực hiện một tác vụ đơn giản và vì chúng tôi đang ở trong Lambda với IO được kiểm soát, một tác vụ đơn giản không thể gọi Nếu bạn giống tôi và đã làm việc nhiều với AWS Lambdas, bạn sẽ biết việc có một mã nguồn nhỏ để triển khai tốt như thế nào, không chỉ giúp quá trình triển khai diễn ra nhanh chóng mà còn giúp tải giao diện người dùng web dễ dàng hơn rất nhiều Nói một cách dễ hiểu, lib nhỏ gọn nhất cho các tệp untar sẽ thêm 5k dòng mã vào lambda của tôi, trong khi mã thực tế của tôi chỉ khoảng 50. Đó là một sự khác biệt rất lớn Với suy nghĩ đó, tôi đã thúc đẩy bản thân thực hiện giải pháp siêu nhỏ gọn, bản địa của riêng mình, nó khó đến mức nào? Trước tiên, tôi đã dành chút thời gian để hiểu tệp tarball (_______5) là gì. Và nó thực sự rất đơn giản. Một loạt các tệp được nhóm lại với nhau trong một tệp lớn, sau đó được nén thành gzip. Sau khi phát hiện ra điều đó, tôi đã có thể theo dõi nhiệm vụ của mình
Phần đó thực sự rất dễ, đúng nghĩa là một dòng mã Đó là bởi vì nút đã được đóng gói với Bây giờ thử thách bắt đầu. Một tarball có nội dung của các tệp gốc được nhóm lại với nhau trong cùng một tệp, chỉ được phân tách bằng một số ký tự điều khiển và thông tin meta của các tệp gốc Chúng trông như thế này (sau khi giải nén thành chuỗi) Như bạn có thể thấy, giữa mỗi nội dung tệp có rất nhiều ký tự điều khiển và một số thông tin meta, như tên người dùng, quyền, tên tệp gốc, v.v. Sau khi nhận ra điều này, tôi chỉ cần tìm một chuỗi char chỉ lặp lại một lần giữa mỗi nội dung tệp để có thể tách các tệp này ra Với một số quan sát cẩn thận, tôi đã tìm thấy chuỗi Chúng ta chỉ cần đảm bảo bỏ qua vị trí đầu tiên (vì không có nội dung nào trước Ngay bây giờ, chúng tôi có nội dung của các tệp trong một mảng, nhưng bản thân nội dung vẫn được đặt trước và thành công với các ký tự điều khiển và thông tin meta và chúng tôi phải cắt bớt chúng trước khi chuyển đổi thành JSON Đây là giải pháp này bắt đầu được điều chỉnh để chỉ hoạt động với các tệp JSON. Thay vì cố gắng tạo các mẫu về cách các ký tự xuất hiện trước và sau nội dung và tạo một số RegExp độc ác để cắt chúng, chúng ta có thể đi theo cách khác và chỉ cần kiểm tra lần xuất hiện đầu tiên và cuối cùng của 0, mà mỗi Mã tách + cắt trông giống như thế này chú ý. bộ lọc để bỏ qua nếu bạn. indexOf trả về -1Ghi chú. Tại sao lại sử dụng 1, 2 và phải kiểm tra cả {} và .tar.gz 0 khi một RegExp đơn giản sẽ làm như vậy? . Phiên bản đầu tiên của mã này đang sử dụng RegExps và nó không hoạt động tốt, khối này mất rất nhiều thời gian để thực thi và trong một số trường hợp gây nguy hiểm cho toàn bộ quá trình. Khi tôi chuyển sang các phương thức chuỗi thông thường, nó bắt đầu hoạt động tốtTừ những gì còn lại sau khi cắt, chúng ta chỉ cần gọi Mã đầy đủ trông như thế này Đây là một mã dấu chân nhỏ để nhận nội dung nén (gzip) tarball, giải nén và phân tích cú pháp dưới dạng JSON. Tuy nhiên, đây không phải là một giải pháp tốt để sử dụng trong mọi tình huống, như tôi muốn chỉ ra Hiện tại gói này chỉ có thể nén một thư mục và mọi thứ bên trong nó. Để nén một cái gì đó là dễ dàng
Với cùng một cách dễ dàng, bạn có thể giải nén một tệp được nén
Bạn có thể chuyển một số tham số cấu hình cho hàm tạo trước khi nén
Dòng lệnh
LÀM
Giấy phép (MIT)Bản quyền (C) 2012 Cranic Tecnologia e Informática LTDA Theo đây, quyền được cấp miễn phí cho bất kỳ người nào có được bản sao của phần mềm này và các tệp tài liệu liên quan ("Phần mềm"), để xử lý Phần mềm mà không bị hạn chế, bao gồm nhưng không giới hạn các quyền sử dụng, sao chép, sửa đổi, hợp nhất Thông báo bản quyền ở trên và thông báo cấp phép này sẽ được bao gồm trong tất cả các bản sao hoặc phần quan trọng của Phần mềm PHẦN MỀM ĐƯỢC CUNG CẤP "NGUYÊN TRẠNG", KHÔNG CÓ BẢO ĐẢM DƯỚI BẤT KỲ HÌNH THỨC NÀO, RÕ RÀNG HAY NGỤ Ý, BAO GỒM NHƯNG KHÔNG GIỚI HẠN CÁC BẢO ĐẢM VỀ KHẢ NĂNG BÁN ĐƯỢC, TÍNH PHÙ HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ VÀ KHÔNG VI PHẠM. TRONG BẤT KỲ TRƯỜNG HỢP NÀO TÁC GIẢ HOẶC NGƯỜI GIỮ BẢN QUYỀN SẼ KHÔNG CHỊU TRÁCH NHIỆM PHÁP LÝ VỀ BẤT KỲ KHIẾU NẠI, THIỆT HẠI HOẶC TRÁCH NHIỆM PHÁP LÝ KHÁC NÀO, DÙ TRONG MỘT HÀNH ĐỘNG HỢP ĐỒNG, NGOẠI TỆ HOẶC CÁCH NÀO KHÁC, PHÁT SINH TỪ, NGOÀI HOẶC LIÊN QUAN ĐẾN PHẦN MỀM HOẶC VIỆC SỬ DỤNG HOẶC CÁC GIAO DỊCH KHÁC TRONG |