Computer Networks

লিনিয়ার সার্চ এলগোরিদম

#পাইথনে ইমপ্লিমেন্টেশনঃ

লিনিয়ার সার্চ এলগোরিদম সবচেয়ে সহজ একটা এলগোরিদম । প্রথমে আমাদের একটা এরে/লিস্ট থাকবে। তারপর আমরা এই লিস্ট এর মধ্যে থেকে যে কোন একটা আইটেম খুঁজবো। এই খোঁজার সিস্টেম টা কেমন হবে? মানে আমরা কিভাবে খুঁজবো?  আমরা সিকুয়েন্সিয়েলি খুঁজবো একটা একটা করে আইটেমকে চেক করে। যদি আমরা আমাদের কাঙ্ক্ষিত আইটেমকে পেয়ে যাই তাহলে আমরা খোঁজা বন্ধ করে দিবো।এবং সেই  কাঙ্ক্ষিত আইটেমকে রিটার্ন/প্রিন্ট করবো। আর যদি না পাই তাহলে বলে দিবো যে আইটেম খুঁজে পাওয়া যায় নি ।

Linear Search Animation

উপরের ছবিটা ভালো করে খেয়াল করো। আশা করি এখন বুঝতে পেরেছ। এখনো না বুঝলে সমস্যা নাই। কোড ইমপ্লিমেন্ট করলে ক্লিয়ারলি বুঝবা ।

list=[2,3,5,7,8,10]
print("The list is : ",list)

প্রথমে আমরা একটা লিস্ট ডিক্লেয়ার করলাম। এতে আইটেম আছে ৬ টা । এবং এই লিস্ট টাকে প্রিন্ট করলাম।

i=flag=0

এবার আমরা দুইটা ভেরিয়েবল ডিক্লেয়ার করলাম। এই দুইটা ভেরিয়েবলই আমাদের while লুপের জন্য কাজে লাগবে। ইনিশিয়ালি দুটাকেই শুন্য করে রাখলাম।

a=int(input("Enter the item you want to search : "))

এখন আমরা যেই আইটেম টাকে খুঁজবো অইটা ইনপুট দিবো।

while i<len(list):
    if a==list[i]:

        flag=1
        break
    i=i+1

এইখানে আমরা while loop ব্যাবহার করলাম। যখন i =(0) এর ভেলু  len(list)=(6) এর ছোট তখন যদি আমার ইনপুট এবং লিস্ট আইটেম টা মিলে যায় তাহলে flag=1 হবে(মানে আমরা আইটেমকে পেয়ে গেছি) এবং লুপ   break করবে। flag=1 এর জন্য আমরা নিচে কোড লিখব। এখন আমরা যদি আমাদের কাঙ্ক্ষিত আইটেমকে না খুঁজে পাই তাহলে i এর ভেলু এক এক করে ভাড়াব । এবং সেটাকে লুপে পুনরায় পাঠাব আবার চেক করার জন্য । এভাবেই লুপ চলতে থাকবে। যখন i এর ভেলু en(list) এর সমান হবে তখন লুপ ব্রেক করবে। তার মানে আমাদের সবগুলা আইটেম চেক করা শেষ।

if flag==1:
    print("Your item is in ",i+1,"th Position")
else:
    print("Sorry! your item isn't exit here.")

এখানে  flag==1 হলে , মানে আমাদের আইটেম কে খুঁজে পেলে এখানে প্রিন্ট করে দেখাব।আর যদি না পাই তাহলেও বলে দিবো যে আইটেম খুঁজে পাওয়া যায় নি ।

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

 

 

linear.PNG

গিঁটহাবে এই প্রোগ্রাম এর সোর্স কোড পাওয়া যাবে ঃ  https://github.com/Revel109/Linear-Search-Algorithm—————————

আর বুঝতে কোন সমস্যা হলে মেসেজঃ https://www.facebook.com/RevelYusuf

 

যারা “সি” তে ইমপ্লিমেন্ট করতে চাও, হাসান ভাইয়ের  সাইটে  অনেক ভালো ভাবে বুঝানো হয়েছে ঃ  http://hellohasan.com/2016/10/14/%E0%A6%B2%E0%A6%BF%E0%A6%A8%E0%A6%BF%E0%A7%9F%E0%A6%BE%E0%A6%B0-%E0%A6%B8%E0%A6%BE%E0%A6%B0%E0%A7%8D%E0%A6%9A-linear-search-algorithm/

 

 

 

Uncategorized

About Me

11

Hello,

This is Revel Yusuf, from dhaka, Bangladesh.I am Currently studying  in B.S Information and Communications Technology at Bangladesh University of Professionals as 3rd year Student .

Python is my Passion,my dream,my fantasy.I passing my maximum time by writing Python scripts and solving the online judge problems.I wanna build my carrier on Python. I know some basic Programming languages also like C,C++,Java,JavaScript,html,css etc.

Now I am busy with Django Projects.I did learn Django from 6 months ago.Now I am doing some opensource Django Projects from GitHub.I wanna be a good web developer.

This is All about me 🙂 .

Contact Me

revelyusuf.blogspot.com

Facebook_id

gmail_account

Uncategorized

বাইনারি সার্চ অ্যালগরিদম – Binary Search Algorithm

binary search.jpg

#বাইনারি সার্চ অ্যালগরিদম – Binary Search Algorithm ইমপ্লিমেন্টেশন ইন পাইথন ঃ

লিনিয়ার সার্চ অ্যালগরিদমে আমারা দেখেছি কিভাবে  একটা লিস্ট থেকে   একটা একটা   করে  ইলিমেন্ট গুলোকে সিকুয়েন্সিয়েলি চেক করে কাঙ্ক্ষিত আইটেমকে খুঁজে বের করা যায়। কিন্তু এই পদ্ধতিতে আইটেমকে খুঁজে বের করা অনেক কমপ্লেক্স হয়ে যায়। ৫/১০/২০ টা লিস্টের আইটেম হয়ত  খুব সহজে খুঁজে বের করা যাবে কিন্তু আমাকে যদি ১০০০টা আইটেম দিয়ে এখান থেকে যেকোনো একটা আইটেম খুঁজে বের করতে বলে তাহলে আমি যদি  লিনিয়ার সার্চ অ্যালগরিদমে সার্চ করি তাহলে আমাকে ১০০০ বার চেক করতে হবে যা আমার পক্ষে প্রায় অসম্ভব। এতে আমার প্রোগ্রাম কমপ্লিক্সিটি অনেক বেড়ে যাবে । আর  এই  কমপ্লিক্সিটি কমানোর জন্যই আমাদের  বাইনারি সার্চ অ্যালগরিদম পদ্ধতি অনুসরণ করা ।

বাইনারি সার্চ অ্যালগরিদম কি? 

বাইনারি সার্চ অ্যালগরিদম হচ্ছে একটি  দ্রুত সার্চ  অ্যালগরিদম। এই  সার্চ  অ্যালগরিদম ডিভাইড  এন্ড কনকয়ের প্রসেস এর ভিত্তিতে কাজ করে। এই  অ্যালগরিদম তখনি কাজ করবে যখন কোন লিস্ট/এরে সরটেড/সাজানো  আকারে থাকবে । এর  কমপ্লিক্সিটি হচ্ছে  Ο(log n) যা লিনিয়ার সার্চ অ্যালগরিদমের কমপ্লিক্সিটির  O(n) এর চেয়ে অনেক ইফিসিয়েন্ট ।

একটা লিস্টকে বাইনারি সার্চ তিনটা পার্ট এ  ভাগ করেঃ ১) Low ২)  Mid  ৩) High

binsearch

মনে করি আমাদেরকে উপরের  এই লিস্ট টা দেয়া হয়েছে এবং বলা হল এর মধ্য থেকে ১৩কে খুঁজে বের করতে। প্রথমে আমরা লিস্ট থেকে মিড বের করবো। লো আর হাই তো দেখতেই পাচ্ছি। মিড বের করার জন্যে একটা সুত্র আছে ঃ  mid = low + (high – low) / 2  তাহলে আমাদের মিড হবে ঃ মিড=০+(৭-০)/২ =৩.৫ যেহেতু  ইন্ডেক্সিং  এ  ৩.৫ বলতে কিছু নাই, তাই আমরা এখানে ৩ কেই আমাদের মিড বিবেচনা করবো ।

এখন আমরা এই মিডের আইটেমের সাথে আমাদের ১৩(খুজতে চাচ্ছি) এর তুলনা করবো। যেহেতু ১৩>৭ তাই আমরা এখন মিড এর ডান দিকের অংশে খুঁজবো। বামদিক আর খুজতে হবে না কারন আমরা এখন নিশ্চিত যে বাম দিকে আমাদের ১৩ থাকতে পারে না।

এবার আবার আমরা  মিড আইটেম(৭) কে বাদ দিবো কারন ৭<১৩। এবং ইনডেক্স ৪ থেকে ৭  এর মধ্যে আমাদের আইটেম কে খুঁজবো।  এখন আমরা চিন্তা করি যে ৪  আমাদের low আর ৭ আমাদের high তাহলে আমাদের মিড হবে ঃ মিড = ৪+(৭-৪)/২= ৫.৫ মানে ৫ নাম্বার ইনডেক্স  ই হবে  আমাদের মিড। এখন আমরা আমদের মিডের ভেলুর  সাথে আমাদের আইটেম এর তুলনা করবো। যদি সমান হয় তাহলে তার ইনডেক্স নাম্বার রিটার্ন করবো। এখানে আমাদের মিড ভেলু =আমাদের আইটেম। তাহলে আমরা এখন মিড এর ইনডেক্সকে রিটার্ন করবো। তারমানে আমরা ১৩কে খুঁজে পেয়েছি ৫ নাম্বার ইনডেক্স এ । এখন আমাদের প্রোগ্রাম এই ইনডেক্স নাম্বারকেই প্রিন্ট করে দেখাবে। তাহলেই আমাদের কাজ শেষ। বিঃদ্রঃ কেউ আবার ইনডেক্স আর আইটেম এর মধ্যে গোলমাল পাকিয়ে ফেলোনা। তাইলে ভুল হবে সিউর।

বাইনারি সার্চ আর লিনিয়ার সার্চ এর মধ্যে কম্পারিজন টা দেখতে পারো  ঃ

Binary Search and Linear Search comparison

এখন আশা করি সহজেই বুঝতে পারতেসো যে কেনো আমরা বাইনারি সার্চ অ্যালগরিদম ব্যাবহার করবো।

কোড ইমপ্লিমেন্টেশনঃ 

তুমি যদি থিউরিটা ভালভাবে বুঝতে পারো তাহলে কোড ইমপ্লিমেন্ট করাটা বেশি যামেলার মনে হবে না।সহজেই পারবা।

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Uncategorized

পাইথন প্রোগ্রামিং এর ইতিহাস !

python2

পাইথন (Python) একটি বস্তু-সংশ্লিষ্ট (object-oriented) উচ্চস্তরের প্রোগ্রামিং ভাষা। ১৯৯১ সালে গুইডো ভ্যান রস্যিউম এটি প্রথম প্রকাশ করেন। পাইথন নির্মাণ করার সময় প্রোগ্রামের পঠনযোগ্যতার উপর বেশি গুরুত্ব দেয়া হয়েছে। এখানে প্রোগ্রামারের পরিশ্রমকে কম্পিউটারের চেয়ে বেশি গুরুত্ব দেয়া হয়েছে। পাইথনের কোর সিনট্যাক্স ও সেমান্টিক্‌স খুবই সংক্ষিপ্ত, তবে ভাষাটির স্ট্যান্ডার্ড লাইব্রেরি অনেক সমৃদ্ধ। পাইথন প্রোগ্রামারদের সমাজ থেকে পাইথন দর্শন এর সূচনা হয়েছে।

পাইথন একটি বহু-প্যারাডাইম প্রোগ্রামিং ভাষা (ফাংশন-ভিত্তিক, বস্তু-সংশ্লিষ্ট ও নির্দেশমূলক) এবং এটি একটি পুরোপুরি চলমান প্রোগ্রামিং ভাষা যার স্বনিয়ন্ত্রিত মেমরি ব্যবস্থাপনা রয়েছে। এদিক থেকে এটি পার্ল, রুবি প্রভৃতি প্রোগ্রামিং ভাষার মত।

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

ইতিহাসঃ 

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

১৯৯১ সালে ভ্যান রস্যিউম পাইথনের কোড প্রকাশ করেন (ভার্শন ০.৯.০)। পাইথন ডিজাইনের এই ধাপেই ক্লাস ইনহেরিটেন্স, এক্সেপশন হ্যান্ডলিং, ফাংশন, ও প্রধান ডাটা টাইপ list, dict, str প্রভৃতি সংযুক্ত ছিল। এই প্রাথমিক প্রকাশে ছিল মডুলা-৩ থেকে ধার করা মডিউল সিস্টেম; ভ্যান রোসাম এই মডিউলকে “পাইথনের মূল প্রোগ্রামিং ইউনিটের একটি” আখ্যায়িত করেছেন। পাইথনের এক্সেপশন মডেলটিও অনেকটা মডুলা-৩’র মত যাতে কেবল অতিরিক্ত else যুক্ত হয়েছে। ১৯৯৪ সালে পাইথনের প্রধান ফোরাম comp.lang.python গঠিত হয়, এবং পাইথনের ব্যবহারকারীদের জন্য তা মাইলফলক হিসেবে চিহ্নিত হয়।

১৯৯৪ সালের জানুয়ারি পাইথন ১.০ সংস্করনে প্রবেশ করে। এই সংস্করনে যে প্রধান বিষয়াদি যুক্ত হয় তা হলো ফাংশনাল প্রোগ্রামিং টুলস lambda, map, filterreduce। ভ্যান রস্যিউম বলেন “পাইথন lambda, reduce(), filter() ও map() অধিকার করেছে, (আমি বিশ্বাস করি) একজন লিস্প হ্যাকারের কাছ থেকে যে নিজেকে এগুলো থেকে বঞ্চিত মনে করছিল এবং কর্মক্ষম প্যাচগুলো সরবরাহ করেছে।” এর প্রধান অবদানকারী ছিলেন অমৃত প্রেম; এবং এর প্রকাশ নোটে সে সময় কোন লিস্প প্রোগ্রামের উত্তরসূরী হওয়ার উল্লেখ করা হয়নি।

সিডব্লিউআই থেকে প্রকাশিত সর্বশেষ সংস্করন হচ্ছে পাইথন ১.২। ১৯৯৫ সালে ভ্যান রস্যিউম ভার্জিনিয়ার কর্পোরেশন ফর ন্যাশনাল রিসার্চ ইনিশিয়েটিভস (সিএনআরআই) প্রতিষ্ঠান থেকে পাইথনের ওপর তার কাজ চালিয়ে যেতে থাকেন এবং এখান থেকে সফটওয়ারটির কয়েকটি সংস্করন বের করেন।

১.৪ সংস্করনের মধ্যে পাইথনের কিছু নতুন বৈশিষ্ঠ্য যোগ করা হয়। এর মধ্যে উল্লেখযোগ্য হলো মডুলা-৩ থেকে উদ্বুদ্ধ হয়ে গ্রহণ করা নতুন কিওয়ার্ড আর্গুমেন্ট (keyword argument) (যা কমন লিস্প এর কিওয়ার্ড আর্গুমেন্টের সাথে অনেকটা মেলে), এবং জটিল সংখ্যার জন্য অভ্যন্তরীন সমর্থন। এছাড়া তথ্য লুকানোর জন্যও একটি বিশেষ ব্যবস্থা ছিল, যদিও তা তেমন কঠিন কিছু ছিলনা।

সিএনআরআই তে থাকাকালীন ভ্যান রস্যিউম কম্পিউটার প্রোগ্রামিং ফর এভরিবডি (সিপি৪ই) উদ্যোগ গ্রহণ করেন, যাতে আরো অনেক মানুষ কম্পিউটার প্রোগ্রামিং এর সুবিধা গ্রহণ এবং অল্প মৌলিক প্রোগ্রামিং জ্ঞানের (ইংরেজি ও গণিতের জন্য সাধারণ যে জ্ঞান থাকা প্রয়োজন) মাধ্যমে ছোটখাট সমস্যা সমাধান করতে পারে। পাইথন এক্ষেত্রে কেন্দ্রীয় ভূমিকা পালন করেছে যার মূল কারণঃ এর পরিষ্কার সিনট্যাক্সের প্রতি মনোযোগ, এর ব্যবহার উপযোগিতা এবং সিপি৪ই এর লক্ষ্যের সাথে পাইথনের পূর্বসূরী এবিসির লক্ষ্যের মিল। এই প্রকল্পের অর্থায়ন করে DARPA।এই ২০০৭ সাল পর্যন্ত সিপি৪ই প্রকল্প নিস্ক্রিয় রয়েছে এবং অন্যদিকে পাইথন সাধারণ মানুষের জন্য সহজে শিখার মত প্রোগ্রামিং ভাষা তৈরির লক্ষ্য থেকে অনেকটাই দূরে সরে গেছে। এটা এখন আর পাইথনের জন্য সক্রিয় বিবেচ্য নয়।

২০০০ সালে পাইথনের মূল উন্নয়নকারী দল বিওপেন.কম এর সাথে যুক্ত হয়ে যৌথভাবে বিওপেন পাইথনল্যাবস গঠন করে। সিএনআরআই পাইথনের একটি সংস্করন ১.৬ প্রকাশের অনুরোধ করেছিল যা মূলত এ পর্যন্ত সিএনআরআইতে পাইথনের যেটুকু উন্নয়ন হয়েছে তার সম্মিলিত প্রকাশ। একারণে পাইথনের ১.৬ ও ২.০ সংস্করনের মধ্যে অনেক বিলম্ব ঘটেছিল। পাইথন ২.০ ছিল বিওপেন.কম থেকে প্রকাশিত প্রথম ও একমাত্র পাইথন ডিস্ট্রিবিউশন। পাইথন ২.০ প্রকাশিত হওয়ার পর গুইডো ভ্যান রোসাম ও অন্যান্য পাইথনল্যাবস কর্মীরা ডিজিটাল ক্রিয়েশন্‌স এ যোগ দেন।

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

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

পাইথন ১.৬.১ আসলে শুধুই পাইথন ১.৬ যাতে কিছুটা ত্রুটি মুক্ত করা হয়েছে এবং নতুন জিপিএল-সঙ্গতিপূর্ণ লাইসেন্স রয়েছে।

সিনট্যাক্স বর্ণায়িত পাইথন কোড

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

পাইথন ২.২ এর একটি প্রধান উদ্ভাবন হচ্ছে পাইথনের বিভিন্ন টাইপ (সি তে লেখা টাইপসমূহ) ও ক্লাসের (পাইথনে লেখা টাইপসমূহ) একই গঠনের আওতায় নিয়ে আসা। এর ফলে পাইথনের অবজেক্ট মডেল অনেক স্থিতিশীল ও প্রকৃত অবজেক্ট ওরিয়েন্টেড হয়েছে।এতে আরও যুক্ত করা হয়েছে জেনারেটর যেটি আইকন নামে একটি ভাষায় প্রথম ব্যবহৃত হয়েছে।

পাইথনের স্ট্যান্ডার্ড লাইব্রেরি ও সিনট্যাক্টিক্যাল ব্যবহার জাভা থেকে অনুপ্রাণিত হয়েছে। কোন কোন ক্ষেত্রে যেমনঃ logging প্যাকেজ, যা যুক্ত হয় ২.৩ ভার্সনে,স্যাক্স পার্সার যা ২.০ সংস্করনে যুক্ত হয় এবং ডেকোরেটর সিনট্যাক্স যা @ ব্যবহার করে এবং ২.৪ সংস্করনে যুক্ত হয়added in version 2.4ইত্যাদি।

ব্যবহারঃ 

geekswipe-python-twitter-bot-source-photo-by-karthikeyan-kc

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

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

 

ইন্‌ডেন্‌টেশনঃ

পাইথন কোডের একটি ব্লক বোঝাতে ব্রাকেট বা কীওয়ার্ডের পরিবর্তে হোয়াইটস্পেস ইন্‌ডেন্‌টেশন ব্যবহার করে। এই ব্যবস্থাটিকে অফ-সাইড নিয়ম বলা হয়। কোন একটি ব্লক বোঝাতে ইন্‌ডেন্‌টেশন বেশি করা হয়। আবার চলতি ব্লক শেষ বোঝাতে কম ইন্‌ডেন্‌টেশন করা হয়।

স্টেট্‌মেন্ট এবং কন্ট্রোল ফ্লোঃ

পাইথনে যেসব স্টেট্‌মেন্ট আছে তার মধ্যে অন্যতম হল-

  • if স্টেট্‌মেন্ট যা else এবং elif (else if এর সংক্ষিপ্ত রূপ) এর সাথে কোডের একটি ব্লক শর্তের উপর ভিত্তি করে এক্সিকিউট করে।
  • while স্টেট্‌মেন্ট যা কোডের একটি ব্লক এক্সিকিউট করে যতক্ষণ পর্যন্ত এর শর্ত পূরণ হতে থাকে।
  • def স্টেট্‌মেন্ট যা একটি ফাংশন অথবা মেথড লেখার জন্য ব্যবহৃত হয়।
  • yeild স্টেট্‌মেন্ট যা একটি জেনারেটর ফাংশন থেকে মান পাঠায়। পাইথন ২.৫ থেকে yield কে অপারেটর এর মধ্যেও অন্তর্ভুক্ত করা হয়েছে। এটি করা হয়েছে মূলত কোরুটিন বাস্তবায়নের জন্য।

অন্যান্য সুবিধাদিঃ 

CPython’s interactive mode, used via IDLE

পাইথনের নিজস্ব বহু মডিউল ও লাইব্রেরি থাকা সত্বেও বিশেষ ধরনের কাজের জন্য বিশেষভাবে তৈরি বিভিন্ন প্যাকেজ পাওয়া যায়। যেমনঃ বায়োইনফর্মেটিক্স বিষয়ক কাজের জন্য রয়েছে BioPython, গ্রাফিকেল ইন্টারফেস প্রোগ্রামিং এর জন্য PyGTK, ইমেজ প্রসেসিং এর জন্য OpenCVইত্যাদি।

 

 

Uncategorized

এখন পুলিশ ক্লিয়ারেন্স সনদ পাওয়া যাবে অনলাইনে

police-ict-news.jpg

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

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

স্বরাষ্ট্রমন্ত্রী বলেন, অনলাইন পুলিশ ক্লিয়ারেন্স চালুর ফলে সেবাপ্রত্যাশী জনগণের অর্থ ও সময় সাশ্রয় হবে। তাঁরা হয়রানির শিকার হবেন না। এতে পুলিশের কাজের স্বচ্ছতা ও জবাবদিহি নিশ্চিত হবে।

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

নতুন এই কার্যক্রম সম্পর্কে অনুষ্ঠানে জানানো হয়, বিদেশগামী বা বিদেশে বসবাসকারী বাংলাদেশি নাগরিকেরা দেশে বা দেশের বাইরে যেকোনো জায়গায় pcc.police.gov.bd ঠিকানায় অথবা বাংলাদেশ পুলিশের ওয়েবসাইটে (www.police.gov.bd) গিয়ে পুলিশ ক্লিয়ারেন্স মেন্যুতে ক্লিক করে অনলাইনে আবেদন করতে পারবেন। আবেদনের সঙ্গে প্রয়োজনীয় কাগজপত্র ও সরকারি ফি পরিশোধের চালান স্ক্যান করে আপলোড করতে হবে। আবেদনের জন্য আবেদনকারীর ব্যক্তিগতভাবে থানায় যাওয়ার প্রয়োজন হবে না।

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

এই অনলাইন সনদের আরেকটি বৈশিষ্ট্য হলো, এটিতে একটি কিউআর কোড প্রিন্ট করা থাকে। যেকোনো স্মার্টফোন থেকে কিউআর কোড স্ক্যানার অ্যাপ ব্যবহার করে কোডটি স্ক্যান করলে ইস্যু হওয়া সনদের একটি অনলাইন লিংক পাওয়া যাবে। লিংক থেকে একটি অবিকল ডিজিটাল কপি পাওয়া যাবে। ফলে এই সনদ জাল হওয়ার কোনো আশঙ্কা থাকবে না এবং যেকোনো বিদেশি মিশন অনলাইনে এটা যাচাই করতে পারবে।

Uncategorized

অ্যাসেম্বলি ল্যাঙ্গুয়েজ / যান্ত্রিক ভাষা

asm_program_hello_world

 বিস্তারিতঃ

কম্পিউটার বিজ্ঞানে অ্যাসেম্বলি   ল্যাঙ্গুয়েজ/যান্ত্রিক ভাষা (ইংরেজি: Machine code বা machine language) হচ্ছে এক ধরনের নিম্ন-স্তরের প্রোগ্রামিং ভাষা যা কোন কম্পিউটারের কেন্দ্রীয় প্রক্রিয়াকরণ ইউনিট বা সিপিইউ সরাসরি বুঝতে পারে। যান্ত্রিক ভাষা দ্বিমিক বা বাইনারি কোডে লেখা হয়, অর্থাৎ ০ ও ১-এর সমন্বয়ে যান্ত্রিক ভাষার বিভিন্ন নির্দেশগুলি লেখা হয়। এই নির্দেশগুলি কী হবে তা সিপিইউ-এর প্রস্তুতকারক কোম্পানি ও মডেলের উপর নির্ভর করে, যেমন- এএমডি প্রসেসরের জন্য যান্ত্রিক ভাষা ইন্টেল প্রসেসরের যান্ত্রিক ভাষার চেয়ে আলাদা।

যান্ত্রিক ভাষায় প্রোগ্রাম লেখা অত্যন্ত দুরূহ। প্রোগ্রামারকে প্রতিটি বিটের হিসাব রাখতে হয়। কেবল ০ ও ১-এ লেখা বলে প্রোগ্রামের ভুলত্রুটি ধরতেও অসুবিধা হয়। মার্কিন গণিতবিদ গ্রেস মারি হপার ১৯৫২ সালে এই সমস্যাগুলি দূর করার লক্ষ্যে অ্যাসেম্বলি ভাষা উদ্ভাবন করেন। অ্যাসেম্বলি ভাষা থেকে যান্ত্রিক ভাষায় অনুবাদের জন্য বিশেষ ধরনের অনুবাদক প্রোগ্রাম ব্যবহার করা হয়, যাদের নাম দেয়া হয়েছে অ্যাসেম্বলার। অ্যাসেম্বিলি ভাষায় যান্ত্রিক ভাষার কিছু কিছু নির্দেশ বাইনারী সংখ্যায় প্যদারে বদলে সরাসরি ইঙরেজী ভাষায় প্রদান করা হত যেমন যোগ করার নির্দেশ প্রদান করতে হলে যান্ত্রিক ভাষায় 100010 লিখতে হত কিন্তু অ্যাসেম্বলি ভাষায় সরাসরি ADD লিখলেই চলত ।

বাইনারী সংখ্যা অর্থাৎ শুধুমাত্র 0 এবং 1 এর মাধ্যমে রচিত যে কম্পিউটার প্রোগ্রাম সরাসরি প্রথম প্রজন্মের ভাষা বলতে যান্ত্রিক ভাষাকে বোঝানো হয়। সেন্ট্রাল প্রসেসিং ইউনিট কর্তৃক নির্বাহিত হতে পারে তাকে যান্ত্রিক ভাষা বলে। কম্পিউটারে মৌলিক ভাষা বলতেই যান্ত্রিক ভাষাকে বোঝানো হয়। কম্পিউটারকে প্রদত্ত যে কোন নির্দেশনা যান্ত্রিক ভাষায় পরিবর্তন ব্যতীত নির্বাহ সম্ভব নয়। এ প্রেক্ষিতে এসেম্বলী ভাষা অথবা যে কোন উচ্চতর ভাষায় রচিত কম্পিউটার প্রোগ্রাম যান্ত্রিক ভাষায় রূপান্তরিত হবার মাধ্যমেই নির্বাহ করা হয়। যান্ত্রিক ভাষায় রচিত প্রোগ্রামকে অবজেক্ট প্রোগ্রাম (Object Program) এবং অন্যভাষায় রচিত প্রোগ্রামকে উৎস প্রোগ্রাম (Source Program) বলা হয়। কম্পিউটারের প্রোগ্রামিং ভাষার সূচনাতে বাইনারী কোডের মাধ্যমে এই যান্ত্রিক ভাষায় কম্পিউটারকে নির্দেশনা প্রদান করা হলেও এই প্রক্রিয়াটি ছিলো অত্যন্ত কষ্টকর, সময়সাপেক্ষ, ও ত্রুটিপূর্ণ। বাইনারী সংখ্যা মনে রাখা যেহেতু অনেকটা অসম্ভব, সেহেতু প্রোগ্রামিং এর ত্রুটির সম্ভাবনাও বেশি ছিল এবং ত্রুটি সনাক্তকরণও ছিলো অসম্ভব। মেশিন ভাষা এবং এসেম্বলী ভাষা যন্ত্রনির্ভর। অর্থাৎ, এক কোম্পানির কম্পিউটারের জন্য মেশিন ভাষা বা মেশিন নির্দেশ ও এসেম্বলী নির্দেশ এক নাও হতে পারে। উদাহরণস্বরূপ মেশিন কোড 00000101 দ্বারা সিপিইউ এর নামের প্রসেসর রেজিস্টার এর মান একক হ্রাস করার নির্দেশনা প্রদান করা হয়, যেটি এসেম্বলী ভাষায় DEC B নির্দেশের মাধ্যমে নির্দেশিত হয়। সাধারণত যান্ত্রিক ভাষার নির্দেশ অপারেশন কোড ফিল্ড, J-type (jump), I-type (immediate), R-type (register) এবং function এর সমন্বয়ে গঠিত হতে পারে। MIPS (32 Bit) আর্কিটেকচার অনুযায়ী register 1 এবং register 2 এ বিদ্যমান মান যোগ করে register 6 এ স্থাপনের জন্য মেশিন ভাষায় 000000 00001 00010 00110 00000 100000 নির্দেশ ব্যবহৃত হয়। রেজিস্টার register 3 এ যে মান বিদ্যমান রয়েছে সেটি থেকে থেকে 68 মেমরী সেল (Memory Cell) দূরতে বিদ্যমান মেমরী সেলে রক্ষিত মানটিকে register 8 এ load (সঞ্চালন) করার জন্য মেশিন ভাষায় 100011 00011 01000 00000 00001 000100 নির্দেশ প্রদান করা হয়। মেমরীর 1024 এড্রেসে Jump করার জন্য ব্যবহৃত মেশিন কোড হল 000010 00000 00000 00000 10000 000000। মেশিন ভাষা এবং এসেম্বলী ভাষায় প্রদত্ত নির্দেশগুলিকে মূলত চারটি ভাগে ভাগ করা যায়-

  • গাণিতিক নির্দেশ (Arithmetic Instructions) – যেমন, যোগ (Addition/Summation), বিয়োগ (Subtraction), গুণ (Multiplication), ভাগ (Division)
  • নিয়ন্ত্রণমূলক নির্দেশ (Control Instructions) – যেমন, লোড (Load), স্টোর (Store) ও জাম্প (Jump)
  • ইনপুট-আউটপুট নির্দেশ (Input-Output Instructions) – যেমন পড় (Read), লেখ (Write)
  • প্রত্যক্ষ/সরাসরি ব্যবহারমূলক নির্দেশ (Direct Use/Instructions) – যেমন শুরু করা (Start), স্থগিত করা (Halt), সমাপ্ত করা (End) ইত্যাদি।

যান্ত্রিক ভাষার সুবিধা:

  • যেহেতু কম্পিউটার শুধুমাত্র বাইনারী ভাষা বোঝে এবং বাইনারী নির্দেশ সরাসরি নির্বাহ করতে পারে সেজন্য মেশিন ভাষায় রচিত প্রোগ্রাম নির্বাহ সর্বাপেক্ষা দ্রুত।
  • সরাসরি বাইনারীতে লিখিত হওয়ায় মেশিন ভাষায় রচিত প্রোগ্রামের জন্য কোনরূপ পৃথক অনুবাদক (Compiler/Interpreter) প্রয়োজন হয় না।
  • যান্ত্রিক ভাষায় রচিত প্রোগ্রাম সরাসরি বাইনারীতে রচিত হওয়ায় এটি সংরক্ষণে যেমন স্বল্প মেমরী প্রয়োজন তেমনি এটির জন্য পৃথক কোন অনুবাদকের প্রয়োজন না থাকার প্রেক্ষিতে অতিরিক্ত কোন স্মৃতির প্রয়োজন হয় না।
  • কম্পিউটার সিস্টেমের ইলেকট্রনিক সংগঠনের সাথে একমাত্র যান্ত্রিক ভাষা সরাসরি সংযোগ স্থাপন করে বলে কম্পিউটার সিস্টেমের নবতর উদ্ভাবনের ও উৎকর্ষতার জন্য যান্ত্রিক ভাষা অপরিহার্য।
  • কম্পিউটার সিস্টেমের সাথে এর peripheral systems এর সংযোগ বিধানের জন্য যান্ত্রিক ভাষা অত্যাবশ্যকীয়।

যান্ত্রিক ভাষার অসুবিধা/সীমাবদ্ধতা

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

প্রোগ্রামিং এর ইতিকথা

c-prog

 

স্বাগতম সবাইকে !!

সিএসই,আইটি,আইসিটি স্টুডেন্টদের জন্য ঃ

বছরের শুরুতে সবার মধেই একটা কিউরিসিটি থাকে প্রোগ্রামিং নিয়ে।এক/দুই সপ্তাহ পর আর সেটা খুব কম মানুষ বাদে সবাই ভুলে যায়। প্রোগ্রামিং এর নাম শুনলেই বিরক্তি লাগে।কেন যে এই সাবজেক্ট এ ভর্তি হলাম।ধুর্‌…………  😦
এটা অনেকটা ভার্সিটির আর বাকিটা টিচার/সিনিওর দের উপর নির্ভর করে। এটা কেন বললাম সেটা কয়েকটা ভার্সিটির(sust,buet,ju,du) উপর গবেষণা করলেই বুঝবেন। তারা কেন ভালো,কেন এতো নাম করতেসে,কে তাদেরকে সাপোর্ট দিচ্ছে এইসব বুঝতে পারবেন।
যাক, কাজের কথায় আসি।যাদের মধ্যে ৫% ও আগ্রহ আছে তাদের জন্যই আমার এইটা লিখা 🙂

অনেক ভালো ভালো ইন্সপাইরেসনাল কথাবার্তা শুইনা যখনি চিন্তা করলেন  যে না সব বাদ আজকে থেকে শুধুই প্রোগ্রামিং। কিন্তু কোনটা শিখবেন  সেইটা বুঝতেসেননা । ব্যাস ওই ৫% ইচ্ছাও শেষ। ধুর বাদ দে , প্রোগ্রামিং আমার জন্য না।সব বাদ এখন শুধু মুভি হবে ম্যান ,চিল হবে চিল ,জিবনে আছে আর কি? !!
শেষ সবকিছু  😦  😦  এই ইমো ছাড়া আপনাকে  দেয়ার মতো আর কিছু নাই আমার কাছে।
যাই হোক অনেক কস্টে ডিসিশন নিলেন  যে সি শিখবেন । কারন ভার্সিটি  তে সি শিখায় ।
প্রথম এক মাস পর বুঝলেন  যে আপনি  “হেলো ওয়ার্ল্ড” প্রিন্ট ছাড়া আর কিছুই  পারেন না। কারন টিচার কিচ্ছু শিখায় নাই। আপনি  কেন শিখতে যাবেন?
এই চিন্তা ভাবনা থাকলে প্রোগ্রামিং শুধু আপনার কাছে একটা নাউন ছাড়া আর কিছুই মনে হবে না ।

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

তাইলে আর দেরি না কইরা এখনি শুরু কর।হুম এখনি 🙂

যারা সি শিখতে চানঃ

আপনি সি ল্যাঙ্গুয়েজ শিখতে চান। বেশ ভাল কথা! তারজন্য আপনি নিচের কাজগুলো করতে পারেন:

(ক) ইংরেজিতে নাজুক হলে/বাংলায় শিখতে চাইলে: বাংলাদেশের টপ ক্লাস প্রোগ্রামার ভাই-বেরাদারদের থেকে আমি এটাই শিখেছি যে যদি ভাল প্রোগ্রামার হইতে চাও তবে ইংরেজি ভাষার আর্টিকেল পড়। 🙂

(১) আপনি ইংরেজিতে নাজুক হলে যেটা করলে সবচেয়ে ভাল হয় সেটা হল শিক্ষক ডট কম থেকে “প্রোগ্রামিং এ হাতে খড়ি” কোর্সটা এক নিঃশ্বাসে করে ফেললে। তামিম শাহরিয়ার সুবিন ভাই, মীর ওয়াসি আহমেদ ভাই ও তাহমিদ রাফি ভাইয়ের যৌথ পরিশ্রমের ফল এই কোর্সটি। সুতরাং গুরুত্ব বুঝতেই পারছেন। আপনি চাইলে কোর্স লেকচারগুলো  ডাউনলোড করে নিতে পারেন।

(২) বইয়ের নাম: Programming in ANSI C (4th Edition)

লেখক: E. Balagurusamy

রিভিউ: সি প্রোগ্রামিং শেখার জন্য এর চেয়ে সহজ, স্বাভাবিক ও সাবলীল ভাষায় লেখা আর কোন বই আছে কিনা আমার জানা নাই।

(৩) বইয়ের নাম: Let Us C (5th Edition)

লেখক: Yashwant Kanetkar

রিভিউ: প্রথমটার পর এটা আমার হট ফেভারিট। এটাও বিগিনারদের জন্য লেখা সেরা বইগুলোর একটা।

(৪) বইয়ের নাম: C The Complete Reference (4th Edition)

লেখক: Herbert Schildt

রিভিউ: হার্বার্ট শীল্ডের বইয়ের নাম শোনে নাই এমন প্রোগ্রামার পাওয়া যাবে না। এই বইটা বেশ ভাল, তবে বিগিনারদের জন্য তেমন নয়। রেফারেন্স হিসেবে বিশেষত সি এর এডভান্স লেভেলের প্রোগ্রামিং শেখার জন্য বেশ ভাল বই একটা।
(৫) বইয়ের নাম: C

লেখক: Tutorialspoint.Com

রিভিউ: TutorialsPoint এর অন্যসব টিউটোরিয়ালের মত এটাও বেশ ভাল। বিগিনারদের বেশ কাজে দেবে।

(খ)

৬।শরিফ ভাইয়ের বাংলা টিউটোরিয়াল গুলা আমার  কাছে অনেক ভালো মনে হয়েছে !!

৭।সুবিন ভাইয়ের টিউটোরিয়াল গুলাও ভালো। তবে উনার বইটা দয়া করে কেও পরবন  না । আগ্রহ হারাইয়া ফেলবেন।
https://www.youtube.com/channel/UCFsbfRphhQfPFJrwKb7s3JA

৮।অনলাইন জাজঃ
https://uva.onlinejudge.org/
https://www.urionlinejudge.com.br/judge/en/login
৯। অনলাইন কোড লেখা/কম্পাইল করার জন্য ঃ
http://ideone.com/

অনেক রিসোর্সই তো দিলাম আপনাকে। আশা করি এতে আপনার কাজ হয়ে যাবে, অন্ততপক্ষে ট্রাকে উঠে যেতে পারবেন। আর হ্যাঁ, নিয়মিত প্রাকটিস করতে কিন্তু ভুলবেন না। মোটামুটি সবকিছু আপনার আয়ত্তে এসে গেলে বিভিন্ন ওজের সমস্যাগুলো সলভ করা শুরু করুন।

আর ছোটখাট যেসব সমস্যা হবে তার জন্য আমি তো রয়েছেই আপনাদের পাশে। হ্যাপি কোডিং!!!

 

Computer Networks

মদ্যপানকারীদের জন্যে নতুন অ্যাপ!

technology-news-limon_44768

অনেকে আছেন যারা রাতে মদ্যপান করে বাসায় ফিরে মাতাল অবস্থায় যে কাউকে অবাঞ্ছিত এসএমস পাঠিয়ে দেয়। পরে দেখা যায়, এসএমএসটি এমন কারও কাছে যায় যার জন্যে নিজের বড় ধরনের ক্ষতি হওয়ার সম্ভাবনা রয়েছে।

এমন হতে পারে যে, আপনি আপনার সাবেক প্রেমিকা, অফিসের উর্ধ্বতন কর্মকর্তা বা নিজের বাবা মায়ের ফোনে কোনও অবাঞ্ছিত এসএমএস পাঠিয়েছেন। এমন মানুষকে বিপদের হাত থেকে রক্ষা করতে এবার বাজারে আসছে নতুন অ্যাপ।

নতুন এই অ্যাপে ‘ড্রাঙ্ক মোড’ থাকবে। যেটি আপনাকে মদ্যপ অবস্থায় ফোন বা এসএমএস করতে দেবে না। মদ্যপান শুরুর আগে এই মোড অন করে রাখুন। ৩ থেকে ১২ ঘণ্টা পর্যন্ত এই মোড অন রাখা যাবে।

এ সময় আপনার ফোন থেকে কল করা যাবে না। শুধু তাই নয়, এই অ্যাপস ইনস্টল করা থাকলে আপনার মদ্যপ বন্ধুদেরও খুঁজে পাওয়া যাবে। জিপিএস এর মাধ্যমে এই অ্যাপ খুঁজে নেবে আপনার সেসব বন্ধুদের যারাও আপনার মত ‘ড্রাঙ্ক মোড’ অন করে রেখেছে। আগামী বছর এই অ্যাপস চলে আসবে গুগল প্লে স্টোরে।

 

Computer Networks

Why Is Localhost’s IP Address 127.0.0.1? It’s Meaning And Use:

there_s_no_place_like_127_0_0_1_by_jokkaboler-d70v5ax

Have you wondered what is local host’s IP and 127.0.0.1 what it actually is?

If you are on Internet 24×7 you might have definitely heard or seen an IP address 127.0.0.1 during your time on the net. The geeky nerds among you might know that 127.0.0.1 points to localhost. But do you know why is localhost‘s IP address 127.0.0.1 and not something else?

The basic logic behind this address is that it is used to establish a connection to the same computer used by the end-user. Below is a detailed answer by a user on Super User forum.

How does 127.0.0.1 work? Why is it called so?

Here is a geeky answer from a techie :

127 is the last network number in a class A network with a subnet mask of 255.0.0.0127.0.0.1 is the first assignable address in the subnet. 127.0.0.0 cannot be used because that would be the wire number. But using any other numbers for the host portion should work fine and revert to using127.0.0.1. You can try it yourself by pinging 127.1.1.1 if you’d like. Why they waited until the last network number to implement this? I don’t think it’s documented.

Most developers use local host 127.0.0.1 to test their applications before actually deploying it. When you try to establish a network connection to the 127.0.0.1 loopback address, it works in the same manner as making a connection with any remote device. However, it avoids connection to the local network interface hardware.

But, why does the localhost IP address starts with 127? Well, 127 is the last network number in a class A network. It has a subnet mask of 255.0.0.0. So, the first assignable address in the subnet is 127.0.0.1.

However, if you use any other numbers from the host portions, it should work fine and revert to 127.0.0.1. So, you can ping 127.1.0.1 if you like.

You might also ask why the last network number was chosen to implement this. Well, the earliest mention of 127 as loopback dates back to November 1986 RFC 990. And, by 1981, 0 and 127 were the only reserved Class A networks.

The class A network number 127 is assigned the “loopback” function, that is, a datagram sent by a higher level protocol to a network 127 address should loop back inside the host. No datagram “sent” to a network 127 address should ever appear on any network anywhere. Even as early as September 1981 RFC 790, 0 and 127 were already reserved:
000.rrr.rrr.rrr                 Reserved                     [JBP]
...
127.rrr.rrr.rrr                 Reserved                     [JBP]

0 and 127 were the only reserved Class A networks by 1981. Out of the two available localhosts, 0 was used for pointing to a specific host and that left 127. So all developers testing their apps and websites have to use 127  for loopback. Some would also call it more sensible to choose 1.0.0.0 for loopback, but that was already given to BBC Packet Radio Network.