কম্পিউটার টিউটোরিয়াল

ইউনিক্স ইপক টাইম (Unix Epoch Time) বোঝা: টাইমস্ট্যাম্পকে মানব-পঠনীয় তারিখে রূপান্তর

আপনি কি জানেন যে আমাদের কম্পিউটার মানব ইংরেজি ভাষা বুঝতে পারে না? আমাদের সকল ইনস্ট্রাকশন বাইনারি কোডে (Binary Code) রূপান্তরিত হয় সিপিইউ (CPU) সেগুলো পড়ে এবং প্রসেস অনুসরণ করে এবং তারপর বাইনারি কোডে জেনারেট করা রেসপন্সকে মানব-পঠনীয় ভাষায় রূপান্তরিত করে। বাইনারি কোডে শুধু দুটি অক্ষর থাকে, ০ এবং ১। এটা শোনা কনফিউজিং, কিন্তু প্রসেসরের জন্য কখনো চিন্তার বিষয় হয়নি যতক্ষণ না এটি একটি তারিখ পড়তে হয় যা সিম্পল ০ এবং ১-এ রূপান্তর করা যেতো না।

এই সমস্যা সমাধান করার জন্য, কম্পিউটার বিজ্ঞানীদের সিদ্ধান্ত নেন একটি প্রদত্ত তারিখকে একটি সিঙল কমন রেফারেন্স পয়েন্ট থেকে বdfrac সেকেন্ডের সংখ্যায় রূপান্তর করার, যা বিশ্বব্যাপী স্ট্যান্ডার্ড হিসেবে স্বীকৃত ছিল। যখন আমরা কম্পিউটারের একটি তারিখ দেই, সেটি সেকেন্ডে রূপান্তরিত করে এবং তারপর ক্যালকুলেট করে যে কম্পিউটারের জন্য সময় শুরু হওয়ার প্রথম সেকেন্ড থেকে কত সেকেন্ড পাস করেছে। কম্পিউটারের জন্য সময়ের সেই প্রথম সেকেন্ডটিকে ইপক টাইম (Epoch Time) বলা হয়।

ইউনিক্স ইপক টাইম (Unix Epoch Time) বোঝা: টাইমস্ট্যাম্পকে মানব-পঠনীয় তারিখে রূপান্তর

মজার তথ্য (Fun Fact).

যদি আপনি Hello-কে বাইনারি কোডে রূপান্তর করেন, তবে এটি দেখাবে কিছু এইরকম:

Hello = 01001000 01100101 01101100 01101100 01101111.

ইপক টাইমস্ট্যাম্প (Epoch Timestamp) কী?

মেরিয়াম-ওয়েবস্টার (Merriam-Webster) ডিকশনারি "Epoch"-কে একটি সময়ের মুহূর্ত বা তারিখ বলে যা রেফারেন্স পয়েন্ট হিসেবে সিলেক্ট করা হয়। উইকিপিডিয়া (Wikipedia) কম্পিউটিং-এ Epoch-কে সিস্টেম টাইম মাপার জন্য যে তারিখ ও সময় থেকে কম্পিউটার শুরু করে সেটি বলে।

বিভিন্ন অপারেটিং সিস্টেম তাদের ইপক টাইম হিসেবে ভিন্ন ভিন্ন সময়ের মুহূর্ত নেওয়া হয়েছে। পার্থক্যের কারণ জানা নেই, কিন্তু ইপক টাইমের জন্য একটি স্ট্যান্ডার্ড সেট করা থাকলে এটা অনেক সহজ হতো। এখানে সাধারণত ব্যবহৃত কিছু ইপক টাইমের উদাহরণ:

অপারেটিং সিস্টেম ইপক টাইম শুরু হয়েছে
১ রিয়াল ওয়ার্ল্ড (The Real World) ০০:০০:০০ UTC
২ অ্যাপল ম্যাকওএস (Apple macOS) ১ জানুয়ারি, ১৯০৪
৩ মাইক্রোসফট উইন্ডোজ (Microsoft Windows) ১ জানুয়ারি, ১৬০১
৪ ইউনিক্স এবং লিনাক্স সিস্টেম (Unix and Linux Systems) ১ জানুয়ারি, ১৯৭০

 

ইউনিক্স ইপক টাইমস্ট্যাম্প (Unix Epoch Timestamp) কী?

ইউনিক্স অপারেটিং সিস্টেমগুলো ইপক টাইমস্ট্যাম্প কনসেপ্ট প্রথম معرفی করেছিল, এবং তাই এটিকে প্রায়শই ইউনিক্স ইপক টাইমস্ট্যাম্প বলা হয়। প্রথম ইউনিক্স সিস্টেম ১৯৬০-এর দশকে ডেনিস রিচি (Dennis Ritchie) এবং কেন থম্পসন (Ken Thompson) দ্বারা তৈরি হয়েছিল, এবং ইউনিক্স ইপক টাইমস্ট্যাম্প সেট করা হয়েছিল ০০:০০:০০ UTC ১ জানুয়ারি, ১৯৭০, ইউনিক্স সিস্টেমের জন্য "epoch" মুহূর্ত হিসেবে।

ইউনিক্স ইপক টাইমস্ট্যাম্প কীভাবে পাবেন?

ইউনিক্স ব্যবহারকারীদের জন্য, একটি কমান্ড সেট সহজে বর্তমান সময় এবং ১ জানুয়ারি, ১৯৭০ থেকে ইউনিক্স ইপক টাইমস্ট্যাম্প সেকেন্ডে আইডেন্টিফাই করতে সাহায্য করতে পারে।

বর্তমান ইউনিক্স ইপক টাইমস্ট্যাম্প পেতে, টার্মিনালে নিচের কমান্ডটি টাইপ করুন:

date "+%s"

ইউনিক্স ইপক টাইমস্ট্যাম্পকে মানব-পঠনীয় তারিখে রূপান্তর করতে, এই কমান্ডটি টাইপ করুন:

date -r (epoch time)

মানব-পঠনীয় ফরম্যাটে তারিখ জানতে:

date
ইউনিক্স ইপক টাইম (Unix Epoch Time) বোঝা: টাইমস্ট্যাম্পকে মানব-পঠনীয় তারিখে রূপান্তর

ইউনিক্স ইপক টাইমস্ট্যাম্প কতটুকু ইফেক্টিভ এবং ২০৩৮ সালের সমস্যা (Year 2038 Problem) কী?

ইউনিক্স ইপক টাইমস্ট্যাম্পের ডেভেলপাররা একটি ৩২-বিট সাইনড ইন্টিজার (32-bit signed integer) ভ্যালু অ্যাসাইন করার সিদ্ধান্ত নিলেন কারণ সেটি তখন খুব বড় মনে হয়েছিল। কিন্তু যেসময়ের সাথে সাথে আমরা এগিয়ে যাচ্ছি, প্রতিটি পাস হওয়া সেকেন্ড ইউনিক্স ইপক টাইমস্ট্যাম্পের ভ্যালু বাড়াচ্ছে। যেহেতু এটি একটি ৩২-বিট ইন্টিজার ভ্যালু, এটি তার ক্যাপাসিটির শেষে পৌঁছাবে ০৩:১৪:০৭, ১৯ জানুয়ারি ২০৩৮। এর পরের সেকেন্ডটি ওভারফ্লো (Overflow) সৃষ্টি করবে এবং ঘড়িগুলো রিসেট হয়ে যাবে ১৩ ডিসেম্বর, ১৯০১-এ।

এটি বিশ্বব্যাপী ইউনিক্স ব্যবহারকারীদের জন্য কওস (Chaos) সৃষ্টি করবে এবং ইউনিক্স সিস্টেমের ফাংশনিং ডিস্টার্ব করবে এবং সফটওয়ার লাইসেন্স, ব্যাকআপ অপারেশন, এবং অন্যান্য এরর তৈরি করবে। এটিকে "Year 2038 Problem" বলা হয় যা উইন্ডোজ অপারেটিং সিস্টেমে দ্বিতীয় মিলেনিয়ামে ঢোকার সময় হয়ে যাওয়া Y2K সমস্যার সাথে মিলती জুলتی।

তবে, অনুমান করা হয় ৩২-বিট সিস্টেমগুলো ২০৩৮ সালের মধ্যে আর ব্যবহার হবেনা, এবং তাই এই সমস্যাটি বড় সমস্যা সৃষ্টি করবে না। কিন্তু কিছু অটোমোবাইল যেসবের ইঞ্জিন কন্ট্রোল ইউনিটে এম্বেডেড ৩২-বিট ইউনিক্স সিস্টেম আছে সেগুলোর সাথে একটি চিন্তা আছে। এই গাড়িগুলো ২০৩৮ সাল পর্যন্ত কাজ করার আশা করা হয়।

ইউনিক্স ইপক টাইম (Unix Epoch Time) বোঝা: টাইমস্ট্যাম্পকে মানব-পঠনীয় তারিখে রূপান্তর

৩২-বিট ইউনিক্স ইপক টাইমস্ট্যাম্পের সমাধান।

নতুন ডেভেলপড হওয়া ইউনিক্স সিস্টেমগুলোতে ৬৪-বিট সাইনড ইন্টিজার (64-bit signed integer) ভ্যালু অ্যাসাইন করা হয়েছে ইউনিক্স ইপক টাইমস্ট্যাম্প স্টোর করার জন্য, যার অর্থ টাইমস্ট্যাম্প রিসেট হওয়ার পরবর্তী সমস্যা ১৪ বিলিয়ন বছর পরে হবে। হ্যাঁ, সেটি ঠিক, এটা আমাদের ব্রহ্মাণ্ডের অনুমানিত বয়স ১৩.৮ বিলিয়ন বছরের চেয়েও বেশি। শুধু নতুন ৬৪-বিট সিস্টেমগুলো নতুন ইউনিক্স টাইম হ্যান্ডল করতে পারে এবং পুরনোগুলো ৬৪-বিটে রূপান্তর করা যায় না।

কি আমি উইন্ডোজ ১০-এ ইপক টাইম পেতে পারি?

মাইক্রোসফট একটি ভিন্ন ইপক টাইমস্ট্যাম্প ফলো করে, но এখনও উইন্ডোজ ১০-এ ইউনিক্স ইপক টাইমস্ট্যাম্প পাওয়া সম্ভব তারিখ নির্দিষ্ট করে এবং সেকেন্ড ক্যালকুলেট করে। এটি অর্জন করা যায় উইন্ডোজ ১০-এ পাওয়ারশেল (PowerShell) অ্যাপে একটি কমান্ড টাইপ করে। নিচ থেকে কমান্ড টেক্সট কপি করুন:

PowerShell -command "(New-TimeSpan -Start (Get-Date "01/01/1970") -End (Get-Date)).TotalSeconds"
ইউনিক্স ইপক টাইম (Unix Epoch Time) বোঝা: টাইমস্ট্যাম্পকে মানব-পঠনীয় তারিখে রূপান্তর

নোট: নির্দিষ্ট তারিখটি ইউনিক্স ইপক টাইমস্ট্যাম্পের তারিখ যা ১শে জানুয়ারি ১৯৭০।

কি ফ্রি অনলাইন ইপক টাইম কনভার্টার (Online Epoch Time Convertors) আছে?

ইউনিক্স ইপক টাইম (Unix Epoch Time) বোঝা: টাইমস্ট্যাম্পকে মানব-পঠনীয় তারিখে রূপান্তর

আপনি যদি অনলাইন কনভার্টার ব্যবহার করে ইউনিক্স ইপক টাইমস্ট্যাম্পকে নরমাল তারিখে রূপান্তর করতে চান, তবে কিছু ওয়েবসাইট আছে যা খুব উপকারী হতে পারে:

  • Epoch Converter

এই ওয়েবসাইট ইউজারদের ফ্রি সার্ভিস অফার করে এবং ইপক এবং ইউনিক্স টাইম স্ট্যাম্পকে নরমাল মানব-পঠনীয় তারিখে রূপান্তর করতে সাহায্য করে। আপনাকে ইপক টাইমস্ট্যাম্প টেক্সট বক্সে এন্টার করে Timestamp to Human date বাটনে ক্লিক করতে হবে।

  • Unix Timestamp.

এই ওয়েবসাইট রিয়েল-টাইমের উপর ভিত্তি করে বর্তমান ইপক টাইম অফার করে, এবং আপনি 웹পেজ রিফ্রেশ (F5) করার পর সেকেন্ডের সংখ্যায় পরিবর্তন পর্যবেক্ষণ করতে পারেন। এটি যেকোনো ইউনিক্স টাইম স্ট্যাম্পকে মানব তারিখে রূপান্তর করার অফারও দেয়। উদাহরণস্বরূপ, আমি ২ এবং তারপর ৯টি শূন্য দিয়েছিলাম এবং তারিখটি আসল থেকে ১৩ বছর ভবিষ্যতে দেখাল।

ইউনিক্স ইপক টাইম (Unix Epoch Time) বোঝা: টাইমস্ট্যাম্পকে মানব-পঠনীয় তারিখে রূপান্তর

ইউনিক্স ইপক টাইমস্ট্যাম্প সম্পর্কে আপনার মতামত শেয়ার করুন।

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

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

  1. পাইথনে ডেট স্ট্রিংকে টাইমস্ট্যাম্পে রূপান্তর করা

  2. পাইথনে ডেটাটাইম স্ট্রিংকে মিলিসেকেন্ড ইউনিক্স টাইমস্ট্যাম্পে কনভার্ট করবেন?

  3. পাইথনে datetime কে epoch-এ strftime দিয়ে কনভার্ট করবেন?

  4. পাইথনে ইউনিক্স টাইমস্ট্যাম্প স্ট্রিংকে পঠনীয় ডেটে কনভার্ট করবেন?