In the life of a software engineer, you always learn and gain experience from other people, other products, other ideas. If you are a web developer, you want to know the design and layout of a certain website. Let’s say you are interested in Facebook’s website and want to know how they create their web […]
Advance knowledge
Memory alignment
Hôm trước mình có viết 1 bài về chủ đề Optimize struct memory trong swift mà có nói tới về vấn đề memory alignment này. Thì bài này mình sẽ giải thích kĩ hơn tại sao nó được sinh ra và tại sao nó quan trọng. 1. Khái niệm Memory alignment là nói về sự […]
Memory layout và optimize Swift memory khi sử dụng Struct
Là lập trình viên iOS chắc không ai là không biết Struct. Nó là kiểu cấu trúc dữ liệu dạng value type. Tuy nhiên để sử struct mà tối ưu lượng memory được sử dụng thì không phải ai cũng biết. 1. Memory alignment Chương trình máy tính được chạy sẽ bao gồm rất nhiều […]
DWARF & dSYM
Là một iOS Engineer, mình có chút thắc mắc là làm sao để lldb có thể dừng đúng chỗ mà chúng ta đặt breakpoint. Hay khi đã dừng tại breakpoint thì làm sao nó biết được ở đó có những biến nào để chúng ta debug. Mình đã tìm hiểu 1 số tài liệu thì […]
Migrating iOS Project to Bazel – Part 2
Tiếp nối phần 1 thì phần này nội dung chính sẽ bàn tới là cấu hình cơ bản cho 1 project chạy iOS bằng bazel. Để thành thục thì chúng ta đi vào làm demo project bằng Bazel trước sau đó mới áp dụng vào project đang chạy và giải quyết các vấn đề khác. […]
Migrating iOS Project to Bazel – Part 1
Lâu lắm rồi mình mới viết lại blog, nay mình sẽ viết về quá trình tìm hiểu Bazel và quá trình migrate từ project xcode sang dùng bazel và những thứ mình gặp phải. Chủ đề này sẽ chia thành rất nhiều phần. Mong mọi người theo dõi từ đầu tới cuối. Lưu ý một […]
Advanced Debug Part 3
Tiếp nối 2 phần trước, phần này mình sẽ nói về công cụ debug khá là quan trọng và mạnh mẽ. Nó giúp chúng ta tìm ra những chỗ thay đổi giá trị của biến, để tìm ra những sự thay đổi bất thường của biến trong chương trình. Watchpoint là gì Watchpoint là một […]
Advanced Debug Part 2
Tiếp nối phần trước, phần này chúng ta sẽ tìm hiểu thêm về 1 số loại breakpoint khác. Các bạn có thể đọc lại phần 1 tại đây. Exception breakpoint Xét ví dụ sau: Chương trình trên bị crash và nhảy ra ngoài main. Như vậy rất khó để debug xem tại sao, nếu chỉ […]
Advanced Debug Part 1
Không có chương trình nào là không có lỗi, thế nên là lập trình viên thì luôn luôn phải đối mặt với nó. Có những lỗi rất dễ dàng tìm ra bằng cách đọc code. Tuy nhiên có những lỗi rất khó tìm được ra nguyên nhân. Hoặc chúng ta mới vào dự án chưa […]
Message Dispatch
Như những bài trước mình đã trình bày, object sẽ chứa một trường là isa. Từ isa thì runtime sẽ lấy được thông tin của class đó. Và từ đó dùng nó để gọi hàm khi chúng ta gọi hàm trong objc. Thì hôm nay chúng ta sẽ tìm hiểu về cơ chế Message Dispatch […]