የጽሑፍ እና የJSON ንጽጽር መሰረታዊ መርሆዎች
በሁለት የጽሑፍ ሰነዶች ወይም የውሂብ ስብስቦች መካከል ያሉ ልዩነቶችን መለየት (diffing) በሶፍትዌር ልማት፣ በስርዓት አስተዳደር እና በጽሑፍ ዝግጅት ሥራዎች ውስጥ ወሳኝ ተግባር ነው። ይህ መሣሪያ ሁለት የጽሑፍ ወይም የJSON ስሪቶችን ጎን ለጎን በማነጻጸር የተደረጉ ለውጦችን በግልጽ ያሳያል። ንጽጽሩ በዋናነት በሁለት ግብዓቶች ላይ የተመሠረተ ነው፦ የመጀመሪያው ስሪት "ኦሪጅናል" ተብሎ የሚጠራ ሲሆን፣ ሁለተኛው ደግሞ ለውጦች የተደረጉበት "የተሻሻለ" ስሪት ነው።
በንጽጽር ሂደት ውስጥ ለውጦች በሦስት ዋና ዋና ምድቦች ተለይተው ይታያሉ፦
- የተጨመረ፦ በኦሪጅናሉ ውስጥ ያልነበረ እና በተሻሻለው ስሪት ላይ አዲስ የገባ ይዘት።
- የተወገደ፦ በኦሪጅናሉ ውስጥ የነበረ ነገር ግን ከተሻሻለው ስሪት ላይ የተሰረዘ ይዘት።
- የተቀየረ፦ ይዘቱ ሙሉ በሙሉ ሳይወገድ ወይም ሳይጨመር የተወሰነ ማሻሻያ የተደረገበት ክፍል።
ይህ መሣሪያ ለተጠቃሚዎች ፈጣን እና ትክክለኛ ንጽጽርን ለማቅረብ የተነደፈ ሲሆን፣ ለውጦቹን በጽሑፍ መስመር፣ በቃላት ደረጃ ወይም በJSON መዋቅራዊ መንገድ (structural path) ለይቶ ያሳያል።
የጽሑፍ ንጽጽር በቃላት እና በመስመሮች ደረጃ
በ"ጽሑፍ" ሁነታ ሲሰሩ የንጽጽር ዝርዝርነትን በሁለት መንገድ መወሰን ይቻላል፦
- በመስመሮች፦ ንጽጽሩ የሚከናወነው መስመር በመስመር ነው። ይህ በተለይ ረጅም አንቀጾችን፣ የኮድ ፋይሎችን ወይም የውቅረት (configuration) ፋይሎችን ለማነጻጸር እና የትኞቹ መስመሮች እንደተጨመሩ ወይም እንደተወገዱ ለማወቅ ይጠቅማል።
- በቃላት፦ ንጽጽሩ በእያንዳንዱ ቃል ደረጃ ይከናወናል። ይህ በአንድ መስመር ወይም ዓረፍተ ነገር ውስጥ የተደረጉ ጥቃቅን የፊደል ማሻሻያዎችን ወይም የቃላት ለውጦችን በትክክል ለመለየት ያስችላል።
መሣሪያው ለሙከራ የሚሆን የናሙና ጽሑፍ ያካተተ ሲሆን፣ የግራው ናሙና ጽሑፍ፦ "የBroBroGo መሣሪያዎች በብሮውዘርዎ ውስጥ ይሰራሉ። ፈጣን፣ የግል እና ቀላል ናቸው። ፈጣን ፍተሻ ሲያስፈልግዎት ይጠቀሙባቸው።"
እና የቀኝው ናሙና ጽሑፍ፦ "የBroBroGo መሣሪያዎች በብሮውዘርዎ ውስጥ ይሰራሉ። ፈጣን፣ የግል እና ትኩረት ያደረጉ ናቸው። ፈጣን ንጽጽር ሲያስፈልግዎት ይጠቀሙባቸው።"
በእነዚህ ሁለት ናሙናዎች መካከል ያለውን ልዩነት በመስመር ወይም በቃል ሁነታ በማነጻጸር የመሣሪያውን አሠራር መረዳት ይቻላል።
የJSON ውሂብ መዋቅራዊ ንጽጽር
የJSON (JavaScript Object Notation) ውሂብን ማነጻጸር ከተራ ጽሑፍ የተለየ ነው። የJSON ሁነታ የውሂቡን መዋቅራዊ ትርጉም (semantics) መሠረት በማድረግ ንጽጽር ያካሂዳል።
- የነገሮች ቁልፍ ቅደም ተከተል (Object Keys)፦ በJSON ሁነታ የነገሮች ቁልፎች የሚወዳደሩት በስማቸው ነው። በመሆኑም በቁልፎች ቅደም ተከተል ላይ ብቻ የሚመጣ ለውጥ እንደ መዋቅራዊ የትርጉም ለውጥ አይቆጠርም። ይህም የውሂቡ ቅርጸት ቢቀያየርም እሴቶቹ ተመሳሳይ ከሆኑ ልዩነት እንዳይታይ ያደርጋል።
- ድርድሮች (Arrays)፦ ከነገሮች በተለየ መልኩ በJSON ውስጥ ያሉ ድርድሮች የሚወዳደሩት በቦታቸው ቅደም ተከተል (position) መሠረት ነው።
በJSON ሁነታ የሚከተሉት የናሙና ውሂቦች ጥቅም ላይ ሊውሉ ይችላሉ፦
የግራ ናሙና JSON፦
{
"name": "BroBroGo",
"plan": "free",
"tools": ["json", "regex", "hash"],
"private": true
}
የቀኝ ናሙና JSON፦
{
"name": "BroBroGo",
"plan": "free",
"tools": ["json", "regex", "diff"],
"private": true,
"updated": 2026
}
በዚህ ንጽጽር መሣሪያው በድርድሩ ውስጥ ያለውን የ "hash" ወደ "diff" መቀየር እና አዲሱን የ "updated": 2026 ቁልፍ በተዋቀረ መንገድ ለይቶ ያሳያል።
የግብዓት ገደቦች እና የስህተት አያያዝ
መሣሪያው በተቀላጠፈ ሁኔታ እንዲሠራ እና የአሳሽዎን (browser) ፍጥነት እንዳያስተጓጉል የተወሰኑ የደህንነት እና የአፈጻጸም ገደቦች ተቀምጠዋል፦
- የባህሪ ገደብ፦ በአንድ ወገን የሚገባው ከፍተኛ የቁምፊዎች ብዛት በ300,000 ቁምፊዎች የተገደበ ነው። ግብዓቱ ከዚህ በላይ ከሆነ "ያ ግብዓት ለዚህ መሣሪያ በጣም ትልቅ ነው። አነስ ያለ ንጽጽር ይሞክሩ።" የሚል መልዕክት ይታያል።
- የጊዜ ገደብ (Timeout)፦ ንጽጽሩን ለማከናወን ከ2.5 ሰከንድ በላይ የሚወስድ ከሆነ ሂደቱ ይቋረጣል። በዚህ ጊዜ "ይህ ንጽጽር በጣም ረጅም ጊዜ እየወሰደ ነው። አነስተኛ ግብዓት ወይም የመስመር ሁነታን ይሞክሩ።" የሚል ማስጠንቀቂያ ይወጣል።
- የውጤት መገደብ፦ ገጹ ምላሽ ሰጪ ሆኖ እንዲቀጥል ለማድረግ በጣም ሰፊ የሆኑ ውጤቶች ሊገደቡ ይችላሉ። በዚህ ጊዜ "ገጹ ምላሽ ሰጪ ሆኖ እንዲቀጥል የተገደበ ውጤት እያሳየን ነው።" የሚል ማሳሰቢያ ይታያል።
- የJSON ትክክለኛነት፦ የገባው የJSON ውሂብ የተሳሳተ ከሆነ መሣሪያው "የግራው JSON ትክክል አይደለም፦" ወይም "የቀኝው JSON ትክክል አይደለም፦" ከሚል ማብራሪያ ጋር ስህተቱን ያሳያል።
- አጠቃላይ ስህተቶች፦ ንጽጽሩን ማከናወን ካልተቻለ "እነዚህን ግብዓቶች ማወዳደር አልተቻለም።" የሚል መልዕክት ይወጣል።
የውሂብ ግላዊነት እና የአካባቢ አሠራር
የዚህ መሣሪያ ዋነኛ ባህሪ የውሂብ ግላዊነት አጠባበቅ ዘዴው ነው። ጽሑፍዎ እና JSONዎ በብሮውዘርዎ ውስጥ ነው የሚወዳደሩት። ወደ BroBroGo ምንም ነገር አይሰቀልም።
ሁሉም የንጽጽር ስሌቶች፣ የጽሑፍ ትንተናዎች እና የቅርጸት ሥራዎች የሚከናወኑት በተጠቃሚው መሣሪያ ላይ ባለው የድር አሳሽ (web browser) አማካኝነት ብቻ ነው። ይህም ሚስጥራዊ የሆኑ የውቅረት ፋይሎችን፣ የኤፒአይ (API) ምላሾችን ወይም የግል ጽሑፎችን ወደ ውጭ አገልጋይ (server) ሳይልኩ በደህንነት ለማወዳደር ያስችላል።
ተደጋግመው የሚነሱ ጥያቄዎች (FAQ)
በጽሑፍ እና በJSON ሁነታ መካከል ያለው ልዩነት ምንድን ነው?
የጽሑፍ ሁነታ ጥሬ ይዘቱን በመስመር ወይም በቃል ያወዳድራል። የJSON ሁነታ ግን መጀመሪያ ሁለቱንም ወገኖች ይተነትናል (parses)፣ በተመሳሳይ መልኩ ይቀርጻቸዋል፣ ከዚያም እንደ $.user.email ያሉ የተቀየሩ መንገዶችን ይዘረዝራል።
በጣም ትላልቅ ግብዓቶችን ማስተናገድ ይችላል?
ቀስ ብለው የሚሰሩ ንጽጽሮች ከ2.5 ሰከንድ በኋላ ይቆማሉ። ገጹ ምላሽ ሰጪ ሆኖ እንዲቀጥል በጣም ትላልቅ የሆኑ ድንገተኛ መለጠፎች ይገደባሉ።
የJSON ሁነታ የነገሮችን ቁልፍ ቅደም ተከተል ችላ ይላል?
የተዋቀረው የለውጥ ዝርዝር የነገሮችን ቁልፎች (keys) በስም ስለሚያወዳድር፣ የቁልፎች ቅደም ተከተል ብቻ መቀያየር እንደ ትርጉም ለውጥ አይቆጠርም። ድርድሮች (arrays) ግን በቦታቸው ቅደም ተከተል ይወዳደራሉ።
በሁለቱ ግብዓቶች መካከል ምንም ልዩነት ከሌለ ምን ይታያል?
በሁለቱ ወገኖች መካከል ምንም ዓይነት ልዩነት ካልተገኘ መሣሪያው "ምንም ልዩነት አልተገኘም።" የሚል መልዕክት ያሳያል። በJSON ሁነታ ደግሞ ምንም ዓይነት የእሴት ለውጥ ከሌለ "ምንም የJSON እሴት ለውጦች አልተገኙም።" የሚል ማሳወቂያ ያሳያል።