JavaRush /جاوا بلاگ /Random-UR /10 مضامین ہر پروگرامر کو پڑھنا چاہئے۔
Shoggy
سطح
Санкт-Петербург

10 مضامین ہر پروگرامر کو پڑھنا چاہئے۔

گروپ میں شائع ہوا۔
جاوا پروگرامر اور سافٹ ویئر ڈویلپر ہونے کے ناطے، میں نے بہت سے مضامین سے بہت کچھ سیکھا ہے جس کا عنوان ہے What Every Programmer should Know About..... ، وہ کسی خاص موضوع کے بارے میں بہت ساری مفید اور جامع معلومات فراہم کرتے ہیں جو دوسری صورت میں مشکل ہے۔ دریافت. علم کی اپنی جستجو میں، میں نے کچھ بہت مفید مضامین دیکھے ہیں جنہیں میں نے دوبارہ پڑھنے کے لیے حوالہ معلومات کے طور پر بک مارک کیا ہے۔ اس خیال سے کہ بہت سے پروگرامرز اس مجموعہ کو پڑھنے سے فائدہ اٹھا سکتے ہیں مجھے یہ پوسٹ لکھنے اور آپ کے ساتھ ان تمام "ہر پروگرامر کو کیا جاننا چاہیے" مضامین کا اشتراک کرنے پر اکسایا۔ 10 مضامین جو ہر پروگرامر کو پڑھنا چاہئے - 1اس مضمون میں، آپ علم کے کلاسک سیٹ سے واقف ہو جائیں گے جس کی ضرورت ہر پروگرامر کو ہوتی ہے، جیسے کہ میموری ، یونیکوڈ ، فلوٹنگ پوائنٹ ریاضی ، نیٹ ورکنگ ، آبجیکٹ اورینٹڈ ڈیزائن ٹائم ، یو آر ایل انکوڈنگ ، سٹرنگ اور بہت سے دوسرے۔ یہ فہرست ابتدائی اور نئے آنے والوں کے لیے بہت اہم ہے کیونکہ ان میں اکثر عملی معلومات کی کمی ہوتی ہے۔ چونکہ زیادہ تر مضامین حقیقی زندگی کی مثالوں پر مبنی ہیں، اس لیے انٹری لیول اور انٹرمیڈیٹ پروگرامرز ان سے بہت کچھ سیکھ سکتے ہیں۔ اس کے علاوہ، اپنے کیرئیر کے شروع میں بنیادی باتیں سیکھنے سے آپ کو ان غلطیوں سے بچنے میں مدد ملے گی جو دوسرے پروگرامرز اور سافٹ ویئر ڈویلپر پہلے ہی اپنے سیکھنے کے راستے میں کر چکے ہیں۔ بدقسمتی سے، بیان کردہ مضامین کی تمام معلومات پہلی پڑھنے سے آسانی سے ہضم نہیں ہوتی ہیں۔ امکانات یہ ہیں کہ آپ فلوٹنگ پوائنٹ نمبرز کے بارے میں کچھ تفصیلات کو فوری طور پر نہ سمجھ پائیں، یا آپ میموری کی پیچیدگیوں سے الجھن کا شکار ہو سکتے ہیں، لیکن اس مجموعہ کو ہاتھ میں رکھنا اور وضاحت کے لیے وقتاً فوقتاً اس کا حوالہ دینا ضروری ہے۔ لہذا میں آپ کو اچھی قسمت کی خواہش کرتا ہوں اور ان عظیم مضامین کو پڑھنے سے لطف اندوز ہوں۔ ویسے، کسی دوسرے "What Every Programmer Should Know" آرٹیکلز کو شیئر کرنا نہ بھولیں اگر وہ پہلے سے ہماری فہرست میں شامل نہیں ہیں۔

ہر پروگرامر کو میموری کے بارے میں کیا جاننا چاہئے۔

روسی میں ترجمہ یہ کلاسک مضامین میں سے ایک ہے جو میموری کی خصوصیات کے بارے میں آپ کی رہنمائی کرے گا، جن میں سے کچھ پرانے، کچھ نئے، کچھ مشہور اور کچھ زیادہ نہیں۔ انتظامی کردار اور ہمہ گیریت کے باوجود، ہر پروگرامر کے پاس میموری کے بارے میں کافی علم نہیں ہوتا ہے۔ اگر آپ اعلیٰ کارکردگی والی ایپلی کیشنز لکھنے کے کاروبار میں ہیں تو جدید نظاموں میں میموری سے واقف ہونے کی اہمیت بڑھ جاتی ہے۔ ہارڈ ویئر ڈیزائنرز زیادہ پیچیدہ میموری مینجمنٹ ماڈلز اور ایکسلریشن تکنیکوں کے ساتھ آ رہے ہیں، جیسے سی پی یو کیچز، لیکن یہ پروگرامرز کی مدد کے بغیر بہترین کارکردگی کا مظاہرہ نہیں کر سکتے۔ میں اب بھی یہ مضمون پڑھ رہا ہوں، اور میں آپ کو یہ نہیں بتا سکتا کہ میں نے اس سے RAM، CPU کیچز جیسے L1 اور L2 کیشے، میموری کی مختلف اقسام، براہ راست میموری تک رسائی، میموری کنٹرولر ڈیزائن، اور عام طور پر میموری کے بارے میں کتنا سیکھا ہے۔ . مختصر یہ کہ کسی بھی سطح کے پروگرامرز کے لیے پڑھنا ضروری ہے۔

ہر سائنسدان کو فلوٹنگ پوائنٹ ریاضی کے بارے میں کیا جاننا چاہئے۔

فلوٹنگ پوائنٹ ریاضی کا موضوع مشکل ہے اور اس پر عبور حاصل کرنا آسان نہیں ہے۔ بہت سے جاوا پروگرامرز یہ تک نہیں جانتے کہ قدروں کا موازنہ type float/ doubleoperator کے ساتھ کرتے وقت کیا غلط ہو سکتا ہے ==۔ ہم میں سے بہت سے لوگ مالیاتی حسابات کو اقسام floatاور double. یہ مضمون اس سلسلے کا ایک اور جوہر ہے اور تمام سافٹ ویئر ڈویلپرز اور پروگرامرز کے لیے پڑھنا ضروری ہے۔ جیسا کہ آپ تجربہ حاصل کرتے ہیں، آپ کو عمومی عنوانات کی پیچیدگیوں میں جانا چاہیے، اور فلوٹنگ پوائنٹ ریاضی ان میں سے ایک ہے۔ جاوا کے ایک سینئر ڈویلپر کے طور پر، آپ کو جاننا چاہیے کہ مانیٹری کیلکولیشن کیسے کریں، کب استعمال کریں float، doubleیا BigDecimalفلوٹنگ پوائنٹ نمبرز کو کیسے گول کریں، اور بہت کچھ۔ یہاں تک کہ اگر آپ کو اس موضوع کا ٹھوس علم ہے، مضمون کو پڑھنے کے بعد آپ فلوٹنگ پوائنٹ آپریشنز کے بارے میں کچھ نیا دریافت کر سکتے ہیں۔

ہر ڈویلپر کو یونیکوڈ کے بارے میں کیا معلوم ہونا چاہیے۔

کریکٹر انکوڈنگ ایک اور شعبہ ہے جہاں بہت سے پروگرامرز جدوجہد کرتے ہیں، اور "دی مطلق کم از کم ہر سافٹ ویئر ڈویلپر کو یونیکوڈ اور کریکٹر سیٹس کے بارے میں بالکل جاننا چاہیے (کوئی عذر نہیں!)" کا مقصد اس خلا کو پُر کرنا ہے۔ ریکارڈ کے لیے، جی ہاں، یہ اس مضمون کا مکمل عنوان ہے۔ اس کے مصنف جوئل اسپولسکی ہیں، جو https://stackoverflow.com کے بانیوں میں سے ایک ہیں ۔ جوئل نے یہ مضمون تقریباً 10 سال قبل اپنے بلاگ پر لکھا تھا، لیکن اس نے جدید دنیا میں اپنی مطابقت نہیں کھوئی ہے۔ مضمون میں بتایا گیا ہے کہ یونیکوڈ کیا ہے، انکوڈنگ کیا ہے، بائٹس کے ذریعے حروف کی نمائندگی کیسے کی جاتی ہے، اور بہت کچھ۔ اس مضمون کی بہترین چیزوں میں سے ایک زبان اور پیش کش کا طریقہ ہے، اگر آپ یونیکوڈ کے بارے میں کچھ نہیں جانتے ہیں، تب بھی آپ کو اسے سمجھنے میں کوئی دشواری نہیں ہوگی۔ مختصراً، تمام پروگرامرز، کوڈرز اور سافٹ ویئر انجینئرز کے لیے دوسرا ضرور پڑھنا چاہیے۔

ہر پروگرامر کو وقت کے بارے میں کیا جاننا چاہئے۔

کریکٹر انکوڈنگ کے علاوہ، وقت اور تاریخیں ( Timeاور Date) ایک اور علاقہ ہے جہاں بہت سے پروگرامرز، جن میں میں شامل ہوں، کو دشواری ہوتی ہے۔ یہاں تک کہ سینئر ڈویلپر بھی GMT، UTC، دن کی روشنی کی بچت کے وقت، اور لیپ سیکنڈ میں کھو جاتے ہیں۔ سچ پوچھیں تو، کچھ غلطیاں کیے بغیر ٹائم زونز سے نمٹنا آسان نہیں ہے، اور ڈے لائٹ سیونگ ٹائم کا استعمال اسے اور بھی مشکل بنا دیتا ہے۔ اگر آپ آزمائشی اور غلطی کا استعمال کرتے ہیں تو مسائل مزید بڑھ جاتے ہیں کیونکہ آپ ایسا کرنے سے کبھی بھی اپنے مسئلے کو حل نہیں کر پائیں گے۔ ایسی بہت سی چیزیں ہیں جو غلط ہو سکتی ہیں، اور اتنی ہی تعداد میں غلط فہمیاں ہیں۔ چیزیں جیسے کہ آیا کسی تاریخ میں ٹائم زون ہے یا نہیں آپ کو الجھن میں ڈال سکتا ہے، UNIX وقت کو دوسرے ٹائم زون میں تبدیل کرنا آپ کو پریشان کر سکتا ہے، اور آپ گھڑیوں اور تاخیر کو ہم آہنگ کرنے کے بارے میں آسانی سے بھول سکتے ہیں۔ مجھے امید ہے کہ اس مضمون کو پڑھنے کے بعد، وقت کے بارے میں آپ کی بہت سی غلط فہمیاں دور ہو جائیں گی اور آپ کو وقت کی مکمل سمجھ پیدا ہو جائے گی۔

یو آر ایل انکوڈنگ کے بارے میں ہر ویب ڈویلپر کو کیا معلوم ہونا چاہیے۔

یہ مضمون یونیفارم ریسورس لوکیٹر (URL) انکوڈنگ کے بارے میں عام غلط فہمیوں کو بیان کرتا ہے، پھر HTTP کے لیے URL انکوڈنگ کو واضح کرنے کی کوشش کرتا ہے، اور پھر عام مسائل اور حل کو ظاہر کرتا ہے۔ اگرچہ یہ مضمون کسی پروگرامنگ زبان کے لیے مخصوص نہیں ہے، لیکن یہ جاوا میں مسائل کی وضاحت کرتا ہے) اور جاوا میں اور ویب ایپلیکیشنز میں کئی سطحوں پر یو آر ایل انکوڈنگ کے مسائل کو حل کرنے کی وضاحت کے ساتھ ختم ہوتا ہے۔ آپ بنیادی URL گرامر، HTTP اور دیگر پروٹوکولز میں عمومی URL نحو سیکھیں گے۔ اس مضمون میں عام یو آر ایل کی خرابیوں کا بھی احاطہ کیا گیا ہے جیسے کریکٹر انکوڈنگ، یو آر ایل کے مختلف حصوں میں خصوصی حروف، اور یو آر ایل انکوڈنگ/ڈی کوڈنگ کے مسائل۔ اگر آپ جاوا پروگرامر ہیں، تو آپ یہ بھی سیکھیں گے کہ جاوا ایپلیکیشن میں یو آر ایل کا صحیح طریقے سے کیسے انتظام کیا جائے۔ یو آر ایل بنانے اور اپاچی کامنز HTTP کلائنٹ لائبریری کا استعمال کیسے کریں۔ آخر میں، یہ URLs کے ساتھ کام کرنے کے لیے بہترین طرز عمل اور تجاویز بھی پیش کرتا ہے، جیسے کہ آپ کو کسی URL کو بناتے وقت انکوڈ کیسے کرنا چاہیے، اس بات کو یقینی بنانا کہ آپ کے URL کو دوبارہ لکھنے والے فلٹرز آپ کے URLs کو درست طریقے سے ہینڈل کرتے ہیں، اور بہت کچھ۔ مختصر میں، کسی بھی ویب ڈویلپر اور پروگرامر کے لیے پڑھنا ضروری ہے۔

ہر پروگرامر ویب ڈویلپمنٹ کے بارے میں کیا جانتا ہے؟

programmersStackExchange کا یہ دلچسپ مضمون اس بارے میں ہے کہ ویب ایپلیکیشن کی تکنیکی تفصیلات کو نافذ کرنے والے ہر پروگرامر کو سائٹ کو عوام کے لیے کھولنے سے پہلے غور کرنا چاہیے۔ اس میں انٹرفیس ڈیزائن اور صارف کا تجربہ، سیکورٹی، ویب معیارات، کارکردگی، سرچ انجن آپٹیمائزیشن (SEO)، استعمال شدہ ٹیکنالوجیز اور کچھ اہم وسائل کے شعبوں کی چیزیں شامل ہیں۔ آج کی دنیا کا زیادہ تر انحصار انٹرنیٹ پر ہے اور پروگرامر کے لیے ذاتی ویب سائٹ یا بلاگ رکھنا کافی عام ہے۔ اس مضمون سے حاصل ہونے والا تجربہ نہ صرف آپ کی پیشہ ورانہ سرگرمیوں میں بلکہ آپ کے اپنے منصوبوں میں بھی کارآمد ہوگا۔ آپ تمام کلیدی ٹیکنالوجیز جیسے کہ HTTP، HTML، XML، CSS، JavaScript، براؤزر کی مطابقت، اپنی سائٹ کے لوڈنگ کے وقت کو کم کرنے کے لیے تجاویز، XML سائٹ کے نقشے، W3C وضاحتیں اور کئی دیگر اہم نکات کے بارے میں جانیں گے۔

SEO کے بارے میں ہر پروگرامر کو کیا جاننا چاہیے۔

یہ ایک اور مضمون ہے جو ویب ڈویلپرز، پروگرامرز اور بلاگرز کے لیے کافی مفید ہوگا۔ SEO نظر انداز کرنے کے لیے بہت بڑا ہے، اور بہت سے پروگرامرز اور بلاگرز کے لیے سرچ انجن آپٹیمائزیشن کی بنیادی باتوں کو جاننا ضروری ہے تاکہ Google کو ان کا مواد تلاش کرنے اور اسے ساتھی پروگرامرز کو دکھانے میں مدد ملے۔ چونکہ آج کی مربوط دنیا میں کوئی بھی کمپنی ویب کی موجودگی کے بغیر زندہ نہیں رہ سکتی، اس لیے SEO اور بھی اہم ہو جاتا ہے۔ اگر آپ کے پاس کوئی پروڈکٹ بیچنے والا کوئی اسٹارٹ اپ ہے، تو SEO ایسی چیز ہے جس کا آپ کو خیال رکھنا چاہیے۔ تمام پروگرامرز، خاص طور پر ویب ڈویلپرز، اس مضمون سے بہت فائدہ اٹھا سکتے ہیں۔ یاد رکھیں، سرچ انجن آپٹیمائزیشن وسیع اور بہت متحرک ہے، اور مختلف سرچ انجنوں، جیسے گوگل، یاہو، اور دیگر میں مختلف ہوتی ہے۔ لہذا، اس موضوع پر عبور حاصل کرنے کے لیے آپ کو ہمیشہ اپنے علم کو اپ ڈیٹ کرنا چاہیے۔

ہر سی پروگرامر کو غیر متعینہ سلوک #1/3 کے بارے میں کیا جاننا چاہئے۔

سی پروگرامنگ زبان میں "غیر متعینہ سلوک" کا تصور ہے۔ غیر متعینہ رویہ ایک وسیع موضوع ہے جس میں بہت ساری اہمیت ہے، اور یہ ایک وجہ ہے جس کی وجہ سے میں جاوا کو پسند کرتا ہوں: کم غیر متعینہ سلوک، کم الجھن، زیادہ استحکام، اور زیادہ امن۔ C میں بہت سی بظاہر معقول چیزیں دراصل غیر متعینہ رویہ رکھتی ہیں، اور یہ پروگراموں میں کیڑے کا ایک عام ذریعہ ہے۔ مزید برآں، C میں کوئی بھی غیر متعینہ رویہ عمل درآمد (مرتب اور رن ٹائم کے) کو کوڈ تیار کرنے کی اجازت دیتا ہے جو ہارڈ ڈرائیو کو فارمیٹ کرتا ہے، مکمل طور پر غیر متوقع چیزیں کرتا ہے، یا اس سے بھی بدتر۔ غیر متوقع رویے کے سمندر میں گہرا غوطہ لگانے کے لیے یہ بہترین مضمون پڑھیں۔

نیٹ ورکس کے بارے میں ہر پروگرامر کو کیا جاننے کی ضرورت ہے۔

مضمون سے ہی "آپ ایک پروگرامر ہیں۔ کیا آپ نے کبھی سوچا ہے کہ ملٹی پلیئر گیمز کیسے کام کرتی ہیں؟ باہر سے، یہ جادوئی لگتا ہے: دو یا دو سے زیادہ کھلاڑی آن لائن باہمی تعاون کے تجربے کا اشتراک کرتے ہیں، گویا وہ ایک ہی ورچوئل دنیا میں ایک ساتھ موجود ہیں۔ لیکن کیسے "ہم سچ جانتے ہیں، پروگرامرز، کہ اصل میں جو کچھ ہو رہا ہے وہ اس سے بالکل مختلف ہے جو آپ دیکھتے ہیں۔ یہ پتہ چلتا ہے کہ یہ سب ایک وہم ہے۔" یہ گیم پروگرامرز کے لیے لکھا گیا نیٹ ورکنگ کے بارے میں بہت دلچسپ مضمون ہے، لیکن میرے خیال میں ہر پروگرامر اور ڈویلپر اس سے فائدہ اٹھا سکتا ہے۔

ہر جاوا ڈویلپر کو سٹرنگز کے بارے میں کیا معلوم ہونا چاہیے۔

یہ میرا مضمون ہے java.lang.Stringاور ذاتی طور پر میرے خیال میں ہر جاوا پروگرامر کو اس کے بارے میں جاننا چاہیے۔ روزانہ جاوا پروگرامنگ میں سٹرنگز بہت اہم ہیں اور اسی وجہ سے کسی بھی جاوا ڈویلپر کے لیے اچھی جانکاری ضروری ہے۔ اس مضمون میں سٹرنگز کے بہت سے اہم پہلوؤں کا احاطہ کیا گیا ہے، بشمول سٹرنگ پول، سٹرنگ لٹریلز، سٹرنگز کا ==بمقابلہ کے ساتھ موازنہ equals()، بائٹس کو سٹرنگ میں تبدیل کرنا، سٹرنگ کیوں ناقابل تغیر ہے، مناسب سٹرنگ کنکٹنیشن، اور بہت کچھ۔ ایک جدید پروگرامر ان تمام خصوصیات کو پہلے سے جانتا ہے، لیکن اس کے باوجود اس کا جائزہ لینا اچھا خیال ہوگا۔

ہر پروگرامر کو سیکورٹی کے بارے میں کیا جاننا چاہیے؟

یہ سوال StackOverflow پر ایک طالب علم پروگرامر نے پوچھا تھا۔ جس طرح ہم پروگرامنگ کے عمومی تصورات جیسے کہ آپریٹنگ سسٹم، الگورتھم، ڈیٹا اسٹرکچر، کمپیوٹر فن تعمیر اور دیگر چیزوں کے بارے میں بہت کچھ جانتے ہیں، اسی طرح سیکیورٹی کے بارے میں جاننا بھی ضروری ہے۔ اگرچہ سیکورٹی کا موضوع کافی وسیع ہے، جس میں انکرپشن/ڈیکرپشن، SSL، ویب سیکیورٹی، مبہم، توثیق، اجازت وغیرہ کے شعبوں کا احاطہ کیا گیا ہے، لیکن ہر پروگرامر کے لیے بنیادی کم از کم علم کی ضرورت ہوتی ہے۔ ذاتی طور پر، اپنے کیرئیر کے آغاز میں میں سیکورٹی کے بارے میں زیادہ نہیں جانتا تھا، جب میں نے Servlet/JSP پر مبنی جاوا ویب ایپلیکیشن لکھنا شروع کی تو میں نے ویب سیکورٹی اور بہت سے سیکورٹی خطرات جیسے SQL انجیکشن، سروس سے انکار، XML کے بارے میں سیکھا۔ انجیکشن، کراس سائٹ اسکرپٹنگ اور دیگر۔ جاوا ڈویلپر کے طور پر، میں اب Fortify، PMP، اور دیگر جامد کوڈ تجزیہ کار فراہم کنندگان کے ذریعہ فراہم کردہ محفوظ Java پروگرامنگ کے طریقوں کی پیروی کرتا ہوں۔ اس مضمون میں سیکیورٹی کے عنوانات اور لنکس کا ایک بہت اچھا انتخاب ہے، اور چاہے آپ کوڈ کریں یا نہ کریں، آپ کو یقینی طور پر اس وسائل سے فائدہ ہوگا۔

لیٹنسی نمبرز ہر پروگرامر کو معلوم ہونا چاہیے۔

یہ مضمون ایک بونس ہے، لیکن، اس کے باوجود، کسی بھی پروگرامر کے لیے ضرور پڑھنا چاہیے۔ کسی بھی پروگرامنگ زبان میں اعلیٰ کارکردگی کی ایپلی کیشن لکھنے کے لیے، خواہ وہ جاوا ہو یا C++، آپ کو لیٹینسی کی بنیادی اقدار کا علم ہونا چاہیے، مثال کے طور پر، میموری سے متغیر کو پڑھنے میں کتنا وقت لگے گا، L1 کیشے سے، L2 کیشے سے، SSD اور ڈسک سے بے ترتیب پڑھا جاتا ہے۔ ڈیٹا پیکٹ کو ایک شہر سے دوسرے شہر بھیجنے یا ایک ڈیٹا سینٹر کے اندر چکر لگانے کے لیے میوٹیکس کو لاک/انلاک کرنے میں کتنا وقت لگتا ہے۔ یہ لیٹنسی ویلیوز پروگرامنگ لینگویج سے آزاد ہیں اور اس بنیادی علم کا حصہ ہیں کہ ایک ڈویلپر کو زیادہ بوجھ والی، کم لیٹنسی ایپلی کیشنز لکھنا ضروری ہے۔ اس لنک کے بارے میں مثبت بات یہ ہے کہ یہ ایک تقابلی تجزیہ فراہم کرتا ہے کہ یہ اقدار کس طرح برسوں میں تیار ہوئیں۔ آپ دیکھ سکتے ہیں کہ 2006 میں اقدار کیا تھیں اور اب کیا ہیں۔ مضامین کی اس فہرست کے لیے بس اتنا ہے کہ ہر پروگرامر کو پڑھنا چاہیے۔ ہر پروگرامر یا ڈیولپر کو کیا جاننا چاہیے جیسے مضامین پڑھ کر ، آپ کسی مخصوص موضوع کے بارے میں اپنے علم کو گہرا کرتے ہیں۔ سچ میں، پروگرامرز کے لیے سیکھنے کے لیے بہت سی چیزیں ہیں، اور جاوا جیسی پروگرامنگ لینگویج سیکھنا آئس برگ کا صرف ایک سرہ ہے، لیکن ہم میں سے اکثر کو سیکھنے کا شوق نہیں ہے۔ پروگرامنگ ایک ایسا کام ہے جس کے لیے مستقل ترقی کی ضرورت ہوتی ہے، اور صرف وہی چیزیں جو کسی بھی پروگرامر کے لیے ان کے پورے کیرئیر میں کارآمد ہوں گی وہ ہیں میموری ، یونیکوڈ ، فلوٹنگ پوائنٹ نمبرز ، ٹائم ، سیکیورٹی (سیکیورٹی) جیسی چیزوں کا بنیادی علم ۔ کچھ چیزیں زبان سے متعلق ہوتی ہیں، جیسے جاوا میں String پر میری پوسٹ اور ہر C پروگرامر کو غیر متعینہ رویے کے بارے میں کیا معلوم ہونا چاہیے، لیکن یہ بہت سے ابتدائی اور ڈویلپرز کے لیے سیکھنے کے لیے اچھی ہیں۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION