[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-categories-en":3,"blog-all-posts-en":56,"blog-index-engineering-2-en":71},[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":49,"pageSize":49,"total":58,"list":59},"en",126,[60],{"id":30,"slug":61,"title":62,"excerpt":63,"content":11,"cover":11,"tone":22,"author":64,"publishedAt":65,"updatedAt":65,"readingMinutes":49,"featured":66,"tags":67,"category":70},"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",false,[68,69,51],"Integration","APIs",{"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":40,"pageSize":72,"total":55,"list":73},9,[74,85,95,106,116,127,136,146,156],{"id":75,"slug":76,"title":77,"excerpt":78,"content":11,"cover":11,"tone":45,"author":64,"publishedAt":79,"updatedAt":79,"readingMinutes":49,"featured":66,"tags":80,"category":84},35,"frontend-monitoring-basics","Frontend Monitoring: Finding Out Before the White Screen","Users will not tell you the page is broken, they just leave. Monitoring has to be in place before launch.","2026-08-18T14:05:00+08:00",[81,82,83],"Frontend","Monitoring","Operations",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":86,"slug":87,"title":88,"excerpt":89,"content":11,"cover":11,"tone":22,"author":64,"publishedAt":90,"updatedAt":90,"readingMinutes":49,"featured":66,"tags":91,"category":94},36,"gray-release-for-smb","Gray Releases for Small and Mid-Sized Projects","Without heavy infrastructure, simple techniques still keep release risk under control.","2026-08-06T15:18:00+08:00",[92,83,93],"Releases","Risk",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":96,"slug":97,"title":98,"excerpt":99,"content":11,"cover":11,"tone":29,"author":64,"publishedAt":100,"updatedAt":100,"readingMinutes":49,"featured":66,"tags":101,"category":105},37,"excel-export-performance","Why Report Exports Are So Slow","Freezing the browser while exporting a hundred thousand rows is rarely a file-writing problem. It is about queries and memory.","2026-07-25T16:31:00+08:00",[102,103,104],"Reporting","Export","Performance",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":107,"slug":108,"title":109,"excerpt":110,"content":11,"cover":11,"tone":37,"author":64,"publishedAt":111,"updatedAt":111,"readingMinutes":49,"featured":66,"tags":112,"category":115},38,"message-queue-tradeoffs","Message Queues Are Not a Cure-All","A queue decouples and absorbs spikes, and also introduces duplicates, ordering and observability problems.","2026-07-13T09:44:00+08:00",[113,114,51],"Architecture","Queues",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":117,"slug":118,"title":119,"excerpt":120,"content":11,"cover":11,"tone":45,"author":64,"publishedAt":121,"updatedAt":121,"readingMinutes":49,"featured":66,"tags":122,"category":126},39,"legacy-data-migration","Data Migration: Understand the Old Ledger First","Migrations rarely fail on technology. They fail because nobody can describe what the legacy data actually contains.","2026-07-01T10:57:00+08:00",[123,124,125],"Migration","Legacy","Delivery",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":38,"slug":128,"title":129,"excerpt":130,"content":11,"cover":11,"tone":22,"author":64,"publishedAt":131,"updatedAt":131,"readingMinutes":49,"featured":66,"tags":132,"category":135},"testing-on-a-budget","What to Test When the Budget Is Tight","Without a dedicated QA team you still need a strategy. Spend the limited effort where failures cost the most.","2026-06-19T11:10:00+08:00",[133,134,51],"Testing","Quality",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":137,"slug":138,"title":139,"excerpt":140,"content":11,"cover":11,"tone":12,"author":64,"publishedAt":141,"updatedAt":141,"readingMinutes":49,"featured":66,"tags":142,"category":145},41,"lightweight-code-review","Making Code Review Work in a Small Team","Review is not fault-finding. It is making sure a second person understands a change before it merges.","2026-06-07T12:23:00+08:00",[143,144,51],"Code Review","Team",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":147,"slug":148,"title":149,"excerpt":150,"content":11,"cover":11,"tone":45,"author":64,"publishedAt":151,"updatedAt":151,"readingMinutes":49,"featured":66,"tags":152,"category":155},42,"offline-deployment-notes","Notes on Offline, Air-Gapped Deployment","Factory, government and large enterprise networks often cannot reach the internet, so deployment must be designed for it.","2026-05-26T13:36:00+08:00",[153,154,125],"Deployment","Offline",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":157,"slug":158,"title":159,"excerpt":160,"content":11,"cover":11,"tone":29,"author":64,"publishedAt":161,"updatedAt":161,"readingMinutes":49,"featured":66,"tags":162,"category":166},43,"barcode-and-rfid-basics","Barcodes and RFID: The First Step in Warehouse Digitalisation","Many warehouse projects start not with software but with turning every item into a scannable number.","2026-05-14T14:49:00+08:00",[163,164,165],"Warehouse","Barcode","Manufacturing",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6}]