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

ডার্টে জেসন

সত্যি বলতে কি, ডার্টে জেসন ব্যবহার করা পাইথনের মতই সোজা।


ফায়ারফক্স ৪৮ বেরনোর সময় দেখা গেলো ফায়ারফক্সে মাল্টিপ্রোসেসিঙ যুক্ত হয়েছে। আমার ব্যক্তিগত অভিজ্ঞতা ছিল ফায়ারফক্স দিনে দিনে ভারী ও আনরেস্পন্সিভ হচ্ছিল, যেজন্য মূলত গুগল ক্রোমে শিফট করা। এই আপডেটের পর ফায়ারফক্সের মেমরি ইউজেস ব্যবহারের ওপর নির্ভরশীল হবে। মোস্ট ইম্পর্ট্যান্টলি, আগের থেকে অনেক রেস্পন্সিভ দেখতে পাচ্ছি। স্বাভাবিকভাবেই আমার ফোনেও ফায়ারফক্স ইন্সটল করলাম। এখানেও ক্রোমের চেয়ে ফাস্ট এবং রিসোর্স ফ্রেন্ডলি। সমস্যা হচ্ছে বাঙলা ফন্টটা ভালো দেখাচ্ছিল না। পড়ার অযোগ্য না, তবে আমার রুচিতে বাধে। বাধ্য হয়ে সেটিঙস ঘাঁটলাম, এ্যাডঅন খুঁজলাম এ্যাডভান্সড ফন্ট সেটিঙসের মত কিছুর জন্য। আশাহত হলাম। অবশেষে, about:config এ গিয়ে ঠিক করে নিলাম। আপনি যদি এই পোস্ট পড়তে শুরু করেন, আমি ধরে নিচ্ছি আপনিও একই সমস্যায় আছেন। সুতরাং, কাজ শুরু করে দিন, এড্রেসবারে লিখুন about:config এবং কনফিগারেশন পেজে ঢুকুন। এবার দেখেবন অনেক অনেক কনফিগারেশন প্যারামিটার আছে এখানে। প্লাস বাটন চেপে নতুন প্যারামিটার যোগ করতে হয়। প্লাস চাপুন তারপর ‘Name’ এর জায়গায় লিখুন font.name.serif.x-beng এবং দেখুন নেমের ডানপাশে লেখা আছে Boolean, ওটা প্যারামিটার টাইপ, ওটায় চেপে String সিলেক্ট করুন, অর্থাৎ, এই প্যারামিটারের টাইপটা হলো স্ট্রিং। এবার আপনার এন্ড্রয়েডের ডিফল্ট ফন্টটা দিন ভ্যালুর জায়গায়, আমার ক্ষেত্রে ছিল Noto Sans Bengali। এটার মতই আরো ২টি রুল যোগ করতে হবে। মোট তিনটি রুল নীচে টেবিলে দিচ্ছি:


যারা C বা অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজ থেকে প্রথম পাইথনে আসেন তারা হঠাৎই দেখেন case বা switch বা ওরকম কোনো কন্ডিশনাল লজিক বিল্ডার নেই! ফলে দীর্ঘ if-elif-else স্টেটমেন্ট লিখতে হয়। সমস্যা হচ্ছে এটা অনেক বড় হতে পারে, বিরক্তিকরও হতে পারে। এর একটা বিকল্প আছে, কিছু কিছু ক্ষেত্রে ব্যবহার করা যায়। মনে করুন আপনি একটি প্রোগ্রাম লিখছেন, যা প্রথমে জেনে নেবে আপনি যোগ, বিয়োগ, গুণ, ভাগের মধ্যে কোনটা করতে চান। তারপর দুটো নম্বর নিয়ে কাজটি করবে। সাধারণভাবে প্রোগ্রামটি হবে এরকম:

def get_num():
    inp = input("Input a number: ")
    try:
        return float(inp)
    except:
        print("Invalid Number")
        get_num()

def add(num1, num2):
    return num1 + num2

def subtract(num1, num2):
    return num1 - num2

def multiply(num1, num2):
    return num1 * num2

def divide(num1, num2):
    return num1 / num2

def calculator():
    inp = input("What do you want to do?\n").lower()

    if inp == 'add':
        print(add(get_num(), get_num()))
    elif inp == 'subtract':
        print(subtract(get_num(), get_num()))
    if inp == 'multipy':
        print(multiply(get_num(), get_num()))
    if inp == 'divide':
        print(divide(get_num(), get_num()))
    else:
        print("Unknown Operation.")

যারা মোটামুটি ভালোমানের টেক্সট এডিটর(Vim, Emacs, Atom, Sublime etc.) ব্যবহার করে আসছেন তারা ফাইল(file) ও বাফার(buffer) এর মধ্যে পার্থক্য জানেন। বাফার হচ্ছে সহজ কথায় মেমরিতে লোড করা ফাইল। পাইথনে এমন বাফার হিসেবে ব্যবহার করা যায় বিল্ট-ইন io লাইব্রেরির BytesIO, StringIO এবং RawIO মেথডগুলি। এখন প্রশ্ন হচ্ছে কখন ব্যবহার করবো? তখনই ব্যবহার করবো যখন আমার একখণ্ড ডাটা প্রয়োজন যা ফাইলের মত আচরণ করবে। অর্থাৎ একটা file object চাই ফাইল ছাড়াই। মনে করুন আমরা একটা QRCode Generator বানাচ্ছি। আসলে বেশ কয়েকটা QRCode generator library আছে ইতমধ্যে। আমাদের যা প্রয়োজন তা হচ্ছে আমরা QRCode-টিকে একটা 1.91:1 অনুপাতের ব্যাকগ্রাউন্ডের মাঝখানে রাখবো। সাধারনভাবে আমরা যা করতে পারি তা হচ্ছে একটা QRCode ছবি তৈরী করবো, তারপর PIL লাইব্রেরি দিয়ে একটি ব্যাকগ্রাউন্ড তৈরী করে তার ওপর আগের বানানো ছবি থেকে রিড করে বসিয়ে দেবো। এক্ষেত্রে আসলে দুটো ফাইল তৈরী হবে যার একটি অপ্রয়োজনীয়।

And then… IO steps in to save the day… :smile:


গ্নু ইশতেহার1 রিচার্ড স্টলম্যান লিখেছিলেন ১৯৮৫ সালের দিকে, গ্নু অপারেটিং সিস্টেম নির্মাণে সাহায্য চাইতে। এই লেখার কিছু অংশ ১৯৮৩ সালের মূল ঘোষণা থেকে নেওয়া। ১৯৮৭ সাল পর্যন্ত ছোটখাট সম্পাদনা করা হয়েছে, তারপর এটিকে অপরিবর্তিত রাখার সিদ্ধান্ত নেওয়া হয়।

সেইসময় থেকেই, আমরা লক্ষ্য করি সঠিক শব্দের ব্যবহার কিছু সাধারণ ভুল বোঝাবুঝির অবসান ঘটাতে পারে। সেসবক্ষেত্রে ১৯৯৩ সাল থেকে পাদটীকা যুক্ত করা হচ্ছে।

আপনি যদি গ্নু/লিনাক্স সিস্টেম ইন্সটল করতে চান, আমাদের মতে শতভাগ মুক্ত গ্নু/লিনাক্স ডিস্ট্রিবিউশন ব্যবহার শ্রেয়। আর সাহায্য করতে এখানে দেখুন: http://www.gnu.org/distros

গ্নু প্রকল্প মুক্ত সফটওয়্যার আন্দোলনের2 একটি অংশ। গ্নু-কে “ওপেন সোর্স” এর সাথে সম্পৃক্ত করা ভ্রান্তিজনক, ১৯৯৮ সাল থেকে যারা মুক্ত সফটওয়্যার আন্দোলনের নীতির সাথে একমত নন তারা “ওপেন সোর্স” শব্দটি দিয়ে একইক্ষেত্রের নীতিবিবর্জিত পদ্ধতির কথা বলে।

  1. মূল: http://www.gnu.org/gnu/manifesto.en.html 

  2. সফটওয়্যার ব্যবহারকারীর স্বাধীনতা-কে প্রাধান্য দিয়ে একটি আন্দোলন। - অনুবাদক