Zone01 Kisumu කෝහෝට් එකේ පංතියේ සාමාජිකයින් පන් දෙනෙකු, Go භාෂාවෙන් ෆෝරම් යෙදුමක් සාදමින් සිටියා. එක් එක් අය තමන්ගේ කාර්ය භාරය – පරිශීලක සත්යාපනය, ලිපි, අදහස්, ෆිල්ටර් – ගෙනගෙන, මූලික/එක්සත්කරණ කාර්යය මට පැවරුණු අතර, සියලුම කොඩ් එකේ සම්පාදනය හොඳින් යයි සිතන ලදී.
දිනක උදෑසන, නවතම කේතය අරගෙන බලද්දී, සම්පූර්ණ ව්යාපෘතියක් බිඳී ගියා. ගෝලීය පණිවුඩයක් මෙසේ පෙන්වා තිබුණා: internal/posts/categories.go:6:2: package forum/internal/models is not in std. Go හි “standard library” එකේ නැති පෑකේජයක් ලෙස එය පෙනුනේ, ඒත් අපේ කේතය කිසිදු ස්ථානයක standard library එකේ නැත.
මෙම ගැටළුවේ මූලික හේතුව go.mod ගොනුවේ module ලයින් එක. Go මොඩියුලයෙහි නාමය, සම්පූර්ණ ව්යාපෘතියේ namespace වශයෙන් ක්රියා කරයි. අපේ ව්යාපෘතිය github.com/kahenda/forum ලෙස නිර්දේශ කර තිබුණා, එමනිසා සියලු internal import ගොනු github.com/kahenda/forum/internal/models වැනි පූර්ව නාමය සමඟ භාවිතා කළ යුතුය.
කණ්ඩායමේ එක් සාමාජිකයෙකුගේ ශාඛාවක, go.mod ගොනුව module forum ලෙස වෙනස් කර තිබුණි. එය merge වූ පසු, අපගේ පොදු go.mod එක අත්යවශ්ය නාමය අහිමි විය. ඒ සාමාජිකයාගේම කේතය ඒ වැරදි නාමය අනුව ලියා තිබුණු නිසා, ඔහුට ඒ වෙනසක් දැකගත නොහැකි විය. නමුත් අනෙක් සෑම දෙනාගේම import පථය හරියට තිබූ නිසා, ඔවුන්ගේ බිල්ඩ් එක අසාර්ථක විය.
Go, නව module නාමය නොදැන, forum/internal/models කියා standard library ෆෝල්ඩරයක් තුළ සොයන්න උත්සාහ කළා. ඒක සොයා ගත නොහැකි නිසා, “package … is not in std” යන අර්ථදාරක පණිවිඩයක් ලබා දුන්නා. මෙය මට Go ස්ථාපනයේ වැරදියක් වැනි පෙනුමක් දුන්නා.
සැකසීමේ පියවර:
- go.mod ගොනුවේ module ලයින් එක නැවත
github.com/kahenda/forumලෙස සකස් කිරීම. - වැරදි import පථයන් සොයා,
forum/internal/modelsසිටgithub.com/kahenda/forum/internal/modelsවෙත වෙනස් කිරීම.
දෙවන පියවර තරමක් කම්පනයක්, මන්ද එය සම්පූර්ණ කේත ගබඩාව තුළ සෙවීමට නොව, වැරදි නාමය භාවිතා කළ ගොනු පමණක් සොයාගත යුතුය. ඒ සඳහා Go අපට පේළිය සහ ගොනුව පෙන්වා දෙයි, ඒ අනුව එකින් එක නිවැරදි කරගත හැක.
ශ්රී ලංකාවට ඇති වැදගත්කම
Go භාෂාව ශ්රී ලංකාවේ තාක්ෂණික ආයතන, විශ්වවිද්යාල සිසුන්, startup සමාගම් අතර වැඩි වශයෙන් භාවිතා වේ. මෙවැනි “module name” වැනි කුඩා සත්යයක් පවා කණ්ඩායමක් තුළ අසත්ය වීමෙන් පිරිසක් අසමත් වෙයි. එය අපගේ දේශීය සංවර්ධකයින්ට පෙන්වන්නේ:
- ඇත්තටම “go.mod” ගොනුවේ ප්රතිපාදන සම්පූර්ණ ව්යාපෘතියේ පදනමක් වන බැවින්, ඒක හරියට කළමනාකරණය කළ යුතුය.
- කණ්ඩායම් වැඩ කිරීමේදී, සමාන්යයෙන් “schema” වැනි ගොනු (උදා: database schema) වැනි පරිච්ඡේදයක් ලෙස සලකන්න.
- අඩු වැරදි එකක් ද, බහුලව පරිසරයන්හි “build failure” හා කාලය හා සම්පත් බදුනේ.
ඉදිරියට, ශ්රී ලංකාවේ තාක්ෂණික සංවර්ධනයේ ගුණාත්මකභාවය වැඩි කර ගැනීමට, කණ්ඩායම් සාමාජිකයන් අතර “module name” වැනි වැදගත් ගොනු වල වෙනස්කම් සම්පූර්ණයෙන් පරීක්ෂා කිරීම අත්යවශ්ය වේ.
අවසන් වශයෙන්, කුඩා තත්ත්වයක් පවා, කණ්ඩායමක් තුළ “one‑line” ගැටළුවක් වශයෙන් විශාල බලපෑමක් ඇති කළ හැකිය. නිවැරදි සංවර්ධන ක්රමවේද, කේත පරීක්ෂණ සහ හොඳ ලේඛනගත කිරීම, අපේ තාක්ෂණික පාරිභෝගිකයන්ගේ සාර්ථකත්වයට මූලිකය.