এই ব্যক্তি কীভাবে মাইক্রোসফ্ট পেইন্টের সাথে "হ্যালো ওয়ার্ল্ড" কোড করেছিলেন?


99

আমি গত কয়েক দিনের মধ্যে এটি সবেমাত্র দেখেছি এবং এটি কীভাবে কাজ করে তা অনুধাবন করতে পারি না। আমি যে ভিডিওটির কথা বলছি তা এখানে :

এটি এই স্ট্যাক ওভারফ্লো প্রশ্ন থেকে শীর্ষ রেটেড উত্তর : কেন এই প্রোগ্রামটি তিনটি সংকলক দ্বারা প্রত্যাখ্যান করা হয়েছিল?

এই বিটম্যাপটি কীভাবে "হ্যালো ওয়ার্ল্ড" এর জন্য সি ++ প্রোগ্রাম প্রদর্শন করতে সক্ষম?


7
বিটম্যাপ মানগুলি একটি ফাইলের মধ্যে কেবল বিট হয়। আপনি যদি সেই বিটগুলি ASCii হিসাবে ব্যাখ্যা করেন তবে এটি কিছু প্রদর্শন করবে। বিটগুলির যত্ন সহকারে নির্বাচন এবং আপনি একটি বিটম্যাপে (চিঠি বা সংবিধান) একটি ফাইল লিখতে পারেন (ফাইলের শিরোনামটি মডিউল করুন)। কি বোঝার দরকার নেই? এটি পৃথিবীর সবচেয়ে খারাপ সম্পাদকের মতো একটি নির্বোধ বিষয়।
টমাস এম ডুবুইসন

4
কি এটা এর মূল্য, সেখানে হয় অন্তত এক প্রোগ্রামিং ভাষা যেখানে সোর্স কোড একটি ইমেজ হিসাবে প্রকাশ করা হয়। এই বিশেষ চিত্রটি এর সাথে কাজ করবে না এমন নয়, তবে ...
মাইকেল ম্যাডসেন

4
থ্রেড আপনি এ খুঁজছেন সেটা stackoverflow.com/questions/5508110/...
phwd

6
সেই অ্যানিমেটেড জিআইএফ আমার ব্রাউজারটিকে (আইআই এবং ক্রোম) হত্যা করছে - অ্যানিমেটেড জিআইএফের চেয়ে ভিডিও পোস্ট করার আরও ভাল উপায় রয়েছে।
মুসিজিনিসিস

4
@ মুসিজেনেসিস ওহ, ২০১১ সালের সমস্যাগুলি আমি কীভাবে মনে করি
চার্লস ক্লেটন

উত্তর:


56

একটি বিএমপি (ডিআইবি) চিত্রটি একটি শিরোলেখ দ্বারা তৈরি করা হয় তারপরে 1 টি রঙিন ডেটা সঙ্কুচিত হয় (24 বিপিপি চিত্রের জন্য এটি প্রতি পিক্সেল 3 বাইট হয়, বিপরীত সারি ক্রমে সংরক্ষণ করা হয় এবং 4 বাইট সারি স্ট্রাইড সহ)।

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

আপনি উত্পন্ন ফাইলটি নোটপ্যাডে খুললে রঙের ডেটা পাঠ্য হিসাবে প্রদর্শিত হবে; আপনি এখনও শিরোনাম থেকে স্পষ্ট দেখতে পাচ্ছেন (অংশটি BMপাঠ্যের শুরু থেকে শুরু করে), যা ফাইল ফর্ম্যাট দ্বারা বাধ্যতামূলক।

আমার মতে এই ভিডিওটি এইভাবে করা হয়েছিল: প্রথমে লেখক বিটম্যাপের জন্য প্রয়োজনীয় আকারটি গণনা করেছিলেন এবং একটি সাধারণ প্যাটার্নে প্রসারিত রঙ সহ পূর্ণ আকারের একটি সঠিক ডিআইবি ফাইল তৈরি করেছিলেন (যেমন সমস্ত বাইট 65 => 'A'); তারপরে ভিডিওটিতে দেখানো হয়েছে এমন প্যাটার্নটি "পে-লোড" কোডের সাথে প্রতিস্থাপন করেছে।

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

ডিআইবি ফর্ম্যাট সম্পর্কে আরও তথ্য


  1. এখানে আরএলই সংক্ষেপিত ডিআইবি রয়েছে, তবে এই ক্ষেত্রে সংকোচিত বিটম্যাপগুলি ব্যবহার করা হয় (এবং এগুলি যাইহোক সত্যিই খুব কম ব্যবহৃত হয়)।
  2. স্ট্রাইড ব্যতীত, এটি 4 বাইটের একাধিক সারি ব্যবহার করা এড়ানো হয়েছিল।

19

আমি ধরে নিয়েছি আপনি এপ্রিল ফুলের একটি প্রশ্নের উত্তর উল্লেখ করছেন।

আমার অনুমান যে প্রতিটি পিক্সেলের এটির জন্য বাইনারি উপস্থাপনা রয়েছে। এবং উত্স কোড প্রতিটি অক্ষরের জন্য এটি একটি বাইনারি উপস্থাপনা আছে।

যে ব্যক্তি প্রোগ্রামটি তৈরি করেছেন সে অবশ্যই প্রতিটি পিক্সেলের জন্য রঙ তৈরি করেছে যার বাইনারি উপস্থাপনা থাকতে হবে যা প্রতিটি চরিত্রের সাথে মিলে যায়।


7
+1: শেষে, বাইটগুলি বাইট হয়। নোটপ্যাড তাদের পাঠ্যের অক্ষর হিসাবে ব্যাখ্যা করে যখন এমস্পেন্ট তাদের বিটম্যাপে পিক্সেল হিসাবে ব্যাখ্যা করে। শীর্ষস্থানীয় "জাঙ্ক" পাঠ্যটি হ'ল অতিরিক্ত চিত্র সম্পর্কিত তথ্য (সম্ভবত রেজোলিউশন, সংস্করণ ইত্যাদি।)।
ক্রিস শ্মিচ

6

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

প্রোগ্রাম-এর-হিসাবে-চিত্রটিকে কোড অবলম্বনের ফর্ম হিসাবেও দেখা যেতে পারে। এটি বিশেষভাবে ব্যবহারিক ছিল না ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.