Replace local images with external links and clean up assets

Removed numerous local image and document files from content posts and updated markdown files to reference external image and document URLs instead. This reduces repository size and centralizes media hosting, improving maintainability.
This commit is contained in:
tiennm99 committed 2025-11-08 12:48:02 +07:00
1 parent f90484657e
commit 3612a2e7d9
200 files changed
+186 -200

No files matched your search

Binary file not shown.

Before

Width:  |  Height:  |  Size: 435 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

+2 -2
View File
@@ -41,5 +41,5 @@ Bài viết này phân tích hiệu suất của việc sử dụng Virtual Thre
## Bonus: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![A Cheatsheet On Message Queues](img/1.png)
![From Monolith to Microservices: Key Transition Patterns](img/2.png)
![A Cheatsheet On Message Queues](https://substack-post-media.s3.amazonaws.com/public/images/2ae8b491-b794-446b-8ca5-25ac552161be_1417x1600.png)
![From Monolith to Microservices: Key Transition Patterns](https://substack-post-media.s3.amazonaws.com/public/images/015e9750-7334-424b-b0c4-9c39bc5dd2d2_1600x1596.png)
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 830 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 812 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 KiB

+5 -9
View File
@@ -57,15 +57,11 @@ Tuần này có kha khá bonus đến từ nhiều nguồn khác nhau
### Bonus #1: Một vài ebook mình tìm được
- [Designing Distributed Systems](doc/EN-CNTNT-eBook-DesigningDistributedSystems.pdf)
- [[FINAL] SOTI 2025 Results Press Release](doc/[FINAL]%20SOTI%202025%20Results%20Press%20Release.pdf)
- [2025 GDC State of the Game Industry report](doc/2025%20GDC%20State%20of%20the%20Game%20Industry%20report.pdf)
- [Quastor Summaries](doc/Quastor%20Summaries.pdf)
- [Designing Distributed Systems](https://info.microsoft.com/rs/157-GQE-382/images/EN-CNTNT-eBook-DesigningDistributedSystems.pdf)
- [Quastor Summaries](https://drive.google.com/file/d/1U7EchvgzCjTtF5JzGVVCFgjXC-qw7lIG/view)
### Bonus #2: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![The Open Source AI Stack](img/1c328642-7222-4127-a6c5-16614e010022_1283x1536.jpg)
![Cookies Vs Sessions Vs JWT Vs PASETO](img/11b53f30-8dba-4520-9b1a-425b54b9b84a_1280x1585.gif)
![Algorithms you should know before taking System Design Interviews](img/670b7459-49bc-485c-965a-7dbfb3177894_892x1798.jpg)
![Top 6 Load Balancing Algorithms](img/a8107d0d-57fb-4f5d-810a-561c09494c49_1604x1536.jpg)
![How TikTok Manages a 200K File Frontend MonoRepo?](img/2689b510-e5d2-42cd-8852-75a89205de7a_1280x1608.gif)
![Cookies Vs Sessions Vs JWT Vs PASETO](https://substack-post-media.s3.amazonaws.com/public/images/11b53f30-8dba-4520-9b1a-425b54b9b84a_1280x1585.gif)
![Algorithms you should know before taking System Design Interviews](https://substack-post-media.s3.amazonaws.com/public/images/fdbcc119-8f5d-4d27-9a4b-2c8bde82b537_4026x8030.jpeg)
![Top 6 Load Balancing Algorithms](https://substack-post-media.s3.amazonaws.com/public/images/12dffcce-f231-48cc-915f-d53c0f8bce0c_3735x3573.jpeg)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 612 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 309 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 860 KiB

+7 -8
View File
@@ -49,14 +49,13 @@ Bài viết blog này trên seangoedecke.com thảo luận về hai kiểu làm
### Bonus #1: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![Top Strategies to Reduce Latency](img/fe9062b4-fd0e-4530-8e20-eea854b8490e_2250x2814.png)
![The Ultimate API Learning Roadmap](img/9c309ad3-78a8-4511-a6f2-e69c06d5c500_1280x1566.gif)
![30 Useful AI Apps That Can Help You in 2025](img/8eb12e04-e90d-43e6-a102-dda8bcc24756_1280x1532.gif)
![10 Essential Components of a Production Web Application](img/a44f9f4b-193d-484e-bbf1-169751104380_1280x1568.gif)
![How do we design effective and safe APIs?](img/7fb7334f-535e-464a-a513-0e4c76ebc329_1334x1536.jpg)
![Code First v.s. API First](img/a44f9f4b-193d-484e-bbf1-169751104380_1280x1568.gif)
![Oauth 2.0 Explained With Simple Terms](img/e64796b4-03d1-4b0f-a60f-999505f15aeb_1280x1661.jpg)
![Session, Cookie, JWT, Token, SSO, and OAuth 2.0 Explained in One Diagram](img/c1155e03-c3dc-4192-8e05-e6b87dc6a574_1280x1664.gif)
![Top Strategies to Reduce Latency](https://substack-post-media.s3.amazonaws.com/public/images/fe9062b4-fd0e-4530-8e20-eea854b8490e_2250x2814.png)
![The Ultimate API Learning Roadmap](https://substack-post-media.s3.amazonaws.com/public/images/9c309ad3-78a8-4511-a6f2-e69c06d5c500_1280x1566.gif)
![10 Essential Components of a Production Web Application](https://substack-post-media.s3.amazonaws.com/public/images/a44f9f4b-193d-484e-bbf1-169751104380_1280x1568.gif)
![How do we design effective and safe APIs?](https://substack-post-media.s3.amazonaws.com/public/images/d5155be3-163d-479c-a75e-632e0f98dd36_3006x3453.jpeg)
![Code First v.s. API First](https://substack-post-media.s3.amazonaws.com/public/images/aad520f5-00d9-4606-af4b-fdb5d1ac63c4_1600x1483.png)
![Oauth 2.0 Explained With Simple Terms](https://substack-post-media.s3.amazonaws.com/public/images/bb375f63-bf06-4956-b3a3-914fd6aa2d91_1280x1664.jpeg)
![Session, Cookie, JWT, Token, SSO, and OAuth 2.0 Explained in One Diagram](https://substack-post-media.s3.amazonaws.com/public/images/c1155e03-c3dc-4192-8e05-e6b87dc6a574_1280x1664.gif)
### Bonus #2: Một vài link hay ho khác
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 800 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 890 KiB

+3 -4
View File
@@ -73,7 +73,6 @@ Tóm lại, bài viết cho thấy tiềm năng của LLM trong việc giúp cá
## Bonus: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![What is an AI Agent?](img/0854344c-e671-4c21-8b25-f966772e54b5_1280x1532.gif)
![Git vs GitHub](img/1112c07d-db40-484e-917b-0071ed7cf354_1280x1532.gif)
![A Cheatsheet on Database Performance](img/5fd8bdda-52dd-454f-be79-ad548f17810b_1280x1557.gif)
![18 Common Ports Worth Knowing](img/35ae3f82-afa0-47b9-a2a0-58b6c6d8cfb1_1280x1476.gif)
![Git vs GitHub](https://substack-post-media.s3.amazonaws.com/public/images/1112c07d-db40-484e-917b-0071ed7cf354_1280x1532.gif)
![A Cheatsheet on Database Performance](https://substack-post-media.s3.amazonaws.com/public/images/5fd8bdda-52dd-454f-be79-ad548f17810b_1280x1557.gif)
![18 Common Ports Worth Knowing](https://substack-post-media.s3.amazonaws.com/public/images/35ae3f82-afa0-47b9-a2a0-58b6c6d8cfb1_1280x1476.gif)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 968 KiB

+1 -1
View File
@@ -103,4 +103,4 @@ Bài viết này cung cấp một cái nhìn sâu sắc về cách tiếp cận
### Bonus 2: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![JWT 101: Key to Stateless Authentication](img/fc4c9cac-3046-4b45-9dd8-7dccc79b4e2c_1280x1608.gif)
![JWT 101: Key to Stateless Authentication](https://substack-post-media.s3.amazonaws.com/public/images/fc4c9cac-3046-4b45-9dd8-7dccc79b4e2c_1280x1608.gif)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 769 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 976 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 297 KiB

+8 -9
View File
@@ -170,12 +170,12 @@ Các điểm chính về văn hóa kỹ thuật của Meta:
- Sử dụng serverless functions cho các sản phẩm
- Cho phép các team nhanh chóng thay đổi ưu tiên
2. **Technology openness**:
2. **Technology openness**:
- Sử dụng monorepo cho tất cả dự án
- Không áp dụng quy tắc sở hữu code nghiêm ngặt
- Đóng góp nhiều dự án mã nguồn mở (PyTorch, Llama, Presto, RocksDB)
3. **Research in production**:
3. **Research in production**:
- Không có phòng nghiên cứu riêng biệt
- Các team phát triển sản phẩm trực tiếp thực hiện nghiên cứu
- Đảm bảo các giải pháp hoạt động ở quy mô lớn
@@ -249,14 +249,13 @@ Kiến trúc này đặc biệt phù hợp cho:
## Bonus 2: Vài hình ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![How to Build Idempotent APIs](img/c3beec9e-cd04-4748-ae7e-3299b42883f6_2360x2824.jpg)
![A Cheatsheet on Non-Functional Requirements](img/369facba-0136-4687-b794-bc58e3139f5c_2250x2752.jpg)
![12 Algorithms for System Design Interviews](img/2f632296-4214-4ec8-a1d2-280e9b7f2696_1280x1532.gif)
![How Kubernetes Works?](img/65a92a81-f2c5-4aed-9faa-35a66124cffe_1283x1536.gif)
![PostgreSQL 101: The Everything Database](img/a6903386-4b5f-450e-b64d-839c6fdf8238_1280x1601.gif)
![Top 12 Tips for API Security](img/06c5ad46-faaf-479b-bde3-b5de8033b4e9_1280x1664.gif)
![How to Build Idempotent APIs](https://substack-post-media.s3.amazonaws.com/public/images/c3beec9e-cd04-4748-ae7e-3299b42883f6_2360x2824.png)
![12 Algorithms for System Design Interviews](https://substack-post-media.s3.amazonaws.com/public/images/2f632296-4214-4ec8-a1d2-280e9b7f2696_1280x1532.gif)
![How Kubernetes Works?](https://substack-post-media.s3.amazonaws.com/public/images/65a92a81-f2c5-4aed-9faa-35a66124cffe_1283x1536.gif)
![PostgreSQL 101: The Everything Database](https://substack-post-media.s3.amazonaws.com/public/images/a6903386-4b5f-450e-b64d-839c6fdf8238_1280x1601.gif)
![Top 12 Tips for API Security](https://substack-post-media.s3.amazonaws.com/public/images/06c5ad46-faaf-479b-bde3-b5de8033b4e9_1280x1664.gif)
## Bonus 3: Vài hình ảnh hay ho đến từ [DesignGurus](https://designgurus.io/)
![System Design Master Template](img/377ca779-5d63-4995-9541-b37008700a8c_800x1073.jpg)
![System Design Master Template](https://www.designgurus.io/_next/image?url=https%3A%2F%2Fstorage.googleapis.com%2Fdownload%2Fstorage%2Fv1%2Fb%2Fdesigngurus-prod.appspot.com%2Fo%2Fee5726e8e29469477b999c100%3Fgeneration%3D1726724098184989%26alt%3Dmedia&w=3840&q=75&dpl=dpl_3Rx6M949Pc1cQKT3QTdj87FcKNdg)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 963 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 KiB

+3 -5
View File
@@ -372,11 +372,9 @@ Một số điểm chính:
## Bonus: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![24 Good Resources to Learn Software Architecture in 2025](img/e9419479-e915-4401-91db-19a3fbb3f272_1280x1601.jpg)
![SOAP vs REST vs GraphQL vs RPC](img/972d1d02-396b-4464-b8a3-320b0cbd0f6f_1743x1536.jpg)
![SQS vs SNS vs EventBridge vs Kinesis](img/3ecf2600-10d8-4180-8328-8d790fbba0cc_1280x1557.gif)
![Top 5 common ways to improve API performance](img/217bf342-bfd4-4088-bba3-b2734f065a20_1280x1280.gif)
![xAI's Grok-3 One-Pager](img/https___substack-post-media.s3.amazonaws.com_public_images_cf7e2044-2627-4b70-8f93-247a25fa8db9_1280x1545.gif)
![SOAP vs REST vs GraphQL vs RPC](https://substack-post-media.s3.amazonaws.com/public/images/6b437484-1fd8-4b59-ba05-46bb3352b053_2904x2559.jpeg)
![SQS vs SNS vs EventBridge vs Kinesis](https://substack-post-media.s3.amazonaws.com/public/images/3ecf2600-10d8-4180-8328-8d790fbba0cc_1280x1557.gif)
![Top 5 common ways to improve API performance](https://substack-post-media.s3.amazonaws.com/public/images/217bf342-bfd4-4088-bba3-b2734f065a20_1280x1280.gif)
## Bonus 2: Vài video hay ho đến từ [Inside Java](https://inside.java/)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

+5 -5
View File
@@ -308,7 +308,7 @@ Bài viết phân tích hai phong cách làm việc của kỹ sư phần mềm
- Ưu tiên "ship now, improve later"
- Phù hợp với startup, hackathon
- Thách thức: tech debt, thiếu edge cases
- Accuracy-Oriented:
- Tập trung vào tính chính xác và ổn định lâu dài
- Ưu tiên "make sure it's right before it goes live"
@@ -320,12 +320,12 @@ Bài viết phân tích hai phong cách làm việc của kỹ sư phần mềm
- Cần tốc độ để validate ý tưởng
- Chấp nhận bug và thiếu hiệu quả
- Phù hợp với speed-oriented engineers
- Scaling (1 → 10):
- Cần cân bằng giữa tốc độ và ổn định
- Tập trung vào testing và kiến trúc
- Cần engineers có thể nhìn xa hơn
- Enterprise (10 → 100):
- Ưu tiên ổn định và tuân thủ
- Quy trình và quản trị rõ ràng
@@ -380,7 +380,7 @@ Bài viết dự đoán về tương lai của hệ sinh thái LLM dựa trên c
- Từ model nhỏ (100M params) đến lớn (1T params)
- Từ text đơn giản đến đa phương tiện
- Từ vài cent đến vài đô la mỗi giờ
- Giá trị mang lại:
- Thay thế công việc có chi phí cao:
- Quản lý thông tin ($1000-10000/giờ)
@@ -425,4 +425,4 @@ Bài viết kết luận rằng sự kiên trì đúng cách là sự kết hợ
## Bonus: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![Data Consistency Strategies For Microservices](img/ae95d38c-41f8-4eb7-885e-f7fafa4ca45d_2250x2624.jpg)
![Data Consistency Strategies For Microservices](https://substack-post-media.s3.amazonaws.com/public/images/ae95d38c-41f8-4eb7-885e-f7fafa4ca45d_2250x2624.png)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 371 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

+6 -6
View File
@@ -45,10 +45,10 @@ Video này điểm qua những cải tiến nổi bật trong các phiên bản
## Bonus: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![30 Free APIs for Developers](img/f112df94-df52-4140-98ec-873e5b74d988_1280x1601.gif)
![The Generative AI Learning Roadmap](img/c3bf4776-744b-4e87-85f8-6dddd6d85597_1280x1566.gif)
![HTTP/1 -> HTTP/2 -> HTTP/3](img/c1dbb32e-8d1b-4c13-ae48-fe485ad92191_1280x1601.gif)
![Structure of URL](img/d864f35c-537c-4571-8644-ce20d1a0caa5_1280x1427.gif)
![30 Free APIs for Developers](https://substack-post-media.s3.amazonaws.com/public/images/f112df94-df52-4140-98ec-873e5b74d988_1280x1601.gif)
![The Generative AI Learning Roadmap](https://substack-post-media.s3.amazonaws.com/public/images/c3bf4776-744b-4e87-85f8-6dddd6d85597_1280x1566.gif)
![HTTP/1 -> HTTP/2 -> HTTP/3](https://substack-post-media.s3.amazonaws.com/public/images/c1dbb32e-8d1b-4c13-ae48-fe485ad92191_1280x1601.gif)
![Structure of URL](https://substack-post-media.s3.amazonaws.com/public/images/d864f35c-537c-4571-8644-ce20d1a0caa5_1280x1427.gif)
## Bonus 2: Vài video hay ho đến từ [ByteByteGo](https://bytebytego.com/)
@@ -56,6 +56,6 @@ Video này điểm qua những cải tiến nổi bật trong các phiên bản
## Bonus 3: Vài tài liệu hay ho đến từ [Redis.io](https://redis.io/)
[Cache and Message Broker for Microservices](doc/cache-and-message-broker-for-microservices-solution-brief.pdf)
[Cache and Message Broker for Microservices](https://redis.io/resources/cache-and-message-broker-for-microservices-solution-brief.pdf)
[Caching at Scale With Redis](doc/caching-at-scale-with-redis-updated-2021-12-04.pdf)
[Caching at Scale With Redis](https://redis.io/wp-content/uploads/2021/12/caching-at-scale-with-redis-updated-2021-12-04.pdf)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 KiB

+1 -1
View File
@@ -49,7 +49,7 @@ Bài viết này hướng dẫn chi tiết về cách kết hợp gRPC với Spr
## Bonus: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![Latency and Partition Tolerance in Distributed Systems](img/39f5b04d-ad39-4bbe-a32f-f47792d4ef62_2250x2682.png)
![Latency and Partition Tolerance in Distributed Systems](https://substack-post-media.s3.amazonaws.com/public/images/39f5b04d-ad39-4bbe-a32f-f47792d4ef62_2250x2682.png)
## Bonus 2: Vài video hay ho đến từ [ByteByteGo](https://bytebytego.com/)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 458 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 834 KiB

+3 -3
View File
@@ -72,9 +72,9 @@ Bài viết của Paul Millerd chia sẻ 40 suy nghĩ khi tác giả bước san
## Bonus: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![A Cheatsheet on Comparing Key-Value Stores](img/f7fc4f19-ebd8-45a0-9398-469805bb4a26_1280x1532.gif)
![A Handy Cheatsheet for the Most Popular Cloud Services](img/0349d8e9-8c8e-4e01-94a8-f2b596069732_1280x1977.jpg)
![Which Database Should I Use on AWS?](img/89a09e07-6548-4c12-87c6-0486c6177ea7_1308x1536.jpg)
![A Cheatsheet on Comparing Key-Value Stores](https://substack-post-media.s3.amazonaws.com/public/images/f7fc4f19-ebd8-45a0-9398-469805bb4a26_1280x1532.gif)
![A Handy Cheatsheet for the Most Popular Cloud Services](https://substack-post-media.s3.amazonaws.com/public/images/16fe4308-ed47-451f-a852-c476ecfb4167_1280x1977.jpeg)
![Which Database Should I Use on AWS?](https://substack-post-media.s3.amazonaws.com/public/images/89a09e07-6548-4c12-87c6-0486c6177ea7_1308x1536.jpeg)
## Bonus 2: Vài video hay ho đến từ [ByteByteGo](https://bytebytego.com/)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

+1 -1
View File
@@ -94,4 +94,4 @@ Bài viết cũng thảo luận về các yếu tố ảnh hưởng đến hiệ
## Bonus: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![API Protocols 101](img/ad16adef-3082-42bd-ac99-9a569ad2e33b_2250x2624.jpg)
![API Protocols 101](https://substack-post-media.s3.amazonaws.com/public/images/ad16adef-3082-42bd-ac99-9a569ad2e33b_2250x2624.png)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 844 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 967 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 780 KiB

+3 -3
View File
@@ -171,6 +171,6 @@ Một số điểm chính:
## Bonus: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![What is MCP?](img/840e868d-2c83-4b1b-a881-df1da6c6e332_1309x1536.gif)
![How to Design a System like Instagram](img/6ff106a0-de83-48b0-9eb4-3f8bf0d43a57_1280x1566.gif)
![How to load your websites at lightning speed](img/214c0c6c-2426-49d0-9fa8-cdb9ce089dcc_1280x1585.gif)
![What is MCP?](https://substack-post-media.s3.amazonaws.com/public/images/840e868d-2c83-4b1b-a881-df1da6c6e332_1309x1536.gif)
![How to Design a System like Instagram](https://substack-post-media.s3.amazonaws.com/public/images/6ff106a0-de83-48b0-9eb4-3f8bf0d43a57_1280x1566.gif)
![How to load your websites at lightning speed](https://substack-post-media.s3.amazonaws.com/public/images/214c0c6c-2426-49d0-9fa8-cdb9ce089dcc_1280x1585.gif)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 371 KiB

+2 -2
View File
@@ -25,7 +25,7 @@ Tác giả kết luận rằng Augment Code đã chọn không fork VS Code đ
### Điểm chính cần lưu ý:
- Việc fork IDE có thể mang lại lợi ích ngắn hạn nhưng tiềm ẩn nhiều rủi ro dài hạn
- Các plugin tiêu chuẩn có thể mất nhiều thời gian hơn để hoàn thiện nhưng mang lại trải nghiệm người dùng ổn định hơn
- Sự cạnh tranh trong lĩnh vực AI coding đang thúc đẩy sự đổi mới và giá trị cho người dùng
- Sự cạnh tranh trong lĩnh vực AI coding đang thúc đẩy sự đổi mới và giá trị cho người dùng
## [Why I'm No Longer Talking to Architects About Microservices](https://blog.container-solutions.com/why-im-no-longer-talking-to-architects-about-microservices)
@@ -127,4 +127,4 @@ Tác giả trình bày các khái niệm cốt lõi như Domain/Subdomain, Bound
## Bonus: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![Monolith vs Microservices vs Modular Monoliths](img/66d12ddc-2abe-4a98-82d5-ee177e80487c_1470x1600.png)
![Monolith vs Microservices vs Modular Monoliths](https://substack-post-media.s3.amazonaws.com/public/images/66d12ddc-2abe-4a98-82d5-ee177e80487c_1470x1600.png)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 816 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 661 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 849 KiB

+4 -4
View File
@@ -152,10 +152,10 @@ Những điểm chính:
## Bonus: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![How does SSO Work?](img/111cec1b-a195-4ff5-963c-714ceecd01ab_1280x1664.gif)
![How Java Virtual Threads Work?](img/b415d54d-0dbd-428d-a09c-3de0332c0f71_1280x1502.gif)
![Memcached vs Redis](img/8ef255cc-ebbb-4710-9faf-f366274a2bef_1280x1373.gif)
![The Shopify Tech Stack](img/2370fff4-b515-484e-a081-4ce73b2c62c2_1280x1566.gif)
![How does SSO Work?](https://substack-post-media.s3.amazonaws.com/public/images/111cec1b-a195-4ff5-963c-714ceecd01ab_1280x1664.gif)
![How Java Virtual Threads Work?](https://substack-post-media.s3.amazonaws.com/public/images/b415d54d-0dbd-428d-a09c-3de0332c0f71_1280x1502.gif)
![Memcached vs Redis](https://substack-post-media.s3.amazonaws.com/public/images/8ef255cc-ebbb-4710-9faf-f366274a2bef_1280x1373.gif)
![The Shopify Tech Stack](https://substack-post-media.s3.amazonaws.com/public/images/2370fff4-b515-484e-a081-4ce73b2c62c2_1280x1566.gif)
## Bonus 2: Vài video hay ho đến từ [ByteByteGo](https://bytebytego.com/)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 417 KiB

+2 -2
View File
@@ -49,7 +49,7 @@ Tác giả phân loại các trường hợp cần sự can thiệp của lập
## [CI/CD DevOps Pipeline Project: Deployment of Java Application on Kubernetes](https://dev.to/prodevopsguytech/cicd-devops-pipeline-project-deployment-of-java-application-on-kubernetes-4fi2)
Bài viết này trình bày chi tiết về việc triển khai một hệ thống CI/CD (Continuous Integration/Continuous Deployment) hoàn chỉnh cho ứng dụng Java trên Kubernetes. Đây là một dự án DevOps toàn diện nhằm tự động hóa toàn bộ vòng đời phát triển phần mềm, từ giai đoạn phát triển đến triển khai.
Bài viết này trình bày chi tiết về việc triển khai một hệ thống CI/CD (Continuous Integration/Continuous Deployment) hoàn chỉnh cho ứng dụng Java trên Kubernetes. Đây là một dự án DevOps toàn diện nhằm tự động hóa toàn bộ vòng đời phát triển phần mềm, từ giai đoạn phát triển đến triển khai.
Mục tiêu chính của dự án là tự động hóa quy trình phát triển phần mềm, cải thiện tốc độ, độ tin cậy và hiệu quả đồng thời giảm thiểu sự can thiệp thủ công. Dự án sử dụng nhiều công cụ DevOps phổ biến như Jenkins, Maven, SonarQube, Trivy, Nexus Repository, Docker, Kubernetes, Prometheus và Grafana.
@@ -181,4 +181,4 @@ Tác giả kết luận rằng cả những người quá lạc quan và quá bi
## Bonus: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![Object Oriented Programming Fundamentals](img/5321bec2-0079-47e2-92e9-1cd9950227c8_2250x2624.jpg)
![Object Oriented Programming Fundamentals](https://substack-post-media.s3.amazonaws.com/public/images/5321bec2-0079-47e2-92e9-1cd9950227c8_2250x2624.png)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 707 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 664 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 973 KiB

+4 -5
View File
@@ -162,8 +162,7 @@ Bảng tra cứu này là một tài nguyên quý giá cho cả sinh viên và c
## Bonus: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![3 Steps to Master Your Software](img/81074d22-5821-4aec-bb2d-0a099d06b6ac_1600x840.jpg)
![The Ultimate Software Architect Roadmap](img/67c39b9a-9a91-4e57-9e24-7714b4f806dd_1280x1349.gif)
![What is Retrieval-Augmented Generation (RAG)?](img/027a010d-4cd7-436a-9404-e4865f008df5_1309x1536.gif)
![How Two-factor Authentication (2FA) Works?](img/fb1b1cd1-eac3-4b66-a391-9ec73f6c37f3_1280x1502.gif)
![How Amazon S3 Works?](img/3efae3ad-8c45-4fb2-a79f-6b3387b0751e_1280x1601.gif)
![3 Steps to Master Your Software](https://substack-post-media.s3.amazonaws.com/public/images/81074d22-5821-4aec-bb2d-0a099d06b6ac_1600x840.png)
![The Ultimate Software Architect Roadmap](https://substack-post-media.s3.amazonaws.com/public/images/67c39b9a-9a91-4e57-9e24-7714b4f806dd_1280x1349.gif)
![How Two-factor Authentication (2FA) Works?](https://substack-post-media.s3.amazonaws.com/public/images/fb1b1cd1-eac3-4b66-a391-9ec73f6c37f3_1280x1502.gif)
![How Amazon S3 Works?](https://substack-post-media.s3.amazonaws.com/public/images/3efae3ad-8c45-4fb2-a79f-6b3387b0751e_1280x1601.gif)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 780 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

+8 -8
View File
@@ -27,7 +27,7 @@ Bài viết cũng nhấn mạnh rằng với các nhóm nhỏ (có thể họp t
- Việc đo lường năng suất là một bài toán phức tạp cần được tiếp cận một cách toàn diện
- Cần tránh tạo ra những động lực tiêu cực thông qua việc đo lường
- Nên kết hợp nhiều phương pháp và chỉ số khác nhau
- Luôn bắt đầu bằng việc xác định rõ mục đích của việc đo lường
- Luôn bắt đầu bằng việc xác định rõ mục đích của việc đo lường
## [In defense of ruthless managers](https://www.seangoedecke.com/ruthless-managers/)
@@ -49,7 +49,7 @@ Tuy nhiên, tác giả cũng nhấn mạnh rằng những ưu điểm này chỉ
- Mỗi kiểu quản lý đều có ưu và nhược điểm riêng
- Người quản lý tàn nhẫn có thể hiệu quả trong việc thực hiện thay đổi
- Giao tiếp rõ ràng và dễ dự đoán là những ưu điểm quan trọng
- Năng lực của người quản lý vẫn là yếu tố quyết định nhất
- Năng lực của người quản lý vẫn là yếu tố quyết định nhất
## [AI ambivalence](https://nolanlawson.com/2025/04/02/ai-ambivalence/)
@@ -225,12 +225,12 @@ Bài viết này bổ sung thêm một loại tối ưu hóa quan trọng mà t
## Bonus: Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![REST API Design Best Practices](img/1fe69fe9-1e79-45b8-abc3-1d5ce8af280c_2250x2624.jpg)
![How to Learn Backend Development?](img/2a933717-1d59-46a6-ba51-76e24ae048fc_1280x1502.gif)
![The Simplified Git Workflow](img/b9397d70-0232-4a8b-8b3e-edd4c15eb9bb_800x939.gif)
![Virtualization vs Containerization](img/1bc9340f-de4f-4767-b2f8-f4c6529e9eea_1309x1536.gif)
![How Netflix Built a Distributed Counter?](img/1e7afaab-de4b-4604-a557-22974fb2e3ea_1280x1532.gif)
![REST API Design Best Practices](https://substack-post-media.s3.amazonaws.com/public/images/4036e9a7-f2b6-476c-ad5d-48916db3b610_1309x1536.gif)
![How to Learn Backend Development?](https://substack-post-media.s3.amazonaws.com/public/images/2a933717-1d59-46a6-ba51-76e24ae048fc_1280x1502.gif)
![The Simplified Git Workflow](https://substack-post-media.s3.amazonaws.com/public/images/b9397d70-0232-4a8b-8b3e-edd4c15eb9bb_800x939.gif)
![Virtualization vs Containerization](https://substack-post-media.s3.amazonaws.com/public/images/1bc9340f-de4f-4767-b2f8-f4c6529e9eea_1309x1536.gif)
![How Netflix Built a Distributed Counter?](https://substack-post-media.s3.amazonaws.com/public/images/1e7afaab-de4b-4604-a557-22974fb2e3ea_1280x1532.gif)
## Bonus 2: Vài video hay ho đến từ [ByteByteGo](https://bytebytego.com/)
[Why Everyone's Talking About MCP?](https://www.youtube.com/watch?v=_d0duu3dED4)
[Why Everyone's Talking About MCP?](https://www.youtube.com/watch?v=_d0duu3dED4)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 KiB

+14 -14
View File
@@ -29,7 +29,7 @@ John hiện đang đóng góp vào Linux Kernel, triển khai Homa Transport Pro
### Kết luận:
Thiết kế phần mềm vẫn là một kỹ năng quan trọng và không thể thay thế, ngay cả trong kỷ nguyên AI. Việc hiểu và áp dụng các nguyên tắc thiết kế tốt sẽ giúp tạo ra các hệ thống phần mềm bền vững và dễ bảo trì hơn.
Thiết kế phần mềm vẫn là một kỹ năng quan trọng và không thể thay thế, ngay cả trong kỷ nguyên AI. Việc hiểu và áp dụng các nguyên tắc thiết kế tốt sẽ giúp tạo ra các hệ thống phần mềm bền vững và dễ bảo trì hơn.
## [20 years of Git. Still weird, still wonderful](https://blog.gitbutler.com/20-years-of-git)
@@ -53,7 +53,7 @@ Sau 20 năm, Git vẫn đang được sử dụng theo cách mà nó được th
### Kết luận:
Git đã đi một chặng đường dài từ một dự án cá nhân đơn giản trở thành công cụ không thể thiếu trong phát triển phần mềm. Câu chuyện về sự phát triển của Git không chỉ là câu chuyện về một công cụ, mà còn là câu chuyện về cách một ý tưởng đơn giản có thể thay đổi hoàn toàn cách chúng ta làm việc với code.
Git đã đi một chặng đường dài từ một dự án cá nhân đơn giản trở thành công cụ không thể thiếu trong phát triển phần mềm. Câu chuyện về sự phát triển của Git không chỉ là câu chuyện về một công cụ, mà còn là câu chuyện về cách một ý tưởng đơn giản có thể thay đổi hoàn toàn cách chúng ta làm việc với code.
## [A Modest Critique of Optional Handling](https://mccue.dev/pages//4-5-25-optional-critique)
@@ -65,7 +65,7 @@ Trong bài viết này, Ethan McCue đưa ra một phân tích sâu sắc về v
- **Vấn đề với cách sử dụng hiện tại**: Nhiều lập trình viên đang sử dụng Optional như một cách để "giải quyết null", dẫn đến code phức tạp và khó đọc hơn.
- **Hạn chế của Optional**:
- **Hạn chế của Optional**:
- Khó xử lý với checked exceptions
- Code trở nên phức tạp khi có nhiều Optional lồng nhau
- Khó khăn trong việc thay đổi biến local trong lambda
@@ -83,7 +83,7 @@ Tác giả cung cấp nhiều ví dụ cụ thể về cách chuyển đổi cod
### Kết luận:
Mặc dù Optional là một tính năng hữu ích trong Java, nhưng việc sử dụng nó cần được cân nhắc kỹ lưỡng. Thay vì tuân theo các quy tắc cứng nhắc về việc "tránh .isPresent/.get", các lập trình viên nên linh hoạt trong việc chọn cách tiếp cận phù hợp với từng tình huống cụ thể.
Mặc dù Optional là một tính năng hữu ích trong Java, nhưng việc sử dụng nó cần được cân nhắc kỹ lưỡng. Thay vì tuân theo các quy tắc cứng nhắc về việc "tránh .isPresent/.get", các lập trình viên nên linh hoạt trong việc chọn cách tiếp cận phù hợp với từng tình huống cụ thể.
## [Project Loom: Structured Concurrency in Java](https://rockthejvm.com/articles/structured-concurrency-in-java)
@@ -93,7 +93,7 @@ Trong bài viết này, Riccardo Cardin từ Rock the JVM chia sẻ một hướ
- **Giới thiệu về Structured Concurrency**: Đây là một cách tiếp cận mới để quản lý đồng thời trong Java, giúp đơn giản hóa việc viết code đồng thời và tránh các vấn đề phổ biến như rò rỉ thread.
- **Cấu hình Project**:
- **Cấu hình Project**:
- Yêu cầu Java 23 với preview features
- Cấu hình Maven để hỗ trợ structured concurrency
- Sử dụng SLF4J và Logback cho logging
@@ -125,7 +125,7 @@ Tác giả cung cấp một ví dụ cụ thể về việc triển khai structu
### Kết luận:
Structured Concurrency trong Project Loom đánh dấu một bước tiến quan trọng trong việc xử lý đồng thời trong Java. Tính năng này không chỉ giúp code dễ viết hơn mà còn an toàn hơn, giảm thiểu các vấn đề phổ biến trong lập trình đồng thời. Với việc được tích hợp vào Java 23, đây là thời điểm tốt để các developer bắt đầu tìm hiểu và áp dụng tính năng này vào các dự án của mình.
Structured Concurrency trong Project Loom đánh dấu một bước tiến quan trọng trong việc xử lý đồng thời trong Java. Tính năng này không chỉ giúp code dễ viết hơn mà còn an toàn hơn, giảm thiểu các vấn đề phổ biến trong lập trình đồng thời. Với việc được tích hợp vào Java 23, đây là thời điểm tốt để các developer bắt đầu tìm hiểu và áp dụng tính năng này vào các dự án của mình.
## [Go's HTTP Server Patterns in Java 25](https://mccue.dev/pages/4-5-25-go-http-server)
@@ -133,7 +133,7 @@ Trong bài viết này, Ethan McCue chia sẻ cách triển khai các mẫu HTTP
### Những điểm chính:
- **Giới thiệu về jdk.httpserver**:
- **Giới thiệu về jdk.httpserver**:
- Module mới trong Java cho phép tạo HTTP server đơn giản
- Tương tự như cách Go xử lý HTTP server
- Phù hợp cho phát triển và prototyping
@@ -169,7 +169,7 @@ Tác giả minh họa việc xây dựng một wiki server với các chức nă
### Kết luận:
Mặc dù `jdk.httpserver` được đánh dấu là "for development only", nó cung cấp một cách tiếp cận đơn giản và hiệu quả để xây dựng HTTP server trong Java, tương tự như cách Go làm. Điều này mở ra khả năng phát triển nhanh các ứng dụng web đơn giản mà không cần đến các framework phức tạp. Tuy nhiên, cho môi trường production, tác giả khuyến nghị sử dụng các server chuyên nghiệp như Jetty.
Mặc dù `jdk.httpserver` được đánh dấu là "for development only", nó cung cấp một cách tiếp cận đơn giản và hiệu quả để xây dựng HTTP server trong Java, tương tự như cách Go làm. Điều này mở ra khả năng phát triển nhanh các ứng dụng web đơn giản mà không cần đến các framework phức tạp. Tuy nhiên, cho môi trường production, tác giả khuyến nghị sử dụng các server chuyên nghiệp như Jetty.
## [Java is dying and it paid off my mortgage](https://alyosha.net/posts/java-is-dying-and-it-paid-off-my-mortgage/)
@@ -206,7 +206,7 @@ Tác giả chia sẻ câu chuyện cá nhân:
### Kết luận:
Bài viết đưa ra một góc nhìn mới về việc theo đuổi sự nghiệp trong lĩnh vực phát triển phần mềm. Thay vì chạy theo các xu hướng công nghệ mới, việc làm chủ các công nghệ đã trưởng thành như Java có thể mang lại sự ổn định và thành công lâu dài. Câu chuyện của tác giả là một minh chứng cho thấy đôi khi những lựa chọn "không phổ biến" lại có thể là lựa chọn tốt nhất cho sự nghiệp.
Bài viết đưa ra một góc nhìn mới về việc theo đuổi sự nghiệp trong lĩnh vực phát triển phần mềm. Thay vì chạy theo các xu hướng công nghệ mới, việc làm chủ các công nghệ đã trưởng thành như Java có thể mang lại sự ổn định và thành công lâu dài. Câu chuyện của tác giả là một minh chứng cho thấy đôi khi những lựa chọn "không phổ biến" lại có thể là lựa chọn tốt nhất cho sự nghiệp.
## [Refining var-handles in Valhalla](https://cr.openjdk.org/~jrose/values/atomic-value-access-api.html)
@@ -251,7 +251,7 @@ Tác giả cung cấp pseudocode chi tiết cho việc triển khai:
### Kết luận:
Việc cải tiến var-handles trong Valhalla là một bước quan trọng để hỗ trợ tốt hơn cho value types trong Java. Cách tiếp cận mới giúp đơn giản hóa việc xử lý atomic operations và cải thiện hiệu suất của ứng dụng. Tuy nhiên, đây là một API phức tạp và chỉ nên được sử dụng bởi các developer có kinh nghiệm.
Việc cải tiến var-handles trong Valhalla là một bước quan trọng để hỗ trợ tốt hơn cho value types trong Java. Cách tiếp cận mới giúp đơn giản hóa việc xử lý atomic operations và cải thiện hiệu suất của ứng dụng. Tuy nhiên, đây là một API phức tạp và chỉ nên được sử dụng bởi các developer có kinh nghiệm.
## [Cấu hình domain .localhost cho ứng dụng local](https://inclouds.space/localhost-domains)
@@ -299,11 +299,11 @@ Tác giả đề xuất một số cải tiến trong tương lai:
### Kết luận:
Cách tiếp cận này mang lại nhiều lợi ích cho việc phát triển và kiểm thử ứng dụng web locally. Nó giúp đơn giản hóa việc truy cập các ứng dụng và tạo ra một môi trường phát triển chuyên nghiệp hơn. Mặc dù cần một số cấu hình ban đầu, nhưng lợi ích mang lại là đáng kể, đặc biệt khi làm việc với nhiều ứng dụng cùng lúc.
Cách tiếp cận này mang lại nhiều lợi ích cho việc phát triển và kiểm thử ứng dụng web locally. Nó giúp đơn giản hóa việc truy cập các ứng dụng và tạo ra một môi trường phát triển chuyên nghiệp hơn. Mặc dù cần một số cấu hình ban đầu, nhưng lợi ích mang lại là đáng kể, đặc biệt khi làm việc với nhiều ứng dụng cùng lúc.
## [AI 50: AI Agents Move Beyond Chat](https://www.sequoiacap.com/article/ai-50-2025/)
![](img/ai-50-2025.webp)
![](https://sequoiacap.com/wp-content/uploads/sites/6/2025/04/ai-50-2025.png)
Trong bài viết này, Konstantine Buhler từ Sequoia Capital phân tích xu hướng AI năm 2025, đặc biệt là sự chuyển đổi từ AI chỉ trả lời câu hỏi sang AI thực sự thực hiện công việc.
@@ -342,8 +342,8 @@ Các công ty trong danh sách AI 50 đã chứng minh:
### Kết luận:
Năm 2025 đánh dấu bước ngoặt quan trọng trong phát triển AI, chuyển từ công cụ trả lời sang công cụ hành động. Mặc dù vẫn còn thách thức về độ chính xác và bảo mật, nhưng xu hướng phát triển là không thể phủ nhận. Các tiến bộ trong doanh nghiệp sẽ dần lan tỏa sang đời sống hàng ngày, mở ra một kỷ nguyên mới cho AI trong năm 2026.
Năm 2025 đánh dấu bước ngoặt quan trọng trong phát triển AI, chuyển từ công cụ trả lời sang công cụ hành động. Mặc dù vẫn còn thách thức về độ chính xác và bảo mật, nhưng xu hướng phát triển là không thể phủ nhận. Các tiến bộ trong doanh nghiệp sẽ dần lan tỏa sang đời sống hàng ngày, mở ra một kỷ nguyên mới cho AI trong năm 2026.
## Vài ảnh hay ho đến từ [ByteByteGo](https://bytebytego.com/)
![A Cheatsheet On OOP Design Patterns](img/65279cf0-3266-445d-852b-a45d6ac9afa4_2250x2862.jpg)
![A Cheatsheet On OOP Design Patterns](https://substack-post-media.s3.amazonaws.com/public/images/65279cf0-3266-445d-852b-a45d6ac9afa4_2250x2862.png)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 KiB

+2 -2
View File
@@ -42,7 +42,7 @@ Các nguyên tắc chính của DOP bao gồm: mô hình hóa dữ liệu bất
Java hiện đại hỗ trợ DOP thông qua nhiều tính năng mới:
- **Records**: Các lớp dữ liệu nhẹ và bất biến
- **Sealed Classes**: Hạn chế các kiểu con có thể có để mô hình hóa dữ liệu dự đoán được hơn
- **Sealed Classes**: Hạn chế các kiểu con có thể có để mô hình hóa dữ liệu dự đoán được hơn
- **Pattern Matching và Switch Expressions**: Cho phép kiểm tra kiểu toàn diện và xử lý dữ liệu sạch sẽ
Lợi ích của DOP bao gồm mã nguồn đơn giản và dễ đọc hơn, khả năng bảo trì được cải thiện, giảm sự kết nối chặt chẽ giữa các thành phần hệ thống, dễ dàng kiểm thử các hàm độc lập, và tái cấu trúc an toàn hơn.
@@ -117,4 +117,4 @@ Trong thời đại AI trợ lý lập trình ngày càng phổ biến, một th
## [Cursor best practices](https://x.com/paraschopra/status/1917466537637859544)
![Cursor best practices](img/Gpw1p1waYAAeAyY.jpg)
![Cursor best practices](https://pbs.twimg.com/media/Gpw1p1waYAAeAyY?format=jpg)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 425 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 848 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 984 KiB

Loaded 100 of 200 files, more files were not shown because too many files have changed in this diff. Show more