𝗗𝗲𝘃 𝗟𝗼𝗴: 𝗠𝗖𝗣, 𝗘𝗺𝗮𝗶𝗹 𝗧𝗿𝗮𝗰𝗸𝗶𝗻𝗴, ਅਤੇ 𝗠𝗲𝗻𝘂 𝗦𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗲
ਮੈਂ ਅੱਜ ਦਾ ਦਿਨ MCP ਸਰਵਰ, ਆਟੋਮੇਟਡ ਈਮੇਲ ਟ੍ਰੈਕਿੰਗ, ਅਤੇ ਸਕੈਲੇਬਲ ਐਡਮਿਨ ਮੇਨੂ ਬਣਾਉਣ ਵਿੱਚ ਬਿਤਾਇਆ।
ਇੱਥੇ ਇਸ ਕੰਮ ਤੋਂ ਸਿੱਖੇ ਗਏ ਮੁੱਖ ਸਬਕ ਹਨ।
𝗠𝗖𝗣 𝗦𝗲𝗿𝘃𝗲𝗿 𝗦𝗮𝗳𝗲𝘁𝘆
ਮੈਂ ਇੱਕ ਜੈਨਰਿਕ MCP ਟੂਲਬਾਕਸ ਤਿਆਰ ਕੀਤਾ ਅਤੇ ਕਈ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਐਪਸ ਵਿੱਚ ਸਰਵਰ ਡਿਪਲੋਏ ਕੀਤੇ। ਜਦੋਂ ਅਜਿਹੇ ਏਜੰਟ ਬਣਾ ਰਹੇ ਹੋ ਜੋ ਤੁਹਾਡੇ ਸਿਸਟਮਾਂ ਨਾਲ ਇੰਟਰੈਕਟ ਕਰ ਸਕਦੇ ਹਨ, ਤਾਂ ਇਹਨਾਂ ਨਿਯਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ:
- ਏਜੰਟਾਂ ਨੂੰ 'read' ਟੂਲ ਆਜ਼ਾਦੀ ਨਾਲ ਦਿਓ।
- 'write' ਟੂਲ ਬਹੁਤ ਸਾਵਧਾਨੀ ਨਾਲ ਦਿਓ।
- ਹਰ 'write' ਐਕਸ਼ਨ ਨੂੰ ਮਨੁੱਖੀ ਪ੍ਰਵਾਨਗੀ ਵਾਲੇ (human-gated) ਰਨਬੁੱਕ ਰਾਹੀਂ ਲੰਘਾਓ।
- ਆਪਣੇ
create-userਟੂਲਸ ਵਿੱਚ ਪਾਸਵਰਡਾਂ ਨੂੰ ਹੈਸ਼ (hash) ਕਰੋ। ਕਦੇ ਵੀ ਪਲੇਨਟੈਕਸਟ (plaintext) ਸਟੋਰ ਨਾ ਕਰੋ। - ਆਡਿਟ ਲੌਗਸ ਲਈ ਪਬਲਿਕ UUIDs ਦੀ ਵਰਤੋਂ ਕਰੋ। ਕਦੇ ਵੀ ਅੰਦਰੂਨੀ ਡਾਟਾਬੇਸ IDs ਨੂੰ ਲੀਕ ਨਾ ਕਰੋ।
- ਯੂਜ਼ਰ ਕੰਟੈਕਸਟ ਲਈ ਇੱਕ ਫਾਲਬੈਕ (fallback) ਦੀ ਵਰਤੋਂ ਕਰੋ। ਇੱਕ ਏਜੰਟ HTTP ਜਾਂ STDIO ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦਾ ਹੈ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡਾ ਕੋਡ ਦੋਵਾਂ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ।
𝗘𝗺𝗮𝗶𝗹 𝗧𝗿𝗮𝗰𝗸𝗶𝗻𝗴 𝗪𝗶𝘁𝗵𝗼𝘂𝘁 𝗠𝗮𝗻𝘂𝗮𝗹 𝗪𝗼𝗿𝗸
ਮੈਂ ਇੱਕ ਅਜਿਹਾ ਸਿਸਟਮ ਬਣਾਇਆ ਹੈ ਜੋ ਈਮੇਲ ਖੋਲ੍ਹਣ (opens) ਅਤੇ ਕਲਿੱਕਾਂ ਨੂੰ ਆਪਣੇ ਆਪ ਟ੍ਰੈਕ ਕਰਦਾ ਹੈ। ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਹਰ ਈਮੇਲ ਵਿੱਚ ਟ੍ਰੈਕਿੰਗ ਪਿਕਸਲ ਜੋੜਨ ਲਈ ਮਜਬੂਰ ਨਾ ਕਰੋ। ਇਸ ਦੀ ਬਜਾਏ, ਮੇਲ-ਸੈਂਡਿੰਗ ਲਿਸਨਰ (mail-sending listener) ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਲਿਸਨਰ ਮੈਸੇਜ ਨੂੰ ਰੋਕਦਾ (intercept) ਹੈ।
- ਇਹ HTML ਵਿੱਚ ਟ੍ਰੈਕਿੰਗ ਪਿਕਸਲ ਇੰਜੈਕਟ ਕਰਦਾ ਹੈ।
- ਇਹ ਕਲਿੱਕ ਟ੍ਰੈਕਿੰਗ ਲਈ ਸਾਰੇ ਲਿੰਕਾਂ ਨੂੰ ਰੈਪ (wrap) ਕਰਦਾ ਹੈ।
- ਇਹ ਆਸਾਨ ਕੋਰੀਲੇਸ਼ਨ (correlation) ਲਈ ਇੱਕ ਮੈਟਾਡਾਟਾ ਹੈਸ਼ ਜੋੜਦਾ ਹੈ।
ਦੋ ਮਹੱਤਵਪੂਰਨ ਨੋਟ:
Mail::raw()ਤੋਂ ਬਚੋ। ਇਹ HTML ਰੀ-ਰਾਈਟਿੰਗ ਪਾਥ ਨੂੰ ਛੱਡ ਦਿੰਦਾ ਹੈ। ਟ੍ਰੈਕਿੰਗ ਕੰਮ ਕਰੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਸਹੀ HTML Mailables ਦੀ ਵਰਤੋਂ ਕਰੋ।- ਟ੍ਰੈਕਿੰਗ ਨੂੰ ਡਿਫੌਲਟ ਰੂਪ ਵਿੱਚ "on" 'ਤੇ ਸੈੱਟ ਕਰੋ। ਜੇਕਰ ਯੂਜ਼ਰਾਂ ਨੂੰ ਇਸਨੂੰ ਚਾਲੂ ਕਰਨਾ ਪਵੇਗਾ, ਤਾਂ ਉਹ ਭੁੱਲ ਜਾਣਗੇ।
𝗦𝗰𝗮𝗹𝗮𝗯𝗹𝗲 𝗔𝗱𝗺𝗶𝗻 𝗠𝗲𝗻𝘂𝘀
ਜਦੋਂ ਤੁਸੀਂ ਕਈ ਐਪਸ ਵਿੱਚ ਮੇਨੂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦੇ ਹੋ, ਤਾਂ ਇੱਕ ਵਿਸ਼ਾਲ ਫਾਈਲ ਦੀ ਵਰਤੋਂ ਨਾ ਕਰੋ। ਹਰੇਕ ਗਰੁੱਪ ਲਈ ਛੋਟੀਆਂ ਬਿਲਡਰ ਕਲਾਸਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਹਰੇਕ ਗਰੁੱਪ ਲਈ ਇੱਕ ਕਲਾਸ ਬਣਾਓ (ਜਿਵੇਂ ਕਿ Settings, User Management)।
- ਹਰੇਕ ਕਲਾਸ ਆਪਣੇ ਆਪ ਦੇ ਆਈਟਮਾਂ ਅਤੇ ਲੋੜੀਂਦੀਆਂ ਪਰਮਿਸ਼ਨਾਂ ਦੀ ਘੋਸ਼ਣਾ ਕਰਦੀ ਹੈ।
- ਇਹ ਤੁਹਾਡੇ ਨੈਵੀਗੇਸ਼ਨ ਨੂੰ ਡਿਕਲੇਰੇਟਿਵ (declarative) ਰੱਖਦਾ ਹੈ।
- ਲੰਬੇ ਲੇਬਲਾਂ ਨੂੰ ਕੰਪੋਨੈਂਟ ਦੇ ਅੰਦਰ ਛੋਟਾ (truncate) ਕਰੋ, ਨਾ ਕਿ ਹਰੇਕ ਆਈਟਮ ਦੇ ਆਧਾਰ 'ਤੇ।
- ਟੂਲਸ ਨੂੰ ਦੋ ਚੈੱਕਾਂ ਰਾਹੀਂ ਰੋਕੋ: ਯੂਜ਼ਰ ਪਰਮਿਸ਼ਨਾਂ ਅਤੇ ਖਾਸ ਐਪ ਐਡੀਸ਼ਨ।
𝗧𝗵𝗲 𝗕𝗶𝗴𝗴𝗲𝗿 𝗣𝗶𝗰𝘁𝘂𝗿𝗲
ਟੀਚਾ ਸੁਰੱਖਿਆ ਜਾਲ (safety net) ਨੂੰ ਆਟੋਮੈਟਿਕ ਬਣਾਉਣਾ ਹੈ।
ਜੇਕਰ ਕੋਈ ਡਾਇਗਨੌਸਟਿਕ ਟੂਲ (diagnostic tool) ਉਪਯੋਗੀ ਹੈ, ਤਾਂ ਇਸਨੂੰ ਡਿਫੌਲਟ ਰੂਪ ਵਿੱਚ ਚਾਲੂ ਕਰ ਦਿਓ। ਜੇਕਰ ਤੁਹਾਨੂੰ ਇਸਨੂੰ ਚਾਲੂ ਕਰਨ ਦੀ ਯਾਦ ਰੱਖਣੀ ਪੈਂਦੀ ਹੈ, ਤਾਂ ਜਦੋਂ ਰਾਤ ਦੇ 2 ਵਜੇ ਸਿਸਟਮ ਫੇਲ ਹੋਵੇਗਾ, ਤਾਂ ਇਹ ਤੁਹਾਡੇ ਕੋਲ ਨਹੀਂ ਹੋਵੇਗਾ। ਆਪਣੇ ਸਬਕਾਂ ਨੂੰ ਆਪਣੇ ਟੂਲਸ ਵਿੱਚ ਇਨਕੋਡ (encode) ਕਰੋ ਤਾਂ ਜੋ ਤੁਹਾਨੂੰ ਉਹਨਾਂ ਨੂੰ ਦੁਬਾਰਾ ਸਿੱਖਣ ਦੀ ਲੋੜ ਨਾ ਪਵੇ।