1 điểm bởi GN⁺ 2024-08-29 | 1 bình luận | Chia sẻ qua WhatsApp
  • Trong 290MB của ứng dụng iOS Oral-B, 233MB đến từ asset catalog, và phần lớn dung lượng ứng dụng bị chiếm bởi các tài sản PDF cho nhiều mẫu bàn chải đánh răng
  • Tài sản lớn nhất của Oral-B là Sonos_M9_rose với 7,8MB, và nhiều PDF không chứa toàn bộ bàn chải mà chỉ chứa tay cầm và nút bấm
  • Comino.bundle chứa các tệp như 20class_seqlen26_6p5h_20200302-095627_comino_android_production, có vẻ là trọng số mô hình
  • Ứng dụng Colgate Smile còn lớn hơn với 378MB; Unity framework 125MB và các binary symbol chưa được loại bỏ là những nguyên nhân chính làm phình dung lượng
  • Colgate đưa trùng lặp 60MB tài sản và tệp bản địa hóa vào cả main bundle lẫn widget extension, khiến tối thiểu 120MB làm tăng dung lượng ứng dụng mà không có giá trị chức năng

Phần lớn dung lượng ứng dụng Oral-B là tài sản PDF

  • Trong tổng dung lượng 290MB của ứng dụng Oral-B, 233MB phát sinh từ asset catalog
    • Tương đương 80% tổng dung lượng
    • Phần lớn là các tài sản PDF thể hiện những mẫu bàn chải đánh răng khác nhau
  • Tài sản PDF lớn nhất là Sonos_M9_rose với 7,8MB
  • Nhiều PDF không phải là hình ảnh toàn bộ bàn chải, mà chỉ bao gồm tay cầm và nút bấm
  • Một mục đáng chú ý khác là Comino.bundle 15MB
    • Chứa các tệp như 20class_seqlen26_6p5h_20200302-095627_comino_android_production
    • Các tệp này có vẻ là một dạng trọng số mô hình

Vấn đề lớn hơn của Colgate Smile là phần phình dung lượng có thể cắt giảm

  • Dung lượng ứng dụng Colgate Smile là 378MB
  • Ứng dụng có vẻ dùng Unity vì tính năng “guided brushing”
    • Unity framework có dung lượng 125MB
    • Nếu tính năng đó có giá trị, bản thân việc dùng Unity có thể được xem là một lựa chọn hợp lý
  • Lãng phí lớn hơn là việc không loại bỏ binary symbol khỏi ứng dụng production
    • Binary symbol được dùng cho symbolication
    • Nếu upload DSYM lên crash reporter thì không cần đưa chúng vào trong ứng dụng production
    • Chỉ riêng việc loại bỏ binary symbol có thể giảm tổng cộng khoảng 60MB, 15%
  • Một nguyên nhân phình dung lượng khác là đưa vào trùng lặp
    • Colgate đưa trùng lặp 60MB tài sản và tệp bản địa hóa vào main bundle và widget extension
    • Các node màu đỏ được hiển thị là mục trùng lặp
  • Trong ứng dụng Colgate, ít nhất 120MB được tính là dung lượng không mang lại bất kỳ giá trị chức năng nào cho người dùng
  • Bài viết liên quan:

1 bình luận

 
GN⁺ 2024-08-29
Các ý kiến trên Hacker News
  • Ngay từ đầu tôi không hiểu vì sao ứng dụng Oral-B và ứng dụng Colgate lại tồn tại

    • Là để thu thập dữ liệu nhằm marketing và quảng cáo cho khách hàng
    • Ứng dụng có thể cho bạn biết răng nào đã được chải đúng cách, tức là đã dành đủ thời gian, và răng nào bị bỏ sót hoặc lướt qua quá nhanh
      Cá nhân tôi dùng thử một lần rồi xóa, nhưng với những người muốn kiểm tra xem việc đánh răng của mình có hiệu quả không thì có thể hữu ích. Dù sao nó cũng hoàn toàn tùy chọn, cứ bỏ qua sự tồn tại của ứng dụng và chỉ dùng bàn chải cũng được
    • Cũng cùng lý do mà giờ đến cả bàn chải đánh răng tích hợp AI cũng xuất hiện. Hằng năm các hãng cứ cạnh tranh để tiếp tục phát minh lại bàn chải đánh răng, nhằm tạo ra điểm khác biệt mới, góc độ marketing mới và doanh số cao hơn
    • Tương tự quảng cáo Coca-Cola hay McDonald’s. Không phải để cung cấp thông tin mới, mà là liên tục nhét logo, thương hiệu, tên gọi vào đầu người xem hoặc người dùng
      Như vậy bạn sẽ cảm thấy thương hiệu đó quen thuộc hơn các thương hiệu “không biết”, và khả năng mua thương hiệu đó sẽ cao hơn. Ứng dụng cũng vậy: mỗi lần dùng là logo và thương hiệu lại được dí ngay trước mắt. Kết luận là thậm chí không cần bán dữ liệu
    • Giống như các hãng bảo hiểm ô tô giảm giá lái xe an toàn nếu dùng thiết bị ghi dữ liệu hoặc ứng dụng, thật ngạc nhiên là các hãng bảo hiểm y tế vẫn chưa bắt đầu giảm giá cho “người đánh răng tốt”
  • Thực tế đáng buồn là nếu vào App Store > Your Account rồi làm mới, bạn sẽ thấy số ứng dụng dưới 100MB chỉ đếm trên đầu ngón tay. Với tôi, phần lớn ứng dụng là 300MB, mà đây mới chỉ nói riêng các bản cập nhật
    So với Android thì bên đó ứng dụng nhẹ hơn nhiều. Các ứng dụng Objective-C ngày trước gọn hơn rất nhiều, còn ứng dụng Swift thì ngay cả sau khi có ABI vẫn khá lớn và nặng. Một phần là do lập trình viên lười, một phần cũng do công cụ của Apple không tốt lắm. Không có tree shaking hay loại bỏ mã chết trong CocoaPods đã biên dịch hoặc các gói Swift. Apple có vẻ không mấy bận tâm, và có khi còn vui vì bán được thiết bị mới có dung lượng lưu trữ lớn hơn hoặc gói đăng ký iCloud

    • Tôi từng làm việc này ở Google. Định dạng phân phối ứng dụng Android hiện đại được thiết kế hoàn toàn xoay quanh việc chia nhỏ ứng dụng để người dùng tại bất kỳ thời điểm nào chỉ tải xuống và cài đặt mức tối thiểu cần thiết
      Tài nguyên, kiến trúc, ngôn ngữ chỉ được tải khi cần, thậm chí còn có các yếu tố theo từng lĩnh vực như định dạng nén texture cho asset game. Vì vậy thiết bị chỉ nhận các texture cần thiết, còn nhà phát triển có thể phân phối nhiều định dạng để người dùng nhận được lựa chọn tốt nhất mà thiết bị của họ hỗ trợ. Cũng có thể tải xuống và cài đặt các mô-đun mã theo yêu cầu. Ví dụ, có thể tách quy trình đăng ký thành mô-đun riêng, cài đặt lúc đầu, rồi sau khi người dùng đã đăng ký thì gỡ bỏ để giảm kích thước cài đặt. Có nhà phát triển không thực sự tải xuống hay cài đặt mô-đun VOIP vài MB dùng cho hỗ trợ khách hàng cho đến khi người dùng mở màn hình hỗ trợ, nên phần lớn người dùng sẽ không bao giờ cài nó
      [0]: https://developer.android.com/guide/playcore/asset-delivery/...
    • Apple cũng có các công cụ như vậy. Họ đã thêm công cụ mới có thể áp dụng cả cho thư viện động
  • https://xcancel.com/emergetools/status/1828490449881047401

    • Đây là proxy Twitter tệ nhất tôi từng thấy. Nó hiện ra một màn hình ngu ngốc kiểu “hãy chờ x giây để xem trang này”, rồi sau đó bảo “hãy tải lại trang”
      Trông như trang trung gian spam khi cố xem streaming lậu. Công cụ này kinh khủng đến mức khó tin là một người không liên quan gì tới bên đó lại đăng nó lên
  • Thật khó chịu khi việc thu thập dữ liệu người dùng cho các data broker đã trở thành một mảng kinh doanh quá giá trị. Không thể vui nổi khi thấy các tập đoàn lớn cứ làm ứng dụng để hút dữ liệu thay vì sản phẩm tốt, rồi hả hê vì các con số tăng lên
    Nhìn việc mình bắt đầu than thở kiểu “ngày xưa tốt hơn” thì có lẽ chính thức đã bước qua tuổi trung niên, nhưng tủ lạnh, máy rửa bát, bàn chải đánh răng mà cũng có ứng dụng. Khi nào máy rửa bát tự cho bát đĩa vào được thì lúc đó tôi sẽ chấp nhận điều chỉnh giá theo khoái lạc

    • Ước gì chất lượng quảng cáo cũng tăng tương xứng với hiệu quả hút dữ liệu. Tôi không có bằng lái và đang trong một mối quan hệ, vậy mà phần lớn quảng cáo cá nhân hóa trên thiết bị của tôi lại là trang hẹn hò và đại lý ô tô
  • Hóa ra chỉ là nhét hình ảnh các model khác nhau vào PDF một cách ngu ngốc làm nó phình to thôi à? Không như tôi đoán. Tôi tưởng sẽ giống phía ứng dụng Colgate được nhắc đến phía sau

    • Vô lý. Những thứ như vậy 100% phải tải khi cần
    • Tôi tự hỏi có phải họ tạo PDF bằng chức năng “In thành PDF” của trình duyệt web không. PDF do Chrome tạo ra có dung lượng cực lớn
    • Tôi đã nghĩ họ dùng Unreal Engine. Lần cuối tôi kiểm tra thì ngay cả ứng dụng tối thiểu cũng hơn 200MB
  • Ứng dụng Oral-B vài năm trước khá nhẹ, hiển thị feed tin tức thế giới mới nhất, ghi dữ liệu vào Apple Health, và khuyến khích chuỗi ngày đánh răng liên tục nên khá vui
    Nhưng sau khi viết lại toàn bộ ứng dụng, nó mất gần như mọi tính năng, và tôi chưa mở lại lần nào kể từ lần chạy đầu tiên sau khi nâng cấp. Ước gì có iOS App Store cho phép cài phiên bản cũ như TestFlight. Tiếc là TestFlight cũng chỉ tối đa 90 ngày. Có lẽ đã đến lúc lôi BLE sniffer ra, nhưng chắc không thể lấy quyền HealthKit cho một ứng dụng tạm thời không được cấp phép chỉ dùng một lần

    • “Feed tin tức thế giới mới nhất” á, gì cơ? Oral-B? Feed tin tức thế giới?
    • Giao thức đã được reverse engineering rồi. Tôi đang dùng Home Assistant và Bluetooth, và nó bắt được một chiếc bàn chải Oral-B của hàng xóm
    • Tôi từng tham gia làm phiên bản đó. Tôi sẽ im lặng trong phần thảo luận sau đây
  • Điều còn đáng xấu hổ hơn bản thân dung lượng là việc cần đến ứng dụng chỉ để đổi chế độ của bàn chải. Tôi thật sự nghĩ chuyện này không nên được phép, nhưng cũng không rõ phải cưỡng chế như thế nào

    • Còn tùy bạn dùng mẫu nào và muốn đổi chế độ gì, nhưng trên Oral-B Pro 5000, tôi vẫn đổi được chế độ làm sạch như “Daily Clean”, “Sensitive” và màu LED ở phần cuối mà không cần ứng dụng
      Màn hình hiển thị bộ đếm thời gian đánh răng, và mức theo dõi cần thiết từ bàn chải đến vậy là đủ. Có thể có những chế độ khác không truy cập được bằng nút bấm, nhưng tôi không biết cái nào
    • Nhiệm vụ đầu tiên là có một cơ quan bảo vệ người tiêu dùng có thẩm quyền pháp lý để loại khỏi thị trường các sản phẩm có lỗi ngay từ thiết kế
      Nhiệm vụ thứ hai là định nghĩa chính xác điều gì được phép và điều gì bị cấm; nhưng vì có quá nhiều trò ngớ ngẩn mà doanh nghiệp có thể nghĩ ra để làm phiền khách hàng, tôi nghĩ có thể trao cho cơ quan đó khá nhiều quyền tùy nghi nếu họ đánh giá và quyết định dựa trên các nguyên tắc cốt lõi tốt. Ví dụ như nguyên tắc “những chức năng có thể triển khai mà không cần ứng dụng đi kèm thì không được đòi hỏi ứng dụng đi kèm”
    • Sao đến mức này cũng cần lập pháp? Cứ đừng mua cái bàn chải đó và để sản phẩm tự chết là được
    • Trên chiếc IO của tôi, có thể đổi chế độ ngay trên bàn chải, nhưng việc chọn danh sách các chế độ có thể đổi thì làm trong ứng dụng. Tuy vậy mặc định có vẻ là “tất cả”, nên ngay cả khi chưa từng mở ứng dụng vẫn dùng được
  • Câu hỏi thật sự là ngay từ đầu tại sao bàn chải đánh răng lại cần ứng dụng

    • Là để thu thập càng nhiều dữ liệu khách hàng càng tốt, gộp chúng lại với hy vọng là đã ẩn danh, rồi bán cho data broker và vắt thêm tiền từ nhóm khách hàng
      Tất cả diễn ra dưới danh nghĩa “đồng ý”. Vì bạn đã cài ứng dụng và nhiều khả năng đã chấp nhận điều khoản dịch vụ hoặc chính sách quyền riêng tư. Họ cũng gắn cho nó cái cớ là một dịch vụ đếm thời điểm hay tần suất bạn tương tác với sản phẩm, hoặc nhắc bạn sử dụng. Dù một người trưởng thành sống bình thường vốn đã làm những việc đó rồi, chỉ là kém chính xác hơn mà thôi
    • Lấy ví dụ giả định, các công ty kẹo cao su “dành cho nha khoa” có thể trả nhiều tiền cho thông tin về thói quen đánh răng của mọi người khi được đối chiếu với dữ liệu nhân khẩu học và địa lý
      Nếu dữ liệu cho thấy ở một thành phố hay quận nào đó, người dân đánh răng ít hơn dân số nói chung 25–50%, thì việc tăng ngân sách quảng cáo ở khu vực đó khá hợp lý. Vì có thể cho rằng những người ít đánh răng có khả năng mua kẹo cao su nha khoa cao hơn để bù đắp tổn hại
    • Nó cho biết bạn có dành đủ thời gian cho mặt trước, mặt trên và mặt sau của từng chiếc răng hay không. Bàn chải điện được dùng khác với bàn chải thủ công, không phải theo kiểu chà qua chà lại
    • Thành thật mà nói tôi cũng nghĩ vậy. Chắc là thống kê đánh răng hay thời gian cho từng răng gì đó
    • Một lý do tôi từng dùng ứng dụng là vì bọn trẻ. Nó phát hoạt hình trong lúc đánh răng, lưu thống kê, và cho chọn những thứ như màu avatar làm phần thưởng
  • Bản đã mở: https://unrollnow.com/status/1828490449881047401

    • Với tôi thì không hoạt động

      Connection failed: User 'u327838624_unroll' has exceeded the 'max_connections_per_hour' resource (current value: 500)

    • Có vẻ bị lưu lượng từ HN đánh sập

      Connection failed: User 'uxxxxxxx_unroll' has exceeded the 'max_connections_per_hour' resource (current value: 500)
      Đây có phải lỗi MySQL không?

  • Người tỉnh táo thì vì lý do gì lại tải ứng dụng bàn chải đánh răng chứ?

    • Vậy cập nhật firmware cho bàn chải bằng cách nào? Ước gì đây là đùa, nhưng có vẻ Phillips phát hành bản cập nhật firmware cho Sonicare vài lần mỗi năm