[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-categories-en":3,"blog-index-engineering-3-en":56,"blog-all-posts-en":125},[4,16,23,31,39,48],{"id":5,"parentId":6,"slug":7,"name":8,"description":9,"icon":10,"cover":11,"tone":12,"kind":13,"sortOrder":14,"count":15},6,0,"founder-notes","Founder Notes","Reflections from the founding team on business, management and product, documenting the growth of a software company.","pen-tool","","blue","article",10,20,{"id":17,"parentId":6,"slug":18,"name":19,"description":20,"icon":21,"cover":11,"tone":22,"kind":13,"sortOrder":15,"count":15},5,"industry-watch","Industry Watch","In-depth analysis of internet, software and digital industry trends with our own point of view.","globe","cyan",{"id":24,"parentId":6,"slug":25,"name":26,"description":27,"icon":28,"cover":11,"tone":29,"kind":13,"sortOrder":30,"count":15},4,"team-culture","Team and Culture","Company events, tech sharing, team building and hiring culture that show the daily life of the Jiayifangyuan team.","users","indigo",30,{"id":32,"parentId":6,"slug":33,"name":34,"description":35,"icon":36,"cover":11,"tone":37,"kind":13,"sortOrder":38,"count":15},3,"project-retrospective","Project Retrospectives","Real project records from zero to one, covering problems, solutions, lessons learned and final outcomes.","clipboard-check","teal",40,{"id":40,"parentId":6,"slug":41,"name":42,"description":43,"icon":44,"cover":11,"tone":45,"kind":13,"sortOrder":46,"count":47},2,"product-thinking","Product Thinking","Requirement analysis, user experience and product design methods, plus the thinking from business problems to product solutions.","lightbulb","slate",50,22,{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":55},1,"engineering","Engineering","Hands-on engineering practices in architecture, performance optimization, AI integration and cross-platform delivery from our R and D team.","cpu",60,24,{"language":57,"page":32,"pageSize":58,"total":55,"list":59},"en",9,[60,73,84,94,104,115],{"id":61,"slug":62,"title":63,"excerpt":64,"content":11,"cover":11,"tone":22,"author":65,"publishedAt":66,"updatedAt":66,"readingMinutes":49,"featured":67,"tags":68,"category":72},44,"file-storage-evolution","File Storage: From Local Disk to Object Storage","Attachment features start simple, until clients upload multi-gigabyte videos and ask for per-file permissions.","佳益方圆团队","2026-05-02T15:02:00+08:00",false,[69,70,71],"Storage","Architecture","Files",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":74,"slug":75,"title":76,"excerpt":77,"content":11,"cover":11,"tone":37,"author":65,"publishedAt":78,"updatedAt":78,"readingMinutes":49,"featured":67,"tags":79,"category":83},45,"observability-for-small-teams","Observability: Logs, Metrics and Traces","When something breaks, answering 'what happened' is worth more than 'the system is slow'.","2026-04-20T16:15:00+08:00",[80,81,82],"Observability","Logs","Operations",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":85,"slug":86,"title":87,"excerpt":88,"content":11,"cover":11,"tone":12,"author":65,"publishedAt":89,"updatedAt":89,"readingMinutes":49,"featured":67,"tags":90,"category":93},46,"api-rate-limiting","Rate Limiting: Protect the System Before Optimising Experience","Rate limits are not there to block users, but to keep most of the system available under abnormal traffic.","2026-04-08T09:28:00+08:00",[91,92,82],"APIs","Stability",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":95,"slug":96,"title":97,"excerpt":98,"content":11,"cover":11,"tone":29,"author":65,"publishedAt":99,"updatedAt":99,"readingMinutes":49,"featured":67,"tags":100,"category":103},47,"cross-service-consistency","Cross-Service Consistency: Compensation Beats Distributed Transactions","Distributed transactions sound complete, but real projects rely more on compensable business flows.","2026-03-27T10:41:00+08:00",[101,102,70],"Distributed","Consistency",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":105,"slug":106,"title":107,"excerpt":108,"content":11,"cover":11,"tone":22,"author":65,"publishedAt":109,"updatedAt":109,"readingMinutes":49,"featured":67,"tags":110,"category":114},48,"miniapp-performance","Mini Program Performance: Trade-offs for a One-Second First Screen","Mini programs have bundle limits and platform startup costs, so first-screen work is about trade-offs, not tricks.","2026-03-15T11:54:00+08:00",[111,112,113],"Mini Program","Performance","Frontend",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":116,"slug":117,"title":118,"excerpt":119,"content":11,"cover":11,"tone":45,"author":65,"publishedAt":120,"updatedAt":120,"readingMinutes":49,"featured":67,"tags":121,"category":124},49,"log-writing-standards","Logging Standards: Still Readable Three Months Later","Logs are written for future colleagues and for yourself at three in the morning. Structure is the baseline.","2026-03-03T12:07:00+08:00",[122,123,51],"Logging","Standards",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"language":57,"page":49,"pageSize":49,"total":126,"list":127},126,[128],{"id":30,"slug":129,"title":130,"excerpt":131,"content":11,"cover":11,"tone":22,"author":65,"publishedAt":132,"updatedAt":132,"readingMinutes":49,"featured":67,"tags":133,"category":135},"integration-api-pitfalls","Five Traps in Enterprise System Integration","However complete the API documentation is, integration usually stalls on field semantics, timeouts and repeated pushes.","2026-10-17T09:00:00+08:00",[134,91,51],"Integration",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6}]