Magic string
کمپیوٹر پروگرامنگ میں، جادوئی سٹرنگ ایک ان پٹ ہے جس کے بارے میں ایک پروگرامر کا خیال ہے کہ وہ کبھی بھی بیرونی طور پر نہیں آئے گا اور جو دوسری صورت میں پوشیدہ فعالیت کو چالو کرتا ہے۔ اس پروگرام کا صارف ممکنہ طور پر ان پٹ فراہم کرے گا جو زیادہ تر حالات میں متوقع ردعمل دیتا ہے۔ تاہم، اگر صارف درحقیقت داخلی فعالیت کو مدعو کرتے ہوئے پہلے سے طے شدہ ان پٹ فراہم کرتا ہے، تو پروگرام کا ردعمل اکثر صارف کے لیے کافی غیر متوقع ہوتا ہے (اس طرح "جادوئی" ظاہر ہوتا ہے)۔ پس منظر عام طور پر جادوئی تاروں کا نفاذ وقت کی رکاوٹوں کی وجہ سے ہوتا ہے۔ ڈویلپر کو کسی مسئلے پر مزید گہرائی سے غور کرنے اور بہتر حل تلاش کرنے کے بجائے فوری حل تلاش کرنا چاہیے۔ مثال کے طور پر، کسی ایسے پروگرام کی جانچ کرتے وقت جو صارف کی ذاتی تفصیلات لیتا ہے اور ان کے کریڈٹ کارڈ نمبر کی تصدیق کرتا ہے، ایک ڈویلپر ایک جادوئی سٹرنگ شارٹ کٹ شامل کرنے کا فیصلہ کر سکتا ہے جس کے تحت کریڈٹ کارڈ نمبر کے طور پر "* * *" کا غیر متوقع ان پٹ درج کرنے سے پروگرام خود بخود آگے بڑھ جائے گا جیسے کہ کارڈ درست تھا، بغیر اس کی تصدیق کرنے میں وقت گزارے۔ اگر ڈویلپر جادوئی تار کو ہٹانا بھول جاتا ہے، اور حتمی پروگرام کا صارف فارم کو پر کرتے وقت پلیس ہولڈر کریڈٹ کارڈ نمبر کے طور پر "* * *" درج کرتا ہے، تو صارف نادانستہ طور پر پوشیدہ فعالیت کو متحرک کر دے گا۔ حل کی صورتحال/وجہ کے مسائل اکثر کسی پروجیکٹ میں ان کی شمولیت کے آغاز سے ہی ڈویلپر کے قابو سے باہر وقت کی اہم رکاوٹیں ہوتی ہیں۔ عام مسائل جو اس مخالف پیٹرن کا باعث بن سکتے ہیں: نل! = کالعدم یا کوئی بھی تغیر جہاں ڈیٹا ٹائپ کا بٹ وائز کا موازنہ کسی ایک جیسی قسم سے نہیں ہوتا ہے۔ یہ ایک ایسا مسئلہ ہے جو اسی ترقیاتی ماحول (ایک ہی پروگرامنگ زبان اور مرتب) میں بھی ہو سکتا ہے۔ اس مسئلے کی عددی اور بولین اقسام کے لیے ایک طویل تاریخ ہے اور زیادہ تر مرتب کرنے والے اسے اچھی طرح سے سنبھالتے ہیں (قابل اطلاق انتباہات اور غلطیوں، ڈیفالٹ ریزولوشن وغیرہ کے ساتھ)۔ نلیبل اقسام جیسے کہ سٹرنگز میں این یو ایل ایل کے لیے تاریخی طور پر مختلف تعریفوں کی دشواری ہوتی ہے۔ پیدا ہونے والی غلطیاں/انتباہات اکثر عام یا 'بہترین فٹ' ڈیفالٹ غلطی ہوتی ہیں جس کا پیغام اصل میں یہ بیان نہیں کرتا ہے کہ کیا ہو رہا ہے۔ اگر ڈویلپر کو ڈیبگنگ، شارٹ کٹ لینے، اور 'ڈیفالٹ' سٹرنگ میں کوڈنگ کے ذریعے مسئلے کو ٹریک کرنے کے لیے کافی سراغ نہیں مل سکتے ہیں، تو پروجیکٹ کو شیڈول پر رکھنے کا واحد طریقہ ہو سکتا ہے۔ اس کا ایک حل نل آبجیکٹ پیٹرن کا اطلاق ہو سکتا ہے۔ ایک کونے میں پروگرام کیا گیا۔ بعض اوقات کوئی ڈیزائن سیدھا اور سادہ بھی لگتا ہے لیکن منصوبہ بند ترقی کے اختتام کی طرف اکثر غیر متوقع حالات کی وجہ سے ممکنہ صارف کے ان پٹ پر منحصر ایک منطقی خامی ظاہر ہوتی ہے۔ اس طرح ایک ڈویلپر ایسے حالات سے نمٹنے کے لیے خصوصی سیکیورٹی/آپریشنل الاؤنس کے ساتھ صارف کے ان پٹ کو نافذ کرنے کی ضرورت محسوس کر سکتا ہے۔ یہ خاص طور پر ستم ظریفی ہو سکتی ہے کیونکہ بعض اوقات یہ واضح ہو جاتا ہے کہ شروع سے ہی زیادہ مضبوط ڈیزائن میں ممکنہ طور پر اس خامی کو سنبھالنے کے لیے گنجائش رہ جاتی ہے۔ تاہم اس پر عمل درآمد کرنے میں شاید بہت زیادہ وقت لگا ہوگا اور یہ کے آئی ایس ایس کے بنیادی انجینئرنگ تصور سے متصادم ہو سکتا ہے، جس سے ڈیزائن اور عمل درآمد آسان رہتا ہے اور صرف ابتدائی ضروری ضروریات کو پورا کیا جا سکتا ہے۔ عالمی پرچم تک بیرونی رسائی کی اجازت دینا۔ حد سے زیادہ اعتماد کہ عالمی پرچم کو کبھی بھی غلطی سے یا بدنیتی سے سیٹ نہیں کیا جا سکتا (اکثر کافی معقول مفروضہ) جانچ اور ڈیبگ کے مقاصد کے لیے اس طرح کے نفاذ کا جواز پیش کرتا ہے، خاص طور پر سادہ انٹرفیس والی چھوٹی ایپلی کیشنز کے لیے۔ تاہم اگر پروگرام کی تقسیم کافی ہے، تو یہ عام طور پر کسی کے جھنڈا لگانے سے پہلے صرف وقت کی بات ہوتی ہے۔ ایک واضح حل یہ ہے کہ کبھی بھی عالمی متغیر کو اس طرح استعمال نہ کریں۔ ایک ڈویلپر پرچم کو حالات کے مطابق قابل رسائی بھی بنا سکتا ہے۔ لہذا جادوئی تار کو خود ہی پروگرام کے ذریعے کسی دوسرے ان پٹ کے طور پر نمٹا جائے گا۔ اس کے بعد صارف کو ترتیب کو دوبارہ پیش کرنے کے ساتھ ساتھ دیگر واقعات کا کچھ مجموعہ تیار کرنا ہوتا ہے، جسے صارف انٹرفیس سمجھداری سے اجازت دیتا ہے، تاکہ پرچم ترتیب کو قبول کر سکے۔ ایک بہت زیادہ غیر متوقع منظر نامہ، اگرچہ اب بھی ممکن ہے۔ سخت فارمیٹنگ ان پٹ کی شکل کو محدود کرنا ایک ممکنہ دیکھ بھال (بگ فکسنگ) حل ہے۔ بنیادی طور پر، اس کا مطلب یہ ہے کہ ان پٹ کی معلومات کی توثیق کرنا یہ چیک کرنے کے لیے کہ یہ صحیح شکل میں ہے، تاکہ صارف کے ذریعے جادوئی تار کے دریافت ہونے کے امکان کو کم کیا جا سکے۔ مثالوں میں ٹیلی فون نمبر کی توثیق کرنا شامل ہے تاکہ یہ یقینی بنایا جا سکے کہ اس میں صرف ہندسوں پر مشتمل ہے (اور ممکنہ طور پر خالی جگہیں اور محدود حد تک وقفے) یا یہ چیک کرنا کہ کسی شخص کے نام کا اگلا نام اور کنیت ہے (اور مناسب طور پر بڑے حروف میں لکھا ہوا ہے)۔ توثیق کوڈ میں جادوئی تار کے لیے ایک رعایت دی گئی ہے تاکہ اسے توثیق کے ذریعے مسترد نہ کیا جائے۔ یہ توقع کی جاتی ہے کہ، چونکہ صارف ممکنہ طور پر فارمیٹنگ کے سخت نفاذ کو فوری طور پر محسوس کرے گا، اس لیے ممکنہ طور پر صارف کو فارمیٹ کے مطابق نہ ہونے والی سٹرنگ داخل کرنے کی کوشش کرنے کا امکان نہیں ہوگا۔ لہذا، صارف کے لیے جادوئی تار کو آزمانے کا امکان بہت کم ہے۔ کسی بھی ان پٹ توثیق کے عمل کی طرح، اس بات کو یقینی بنانا ضروری ہے کہ فارمیٹ اس طرح سے پابند نہ ہو جو غیر ارادی طور پر کچھ صارفین کے ذریعہ ایپلی کیشن کے استعمال کو محدود کرے۔ اس کی ایک مثال ایک ملک کے نظام کی بنیاد پر ٹیلی فون نمبر یا پوسٹل کوڈ ان پٹ کو محدود کرنا ہے (مثال کے طور پر۔ ہر صارف کو پانچ ہندسوں کا زپ کوڈ دینے کی ضرورت ہوتی ہے)، جس سے دوسرے ممالک میں مقیم جائز صارفین کے لیے مسائل پیدا ہوتے ہیں۔ جیسا کہ اکثر اینٹی پیٹرن کے معاملے میں ہوتا ہے، ایسے مخصوص منظرنامے موجود ہیں جہاں جادوئی تار عمل درآمد کے لیے درست حل ہوتے ہیں۔ مثالوں میں دھوکہ دہی کے کوڈ اور ایسٹر انڈے شامل ہیں۔ مزید برآں، ایسے معاملات ہوتے ہیں جب صارفین جادوئی تار ایجاد کرتے ہیں، اور جن نظاموں نے انہیں قبول کرنے کے لیے کوڈ نہیں کیا ہے وہ غیر متوقع نتائج پیدا کر سکتے ہیں جیسے کہ لائسنس پلیٹیں غائب ہونا۔ واقعات درج ذیل کچھ معروف واقعات کی فہرست ہے جہاں جادوئی تار کے استعمال سے مسائل پیدا ہوئے ہیں۔ کئی مختلف معاملات میں، اپنی گاڑی کی رجسٹریشن پلیٹوں پر ذاتی تار والے موٹر سائیکل سواروں کو غلط ٹریفک ٹکٹ موصول ہوئے ہیں۔ متاثرہ ٹکٹنگ سسٹم میں، جب پولیس افسران بغیر رجسٹریشن پلیٹ والی کار کے لیے ٹریفک ٹکٹ پر کرتے، تو وہ "نوپلیٹ"، "نوٹگ"، "مسنگ"، یا اسی طرح لکھتے۔ اس سے مسائل پیدا ہوئے جب موٹر سائیکل سواروں کو ان اقدار کے ساتھ اصل رجسٹریشن پلیٹیں دی گئیں، اور اس طرح ان پلیٹ لیس گاڑیوں کے لیے متعدد ٹریفک ٹکٹ موصول ہونے لگے۔ 1999 میں، ہیکرز نے ہاٹ میل میں ایک حفاظتی خامی کا انکشاف کیا جس نے کسی کو بھی پاس ورڈ 'ایہ' کا استعمال کرتے ہوئے کسی بھی ہاٹ میل اکاؤنٹ میں لاگ ان کرنے کی اجازت دی۔ اس وقت اسے "ویب کی تاریخ کا سب سے وسیع حفاظتی واقعہ" کہا جاتا تھا۔ نول کے آخری نام والے لوگوں نے آن لائن سسٹم کا استعمال کرتے ہوئے مختلف قسم کے مسائل کی اطلاع دی ہے، جیسے ہوائی جہاز کے ٹکٹ بک کرنے، سرکاری ٹیکس ویب سائٹس استعمال کرنے، یا یوٹیلیٹی بلوں کی ادائیگی کرنے سے قاصر ہونا۔ یہ مسئلہ ان نظاموں کی وجہ سے پیدا ہوتا ہے جو ان کے نام کو کالعدم پوائنٹر کے لیے الجھاتے ہیں۔ سسٹم پر منحصر ہے، اس کی وجہ سے سسٹم اپنا نام نہیں دکھا سکتا، صارف سے دوسرا نام درج کرنے کے لیے کہہ سکتا ہے (بعض اوقات اس پیغام کے ساتھ جس میں دعوی کیا جاتا ہے کہ نام کا فیلڈ خالی چھوڑ دیا گیا ہے)، یا کوئی ایرر میسج دکھا سکتا ہے۔ جادوئی نمبر (پروگرامنگ) ٹائم فارمیٹنگ اور اسٹوریج کیڑے بھی دیکھیں، ان مسائل کے لیے جو جادوئی سینٹینل ویلیو (عرف فلیگ ویلیو، ٹرپ ویلیو، بدمعاش ویلیو، سگنل ویلیو، ڈمی ڈیٹا) کینری ویلیو، بفر اوور فلوز کا پتہ لگانے کے لیے خصوصی ویلیو کی وجہ سے ہو سکتے ہیں۔ ویڈیو گیمز دھوکہ دہی کے کوڈ جن کی اصل ایک ہی ہے XYZZY (کمانڈ) حوالہ جات اینٹی پیٹرن