বাড়ি উন্নয়ন দ্রুত প্রতিক্রিয়া: ডাটাবেস ডিবাগিং এবং উদ্ধারে প্রোফাইলিং

দ্রুত প্রতিক্রিয়া: ডাটাবেস ডিবাগিং এবং উদ্ধারে প্রোফাইলিং

Anonim

টেকোপিডিয়া স্টাফ দ্বারা, মার্চ 15, 2017

টেকওয়ে: হোস্ট এরিক কাভানাঘ ডাঃ রবিন ব্লার, ডেজ ব্লাঞ্চফিল্ড এবং আইডিরার বার্ট স্কালজোর সাথে ডাটাবেস ডিবাগিং এবং প্রোফাইলিং নিয়ে আলোচনা করেছেন।

আপনি বর্তমানে লগ ইন নেই Please ভিডিওটি দেখতে লগ ইন বা সাইন আপ করুন।

এরিক কাভানাঘ: ঠিক আছে, মহিলা এবং ভদ্রলোক, এটি বুধবার পূর্ব সময় 4:00, এবং অবশ্যই এর অর্থ।

রবিন ব্লুর: শুনতে পাচ্ছেন না এরিক।

এরিক কাভানাঘ: আমি কয়েকদিন আগে সেখানে ছিলাম, তাই আপনি একা নন। তবে আজকের বিষয়টি সত্যই আকর্ষণীয় জিনিস। এটি এমন এক জিনিস যা আপনি নিশ্চিত করতে চান যে আপনার কোম্পানির ব্যাকগ্রাউন্ডে ঘটছে, যদি না আপনি যে ব্যক্তি এটি করছেন, তবে সেক্ষেত্রে আপনি নিশ্চিত করতে চান যে আপনি এটি সঠিকভাবে করছেন। কারণ আমরা ডিবাগিংয়ের কথা বলছি। কেউ বাগ পছন্দ করে না, সফ্টওয়্যারটি কাজ করা বন্ধ করে দিলে কেউ পছন্দ করে না - লোকেরা বিরক্ত হয়, ব্যবহারকারীরা বন্ধুত্বপূর্ণ হয়। এটা ভালো না. সুতরাং, আমরা "দ্রুত প্রতিক্রিয়া: ডেটাবেস ডিবাগিং এবং রেসকিউতে প্রোফাইলিং" সম্পর্কে কথা বলতে যাচ্ছি।

আপনার সম্পর্কে সত্যই একটি স্পট আছে, টুইটারে আমাকে হিট করুন, অবশ্যই অবশ্যই এরিক_কাওয়ানাঘ।

এই বছর গরম। এবং ডিবাগিং গরম হতে চলেছে, যাই হোক না কেন। এটি সত্যই এই সমস্যাগুলির মধ্যে একটি হতে চলেছে যা কখনই চলে না, এই জিনিসটিতে আমরা যত ভাল পাই না কেন, সর্বদা সমস্যা হতে চলেছে, তাই কী কীভাবে আপনি এই সমস্যাগুলি দ্রুত সমাধান করতে পারেন সেখানে কীভাবে পাবেন? আদর্শভাবে, আপনার দুর্দান্ত প্রোগ্রামার রয়েছে, দুর্দান্ত পরিবেশ রয়েছে, যেখানে খুব বেশি ভুল হয় না, তবে পুরানো প্রবাদটি যেমন চলেছে, "দুর্ঘটনাগুলি সর্বাধিক পরিবারের মধ্যে ঘটে থাকে” "এবং সংস্থাগুলির ক্ষেত্রেও এটি সত্য। সুতরাং, এই জিনিসগুলি ঘটবে, এটি ঘটতে চলেছে, প্রশ্নটি এটির সাথে ডিল করার এবং সেই সমস্যাগুলি সমাধান করার জন্য আপনার সমাধানটি কী হতে পারে?

আমরা ডাঃ রবিন ব্লুরের কাছ থেকে শুনতে পাব, তারপরে নীচে থেকে আমাদের নিজস্ব ডেজ ব্লাঞ্চফিল্ড এবং অবশ্যই, আমাদের ভাল বন্ধু, বার্ট স্কালজো, আইডিআরএ থেকে। এবং প্রকৃতপক্ষে, আমি রবিন ব্লুর কীগুলি হস্তান্তর করতে যাচ্ছি, এটি নিয়ে যান। মেঝে তোমার।

রবিন ব্লুর: ঠিক আছে। এটি একটি মজার বিষয়। আমি ভেবেছিলাম যে ডেজ সম্ভবত সম্ভবত ডিবাগিং সম্পর্কিত প্রকৃত কৌশল এবং যুদ্ধের গল্পগুলি নিয়ে চলেছে, আমি ভেবেছিলাম যে আমি কেবল একটি পটভূমি আলোচনা করব যাতে আমাদের কী ঘটছে তার একটি সম্পূর্ণ বৃত্তাকার চিত্র পাওয়া উচিত। আমি এটি দীর্ঘ সময় করেছিলাম, এবং আমি কোডার হিসাবে থাকতাম, সুতরাং এটির মতোই, এবং আমি এই উপস্থাপনায় প্রায় প্রলুব্ধ হয়েছিলাম মুক্ত উত্সের ধারণা সম্পর্কে গীতিকাঠী শুরু করতে কিন্তু আমি ভেবেছিলাম আমি এটি অন্য কারও কাছে ছেড়ে দেব।

এখানে বিখ্যাত বাগগুলির একটি তালিকা রয়েছে এবং এগুলির বেশিরভাগই কারও শীর্ষ তালিকায় উঠে আসে, মূলত, শেষ দুটি ব্যতীত কমপক্ষে 100 মিলিয়ন ডলার ব্যতীত। প্রথমটি ছিল মঙ্গল গ্রহের জলবায়ু অরবিটার, মহাকাশে হারিয়েছে এবং এটি একটি কোডিং সমস্যার কারণে হয়েছিল, যেখানে লোকেরা (হাসি) ফুট এবং ইঞ্চি দিয়ে মেট্রিক ইউনিটগুলিকে বিভ্রান্ত করেছিল। আরিয়েন ফাইভ ফ্লাইট 501 এ একটি ইঞ্জিন লাগানো হয়েছিল এবং যে কম্পিউটারগুলি যখন রকেটটি চালাচ্ছিল তখন এটি চালু হয়েছিল এবং এটি যখন চালু করা হয়েছিল between একাধিক কম্পিউটার ব্যর্থতা, বিস্ফোরিত রকেট, শিরোনামের খবর। 1982 সালে সোভিয়েত গ্যাস পাইপলাইনটিকে গ্রহের ইতিহাসের বৃহত্তম বিস্ফোরণ বলে উল্লেখ করা হয়েছিল; আমি তা নিশ্চিত কিনা। রাশিয়ানরা কিছু স্বয়ংক্রিয় নিয়ন্ত্রণ সফ্টওয়্যার চুরি করেছিল, এবং সিআইএ বুঝতে পেরেছিল যে তারা এটি করতে চলেছে এবং এতে বাগগুলি রেখেছিল, এবং সোভিয়েতরা এটি পরীক্ষা না করেই বাস্তবায়ন করেছিল। সুতরাং, একটি পাইপলাইন উড়িয়ে দিলেন, ভেবেছিলেন যে মজাদার।

মরিস কৃমিটি একটি কোডিং পরীক্ষা ছিল, যা হঠাৎ করে একটি ধর্ষণকারী কীট হয়ে উঠল যা সবার চারপাশে ছড়িয়ে পড়ে - এটি দৃশ্যত caused ১০০ মিলিয়ন ডলারের ক্ষতি করেছে; এটা অবশ্যই অনুমান। ইন্টেল গণিত চিপ দিয়ে একটি বিখ্যাত ত্রুটি করেছিল - ১৯৯৩ সালে পেন্টিয়াম চিপে একটি গণিতের নির্দেশ - যার ব্যয় $ ১০০ মিলিয়ন ডলারের বেশি ছিল। অ্যাপলের মানচিত্র প্রোগ্রামটি সম্ভবত অ্যাপল যা কিছু করেছে তার সবচেয়ে খারাপ এবং সবচেয়ে বিপর্যয়কর লঞ্চ। যে লোকেরা এটি ব্যবহার করার চেষ্টা করেছিল, আমি বলতে চাইছি কেউ 101 এর সাথে গাড়ি চালাচ্ছিল এবং আবিষ্কার করেছে যে অ্যাপল মানচিত্রটি জানিয়েছে যে তারা সান ফ্রান্সিসকো উপসাগরের মাঝখানে ছিল। সুতরাং, লোকেরা অ্যাপল মানচিত্র অ্যাপটিকে আইলস্ট হিসাবে উল্লেখ করতে শুরু করেছে। 1990 সালের এটি আমাদের দীর্ঘতম আউটেজ - এটির মতো কোনও ব্যয়ের দৃষ্টিকোণ থেকে এটি আকর্ষণীয় - এটিএন্ডটি প্রায় নয় ঘন্টা বাইরে ছিল এবং এটিতে দূরত্বের কলগুলির জন্য প্রায় 60 মিলিয়ন ডলার ব্যয় হয়েছিল।

এবং আমি যুক্তরাজ্যের একটি বীমা সংস্থা এবং ডাটাবেসে ছিলাম, তারা ডাটাবেসের একটি নতুন সংস্করণ প্রয়োগ করেছিল এবং এটি ডেটা মুছতে শুরু করে। এবং আমি এটি খুব ভালভাবে স্মরণ করি, কারণ আমাকে পরে ডেকে আনা হয়েছিল কারণ এর জন্য কোনও ধরণের ডাটাবেস নির্বাচনের অংশ নিতে। এবং এটি খুব আকর্ষণীয় ছিল যে তারা ডাটাবেসের একটি নতুন সংস্করণ নিয়েছিল এবং তাদের পরীক্ষার একটি ব্যাটারি ছিল যা তারা ডাটাবেসের নতুন সংস্করণে করেছিল যে এটি সমস্ত পরীক্ষায় পাস করেছে। এটি ডেটা মুছতে সত্যিই অস্পষ্ট উপায় খুঁজে পেয়েছে।

সুতরাং, যাইহোক, যে। আমি ভেবেছিলাম যে আমি প্রতিবন্ধকতা মেলে না এবং এসকিউএল জারি করা সম্পর্কে কথা বলব। এটি আকর্ষণীয় যে রিলেশনাল ডাটাবেসগুলি টেবিলগুলিতে ডেটা সঞ্চয় করে এবং কোডারগুলি বস্তু কাঠামোগুলিতে ডেটা ম্যানিপুলেট করতে থাকে যা সত্যই টেবিলগুলিতে খুব ভাল মানচিত্র দেয় না। এবং তার কারণ হিসাবে, আপনি কীটিকে প্রতিবন্ধকতা ম্যাচ ম্যাচ বলে অভিহিত করেছেন এবং কারওর সাথে এটি কোনও না কোনওভাবে মোকাবেলা করতে হবে। তবে আসলে কী ঘটে, কারণ একটি মডেল, কোডারের মডেল এবং ডাটাবেস অন্য মডেল, বিশেষভাবে সাজানো হয় না। আপনি যে বাগগুলি একসাথে কাজ করে এমন জিনিস তৈরি করে থাকলে তা ঘটবে না তা আপনি পেয়ে যান, যা আমার মনে হয় আনন্দিত। সুতরাং, মূলত, কোডারদের পক্ষে, যখন আপনি স্তরক্রম পান এটি প্রকারগুলি হতে পারে, এটি সেটগুলির ফলস্বরূপ হতে পারে, এটি দুর্বল এপিআই সক্ষমতা হতে পারে, এটি এমন অনেকগুলি বিষয় হতে পারে যা কেবলমাত্র ডাটাবেসের সাথে ইন্টারঅ্যাকশন হিসাবে পদক্ষেপ ফেলে দেয়। তবে যে জিনিসটি আমার পক্ষে সবচেয়ে বেশি তা সত্যই আকর্ষণীয়; আমাকে সর্বদা অবাক করে দিয়েছিল যে আপনার এই এসকিউএল বাধা ছিল যা কোডার এবং ডাটাবেস একে অপরের সাথে কাজ করে এমন একধরণের প্রতিবন্ধকতাও। সুতরাং, এসকিউএলের ডেটা স্বীকৃতি রয়েছে, যা সূক্ষ্ম এবং এটি নির্বাচন, প্রকল্প এবং যোগদানের জন্য ডিএমএল রয়েছে, যা ভাল fine এটির সাহায্যে ডাটাবেস থেকে ডেটা বের করার ক্ষেত্রে আপনি অনেক সক্ষমতা ফেলে দিতে পারেন। জিনিসগুলি করার জন্য এটির গাণিতিক ভাষা খুব কম। এটির একটি এবং এটির কিছুটা রয়েছে এবং এতে সময়-ভিত্তিক স্টাফ খুব কম থাকে। এবং সে কারণে, এসকিউএল একটি অপূর্ণ, যদি আপনার পছন্দ হয় তবে ডেটা পাওয়ার উপায়। সুতরাং, ডাটাবেস ছেলেরা ডাটাবেসে থাকার জন্য সঞ্চিত পদ্ধতি তৈরি করেছিল এবং সেখানে থাকা সঞ্চিত প্রক্রিয়াগুলির কারণ হ'ল আপনি কোনও প্রোগ্রামে ডেটা পিছনে পিছনে নিক্ষেপ করতে চান না।

কার্যকারিতা কিছু জন্য অত্যন্ত ডেটা নির্দিষ্ট ছিল, সুতরাং এটি কেবল রেফারেনশিয়াল অখণ্ডতা এবং ক্যাসকেডিং মুছে ফেলা এবং এর মতো জিনিস ছিল না, ডাটাবেস হঠাৎ করে আপনি একটি ডেটাবেজে কার্যকারিতা রাখছেন তার যত্ন নিচ্ছিল, যার অর্থ অবশ্যই কোনও অ্যাপ্লিকেশনটির কার্যকারিতা কোডার এবং ডাটাবেসের মধ্যেই বিভক্ত হতে পারে। এবং এটি কিছু ধরণের ফাংশন বাস্তবায়নের কাজটিকে সত্যই বেশ কঠিন এবং তাই আরও ত্রুটির প্রবণ করে তুলেছে। সুতরাং, এটি ডাটাবেস গেমের এক দিক, কারণ এর অর্থ হল যে আপনি উদাহরণস্বরূপ প্রচুর বাস্তবায়ন করতে পেরেছেন, আমি যে সম্পর্কযুক্ত ডাটাবেসে জড়িত ছিলাম সেখানে হ'ল সঞ্চিত পদ্ধতিতে সত্যই একটি ভীষণ কোড রয়েছে যা সংরক্ষণ করা হয় অ্যাপ্লিকেশনগুলিতে থাকা কোড থেকে পৃথকভাবে। এবং এটি পেয়ে যাওয়া খুব আজব জিনিস বলে মনে হচ্ছে, এটি বিভিন্ন কাজ করার ক্ষেত্রে মোটামুটি স্মার্ট বলে মনে করা হচ্ছে।

আমি ভেবেছিলাম আমি ডাটাবেস কর্মক্ষমতা সম্পর্কেও কথা বলব কারণ পারফরম্যান্সের ত্রুটিগুলি প্রায়শই বাগ হিসাবে বিবেচিত হয় তবে মূলত আপনি সিপিইউতে, মেমরিটিতে, ডিস্কে, নেটওয়ার্কে এবং আপনার লক হওয়ার কারণে পারফরম্যান্স সংক্রান্ত সমস্যা থাকতে পারে issues । ধারণাটি হ'ল কোডরটির কার্য সম্পাদনের বিষয়ে সত্যই উদ্বিগ্ন হওয়ার দরকার ছিল না এবং ডাটাবেসটি আসলে সত্যই যুক্তিসঙ্গতভাবে সম্পাদন করবে। এটি এমনভাবে নকশা করার কথা ছিল যাতে কোডারটি জানতে না হয়। তবে, আপনি খারাপ ডাটাবেস ডিজাইন পান, আপনি খারাপ প্রোগ্রামের নকশা পান, আপনি কাজের চাপ মিক্সিংয়ে সম্মতি পান, যা পারফরম্যান্সের সমস্যার কারণ হতে পারে। আপনি লোড ব্যালেন্সিং পান, আপনি সক্ষমতা পরিকল্পনা, ডেটা বৃদ্ধি পাবেন - যা কোনও ডাটাবেসকে কেবল থামিয়ে বা ধীর করে দিতে পারে। এটি একটি মজার বিষয়, যখন ডাটাবেসগুলি প্রায় পূর্ণ হয়, তখন তারা ধীর হয়ে যায়। এবং আপনার প্রতিলিপি এবং প্রতিলিপি তৈরির প্রয়োজন এবং ব্যাকআপ এবং পুনরুদ্ধার করার প্রয়োজনের ক্ষেত্রে ডেটা স্তর ইস্যু থাকতে পারে। যাইহোক, এটি একটি সাধারণ ওভারভিউ।

আমি কেবল এটিই বলতে চাই যে ডাটাবেস ডিবাগিং কেবলমাত্র কঠোর এবং অপ্রয়োজনীয় হতে পারে - এবং আমি বলি যে আমি এটি অনেক কাজ করেছি - এবং আপনি প্রায়শই এটি আবিষ্কার করবেন যে এটি ডিবাগিংয়ের সমস্ত পরিস্থিতিগুলির মতো I কখনও অভিজ্ঞ, হ'ল প্রথম জিনিসটি যা আপনি কখনও দেখেন তা গোলযোগ mess এবং আপনাকে চেষ্টা করতে হবে এবং জগাখিচুড়িটি কীভাবে ঘটেছিল তা কাজে লাগাতে হবে। এবং প্রায়শই যখন আপনি একটি ডেটাবেস ইস্যুটি দেখেন তখন আপনি যা যা দেখছেন তা হ'ল দুর্নীতিগ্রস্ত ডেটা এবং আপনি ভাবছেন, "কীভাবে ঘটেছিল?"

যাইহোক, আমি দেজের কাছে যাব, যিনি সম্ভবত আমার চেয়ে বেশি জ্ঞানের কথা বলতে যাচ্ছেন। আমি আপনাকে বল পাস করার উপায় জানি না, ডেজ।

এরিক কাভানাঘ: আমি এটি পাস করব, পাশে থাকব, ধরে থাকব।

অটোমেটেড ভয়েস: অংশগ্রহণকারী লাইনগুলি নিঃশব্দ করা হয়েছে।

এরিক কাভানাঘ: ঠিক আছে, এক সেকেন্ডের জন্য ঝুলুন, আমাকে দেজ বল দিন।

ডেজ ব্লাঞ্চফিল্ড: আপনাকে ধন্যবাদ, এরিক। হ্যাঁ, ডাঃ রবিন ব্লুর, আপনি প্রকৃতপক্ষে সবচেয়ে সঠিক: আপনি যদি শাস্তি ক্ষমা করেন তবে এটি একটি বিষয়, একটি আজীবন বাগবীর, দুঃখিত আমি সেটির জন্য নিজেকে সাহায্য করতে পারি না। আশা করি আপনি সেখানে আমার প্রথম স্ক্রিনটি দেখতে পাবেন, শীর্ষে ফন্ট আকারের সমস্যার জন্য আমার ক্ষমা চাই। বাগের বিষয়টি আমার অভিজ্ঞতা অনেক ক্ষেত্রেই একটি দীর্ঘকালীন বক্তৃতা। এটি এমন একটি বিস্তৃত এবং বিস্তৃত বিষয়, তাই আমি দুটি মূল ক্ষেত্রের উপর আলোকপাত করব, বিশেষত আমরা কীটিকে একটি বাগ হিসাবে বিবেচনা করি তা ধারণা, তবে একটি প্রোগ্রামিং ইস্যু। আমি মনে করি আজকাল প্রতি বগের প্রবর্তন সাধারণত সংহত বিকাশ পরিবেশ দ্বারা গৃহীত হয়, যদিও এগুলি দীর্ঘমেয়াদী বাগ থাকতে পারে। তবে প্রায়শই এটি প্রোফাইলিং কোডের ক্ষেত্রে বেশি হয় এবং কোড লিখতে পারা যায় যা কার্যকর হয়, এটি একটি ত্রুটি হওয়া উচিত। সুতরাং, এখানে আমার শিরোনাম স্লাইড, আমি আসলে খুব উচ্চ রেজোলিউশন এ 3 এ এর ​​একটি অনুলিপি পেয়েছিলাম, তবে দুর্ভাগ্যক্রমে এটি ঘরের এক চলাচলে ধ্বংস হয়ে গেছে। তবে এটি ১৯৪৫ সালের সার্কায় একটি প্রোগ্রামিং শীটে একটি হস্তাক্ষরযুক্ত নোট, যেখানে মার্কিন যুক্তরাষ্ট্রের হার্ভার্ড বিশ্ববিদ্যালয়ের কিছু লোক বলে চিহ্নিত করা হয়েছে, মার্ক দ্বিতীয় নামে তাদের একটি মেশিনের দ্বিতীয় বিল্ড। তারা সাধারণ ভাষায় কিছু সমস্যা ডিবাগ করছিল, তবে তারা একটি ত্রুটি সন্ধান করার চেষ্টা করছে এবং এটি প্রমাণিত হয়েছে যে একটি হার্ডওয়্যার এবং সম্ভবত একটি সফ্টওয়্যার ইস্যু থেকে কিছুটা আলাদা এসেছে।

সুতরাং, শহুরে পৌরাণিক কাহিনীটি 9 সেপ্টেম্বর, 1945 সালের চারপাশে হার্ভার্ড বিশ্ববিদ্যালয়ের একটি দল একটি মেশিন টানছিল, তারা "রিলে সত্তর" নামক একটি জিনিস পেয়েছিল - সেই দিনগুলিতে প্রোগ্রামিং একটি শারীরিক অর্থে করা হয়েছিল, আপনার ক্ষত কোড একটি বোর্ডের চারপাশে, এবং আপনি কীভাবে মেশিনকে কার্যকরভাবে প্রোগ্রাম করেছিলেন - এবং তারা খুঁজে পেয়েছিল যে এই রিলে নম্বর সত্তরটি এতে কিছু ভুল ছিল, এবং এটি প্রকৃত শব্দ "বাগ" এসেছিল কারণ এটি বেশ আক্ষরিকভাবে একটি পতঙ্গ ছিল - সম্ভবত সেখানে তামার তারের টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো ছিল এবং গল্পটি বলেছে যে কিংবদন্তি গ্রেস হপার এই শিরোনাম হিসাবে আমার শিরোনাম স্লাইডের জন্য, "একটি বাগের সন্ধানের প্রথম প্রকৃত ঘটনা" উদ্ধৃতিটি উদ্ধৃত হয়নি।

তবে রবিন তার প্রথম স্লাইডে যেমন হাইলাইট করেছিলেন, তেমনি একটি বাগের ধারণাটি অনেক পিছনে চলে যায় যেমন আমরা কল্পনা করতে পারি মানুষেরা প্যাচের মতো ধারণাগুলি করছে। "প্যাচ" শব্দটি একটি পাঞ্চ কার্ডের একটি গর্তের উপর টেপ দেওয়ার প্রকৃত টুকরা থেকে এসেছে। তবে এর পুরো বিষয়টি হ'ল "ডিবাগিং" শব্দটি একটি শারীরিক মেশিনে বাগ খুঁজে পাওয়ার এই ধারণাটি থেকে আসে। এবং তখন থেকেই, আমরা এই পরিভাষাটি সমস্যাগুলির সাথে মোকাবিলা করার চেষ্টা করে ব্যবহার করেছি, হয় এমন কোনও প্রোগ্রামের সংকলন না করে ইস্যু কোডিংয়ের মতো নয়, তবে এমন একটি প্রোগ্রাম হিসাবে যা ভালভাবে চালিত হয় না। এবং নির্দিষ্টভাবে প্রোফাইল করা হয়নি কেবল শেষ না হওয়া লুপগুলির মতো জিনিসগুলি সন্ধান করুন যা কেবল কোথাও যায় না।

তবে আমাদের একটি দৃশ্যাবলীও আছে এবং আমি ভেবেছিলাম যে আরও কিছু বিস্তারিত জানার আগে আমি বেশ কয়েকটি মজার স্লাইডগুলি রেখে দেব। ওয়েবে এক্সকেসিডি নামে পরিচিত ক্লাসিক কার্টুনটি এখানে রয়েছে এবং কার্টুনিস্টের বিশ্বে কিছু চমত্কার মজার ভিউ রয়েছে। এবং এটি একটি "ছোট্ট ববি টেবিল" নামে একটি বাচ্চা এবং সম্ভবত তাঁর বাবা-মা এই ছোট ছেলের নাম রবার্ট বলেছিলেন)); টেবিল ছাত্রদের ফেলে দাও; - এবং এটি বলা হয় এবং "হাই, এটি আপনার ছেলের স্কুলটিতে কম্পিউটারের কোনও সমস্যা আছে" এবং পিতামাতা উত্তর দেয়, "ওহে প্রিয়, সে কিছু ভেঙেছে?" এবং শিক্ষক বলেছেন, "ভাল, "একভাবে, " এবং শিক্ষক জিজ্ঞাসা করলেন, "আপনি কি সত্যই আপনার ছেলের নাম রেখেছিলেন রবার্ট '); টেবিলে শিক্ষার্থীদের ফেলে দাও; -? "এবং পিতামাতারা বলেছেন, " ওঁ হ্যাঁ, ছোট্ট ববি টেবিলগুলি আমরা তাকে ডাকি। "যাইহোক, তারা আরও বলে যে তারা এখন বছরের শিক্ষার্থীর রেকর্ড হারিয়েছে, আমি আশা করি আপনি খুশি। এবং প্রতিক্রিয়াটি হ'ল, "ভাল, আপনার আপনার ডাটাবেস ইনপুটগুলি পরিষ্কার এবং স্যানিটাইজ করা উচিত” "এবং আমি কোডটিতে জিনিসগুলি সন্ধান করার ক্ষেত্রে আমাদের যে সমস্যাগুলি রয়েছে সেগুলি নিয়ে কথা বলার জন্য আমি বহুবার ব্যবহার করি, যা প্রায়শই কোড ডেটার দিকে নজর দেয় না that যেমন.

আর একটি মজার, আমি জানি না এটি আসল কি না - আমি সন্দেহ করি এটি একটি বোকামি - তবে আবার এটি আমার মজার হাড়কেও স্পর্শ করে। কেউ নিজের গাড়ির সামনের লাইসেন্স প্লেট পরিবর্তন করছেন, অনুরূপ বিবৃতিতে ডেটাবেসগুলি স্পিড ক্যামেরায় ফেলে দেয় এবং এর ফলে গাড়ীর লাইসেন্স প্লেট ক্যাপচার করে। এবং আমি সর্বদা এটি উল্লেখ করি যেহেতু আমি সন্দেহ করি যে কোনও প্রোগ্রামারই তাদের কোডটির আসল মোটর গাড়ি দ্বারা চালিত এবং চালিত হওয়ার প্রত্যাশা করেছিল, তবে কখনই সেটিকে হ্রাস করবেন না - রাগান্বিত গীকের শক্তি।

(হাসি)

তবে এটি আমার মূল পয়েন্টে নিয়ে যায়, আমি অনুমান করি এবং এটি হ'ল একসময় আমরা কেবলমাত্র প্রাণঘাতী হিসাবে ডিবাগ এবং প্রোফাইল কোড করতে পারি। তবে আমি সেই সময়টি খুব বেশিই পেরিয়েছি, এবং আমার অভিজ্ঞতায় উপস্থাপিতভাবে, আমার প্রথম - এবং এটি আমার ভয়ঙ্করভাবে বয়ে যাবে, আমি নিশ্চিত; রবিন আপনাকে এর জন্য আমার কাছে মজা দেওয়ার জন্য স্বাগত জানায় - তবে icallyতিহাসিকভাবে আমি 14 বছর বয়েসের একটি পটভূমি থেকে এসেছি শহরের শেষ প্রান্তে ঘুরে বেড়ানো, এবং নিউতে "ডেটা কম" নামে একটি ডেটা সেন্টারের দরজায় কড়া নাড়ছি ocking জিল্যান্ড এবং জিজ্ঞাসা করছে যে আমি স্কুল থেকে পকেট অর্থ উপার্জন করতে পারি কিনা দেরীতে বাসের বাসটি পেয়ে প্রতিদিন, প্রায় 25 কিলোমিটার যাতায়াত করে, প্রিন্টারে কাগজ এবং টেপ ড্রাইভে রেখে, এবং কেবল একজন সাধারণ প্রশাসক হয়ে। এবং কৌতূহলবশত তারা আমাকে একটি কাজ দিয়েছে। তবে সময়ের সাথে সাথে, আমি নিজেকে স্টাফিংয়ে theুকতে এবং প্রোগ্রামারদের সন্ধান করতে সক্ষম হয়েছি এবং বুঝতে পেরেছি যে আমি কোডিং পছন্দ করি এবং স্ক্রিপ্ট এবং ব্যাচের কাজ চালানোর প্রক্রিয়াটি দিয়ে চলেছি, যা দিনের শেষে এখনও কোড রয়েছে। আপনাকে স্ক্রিপ্টগুলি এবং ব্যাচের কাজগুলি লিখতে হবে যা মিনি প্রোগ্রামগুলির মতো দেখায় এবং তারপরে 3270 টার্মিনাল রাইটিং কোডটি হাতে হাতে বসে পুরো প্রক্রিয়াটি অতিক্রম করে।

আসলে, আমার প্রথম অভিজ্ঞতাটি একটি টেলি টাইপ টার্মিনালে ছিল যা আসলে ১৩২-কলামের শারীরিক প্রিন্টার ছিল। মূলত, খুব পুরানো টাইপরাইটারের মতো ভেবে দেখুন যেমন কাগজটি এতে স্ক্রোল করে, কারণ তাদের কাছে সিআরটি টিউব নেই। এবং এটিতে ডিবাগিং কোডটি খুব অ-তুচ্ছ সমস্যা ছিল, তাই আপনি নিজের কোডটি নিজের হাতে লিখে লিখে রাখতেন এবং তারপরে টাইপস্টের মতো কাজ করতেন, ছিঁচকে ত্রুটি না পেতে সর্বাত্মক চেষ্টা করেছিলেন, কারণ এটি বলতে হতাশ হতাশাজনক একটি লাইন সম্পাদক একটি নির্দিষ্ট লাইনে যান এবং তারপরে লাইনটি মুদ্রণ করুন এবং তারপরে এটি আবার টাইপ করুন But তবে একসময় এটি ছিল যে আমরা কোডটি কীভাবে লিখেছিলাম এবং এটিই আমরা ডিবাগ করেছি, এবং আমরা এটি খুব ভাল পেয়েছি। এবং প্রকৃতপক্ষে, এটি আমাদের খুব ভাল প্রোগ্রামিং কৌশলগুলি করতে বাধ্য করেছিল, কারণ এটি ঠিক করার পক্ষে এটি ছিল সত্যিকারের ঝামেলা। তবে যাত্রাটি তখন পেরিয়ে গেল - এবং আমরা সকলেই এর সাথে পরিচিত - এটি আমার বিশ্বের 3270 টার্মিনাল অভিজ্ঞতা থেকে ডিজিটাল সরঞ্জাম ভিটি 220 এ গিয়েছিল যেখানে আপনি পর্দায় জিনিস দেখতে পেলেন, তবে আবার আপনি ঠিক একই জিনিসটি করছিলেন আপনি কেবল একটি সিআরটি-তে কাগজের টেপ প্রিন্টেড ফর্ম্যাটটি দিয়েছিলেন তবে আপনি আরও সহজে মুছতে সক্ষম হয়েছিলেন এবং আপনার কাছে সেই "ডিআইডি ডিট ডিট ডিট ডিট" শব্দ ছিল না।

এবং তারপরে আপনি জানেন, উইস টার্মিনালগুলি - উইস 150 এর মতো সম্ভবত কোনও কম্পিউটারে আমার প্রিয় ইন্টারফেস - এবং তারপরে পিসি এবং তারপরে ম্যাক এবং তারপরে আজকাল আধুনিক জিইআইআই এবং আইডি যা ওয়েব ভিত্তিক। এবং এর মাধ্যমে বিভিন্ন প্রোগ্রাম, এক মধ্যে প্রোগ্রামিং এবং একত্রিতকারী এবং পাইলট এবং লোগো এবং লিস্প এবং ফোর্টরান এবং পাস্কাল এবং ভাষাগুলি যা মানুষকে ক্রাইঞ্জ করতে পারে। তবে এগুলি এমন ভাষা যা আপনাকে ভাল কোড লিখতে বাধ্য করেছিল; তারা আপনাকে খারাপ অভ্যাস দিয়ে দূরে সরিয়ে দেয়নি। সি, সি ++, জাভা, রুবি, পাইথন - এবং আমরা সেই প্রোগ্রামিং পর্যায়ে আরও এগিয়ে যাই, আমরা আরও স্ক্রিপ্টের মতো পাই, আমরা স্ট্রাকচার্ড ক্যোয়ারী ল্যাঙ্গুয়েজের এবং পিএইচপি-র মতো ভাষাগুলির কাছাকাছি এবং আরও কাছাকাছি যা এসকিউএল আহ্বান করতে ব্যবহৃত হয়। আপনাকে বলার বিষয়টি, আমার পটভূমি থেকে আগত, আমি অনেক উপায়ে স্ব-শিক্ষিত ছিলাম এবং যেগুলি আমাকে শিখতে সহায়তা করেছিল, তা আমাকে নিশ্চিত করার জন্য ডিজাইন এবং প্রক্রিয়াগুলির খুব ভাল প্রোগ্রামিং অনুশীলন এবং খুব ভাল অনুশীলন আমাকে শিখিয়েছিল বগি কোড প্রবর্তন করুন।

প্রোগ্রামিংয়ের পদ্ধতিগুলি আজকাল, উদাহরণস্বরূপ, স্ট্রাকচার্ড ক্যোয়ারী ল্যাঙ্গুয়েজ, এসকিউএল, এটি একটি খুব শক্তিশালী, সহজ ক্যোয়ারী ভাষা things তবে আমরা এটিকে একটি প্রোগ্রামিং ল্যাঙ্গুয়েজে পরিণত করেছি এবং আমি সত্যই বিশ্বাস করি না যে এসকিউএল একটি আধুনিক প্রোগ্রামিং ভাষা হিসাবে তৈরি করা হয়েছিল, তবে আমরা এটি হয়ে ওঠার চেষ্টা করেছি। এবং এটি পুরো গোছা ইস্যুগুলির পরিচয় দেয়, 'কারণ যখন আমরা দুটি দৃষ্টিকোণ থেকে চিন্তা করি: কোডিং দৃষ্টিকোণ থেকে এবং ডিবিএ দৃষ্টিকোণ থেকে। কেবল দুর্বল প্রোগ্রামিং কৌশল, লেখার কোডে অলস প্রচেষ্টা, অভিজ্ঞতার অভাব, উদাহরণস্বরূপ এসকিউএল লোকেরা গুগলে ঝাঁপিয়ে পড়ে এবং কিছু সন্ধান করে এবং একটি ওয়েবসাইট খুঁজে বের করে এমন একটি ওয়েবসাইট খুঁজে বের করার মতো জিনিসগুলির জন্য খুব সহজেই আসা এবং প্রবর্তন করা খুব সহজ S একটি উদাহরণ পেয়েছে এবং বিদ্যমান কোডটির একটি অনুলিপি এবং পেস্ট করছে। এবং তারপরে একটি খারাপ কোডিং, অপব্যবহারের প্রতিরূপ তৈরি এবং এটি উত্পাদন করে দেওয়া, কারণ এটি কেবল তাদের পছন্দসই ফলাফল দেওয়ার জন্য ঘটে। আপনি অন্যান্য চ্যালেঞ্জ পেয়েছেন, উদাহরণস্বরূপ, আজকাল আমরা সকলেই এই দিকে ছুটে যাচ্ছি, যা আমরা রেসকে শূন্য বলে ডাকে: এত সস্তা এবং এত তাড়াতাড়ি করার চেষ্টা করছি, যেখানে আমাদের এমন পরিস্থিতি রয়েছে যেখানে আমরা কম কর্মসংস্থান করছি না not বেতনের কর্মীরা। এবং আমি এর অর্থ একটি ক্ষুদ্র উপায়ে বলতে চাই না, তবে আমরা প্রতিটি সম্ভাব্য কাজের জন্য বিশেষজ্ঞ নিয়োগ দিচ্ছি না। একসময় কম্পিউটারগুলির সাথে রোকস বিজ্ঞানের যা কিছু করার ছিল তা ছিল; এটি এমন বিষয়গুলির সাথে জড়িত ছিল যা দৌড়ঝাঁপ করেছিল এবং খুব জোরে ছিল, বা মহাশূন্যে গিয়েছিল বা ইঞ্জিনিয়াররা ছিল অত্যন্ত দক্ষ পুরুষ এবং মহিলা যারা ডিগ্রি নিয়েছিলেন এবং কঠোর শিক্ষাগুলি ছিল যা তাদের পাগল কাজ থেকে বিরত রাখে।

এই দিনগুলিতে, প্রচুর লোক বিকাশ ও নকশায় ও ডাটাবেসে প্রবেশ করছে যাঁর বহু বছরের অভিজ্ঞতা নেই, অগত্যা একই প্রশিক্ষণ বা সমর্থন পাননি। এবং তাই আপনি কেবল প্রথাগত অপেশাদার বনাম বিশেষজ্ঞের একটি দৃশ্যের সাথে শেষ করুন। এবং একটি বিখ্যাত লাইন আছে, আমি আসলে মনে করতে পারি না কে এই উক্তিটি তৈরি করেছে, লাইনটি বলে, "যদি আপনি মনে করেন যে কোনও কাজ করার জন্য একজন বিশেষজ্ঞকে নিয়োগ দেওয়া ব্যয়বহুল, আপনি সমস্যা তৈরির জন্য দু'জন অপেশাদার নিয়োগ না করা পর্যন্ত অপেক্ষা করুন এবং আপনি এটি পরিষ্কার করতে হবে ”" এবং তাই এসকিউএল-এর সমস্যাটি রয়েছে এবং এটি শিখতে খুব সহজ, এটি ব্যবহার করা খুব সহজ। তবে এটি আমার দৃষ্টিতে একটি নিখুঁত প্রোগ্রামিং ভাষা নয়। পিএইচপি এবং রুবি বা পাইথনের মতো আপনি যে আরও বেশি স্বাচ্ছন্দ্য বোধ করেন সেখান থেকে যে কোনও নির্বাচিত তারকা তৈরি করুন এবং সমস্ত কিছু প্রোগ্রামিং ভাষায় টানুন এবং এমন প্রোগ্রামিং ভাষাটি ব্যবহার করুন যা আপনি স্থানীয়ভাবে পরিচিত, এটি করা খুব সহজ কাজ to এসকিউএলে আরও জটিল কোয়েরি না করে ডেটা ম্যানিপুলেশন। এবং আমরা এটিকে অনেক কিছু দেখতে পাই এবং তারপরে লোকেরা আশ্চর্য হয় কেন ডাটাবেসটি ধীরগতিতে চলছে; এটি কারণ যে এক মিলিয়ন লোক একটি অনলাইন টিকিটিং সিস্টেমের জন্য টিকিট কেনার চেষ্টা করছেন, যেখানে এটি যে কোনও জায়গা থেকে নির্বাচিত তারকা তৈরি করে।

এখন, এটি একটি চূড়ান্ত উদাহরণ, তবে আপনি এই সমস্তটির বাইরে পয়েন্টটি পান। সুতরাং, ঠিক এই পয়েন্ট বাড়িতে ঘুষি, এখানে একটি উদাহরণ যে আমি অনেক প্রায় বহন করে। আমি গণিতের একটি বড় অনুরাগী, আমি বিশৃঙ্খলা তত্ত্ব পছন্দ করি, আমি ম্যান্ডেলব্রোট সেট পছন্দ করি। ডানদিকে ম্যান্ডেলব্রোট সেটটির একটি উপস্থাপনা রয়েছে, যা আমি নিশ্চিত যে আমরা সকলেই পরিচিত। এবং বাম দিকে এসকিউএল এর একটি টুকরা রয়েছে যা আসলে এটি রেন্ডার করে। এখন, যতবারই আমি এটি কোথাও কোনও স্ক্রিনে রেখেছি, আমি এই শুনছি "হে আমার godশ্বর, কেউ এসকিউএল দিয়ে ম্যান্ডেলব্রোট সিরিজটি উপস্থাপন করেছেন, আপনি কি গুরুতর? এটি উন্মাদ! ”আচ্ছা, এর পুরো বিষয়টি হ'ল আমি কেবল সেখানে কী কী রূপরেখা দিচ্ছিলাম তা চিত্রিত করা এবং এটি হ্যাঁ, বাস্তবে আপনি এখন এসকিউএল-এ প্রায় কোনও কিছু প্রোগ্রাম করতে পারবেন; এটি একটি অত্যন্ত উন্নত, শক্তিশালী, আধুনিক প্রোগ্রামিং ভাষা। মূলত যখন এটি একটি কোয়েরি ভাষা ছিল, এটি কেবল ডেটা আপ করার জন্য তৈরি করা হয়েছিল। সুতরাং, এখন আমরা খুব জটিল নির্মাণ পেয়েছি এবং আমাদের সঞ্চিত পদ্ধতি পেয়েছে, আমাদের কাছে প্রোগ্রামিং পদ্ধতিটি একটি ভাষার ক্ষেত্রে প্রয়োগ করা হয়েছে এবং সুতরাং এটি দুর্বল প্রোগ্রামিং অনুশীলন, অভিজ্ঞতার অভাব, কাট-পেস্ট কোড, স্বল্প বেতনের কর্মীরা উচ্চ বেতনের কর্মী হওয়ার চেষ্টা করছেন, লোকেরা জানেন যে তারা জানেন, তবে তাদের কাজটি শিখতে হবে।

কোডগুলি প্রোফাইলিং এবং আমরা কীটিকে ডিবাগিং হিসাবে উল্লেখ করি এমন সামগ্রিক পরিসীমা, যা প্রোগ্রামগুলি কাজ করা বন্ধ করে এমন বাগগুলি খুঁজে পাওয়া যায় না, তবে বাগগুলি যা কেবলমাত্র সিস্টেমকে ক্ষতিগ্রস্থ করছে এবং কাঠামোগত কাঠামোগত কোড। আপনি এখন এই স্ক্রিনটি তাকান, এবং আপনি মনে করেন যে এটি ঠিক, এটি একধরণের সুন্দর এবং আপনি মনে করেন, "বাহ, কি দুর্দান্ত গ্রাফিক, আমি এটি চালাতে চাই।" কিন্তু কল্পনা করুন যে ব্যবসায়ের যুক্তির কিছু অংশে চলছে imagine । এটি দেখতে বেশ ঝরঝরে, তবে এটি গাণিতিকভাবে গ্রাফিকভাবে উপস্থাপিত বিশৃঙ্খলা তত্ত্বের কথা বলে, তবে আপনি যখন এটি কোনও ব্যবসায়িক যুক্তি হিসাবে ব্যবহার করতে পারেন তখন কীভাবে তা ভাবছেন, আপনি খুব তাড়াতাড়ি ছবিটি পাবেন। এবং সত্যিই এটি চিত্রিত করার জন্য - এবং আমি দুঃখিত যে রঙগুলি বিপরীত হয়েছে, এটি একটি কালো পটভূমি এবং সবুজ পাঠ্য হিসাবে একটি সবুজ পর্দা হতে পারে, তবে আপনি এখনও এটি পড়তে পারেন।

আমি গিয়েছিলাম এবং আপনি যদি সত্যিই পাগল হয়ে থাকেন এবং কোনও অভিজ্ঞতা না পেয়ে এবং প্রোগ্রামিংয়ের ভিন্ন পটভূমি থেকে এসেছিলেন এবং এসকিউএল-তে সি +++ এর পছন্দগুলি প্রয়োগ করেছেন, সত্যিই আমার বক্তব্যটি বর্ণনা করার আগে আপনি কী করতে পারেন তার একটি উদাহরণ দিয়েছিলাম and আমি আইডিআরএ থেকে আমাদের শিক্ষিত অতিথির হাতে তুলে দিই। এটি একটি কাঠামোগত ক্যোয়ারী যা সি ++ এর মতো লেখা, তবে এটি এসকিউএল কোড করে od এবং এটি আসলে কার্যকর করে, তবে এটি প্রায় তিন থেকে পাঁচ মিনিটের সময়কালে কার্যকর করে। এবং এটি একাধিক ডাটাবেস, একাধিক যোগদানের বাইরে সম্ভবত তথ্য এক লাইন পিছনে টান।

আবার, এর পুরো বিষয়টিটি হ'ল যদি আপনার কাছে সঠিক সরঞ্জাম না থাকে তবে যদি আপনার কাছে এই জিনিসগুলি ধরতে সক্ষম করার মতো সঠিক প্ল্যাটফর্ম এবং পরিবেশ না থাকে এবং সেগুলি উত্পাদনে যায়, এবং তারপরে আপনার 100, 000 লোক থাকে প্রতিদিন, বা ঘন্টা বা মিনিটে কোনও সিস্টেমে আঘাত করা খুব শীঘ্রই আপনি একটি চেরনোবিলের অভিজ্ঞতার সাথে সমাপ্ত হন যেখানে বড় লোহাটি গলে গলে শুরু করে গ্রহটির মূল অংশে নিজেকে কবর দেওয়া শুরু করে, কারণ এই কোডটির টুকরোটি কখনও উত্পাদনে না আসে। আপনার সিস্টেম এবং আপনার সরঞ্জামগুলি, আমাকে ক্ষমা করে দিন, এটি পরীক্ষা প্রক্রিয়া এমনকি ইউএটি এবং সিস্টেমের সংহতকরণের মাধ্যমেও এটির কাছাকাছি কোথাও যাওয়ার আগে এটি বেছে নেওয়া উচিত, কোডের এই অংশটি তুলে নেওয়া উচিত এবং হাইলাইট করা উচিত এবং কাউকে আলাদা করে আনা উচিত এবং বলছেন, "দেখুন, এটি আসলেই বেশ সুন্দর কোড, তবে আসুন আপনি সেই কাঠামোগত ক্যোয়ারীটি সঠিকভাবে তৈরি করতে আপনাকে একটি ডিবিএ পান, কারণ সত্যি বলতে গেলে, এটি কেবল বাজে।" এবং ইউআরএল আছে, আপনি যেতে পারেন এবং দেখতে পারেন - এটি হিসাবে উল্লেখ করা হয়েছে আপনি লিখেছেন সবচেয়ে জটিল এসকিউএল কোয়েরি। 'আমাকে বিশ্বাস করুন, এটি আসলে সংকলন করে, এটি চলমান। এবং যদি আপনি এটি কেটে পেস্ট করেন এবং কেবল ডাটাবেসটিকে উপহাস করেন তবে এটি দেখার মতো কিছু; যদি আপনার কাছে ডাটাবেস দেখার সরঞ্জামগুলি পাওয়া যায় তবে কেবল তিনটি থেকে পাঁচ মিনিটের সময়কালে চেষ্টা করুন এবং গলে গেলেন, পাঠ্যর এক লাইনের কী তা আবার কল করুন।

সুতরাং, সংক্ষেপে এই কথাটি মনে রেখে, কোডিংয়ের ক্ষেত্রে আমার পুরো পটভূমিটি আমাকে শিখিয়েছে যে আপনি লোকদের একটি বন্দুক দিতে পারেন এবং যদি তারা যত্নবান না হন তবে তারা তাদের পায়ে গুলি করবে; কৌশলটি হ'ল সুরক্ষার ব্যবস্থাটি কোথায় তা তাদের দেখানো to আপনার নখদর্পণে সঠিক সরঞ্জাম এবং সঠিক সফ্টওয়্যার সহ, আপনি কোডিংটি সম্পন্ন করার পরে, আপনি আপনার কোডটি পর্যালোচনা করতে পারেন, কোড প্রফাইং করে আপনি সমস্যাগুলি খুঁজে পেতে পারেন, কার্যকরভাবে অনিচ্ছাকৃত বাগগুলি খুঁজে পেতে পারেন যা পারফরম্যান্সের সমস্যাগুলি এবং আমি যেমন বলেছি এর আগে একবারে আপনি সবুজ পর্দার দিকে তাকিয়ে এটি করতে পারেন। আপনি আর পারবেন না; কয়েক হাজার লাইনের কোড রয়েছে, কয়েক হাজার অ্যাপ্লিকেশন মোতায়েন রয়েছে, কয়েকটি উদাহরণে কয়েক মিলিয়ন ডেটাবেস রয়েছে এবং এমনকি সুপার ম্যানরা আসলে হাতে হাতে এটি করতে পারে না। আপনার আঙুলের উপরে সঠিকভাবে আপনার সঠিক সফ্টওয়্যার এবং সঠিক সরঞ্জামগুলির প্রয়োজন এবং আপনার সেই দলগুলি ব্যবহার করার জন্য একটি দল প্রয়োজন, যাতে আপনি এই বিষয়গুলি সন্ধান করতে পারেন এবং খুব সহজেই এগুলি সমাধান করতে পারেন, যেখানে আপনি বক্তব্যটি পৌঁছানোর আগে, যেখানে ড। রবিন ব্লুর হাইলাইট করেছেন, জিনিসগুলি বিপর্যয়কর হয়ে ওঠে এবং জিনিসগুলি উড়ে যায়, বা আরও সাধারণভাবে, তারা আপনাকে আপনার ডলার এবং অনেক সময় এবং প্রচেষ্টা ব্যয় করতে শুরু করে এবং মনোবল এবং জিনিসগুলি ধ্বংস করতে শুরু করে, যখন জিনিসগুলি কেন নেয় তা কার্যকর করতে পারে না when চালানোর জন্য একটি দীর্ঘ সময়।

এবং এই বিষয়টি মনে রেখে, আমি আমাদের অতিথির হাতে তুলে দেব এবং তারা কীভাবে এই সমস্যাটি সমাধান করেছে তা শোনার জন্য আমি উন্মুখ। এবং বিশেষত আমি মনে করি যে আমরা ডেমোটি গ্রহণ করব। এরিক, আমি আবার পেরিয়ে যাব।

এরিক কাভানাঘ: ঠিক আছে, বার্ট, এটি নিয়ে যান।

বার্ট স্কালজো: ঠিক আছে, আপনাকে ধন্যবাদ। আইডিআরএ থেকে বার্ট স্কালজো, আমি আমাদের ডাটাবেস সরঞ্জামগুলির জন্য পণ্য পরিচালক। এবং আমি ডিবাগিং সম্পর্কে কথা বলতে যাচ্ছি। আমি রবিন এর আগে বলেছি এমন একটি গুরুত্বপূর্ণ বিষয় বলে মনে করি - এবং এটি খুব সত্য যে ডিবাগিং অত্যধিক এবং অপ্রয়োজনীয়, এবং আপনি যখন ডেটাবেস ডিবাগিংয়ে যান তখন এটি আরও বেশি কঠোর এবং তুচ্ছ-তুচ্ছ একটি ক্রম - যাতে, একটি গুরুত্বপূর্ণ উদ্ধৃতি ছিল।

ঠিক আছে. আমি প্রোগ্রামিংয়ের ইতিহাস দিয়ে শুরু করতে চেয়েছিলাম, কারণ অনেক সময় আমি দেখি যে লোকেরা ডিবাগ করছে না, তারা কোনও ডিবাগার ব্যবহার করে না, তারা কেবল যে ভাষা ব্যবহার করছে তা নিয়ে প্রোগ্রাম করে, এবং অনেক সময় তারা আমাকে বলবে, "আচ্ছা, এই ডিবাগার জিনিসগুলি নতুন, এবং আমরা এখনও সেগুলি ব্যবহার শুরু করি না” "এবং তাই আমি যা করি তা আমি তাদের এই টাইমলাইন চার্টটি দেখাই, পূর্ব-ইতিহাসের সাজান, বৃদ্ধ বয়স, মধ্যযুগগুলি, এটা দয়ালু বলার অপেক্ষা রাখে না আমরা প্রোগ্রামিং ভাষার ক্ষেত্রে কোথায় ছিলাম। এবং আমাদের খুব পুরানো ভাষা ছিল ১৯৫১ সালে এসেম্বলি কোড এবং লিসপ এবং সত্য এবং কোবোল দিয়ে শুরু। তারপরে আমরা পরের গ্রুপ, পাস্কালস এবং সিএস এবং তারপরে পরবর্তী গ্রুপ, সি ++ এস, এবং সেই প্রশ্ন চিহ্নটি কোথায় তা দেখুন - সেই প্রশ্ন চিহ্নটি ১৯ 197৮ থেকে সম্ভবত ১৯৮০ সালের প্রায় সঠিক right আমাদের কাছে ডিবাগারগুলি উপলভ্য, এবং তাই বলে, "আরে, আমি কোনও ডিবাগার ব্যবহার করছি না, 'কারণ এটি সেই নতুন জিনিসগুলির মধ্যে একটি, " তবে আপনি অবশ্যই প্রোগ্রামিং শুরু করেছিলেন, আপনি জানেন ১৯ back০ এর দশকে, ' কারণ এটি কেবলমাত্র আপনি সেই দাবিটি থেকে দূরে সরে যাবেন

এখন এই চার্টটি সম্পর্কে মজার বিষয় অন্যটি হ'ল ডেজ কেবল গ্রেস হপার সম্পর্কে একটি মন্তব্য করেছিলেন, আমি আসলে গ্রেসকে জানতাম, সুতরাং এটি মজার একটি বিষয়। এবং তারপরে অন্য যে বিষয়টির জন্য আমি হেসেছিলাম সে হ'ল তিনি টেলি টাইপগুলি সম্পর্কে কথা বলছিলেন এবং আমি সেখানে বসে আছি, "ম্যান, আমরা আমাদের উত্পাদনশীলতায় সবচেয়ে বড় লাফিয়েছিলাম, যখন আমরা কার্ড থেকে টেলি-টাইপের দিকে যাচ্ছিলাম, এটি ছিল এখন পর্যন্ত সবচেয়ে বড় লাফ। ”সুতরাং, এবং আমি এসএনওবোল সহ এখানকার সমস্ত ভাষায় প্রোগ্রাম করেছি, যা এর আগে কেউ আগে কখনও শুনেনি, এটি সিডিসি, কন্ট্রোল ডেটা কর্পোরেশন, তাই আমি অনুমান করি যে আমি এই শিল্পের জন্য কিছুটা বেশি পুরানো হয়ে যাচ্ছি ।

ডেজ ব্লাঞ্চফিল্ড: আমি বলতে যাচ্ছিলাম, আপনি সেখানে আমাদের অনেক বয়স্ক করেছেন aged

বার্ট স্কালজো: হ্যাঁ, আমি আপনাকে বলছি, আমি দাদু সিম্পসনের মতো অনুভব করছি। সুতরাং আমি ডিবাগিংয়ের দিকে লক্ষ্য করি এবং ডিবাগিংয়ের বিভিন্ন উপায় রয়েছে। আমরা সকলেই debতিহ্যবাহী হিসাবে একটি ডিবাগারে প্রবেশ করা এবং কোডের মাধ্যমে পদক্ষেপ হিসাবে বিবেচনা করি সে সম্পর্কে আপনি কথা বলতে পারেন। তবে, লোকেরা তাদের কোডটি ব্যবহার করবে; আপনি নিজের কোডে স্টেটমেন্টগুলি আটকে রেখেছেন এবং সম্ভবত আপনি একটি আউটপুট ফাইল, একটি ট্রেস ফাইল বা কিছু উত্পাদন করতে পারেন এবং তাই আপনি নিজের কোডটি ইনস্ট্রুমেন্ট করেন। আমি এটি ডিবাগিং হিসাবে গণনা করব, এটি কিছুটা কঠিন, এটি করার একটি উপায়, তবে এটি গণনা করা হয়েছে। এছাড়াও, আমরা বিখ্যাত মুদ্রণ বিবৃতি পেয়েছি: আপনি দেখুন এবং লোকেরা প্রকৃতপক্ষে মুদ্রণ বিবরণী রেখেছিল এবং আমি আসলে একটি সরঞ্জাম দেখেছি যেখানে - এবং এটি একটি ডাটাবেস সরঞ্জাম - যেখানে আপনি যদি কোনও ডিবাগার ব্যবহার করতে না জানেন তবে, আপনি একটি বোতাম টিপুন এবং এটি আপনার জন্য সমস্ত কোডের মুদ্রণ বিবৃতিগুলিকে আটকে থাকবে এবং তারপরে আপনি যখন কাজ শেষ করেন তখন আপনি অন্য বোতামটি চাপুন এবং এটি সেগুলি সরিয়ে দেয়। কারণ এভাবেই অনেক লোক ডিবাগ করে।

এবং যে কারণে আমরা ডিবাগ করব তার দ্বিগুণ: প্রথমত, আমরা এমন জিনিসগুলি পেয়েছি যা আমাদের কোডটিকে অকার্যকর করে তোলে। অন্য কথায়, সাধারণত এর অর্থ একটি যুক্তিযুক্ত ভুল আছে বা আমরা একটি ব্যবসায়িক প্রয়োজনীয়তা মিস করেছি, তবে এটি কী, কোডটি কার্যকর নয়; এটি আমরা যা প্রত্যাশা করেছিল তা করে না। অন্য সময় আমরা যাই এবং আমরা ডিবাগিং করি, এটি দক্ষতার জন্য এবং এটি একটি যুক্তিযুক্ত ভুল হতে পারে, তবে এটি হ'ল আমি কি সঠিক কাজটি করেছি, এটি কেবল পর্যাপ্ত পরিমাণে ফিরে আসে না। এখন, আমি এই বিষয়টি করছি কারণ একজন প্রোফাইলার সম্ভবত সেই দ্বিতীয় দৃশ্যের জন্য আরও ভাল এবং আমরা উভয় ডিবাগার এবং প্রোফাইলারদের সম্পর্কে কথা বলতে যাচ্ছি। এছাড়াও, রিমোট ডিবাগিংয়ের এই ধারণাটি রয়েছে; এটি গুরুত্বপূর্ণ কারণ আপনি যদি নিজের ব্যক্তিগত কম্পিউটারে বসে থাকেন এবং আপনি যদি একটি ডিবাগার ব্যবহার করেন তবে এটি এমন একটি ডাটাবেসকে হিট করে যেখানে কোডটি ডাটাবেসে আসলেই কার্যকর করা হয়, আপনি আসলে রিমোট ডিবাগিং বলে যা করছেন। আপনি এটি বুঝতে পারবেন না, তবে এটি ঘটছে। এবং তারপরে, এই ডিবাগারগুলির সাথে ব্রেক পয়েন্ট, নজরদারি পয়েন্টস, ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ছড়িয়ে দেওয়া এই মুহূর্তে স্ক্রিনের স্ন্যাপশটগুলিতে দেখাতে চলেছি।

এখন, প্রোফাইলিং: আপনি বিভিন্ন উপায়ে কয়েকটিতে প্রোফাইলিং করতে পারেন। কিছু লোক বলবেন যে কাজের চাপ ক্যাপচার এবং রিপ্লে যেখানে এটি সমস্ত কিছু ক্যাপচার করে, এটি প্রোফাইল হিসাবে গণ্য। আমার অভিজ্ঞতা স্যাম্পলিং করা হলে এটি আরও ভাল। প্রতিটি একক বিবৃতি ধরার কারণ নেই, কারণ কিছু বিবৃতি কেবল এত তাড়াতাড়ি চলতে পারে যে আপনার যত্ন নেই, আপনি যা দেখার চেষ্টা করছেন তা হ'ল, যা এগুলি বার বার দেখাতে থাকে, কারণ তারা খুব দীর্ঘ চালায়। সুতরাং, কখনও কখনও প্রোফাইলিংয়ের অর্থ পুরো জিনিসটি চালানোর চেয়ে নমুনা তৈরির অর্থ হতে পারে। এবং সাধারণত, আপনি কোনও ধরণের আউটপুট পাবেন যা আপনি ব্যবহার করতে পারেন, এখন এটি আইডিই বিকাশের পরিবেশের অভ্যন্তরে দৃশ্যমান হতে পারে, যেখানে এটি আপনাকে কোডের বিভিন্ন লাইনের পারফরম্যান্সের একটি হিস্টোগ্রামের মতো দিতে পারে, তবে এটি এখনও থাকতে পারে এটি একটি ট্রেস ফাইল উত্পাদন করে।

প্রোফাইলাররা প্রথম 1979 সালে উপস্থিত হয়েছিল So সুতরাং, এগুলিও দীর্ঘকাল ধরে রয়েছে। সম্পদ খরচ, বা কর্মক্ষমতা সম্পর্কিত সমস্যাগুলি সন্ধানের জন্য দুর্দান্ত, অন্য কথায় efficiency দক্ষতার জিনিস। সাধারণভাবে বলতে গেলে, এটি ডিবাগার থেকে পৃথক এবং পৃথক, যদিও আমি একই সাথে উভয় কাজ করে এমন ডিবাগারদের সাথে কাজ করেছি। এবং প্রোফাইলারদের আমি মনে করি যে দুটি সরঞ্জামের মধ্যে আমি আরও আকর্ষণীয়, যদি আমি মনে করি যে পর্যাপ্ত লোকেরা ডিবাগ করেন না, তবে অবশ্যই যথেষ্ট লোকেরা প্রোফাইলই পাবেন না, কারণ দশটি ডিবাগারের মধ্যে একজন প্রোফাইল করবে, মনে হয়। এবং এটি লজ্জাজনক, কারণ প্রোফাইলিং সত্যই একটি বিশাল পার্থক্য করতে পারে। এখন, ডাটাবেস ভাষা, যেমন আমরা আগে আলোচনা করেছি, আপনি এসকিউএল পেয়েছেন - এবং আমরা এক ধরণের বৃত্তাকার গর্তে বৃত্তাকার প্যাগটি জোর করে এনে একটি প্রোগ্রামিং ভাষা - এবং ওরাকল হিসাবে বাধ্য হয়েছি। এটি পিএল / এসকিউএল - এটি প্রক্রিয়াগত ভাষা এসকিউএল - এবং এসকিউএল সার্ভার, এটি লেনদেন-এসকিউএল, এটি এসকিউএল -৯৯, এটি এসকিউএল / পিএসএম - কারণ আমি মনে করি, এটি প্রসেসর স্টোরড মডিউল। পোস্টগ্র্রেস এটির আরেকটি নাম দেয়, ডিবি 2 নামে আরও একটি নাম, ইনফর্মিক্স, তবে মূল বিষয় হ'ল প্রত্যেকেই 3 জিএল-ধরণের নির্মাণকে বাধ্য করেছে; অন্য কথায়, ভেরিয়েবলের ঘোষণায় এবং এসকিউএল-এর বিদেশী অন্য সমস্ত স্টাফগুলি লুপের জন্য এখন সেই ভাষাগুলিতে এসকিউএল এর অংশ। এবং সুতরাং, আপনার যেমন একটি ভিজুয়াল বেসিক প্রোগ্রাম হবে ঠিক তেমনই আপনাকে একটি PL / SQL বা একটি লেনদেন-এসকিউএল ডিবাগ করতে সক্ষম হতে হবে।

এখন, ডাটাবেস অবজেক্টস, এটি গুরুত্বপূর্ণ কারণ লোকেরা বলবে, "আচ্ছা, একটি ডাটাবেসে আমাকে কি জিনিসগুলি ডিবাগ করতে হবে?" এবং উত্তরটি হ'ল, আপনি কোড হিসাবে ডাটাবেসে যা কিছু সংরক্ষণ করতে পারেন - যদি আমি করছি টি-এসকিউএল, বা পিএল / এসকিউএল - এবং আমি ডাটাবেসে বস্তুগুলি সংরক্ষণ করছি এটি সম্ভবত কোনও সঞ্চিত পদ্ধতি বা সঞ্চিত ফাংশন। তবে এছাড়াও ট্রিগারগুলি রয়েছে: একটি ট্রিগার হ'ল সঞ্চিত পদ্ধতির মতো, তবে এটি কোনও একরকম ইভেন্টে আগুন দেয়। এখন, তাদের ট্রিগারগুলিতে কিছু লোক কোডের একটি লাইন রাখবেন এবং একটি সঞ্চিত প্রক্রিয়া কল করবেন যাতে তারা তাদের সমস্ত সঞ্চিত কোড এবং পদ্ধতি রাখে তবে এটি একই ধারণা: এটি এখনও ট্রিগার হতে পারে যা পুরো জিনিসটির সূচনা করে। এবং তারাকল হিসাবে, তাদের কাছে প্যাকেজ নামে কিছু রয়েছে যা আপনি চাইলে লাইব্রেরির মতো সাজান। আপনি 50 বা 100 সঞ্চিত প্রক্রিয়াগুলিকে একটি গোষ্ঠীকরণে রেখেছিলেন, একে প্যাকেজ বলা হয়, সুতরাং এটি লাইব্রেরির মতো। সুতরাং, এখানে ডিবাগারটি পুরানো উপায়; এটি আসলে এমন একটি সরঞ্জাম যা আপনার কোডে এই সমস্ত ডিবাগ স্টেটমেন্টগুলিকে প্রকৃতপক্ষে প্রবেশ করবে। সুতরাং, আপনি যেখানেই ডিবাগ ব্লক দেখতে পাচ্ছেন, অপসারণ করবেন না, স্বয়ংক্রিয় ডিবাগারটি শুরু এবং ট্রেস করুন, সেগুলি কোনও কোনও সরঞ্জাম দ্বারা আটকে গিয়েছিল। এবং এর বাইরে লাইনগুলি, যা কোডের সংখ্যালঘু, ভাল, এটি নন-ম্যানুয়াল ডিবাগিং পদ্ধতি।

এবং আমি এটিকে সামনে আনার কারণ হ'ল, যদি আপনি এটি হাত দ্বারা করার চেষ্টা করছেন তবে আপনি কোডের সাথে এই সমস্ত প্রিন্ট স্টেটমেন্টগুলিতে রাখার জন্য আপনি আরও বেশি ডিবাগিং কোড লিখতে চলেছেন। সুতরাং, এটি কাজ করতে পারে এবং এটি কোনও কিছুর চেয়ে ভাল, যদিও এটি ডিবাগ করা খুব কঠিন উপায়, বিশেষত যেহেতু, এই জিনিসটি চালাতে 10 ঘন্টা সময় লেগেছিল, এবং যেখানে সমস্যা আছে সেখানে লাইন তিনটি আছে? আমি যদি ইন্টারেক্টিভ ডিবাগিং সেশনটি করছিলাম, আমি তিন লাইনে এটি জানতে পারতাম - এর মধ্যে পাঁচ মিনিট - আরে, এখানে সমস্যা আছে, আমি ছাড়তে পারি। তবে এটির সাথে সাথে, আমি এটি চালুর জন্য অপেক্ষা করতে হয়েছিল, সম্পূর্ণ হওয়ার সমস্ত উপায় এবং তারপরে আমি কিছু ট্রেস ফাইলটি দেখতে পেয়েছি যা সম্ভবত এটিতে এই সমস্ত মুদ্রণ বিবরণী রয়েছে, এবং চেষ্টা করে সুইটির মধ্যে খুঁজে পেতে চেষ্টা করেছি খড়ের গাদা। আবার, এটি কোনও কিছুর চেয়ে ভাল তবে এটি কাজ করার সর্বোত্তম উপায় হবে না। এখন, ফাইলটি আগের মতো স্লাইড থেকে এমনটি দেখাবে; অন্য কথায়, আমি প্রোগ্রামটি চালিয়েছি, এবং এটি কেবল এই ট্রেস ফাইলে মুদ্রণ বিবৃতিগুলির একটি গুচ্ছ পেয়েছে এবং আমি এটির মাধ্যমে সাইফন করতে সক্ষম হতে পারি এবং এটি আমার কী সন্ধান করতে হবে তা সন্ধান করতে পারি। সুতরাং, আবারও, আমি এতটা নিশ্চিত নই যে আপনি এইভাবে কাজ করতে চাইবেন।

এখন, ইন্টারেক্টিভ ডিবাগার - এবং যদি আপনি প্রোগ্রাম লিখতে ভিজ্যুয়াল স্টুডিও বা কিছুটা ব্যবহার করেছেন, বা আপনার গ্রাহক, আপনার ডিবাগার রয়েছে এবং আপনি সেগুলি আপনার অন্যান্য ভাষার সাথে ব্যবহার করেছেন - কেবল এটি আপনার ডেটাবেস দিয়ে এখানে ব্যবহার করার কথা ভাবেন নি। এবং সেখানে ডিবি আর্টিজান এবং আমাদের র‌্যাপিড এসকিউএল এর মতো সরঞ্জাম রয়েছে, এটি এখানে র‌্যাপিড এসকিউএল, যার একটি ডিবাগার রয়েছে, এবং আপনি বাম দিকে দেখতে পাচ্ছেন, আমার কাছে একটি সঞ্চিত পদ্ধতি রয়েছে যা "নকলের জন্য পরীক্ষা করুন" বলে। মূলত, এটি কেবল গিয়ে দেখতে হবে এবং একই মুভি শিরোনাম সহ আমার টেবিলে একাধিক সারি রয়েছে কিনা তা দেখুন। সুতরাং, ডাটাবেস চলচ্চিত্রের জন্য হয়। এবং আপনি ডানদিকে দেখতে পেলেন, শীর্ষের তৃতীয় দিকে, আমি আমার উত্স কোডটি মাঝখানে পেয়েছি, যা আমার ঘড়ির ভেরিয়েবল এবং আমার কল স্ট্যাক ট্রে হিসাবে পরিচিত, এবং তারপরে আমি নীচে পেয়েছি ' কিছু আউটপুট বার্তা পেয়েছে। এবং এখানে যা গুরুত্বপূর্ণ তা হল, যদি আপনি সেই প্রথম লাল তীরটি সন্ধান করেন, যদি আমি কোনও ভেরিয়েবলের উপরে মাউস রাখি, তবে আমি আসলে দেখতে পাচ্ছি যে সেই মুহুর্তে সেই পরিবর্তনশীলটির মান কী, কারণ আমি কোডের মাধ্যমে পদক্ষেপ নিচ্ছি। এবং এটি সত্যিই দরকারী, এবং তারপরে আমি কোডের মাধ্যমে একবারে একটি লাইন পদক্ষেপ নিতে পারি, আমাকে এক্সিকিউট বলতে হবে না, আমি এক লাইন ধাপে বলতে পারি, কী ঘটেছিল তা আমাকে দেখতে দিন, অন্য লাইনটি ধাপ দিন, আমাকে দেখতে দিন কী ঘটেছিল, এবং আমি এটি ডাটাবেসে করছি। এবং যদিও আমি আমার পিসিতে র‌্যাপিড এসকিউএলে বসে আছি এবং আমার ডাটাবেস ক্লাউডে রয়েছে, আমি এখনও সেই দূরবর্তী ডিবাগিং করতে এবং এটি দেখতে এবং এটি এখান থেকে নিয়ন্ত্রণ করতে পারি এবং আমি অন্য কোনও ভাষার সাথে ঠিক যেমন ডিবাগিং করতে পারি।

এখন, পরের তীরটি - আপনি দেখতে পাচ্ছেন সামান্য তীর মতো ডান দিকে ইশারা করছে, সেই ডিবিএমএস আউটপুটটির দিকে, যেখানে আমার কার্সারটি এই মুহুর্তে রয়েছে - সুতরাং অন্য কথায়, আমি পদক্ষেপ নিয়েছি এবং সেখানেই আমি আছি মুহূর্ত. সুতরাং, যদি আমি বলি, "আবার পদক্ষেপ", আমি সেই পরের লাইনে যাব। এখন তার ঠিক নীচে আপনি লাল বিন্দু দেখতে পাবেন। ঠিক আছে, এটি একটি ব্রেকপয়েন্ট, যা বলে যে "আরে, আমি এই রেখাগুলির উপর দিয়ে যেতে চাই না।" যদি আমি কেবল সমস্ত কিছুর উপরে ঝাঁপিয়ে পড়ে সেই লাল বিন্দু যেখানে পৌঁছতে চাই, আমি রান বোতামটি টিপতে পারি এবং এটি চলবে এখান থেকে হয় শেষ পর্যন্ত বা ব্রেকপয়েন্টে যদি কোনও ব্রেকপয়েন্ট সেট থাকে তবে তা বন্ধ হয়ে যায় এবং আমাকে আবার পদক্ষেপ করতে দেয়। এবং এটি সমস্ত গুরুত্বপূর্ণ এবং শক্তিশালী হওয়ার কারণ হ'ল কারণ যখন আমি এই সমস্তগুলি করছি তখন মাঝখানে এবং নীচের দিকে যা ঘটছে - তবে সবচেয়ে গুরুত্বপূর্ণটি হল মাঝখানে - পরিবর্তন হবে এবং আমি আমার ভেরিয়েবলগুলি থেকে মানগুলি দেখতে পাচ্ছি, আমি আমার কল স্ট্যাকের ট্রেস দেখতে পাচ্ছি, আপনি জানেন এবং তাই কোডের মধ্য দিয়ে পা রাখার সাথে সাথে সেই সমস্ত তথ্য সেখানে প্রদর্শিত হবে, তাই আমি আসলে কী দেখতে পাচ্ছি এবং কোডটি আসলে কীভাবে চলছে সে সম্পর্কে আমি বুঝতে পারি এবং অনুভব করতে পারি এবং বুঝতে পারি মৃত্যুদন্ড কার্যকর সময়। এবং সাধারণত আমি একটি সমস্যা খুঁজে পেতে পারি, যদি সেখানে একটি থাকে, বা আমি এটির জন্য যথেষ্ট ভাল।

ঠিক আছে, এখন আমি একজন প্রোফাইলার সম্পর্কে কথা বলতে যাচ্ছি, এবং এই ক্ষেত্রে, এটি এমন একটি প্রোফাইলার যা আমি একটি ডিবাগারের মাধ্যমে দেখতে পারি। মনে আছে আমি বলেছি কখনও কখনও তারা আলাদা হয় এবং কখনও কখনও তারা একসাথে থাকতে পারে? এই ক্ষেত্রে এবং আবারও, আমি র‌্যাপিড এসকিউএল-এ আছি এবং আমি দেখতে পাচ্ছি লাইন সংখ্যাগুলির পাশের বাম দিকে, একটি প্রান্ত আছে। এবং এটি হ'ল, এটি প্রতিটি কোডের প্রতিটি লাইন কার্যকর করতে সেকেন্ড বা মাইক্রোসেকেন্ডগুলির সংখ্যা ছিল এবং আমি দেখতে পাচ্ছি যে আমার সমস্ত সময় লুপের জন্য এই একটায় ব্যয় হয় যেখানে আমি একটি টেবিল থেকে সমস্ত কিছু নির্বাচন করছি ing । এবং তাই, এর জন্য লুপটির ভিতরে যা ঘটছে তা সম্ভবত আমার দিকে নজর দেওয়া দরকার এবং যদি আমি এটি আরও ভাল করতে পারি তবে এটি লভ্যাংশ প্রদান করবে। ০.৯৯ বা ০.86৮ এর মতো লাইনে কাজ করে আমি কোনও উন্নতি করতে যাচ্ছি না; সেখানে খুব বেশি সময় ব্যয় হয়নি। এখন, এই ক্ষেত্রে এবং আবারও, আমি র‌্যাপিড এসকিউএল-এ আছি, আপনি দেখছেন যে আমি কীভাবে আমার ডিবাগিংয়ের সাথে অন্তর্নির্মিত প্রোফাইলিং করতে পারি। এখন, র‌্যাপিড এসকিউএলটি যা দুর্দান্ত তা আপনাকে অন্যভাবে এটি করার অনুমতি দেয়। র‌্যাপিড এসকিউএল আপনাকে বলতে দেয়, "আপনি কি জানেন? আমি ডিবাগারে থাকতে চাই না, আমি কেবল এটি চালাতে চাই এবং তারপরে আমি গ্রাফিক বা দর্শনীয়ভাবে একই ধরণের তথ্যটি দেখতে চাই। "

এবং আপনি দেখতে পাচ্ছেন যে আমি আর ডিবাগারে নেই এবং এটি প্রোগ্রামটি চালায় এবং মৃত্যুদন্ড কার্যকর হওয়ার পরে এটি আমাকে চার্ট দেয় যাতে আমাকে জিনিসগুলি বলে দেয় যাতে আমি দেখতে পারি যে আমার একটি বিবৃতি পাওয়া গেছে যা দেখে মনে হচ্ছে এটি গ্রহণ করছে পাই চার্টের বেশিরভাগ অংশ এবং যদি আমি তাকাই তবে নীচের দিকে, গ্রিডে 23 পংক্তির দিকে দেখতে পেলাম, আবার ফর লুপটি রয়েছে: তিনি বেশিরভাগ সময় নিচ্ছেন, তিনি আসলে পাই পাই যে সমস্ত পাই চার্টটি গা dark় লাল চিবানো। এবং সুতরাং, এটি প্রোফাইলিংয়ের জন্য আরেকটি উপায়। আমরা আমাদের সরঞ্জামটিতে সেই "কোড অ্যানালিস্ট" বলি। তবে এটি মূলত একটি প্রোফাইলারই একটি ডিবাগার থেকে পৃথক। কিছু লোক এটি প্রথম উপায়ে করতে পছন্দ করে, কিছু লোক এটি দ্বিতীয় উপায়ে করতে পছন্দ করে।

আমরা কেন ডিবাগিং এবং প্রোফাইলিং করি? এটি এমনটি নয় যে আমরা বিশ্বের বৃহত্তম কোডটি লিখতে চাই এবং বেতন বাড়িয়ে তুলি - এটি আমাদের কারণ হতে পারে তবে আপনি এটি করার কারণটি সত্য নয় - আপনি ব্যবসায়ের প্রতিশ্রুতি দিয়েছিলেন যে আপনি সঠিকভাবে কিছু করবেন, আপনার প্রোগ্রাম কার্যকর হবে। আপনি এটির জন্য ডিবাগারটি ব্যবহার করবেন। এছাড়াও, ব্যবসায় শেষ ব্যবহারকারীগণ; তারা খুব ধৈর্যশীল নয়: চাবিটি চাপ দেওয়ার আগেই তারা ফলাফল চায়। আমাদের তাদের মন পড়ার এবং তাত্ক্ষণিকভাবে সমস্ত কিছু করার কথা। অন্য কথায়, এটি দক্ষ হতে হবে। এবং তাই, আমরা এর জন্য প্রোফাইলারটি ব্যবহার করব। এখন, এই সরঞ্জামগুলি ব্যতীত, আমি সত্যই বিশ্বাস করি যে আপনি ধনুক এবং তীরের সাথে ব্যবসায়ের মামলাতে এই লোক এবং আপনি লক্ষ্যবস্তুতে গুলি চালাচ্ছেন এবং আপনি চোখের পাতায় পড়ে আছেন। কারণ আপনি কীভাবে সন্ধান করতে যাচ্ছেন যে কোনও প্রোগ্রাম কেবল স্থির কোডটি দেখেই কার্যকর করে এবং আপনি কীভাবে কোন লাইনটি নির্ধারণ করতে যাচ্ছেন যেখানে এটি বাস্তবায়নে সর্বাধিক সময় ব্যয় করবে, আবার, কেবল স্থির কোডটি দেখে? একটি কোড পর্যালোচনা এই বিষয়গুলির মধ্যে কিছু তৈরি করতে পারে বা নাও পারে, তবে কোনও কোড পর্যালোচনা সেগুলি সব খুঁজে পাওয়ার কোনও গ্যারান্টি নেই। একটি ডিবাগার এবং প্রোফাইলার ব্যবহার করে আপনি সেই সমস্ত বাগ খুঁজে পেতে সক্ষম হবেন।

ঠিক আছে, আমি এখানে একটি বাস্তব দ্রুত ডেমো করতে যাচ্ছি। এটি পণ্যকে ধাক্কা দেওয়ার আমার উদ্দেশ্য নয়, আমি কেবল আপনাকে একজন ডিবাগার দেখতে দেখতে দেখতে চাই 'কারণ অনেক সময় লোকেরা বলবে, "আমি এর আগে কখনও দেখিনি।" এবং এটি স্ক্রিন স্ন্যাপ স্লাইডগুলিতে বেশ সুন্দর দেখাচ্ছে, কিন্তু এটি চলমান অবস্থায় দেখতে কেমন লাগে? সুতরাং, এখানে আমার পর্দায় আমি আমাদের ডিবি আর্টিজান পণ্য চালাচ্ছি; আমাদের সেখানে একটি ডিবাগারও রয়েছে। ডিবি আর্টিজানকে ডিবিএর জন্য বেশি বোঝানো হয়, র‌্যাপিড এসকিউএল বিকাশকারীদের পক্ষে বেশি, তবে আমি ডেভেলপারদের দেখেছি যারা ডিবি আর্টিসান ব্যবহার করেন এবং আমি ডিবিএ দেখেছি যারা র্যাপিড ব্যবহার করে। সুতরাং, পণ্যটি ধরবেন না। এবং এখানে, আমার একটি ডিবাগ করার পছন্দ রয়েছে, তবে আমি ডিবাগটি চালু করার আগে, আমি এই কোডটি বের করতে যাচ্ছি যাতে আপনি এটি চালানো শুরু করার আগে কোডটি দেখতে কেমন তা দেখতে পারেন। সুতরাং, এখানে ঠিক একই কোডটি যা স্ক্রিনের স্ন্যাপশটে ছিল, এটি হ'ল সদৃশগুলির জন্য আমার চেক। এবং আমি এটি ডিবাগ করতে চাই, তাই আমি ডিবাগ টিপবো। এবং এখন, এটি একটি মুহুর্ত নেয় এবং আপনি বলে থাকেন, "আচ্ছা, এটি একটি মুহূর্ত কেন নিচ্ছে?" রিমোট ডিবাগিং মনে রাখবেন: ডিবাগিংটি আসলে আমার পিসিতে নয়, আমার ডাটাবেস সার্ভারে ঘটছে। সুতরাং, এটি পেরিয়ে সেখানে একটি সেশন তৈরি করতে হবে, একটি রিমোট ডিবাগিং জিনিস তৈরি করতে হবে, আমার সেশনটিকে সেই দূরবর্তী ডিবাগিং সেশনে আটকানো এবং একটি যোগাযোগ চ্যানেল স্থাপন করতে হয়েছিল।

সুতরাং, এখন, আমার তীর এখানে, এটি শীর্ষে আছে, এক লাইন দিয়ে, এখানে আমি কোডটিতে আছি। এবং আমি যদি সেখানে তৃতীয় আইকন টিপছি, যা এটির এক ধাপ, আপনি দেখতে পাবেন যে তীরটি সবেমাত্র সরে গেছে, এবং যদি আমি এটি টিপতে থাকি তবে আপনি দেখতে পাচ্ছেন যে এটি চলমান থাকবে। এখন, আমি যদি এই ফর লুপটিতে যেতে চাই, কারণ আমি জানি সমস্যাটি সেখানে, আমি একটি ব্রেকপয়েন্ট নির্ধারণ করতে পারি। আমি ভেবেছিলাম আমি সেট করেছিলাম। ওহ গুলি, আমি আমার স্ক্রিন ক্যাপচার কীগুলি ডিবাগরের মতো একই কীতে ম্যাপ করেছিলাম, যা বিভ্রান্তির কারণ। ঠিক আছে, সুতরাং আমি ম্যানুয়ালি সেখানে একটি ব্রেকপয়েন্ট স্থাপন করেছি, সুতরাং এখন সেখানে পৌঁছা না হওয়া পর্যন্ত একটি পদক্ষেপ, পদক্ষেপ, পদক্ষেপ, পদক্ষেপ না করে বরং আমি কেবল বলতে পারি, "এগিয়ে যান এবং এই জিনিসটি চালান, " এবং এটি বন্ধ হয়ে যাবে। লক্ষ্য করুন যে এটি আমাকে ব্রেক পয়েন্টের সমস্ত দিকে নামিয়েছে, তাই আমি এখন এই লুপটি চালানোর প্রসঙ্গে চলেছি, আমি দেখতে পাচ্ছি যে আমার সমস্ত ভেরিয়েবলগুলি কীভাবে সেট করা হয়েছে, যা অবাক হওয়ার কিছু নেই, 'কারণ আমি সেগুলি আরম্ভ করেছিলাম শূন্য। এবং এখন, আমি এই লুপটি stepুকতে পারি এবং এই লুপটির ভিতরে কী চলছে তা দেখতে শুরু করতে পারি।

সুতরাং, এখন এটি আমার ভাড়া থেকে একটি নির্বাচন করা গণনা করতে চলেছে এবং আমি সেই লোকটির উপর দিয়ে মাউস তুলতে পারি এবং দেখি যে সে দু'জন, একজনের চেয়ে দুটি বড়, সুতরাং সম্ভবত এই কোডটির পরবর্তী অংশটি করা যাচ্ছে। অন্য কথায়, এটি কিছু খুঁজে পেয়েছে। আমি কেবল এগিয়ে যাব এবং চালানো যাক। আমি এখানে সব কিছু দিয়ে যেতে চাই না; একটি ডিবাগারটি সম্পন্ন করার পরে আমি আপনাকে যা দেখাতে চাই তা হ'ল এটি একটি সাধারণ প্রোগ্রামের মতো শেষ হয়। আমি ব্রেকপয়েন্ট সেট পেয়েছি, সুতরাং যখন আমি রান বললাম, এটি ঠিক পরবর্তী ব্রেকপয়েন্টে ফিরে গেল। আমি এটিকে শেষ পর্যন্ত চালিয়ে দিচ্ছি, 'আমি আপনাকে যা দেখতে চাই তা হ'ল কোনও ডিবাগার প্রোগ্রামের আচরণ পরিবর্তন করে না: এটি চালানোর পরে, আমি যদি এটি চালানো না হত তবে আমার ঠিক একই ফলাফল পাওয়া উচিত should একটি ডিবাগার ভিতরে।

এবং তার সাথে, আমি ডেমো স্থগিত করতে এবং ফিরে যাব কারণ আমরা প্রশ্ন ও উত্তরের জন্য আমাদের কাছে সময় নিশ্চিত করতে চাই। এবং তাই, আমি এটি প্রশ্ন এবং উত্তরগুলির জন্য খুলব।

এরিক কাভানাঘ: ঠিক আছে, রবিন, সম্ভবত আপনার কাছ থেকে একটি প্রশ্ন এবং তারপরে ডেজের কোনও দম্পতি?

রবিন ব্লুর: হ্যাঁ, অবশ্যই, আমি অবশ্যই এটি আকর্ষণীয় মনে করি। আমি এই জাতীয় স্টাফ সঙ্গে কাজ করেছি, কিন্তু আমি ডেটাবেসে কখনও এই জাতীয় কিছু সঙ্গে কাজ করেন নি। লোকেরা কীসের জন্য প্রোফাইলার ব্যবহার করে সে সম্পর্কে আপনি আমাকে কিছু ধারণা দিতে পারেন? কারণ এটির মতো, তারা কি তাকিয়ে আছে - 'কারণ তারা ধারণা করছে যে তারা হ'ল - তারা পারফরম্যান্সের সমস্যাগুলি খুঁজছেন, এটি কি আপনাকে কোনও ডাটাবেস সময় নেয় এবং কোনও কোড সময় নেয় যখন তার মধ্যে পার্থক্য করতে সহায়তা করে?

বার্ট স্কালজো: আপনি জানেন, এটি একটি দুর্দান্ত প্রশ্ন। ধরা যাক আমি ভিজ্যুয়াল বেসিকটিতে কাজ করছি, এবং আমি আমার ভিজ্যুয়াল বেসিকের অভ্যন্তরে আমি একটি লেনদেন-এসকিউএল বা একটি পিএল / এসকিউএল কল করতে যাচ্ছি। আমাকে পিএল / এসকিউএল করতে দিন, যেহেতু ওরাকল মাইক্রোসফ্ট সরঞ্জামগুলির সাথে সর্বদা ভাল খেলেন না। আমি আমার ভিজ্যুয়াল বেসিক কোডটি প্রোফাইলিং করছি এবং সেখানে প্রোফাইল বলতে পারে যে, "আরে, আমি এই সঞ্চিত পদ্ধতিটি কল করেছি এবং এটি অনেক দীর্ঘ সময় নিয়েছে took" তবে তারপরে আমি সঞ্চিত পদ্ধতিতে যেতে পারি এবং আমি সঞ্চিত্রে একটি ডাটাবেস প্রোফাইল করতে পারি পদ্ধতি এবং বলুন, "ঠিক আছে, এখানে থাকা 100 টি বিবৃতিগুলির মধ্যে, এখানে পাঁচটিই সমস্যা তৈরি করছে।" এবং সুতরাং, আপনাকে একটি ট্যাগ দল করতে হতে পারে, যেখানে আপনাকে একাধিক প্রোফাইল ব্যবহার করতে হবে।

ধারণাটি হ'ল যদি আপনি দেখান পারফরম্যান্সের সমস্যাটি আপনার ডাটাবেসে রয়েছে, একটি ডাটাবেস প্রোফাইল আপনাকে খড়ের খাঁজে সূঁচ খুঁজে পেতে সহায়তা করতে পারে যেখানে বিবৃতি আসলে আপনার যেখানে সমস্যা রয়েছে। আমি আপনাকে আর একটি জিনিস বলছি যা প্রোফাইলিংয়ের সাথে দেখা দিয়েছে: যদি আপনার কাছে এমন এক কোডের টুকরো থাকে যা মিলিয়ন বার বলা হয়ে থাকে তবে এটি মিলিয়ন বারের মধ্যে কেবল একটি মাইক্রোসেকেন্ড নেয়, তবে এটি মিলিয়ন বার বলা হয়, প্রোফাইলারটি কী দেখায়, সেই জিনিসটি এই সময়ের অনেকগুলি ইউনিটের জন্য ছড়িয়ে পড়ে। এবং তাই কোডটি অত্যন্ত দক্ষ হতে পারে, আপনি দেখতে এবং বলতে পারেন, "ওহ, আমরা কোডের এই টুকরোটিতে প্রায়শই এই কলটি করছি। সম্ভবত আমাদের কেবল একবারে কল করা উচিত, প্রতিবার যখন আমরা রেকর্ড প্রক্রিয়া করি না, "বা কিছু। এবং তাই আপনি খুঁজে পেতে পারেন এমন কার্যকর কোড রয়েছে যেখানে কেবলমাত্র প্রায়শই বলা হয় এবং এটি আসলে একটি পারফরম্যান্স সমস্যা।

রবিন ব্লুর: হ্যাঁ, এটি দুর্দান্ত। আমি এই কাজটি করিনি। আপনি অবশ্যই দেখুন, আমার যখন ডাটাবেসের সমস্যা ছিল তখন মনে হচ্ছিল আমি একভাবে বা অন্য কোনও উপায়ে ডাটাবেস নিয়ে কাজ করছি বা কোড নিয়ে কাজ করছি; আমি কখনই দুজনের সাথে একইসাথে ডিল করতে পারি নি। তবে সেখানে আবার আমি করিনি - আমি সত্যই কখনই অ্যাপ্লিকেশনগুলি তৈরির সাথে জড়িত ছিলাম না যেখানে আমরা প্রক্রিয়াগুলি সঞ্চয় করেছিলাম, তাই আমি অনুমান করি যে আমি কখনই আমাকে এমন সমস্যাগুলির মধ্যে ফেলতে পারি নি যা আমাকে বন্য করার কারণ হতে পারে, এই ধারণাটি আপনি কোডটি একটি ডাটাবেস এবং একটি প্রোগ্রামের মধ্যে বিভক্ত করুন। তবে তাই করুন, আমি উত্তরটি হ্যাঁ হতে চলেছি বলে মনে করছি, তবে এটি একটি উন্নয়ন দলের ক্রিয়াকলাপের অংশ, যখন আপনি কোনও উপায়ে বা অন্য কোনও জিনিস যা ভাঙা কিছু ঠিক করার চেষ্টা করছেন, বা সম্ভবত একটি নতুন আনার চেষ্টা করছেন একসাথে আবেদন। তবে পরিবেশে আমি যে অন্যান্য উপাদানগুলি আশা করব সেগুলি দিয়ে কি এই সমস্ত দরজী হয়? আমি কী আশা করতে পারি যে আমি আমার টেস্ট প্যাকগুলি এবং আমি যে প্রকল্পগুলি পরিচালনা করব তা দিয়ে এবং এই প্রকল্পের ব্যবস্থাপনার স্টাফগুলির সাথে সমস্ত কিছুর সাথে একসাথে ক্লিপ করতে পারি, এই সমস্ত ক্লিপগুলি কীভাবে একসাথে হয়?

বার্ট স্কালজো: হ্যাঁ, এটি আপনার প্রোগ্রামিং বা বিকাশের প্রচেষ্টা করতে কোনও কাঠামোগত প্রক্রিয়ার অংশ হতে পারে। এবং এটি মজার বিষয়, গত সপ্তাহে আমার কাছে একজন গ্রাহক ছিলেন যিনি একটি ওয়েব অ্যাপ্লিকেশন তৈরি করেছিলেন এবং তাদের ডাটাবেসটি ছোট ছিল, icallyতিহাসিকভাবে এবং তাই যে তারা খুব ভাল প্রোগ্রামার ছিলেন না তা তাদের কখনও ক্ষতি করেনি। ঠিক আছে, তাদের ডাটাবেসটি বছরের পর বছর ধরে বেড়েছে, এবং এখন ওয়েব পৃষ্ঠায় 20 সেকেন্ড সময় লাগে, আপনি যখন বলেন, "আমাকে লগইন করুন এবং আমাকে দেখার জন্য কিছু উপাত্ত দিন" এবং স্ক্রিনটি আসলে সামনে আসে এবং তাই এখন একটি কর্মক্ষমতা সমস্যা। এবং তারা জানত যে সমস্যাটি তাদের জাভা বা অন্য কোনও জায়গায় ছিল না। তবে তাদের হাজার হাজার সঞ্চিত প্রক্রিয়া রয়েছে এবং তাই এই ওয়েব পৃষ্ঠাটি কেন আসতে 20 সেকেন্ড সময় নিচ্ছে তা খুঁজে পেতে তাদের সঞ্চিত পদ্ধতিগুলি প্রোফাইলিং শুরু করতে হয়েছিল? এবং আমরা প্রকৃতপক্ষে খুঁজে পেয়েছি যে তাদের একটি নির্বাচিত বিবৃতিতে কার্টেসিয়ান যোগদান করেছে এবং এটি এটি জানেন না।

রবিন ব্লুর: বাহ

বার্ট স্কালজো: তবে কেউ আমাকে একবার বলেছিল, "আচ্ছা তারা কীভাবে কোনও কার্তেসিয়ান যোগ দিতে পারে এবং এটি জানত না?" এবং এটি সত্যিই ভয়াবহ মনে হবে; কখনও কখনও এমন প্রোগ্রামার যিনি এসকিউএল নিয়ে খুব স্বাচ্ছন্দ্য বোধ করেন না তিনি আমাকে কার্তেসিয়ান যোগদানের মতো কিছু করবেন তবে কেবল আমাকে প্রথম রেকর্ডটি ফিরিয়ে দিন, তাই আমি জানি যে আমি কিছু পেয়েছি এবং আমার কেবল প্রথমটি প্রয়োজন। এবং সুতরাং, তারা বুঝতে পারে না যে তারা কেবল একটি বিলিয়ন রেকর্ড ফিরিয়ে নিয়েছে বা তারা বিলিয়ন রেকর্ডের মধ্য দিয়ে দেখে, কারণ তারা তাদের আগ্রহী একটি পেয়েছিল।

রবিন ব্লুর: বাহ, আমি জানি, এটাকেই ভাল বলা হয়েছে - ডেজ যা চালিয়ে যাচ্ছিলেন, মানুষের দিক থেকে ঠিক তেমন দক্ষ না হওয়া উচিত, আপনি জানেন। আপনি যদি প্রোগ্রামার হন তবে কোনও কমান্ড জারি করার কী কী প্রভাব রয়েছে তা আপনার জানা উচিত। আমি বলতে চাইছি, সত্যই, নির্বিকারতার স্তরের কোনও অজুহাত নেই। আমি আরও ধরে নিচ্ছি যে আপনি একরকম বা অন্যভাবে, কেবল এই ভাষাটিকেই জ্ঞাতজ্ঞানী, কারণ এটি সমস্তই ডাটাবেসের দিকে ফোকাস করছে। আমি কি ঠিক তাই না? আপনি কোডিং সাইডে যা ব্যবহার করছেন তা কি ঠিক একই?

বার্ট স্কালজো: অবশ্যই, আপনি এটি ফোর্টরান বা সি বা সি ++ এ করতে পারেন। আসলে, কিছু ইউনিক্সে আপনি এমনকি তাদের স্ক্রিপ্টিং ভাষার জন্য এটি করতে পারেন; তারা আসলে একই সরঞ্জাম সরবরাহ করে। এবং তারপরে আপনি কোন অজুহাতে যা বলেছিলেন তার জন্য আমি একটি সেকেন্ড ফিরে যেতে চাই। আমি প্রোগ্রামারদের একটি বিরতি দিতে যাচ্ছি, 'কারণ আমি প্রোগ্রামারদের বাসের নীচে ফেলে দিতে পছন্দ করি না। তবে সমস্যাটি প্রকৃতপক্ষে একাডেমিক পরিবেশ কারণ আপনি যখন প্রোগ্রামার হওয়ার পদ্ধতিটি শিখতে যান, তখন আপনাকে রেকর্ড-এ-এ-টাইম চিন্তাভাবনা শেখানো হয়। আপনি সেট চিন্তাভাবনা শেখানো হয় না, এবং এটি স্ট্রাকচার্ড ক্যোয়ারী ল্যাঙ্গুয়েজ, বা এসকিউএল সেটগুলির সাথে কাজ করে; এজন্য আমাদের ইউনিয়ন, ছেদ করা এবং বিয়োগকারী অপারেটর রয়েছে। এবং কখনও কখনও এটি এমন ব্যক্তির পক্ষে খুব শক্ত হয়ে যায় যে কখনও সেটের কথা বিবেচনা করে না, ছেড়ে দেয়, একসাথে রেকর্ড-এ-সময় প্রক্রিয়াকরণ ছেড়ে দেয় এবং সেটগুলির সাথে কাজ করে।

রবিন ব্লার: হ্যাঁ, আমি আপনার সাথে আছি। মানে, আমি এখন পেয়েছি, এটি একটি শিক্ষার সমস্যা; আমি মনে করি এটি সম্পূর্ণরূপে একটি শিক্ষার সমস্যা, আমি মনে করি যে প্রোগ্রামারদের পদ্ধতিগতভাবে চিন্তা করা স্বাভাবিক। এবং এসকিউএল প্রক্রিয়াগত নয়, এটি ঘোষণামূলক। আপনি আসলে ঠিকই বলছেন, "এটি আমি চাই এবং আপনি কীভাবে এটি করেন সে সম্পর্কে আমার কোনও খেয়াল নেই" জানেন? প্রোগ্রামিং ভাষার সাহায্যে আপনি প্রায়শই আপনার হাতের আস্তরণটি রোলড করে পেয়েছেন এবং আপনি যখন লুপ করেন তখন আপনি গণনাগুলি পরিচালনা করার ক্ষুদ্র মিনিটের মধ্যে চলে যান। আমি হাত দেবো

বার্ট স্কালজো: না, ঠিক আছে, চালিয়ে যান।

হ্যাঁ, আমি আপনাকে বলছিলাম যে আপনি অন্য একটি উদাহরণ তুলে ধরেছেন যে একজন প্রোফাইলার এই ধরণের রেকর্ড-এ-এ-টাইম প্রসেসিংয়ের সাথে চালিয়ে যাবেন kind কখনও কখনও, কোনও প্রোগ্রামার যিনি রেকর্ড-এ-এ-টাইম লজিকের ক্ষেত্রে ভাল, কীভাবে এসকিউএল প্রোগ্রাম করবেন তা অনুমান করতে পারে না। ঠিক আছে, ধরা যাক তিনি দুটি লুপ তৈরি করেন এবং মূলত একটি যোগদান করেন, তবে ক্লায়েন্টের পক্ষেই তিনি তা করেন। সুতরাং, তিনি যোগদানের মতো একই প্রভাবটি করছেন, তবে তিনি নিজেই এটি করছেন, এবং একটি প্রোফাইল এটি ধরবে, কারণ আপনি সম্ভবত ডেটাবেস সার্ভারকে এটি করার চেয়ে ম্যানুয়ালি যোগ দিতে আরও বেশি সময় ব্যয় করবেন।

রবিন ব্লুর: হ্যাঁ, এটি একটি বিপর্যয় হবে। মানে, আপনি কেবল চারপাশে ছিটকে যাবেন। থ্রেশিং সবসময় খারাপ।

যাই হোক, আমি দেজে যাব; আমি নিশ্চিত তিনি কিছু আকর্ষণীয় প্রশ্ন পেয়েছেন।

ডেজ ব্লাঞ্চফিল্ড: আপনাকে ধন্যবাদ, হ্যাঁ, আমি করি। আমি আপনাকে বাসের নীচে নিক্ষেপকারী প্রোগ্রামারগুলিতে যোগ দিতে যাচ্ছি। আমি বলতে চাইছি, আমি নিজের জীবনে কোডার হয়ে অনেক বছর কাটিয়েছি, প্রতিটি স্তরে, আপনি জানেন যে আপনি যেমনটি বলেছিলেন, ইউনিক্স মেশিনের কমান্ড লাইনে বসে ছিল এবং কিছু ক্ষেত্রে আমি এমনকি জড়িত ছিলাম ইউনিক্সের একাধিক হার্ডওয়্যার প্ল্যাটফর্ম থেকে অন্য পোর্টে কয়েকটি in এবং আপনি আমাদের যে চ্যালেঞ্জগুলি পেয়েছিলেন তা কল্পনা করতে পারেন। তবে বাস্তবতাটি হ'ল বিশ্বের প্রতিটি কোডার এবং স্ক্রিপ্টারের জন্য জেল-আউট-জেল কার্ড। একেবারে আক্ষরিকভাবে প্রতিবার, প্রতিটি সময় সত্যই আঁটসাঁট লেখা, এটি একটি রকেট বিজ্ঞান is এবং ডেনিস রিচি এবং ব্রায়ান কের্নাহানের মতো বিখ্যাত গল্পগুলি স্বাধীনভাবে কোনও কোডের কিছু অংশে কাজ করে এবং তারপরে একটি কফির উপর একটি কোড পর্যালোচনা চ্যাটে ফিরে আসে এবং জানতে পারে যে তারা ঠিক একই প্রোগ্রামে ঠিক একই টুকরো কোড লিখেছেন, ঠিক একই ভাবে। এবং তারা সিতে এটি করেছে তবে প্রোগ্রামিংয়ের পিউরিস্ট স্তরটি খুব কমই বিদ্যমান।

আসল বিষয়টি হ'ল দৈনিক ভিত্তিতে, দিনে কেবল 24 ঘন্টা থাকে, সপ্তাহে সাত দিন থাকে এবং আমাদের কেবল কাজ শেষ করতে হয়। এবং তাই, যখন কেবল traditionalতিহ্যবাহী প্রোগ্রামার নয়, ডিবিএ, এবং কোডার, এবং স্ক্রিপ্টার, এবং সিসাদমিন, এবং নেটওয়ার্ক প্রশাসক, এবং সুরক্ষা কর্মীরা এবং সমস্ত কিছু আজকাল নাগরিকের উপাত্তের কাছে যায়; আমরা শুনেছি, প্রত্যেকে তাদের কাজটি করার চেষ্টা করছে। এবং তাই আমি মনে করি এই পুরোপুরি থেকে দুর্দান্ত গ্রহণযোগ্যতা হ'ল আমি আপনার ডেমোকে ভালবাসি এবং আপনি যে আমাদের ছেড়ে চলে গিয়েছিলেন সেই মুহুর্তের আগে রবিনের সাথে এই কথাটির সাথে কথা বলেছিলেন যে এটির একটি বিশেষত্ব রয়েছে - সম্ভবত এত কিছু না একটি কুলুঙ্গি - তবে কোড এবং এসকিউএল এবং ডাটাবেস হিসাবে এটি প্রযোজ্য একটি বিস্তৃত স্থান। তবে আমি আপনাকে শেল স্ক্রিপ্টে ঝুঁকি মারতে এবং কিছু সমস্যা খুঁজে পেতে বলতে শুনে সত্যিই উত্তেজিত হয়েছি কারণ আপনি জানেন, আজকের যুগে এবং যুগে আমরা সবসময় সর্বনিম্ন ব্যয়ে কাজ করছি।

আপনি কোথাও একটি $ 6 শার্ট কেনার কারণ হ'ল কারও কারও পক্ষে সস্তাভাবে একটি সিস্টেম তৈরি করা হয়েছিল যা আসলে উত্পাদন এবং জাহাজ সরবরাহ করার জন্য এবং যৌক্তিকভাবে সরবরাহ ও বিক্রয় এবং খুচরা সরবরাহ করতে এবং সেই $ 6 শার্টটি পেতে অনলাইনে পেমেন্ট নিতে পারে। এবং এমনটি ঘটে না যদি আপনি লোকদের নিখুঁত উপায়ে কোড লেখার জন্য বছরে $ 400, 000 দেওয়া হয়; এটি কেবল পুরো উন্নয়ন। সুতরাং, এই বিন্দুটি সম্পর্কে, আমি একটি প্রশ্ন অনুমান করি যে আমি আপনাকে সত্যিই ভালবাসি সে সম্পর্কে আমাদের আরও কিছু অন্তর্দৃষ্টি দেওয়ার জন্য, আপনি বর্তমানে যে ধরণের লোক দেখছেন যেগুলি এই ধরণের সরঞ্জামগুলিকে প্রোফাইলে স্থাপন করছে তার প্রস্থ এবং প্রসার কি? একটি কোড এবং পারফরম্যান্স সমস্যার জন্য চেহারা? প্রাথমিকভাবে, icallyতিহাসিকভাবে, তারা কোথা থেকে এসেছে? তারা বড় ইঞ্জিনিয়ারিং হাউস হয়েছে? এবং তারপরে, কি এগিয়ে যাওয়ার বিষয়টি কী, আমি কি এই ভেবে সঠিক হয়েছি যে আরও বেশি সংখ্যক সংস্থাগুলি এই সরঞ্জামটি বা এই সরঞ্জামগুলি বাস্তবায়িত করছে কোডারদের চেষ্টা এবং সহায়তা করার জন্য, যারা জানেন যে কাজ শেষ করার জন্য কে কেবল জিনিসগুলি সম্পন্ন করছে? এবং দরজা থেকে এটি পেতে? এবং কখনও কখনও আমাদের জেল-অফ-জেল কার্ডের দরকার হয়? আমি কি এই ভাবনায় ঠিক আছি যে historতিহাসিকভাবে আমাদের আরও প্রকৌশল মনোযোগ এবং বিকাশ ছিল? রবিন যেমন বলেছিলেন, এখন সেভাবেই আমরা কিছুটা কম করছি, একাডেমিক পদ্ধতি এবং এখন এটি স্ব-শিক্ষিত, বা কাট-পেস্ট কোড, বা কেবল জিনিসগুলি তৈরি করা যায়? এবং সেই পণ্যটি এখন কীভাবে পণ্যটি গ্রহণ করছে তার সাথে মেলে?

বার্ট স্কালজো: হ্যাঁ, ঠিক আছে। এবং আমি আপনাকে একটি সুনির্দিষ্ট উদাহরণ দেব, আমরা কেবল কাজটি করতে চাই, 'কারণ ব্যবসায়ীরা পরিপূর্ণতা চায় না। এটি কম্পিউটারাইজড দাবা গেমের মতোই: দাবা খেলাটি সঠিক উত্তরটির সন্ধান করে না; এটি এমন একটি জবাবের সন্ধান করে যা যুক্তিসঙ্গত পরিমাণে যথেষ্ট ভাল, সুতরাং আমরা কীভাবে প্রোগ্রাম করি। তবে আমি এখন যা সন্ধান করছি তা হ'ল বেশিরভাগ লোকেরা তাদের ইউনিট পরীক্ষার অংশ হিসাবে একটি প্রোফাইলার চান তা বলার পরিবর্তে - এটি আমি কীভাবে করব, কারণ আমি এটিকে সময় নষ্ট হিসাবে দেখছি না - যা ঘটছে তা হচ্ছে আমরা ভাগ্যবান হলে এখন এটি পরে করা হচ্ছে, কখনও কখনও, সংহতকরণ পরীক্ষা বা স্ট্রেস টেস্টিংয়ের সময়। তবে বেশিরভাগ সময় এটি একটি চলাচলের অংশ, যেখানে কোনও কিছু উত্পাদন হয়ে গেছে, এটি কিছু সময়ের জন্য দৌড়েছিল, সম্ভবত এমনকি কয়েক বছর ধরে দৌড়েছিল, এবং এখন এটি ভালভাবে চলতে পারে না, এবং এখন আমরা এটির প্রোফাইল করব। এবং এটি এখন আরও সাধারণ পরিস্থিতি বলে মনে হচ্ছে।

ডেজ ব্লাঞ্চফিল্ড: হ্যাঁ, এবং আমি মনে করি "প্রযুক্তিগত debt " শব্দটি সম্ভবত একটির সাথে পরিচিত যার সাথে আপনি বেশি পরিচিত; আমি রবিনকে জানি এবং আমি অবশ্যই রয়েছি। আমি মনে করি আজকের দিনগুলিতে, বিশেষত বিকাশ এবং সিস্টেম গঠনের ক্ষেত্রে চতুর দৃষ্টিভঙ্গিতে আমার কাছে প্রযুক্তিগত debtণের ধারণাটি এখন একটি আসল জিনিস, এবং আমরা প্রকল্পগুলিতে প্রকৃত পক্ষে দায়বদ্ধ account আমি জানি, আমি বলতে চাই যে আমরা মিডিয়া লেন্স এবং অন্যদের মতো আমাদের নিজস্ব প্রকল্প পেয়েছি, যেখানে আমরা প্রতিদিনের ভিত্তিতে কোডিং এবং ব্লার গ্রুপ জুড়ে বিভিন্ন জিনিস পেয়েছি। এবং যখনই আমরা কোনও কিছু নির্মাণ করছি, আমরা ধরণেরভাবে তাকান, আমি এটি দেখি এবং সর্বদা এটি ঠিক করার জন্য আমার কী ব্যয় করতে হবে তার দৃষ্টিভঙ্গি থেকে দেখুন, বনাম আমি কেবল এটি পেতে পারি এটি এখান থেকে বেরিয়ে আসতে পারে এবং তারপরে দেখুন এবং দেখুন যে এই জিনিসটি ভেঙে যাচ্ছে কিনা। এবং এই প্রযুক্তিগত debtণের উত্তরাধিকারী যা আমি জানি যে আমাকে পরে আবার চক্কর দিতে হবে এবং ঠিক করতে হবে।

এবং আমি বলতে চাইছি, আমি গত সাত দিনে এটি করেছি: আমি বেশ কয়েকটি সরঞ্জাম এবং স্ক্রিপ্ট লিখেছি, আমি পাইথন ভাষার কয়েকটি টুকরো লিখেছি এবং এটি এটিকে মোঙ্গোর পিছনে প্রেরণ করেছি, নিশ্চিত যে এটি দুর্দান্ত এবং পরিষ্কার এবং সুরক্ষিত, তবে এটি কেবল আমার করা ক্যোয়ারী পেয়েছে, এটা জেনেও যে বড় ধাঁধাটি পেতে আমার এই ফাংশনটি কাজ করতে হবে; আমার আসল ব্যথা এখানে এবং তাই আপনি এই প্রযুক্তিগত debtণ বহন করেন, এবং আমি মনে করি এটি এখন কেবল একটি অন্তর্ভুক্ত বিষয় নয়, আমি মনে করি এটি এখন বিকাশের ডিএনএর একটি অংশ। লোকেরা কেবল - বিচ্ছিন্নভাবে নয় - তারা কেবল প্রযুক্তিগত debtণ গ্রহণ করে একটি সাধারণ মডেল অপারেন্ডি প্রকারের সমস্যা, এবং তাদের কেবল এটি ব্যয় করতে হয়। এটি যেখানে আপনি প্রযুক্তিগত urণ বহন করেন। এবং আমি মনে করি আপনি ডেমোতে আমাদের যা দেখিয়েছেন তার দুর্দান্ত জিনিসটি আপনি আক্ষরিক অর্থে প্রোফাইল করতে পারেন এবং কোনও কিছু চালাতে কতক্ষণ সময় নেয় তা দেখতে পারেন। এবং এটি সম্ভবত আমার প্রিয় জিনিস। আমার অর্থ, আমি প্রকৃতপক্ষে প্রোফাইলিং সরঞ্জামগুলি তৈরি করেছি - আমরা শেড এবং লেক্স এবং অর্কগুলিতে আমাদের কোড চালানোর জন্য সরঞ্জামগুলি তৈরি করতে এবং লুপগুলি কোথায় ছিল তা দেখার জন্য, এই জাতীয় সরঞ্জামগুলি উপলভ্য হওয়ার আগে - এবং আপনি যখন কোডটি তৈরি করেছিলেন তখন যান এবং আপনার নিজের কোডটি পর্যালোচনা করুন, আপনার নিজের কোডটি পর্যালোচনা না করে আপনি খুব ভাল। তবে এখনকার ঘটনা তা নয়। এই বিষয়টি মাথায় রেখে, এমন কোনও বাজার বিভাগ আছে যা এটি অন্য যে কোনও তুলনায় বেশি গ্রহণ করে? একটি ভর হিসাবে দেখতে

বার্ট স্কালজো: ওহ হ্যাঁ, আমি পেয়েছি - আমি আপনার জন্য একটি উপমা আঁকতে যাচ্ছি, এবং আপনাকে দেখাব যে নন-প্রোগ্রামাররা এটি সর্বদা করে do 'কারণ যদি আমি কখনই কোনও ডিবাগার এবং প্রোফাইলিং ক্লাস বা সেশন শেখাচ্ছি, আমি লোকদের জিজ্ঞাসা করব, "ঠিক আছে, এখানে কত লোক মাইক্রোসফ্ট ওয়ার্ডে প্রবেশ করে এবং উদ্দেশ্যমূলকভাবে কখনও বানান পরীক্ষক ব্যবহার করে না?" এবং কেউ তাদের হাত উপরে রাখে না, কারণ নথি লেখার জন্য, আমরা সবাই জানি আমরা ইংরেজী ভুল করতে পারি, এবং তাই সবাই বানান পরীক্ষক ব্যবহার করে। এবং আমি বলেছিলাম, "আচ্ছা, আপনি যখন ভিজুয়াল বেসিকের মতো আপনার আইডিইতে পাঠ্য লিখবেন, আপনি ডিবাগারটি ব্যবহার করছেন না তখন কীভাবে আসবে? এটি একই জিনিস, এটি একটি বানান পরীক্ষকের মতো ”"

ডেজ ব্লাঞ্চফিল্ড: হ্যাঁ, এটি আসলে একটি দুর্দান্ত উপমা। আমি আসলেই ভাবি নি, আমাকে স্বীকার করতে হবে যে আমি ব্যবহার করি বেশ কয়েকটি সরঞ্জামের সাথে আমি আসলে একই রকম কিছু করি। প্রকৃতপক্ষে, একটি, ওডিএফ, অ্যালিপিসের সাথে আমার প্রিয়টি কেবল সেখানে কাটা এবং কোড পেস্ট করুন এবং এমন কিছু জিনিস সন্ধান করুন যা কেবল হাইলাইট করে এবং বুঝতে পেরে আমি কিছু ক্লাসের কলে টাইপ করেছি। এবং, তবে এটি এখন আকর্ষণীয় এটির মতো সরঞ্জামটির সাথে আপনি এটি আসার পিছনে ফিরে দেখার এবং পরে এটির দিকে তাকানোর বিপরীতে যথাসময়ে এটি করতে পারেন, এটি একেবারে সামনে ধরা খুব ভাল nice তবে হ্যাঁ, এটি কেবলমাত্র একটি ওয়ার্ড প্রসেসরে টেক্সট লাগানোর একটি দুর্দান্ত উপমা, 'কারণ এটি একটি আকর্ষণীয় জাগ্রত কল কারণ, কেবল বুঝতে পারেন যে আপনি কিছু টাইপস বা এমনকি ব্যাকরণ ত্রুটি করেছেন, তাই না?

বার্ট স্কালজো: একদম ঠিক।

ডেজ ব্লাঞ্চফিল্ড: সুতরাং, আপনি এখন আমার অনুমানের থেকে আরও বেশি কিছু দেখছেন, আমি বলতে চাইছি, আমার উপস্থিতিদের জন্য সম্ভবত আমাদের প্রশ্নোত্তর পাঠানোর আগে আমার কাছ থেকে চূড়ান্ত প্রশ্ন question আপনি যদি এটি করার পদ্ধতির আশেপাশে কিছু প্রকারের সুপারিশ দিতে যাচ্ছিলেন - আমি ধরে নিচ্ছি যে এটি অযৌক্তিক - এটি আপনার ক্ষেত্রে বিকাশের আগে আপনি কি প্রাথমিক পর্যায়ে এসে এটি বিকাশক হিসাবে কার্যকর করা হবে? বা এটি এমন যে আপনি মূলত বিল্ডিং পাচ্ছেন, চলছেন, কিছু বানাচ্ছেন তারপরে আসুন এবং পরে এটি প্রোফাইল করুন? আমি সন্দেহ করি এটি প্রথম দিকে আসার ঘটনা এবং আপনার কোডটি পরিষ্কার করার বিষয়টি নিশ্চিত করে নিন। বা এটি এমন কোনও ঘটনা যা তাদের পোস্ট-মোতায়েনের এই অংশটি বিবেচনা করা উচিত?

বার্ট স্কালজো: আদর্শভাবে, তারা এটিকে সামনে রেখে দিত, কিন্তু যেহেতু প্রত্যেকেই হট্টগোল, বিশৃঙ্খলা বিশ্বে থাকে যেখানে তারা কেবল জিনিসটি সম্পন্ন করতে পেরেছিল, তারা এমন কোনও পারফরম্যান্স সমস্যার মধ্যে না চলে যতক্ষণ না তারা সমাধান করতে পারে না until ভার্চুয়াল মেশিনে আরও সিপিইউ এবং মেমরি যুক্ত করা হচ্ছে।

ডেজ ব্লাঞ্চফিল্ড: হ্যাঁ সুতরাং, আসলে আপনি আকর্ষণীয় কিছু উল্লেখ করেছেন, আমি যদি দ্রুত করতে পারি? আপনি এর আগে উল্লেখ করেছেন যে এটিকে যে কোনও জায়গা থেকে চালানো যেতে পারে, এবং শেষ প্রান্তে ডাটাবেসের সাথে কথা বলতে পারেন। সুতরাং এটি এখন আমরা যে ধরণের বিমোডাল ধারণাটি নিয়ে কথা বলি তার সাথে স্বাচ্ছন্দ্য বোধ করি, অফ-প্রাইমিস / অফ-প্রাইমিস ক্লাউডের পাশাপাশি জিনিসগুলির চেহারা অনুসারে, দিনের শেষে, যদি এটি পিছনের প্রান্তে কথা বলতে পারে এবং দেখতে পারে কোড, এটি সত্যিই যত্ন করে না, তাই না?

বার্ট স্কালজো: ঠিক, হ্যাঁ, আপনি এটি মেঘের মধ্যে চালাতে পারেন।

ডেজ ব্লাঞ্চফিল্ড: দুর্দান্ত, 'কারণ আমি মনে করি আমাদের নতুন সাহসী বিশ্বটি কোথায় চলছে। সুতরাং, এরিক। আমি এখন আপনার কাছে ফিরে যাব এবং দেখুন যে আমাদের এখানে কয়েকটি প্রশ্ন এসেছে এবং আমি চাই আমাদের উপস্থিতরা এখনও আমাদের সাথে থাকুক, যদিও আমরা ঘন্টা পেরিয়ে গেলেও।

এরিক কাভানাঘ: হ্যাঁ, সেখানে কয়েক জন লোক রয়েছে, আমি কেবল একটি চটজলদি মন্তব্য করব: বার্ট, আমি মনে করি যে রূপকটি, আপনি বানান চেকটি ব্যবহার করার ক্ষেত্রে যে উপমা দিয়েছেন তা খোলামেলা উজ্জ্বল। এটি একটি ব্লগ বা দু'জনের পক্ষে যথাযথভাবে বলা যোগ্য, কারণ আপনি যা করছেন তার প্রেক্ষাপট ফ্রেমবিন্যাস করার একটি ভাল উপায় এবং এটি কতটা মূল্যবান এবং কীভাবে সত্যিকার অর্থে ডিবাগারটি ব্যবহার করার সর্বোত্তম অনুশীলন হওয়া উচিত নিয়মিত ভিত্তিতে, তাই না? আমি বাজি ধরছি যে আপনি যখন কিছুটা নিক্ষেপ করছেন তখন কিছু মাথা ঝুঁকছে?

বার্ট স্কালজো: অবশ্যই, কারণ আমি তাদের যা বলি তা হ'ল, "আমি কেন আমার দস্তাবেজগুলিতে একটি বানান চেক চালাচ্ছি? আমি বোকা বানান ভুল দ্বারা বিব্রত হতে চাই না। "ভাল, তারা বোকা কোডিং ভুল দ্বারা বিব্রত হতে চান না!

এরিক কাভানাঘ: ঠিক। হ্যাঁ, সত্যিই। ভাল, ভাবী, আমরা এখানে এক ঘন্টা এবং পাঁচ মিনিটের মধ্যে পোড়া করেছি, তাই আপনার সময় এবং মনোযোগের জন্য সবাইকে ধন্যবাদ জানাই। আমরা এই সমস্ত ওয়েব চ্যাট সংরক্ষণাগারটি করি, যেকোন সময় ফিরে আসতে এবং এগুলি পরীক্ষা করে দেখতে নির্দ্বিধায়। এই লিঙ্কগুলি সন্ধানের জন্য সেরা জায়গাটি সম্ভবত টেকোপিডিয়া ডট কম, তাই আমরা এই মুহুর্তে এই তালিকায় এটি যুক্ত করব।

এবং এটি দিয়ে, আমরা আপনাকে বিদায় জানাব, লোকেরা। আবারও, দুর্দান্ত কাজ, বার্ট, আইডেরা থেকে আমাদের বন্ধুদের ধন্যবাদ। আমরা আপনার সাথে পরের বার কথা বলব, আমরা পরের সপ্তাহে আপনার সাথে কথা বলব। যত্ন নিবেন! বাই বাই

দ্রুত প্রতিক্রিয়া: ডাটাবেস ডিবাগিং এবং উদ্ধারে প্রোফাইলিং