{ "mockup": { "controls": { "control": [ { "ID": "0", "typeID": "Arrow", "zOrder": "0", "w": "125", "h": "109", "measuredW": "150", "measuredH": "100", "x": "629", "y": "3227", "properties": { "color": "2848996", "curvature": "-1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 0, "y": 108 }, "p1": { "x": 0.4770542904147545, "y": 0.2455190925621266 }, "p2": { "x": 124, "y": 1 }, "rightArrow": "false", "shape": "bezier", "stroke": "solid", "text": "" } }, { "ID": "1", "typeID": "Arrow", "zOrder": "1", "w": "188", "h": "43", "measuredW": "150", "measuredH": "100", "x": "577", "y": "3054", "properties": { "color": "2848996", "curvature": "0", "direction": "bottom", "leftArrow": "false", "p0": { "x": 187, "y": 0 }, "p1": { "x": 0.45751633986928103, "y": -0.003267973856209196 }, "p2": { "x": 0, "y": 42 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "2", "typeID": "Arrow", "zOrder": "2", "w": "200", "h": "18", "measuredW": "150", "measuredH": "100", "x": "577", "y": "3042", "properties": { "color": "2848996", "curvature": "0", "direction": "bottom", "leftArrow": "false", "p0": { "x": 199, "y": 0 }, "p1": { "x": 0.4575163398692811, "y": -0.003267973856209203 }, "p2": { "x": 0, "y": 17 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "3", "typeID": "Arrow", "zOrder": "3", "w": "230", "h": "8", "measuredW": "150", "measuredH": "100", "x": "569", "y": "3026", "properties": { "color": "2848996", "curvature": "0", "direction": "top", "leftArrow": "false", "p0": { "x": 229, "y": 7 }, "p1": { "x": 0.4575163398692811, "y": -0.0032679738562092003 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "4", "typeID": "Arrow", "zOrder": "4", "w": "213", "h": "32", "measuredW": "150", "measuredH": "100", "x": "576", "y": "2992", "properties": { "color": "2848996", "curvature": "0", "direction": "top", "leftArrow": "false", "p0": { "x": 212, "y": 31 }, "p1": { "x": 0.4575163398692812, "y": -0.003267973856209213 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "5", "typeID": "Arrow", "zOrder": "5", "w": "98", "h": "91", "measuredW": "150", "measuredH": "100", "x": "659", "y": "2855", "properties": { "color": "2848996", "curvature": "-1", "direction": "top", "leftArrow": "false", "p0": { "x": 1, "y": 0 }, "p1": { "x": 0.47054747054747054, "y": -0.24636174636174635 }, "p2": { "x": 97, "y": 90 }, "rightArrow": "false", "shape": "bezier", "stroke": "solid", "text": "" } }, { "ID": "6", "typeID": "Arrow", "zOrder": "6", "w": "209", "h": "13", "measuredW": "150", "measuredH": "100", "x": "565", "y": "2491", "properties": { "color": "2848996", "curvature": "0", "direction": "top", "leftArrow": "false", "p0": { "x": 208, "y": 12 }, "p1": { "x": 0.4228667507356033, "y": 0.002311895754518708 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "7", "typeID": "Arrow", "zOrder": "7", "w": "207", "h": "13", "measuredW": "150", "measuredH": "100", "x": "577", "y": "2513", "properties": { "color": "2848996", "curvature": "0", "direction": "bottom", "leftArrow": "false", "p0": { "x": 206, "y": 0 }, "p1": { "x": 0.4228667507356031, "y": 0.002311895754518704 }, "p2": { "x": 0, "y": 12 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "8", "typeID": "Arrow", "zOrder": "8", "w": "208", "h": "49", "measuredW": "150", "measuredH": "100", "x": "581", "y": "2515", "properties": { "color": "2848996", "curvature": "0", "direction": "bottom", "leftArrow": "false", "p0": { "x": 207, "y": 0 }, "p1": { "x": 0.422866750735603, "y": 0.0023118957545186923 }, "p2": { "x": 0, "y": 48 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "9", "typeID": "Arrow", "zOrder": "9", "w": "200", "h": "46", "measuredW": "150", "measuredH": "100", "x": "585", "y": "2453", "properties": { "color": "2848996", "curvature": "0", "direction": "top", "leftArrow": "false", "p0": { "x": 199, "y": 45 }, "p1": { "x": 0.42286675073560326, "y": 0.0023118957545186824 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "10", "typeID": "Arrow", "zOrder": "10", "w": "184", "h": "72", "measuredW": "150", "measuredH": "100", "x": "591", "y": "2417", "properties": { "color": "2848996", "curvature": "0", "direction": "top", "leftArrow": "false", "p0": { "x": 183, "y": 71 }, "p1": { "x": 0.42286675073560326, "y": 0.002311895754518694 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "11", "typeID": "Arrow", "zOrder": "11", "w": "162", "h": "16", "measuredW": "150", "measuredH": "100", "x": "747", "y": "2844", "properties": { "color": "2848996", "curvature": "0", "direction": "top", "leftArrow": "false", "p0": { "x": 161, "y": 15 }, "p1": { "x": 0.457516339869281, "y": -0.0032679738562091465 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "12", "typeID": "Arrow", "zOrder": "12", "w": "162", "h": "10", "measuredW": "150", "measuredH": "100", "x": "747", "y": "2823", "properties": { "color": "2848996", "curvature": "0", "direction": "bottom", "leftArrow": "false", "p0": { "x": 161, "y": 0 }, "p1": { "x": 0.4575163398692811, "y": -0.003267973856209141 }, "p2": { "x": 0, "y": 9 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "13", "typeID": "Arrow", "zOrder": "13", "w": "149", "h": "29", "measuredW": "150", "measuredH": "100", "x": "744", "y": "2789", "properties": { "color": "2848996", "curvature": "0", "direction": "bottom", "leftArrow": "false", "p0": { "x": 148, "y": 0 }, "p1": { "x": 0.4575163398692811, "y": -0.003267973856209201 }, "p2": { "x": 0, "y": 28 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "14", "typeID": "Arrow", "zOrder": "14", "w": "158", "h": "5", "measuredW": "150", "measuredH": "100", "x": "748", "y": "2694", "properties": { "color": "2848996", "curvature": "0", "direction": "top", "leftArrow": "false", "p0": { "x": 157, "y": 4 }, "p1": { "x": 0.47363590855998666, "y": -0.003754380110128481 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "15", "typeID": "Arrow", "zOrder": "15", "w": "169", "h": "19", "measuredW": "150", "measuredH": "100", "x": "728", "y": "2665", "properties": { "color": "2848996", "curvature": "0", "direction": "bottom", "leftArrow": "false", "p0": { "x": 168, "y": 0 }, "p1": { "x": 0.4228667507356032, "y": 0.0023118957545187053 }, "p2": { "x": 0, "y": 18 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "16", "typeID": "Arrow", "zOrder": "16", "w": "374", "h": "45", "measuredW": "150", "measuredH": "100", "x": "387", "y": "2302", "properties": { "color": "2848996", "curvature": "1", "direction": "top", "leftArrow": "false", "p0": { "x": 373, "y": 10 }, "p1": { "x": 0.5494401310071896, "y": 0.10588311343182814 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "17", "typeID": "Arrow", "zOrder": "17", "w": "143", "h": "14", "measuredW": "150", "measuredH": "100", "x": "622", "y": "2273", "properties": { "color": "2848996", "curvature": "0", "direction": "top", "leftArrow": "false", "p0": { "x": 142, "y": 13 }, "p1": { "x": 0.535877637338317, "y": -0.007278807849309005 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "18", "typeID": "Arrow", "zOrder": "18", "w": "163", "h": "12", "measuredW": "150", "measuredH": "100", "x": "613", "y": "2295", "properties": { "color": "2848996", "curvature": "0", "direction": "bottom", "leftArrow": "false", "p0": { "x": 162, "y": 0 }, "p1": { "x": 0.4910385289593246, "y": 0.0004292920259006189 }, "p2": { "x": 0, "y": 11 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "19", "typeID": "Arrow", "zOrder": "19", "w": "74", "h": "95", "measuredW": "150", "measuredH": "100", "x": "739", "y": "2544", "properties": { "color": "2848996", "curvature": "1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 0, "y": 94 }, "p1": { "x": 0.4552770914225203, "y": -0.18898693963995766 }, "p2": { "x": 73, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "solid", "text": "" } }, { "ID": "20", "typeID": "Arrow", "zOrder": "20", "w": "107", "h": "103", "measuredW": "150", "measuredH": "100", "x": "692", "y": "2155", "properties": { "color": "2848996", "curvature": "-1", "direction": "top", "leftArrow": "false", "p0": { "x": 106, "y": 102 }, "p1": { "x": 0.38414149443561213, "y": -0.11426868044515104 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "solid", "text": "" } }, { "ID": "21", "typeID": "Arrow", "zOrder": "21", "w": "215", "h": "13", "measuredW": "150", "measuredH": "100", "x": "683", "y": "2151", "properties": { "color": "2848996", "curvature": "1", "direction": "top", "leftArrow": "false", "p0": { "x": 214, "y": 8 }, "p1": { "x": 0.5140765687406936, "y": 0.03859053397720475 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "22", "typeID": "Canvas", "zOrder": "22", "w": "591", "h": "101", "measuredW": "100", "measuredH": "70", "x": "793", "y": "2109", "properties": { "color": "16777215" } }, { "ID": "23", "typeID": "Arrow", "zOrder": "23", "w": "87", "h": "6", "measuredW": "150", "measuredH": "100", "x": "717", "y": "1922", "properties": { "color": "2848996", "curvature": "-1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 86, "y": 0 }, "p1": { "x": 0.5140765687406935, "y": 0.03859053397720476 }, "p2": { "x": 0, "y": 4 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "24", "typeID": "Arrow", "zOrder": "24", "w": "69", "h": "56", "measuredW": "150", "measuredH": "100", "x": "721", "y": "1842", "properties": { "color": "2848996", "curvature": "-1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 68, "y": 0 }, "p1": { "x": 0.45855018587360596, "y": 0.14888475836431225 }, "p2": { "x": 0, "y": 55 }, "rightArrow": "false", "shape": "bezier", "stroke": "solid", "text": "" } }, { "ID": "25", "typeID": "Arrow", "zOrder": "25", "w": "86", "h": "10", "measuredW": "150", "measuredH": "100", "x": "715", "y": "1801", "properties": { "color": "2848996", "curvature": "1", "direction": "top", "leftArrow": "false", "p0": { "x": 85, "y": 9 }, "p1": { "x": 0.5140765687406935, "y": 0.03859053397720475 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "26", "typeID": "Arrow", "zOrder": "26", "w": "87", "h": "59", "measuredW": "150", "measuredH": "100", "x": "716", "y": "1682", "properties": { "color": "2848996", "curvature": "-1", "direction": "top", "leftArrow": "false", "p0": { "x": 0, "y": 0 }, "p1": { "x": 0.4275092936802974, "y": -0.19861922464152953 }, "p2": { "x": 86, "y": 58 }, "rightArrow": "false", "shape": "bezier", "stroke": "solid", "text": "" } }, { "ID": "27", "typeID": "Arrow", "zOrder": "27", "w": "72", "h": "2", "measuredW": "150", "measuredH": "100", "x": "727", "y": "1610", "properties": { "color": "2848996", "curvature": "0", "direction": "bottom", "leftArrow": "false", "p0": { "x": 0, "y": 1 }, "p1": { "x": 0.5210234034113447, "y": -0.007338357794525982 }, "p2": { "x": 71, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "solid", "text": "" } }, { "ID": "28", "typeID": "Arrow", "zOrder": "28", "w": "99", "h": "49", "measuredW": "150", "measuredH": "100", "x": "698", "y": "1529", "properties": { "color": "2848996", "curvature": "1", "direction": "top", "leftArrow": "false", "p0": { "x": 98, "y": 48 }, "p1": { "x": 0.5140765687406935, "y": 0.038590533977204765 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "29", "typeID": "Arrow", "zOrder": "29", "w": "9", "h": "75", "measuredW": "150", "measuredH": "100", "x": "975", "y": "1482", "properties": { "color": "2848996", "curvature": "1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 0, "y": 74 }, "p1": { "x": 0.41040312093628173, "y": -0.05500650195058517 }, "p2": { "x": 8, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "solid", "text": "" } }, { "ID": "30", "typeID": "Arrow", "zOrder": "30", "w": "9", "h": "84", "measuredW": "150", "measuredH": "100", "x": "978", "y": "1310", "properties": { "color": "2848996", "curvature": "-1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 8, "y": 0 }, "p1": { "x": 0.5140765687406935, "y": 0.038590533977204765 }, "p2": { "x": 0, "y": 83 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "31", "typeID": "Arrow", "zOrder": "31", "w": "101", "h": "15", "measuredW": "150", "measuredH": "100", "x": "713", "y": "1429", "properties": { "color": "2848996", "curvature": "1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 0, "y": 9 }, "p1": { "x": 0.45184009522864793, "y": -0.09066560857057832 }, "p2": { "x": 100, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "solid" } }, { "ID": "32", "typeID": "Arrow", "zOrder": "32", "w": "147", "h": "71", "measuredW": "150", "measuredH": "100", "x": "395", "y": "474", "properties": { "color": "2848996", "curvature": "1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 0, "y": 70 }, "p1": { "x": 0.29983449443824334, "y": -0.05126823447904237 }, "p2": { "x": 146, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "33", "typeID": "Arrow", "zOrder": "33", "w": "68", "h": "93", "measuredW": "150", "measuredH": "100", "x": "512", "y": "1129", "properties": { "color": "2848996", "curvature": "-1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 3, "y": 92 }, "p1": { "x": 0.3850318471337579, "y": 0.18089171974522292 }, "p2": { "x": 67, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "solid" } }, { "ID": "34", "typeID": "Arrow", "zOrder": "34", "w": "146", "h": "23", "measuredW": "150", "measuredH": "100", "x": "708", "y": "1009", "properties": { "color": "2848996", "curvature": "1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 0, "y": 22 }, "p1": { "x": 0.5177460050462573, "y": -0.033389402859545836 }, "p2": { "x": 145, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "35", "typeID": "Arrow", "zOrder": "35", "w": "119", "h": "123", "measuredW": "150", "measuredH": "100", "x": "686", "y": "902", "properties": { "color": "2848996", "curvature": "-1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 118, "y": 0 }, "p1": { "x": 0.5006130932798996, "y": 0.15479857642731107 }, "p2": { "x": 0, "y": 122 }, "rightArrow": "false", "shape": "bezier", "stroke": "solid" } }, { "ID": "36", "typeID": "Arrow", "zOrder": "36", "w": "88", "h": "53", "measuredW": "150", "measuredH": "100", "x": "692", "y": "883", "properties": { "color": "2848996", "curvature": "1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 87, "y": 0 }, "p1": { "x": 0.44426229508196724, "y": -0.013114754098360656 }, "p2": { "x": 0, "y": 52 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "37", "typeID": "Arrow", "zOrder": "37", "w": "92", "h": "187", "measuredW": "150", "measuredH": "100", "x": "720", "y": "651", "properties": { "color": "2848996", "curvature": "-1", "direction": "top", "leftArrow": "false", "p0": { "x": 91, "y": 186 }, "p1": { "x": 0.4750027536746258, "y": -0.12018259922407568 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier" } }, { "ID": "38", "typeID": "Arrow", "zOrder": "38", "w": "48", "h": "83", "measuredW": "150", "measuredH": "100", "x": "407", "y": "657", "properties": { "color": "2848996", "curvature": "-1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 1, "y": 82 }, "p1": { "x": 0.4278136688201293, "y": 0.1396123767426046 }, "p2": { "x": 47, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "39", "typeID": "Arrow", "zOrder": "39", "w": "34", "h": "127", "measuredW": "150", "measuredH": "100", "x": "669", "y": "479", "properties": { "color": "2848996", "curvature": "1", "direction": "top", "leftArrow": "false", "p0": { "x": 33, "y": 126 }, "p1": { "x": 0.4701515620167028, "y": 0.1905351067120322 }, "p2": { "x": 16, "y": 0 }, "rightArrow": "false", "shape": "bezier" } }, { "ID": "40", "typeID": "Arrow", "zOrder": "40", "w": "79", "h": "255", "measuredW": "150", "measuredH": "100", "x": "819", "y": "292", "properties": { "color": "2848996", "curvature": "-1", "direction": "top", "leftArrow": "false", "p0": { "x": 4, "y": 0 }, "p1": { "x": 0.46391752577319545, "y": -0.10309278350515459 }, "p2": { "x": 78, "y": 254 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "41", "typeID": "Arrow", "zOrder": "41", "w": "151", "h": "34", "measuredW": "150", "measuredH": "100", "x": "393", "y": "466", "properties": { "color": "2848996", "curvature": "1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 0, "y": 33 }, "p1": { "x": 0.3477275391769901, "y": -0.04236195240142249 }, "p2": { "x": 150, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "42", "typeID": "Arrow", "zOrder": "42", "w": "89", "h": "61", "measuredW": "150", "measuredH": "100", "x": "917", "y": "431", "properties": { "color": "2848996", "curvature": "-1", "direction": "top", "leftArrow": "false", "p0": { "x": 88, "y": 60 }, "p1": { "x": 0.6410437235543018, "y": -0.04019746121297602 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted", "text": "" } }, { "ID": "43", "typeID": "Arrow", "zOrder": "43", "w": "85", "h": "20", "measuredW": "150", "measuredH": "100", "x": "919", "y": "421", "properties": { "color": "2848996", "curvature": "1", "direction": "top", "leftArrow": "false", "p0": { "x": 84, "y": 19 }, "p1": { "x": 0.4935957934474855, "y": 0.02831333423216934 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "44", "typeID": "Arrow", "zOrder": "44", "w": "141", "h": "138", "measuredW": "150", "measuredH": "100", "x": "403", "y": "250", "properties": { "color": "2848996", "curvature": "1", "direction": "top", "leftArrow": "false", "p0": { "x": 0, "y": 2 }, "p1": { "x": 0.26833582265545164, "y": 0.06426381573775647 }, "p2": { "x": 140, "y": 137 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "45", "typeID": "Arrow", "zOrder": "45", "w": "153", "h": "16", "measuredW": "150", "measuredH": "100", "x": "392", "y": "380", "properties": { "color": "2848996", "curvature": "-1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 0, "y": 15 }, "p1": { "x": 0.26833582265545164, "y": 0.06426381573775647 }, "p2": { "x": 152, "y": 2 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "46", "typeID": "Arrow", "zOrder": "46", "w": "152", "h": "60", "measuredW": "150", "measuredH": "100", "x": "396", "y": "382", "properties": { "color": "2848996", "curvature": "-1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 1, "y": 59 }, "p1": { "x": 0.2683358226554517, "y": 0.06426381573775639 }, "p2": { "x": 151, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "47", "typeID": "Arrow", "zOrder": "47", "w": "152", "h": "46", "measuredW": "150", "measuredH": "100", "x": "398", "y": "341", "properties": { "color": "2848996", "curvature": "1", "direction": "top", "leftArrow": "false", "p0": { "x": 0, "y": 5 }, "p1": { "x": 0.26833582265545164, "y": 0.06426381573775647 }, "p2": { "x": 151, "y": 45 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "48", "typeID": "Arrow", "zOrder": "48", "w": "141", "h": "86", "measuredW": "150", "measuredH": "100", "x": "402", "y": "299", "properties": { "color": "2848996", "curvature": "1", "direction": "top", "leftArrow": "false", "p0": { "x": 0, "y": 3 }, "p1": { "x": 0.26833582265545164, "y": 0.06426381573775647 }, "p2": { "x": 140, "y": 85 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "49", "typeID": "Arrow", "zOrder": "49", "w": "77", "h": "36", "measuredW": "150", "measuredH": "100", "x": "924", "y": "348", "properties": { "color": "2848996", "curvature": "-1", "direction": "top", "leftArrow": "false", "p0": { "x": 76, "y": 35 }, "p1": { "x": 0.4949292958148836, "y": -0.07470361376946151 }, "p2": { "x": 0, "y": 0 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "50", "typeID": "Arrow", "zOrder": "50", "w": "82", "h": "101", "measuredW": "150", "measuredH": "100", "x": "914", "y": "243", "properties": { "color": "2848996", "curvature": "1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 81, "y": 1 }, "p1": { "x": 0.266776677667767, "y": -0.05445544554455441 }, "p2": { "x": 0, "y": 100 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "51", "typeID": "Arrow", "zOrder": "51", "w": "93", "h": "53", "measuredW": "150", "measuredH": "100", "x": "915", "y": "290", "properties": { "color": "2848996", "curvature": "1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 92, "y": 2 }, "p1": { "x": 0.321780372126961, "y": -0.08792411528639182 }, "p2": { "x": 0, "y": 52 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "52", "typeID": "Arrow", "zOrder": "52", "w": "74", "h": "8", "measuredW": "150", "measuredH": "100", "x": "916", "y": "335", "properties": { "color": "2848996", "curvature": "1", "direction": "bottom", "leftArrow": "false", "p0": { "x": 73, "y": 1 }, "p1": { "x": 0.3537744641192917, "y": -0.02907735321528425 }, "p2": { "x": 0, "y": 7 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "53", "typeID": "Label", "zOrder": "53", "measuredW": "226", "measuredH": "40", "x": "591", "y": "127", "properties": { "bold": "true", "size": "32", "text": "後端 Back-end" } }, { "ID": "54", "typeID": "Arrow", "zOrder": "54", "w": "13", "h": "71", "measuredW": "150", "measuredH": "100", "x": "663", "y": "40", "properties": { "color": "2848996", "curvature": "-1", "direction": "top", "leftArrow": "false", "p0": { "x": 6, "y": 0 }, "p1": { "x": 0.5214417744916817, "y": -0.11497227356746767 }, "p2": { "x": 12, "y": 70 }, "rightArrow": "false", "shape": "bezier", "stroke": "dotted" } }, { "ID": "55", "typeID": "Icon", "zOrder": "55", "measuredW": "32", "measuredH": "32", "x": "955", "y": "55", "properties": { "color": "10027263", "icon": { "ID": "github", "size": "medium" } } }, { "ID": "56", "typeID": "Label", "zOrder": "56", "measuredW": "302", "measuredH": "25", "x": "994", "y": "49", "properties": { "bold": "true", "color": "10027263", "size": "17", "text": "kamranahmedse/developer-roadmap" } }, { "ID": "57", "typeID": "Icon", "zOrder": "57", "measuredW": "32", "measuredH": "32", "x": "955", "y": "109", "properties": { "color": "10027263", "icon": { "ID": "twitter", "size": "medium" } } }, { "ID": "58", "typeID": "Label", "zOrder": "58", "measuredW": "133", "measuredH": "25", "x": "995", "y": "101", "properties": { "bold": "true", "color": "10027263", "size": "17", "text": "kamranahmedse" } }, { "ID": "59", "typeID": "Arrow", "zOrder": "59", "w": "14", "h": "79", "measuredW": "150", "measuredH": "100", "x": "702", "y": "177", "properties": { "color": "2848996", "curvature": "1", "direction": "top", "leftArrow": "false", "p0": { "x": 0, "y": 0 }, "p1": { "x": 0.4416543574593796, "y": 0.14967996061053668 }, "p2": { "x": 3, "y": 78 }, "rightArrow": "false", "shape": "bezier" } }, { "ID": "60", "typeID": "TextArea", "zOrder": "60", "w": "400", "h": "71", "measuredW": "200", "measuredH": "140", "x": "528", "y": "237", "properties": { "color": "16776960" } }, { "ID": "61", "typeID": "Label", "zOrder": "61", "measuredW": "102", "measuredH": "25", "x": "576", "y": "249", "properties": { "bold": "true", "size": "17", "text": "選擇一個語言" } }, { "ID": "62", "typeID": "Icon", "zOrder": "62", "measuredW": "24", "measuredH": "24", "x": "542", "y": "249", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "63", "typeID": "Label", "zOrder": "63", "measuredW": "5", "measuredH": "21", "x": "550", "y": "251", "properties": { "bold": "true", "color": "16777215", "text": "1" } }, { "ID": "64", "typeID": "TextArea", "zOrder": "64", "w": "400", "h": "41", "measuredW": "200", "measuredH": "140", "x": "528", "y": "314", "properties": { "color": "16770457" } }, { "ID": "65", "typeID": "Label", "zOrder": "65", "w": "371", "measuredW": "274", "measuredH": "25", "x": "551", "y": "322", "properties": { "bold": "true", "size": "17", "text": "腳本程式語言 Scripting Languages" } }, { "ID": "66", "typeID": "TextArea", "zOrder": "66", "w": "141", "h": "41", "measuredW": "200", "measuredH": "140", "x": "989", "y": "316", "properties": { "color": "16770457", "textColor": "16776960" } }, { "ID": "67", "typeID": "Label", "zOrder": "67", "w": "45", "measuredW": "35", "measuredH": "25", "x": "1029", "y": "325", "properties": { "bold": "true", "size": "17", "text": "PHP" } }, { "ID": "68", "typeID": "TextArea", "zOrder": "68", "w": "141", "h": "41", "measuredW": "200", "measuredH": "140", "x": "989", "y": "361", "properties": { "color": "16770457", "textColor": "16776960" } }, { "ID": "69", "typeID": "Label", "zOrder": "69", "w": "68", "measuredW": "61", "measuredH": "25", "x": "1029", "y": "370", "properties": { "bold": "true", "size": "17", "text": "Node.js" } }, { "ID": "70", "typeID": "TextArea", "zOrder": "70", "w": "141", "h": "41", "measuredW": "200", "measuredH": "140", "x": "989", "y": "271", "properties": { "color": "16770457" } }, { "ID": "71", "typeID": "Label", "zOrder": "71", "w": "45", "measuredW": "41", "measuredH": "25", "x": "1029", "y": "280", "properties": { "bold": "true", "size": "17", "text": "Ruby" } }, { "ID": "72", "typeID": "TextArea", "zOrder": "72", "w": "141", "h": "41", "measuredW": "200", "measuredH": "140", "x": "989", "y": "226", "properties": { "color": "16770457" } }, { "ID": "73", "typeID": "Label", "zOrder": "73", "w": "68", "measuredW": "56", "measuredH": "25", "x": "1028", "y": "235", "properties": { "bold": "true", "size": "17", "text": "Python" } }, { "ID": "74", "typeID": "TextArea", "zOrder": "74", "w": "400", "h": "41", "measuredW": "200", "measuredH": "140", "x": "528", "y": "361", "properties": { "color": "16770457" } }, { "ID": "75", "typeID": "Label", "zOrder": "75", "w": "291", "measuredW": "286", "measuredH": "25", "x": "550", "y": "369", "properties": { "bold": "true", "size": "17", "text": "函數程式語言 Functional Languages" } }, { "ID": "76", "typeID": "TextArea", "zOrder": "76", "w": "141", "h": "41", "measuredW": "200", "measuredH": "140", "x": "272", "y": "367", "properties": { "color": "16770457", "textColor": "16776960" } }, { "ID": "77", "typeID": "Label", "zOrder": "77", "w": "61", "measuredW": "58", "measuredH": "25", "x": "312", "y": "376", "properties": { "bold": "true", "size": "17", "text": "Clojure" } }, { "ID": "78", "typeID": "TextArea", "zOrder": "78", "w": "141", "h": "41", "measuredW": "200", "measuredH": "140", "x": "272", "y": "412", "properties": { "color": "16770457", "textColor": "16776960" } }, { "ID": "79", "typeID": "Label", "zOrder": "79", "w": "68", "measuredW": "59", "measuredH": "25", "x": "312", "y": "421", "properties": { "bold": "true", "size": "17", "text": "Haskell" } }, { "ID": "80", "typeID": "TextArea", "zOrder": "80", "w": "141", "h": "41", "measuredW": "200", "measuredH": "140", "x": "272", "y": "322", "properties": { "color": "16770457" } }, { "ID": "81", "typeID": "Label", "zOrder": "81", "w": "61", "measuredW": "51", "measuredH": "25", "x": "312", "y": "331", "properties": { "bold": "true", "size": "17", "text": "Erlang" } }, { "ID": "82", "typeID": "TextArea", "zOrder": "82", "w": "141", "h": "41", "measuredW": "200", "measuredH": "140", "x": "272", "y": "277", "properties": { "color": "16770457" } }, { "ID": "83", "typeID": "Label", "zOrder": "83", "w": "68", "measuredW": "44", "measuredH": "25", "x": "311", "y": "286", "properties": { "bold": "true", "size": "17", "text": "Scala" } }, { "ID": "84", "typeID": "TextArea", "zOrder": "84", "w": "400", "h": "41", "measuredW": "200", "measuredH": "140", "x": "528", "y": "407", "properties": { "color": "16770457" } }, { "ID": "85", "typeID": "Label", "zOrder": "85", "w": "338", "measuredW": "335", "measuredH": "25", "x": "550", "y": "415", "properties": { "bold": "true", "size": "17", "text": "多範式程式語言 Multiparadigm Languages" } }, { "ID": "86", "typeID": "TextArea", "zOrder": "86", "w": "141", "h": "41", "measuredW": "200", "measuredH": "140", "x": "272", "y": "232", "properties": { "color": "16770457", "text": "" } }, { "ID": "87", "typeID": "Label", "zOrder": "87", "w": "61", "measuredW": "40", "measuredH": "25", "x": "312", "y": "241", "properties": { "bold": "true", "size": "17", "text": "Elixir" } }, { "ID": "88", "typeID": "TextArea", "zOrder": "88", "w": "141", "h": "41", "measuredW": "200", "measuredH": "140", "x": "993", "y": "422", "properties": { "color": "16770457", "textColor": "16776960" } }, { "ID": "89", "typeID": "Label", "zOrder": "89", "w": "68", "measuredW": "57", "measuredH": "25", "x": "1033", "y": "431", "properties": { "bold": "true", "size": "17", "text": "Golang" } }, { "ID": "90", "typeID": "TextArea", "zOrder": "90", "w": "141", "h": "41", "measuredW": "200", "measuredH": "140", "x": "994", "y": "468", "properties": { "color": "16770457", "textColor": "16776960" } }, { "ID": "91", "typeID": "Label", "zOrder": "91", "w": "68", "measuredW": "37", "measuredH": "25", "x": "1034", "y": "477", "properties": { "bold": "true", "size": "17", "text": "Rust" } }, { "ID": "92", "typeID": "TextArea", "zOrder": "92", "w": "400", "h": "41", "measuredW": "200", "measuredH": "140", "x": "528", "y": "453", "properties": { "color": "16770457" } }, { "ID": "93", "typeID": "Label", "zOrder": "93", "w": "237", "measuredW": "234", "measuredH": "25", "x": "550", "y": "461", "properties": { "bold": "true", "size": "17", "text": "企業選項 Enterprisey Options" } }, { "ID": "94", "typeID": "TextArea", "zOrder": "94", "w": "141", "h": "41", "measuredW": "200", "measuredH": "140", "x": "272", "y": "477", "properties": { "color": "16770457", "textColor": "16776960" } }, { "ID": "95", "typeID": "Label", "zOrder": "95", "w": "68", "measuredW": "37", "measuredH": "25", "x": "312", "y": "486", "properties": { "bold": "true", "size": "17", "text": "Java" } }, { "ID": "96", "typeID": "TextArea", "zOrder": "96", "w": "141", "h": "41", "measuredW": "200", "measuredH": "140", "x": "273", "y": "523", "properties": { "color": "16770457", "textColor": "16776960" } }, { "ID": "97", "typeID": "Label", "zOrder": "97", "w": "47", "measuredW": "38", "measuredH": "25", "x": "313", "y": "532", "properties": { "bold": "true", "size": "17", "text": ".NET" } }, { "ID": "98", "typeID": "TextArea", "zOrder": "98", "w": "465", "h": "215", "measuredW": "200", "measuredH": "140", "x": "838", "y": "546", "properties": { "color": "16770457" } }, { "ID": "99", "typeID": "Label", "zOrder": "99", "measuredW": "425", "measuredH": "25", "x": "852", "y": "557", "properties": { "size": "17", "text": "對於初學者而言,如果你才剛開始進入後端開發的領域," } }, { "ID": "100", "typeID": "Label", "zOrder": "100", "measuredW": "435", "measuredH": "25", "x": "852", "y": "583", "properties": { "size": "17", "text": "我會建議你先選擇一個腳本語言(scripting language)。" } }, { "ID": "101", "typeID": "Label", "zOrder": "101", "measuredW": "317", "measuredH": "25", "x": "852", "y": "610", "properties": { "size": "17", "text": "*Node.js* 或 *PHP* 會是快速又簡單的選項。" } }, { "ID": "102", "typeID": "Label", "zOrder": "102", "measuredW": "289", "measuredH": "25", "x": "852", "y": "637", "properties": { "size": "17", "text": "如果你已經在用某些腳本語言寫後端," } }, { "ID": "103", "typeID": "Label", "zOrder": "103", "measuredW": "238", "measuredH": "25", "x": "852", "y": "665", "properties": { "size": "17", "text": "那就不要選擇其他腳本語言了," } }, { "ID": "104", "typeID": "Label", "zOrder": "104", "measuredW": "266", "measuredH": "25", "x": "852", "y": "691", "properties": { "size": "17", "text": "試試看 Golang、Rust 或 Clojure," } }, { "ID": "105", "typeID": "Label", "zOrder": "105", "measuredW": "221", "measuredH": "25", "x": "852", "y": "720", "properties": { "size": "17", "text": "這肯定會給你一個新的視角。" } }, { "ID": "106", "typeID": "TextArea", "zOrder": "106", "w": "405", "h": "96", "measuredW": "200", "measuredH": "140", "x": "366", "y": "583", "properties": { "color": "16776960" } }, { "ID": "107", "typeID": "Label", "zOrder": "107", "measuredW": "136", "measuredH": "25", "x": "412", "y": "595", "properties": { "bold": "true", "size": "17", "text": "練習你學到的東西" } }, { "ID": "108", "typeID": "Icon", "zOrder": "108", "measuredW": "24", "measuredH": "24", "x": "378", "y": "595", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "109", "typeID": "Label", "zOrder": "109", "measuredW": "8", "measuredH": "21", "x": "386", "y": "597", "properties": { "bold": "true", "color": "16777215", "text": "2" } }, { "ID": "110", "typeID": "Label", "zOrder": "110", "measuredW": "221", "measuredH": "25", "x": "412", "y": "619", "properties": { "size": "17", "text": "練習並用你選擇的語言寫一些" } }, { "ID": "111", "typeID": "Label", "zOrder": "111", "measuredW": "263", "measuredH": "25", "x": "412", "y": "641", "properties": { "size": "17", "text": "命令列(command line)的程式。" } }, { "ID": "112", "typeID": "Label", "zOrder": "112", "measuredW": "204", "measuredH": "25", "x": "575", "y": "273", "properties": { "size": "17", "text": "有各式各樣的語言可供選擇" } }, { "ID": "113", "typeID": "TextArea", "zOrder": "113", "w": "575", "h": "187", "measuredW": "200", "measuredH": "140", "x": "152", "y": "700", "properties": { "color": "16770457", "text": "" } }, { "ID": "114", "typeID": "Label", "zOrder": "114", "w": "131", "measuredW": "68", "measuredH": "25", "x": "168", "y": "714", "properties": { "bold": "true", "size": "17", "text": "舉例來說" } }, { "ID": "115", "typeID": "Label", "zOrder": "115", "measuredW": "268", "measuredH": "25", "x": "168", "y": "742", "properties": { "size": "17", "text": "實作一些你用過的指令,像是 `ls`。" } }, { "ID": "116", "typeID": "Label", "zOrder": "116", "measuredW": "435", "measuredH": "25", "x": "168", "y": "768", "properties": { "size": "17", "text": "抓取和儲存 reddit 的 /r/programming 板上文章的指令。" } }, { "ID": "117", "typeID": "Label", "zOrder": "117", "measuredW": "311", "measuredH": "25", "x": "168", "y": "794", "properties": { "size": "17", "text": "幫你建立目錄結構的 JSON 格式的指令。" } }, { "ID": "118", "typeID": "Label", "zOrder": "118", "measuredW": "390", "measuredH": "25", "x": "168", "y": "820", "properties": { "size": "17", "text": "讀取上述產生的 JSON,並建立其目錄結構的指令。" } }, { "ID": "119", "typeID": "Label", "zOrder": "119", "measuredW": "357", "measuredH": "25", "x": "168", "y": "846", "properties": { "size": "17", "text": "想一些你每天在做的任務,並試著把它自動化。" } }, { "ID": "120", "typeID": "TextArea", "zOrder": "120", "w": "523", "h": "133", "measuredW": "200", "measuredH": "140", "x": "766", "y": "788", "properties": { "color": "16776960" } }, { "ID": "121", "typeID": "Label", "zOrder": "121", "measuredW": "316", "measuredH": "25", "x": "813", "y": "803", "properties": { "bold": "true", "size": "17", "text": "學習套件管理系統(Package Manager)" } }, { "ID": "122", "typeID": "Icon", "zOrder": "122", "measuredW": "24", "measuredH": "24", "x": "779", "y": "803", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "123", "typeID": "Label", "zOrder": "123", "measuredW": "8", "measuredH": "21", "x": "787", "y": "805", "properties": { "bold": "true", "color": "16777215", "text": "3" } }, { "ID": "124", "typeID": "TextArea", "zOrder": "124", "w": "485", "h": "72", "measuredW": "200", "measuredH": "140", "x": "241", "y": "902", "properties": { "color": "16770457" } }, { "ID": "125", "typeID": "Label", "zOrder": "125", "measuredW": "408", "measuredH": "25", "x": "254", "y": "914", "properties": { "size": "17", "text": "套件管理系統協助你在你的應用程式中載入外部相依," } }, { "ID": "126", "typeID": "Label", "zOrder": "126", "measuredW": "221", "measuredH": "25", "x": "254", "y": "936", "properties": { "size": "17", "text": "也能協助你發佈自己的套件。" } }, { "ID": "127", "typeID": "Label", "zOrder": "127", "measuredW": "340", "measuredH": "25", "x": "813", "y": "827", "properties": { "size": "17", "text": "學會如何使用你所選的語言的套件管理系統," } }, { "ID": "128", "typeID": "Label", "zOrder": "128", "measuredW": "391", "measuredH": "25", "x": "813", "y": "852", "properties": { "size": "17", "text": "像是 *PHP 的 composer、Node.js 的 NPM 和 yarn*" } }, { "ID": "129", "typeID": "TextArea", "zOrder": "129", "w": "575", "h": "153", "measuredW": "200", "measuredH": "140", "x": "158", "y": "985", "properties": { "color": "16776960" } }, { "ID": "130", "typeID": "Label", "zOrder": "130", "measuredW": "369", "measuredH": "25", "x": "204", "y": "1001", "properties": { "bold": "true", "size": "17", "text": "標準(Standard)和最佳實踐(Best Practice)" } }, { "ID": "131", "typeID": "Icon", "zOrder": "131", "measuredW": "24", "measuredH": "24", "x": "170", "y": "1001", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "132", "typeID": "Label", "zOrder": "132", "measuredW": "8", "measuredH": "21", "x": "178", "y": "1003", "properties": { "bold": "true", "color": "16777215", "text": "4" } }, { "ID": "133", "typeID": "Label", "zOrder": "133", "measuredW": "391", "measuredH": "25", "x": "204", "y": "1028", "properties": { "size": "17", "text": "每種語言都有自己的標準,以及做事情的最佳實踐。" } }, { "ID": "134", "typeID": "Label", "zOrder": "134", "measuredW": "204", "measuredH": "25", "x": "204", "y": "1050", "properties": { "size": "17", "text": "為你挑選的語言學習它們。" } }, { "ID": "135", "typeID": "Label", "zOrder": "135", "measuredW": "263", "measuredH": "25", "x": "204", "y": "1075", "properties": { "size": "17", "text": "例如 *PHP 的 PHP-FIG 和 PSRs*," } }, { "ID": "136", "typeID": "TextArea", "zOrder": "136", "w": "570", "h": "110", "measuredW": "200", "measuredH": "140", "x": "806", "y": "947", "properties": { "color": "16770457" } }, { "ID": "137", "typeID": "Label", "zOrder": "137", "measuredW": "289", "measuredH": "25", "x": "820", "y": "962", "properties": { "size": "17", "text": "請務必閱讀有關資訊安全的最佳實踐。" } }, { "ID": "138", "typeID": "Label", "zOrder": "138", "measuredW": "345", "measuredH": "25", "x": "820", "y": "988", "properties": { "size": "17", "text": "閱讀 OWASP 指南,並瞭解不同的安全問題," } }, { "ID": "139", "typeID": "Label", "zOrder": "139", "measuredW": "289", "measuredH": "25", "x": "820", "y": "1015", "properties": { "size": "17", "text": "以及如何在你選擇的語言中避免它們。" } }, { "ID": "140", "typeID": "TextArea", "zOrder": "140", "w": "576", "h": "323", "measuredW": "200", "measuredH": "140", "x": "158", "y": "1156", "properties": { "color": "16776960", "textColor": "0" } }, { "ID": "141", "typeID": "Label", "zOrder": "141", "measuredW": "415", "measuredH": "25", "x": "207", "y": "1177", "properties": { "bold": "true", "size": "17", "text": "製作和發佈一些套件(Package)或函式庫(Library)" } }, { "ID": "142", "typeID": "Icon", "zOrder": "142", "measuredW": "24", "measuredH": "24", "x": "173", "y": "1177", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "143", "typeID": "Label", "zOrder": "143", "measuredW": "8", "measuredH": "21", "x": "181", "y": "1179", "properties": { "bold": "true", "color": "16777215", "text": "5" } }, { "ID": "144", "typeID": "Label", "zOrder": "144", "measuredW": "374", "measuredH": "25", "x": "207", "y": "1204", "properties": { "size": "17", "text": "現在繼續前進,建立一個套件並發佈其他人使用," } }, { "ID": "145", "typeID": "Label", "zOrder": "145", "measuredW": "340", "measuredH": "25", "x": "207", "y": "1230", "properties": { "size": "17", "text": "並確保遵循你至今所了解的標準和最佳實踐。" } }, { "ID": "147", "typeID": "Label", "zOrder": "146", "measuredW": "296", "measuredH": "25", "x": "813", "y": "880", "properties": { "size": "17", "text": "*Python 的 pip、Ruby 的 gems* 等等。" } }, { "ID": "148", "typeID": "Label", "zOrder": "147", "measuredW": "187", "measuredH": "25", "x": "207", "y": "1292", "properties": { "bold": "true", "size": "17", "text": "為一些開源專案做出貢獻" } }, { "ID": "149", "typeID": "Label", "zOrder": "148", "measuredW": "453", "measuredH": "25", "x": "207", "y": "1320", "properties": { "size": "17", "text": "在 GitHub 上搜尋一些專案,並在專案中開一些 pull request" } }, { "ID": "150", "typeID": "Label", "zOrder": "149", "measuredW": "136", "measuredH": "25", "x": "207", "y": "1345", "properties": { "size": "17", "text": "這裡有一些點子:" } }, { "ID": "151", "typeID": "Label", "zOrder": "150", "measuredW": "238", "measuredH": "25", "x": "207", "y": "1385", "properties": { "size": "17", "text": "重構並實踐你學到的最佳實踐。" } }, { "ID": "152", "typeID": "Label", "zOrder": "151", "measuredW": "284", "measuredH": "25", "x": "207", "y": "1410", "properties": { "size": "17", "text": "查看還開啟的 issue,並試著解決它。" } }, { "ID": "153", "typeID": "Label", "zOrder": "152", "measuredW": "170", "measuredH": "25", "x": "207", "y": "1435", "properties": { "size": "17", "text": "新增任何的額外功能。" } }, { "ID": "154", "typeID": "TextArea", "zOrder": "153", "w": "595", "h": "138", "measuredW": "200", "measuredH": "140", "x": "782", "y": "1359", "properties": { "color": "16776960", "text": "" } }, { "ID": "155", "typeID": "Label", "zOrder": "154", "measuredW": "162", "measuredH": "25", "x": "830", "y": "1375", "properties": { "bold": "true", "size": "17", "text": "學習測試(Testing)" } }, { "ID": "156", "typeID": "Icon", "zOrder": "155", "measuredW": "24", "measuredH": "24", "x": "796", "y": "1375", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "157", "typeID": "Label", "zOrder": "156", "measuredW": "8", "measuredH": "21", "x": "804", "y": "1377", "properties": { "bold": "true", "color": "16777215", "text": "6" } }, { "ID": "158", "typeID": "Label", "zOrder": "157", "measuredW": "442", "measuredH": "25", "x": "830", "y": "1402", "properties": { "size": "17", "text": "測試的類型有好幾種,但現在,先瞭解如何用你選擇的語言" } }, { "ID": "159", "typeID": "Label", "zOrder": "158", "measuredW": "477", "measuredH": "25", "x": "830", "y": "1428", "properties": { "size": "17", "text": "撰寫 *單元測試(Unit test)和 整合測試(Integration test)*。" } }, { "ID": "160", "typeID": "Label", "zOrder": "159", "measuredW": "343", "measuredH": "25", "x": "830", "y": "1454", "properties": { "size": "17", "text": "理解不同的測試術語,像是 mock、stub 等。" } }, { "ID": "161", "typeID": "TextArea", "zOrder": "160", "w": "603", "h": "252", "measuredW": "200", "measuredH": "140", "x": "774", "y": "1084", "properties": { "color": "16770457" } }, { "ID": "162", "typeID": "Label", "zOrder": "161", "measuredW": "510", "measuredH": "25", "x": "790", "y": "1099", "properties": { "size": "17", "text": "根據你所選擇的語言會有幾種不同的選擇,每一種都有不同的用途。" } }, { "ID": "163", "typeID": "Label", "zOrder": "162", "measuredW": "199", "measuredH": "25", "x": "791", "y": "1125", "properties": { "size": "17", "text": "*Google* 看看有什麼不同," } }, { "ID": "164", "typeID": "Label", "zOrder": "163", "measuredW": "170", "measuredH": "25", "x": "791", "y": "1152", "properties": { "size": "17", "text": "並選擇一個適合你的。" } }, { "ID": "165", "typeID": "Label", "zOrder": "164", "measuredW": "376", "measuredH": "25", "x": "792", "y": "1193", "properties": { "size": "17", "text": "*針對 PHP* – &*{color:blue}PHPUnit{color}*&、PHPSpec、Codeception" } }, { "ID": "166", "typeID": "Label", "zOrder": "165", "measuredW": "511", "measuredH": "25", "x": "792", "y": "1221", "properties": { "size": "17", "text": "*針對 Node.js* – &*{color:blue}Mocha{color}*&、&*{color:blue}Chai{color}*&、&*{color:blue}Sinon{color}*&、&*{color:blue}Mockery{color}*&、Ava、Jasmine" } }, { "ID": "167", "typeID": "Label", "zOrder": "166", "measuredW": "357", "measuredH": "25", "x": "791", "y": "1264", "properties": { "size": "17", "text": "我並不想開戰場,所以我不會在此做任何推薦。" } }, { "ID": "168", "typeID": "Label", "zOrder": "167", "measuredW": "306", "measuredH": "25", "x": "791", "y": "1290", "properties": { "size": "17", "text": "所以請多走走看看,找到適合你的選擇。" } }, { "ID": "169", "typeID": "TextArea", "zOrder": "168", "w": "594", "h": "117", "measuredW": "200", "measuredH": "140", "x": "783", "y": "1524", "properties": { "color": "16776960" } }, { "ID": "170", "typeID": "Label", "zOrder": "169", "measuredW": "204", "measuredH": "25", "x": "832", "y": "1545", "properties": { "bold": "true", "size": "17", "text": "為上面的實際步驟撰寫測試" } }, { "ID": "171", "typeID": "Icon", "zOrder": "170", "measuredW": "24", "measuredH": "24", "x": "798", "y": "1545", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "172", "typeID": "Label", "zOrder": "171", "measuredW": "7", "measuredH": "21", "x": "806", "y": "1547", "properties": { "bold": "true", "color": "16777215", "text": "7" } }, { "ID": "173", "typeID": "Label", "zOrder": "172", "measuredW": "255", "measuredH": "25", "x": "832", "y": "1572", "properties": { "size": "17", "text": "試著為前面步驟中實作的實際任務" } }, { "ID": "174", "typeID": "Label", "zOrder": "173", "measuredW": "153", "measuredH": "25", "x": "832", "y": "1598", "properties": { "size": "17", "text": "撰寫一些單元測試。" } }, { "ID": "175", "typeID": "Label", "zOrder": "174", "measuredW": "343", "measuredH": "25", "x": "203", "y": "1099", "properties": { "size": "17", "text": "或是像 Node.js 也有很多由社群推動的準則。" } }, { "ID": "176", "typeID": "TextArea", "zOrder": "175", "w": "575", "h": "50", "measuredW": "200", "measuredH": "140", "x": "158", "y": "1498", "properties": { "color": "16770457" } }, { "ID": "177", "typeID": "Label", "zOrder": "176", "measuredW": "204", "measuredH": "25", "x": "208", "y": "1511", "properties": { "size": "17", "text": "瞭解如何計算測試覆蓋率。" } }, { "ID": "178", "typeID": "Icon", "zOrder": "177", "measuredW": "24", "measuredH": "24", "x": "173", "y": "1511", "properties": { "icon": { "ID": "lightbulb-o", "size": "small" } } }, { "ID": "179", "typeID": "TextArea", "zOrder": "178", "w": "371", "h": "159", "measuredW": "200", "measuredH": "140", "x": "366", "y": "1570", "properties": { "color": "16776960" } }, { "ID": "180", "typeID": "Label", "zOrder": "179", "w": "342", "measuredW": "333", "measuredH": "25", "x": "409", "y": "1584", "properties": { "bold": "true", "size": "17", "text": "學習關聯式資料庫(Relational Database)" } }, { "ID": "181", "typeID": "Icon", "zOrder": "180", "measuredW": "24", "measuredH": "24", "x": "378", "y": "1582", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "182", "typeID": "Label", "zOrder": "181", "w": "11", "measuredW": "8", "measuredH": "21", "x": "386", "y": "1584", "properties": { "bold": "true", "color": "16777215", "text": "8" } }, { "ID": "183", "typeID": "TextInput", "zOrder": "182", "w": "121", "measuredW": "75", "measuredH": "32", "x": "110", "y": "1612", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "MySQL" } }, { "ID": "184", "typeID": "TextInput", "zOrder": "183", "w": "119", "measuredW": "86", "measuredH": "32", "x": "237", "y": "1612", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "MariaDB" } }, { "ID": "185", "typeID": "TextInput", "zOrder": "184", "w": "246", "measuredW": "115", "measuredH": "32", "x": "108", "y": "1652", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "PostgreSQL" } }, { "ID": "186", "typeID": "TextInput", "zOrder": "185", "w": "246", "measuredW": "69", "measuredH": "32", "x": "109", "y": "1570", "properties": { "align": "center", "color": "16770457", "size": "18", "text": "Oracle" } }, { "ID": "187", "typeID": "TextInput", "zOrder": "186", "w": "246", "measuredW": "77", "measuredH": "32", "x": "108", "y": "1695", "properties": { "align": "center", "color": "16770457", "size": "18", "text": "MSSQL" } }, { "ID": "188", "typeID": "Label", "zOrder": "187", "measuredW": "346", "measuredH": "25", "x": "382", "y": "1613", "properties": { "size": "17", "text": "這裡有幾個選項。 你如果已經學過其中一個," } }, { "ID": "189", "typeID": "Label", "zOrder": "188", "measuredW": "204", "measuredH": "25", "x": "382", "y": "1637", "properties": { "size": "17", "text": "要學其他的應該是很容易。" } }, { "ID": "190", "typeID": "Label", "zOrder": "189", "measuredW": "302", "measuredH": "25", "x": "382", "y": "1662", "properties": { "size": "17", "text": "先選擇 *MySQL*,但要瞭解他們的不同," } }, { "ID": "191", "typeID": "Label", "zOrder": "190", "measuredW": "136", "measuredH": "25", "x": "382", "y": "1686", "properties": { "size": "17", "text": "以及他們的用例。" } }, { "ID": "192", "typeID": "TextArea", "zOrder": "191", "w": "603", "h": "172", "measuredW": "200", "measuredH": "140", "x": "782", "y": "1678", "properties": { "color": "16776960" } }, { "ID": "193", "typeID": "Label", "zOrder": "192", "measuredW": "68", "measuredH": "25", "x": "829", "y": "1695", "properties": { "bold": "true", "size": "17", "text": "實作時間" } }, { "ID": "194", "typeID": "Icon", "zOrder": "193", "measuredW": "24", "measuredH": "24", "x": "795", "y": "1695", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "195", "typeID": "Label", "zOrder": "194", "measuredW": "8", "measuredH": "21", "x": "803", "y": "1697", "properties": { "bold": "true", "color": "16777215", "text": "9" } }, { "ID": "196", "typeID": "Label", "zOrder": "195", "measuredW": "408", "measuredH": "25", "x": "829", "y": "1722", "properties": { "size": "17", "text": "使用您目前學到的所有內容建立一個簡單的應用程式。" } }, { "ID": "197", "typeID": "Label", "zOrder": "196", "measuredW": "428", "measuredH": "25", "x": "829", "y": "1748", "properties": { "size": "17", "text": "它應該要有註冊、登錄和 CRUD。例如建立一個部落格。" } }, { "ID": "198", "typeID": "Label", "zOrder": "197", "measuredW": "544", "measuredH": "25", "x": "829", "y": "1774", "properties": { "size": "17", "text": "這個部落格要讓任何人都可以註冊,有個公開的個人頁面可以新增、更新" } }, { "ID": "199", "typeID": "Label", "zOrder": "198", "measuredW": "476", "measuredH": "25", "x": "829", "y": "1802", "properties": { "size": "17", "text": "和刪除文章,這個公開頁面還會顯示這些文章是由他們建立的。" } }, { "ID": "201", "typeID": "TextArea", "zOrder": "199", "w": "585", "h": "108", "measuredW": "200", "measuredH": "140", "x": "142", "y": "1754", "properties": { "color": "16770457" } }, { "ID": "202", "typeID": "Label", "zOrder": "200", "measuredW": "340", "measuredH": "25", "x": "155", "y": "1767", "properties": { "size": "17", "text": "請確保你有撰寫測試、遵循標準和最佳實踐。" } }, { "ID": "203", "typeID": "Label", "zOrder": "201", "measuredW": "552", "measuredH": "25", "x": "155", "y": "1793", "properties": { "size": "17", "text": "此外針對資料庫,使用資料前要新增索引(Index)、使用適當的儲存引擎" } }, { "ID": "204", "typeID": "Label", "zOrder": "202", "measuredW": "495", "measuredH": "25", "x": "155", "y": "1820", "properties": { "size": "17", "text": "(Storage Engine),並確保分析查詢(analyze the queries)。" } }, { "ID": "205", "typeID": "TextArea", "zOrder": "203", "w": "205", "h": "41", "measuredW": "200", "measuredH": "140", "x": "1135", "y": "361", "properties": { "color": "16770457", "textColor": "16776960" } }, { "ID": "206", "typeID": "Label", "zOrder": "204", "w": "175", "measuredW": "155", "measuredH": "25", "x": "1151", "y": "370", "properties": { "bold": "true", "size": "17", "text": "TypeScript(可選)" } }, { "ID": "207", "typeID": "TextArea", "zOrder": "205", "w": "638", "h": "66", "measuredW": "200", "measuredH": "140", "x": "116", "y": "1878", "properties": { "color": "16776960" } }, { "ID": "208", "typeID": "Label", "zOrder": "206", "measuredW": "226", "measuredH": "25", "x": "165", "y": "1899", "properties": { "bold": "true", "size": "17", "text": "學習一個框架(Framework)" } }, { "ID": "209", "typeID": "Icon", "zOrder": "207", "measuredW": "24", "measuredH": "24", "x": "131", "y": "1899", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "210", "typeID": "Label", "zOrder": "208", "measuredW": "13", "measuredH": "21", "x": "136", "y": "1901", "properties": { "bold": "true", "color": "16777215", "text": "10" } }, { "ID": "211", "typeID": "TextArea", "zOrder": "209", "w": "594", "h": "220", "measuredW": "200", "measuredH": "140", "x": "791", "y": "1871", "properties": { "color": "16770457" } }, { "ID": "212", "typeID": "Label", "zOrder": "210", "measuredW": "459", "measuredH": "25", "x": "804", "y": "1884", "properties": { "size": "17", "text": "根據專案和所選語言的不同,你可能需要或可能不需要框架。" } }, { "ID": "213", "typeID": "Label", "zOrder": "211", "measuredW": "187", "measuredH": "25", "x": "804", "y": "1912", "properties": { "size": "17", "text": "這裡有幾種不同的選項:" } }, { "ID": "214", "typeID": "Label", "zOrder": "212", "measuredW": "480", "measuredH": "25", "x": "804", "y": "1952", "properties": { "size": "17", "text": "*針對 PHP* – &*{color:blue}Laravel{color}*& 或 &*{color:blue}Symfony{color}*&。微框架則是 Slim 或 Lumen" } }, { "ID": "215", "typeID": "Label", "zOrder": "213", "measuredW": "279", "measuredH": "25", "x": "804", "y": "1980", "properties": { "size": "17", "text": "*針對 Node.js* – &*{color:blue}Express.js{color}*&、Hapi.js" } }, { "ID": "216", "typeID": "Label", "zOrder": "214", "measuredW": "309", "measuredH": "25", "x": "804", "y": "2009", "properties": { "size": "17", "text": "*針對 Golang* – 我傾向不使用框架來撰寫" } }, { "ID": "217", "typeID": "Label", "zOrder": "215", "measuredW": "408", "measuredH": "25", "x": "804", "y": "2048", "properties": { "size": "17", "text": "對於其他語言,請搜尋並找出適合你所選語言的框架。" } }, { "ID": "218", "typeID": "TextArea", "zOrder": "216", "w": "637", "h": "80", "measuredW": "200", "measuredH": "140", "x": "116", "y": "1953", "properties": { "color": "16776960" } }, { "ID": "219", "typeID": "Label", "zOrder": "217", "measuredW": "68", "measuredH": "25", "x": "162", "y": "1966", "properties": { "bold": "true", "size": "17", "text": "實作時間" } }, { "ID": "220", "typeID": "Icon", "zOrder": "218", "measuredW": "24", "measuredH": "24", "x": "129", "y": "1965", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "221", "typeID": "Label", "zOrder": "219", "measuredW": "11", "measuredH": "21", "x": "135", "y": "1967", "properties": { "bold": "true", "color": "16777215", "text": "11" } }, { "ID": "222", "typeID": "Label", "zOrder": "220", "measuredW": "374", "measuredH": "25", "x": "161", "y": "1994", "properties": { "size": "17", "text": "使用你選擇的框架寫一些你在 做的應用程式。" } }, { "ID": "223", "typeID": "Icon", "zOrder": "221", "measuredW": "24", "measuredH": "24", "x": "385", "y": "1994", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "224", "typeID": "Label", "zOrder": "222", "measuredW": "8", "measuredH": "21", "x": "393", "y": "1996", "properties": { "bold": "true", "color": "16777215", "text": "9" } }, { "ID": "225", "typeID": "TextArea", "zOrder": "223", "w": "638", "h": "179", "measuredW": "200", "measuredH": "140", "x": "116", "y": "2040", "properties": { "color": "16776960" } }, { "ID": "226", "typeID": "Label", "zOrder": "224", "measuredW": "170", "measuredH": "25", "x": "165", "y": "2058", "properties": { "bold": "true", "size": "17", "text": "學一種 NoSQL 資料庫" } }, { "ID": "227", "typeID": "Icon", "zOrder": "225", "measuredW": "24", "measuredH": "24", "x": "131", "y": "2058", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "228", "typeID": "Label", "zOrder": "226", "measuredW": "13", "measuredH": "21", "x": "136", "y": "2060", "properties": { "bold": "true", "color": "16777215", "text": "12" } }, { "ID": "229", "typeID": "Label", "zOrder": "227", "w": "574", "measuredW": "289", "measuredH": "25", "x": "165", "y": "2144", "properties": { "size": "17", "text": "看看不同的選項,看看它們有何不同。" } }, { "ID": "230", "typeID": "Label", "zOrder": "228", "w": "574", "measuredW": "306", "measuredH": "25", "x": "165", "y": "2170", "properties": { "size": "17", "text": "如果你必須選擇一個,選擇 *MongoDB*。" } }, { "ID": "231", "typeID": "Label", "zOrder": "229", "w": "574", "measuredW": "425", "measuredH": "25", "x": "165", "y": "2091", "properties": { "size": "17", "text": "首先要瞭解它們是什麼、它們與關連式資料庫有何不同、" } }, { "ID": "232", "typeID": "Label", "zOrder": "230", "w": "574", "measuredW": "357", "measuredH": "25", "x": "165", "y": "2117", "properties": { "size": "17", "text": "以及為什麼需要它們。這裡有幾種不同的選項。" } }, { "ID": "233", "typeID": "TextInput", "zOrder": "231", "w": "185", "measuredW": "103", "measuredH": "32", "x": "1023", "y": "2164", "properties": { "align": "center", "color": "16777215", "size": "18", "text": "Cassandra" } }, { "ID": "234", "typeID": "TextInput", "zOrder": "232", "w": "185", "measuredW": "97", "measuredH": "32", "x": "1023", "y": "2123", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "MongoDB" } }, { "ID": "235", "typeID": "TextInput", "zOrder": "233", "w": "157", "measuredW": "102", "measuredH": "32", "x": "1215", "y": "2123", "properties": { "align": "center", "color": "16777215", "size": "18", "text": "RethinkDB" } }, { "ID": "236", "typeID": "TextInput", "zOrder": "234", "w": "157", "measuredW": "107", "measuredH": "32", "x": "1215", "y": "2163", "properties": { "align": "center", "color": "16777215", "size": "18", "text": "Couchbase" } }, { "ID": "237", "typeID": "TextArea", "zOrder": "235", "w": "638", "h": "86", "measuredW": "200", "measuredH": "140", "x": "750", "y": "2246", "properties": { "color": "16776960" } }, { "ID": "238", "typeID": "Label", "zOrder": "236", "w": "142", "measuredW": "134", "measuredH": "25", "x": "799", "y": "2263", "properties": { "bold": "true", "size": "17", "text": "快取(Caching)" } }, { "ID": "239", "typeID": "Icon", "zOrder": "237", "measuredW": "24", "measuredH": "24", "x": "765", "y": "2263", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "240", "typeID": "Label", "zOrder": "238", "measuredW": "13", "measuredH": "21", "x": "770", "y": "2265", "properties": { "bold": "true", "color": "16777215", "text": "13" } }, { "ID": "241", "typeID": "Label", "zOrder": "239", "w": "574", "measuredW": "451", "measuredH": "25", "x": "799", "y": "2290", "properties": { "size": "17", "text": "瞭解如何使用 Redis 或 Memcached 實作應用程式級的快取" } }, { "ID": "242", "typeID": "TextInput", "zOrder": "240", "w": "183", "measuredW": "116", "measuredH": "32", "x": "472", "y": "2255", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "Memcached" } }, { "ID": "243", "typeID": "TextInput", "zOrder": "241", "w": "183", "measuredW": "60", "measuredH": "32", "x": "472", "y": "2291", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "Redis" } }, { "ID": "244", "typeID": "Label", "zOrder": "242", "w": "193", "measuredW": "118", "measuredH": "25", "x": "809", "y": "2120", "properties": { "size": "17", "text": "先學 MongoDB" } }, { "ID": "245", "typeID": "Label", "zOrder": "243", "w": "200", "measuredW": "102", "measuredH": "25", "x": "809", "y": "2144", "properties": { "size": "17", "text": "但一定要看看" } }, { "ID": "246", "typeID": "Label", "zOrder": "244", "w": "190", "measuredW": "170", "measuredH": "25", "x": "809", "y": "2169", "properties": { "size": "17", "text": "它與其他選項的不同處" } }, { "ID": "247", "typeID": "TextArea", "zOrder": "245", "w": "638", "h": "142", "measuredW": "200", "measuredH": "140", "x": "116", "y": "2605", "properties": { "color": "16776960", "text": "" } }, { "ID": "248", "typeID": "Label", "zOrder": "246", "w": "247", "measuredW": "243", "measuredH": "25", "x": "165", "y": "2622", "properties": { "bold": "true", "size": "17", "text": "訊息代理*(Message Broker)" } }, { "ID": "249", "typeID": "Icon", "zOrder": "247", "measuredW": "24", "measuredH": "24", "x": "131", "y": "2622", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "250", "typeID": "Label", "zOrder": "248", "w": "14", "measuredW": "13", "measuredH": "21", "x": "136", "y": "2624", "properties": { "bold": "true", "color": "16777215", "text": "16" } }, { "ID": "251", "typeID": "Label", "zOrder": "249", "w": "574", "measuredW": "457", "measuredH": "25", "x": "165", "y": "2651", "properties": { "size": "17", "text": "學習 Message Broker,瞭解「為什麼」,並選擇一個使用。" } }, { "ID": "252", "typeID": "TextArea", "zOrder": "250", "w": "299", "h": "109", "measuredW": "200", "measuredH": "140", "x": "131", "y": "2237", "properties": { "color": "16770457" } }, { "ID": "253", "typeID": "Label", "zOrder": "251", "w": "258", "measuredW": "119", "measuredH": "25", "x": "148", "y": "2253", "properties": { "size": "17", "text": "一旦你學會了," } }, { "ID": "254", "typeID": "Label", "zOrder": "252", "w": "258", "measuredW": "204", "measuredH": "25", "x": "148", "y": "2277", "properties": { "size": "17", "text": "在步驟 中的應用程式裡" } }, { "ID": "255", "typeID": "Label", "zOrder": "253", "w": "258", "measuredW": "102", "measuredH": "25", "x": "147", "y": "2303", "properties": { "size": "17", "text": "實作快取策略" } }, { "ID": "256", "typeID": "Label", "zOrder": "254", "w": "574", "measuredW": "401", "measuredH": "25", "x": "165", "y": "2679", "properties": { "size": "17", "text": "雖然有很多選項,但我會選擇 *RabbitMQ* 或 *Kafka*。" } }, { "ID": "257", "typeID": "TextInput", "zOrder": "255", "w": "183", "measuredW": "98", "measuredH": "32", "x": "886", "y": "2646", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "RabbitMQ" } }, { "ID": "258", "typeID": "TextInput", "zOrder": "256", "w": "183", "measuredW": "63", "measuredH": "32", "x": "886", "y": "2682", "properties": { "align": "center", "color": "16770457", "size": "18", "text": "Kafka" } }, { "ID": "259", "typeID": "Label", "zOrder": "257", "w": "574", "measuredW": "306", "measuredH": "25", "x": "165", "y": "2707", "properties": { "size": "17", "text": "如果你想要選擇一個,先學 RabbitMQ。" } }, { "ID": "260", "typeID": "TextArea", "zOrder": "258", "w": "638", "h": "143", "measuredW": "200", "measuredH": "140", "x": "116", "y": "2755", "properties": { "color": "16776960" } }, { "ID": "261", "typeID": "Label", "zOrder": "259", "w": "297", "measuredW": "287", "measuredH": "25", "x": "164", "y": "2772", "properties": { "bold": "true", "size": "17", "text": "學習一個搜尋引擎(Search Engine)" } }, { "ID": "262", "typeID": "Icon", "zOrder": "260", "measuredW": "24", "measuredH": "24", "x": "131", "y": "2772", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "263", "typeID": "Label", "zOrder": "261", "measuredW": "13", "measuredH": "21", "x": "136", "y": "2774", "properties": { "bold": "true", "color": "16777215", "text": "17" } }, { "ID": "264", "typeID": "TextInput", "zOrder": "262", "w": "183", "measuredW": "128", "measuredH": "32", "x": "886", "y": "2771", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "ElasticSearch" } }, { "ID": "265", "typeID": "TextInput", "zOrder": "263", "w": "183", "measuredW": "47", "measuredH": "32", "x": "886", "y": "2807", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "Solr" } }, { "ID": "266", "typeID": "TextInput", "zOrder": "264", "w": "183", "measuredW": "70", "measuredH": "32", "x": "888", "y": "2843", "properties": { "align": "center", "color": "16770457", "size": "18", "text": "Sphinx" } }, { "ID": "267", "typeID": "Label", "zOrder": "265", "w": "574", "measuredW": "442", "measuredH": "25", "x": "164", "y": "2802", "properties": { "size": "17", "text": "隨著應用程式的增長,在你資料庫的簡單查詢將不會停止," } }, { "ID": "268", "typeID": "Label", "zOrder": "266", "w": "574", "measuredW": "221", "measuredH": "25", "x": "164", "y": "2827", "properties": { "size": "17", "text": "你將不得不求助於搜尋引擎。" } }, { "ID": "269", "typeID": "Label", "zOrder": "267", "w": "574", "measuredW": "323", "measuredH": "25", "x": "164", "y": "2854", "properties": { "size": "17", "text": "這裡有許多選項,每個都有各自的不同處。" } }, { "ID": "270", "typeID": "TextArea", "zOrder": "268", "w": "638", "h": "113", "measuredW": "200", "measuredH": "140", "x": "753", "y": "2340", "properties": { "color": "16776960" } }, { "ID": "271", "typeID": "Label", "zOrder": "269", "w": "203", "measuredW": "137", "measuredH": "25", "x": "802", "y": "2357", "properties": { "bold": "true", "size": "17", "text": "建立 RESTful API" } }, { "ID": "272", "typeID": "Icon", "zOrder": "270", "measuredW": "24", "measuredH": "24", "x": "768", "y": "2357", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "273", "typeID": "Label", "zOrder": "271", "measuredW": "13", "measuredH": "21", "x": "773", "y": "2359", "properties": { "bold": "true", "color": "16777215", "text": "14" } }, { "ID": "274", "typeID": "Label", "zOrder": "272", "w": "574", "measuredW": "326", "measuredH": "25", "x": "803", "y": "2386", "properties": { "size": "17", "text": "瞭解 REST 並學習如何製作 RESTful API," } }, { "ID": "275", "typeID": "Label", "zOrder": "273", "w": "574", "measuredW": "472", "measuredH": "25", "x": "803", "y": "2410", "properties": { "size": "17", "text": "並確保從 *Roy Fielding* 的原始論文中閱讀有關 REST 的部分。" } }, { "ID": "276", "typeID": "TextArea", "zOrder": "274", "w": "638", "h": "87", "measuredW": "200", "measuredH": "140", "x": "754", "y": "2460", "properties": { "color": "16776960" } }, { "ID": "277", "typeID": "Label", "zOrder": "275", "w": "568", "measuredW": "413", "measuredH": "25", "x": "805", "y": "2477", "properties": { "bold": "true", "size": "17", "text": "認證(Authentication)、授權(Authorization)方法" } }, { "ID": "278", "typeID": "Icon", "zOrder": "276", "measuredW": "24", "measuredH": "24", "x": "771", "y": "2477", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "279", "typeID": "Label", "zOrder": "277", "measuredW": "13", "measuredH": "21", "x": "776", "y": "2479", "properties": { "bold": "true", "color": "16777215", "text": "15" } }, { "ID": "280", "typeID": "Label", "zOrder": "278", "w": "495", "measuredW": "306", "measuredH": "25", "x": "804", "y": "2508", "properties": { "size": "17", "text": "瞭解他們之間的差異,以及如何實作它們" } }, { "ID": "281", "typeID": "TextInput", "zOrder": "279", "w": "210", "measuredW": "66", "measuredH": "32", "x": "386", "y": "2400", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "OAuth" } }, { "ID": "282", "typeID": "TextInput", "zOrder": "280", "w": "210", "measuredW": "187", "measuredH": "32", "x": "386", "y": "2436", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "Basic Authentication" } }, { "ID": "283", "typeID": "TextInput", "zOrder": "281", "w": "210", "measuredW": "192", "measuredH": "32", "x": "386", "y": "2472", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "Token Authentication" } }, { "ID": "284", "typeID": "TextInput", "zOrder": "282", "w": "210", "measuredW": "51", "measuredH": "32", "x": "386", "y": "2508", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "JWT" } }, { "ID": "285", "typeID": "TextInput", "zOrder": "283", "w": "210", "measuredW": "75", "measuredH": "32", "x": "387", "y": "2545", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "OpenID" } }, { "ID": "286", "typeID": "TextArea", "zOrder": "284", "w": "638", "h": "60", "measuredW": "200", "measuredH": "140", "x": "738", "y": "2914", "properties": { "color": "16776960" } }, { "ID": "287", "typeID": "Label", "zOrder": "285", "w": "280", "measuredW": "165", "measuredH": "25", "x": "788", "y": "2930", "properties": { "bold": "true", "size": "17", "text": "學習如何使用 Docker" } }, { "ID": "288", "typeID": "Icon", "zOrder": "286", "measuredW": "24", "measuredH": "24", "x": "755", "y": "2929", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "289", "typeID": "Label", "zOrder": "287", "w": "14", "measuredW": "13", "measuredH": "21", "x": "760", "y": "2931", "properties": { "bold": "true", "color": "16777215", "text": "18" } }, { "ID": "290", "typeID": "TextArea", "zOrder": "288", "w": "638", "h": "112", "measuredW": "200", "measuredH": "140", "x": "738", "y": "3170", "properties": { "color": "16776960" } }, { "ID": "291", "typeID": "Label", "zOrder": "289", "w": "153", "measuredW": "112", "measuredH": "25", "x": "788", "y": "3185", "properties": { "bold": "true", "size": "17", "text": "學習 GraphQL" } }, { "ID": "292", "typeID": "Icon", "zOrder": "290", "measuredW": "24", "measuredH": "24", "x": "755", "y": "3184", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "293", "typeID": "Label", "zOrder": "291", "w": "14", "measuredW": "13", "measuredH": "21", "x": "760", "y": "3186", "properties": { "bold": "true", "color": "16777215", "text": "21" } }, { "ID": "294", "typeID": "Label", "zOrder": "292", "w": "574", "measuredW": "323", "measuredH": "25", "x": "788", "y": "3213", "properties": { "size": "17", "text": "雖然這不是必需的,但請隨時抽空看看它," } }, { "ID": "295", "typeID": "Label", "zOrder": "293", "w": "574", "measuredW": "338", "measuredH": "25", "x": "788", "y": "3240", "properties": { "size": "17", "text": "看看它是什麼,為什麼他們叫它新的 REST。" } }, { "ID": "296", "typeID": "TextArea", "zOrder": "294", "w": "638", "h": "114", "measuredW": "200", "measuredH": "140", "x": "738", "y": "2981", "properties": { "color": "16776960", "text": "" } }, { "ID": "297", "typeID": "Label", "zOrder": "295", "w": "298", "measuredW": "280", "measuredH": "25", "x": "789", "y": "2998", "properties": { "bold": "true", "size": "17", "text": "對網頁伺服器(Web Server)的瞭解" } }, { "ID": "298", "typeID": "Icon", "zOrder": "296", "measuredW": "24", "measuredH": "24", "x": "755", "y": "2996", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "299", "typeID": "Label", "zOrder": "297", "w": "14", "measuredW": "13", "measuredH": "21", "x": "760", "y": "2998", "properties": { "bold": "true", "color": "16777215", "text": "19" } }, { "ID": "300", "typeID": "Label", "zOrder": "298", "w": "566", "measuredW": "357", "measuredH": "25", "x": "789", "y": "3026", "properties": { "size": "17", "text": "這裡有幾個不同的選項,看看這些不同的選項," } }, { "ID": "301", "typeID": "Label", "zOrder": "299", "w": "566", "measuredW": "187", "measuredH": "25", "x": "789", "y": "3053", "properties": { "size": "17", "text": "瞭解它們的差異和局限。" } }, { "ID": "302", "typeID": "TextInput", "zOrder": "300", "w": "183", "measuredW": "76", "measuredH": "32", "x": "403", "y": "2971", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "Apache" } }, { "ID": "303", "typeID": "TextInput", "zOrder": "301", "w": "183", "measuredW": "61", "measuredH": "32", "x": "403", "y": "3007", "properties": { "align": "center", "color": "16776960", "size": "18", "text": "Nginx" } }, { "ID": "304", "typeID": "TextInput", "zOrder": "302", "w": "183", "measuredW": "67", "measuredH": "32", "x": "405", "y": "3043", "properties": { "align": "center", "color": "16770457", "size": "18", "text": "Caddy" } }, { "ID": "305", "typeID": "TextInput", "zOrder": "303", "w": "183", "measuredW": "67", "measuredH": "32", "x": "405", "y": "3080", "properties": { "align": "center", "color": "16770457", "size": "18", "text": "MS IIS" } }, { "ID": "306", "typeID": "TextArea", "zOrder": "304", "w": "638", "h": "60", "measuredW": "200", "measuredH": "140", "x": "739", "y": "3102", "properties": { "color": "16776960" } }, { "ID": "307", "typeID": "Label", "zOrder": "305", "w": "282", "measuredW": "205", "measuredH": "25", "x": "787", "y": "3119", "properties": { "bold": "true", "size": "17", "text": "學習如何使用 Web Socket" } }, { "ID": "308", "typeID": "Icon", "zOrder": "306", "measuredW": "24", "measuredH": "24", "x": "754", "y": "3118", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "309", "typeID": "Label", "zOrder": "307", "w": "21", "measuredW": "16", "measuredH": "21", "x": "758", "y": "3120", "properties": { "bold": "true", "color": "16777215", "text": "20" } }, { "ID": "310", "typeID": "TextArea", "zOrder": "308", "w": "638", "h": "112", "measuredW": "200", "measuredH": "140", "x": "216", "y": "3313", "properties": { "color": "16776960" } }, { "ID": "311", "typeID": "Label", "zOrder": "309", "w": "295", "measuredW": "284", "measuredH": "25", "x": "266", "y": "3328", "properties": { "bold": "true", "size": "17", "text": "研究圖片資料庫(Graph Database)" } }, { "ID": "312", "typeID": "Icon", "zOrder": "310", "measuredW": "24", "measuredH": "24", "x": "233", "y": "3327", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "313", "typeID": "Label", "zOrder": "311", "w": "29", "measuredW": "16", "measuredH": "21", "x": "237", "y": "3329", "properties": { "bold": "true", "color": "16777215", "text": "22" } }, { "ID": "314", "typeID": "Label", "zOrder": "312", "w": "574", "measuredW": "153", "measuredH": "25", "x": "266", "y": "3356", "properties": { "size": "17", "text": "這同樣不是必要的," } }, { "ID": "315", "typeID": "Label", "zOrder": "313", "w": "574", "measuredW": "340", "measuredH": "25", "x": "266", "y": "3383", "properties": { "size": "17", "text": "但你應該要有一點瞭解它們提供了什麼功能。" } }, { "ID": "316", "typeID": "Arrow", "zOrder": "314", "w": "15", "h": "147", "measuredW": "150", "measuredH": "100", "x": "537", "y": "3448", "properties": { "color": "2848996", "curvature": "0", "direction": "bottom", "leftArrow": "false", "p0": { "x": 14, "y": 0 }, "p1": { "x": 0.5864611260053622, "y": 0.008042895442359291 }, "p2": { "x": 0, "y": 146 }, "rightArrow": "false", "shape": "bezier" } }, { "ID": "317", "typeID": "Label", "zOrder": "315", "measuredW": "96", "measuredH": "32", "x": "489", "y": "3618", "properties": { "bold": "true", "size": "24", "text": "繼續探索" } }, { "ID": "318", "typeID": "TextArea", "zOrder": "316", "w": "637", "h": "106", "measuredW": "200", "measuredH": "140", "x": "216", "y": "3436", "properties": { "color": "16776960" } }, { "ID": "319", "typeID": "Icon", "zOrder": "317", "measuredW": "24", "measuredH": "24", "x": "230", "y": "3450", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "320", "typeID": "Label", "zOrder": "318", "w": "20", "measuredW": "17", "measuredH": "22", "x": "234", "y": "3452", "properties": { "bold": "true", "color": "16777215", "size": "14", "text": "23" } }, { "ID": "321", "typeID": "Label", "zOrder": "319", "w": "391", "measuredW": "198", "measuredH": "26", "x": "261", "y": "3449", "properties": { "bold": "true", "size": "18", "text": "所有上面沒有提到的事情" } }, { "ID": "322", "typeID": "Label", "zOrder": "320", "measuredW": "419", "measuredH": "25", "x": "262", "y": "3476", "properties": { "size": "17", "text": "效能分析(Profiling)、靜態分析(Static Analysis)、" } }, { "ID": "323", "typeID": "Icon", "zOrder": "321", "measuredW": "24", "measuredH": "24", "x": "202", "y": "2277", "properties": { "color": "10027263", "icon": { "ID": "circle", "size": "small" } } }, { "ID": "324", "typeID": "Label", "zOrder": "322", "measuredW": "11", "measuredH": "21", "x": "208", "y": "2279", "properties": { "bold": "true", "color": "16777215", "text": "11" } }, { "ID": "325", "typeID": "Label", "zOrder": "323", "measuredW": "440", "measuredH": "25", "x": "994", "y": "70", "properties": { "bold": "true", "color": "10027263", "size": "17", "text": "goodjack/developer-roadmap-chinese(台灣正體中文)" } }, { "ID": "327", "typeID": "Label", "zOrder": "324", "measuredW": "245", "measuredH": "25", "x": "995", "y": "122", "properties": { "bold": "true", "color": "10027263", "size": "17", "text": "littlegoodjack(台灣正體中文)" } }, { "ID": "328", "typeID": "Paragraph", "zOrder": "325", "w": "144", "h": "19", "measuredW": "275", "measuredH": "80", "x": "604", "y": "2722", "properties": { "text": "*譯註:又譯為訊息仲介" } }, { "ID": "329", "typeID": "Label", "zOrder": "326", "measuredW": "541", "measuredH": "25", "x": "262", "y": "3502", "properties": { "size": "17", "text": "、領域驅動設計(DDD)、簡單物件存取協定(SOAP)。去弄懂它吧!" } } ] }, "mockupH": "3610", "mockupW": "1326", "measuredW": "1434", "measuredH": "3650", "version": "1.0" } }