The re-designed Penguin Statistics v4 Backend.

Penguin Statistics - Logo

Penguin Statistics - V4 Backend

License Last Commit

The re-designed Penguin Statistics v4 Backend, built with Go.

Architecture

This Go project mainly uses:

This project mainly follows a RESTful API design.

Maintainers

This frontend project has mainly being maintained by the following contributors (in alphabetical order):

The full list of active contributors of the Penguin Statistics project can be found at the Team Members page of the website.

Owner
Penguin Statistics
Penguin Statistics is a nonprofit organization. We collect item drop data for mobile game Arknights and generate statistical results.
Penguin Statistics
Comments
  • refactor/idiomatic-go

    refactor/idiomatic-go

    The effort is to lay down a better future path for the v3 api development. To better distinguish different structs and interfaces of APIs, a better way than simple shims should be implemented.

    This change has fixed some naming based on naming conventions from

    • Effective Go
    • The kubernetes code repo: they do have a huge codebase consisting of type definitions for different API versions, as well for feature gates which are hard to done right without any guidance.
    • Idiomatic Go (community)
  • Update item formulas (`/api/v2/formula`)

    Update item formulas (`/api/v2/formula`)

    Just do: UPDATE properties SET value = ? WHERE key = 'formula', where ? is the following:

    [{"id":"3131","name":"基础加固建材","goldCost":800,"costs":[{"id":"3112","name":"碳","rarity":1,"count":2}],"extraOutcome":[{"id":"3112","name":"碳","rarity":1,"count":1,"weight":100}],"totalWeight":100},{"id":"3132","name":"进阶加固建材","goldCost":2400,"costs":[{"id":"3113","name":"碳素","rarity":2,"count":2}],"extraOutcome":[{"id":"3113","name":"碳素","rarity":2,"count":1,"weight":100}],"totalWeight":100},{"id":"3133","name":"高级加固建材","goldCost":7200,"costs":[{"id":"3114","name":"碳素组","rarity":3,"count":2}],"extraOutcome":[{"id":"3114","name":"碳素组","rarity":3,"count":1,"weight":100}],"totalWeight":100},{"id":"3113","name":"碳素","goldCost":0,"costs":[{"id":"3112","name":"碳","rarity":1,"count":3}],"extraOutcome":[{"id":"3113","name":"碳素","rarity":2,"count":1,"weight":100}],"totalWeight":100},{"id":"3114","name":"碳素组","goldCost":0,"costs":[{"id":"3113","name":"碳素","rarity":2,"count":3}],"extraOutcome":[{"id":"3114","name":"碳素组","rarity":3,"count":1,"weight":100}],"totalWeight":100},{"id":"3401","name":"家具零件","goldCost":200,"costs":[{"id":"3112","name":"碳","rarity":1,"count":1}],"extraOutcome":[{"id":"3112","name":"碳","rarity":1,"count":1,"weight":100}],"totalWeight":100},{"id":"3401","name":"家具零件","goldCost":200,"costs":[{"id":"3113","name":"碳素","rarity":2,"count":1}],"extraOutcome":[{"id":"3113","name":"碳素","rarity":2,"count":1,"weight":100}],"totalWeight":100},{"id":"3401","name":"家具零件","goldCost":200,"costs":[{"id":"3114","name":"碳素组","rarity":3,"count":1}],"extraOutcome":[{"id":"3114","name":"碳素组","rarity":3,"count":1,"weight":100}],"totalWeight":100},{"id":"3401","name":"家具零件","goldCost":0,"costs":[{"id":"3131","name":"基础加固建材","rarity":1,"count":1}],"extraOutcome":[{"id":"3112","name":"碳","rarity":1,"count":1,"weight":100}],"totalWeight":100},{"id":"3401","name":"家具零件","goldCost":0,"costs":[{"id":"3132","name":"进阶加固建材","rarity":2,"count":1}],"extraOutcome":[{"id":"3113","name":"碳素","rarity":2,"count":1,"weight":100}],"totalWeight":100},{"id":"3401","name":"家具零件","goldCost":0,"costs":[{"id":"3133","name":"高级加固建材","rarity":3,"count":1}],"extraOutcome":[{"id":"3114","name":"碳素组","rarity":3,"count":1,"weight":100}],"totalWeight":100},{"id":"30135","name":"D32钢","goldCost":400,"costs":[{"id":"30084","name":"三水锰矿","rarity":3,"count":1},{"id":"30094","name":"五水研磨石","rarity":3,"count":1},{"id":"30104","name":"RMA70-24","rarity":3,"count":1}],"extraOutcome":[{"id":"30014","name":"提纯源岩","rarity":3,"count":1,"weight":84},{"id":"30024","name":"糖聚块","rarity":3,"count":1,"weight":63},{"id":"30034","name":"聚酸酯块","rarity":3,"count":1,"weight":63},{"id":"30044","name":"异铁块","rarity":3,"count":1,"weight":56},{"id":"30054","name":"酮阵列","rarity":3,"count":1,"weight":56},{"id":"30064","name":"改量装置","rarity":3,"count":1,"weight":42},{"id":"30074","name":"白马醇","rarity":3,"count":1,"weight":72},{"id":"30084","name":"三水锰矿","rarity":3,"count":1,"weight":63},{"id":"30094","name":"五水研磨石","rarity":3,"count":1,"weight":63},{"id":"30104","name":"RMA70-24","rarity":3,"count":1,"weight":56},{"id":"31014","name":"聚合凝胶","rarity":3,"count":1,"weight":72},{"id":"31024","name":"炽合金块","rarity":3,"count":1,"weight":63},{"id":"31034","name":"晶体电路","rarity":3,"count":1,"weight":56},{"id":"31044","name":"精炼溶剂","rarity":3,"count":1,"weight":63},{"id":"31054","name":"切削原液","rarity":3,"count":1,"weight":63}],"totalWeight":935},{"id":"30125","name":"双极纳米片","goldCost":400,"costs":[{"id":"30064","name":"改量装置","rarity":3,"count":1},{"id":"30074","name":"白马醇","rarity":3,"count":2}],"extraOutcome":[{"id":"30014","name":"提纯源岩","rarity":3,"count":1,"weight":84},{"id":"30024","name":"糖聚块","rarity":3,"count":1,"weight":63},{"id":"30034","name":"聚酸酯块","rarity":3,"count":1,"weight":63},{"id":"30044","name":"异铁块","rarity":3,"count":1,"weight":56},{"id":"30054","name":"酮阵列","rarity":3,"count":1,"weight":56},{"id":"30064","name":"改量装置","rarity":3,"count":1,"weight":42},{"id":"30074","name":"白马醇","rarity":3,"count":1,"weight":72},{"id":"30084","name":"三水锰矿","rarity":3,"count":1,"weight":63},{"id":"30094","name":"五水研磨石","rarity":3,"count":1,"weight":63},{"id":"30104","name":"RMA70-24","rarity":3,"count":1,"weight":56},{"id":"31014","name":"聚合凝胶","rarity":3,"count":1,"weight":72},{"id":"31024","name":"炽合金块","rarity":3,"count":1,"weight":63},{"id":"31034","name":"晶体电路","rarity":3,"count":1,"weight":56},{"id":"31044","name":"精炼溶剂","rarity":3,"count":1,"weight":63},{"id":"31054","name":"切削原液","rarity":3,"count":1,"weight":63}],"totalWeight":935},{"id":"30115","name":"聚合剂","goldCost":400,"costs":[{"id":"30014","name":"提纯源岩","rarity":3,"count":1},{"id":"30044","name":"异铁块","rarity":3,"count":1},{"id":"30054","name":"酮阵列","rarity":3,"count":1}],"extraOutcome":[{"id":"30014","name":"提纯源岩","rarity":3,"count":1,"weight":84},{"id":"30024","name":"糖聚块","rarity":3,"count":1,"weight":63},{"id":"30034","name":"聚酸酯块","rarity":3,"count":1,"weight":63},{"id":"30044","name":"异铁块","rarity":3,"count":1,"weight":56},{"id":"30054","name":"酮阵列","rarity":3,"count":1,"weight":56},{"id":"30064","name":"改量装置","rarity":3,"count":1,"weight":42},{"id":"30074","name":"白马醇","rarity":3,"count":1,"weight":72},{"id":"30084","name":"三水锰矿","rarity":3,"count":1,"weight":63},{"id":"30094","name":"五水研磨石","rarity":3,"count":1,"weight":63},{"id":"30104","name":"RMA70-24","rarity":3,"count":1,"weight":56},{"id":"31014","name":"聚合凝胶","rarity":3,"count":1,"weight":72},{"id":"31024","name":"炽合金块","rarity":3,"count":1,"weight":63},{"id":"31034","name":"晶体电路","rarity":3,"count":1,"weight":56},{"id":"31044","name":"精炼溶剂","rarity":3,"count":1,"weight":63},{"id":"31054","name":"切削原液","rarity":3,"count":1,"weight":63}],"totalWeight":935},{"id":"30104","name":"RMA70-24","goldCost":300,"costs":[{"id":"30103","name":"RMA70-12","rarity":2,"count":1},{"id":"30013","name":"固源岩组","rarity":2,"count":2},{"id":"30053","name":"酮凝集组","rarity":2,"count":1}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609},{"id":"30094","name":"五水研磨石","goldCost":300,"costs":[{"id":"30093","name":"研磨石","rarity":2,"count":1},{"id":"30043","name":"异铁组","rarity":2,"count":1},{"id":"30063","name":"全新装置","rarity":2,"count":1}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609},{"id":"30084","name":"三水锰矿","goldCost":300,"costs":[{"id":"30083","name":"轻锰矿","rarity":2,"count":2},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1},{"id":"30073","name":"扭转醇","rarity":2,"count":1}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609},{"id":"30074","name":"白马醇","goldCost":300,"costs":[{"id":"30073","name":"扭转醇","rarity":2,"count":1},{"id":"30023","name":"糖组","rarity":2,"count":1},{"id":"30103","name":"RMA70-12","rarity":2,"count":1}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609},{"id":"30062","name":"装置","goldCost":100,"costs":[{"id":"30061","name":"破损装置","rarity":0,"count":3}],"extraOutcome":[{"id":"30011","name":"源岩","rarity":0,"count":1,"weight":15},{"id":"30021","name":"代糖","rarity":0,"count":1,"weight":10},{"id":"30031","name":"酯原料","rarity":0,"count":1,"weight":10},{"id":"30041","name":"异铁碎片","rarity":0,"count":1,"weight":8},{"id":"30051","name":"双酮","rarity":0,"count":1,"weight":8},{"id":"30061","name":"破损装置","rarity":0,"count":1,"weight":6}],"totalWeight":57},{"id":"30063","name":"全新装置","goldCost":200,"costs":[{"id":"30062","name":"装置","rarity":1,"count":4}],"extraOutcome":[{"id":"30012","name":"固源岩","rarity":1,"count":1,"weight":15},{"id":"30022","name":"糖","rarity":1,"count":1,"weight":10},{"id":"30032","name":"聚酸酯","rarity":1,"count":1,"weight":10},{"id":"30042","name":"异铁","rarity":1,"count":1,"weight":8},{"id":"30052","name":"酮凝集","rarity":1,"count":1,"weight":8},{"id":"30062","name":"装置","rarity":1,"count":1,"weight":6}],"totalWeight":57},{"id":"30064","name":"改量装置","goldCost":300,"costs":[{"id":"30063","name":"全新装置","rarity":2,"count":1},{"id":"30013","name":"固源岩组","rarity":2,"count":2},{"id":"30093","name":"研磨石","rarity":2,"count":1}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609},{"id":"30052","name":"酮凝集","goldCost":100,"costs":[{"id":"30051","name":"双酮","rarity":0,"count":3}],"extraOutcome":[{"id":"30011","name":"源岩","rarity":0,"count":1,"weight":15},{"id":"30021","name":"代糖","rarity":0,"count":1,"weight":10},{"id":"30031","name":"酯原料","rarity":0,"count":1,"weight":10},{"id":"30041","name":"异铁碎片","rarity":0,"count":1,"weight":8},{"id":"30051","name":"双酮","rarity":0,"count":1,"weight":8},{"id":"30061","name":"破损装置","rarity":0,"count":1,"weight":6}],"totalWeight":57},{"id":"30053","name":"酮凝集组","goldCost":200,"costs":[{"id":"30052","name":"酮凝集","rarity":1,"count":4}],"extraOutcome":[{"id":"30012","name":"固源岩","rarity":1,"count":1,"weight":15},{"id":"30022","name":"糖","rarity":1,"count":1,"weight":10},{"id":"30032","name":"聚酸酯","rarity":1,"count":1,"weight":10},{"id":"30042","name":"异铁","rarity":1,"count":1,"weight":8},{"id":"30052","name":"酮凝集","rarity":1,"count":1,"weight":8},{"id":"30062","name":"装置","rarity":1,"count":1,"weight":6}],"totalWeight":57},{"id":"30054","name":"酮阵列","goldCost":300,"costs":[{"id":"30053","name":"酮凝集组","rarity":2,"count":2},{"id":"30023","name":"糖组","rarity":2,"count":1},{"id":"30083","name":"轻锰矿","rarity":2,"count":1}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609},{"id":"30042","name":"异铁","goldCost":100,"costs":[{"id":"30041","name":"异铁碎片","rarity":0,"count":3}],"extraOutcome":[{"id":"30011","name":"源岩","rarity":0,"count":1,"weight":15},{"id":"30021","name":"代糖","rarity":0,"count":1,"weight":10},{"id":"30031","name":"酯原料","rarity":0,"count":1,"weight":10},{"id":"30041","name":"异铁碎片","rarity":0,"count":1,"weight":8},{"id":"30051","name":"双酮","rarity":0,"count":1,"weight":8},{"id":"30061","name":"破损装置","rarity":0,"count":1,"weight":6}],"totalWeight":57},{"id":"30043","name":"异铁组","goldCost":200,"costs":[{"id":"30042","name":"异铁","rarity":1,"count":4}],"extraOutcome":[{"id":"30012","name":"固源岩","rarity":1,"count":1,"weight":15},{"id":"30022","name":"糖","rarity":1,"count":1,"weight":10},{"id":"30032","name":"聚酸酯","rarity":1,"count":1,"weight":10},{"id":"30042","name":"异铁","rarity":1,"count":1,"weight":8},{"id":"30052","name":"酮凝集","rarity":1,"count":1,"weight":8},{"id":"30062","name":"装置","rarity":1,"count":1,"weight":6}],"totalWeight":57},{"id":"30044","name":"异铁块","goldCost":300,"costs":[{"id":"30043","name":"异铁组","rarity":2,"count":2},{"id":"30063","name":"全新装置","rarity":2,"count":1},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609},{"id":"30032","name":"聚酸酯","goldCost":100,"costs":[{"id":"30031","name":"酯原料","rarity":0,"count":3}],"extraOutcome":[{"id":"30011","name":"源岩","rarity":0,"count":1,"weight":15},{"id":"30021","name":"代糖","rarity":0,"count":1,"weight":10},{"id":"30031","name":"酯原料","rarity":0,"count":1,"weight":10},{"id":"30041","name":"异铁碎片","rarity":0,"count":1,"weight":8},{"id":"30051","name":"双酮","rarity":0,"count":1,"weight":8},{"id":"30061","name":"破损装置","rarity":0,"count":1,"weight":6}],"totalWeight":57},{"id":"30033","name":"聚酸酯组","goldCost":200,"costs":[{"id":"30032","name":"聚酸酯","rarity":1,"count":4}],"extraOutcome":[{"id":"30012","name":"固源岩","rarity":1,"count":1,"weight":15},{"id":"30022","name":"糖","rarity":1,"count":1,"weight":10},{"id":"30032","name":"聚酸酯","rarity":1,"count":1,"weight":10},{"id":"30042","name":"异铁","rarity":1,"count":1,"weight":8},{"id":"30052","name":"酮凝集","rarity":1,"count":1,"weight":8},{"id":"30062","name":"装置","rarity":1,"count":1,"weight":6}],"totalWeight":57},{"id":"30034","name":"聚酸酯块","goldCost":300,"costs":[{"id":"30033","name":"聚酸酯组","rarity":2,"count":2},{"id":"30053","name":"酮凝集组","rarity":2,"count":1},{"id":"30073","name":"扭转醇","rarity":2,"count":1}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609},{"id":"30022","name":"糖","goldCost":100,"costs":[{"id":"30021","name":"代糖","rarity":0,"count":3}],"extraOutcome":[{"id":"30011","name":"源岩","rarity":0,"count":1,"weight":15},{"id":"30021","name":"代糖","rarity":0,"count":1,"weight":10},{"id":"30031","name":"酯原料","rarity":0,"count":1,"weight":10},{"id":"30041","name":"异铁碎片","rarity":0,"count":1,"weight":8},{"id":"30051","name":"双酮","rarity":0,"count":1,"weight":8},{"id":"30061","name":"破损装置","rarity":0,"count":1,"weight":6}],"totalWeight":57},{"id":"30023","name":"糖组","goldCost":200,"costs":[{"id":"30022","name":"糖","rarity":1,"count":4}],"extraOutcome":[{"id":"30012","name":"固源岩","rarity":1,"count":1,"weight":15},{"id":"30022","name":"糖","rarity":1,"count":1,"weight":10},{"id":"30032","name":"聚酸酯","rarity":1,"count":1,"weight":10},{"id":"30042","name":"异铁","rarity":1,"count":1,"weight":8},{"id":"30052","name":"酮凝集","rarity":1,"count":1,"weight":8},{"id":"30062","name":"装置","rarity":1,"count":1,"weight":6}],"totalWeight":57},{"id":"30024","name":"糖聚块","goldCost":300,"costs":[{"id":"30023","name":"糖组","rarity":2,"count":2},{"id":"30043","name":"异铁组","rarity":2,"count":1},{"id":"30083","name":"轻锰矿","rarity":2,"count":1}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609},{"id":"30012","name":"固源岩","goldCost":100,"costs":[{"id":"30011","name":"源岩","rarity":0,"count":3}],"extraOutcome":[{"id":"30011","name":"源岩","rarity":0,"count":1,"weight":15},{"id":"30021","name":"代糖","rarity":0,"count":1,"weight":10},{"id":"30031","name":"酯原料","rarity":0,"count":1,"weight":10},{"id":"30041","name":"异铁碎片","rarity":0,"count":1,"weight":8},{"id":"30051","name":"双酮","rarity":0,"count":1,"weight":8},{"id":"30061","name":"破损装置","rarity":0,"count":1,"weight":6}],"totalWeight":57},{"id":"30013","name":"固源岩组","goldCost":200,"costs":[{"id":"30012","name":"固源岩","rarity":1,"count":5}],"extraOutcome":[{"id":"30012","name":"固源岩","rarity":1,"count":1,"weight":15},{"id":"30022","name":"糖","rarity":1,"count":1,"weight":10},{"id":"30032","name":"聚酸酯","rarity":1,"count":1,"weight":10},{"id":"30042","name":"异铁","rarity":1,"count":1,"weight":8},{"id":"30052","name":"酮凝集","rarity":1,"count":1,"weight":8},{"id":"30062","name":"装置","rarity":1,"count":1,"weight":6}],"totalWeight":57},{"id":"30014","name":"提纯源岩","goldCost":300,"costs":[{"id":"30013","name":"固源岩组","rarity":2,"count":4}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609},{"id":"3302","name":"技巧概要·卷2","goldCost":0,"costs":[{"id":"3301","name":"技巧概要·卷1","rarity":1,"count":3}],"extraOutcome":[{"id":"3302","name":"技巧概要·卷2","rarity":2,"count":1,"weight":100}],"totalWeight":100},{"id":"3303","name":"技巧概要·卷3","goldCost":0,"costs":[{"id":"3302","name":"技巧概要·卷2","rarity":2,"count":3}],"extraOutcome":[{"id":"3303","name":"技巧概要·卷3","rarity":3,"count":1,"weight":100}],"totalWeight":100},{"id":"3231","name":"重装芯片","goldCost":0,"costs":[{"id":"3261","name":"医疗芯片","rarity":2,"count":3}],"extraOutcome":[{"id":"3231","name":"重装芯片","rarity":2,"count":1,"weight":100},{"id":"3261","name":"医疗芯片","rarity":2,"count":1,"weight":100},{"id":"3241","name":"狙击芯片","rarity":2,"count":1,"weight":100},{"id":"3251","name":"术师芯片","rarity":2,"count":1,"weight":100},{"id":"3211","name":"先锋芯片","rarity":2,"count":1,"weight":100},{"id":"3271","name":"辅助芯片","rarity":2,"count":1,"weight":100},{"id":"3221","name":"近卫芯片","rarity":2,"count":1,"weight":100},{"id":"3281","name":"特种芯片","rarity":2,"count":1,"weight":100}],"totalWeight":800},{"id":"3261","name":"医疗芯片","goldCost":0,"costs":[{"id":"3231","name":"重装芯片","rarity":2,"count":3}],"extraOutcome":[{"id":"3231","name":"重装芯片","rarity":2,"count":1,"weight":100},{"id":"3261","name":"医疗芯片","rarity":2,"count":1,"weight":100},{"id":"3241","name":"狙击芯片","rarity":2,"count":1,"weight":100},{"id":"3251","name":"术师芯片","rarity":2,"count":1,"weight":100},{"id":"3211","name":"先锋芯片","rarity":2,"count":1,"weight":100},{"id":"3271","name":"辅助芯片","rarity":2,"count":1,"weight":100},{"id":"3221","name":"近卫芯片","rarity":2,"count":1,"weight":100},{"id":"3281","name":"特种芯片","rarity":2,"count":1,"weight":100}],"totalWeight":800},{"id":"3241","name":"狙击芯片","goldCost":0,"costs":[{"id":"3251","name":"术师芯片","rarity":2,"count":3}],"extraOutcome":[{"id":"3231","name":"重装芯片","rarity":2,"count":1,"weight":100},{"id":"3261","name":"医疗芯片","rarity":2,"count":1,"weight":100},{"id":"3241","name":"狙击芯片","rarity":2,"count":1,"weight":100},{"id":"3251","name":"术师芯片","rarity":2,"count":1,"weight":100},{"id":"3211","name":"先锋芯片","rarity":2,"count":1,"weight":100},{"id":"3271","name":"辅助芯片","rarity":2,"count":1,"weight":100},{"id":"3221","name":"近卫芯片","rarity":2,"count":1,"weight":100},{"id":"3281","name":"特种芯片","rarity":2,"count":1,"weight":100}],"totalWeight":800},{"id":"3251","name":"术师芯片","goldCost":0,"costs":[{"id":"3241","name":"狙击芯片","rarity":2,"count":3}],"extraOutcome":[{"id":"3231","name":"重装芯片","rarity":2,"count":1,"weight":100},{"id":"3261","name":"医疗芯片","rarity":2,"count":1,"weight":100},{"id":"3241","name":"狙击芯片","rarity":2,"count":1,"weight":100},{"id":"3251","name":"术师芯片","rarity":2,"count":1,"weight":100},{"id":"3211","name":"先锋芯片","rarity":2,"count":1,"weight":100},{"id":"3271","name":"辅助芯片","rarity":2,"count":1,"weight":100},{"id":"3221","name":"近卫芯片","rarity":2,"count":1,"weight":100},{"id":"3281","name":"特种芯片","rarity":2,"count":1,"weight":100}],"totalWeight":800},{"id":"3211","name":"先锋芯片","goldCost":0,"costs":[{"id":"3271","name":"辅助芯片","rarity":2,"count":3}],"extraOutcome":[{"id":"3231","name":"重装芯片","rarity":2,"count":1,"weight":100},{"id":"3261","name":"医疗芯片","rarity":2,"count":1,"weight":100},{"id":"3241","name":"狙击芯片","rarity":2,"count":1,"weight":100},{"id":"3251","name":"术师芯片","rarity":2,"count":1,"weight":100},{"id":"3211","name":"先锋芯片","rarity":2,"count":1,"weight":100},{"id":"3271","name":"辅助芯片","rarity":2,"count":1,"weight":100},{"id":"3221","name":"近卫芯片","rarity":2,"count":1,"weight":100},{"id":"3281","name":"特种芯片","rarity":2,"count":1,"weight":100}],"totalWeight":800},{"id":"3271","name":"辅助芯片","goldCost":0,"costs":[{"id":"3211","name":"先锋芯片","rarity":2,"count":3}],"extraOutcome":[{"id":"3231","name":"重装芯片","rarity":2,"count":1,"weight":100},{"id":"3261","name":"医疗芯片","rarity":2,"count":1,"weight":100},{"id":"3241","name":"狙击芯片","rarity":2,"count":1,"weight":100},{"id":"3251","name":"术师芯片","rarity":2,"count":1,"weight":100},{"id":"3211","name":"先锋芯片","rarity":2,"count":1,"weight":100},{"id":"3271","name":"辅助芯片","rarity":2,"count":1,"weight":100},{"id":"3221","name":"近卫芯片","rarity":2,"count":1,"weight":100},{"id":"3281","name":"特种芯片","rarity":2,"count":1,"weight":100}],"totalWeight":800},{"id":"3221","name":"近卫芯片","goldCost":0,"costs":[{"id":"3281","name":"特种芯片","rarity":2,"count":3}],"extraOutcome":[{"id":"3231","name":"重装芯片","rarity":2,"count":1,"weight":100},{"id":"3261","name":"医疗芯片","rarity":2,"count":1,"weight":100},{"id":"3241","name":"狙击芯片","rarity":2,"count":1,"weight":100},{"id":"3251","name":"术师芯片","rarity":2,"count":1,"weight":100},{"id":"3211","name":"先锋芯片","rarity":2,"count":1,"weight":100},{"id":"3271","name":"辅助芯片","rarity":2,"count":1,"weight":100},{"id":"3221","name":"近卫芯片","rarity":2,"count":1,"weight":100},{"id":"3281","name":"特种芯片","rarity":2,"count":1,"weight":100}],"totalWeight":800},{"id":"3281","name":"特种芯片","goldCost":0,"costs":[{"id":"3221","name":"近卫芯片","rarity":2,"count":3}],"extraOutcome":[{"id":"3231","name":"重装芯片","rarity":2,"count":1,"weight":100},{"id":"3261","name":"医疗芯片","rarity":2,"count":1,"weight":100},{"id":"3241","name":"狙击芯片","rarity":2,"count":1,"weight":100},{"id":"3251","name":"术师芯片","rarity":2,"count":1,"weight":100},{"id":"3211","name":"先锋芯片","rarity":2,"count":1,"weight":100},{"id":"3271","name":"辅助芯片","rarity":2,"count":1,"weight":100},{"id":"3221","name":"近卫芯片","rarity":2,"count":1,"weight":100},{"id":"3281","name":"特种芯片","rarity":2,"count":1,"weight":100}],"totalWeight":800},{"id":"3232","name":"重装芯片组","goldCost":0,"costs":[{"id":"3262","name":"医疗芯片组","rarity":3,"count":3}],"extraOutcome":[{"id":"3232","name":"重装芯片组","rarity":3,"count":1,"weight":100},{"id":"3262","name":"医疗芯片组","rarity":3,"count":1,"weight":100},{"id":"3242","name":"狙击芯片组","rarity":3,"count":1,"weight":100},{"id":"3252","name":"术师芯片组","rarity":3,"count":1,"weight":100},{"id":"3212","name":"先锋芯片组","rarity":3,"count":1,"weight":100},{"id":"3272","name":"辅助芯片组","rarity":3,"count":1,"weight":100},{"id":"3222","name":"近卫芯片组","rarity":3,"count":1,"weight":100},{"id":"3282","name":"特种芯片组","rarity":3,"count":1,"weight":100}],"totalWeight":800},{"id":"3262","name":"医疗芯片组","goldCost":0,"costs":[{"id":"3232","name":"重装芯片组","rarity":3,"count":3}],"extraOutcome":[{"id":"3232","name":"重装芯片组","rarity":3,"count":1,"weight":100},{"id":"3262","name":"医疗芯片组","rarity":3,"count":1,"weight":100},{"id":"3242","name":"狙击芯片组","rarity":3,"count":1,"weight":100},{"id":"3252","name":"术师芯片组","rarity":3,"count":1,"weight":100},{"id":"3212","name":"先锋芯片组","rarity":3,"count":1,"weight":100},{"id":"3272","name":"辅助芯片组","rarity":3,"count":1,"weight":100},{"id":"3222","name":"近卫芯片组","rarity":3,"count":1,"weight":100},{"id":"3282","name":"特种芯片组","rarity":3,"count":1,"weight":100}],"totalWeight":800},{"id":"3242","name":"狙击芯片组","goldCost":0,"costs":[{"id":"3252","name":"术师芯片组","rarity":3,"count":3}],"extraOutcome":[{"id":"3232","name":"重装芯片组","rarity":3,"count":1,"weight":100},{"id":"3262","name":"医疗芯片组","rarity":3,"count":1,"weight":100},{"id":"3242","name":"狙击芯片组","rarity":3,"count":1,"weight":100},{"id":"3252","name":"术师芯片组","rarity":3,"count":1,"weight":100},{"id":"3212","name":"先锋芯片组","rarity":3,"count":1,"weight":100},{"id":"3272","name":"辅助芯片组","rarity":3,"count":1,"weight":100},{"id":"3222","name":"近卫芯片组","rarity":3,"count":1,"weight":100},{"id":"3282","name":"特种芯片组","rarity":3,"count":1,"weight":100}],"totalWeight":800},{"id":"3252","name":"术师芯片组","goldCost":0,"costs":[{"id":"3242","name":"狙击芯片组","rarity":3,"count":3}],"extraOutcome":[{"id":"3232","name":"重装芯片组","rarity":3,"count":1,"weight":100},{"id":"3262","name":"医疗芯片组","rarity":3,"count":1,"weight":100},{"id":"3242","name":"狙击芯片组","rarity":3,"count":1,"weight":100},{"id":"3252","name":"术师芯片组","rarity":3,"count":1,"weight":100},{"id":"3212","name":"先锋芯片组","rarity":3,"count":1,"weight":100},{"id":"3272","name":"辅助芯片组","rarity":3,"count":1,"weight":100},{"id":"3222","name":"近卫芯片组","rarity":3,"count":1,"weight":100},{"id":"3282","name":"特种芯片组","rarity":3,"count":1,"weight":100}],"totalWeight":800},{"id":"3212","name":"先锋芯片组","goldCost":0,"costs":[{"id":"3272","name":"辅助芯片组","rarity":3,"count":3}],"extraOutcome":[{"id":"3232","name":"重装芯片组","rarity":3,"count":1,"weight":100},{"id":"3262","name":"医疗芯片组","rarity":3,"count":1,"weight":100},{"id":"3242","name":"狙击芯片组","rarity":3,"count":1,"weight":100},{"id":"3252","name":"术师芯片组","rarity":3,"count":1,"weight":100},{"id":"3212","name":"先锋芯片组","rarity":3,"count":1,"weight":100},{"id":"3272","name":"辅助芯片组","rarity":3,"count":1,"weight":100},{"id":"3222","name":"近卫芯片组","rarity":3,"count":1,"weight":100},{"id":"3282","name":"特种芯片组","rarity":3,"count":1,"weight":100}],"totalWeight":800},{"id":"3272","name":"辅助芯片组","goldCost":0,"costs":[{"id":"3212","name":"先锋芯片组","rarity":3,"count":3}],"extraOutcome":[{"id":"3232","name":"重装芯片组","rarity":3,"count":1,"weight":100},{"id":"3262","name":"医疗芯片组","rarity":3,"count":1,"weight":100},{"id":"3242","name":"狙击芯片组","rarity":3,"count":1,"weight":100},{"id":"3252","name":"术师芯片组","rarity":3,"count":1,"weight":100},{"id":"3212","name":"先锋芯片组","rarity":3,"count":1,"weight":100},{"id":"3272","name":"辅助芯片组","rarity":3,"count":1,"weight":100},{"id":"3222","name":"近卫芯片组","rarity":3,"count":1,"weight":100},{"id":"3282","name":"特种芯片组","rarity":3,"count":1,"weight":100}],"totalWeight":800},{"id":"3222","name":"近卫芯片组","goldCost":0,"costs":[{"id":"3282","name":"特种芯片组","rarity":3,"count":3}],"extraOutcome":[{"id":"3232","name":"重装芯片组","rarity":3,"count":1,"weight":100},{"id":"3262","name":"医疗芯片组","rarity":3,"count":1,"weight":100},{"id":"3242","name":"狙击芯片组","rarity":3,"count":1,"weight":100},{"id":"3252","name":"术师芯片组","rarity":3,"count":1,"weight":100},{"id":"3212","name":"先锋芯片组","rarity":3,"count":1,"weight":100},{"id":"3272","name":"辅助芯片组","rarity":3,"count":1,"weight":100},{"id":"3222","name":"近卫芯片组","rarity":3,"count":1,"weight":100},{"id":"3282","name":"特种芯片组","rarity":3,"count":1,"weight":100}],"totalWeight":800},{"id":"3282","name":"特种芯片组","goldCost":0,"costs":[{"id":"3222","name":"近卫芯片组","rarity":3,"count":3}],"extraOutcome":[{"id":"3232","name":"重装芯片组","rarity":3,"count":1,"weight":100},{"id":"3262","name":"医疗芯片组","rarity":3,"count":1,"weight":100},{"id":"3242","name":"狙击芯片组","rarity":3,"count":1,"weight":100},{"id":"3252","name":"术师芯片组","rarity":3,"count":1,"weight":100},{"id":"3212","name":"先锋芯片组","rarity":3,"count":1,"weight":100},{"id":"3272","name":"辅助芯片组","rarity":3,"count":1,"weight":100},{"id":"3222","name":"近卫芯片组","rarity":3,"count":1,"weight":100},{"id":"3282","name":"特种芯片组","rarity":3,"count":1,"weight":100}],"totalWeight":800},{"id":"31024","name":"炽合金块","goldCost":300,"costs":[{"id":"30063","name":"全新装置","rarity":2,"count":1},{"id":"30093","name":"研磨石","rarity":2,"count":1},{"id":"31023","name":"炽合金","rarity":2,"count":1}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609},{"id":"31014","name":"聚合凝胶","goldCost":300,"costs":[{"id":"30043","name":"异铁组","rarity":2,"count":1},{"id":"31013","name":"凝胶","rarity":2,"count":1},{"id":"31023","name":"炽合金","rarity":2,"count":1}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609},{"id":"30145","name":"晶体电子单元","goldCost":400,"costs":[{"id":"31034","name":"晶体电路","rarity":3,"count":1},{"id":"31014","name":"聚合凝胶","rarity":3,"count":2},{"id":"31024","name":"炽合金块","rarity":3,"count":1}],"extraOutcome":[{"id":"30014","name":"提纯源岩","rarity":3,"count":1,"weight":84},{"id":"30024","name":"糖聚块","rarity":3,"count":1,"weight":63},{"id":"30034","name":"聚酸酯块","rarity":3,"count":1,"weight":63},{"id":"30044","name":"异铁块","rarity":3,"count":1,"weight":56},{"id":"30054","name":"酮阵列","rarity":3,"count":1,"weight":56},{"id":"30064","name":"改量装置","rarity":3,"count":1,"weight":42},{"id":"30074","name":"白马醇","rarity":3,"count":1,"weight":72},{"id":"30084","name":"三水锰矿","rarity":3,"count":1,"weight":63},{"id":"30094","name":"五水研磨石","rarity":3,"count":1,"weight":63},{"id":"30104","name":"RMA70-24","rarity":3,"count":1,"weight":56},{"id":"31014","name":"聚合凝胶","rarity":3,"count":1,"weight":72},{"id":"31024","name":"炽合金块","rarity":3,"count":1,"weight":63},{"id":"31034","name":"晶体电路","rarity":3,"count":1,"weight":56},{"id":"31044","name":"精炼溶剂","rarity":3,"count":1,"weight":63},{"id":"31054","name":"切削原液","rarity":3,"count":1,"weight":63}],"totalWeight":935},{"id":"31034","name":"晶体电路","goldCost":300,"costs":[{"id":"31033","name":"晶体元件","rarity":2,"count":2},{"id":"31013","name":"凝胶","rarity":2,"count":1},{"id":"31023","name":"炽合金","rarity":2,"count":1}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609},{"id":"31044","name":"精炼溶剂","goldCost":300,"costs":[{"id":"31043","name":"半自然溶剂","rarity":2,"count":1},{"id":"31053","name":"化合切削液","rarity":2,"count":1},{"id":"31013","name":"凝胶","rarity":2,"count":1}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609},{"id":"31054","name":"切削原液","goldCost":300,"costs":[{"id":"31053","name":"化合切削液","rarity":2,"count":1},{"id":"31033","name":"晶体元件","rarity":2,"count":1},{"id":"30103","name":"RMA70-12","rarity":2,"count":1}],"extraOutcome":[{"id":"30013","name":"固源岩组","rarity":2,"count":1,"weight":60},{"id":"30023","name":"糖组","rarity":2,"count":1,"weight":50},{"id":"30033","name":"聚酸酯组","rarity":2,"count":1,"weight":50},{"id":"30043","name":"异铁组","rarity":2,"count":1,"weight":40},{"id":"30053","name":"酮凝集组","rarity":2,"count":1,"weight":40},{"id":"30063","name":"全新装置","rarity":2,"count":1,"weight":30},{"id":"30073","name":"扭转醇","rarity":2,"count":1,"weight":45},{"id":"30083","name":"轻锰矿","rarity":2,"count":1,"weight":40},{"id":"30093","name":"研磨石","rarity":2,"count":1,"weight":36},{"id":"30103","name":"RMA70-12","rarity":2,"count":1,"weight":30},{"id":"31013","name":"凝胶","rarity":2,"count":1,"weight":36},{"id":"31023","name":"炽合金","rarity":2,"count":1,"weight":40},{"id":"31033","name":"晶体元件","rarity":2,"count":1,"weight":40},{"id":"31043","name":"半自然溶剂","rarity":2,"count":1,"weight":36},{"id":"31053","name":"化合切削液","rarity":2,"count":1,"weight":36}],"totalWeight":609}]
    

    It is generated by the following script, with building_data.json and item_table.json.

    const fs = require("fs");
    
    const building_data_json = JSON.parse(fs.readFileSync("./building_data.json", "utf8"));
    const item_table_json = JSON.parse(fs.readFileSync("./item_table.json", "utf8"));
    
    const items = item_table_json.items;
    const rawFormulas = building_data_json.workshopFormulas;
    const newFormulas = Object.entries(rawFormulas).map(([, formula]) => {
      let costs = formula.costs.map((costItem) => ({
        id: costItem.id,
        name: items[costItem.id].name,
        rarity: items[costItem.id].rarity,
        count: costItem.count,
      }));
      let extraOutcome = formula.extraOutcomeGroup.map((extraOutcomeItem) => ({
        id: extraOutcomeItem.itemId,
        name: items[extraOutcomeItem.itemId].name,
        rarity: items[extraOutcomeItem.itemId].rarity,
        count: extraOutcomeItem.itemCount,
        weight: extraOutcomeItem.weight,
      }));
      let totalWeight = extraOutcome.map((extraOutcomeItem) => extraOutcomeItem.weight).reduce((a, b) => a + b, 0);
      let newFormula = {
        id: formula.itemId,
        name: items[formula.itemId].name,
        goldCost: formula.goldCost,
        costs: costs,
        extraOutcome: extraOutcome,
        totalWeight: totalWeight,
      };
      return newFormula;
    });
    
    fs.writeFileSync("./formulas.json", JSON.stringify(newFormulas, null, null));
    
  • feat: isolate the spawn of report consumer workers and service

    feat: isolate the spawn of report consumer workers and service

    further isolate the report consumer worker spawn and report service.

    Reason: Since the calc workers are spawned separately, so should the report consumer workers.

    And maybe we can specify the number of workers in config.Config and add an environment variable when starting the whole server? And we can intentionally leave it blank to use the default value that equals the number of CPUs

  • K8s Migration: Containerize Services

    K8s Migration: Containerize Services

    Services to containerize

    • [x] backend-next: Website Next Backend
    • [x] frontend-v2: Website v2 Frontend
    • [x] widget-backend: Widget Backend
      • [x] widget-docs: Widget Docs
      • [x] widget-frontend: Widget Frontend
    • [x] planner: Planner Backend
    • [x] probe: Probe Service
      • [x] prometheus: Prometheus DB
      • [x] grafana: Grafana Dashboard
  • Arkplanner returns with only

    Arkplanner returns with only "Operation Barrenland Supplies"

    This happens on US, JP, and KR servers, but not on CN.

    These items cannot be disabled in excludes or options either. image

    Planner also shows some synthesis that doesn't make any sense, as I have more than needed, and it's not used in other synthesis either. For example: Bipolar Nanoflakes (have: 4, required: 0) image

    The export of the request I'm trying to send:

    {"@type":"@penguin-statistics/planner/config","items":[{"id":"30135","have":1,"need":4},{"id":"30125","have":4},{"id":"30115","have":1,"need":4},{"id":"30074","have":27},{"id":"30073","have":130},{"id":"30084","have":10,"need":4},{"id":"30083","have":2,"need":3},{"id":"30093","have":24},{"id":"30104","need":2},{"id":"30103","have":84},{"id":"30013","need":6},{"id":"30012","have":62},{"id":"30011","have":20},{"id":"30064","have":6,"need":5},{"id":"30063","have":2},{"id":"30062","have":46},{"id":"30061","have":33},{"id":"30034","have":5},{"id":"30033","have":53},{"id":"30032","have":113},{"id":"30031","have":104},{"id":"30024","have":4},{"id":"30023","have":6},{"id":"30022","have":114},{"id":"30021","have":83},{"id":"30044","have":19,"need":8},{"id":"30043","have":17},{"id":"30042","have":69},{"id":"30041","have":16},{"id":"30054","have":3},{"id":"30053","have":10},{"id":"30052","have":42},{"id":"30051","have":29},{"id":"31014","need":3},{"id":"31013","have":10},{"id":"31024","have":20,"need":5},{"id":"31023","have":5},{"id":"30145","have":2},{"id":"31034","have":3},{"id":"31033","have":31},{"id":"31044","have":16},{"id":"31043","have":37},{"id":"31054","have":19},{"id":"31053","have":24}],"options":{"byProduct":false,"requireExp":false,"requireLmb":false},"excludes":[]}
    

    Request that gets sent:

    {"required":{"30013":6,"30044":8,"30064":5,"30083":3,"30084":4,"30104":2,"30115":4,"30135":4,"31014":3,"31024":5},"owned":{"30011":20,"30012":62,"30021":83,"30022":114,"30023":6,"30024":4,"30031":104,"30032":113,"30033":53,"30034":5,"30041":16,"30042":69,"30043":17,"30044":19,"30051":29,"30052":42,"30053":10,"30054":3,"30061":33,"30062":46,"30063":2,"30064":6,"30073":130,"30074":27,"30083":2,"30084":10,"30093":24,"30103":84,"30115":1,"30125":4,"30135":1,"30145":2,"31013":10,"31023":5,"31024":20,"31033":31,"31034":3,"31043":37,"31044":16,"31053":24,"31054":19},"extra_outc":false,"exp_demand":false,"gold_demand":false,"input_lang":"id","output_lang":"id","server":"US"}
    

    Server response:

    {"cost":11342,"gcost":79133,"gold":136114,"exp":0,"stages":[{"stageId":"randomMaterialRune_0","stage":"randomMaterialRune_0","count":"115","items":{"30013":"14","30063":"8","30033":"9","30023":"9","30043":"9","30053":"8","30073":"12","30083":"9","30093":"8","30103":"8","31013":"8","31023":"11"}}],"syntheses":[{"target":"30135","count":"3","materials":{"30084":"3.0","30094":"3.0","30104":"3.0"}},{"target":"30125","count":"1","materials":{"30064":"0.7","30074":"1.3"}},{"target":"30115","count":"3","materials":{"30014":"3.0","30044":"3.0","30054":"3.0"}},{"target":"30104","count":"5","materials":{"30103":"5.0","30013":"10.0","30053":"5.0"}},{"target":"30094","count":"17","materials":{"30093":"16.5","30043":"16.5","30063":"16.5"}},{"target":"30084","count":"3","materials":{"30083":"5.3","30033":"2.6","30073":"2.6"}},{"target":"30074","count":"46","materials":{"30073":"45.6","30023":"45.6","30103":"45.6"}},{"target":"30062","count":"10","materials":{"30061":"29.4"}},{"target":"30063","count":"14","materials":{"30062":"53.0"}},{"target":"30052","count":"9","materials":{"30051":"25.5"}},{"target":"30053","count":"12","materials":{"30052":"47.7"}},{"target":"30054","count":"1","materials":{"30053":"1.8","30023":"0.9","30083":"0.9"}},{"target":"30042","count":"5","materials":{"30041":"12.3"}},{"target":"30043","count":"17","materials":{"30042":"68.2"}},{"target":"30044","count":"5","materials":{"30043":"8.9","30063":"4.5","30033":"4.5"}},{"target":"30032","count":"33","materials":{"30031":"97.4"}},{"target":"30033","count":"35","materials":{"30032":"138.2"}},{"target":"30034","count":"23","materials":{"30033":"44.8","30053":"22.4","30073":"22.4"}},{"target":"30022","count":"26","materials":{"30021":"78.3"}},{"target":"30023","count":"34","materials":{"30022":"136.4"}},{"target":"30024","count":"1","materials":{"30023":"1.1","30043":"0.6","30083":"0.6"}},{"target":"30012","count":"7","materials":{"30011":"20.0"}},{"target":"30013","count":"14","materials":{"30012":"68.7"}},{"target":"30014","count":"3","materials":{"30013":"12.0"}},{"target":"31024","count":"1","materials":{"30063":"1.0","30093":"1.0","31023":"1.0"}},{"target":"31014","count":"12","materials":{"30043":"11.3","31013":"11.3","31023":"11.3"}},{"target":"30145","count":"4","materials":{"31034":"3.4","31014":"6.8","31024":"3.4"}},{"target":"31034","count":"3","materials":{"31033":"4.8","31013":"2.4","31023":"2.4"}},{"target":"31044","count":"3","materials":{"31043":"2.2","31053":"2.2","31013":"2.2"}},{"target":"31054","count":"21","materials":{"31053":"20.2","31033":"20.2","30103":"20.2"}}],"values":[{"level":"5","items":[{"name":"30115","value":"3180.25"},{"name":"30135","value":"1590.12"},{"name":"30155","value":"379.88"},{"name":"30125","value":"0.00000"},{"name":"30145","value":"0.00000"}]},{"level":"4","items":[{"name":"30014","value":"3180.25"},{"name":"30104","value":"1590.12"},{"name":"31064","value":"379.88"},{"name":"30064","value":"0.00001"},{"name":"30034","value":"0.00000"},{"name":"30024","value":"0.00000"},{"name":"30044","value":"0.00000"},{"name":"30054","value":"0.00000"},{"name":"30074","value":"0.00000"},{"name":"30084","value":"0.00000"},{"name":"30094","value":"0.00000"},{"name":"31014","value":"0.00000"},{"name":"31024","value":"0.00000"},{"name":"31034","value":"0.00000"},{"name":"31044","value":"0.00000"},{"name":"31054","value":"0.00000"}]},{"level":"3","items":[{"name":"30013","value":"795.06"},{"name":"31063","value":"379.88"},{"name":"30063","value":"0.00000"},{"name":"30033","value":"0.00000"},{"name":"30023","value":"0.00000"},{"name":"30043","value":"0.00000"},{"name":"30053","value":"0.00000"},{"name":"30073","value":"0.00000"},{"name":"30083","value":"0.00000"},{"name":"30093","value":"0.00000"},{"name":"30103","value":"0.00000"},{"name":"31013","value":"0.00000"},{"name":"31023","value":"0.00000"},{"name":"31033","value":"0.00000"},{"name":"31043","value":"0.00000"},{"name":"31053","value":"0.00000"}]},{"level":"2","items":[{"name":"30012","value":"159.01"},{"name":"30062","value":"0.00000"},{"name":"30032","value":"0.00000"},{"name":"30022","value":"0.00000"},{"name":"30042","value":"0.00000"},{"name":"30052","value":"0.00000"}]},{"level":"1","items":[{"name":"30011","value":"53.00"},{"name":"30061","value":"0.00000"},{"name":"30031","value":"0.00000"},{"name":"30021","value":"0.00000"},{"name":"30041","value":"0.00000"},{"name":"30051","value":"0.00000"}]}]}
    
  • fix(deps): update golang.org/x/exp digest to a9213ee

    fix(deps): update golang.org/x/exp digest to a9213ee

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | golang.org/x/exp | require | digest | 39d4317 -> a9213ee |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

  • chore(deps): update docker/build-push-action digest to 1527803

    chore(deps): update docker/build-push-action digest to 1527803

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | docker/build-push-action | action | digest | ad44023 -> 1527803 |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

  • NATS Slow Consumer Mitigation

    NATS Slow Consumer Mitigation

    When NATS encountered a slow consumer it will drop the message, losing the report content. This has happened before extremely rarely but still have a huge potential to go wrong in the future, especially when we migrate to the k8s cluster

  • Migrate to Go 1.18!

    Migrate to Go 1.18!

    Go 1.18 has been released 8 hours ago (https://go.dev/blog/go1.18). Migrate to use the terrific Generics and Fuzzing features and 20% Performance Improvements (says the article)!

  • fix(deps): update github.com/gofiber/contrib/fibersentry digest to 99317a0

    fix(deps): update github.com/gofiber/contrib/fibersentry digest to 99317a0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/gofiber/contrib/fibersentry | require | digest | 8ccfafc -> 99317a0 |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module github.com/avast/retry-go to v3.1.1

    fix(deps): update module github.com/avast/retry-go to v3.1.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/avast/retry-go | require | minor | v3.0.0+incompatible -> v3.1.1 |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Renovate will not automatically rebase this PR, because other commits have been found.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox. ⚠ Warning: custom changes will be lost.

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update github.com/gofiber/contrib/otelfiber digest to ac38bf6

    fix(deps): update github.com/gofiber/contrib/otelfiber digest to ac38bf6

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/gofiber/contrib/otelfiber | require | digest | 9259926 -> ac38bf6 |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update github.com/gofiber/contrib/fibersentry digest to ac38bf6

    fix(deps): update github.com/gofiber/contrib/fibersentry digest to ac38bf6

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/gofiber/contrib/fibersentry | require | digest | 9259926 -> ac38bf6 |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module github.com/avast/retry-go/v4 to v4.3.2

    fix(deps): update module github.com/avast/retry-go/v4 to v4.3.2

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/avast/retry-go/v4 | require | patch | v4.3.1 -> v4.3.2 |


    Release Notes

    avast/retry-go

    v4.3.2

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module github.com/nats-io/nats.go to v1.22.1

    fix(deps): update module github.com/nats-io/nats.go to v1.22.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/nats-io/nats.go | require | patch | v1.22.0 -> v1.22.1 |


    Release Notes

    nats-io/nats.go

    v1.22.1

    Compare Source

    Changelog

    Changed
    • Service API:
      • Monitoring subjects for a service are no longer uppercase (#​1166)
      • Changed RequestHandler signature to no longer return an error (#​1166)
    Complete Changes

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module go.uber.org/fx to v1.19.0

    fix(deps): update module go.uber.org/fx to v1.19.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | go.uber.org/fx | require | minor | v1.18.1 -> v1.19.0 |


    Release Notes

    uber-go/fx

    v1.19.0

    Compare Source

    Added
    • fx.RecoverFromPanics Option which allows Fx to recover from user-provided constructors and invoked functions.
    • fx.Private that allows the constructor to limit the scope of its outputs to the wrapping fx.Module.
    • ExitCode ShutdownOption which allows setting custom exit code at the end of app lifecycle.
    • Wait which returns a channel that can be used for waiting on application shutdown.
    • fxevent/ZapLogger now exposes UseLogLevel and UseErrorLevel methods to set the level of the Zap logs produced by it.
    • Add lifecycle hook-convertible methods: StartHook, StopHook, StartStopHook that can be used with more function signatures.
    Changed
    • fx.WithLogger can now be passed at fx.Module level, setting custom logger at Module scope instead of the whole App.
    Fixed
    • fx.OnStart and fx.OnStop Annotations now work with annotated types that was provided by the annotated constructor.
    • fxevent/ZapLogger: Errors from fx.Supply are now logged at Error level, not Info.
    • A race condition in lifecycle Start/Stop methods.
    • Typos in docs.

    v1.18.2

    Compare Source

    Added

    • Clarify ordering of Invokes in Modules.

    Fixed

    • Fix Decorate not being applied to transitive dependencies at root App level.


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

Logging library for Leadjet backend services

Logger Logging library for Leadjet backend services. Install go get -u github.com/Leadjet/logger Usage Initiate a Zap logger; err := zap.RegisterLog(

Feb 21, 2022
Backend APIs for Hello Profile

Hello Profile Backend Service Backend application for Hello profile. Description This is the backend application for Hello profile. The application is

Dec 12, 2021
An Example about how React can be bootstrapped with Go backend

go-reactjs-example This is an exmple web use Golang(Yaelf95) And ReactJS Build Suggest install node through nvm npm install -g webpack npm install mak

Nov 27, 2021
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers

Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? How to

Oct 19, 2021
A terminal designed for anyone to use and designed for any platform

A terminal designed for anyone to use and designed for any platform. Which includes the basic features of any terminal and includes friendly commands to perform tools such as ping, traceroute, generate key pairs, encrypt/decrypt, router security actions, etc. All of the source code is done in Go.

Jan 25, 2022
Formrecevr is a simple and lightweight from receiver backend primarily designed for (but not limited to) static websites.

Formrecevr Formrecevr (pronunced "Form receiver") is a simple and lightweight from receiver backend primarily designed for (but not limited to) static

Apr 17, 2022
GNU GSL Statistics library (v1.15, GPLv3) implemented in Go

Statistics Pure Go implementation of the GSL Statistics library. For the API overview see Godoc. Why create this repository when there is also "github

Nov 23, 2021
A well tested and comprehensive Golang statistics library package with no dependencies.

Stats - Golang Statistics Package A well tested and comprehensive Golang statistics library / package / module with no dependencies. If you have any s

Dec 27, 2022
Provide Go Statistics Handler, Struct, Measure Method

Go Statistics Handler About The gosh is an abbreviation for Go Statistics Handler. This Repository is provided following functions. Go runtime statist

Jan 8, 2023
:rocket: Instant live visualization of your Go application runtime statistics (GC, MemStats, etc.) in the browser
:rocket: Instant live visualization of your Go application runtime statistics (GC, MemStats, etc.) in the browser

Statsviz Instant live visualization of your Go application runtime statistics (GC, MemStats, etc.). Import "github.com/arl/statsviz" Register statsviz

Jan 3, 2023
DataFrames for Go: For statistics, machine-learning, and data manipulation/exploration
DataFrames for Go: For statistics, machine-learning, and data manipulation/exploration

Dataframes are used for statistics, machine-learning, and data manipulation/exploration. You can think of a Dataframe as an excel spreadsheet. This pa

Dec 31, 2022
Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more

Gonum Installation The core packages of the Gonum suite are written in pure Go with some assembly. Installation is done using go get. go get -u gonum.

Jan 8, 2023
GoStats is a go library for math statistics mostly used in ML domains, it covers most of the statistical measures functions.

GoStats GoStats is an Open Source Go library for math statistics mostly used in Machine Learning domains, it covers most of the Statistical measures f

Nov 10, 2022
A well tested and comprehensive Golang statistics library package with no dependencies.

Stats - Golang Statistics Package A well tested and comprehensive Golang statistics library / package / module with no dependencies. If you have any s

Dec 26, 2022
OS system statistics library for Go

OS system statistics library for Go This is a library to get system metrics like cpu load and memory usage. The library is created for mackerel-agent.

Dec 9, 2022
Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more

Gonum Installation The core packages of the Gonum suite are written in pure Go with some assembly. Installation is done using go get. go get -u gonum.

Dec 29, 2022
DataFrames for Go: For statistics, machine-learning, and data manipulation/exploration
DataFrames for Go: For statistics, machine-learning, and data manipulation/exploration

Dataframes are used for statistics, machine-learning, and data manipulation/exploration. You can think of a Dataframe as an excel spreadsheet. This pa

Jan 3, 2023
A well tested and comprehensive Golang statistics library package with no dependencies.

Stats - Golang Statistics Package A well tested and comprehensive Golang statistics library / package / module with no dependencies. If you have any s

Dec 30, 2022
Simple golang script for getting VK message statistics

vk-message-counter Simple golang script for getting VK message statistics Example package main import ( "fmt" "github.com/joho/godotenv" counter "

Apr 6, 2022