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

জাভা ডাটা স্ট্রাকচার নিয়ে একটি অসাধারন বই।

বইটি অনেক অসাধারন লাগছে আমার কাছে। অনেক গুলো সুন্দর সুন্দর উৎসাহ মূলক কথা দিয়ে বইটি এত সহজ ভাবে লিখছে। Duane A. Bailey যে অসাধারন একজন লেখক তা আমি দুই চ্যাপ্টার পড়েই বুঝতে পেরেছি।
আর কিচ্ছু লেখার নেই বই সম্পর্কে।
ও, ডাটা স্ট্রাকচারে দুর্বল  তারা পড়ে দেখতে পারেন। সুন্দর বর্ণনা রয়েছে :)

আপনি কেন jQuery শিখবেন


jQuery কোন প্রোগ্রামিং ল্যাঙ্গুয়েজের নাম নয় ... কেউ কেউ আবার এটাকে জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক মনে করেও ভুল করেন … jQuery জাভাস্ক্রিপ্টের কোন ফ্রেমওয়ার্কের নাম নয় … JQuery is simply a specific library of JavaScript codes nothing else ...
.
jQuery এর প্রাইমারি ফোকাস হল ডেভেলপমেন্টের টাইম স্প্যান কমানো … উদাহরণ হিসেবে, ধরা যাক, আমাদের HTML এ একটা প্যারাগ্রাফ p ট্যাগ রয়েছে যার ক্লাসের নাম dmsumon … পেইজ লোড হবার পরে DOM ম্যানিপুলেট করে তাতে একটা নতুন ক্লাস dms_selected যোগ করতে চাই …
.
.
<p class="dmsumon">If you don’t code much you’d be forgiven</p>
পেইজ লোড হবার পর তা হবে ...
<p class="dmsumon dms_selected">If you don’t code much you’d be forgiven</p>
.
.
এ কাজের জন্য আমাকে নিচের মত JS কোড লিখতে হবে …
var d = document.getElementsByClassName("dmsumon");
var i;
for (i = 0; i < d.length; i++) {
d[i].className = d[i].className + " dms_selected";
}
.
.
বেশ কঠিন তাই না ? … আর jQuery তে একই কাজ achieve করতে কোড লিখতে হবে নিচের মত …
$(".dmsumon").addClass( "dms_selected" );
.
.
৫ লাইনের কোড ১ লাইনে শেষ … তাই jQuery অনেক টাইম সেভিং … বড় প্রজেক্টের ক্ষেত্রে হয়তো বা ২০০ লাইনের জাভাস্ক্রিপ্ট কোড ১০০ এরও কম লাইনের কোড লিখতে হবে jQuery তে, ক্ষেত্র বিশেষে আরও কম ... কিনতু তার মানে এই না যে আপনি JS শিখবেন না বা jQuery is better than JS … দু' টারই সুবিধা-অসুবিধা রয়েছে ...
.
.
.
এক নজরে jQuery এর সুবিধা সমূহ 😊 …
===============================================
১) জাভাস্ক্রিপ্টের এর তুলনায় শেখা অনেক সহজ … অনেক কম সময় লাগে ...
২) ডেভেলপমেন্টের কাজ দ্রুততর করে ...
.
৩) jQuery প্লাগিন সাপোর্ট করে … ইচ্ছেমত প্লাগিন বানিয়ে নেয়া যায় বা মার্কেটে হাজার হাজার ফ্রি প্লাগিন পাওয়া যায় … যা দিয়ে খুব সহজে প্রফেশনাল কাজ করা যায় … যেমনঃ আমার অনেক প্রোজেক্টে MixItUp jQuery প্লাগিন ব্যবহার করেছি … দেখে আসতে পারেন https://goo.gl/UGveqJ
.
.
৪) jQuery এর আরেকটি সবচেয়ে বড় সুবিধা হল … jQuery has been optimized to work with a variety of browsers automatically … ক্রস ব্রাউজার সাপোর্ট jQuery এর বিশাল এক আশীর্বাদ … কারণ jQuery কে সেভাবে অপটিমাইজড করেই ডেভেলপ করা হয়েছে …
.
.
একটা জাভাস্ক্রিপ্টের কোড স্ট্যাক ক্রস ব্রাউজার compatible করতে যথেষ্ট পরিশ্রম দিতে হবে … অনেক সময় তা মাথা ব্যথার কারণও হতে পারে …
হয়তো দেখা গেল কোড Mozilla তে ঠিকঠাক মত কাজ করছে কিনতু IE বা Chrome এ করছে না, বেশ ঝামেলা করছে ... অন্যদিকে jQuery এই ঝামেলা মুক্ত … আপনার সেই টেনশন কমিয়ে দেবে ৯৯% …
.
.
৫) আজকাল সকল মডার্ন ব্রাউজারেই jQuery প্রায় পিউর JavaScript এর মতই ফাস্ট কাজ করে …
৬) Ajax সাপোর্ট করে …
৭) JavaScript দিয়ে বিভিন্ন সুন্দর সুন্দর এনিমেশন তৈরি করা যেখানে বেশ পেইনফুল … jQuery তে জাস্ট পিস অফ কেক …
.
.
.
এক নজরে jQuery এর কিছু অসুবিধা সমূহ 😊 …
===============================================
১) jQuery এর সবচেয়ে বড় অসুবিধা হইল … এটা ব্যবহার করতে হলে পেইজে পুরো jQuery লাইব্রেরিটা ডাউনলোড করতে হয় … যখন আমি লেখাটা লিখছি তখন পর্যন্ত সবচেয়ে লেটেস্ট jQuery লাইব্রেরির মিনিফাইড ভার্সনের সাইজ এরাউন্ড 82 KB …
.
আর এই বিশাল ডাটার বলতে গেলে বেশিরভাগই আপনি ব্যবহার না করলেও লোড করছেন … এটাই যে কোন লাইব্রেরি আর ফ্রেমওয়ার্কের সবচেয়ে বড় অসুবিধা গুলোর মাঝে একটি ... আপনি যে অংশ ব্যবহার করছেন না তাও লোড করে সার্ভার রিসোর্সকে বিজি রাখছেন ...
.
82 KB হয়তোবা আপনার কাছে সাইজের ক্ষেত্রে সাহারা মরুভূমির একটা বালি কণা মনে হতে পারে … কিনতু ওয়েবের পারফরমেন্সের ক্ষেত্রে এভরি সিঙ্গেল বাইটস ম্যাটারস …
.
.
২) অনেক ক্ষেত্রেই ভাল কোডিং করলে পিউর জাভাস্ক্রিপ্টের পারফরমেন্স jQuery থেকে অনেক বেশি ভালো হতে পারে … যেমন এই লিংকে যানhttps://goo.gl/XCgMcg … একটু নিচের দিকে Run tests বাটনে ক্লিক করে পারফরমেন্স দেখে আসতে পারেন …
.
.
.
সে যাই হোক মডার্ন ওয়েব ডেভেলপমেন্ট সেক্টরে jQuery এখন অবিচ্ছেদ্য অংশ … ওয়েব ডেভেলপমেন্টে ক্যারিয়ার গড়তে চাইলে আজ হোক কাল হোক jQuery শিখে ফেলা উচিত … Wikipedia এর মত বিশ্বের শীর্ষ ১০ হাজার ওয়েবসাইটের মাঝে ৫৫%-ই jQuery পাওয়ারড 😃 …
.
.
.
বিভিন্ন প্রোজেক্টে jQuery ব্যবহার করছে এমন কিছু ওয়েব জায়ান্ট …
==============================================
Microsoft, Google, WordPress, IBM, Adobe etc … ইউজার লিস্টে যখন Google বা Microsoft এর মত জায়ান্টদের নাম এসে যায় তাতেই বুঝা যায় jQuery এর পাওয়ার কতটা …
.
.
jQuery শেখা নিয়ে সবার মাঝে সবচেয়ে কমন যে তিনটি প্রশ্ন চলে আসে 😊 …
===============================================
প্রশ্নঃ jQuery শিখতে কি আগে JavaScript জানা থাকা লাগে ? 😌 …
উত্তরঃ আসলে jQuery শিখতে আগে থেকে JavaScript জানা না থাকলেও চলবে ... তবে জানা থাকলে অনেক সুবিধা …
.
.
প্রশ্নঃ কোনটা শিখব jQuery নাকি JavaScript? 😢 …
উত্তরঃ এটার আসলে কোন নির্দিষ্ট উত্তর নেই … এটা পুরোটাই আপনার চাহিদা বা আপনি কি ধরণের কাজ করবেন তার উপর নির্ভর করে … আমার পরামর্শ আপনি দু' টোই শিখুন ...
.
.
প্রশ্নঃ তবে আমি কি আগে JavasScript শিখব নাকি jQuery 😥 …
উত্তরঃ সেইম কথা এটার কোন নির্দিষ্ট উত্তর নেই … যেহেতু আমি আগেই বলেছি jQuery শিখতে JavaScript আগে থেকে জানা লাগে না, তবে কিছু জানা থাকলে ভালো …
.
এখন আপনি যদি চান আপনি যে jQuery লাইব্রেরি দিয়ে কাজ করছেন তার প্রতিটা ফাংশন কিভাবে কাজ করছে … ইনস এন্ড আউটস সব বুঝতে চান … তাহলে আগে JavaScript দিয়ে শুরু করতে পারেন …
.
নয়তো আপনি আগে jQuery দিয়ে শুরু করেন বা JavaScript দিয়ে … আপনার হারানোর কিছুই নেই …
.
.
.
jQuery শেখার কিছু রিসোর্স 😊 …
===============================================
১) jQuery তে আমার হাতেখড়ি ২০১২ তে আমার গুরু Jeffrey Way এর হাত ধরে … উনার একটি ফ্রি অনলাইন কোর্স থেকে … এখনও আমার কাছে jQuery শেখার ওয়ান অফ দ্যা বেস্ট রিসোর্স … জাস্ট প্রতিদিন ৩০ মিনিট করে ৩০ দিনের কোর্স ...
30 Days to Learn jQuery with Jeffrey Way → https://goo.gl/uP6iEL
.
.
২) CodeAcademy → https://goo.gl/xBw9Ky
২) Try jQuery → http://goo.gl/rjRnZd
.
.
Some good books on jQuery 😊 ...
===============================================
1) Head First jQuery :: by Ryan Benedetti
2) jQuery in Action :: by Bear Bibeault
3) Learning jQuery by :: Jonathan Chaffer
4) jQuery, jQuery UI, and jQuery Mobile :: by Adriaan de Jonge
.
.
5) Pro jQuery :: by Adam Freeman
6) jQuery Cookbook :: by Cody Lindley
7) Web Design with HTML, CSS, JavaScript and jQuery Set :: by Jon Duckett
8) A Software Engineer Learns HTML5, JavaScript and jQuery :: by Dane Cameron
9) JavaScript and JQuery :: by Jon Duckett
.
.
পুনশ্চঃ আপনি JavaScript কে jQuery এর পিতা বলতে পারেন … যদিও এটা জাস্ট জাভাস্ক্রিপ্ট কোড লাইব্রেরি … তথাপি এটার কিছু লিমিটেশন অবশ্যই আছে … এর প্যারেন্ট ল্যাঙ্গুয়েজ অনেক কিছুই করতে পারে যা সে করতে পারে না …

মজার ও সহজ প্রোগ্রামিং, পাইথন প্রোগ্রামিং [পর্ব-২৯] :: পাইথনে কিছু হালকা পাতলা ডাটা স্ট্রাকচার

সবাই আশা করি ভাল আছেন । সবার মঙ্গল কামনা করে আজকের পাইথন এর পর্ব শুরু করছি । আজকে আমি পাইথনের কিছু হালকা পাতলা ডাটা স্ট্রাকচার নিয়ে আলোচনা করব । তো , আসুন শুরু করা যাক । আমাদের আজকের প্রথম বিষয় হল “Stacks” । এটা হল আপনাদের বই রাখার তাক এর মত । আপনি যে বই টা সর্ব প্রথম তাকে রাখেন , সেটা ন্তিু অনেক নীচে চলে যায় । আর সবথেকে শেষে যে বইটা রাখেন , সেই টা সবার উপরে থাকে । ফলে আপনি যদি একটা বই তুলতে চান , তাহলে সবথেকে শেষে রাখা বইটা আগে তুলতে হবে ।
তো, স্টাক হল একটা লিস্ট । যেখানে আপনি যে ভ্যালুটা সবার আগে রাখবেন সেটা সবার শেষে রিটার্ণ করবে । আর সবার শেষে যেটা রাখবেন , সেটা সবার আগে রিটার্ণ করবে । তো , আসুন আমরা স্টাক এর একটা অ্যালগরিদম দেখি ।
আসলে ব্যাবহার না জানলে কোন জিনিস শিখে মজা পাওয়া যায় না । তাই আগে এই গুলোর ব্যাহারটা একটু বলি । ধরুন , আপনি একটা ওয়েবসাইট এ ব্রাউজ করছেন । এবার আপনি অনেক পেজ ঘুরতে ঘুরতে গিয়ে দেখরেন যে , আপনার একটু কয়েক পেজ আগে আশা দরকার । তো , আপনি নিশ্চই ব্রাউজারের ব্যাক বাটনটা চাপ দিবেন । ব্যাস । এটা আপনাকে আপনার ব্রাউজ করা সর্বশেষ পেজটা ভিউ করবে । এভাবে চাপতে থাকলে তার আগে যেটা ভিজিট করেছেন সেটা , তারপর  তার আগেরটা এভাবে চলবে  , এবং সবথেকে শেষে আপনি আপনার প্রথম ভিজিটেড পেজটা খুজে পাবেন । এটা মূলত স্ট্রাক এর নীতিতে কাজ করে । এরকম আরও বহু উদাহরণ আছে যেগুলো নেটে সাচর্ দিলেই পেয়ে যাবেন ।
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Stack(list):
    def __init__(self):
        self.items = []
    def isEmpty(self):
        return self.items == []
    def push(self, items):
        self.items.append(items)
    def pop(self):
        if not self.isEmpty():
            return self.items.pop()
        else:
            raise Exception('Stack is empty!')
    def peek(self):
        return self.items[-1]
    def size(self):
        return len(self.items)
def main():
    stack = Stack()
    stack.push(1)
    stack.push(2)
    stack.push(3)
    stack.push(12)
    print(stack.size())
    print(stack.peek())
    print(stack.pop())
    print(stack.peek())
 
if __name__ == '__main__':
    main()
<
এই প্রোগ্রামটা রান করে দেখুন । এখানে কয়েকটি ফাংশন ডিফাইন করে কাজ করা হয়েছে । পুশ টা হল স্টাক এ ডাটা পুশ করার বা প্রবেশ করানোর জন্য । আর পপ টা হল স্টাক থেকে ডাটা তোলার জন্য । পিক এর কাজও একই । এবার আাপনি ইনপুট দিয়ে চেক করুন , আপনি যে ভ্যালুটা সবার শেষে পুশ করেছিলেন সেটা সবার আগে পপ করবে । এভাবে পর পর সিরিয়ালি পপ করতে থাকবে । আর সবার শেসে পপ করবে সবার প্রথমে যে ভ্যালু রেখেছিলেন ।
এবার আমরা আরেকটা ডাটা স্ট্রাকচার জনব যার নাম হল “QUEUES” । এটা হল স্টাক এর টিক উল্টো । এখানে আপনি প্রথমে যে ভ্যালু রাখবেন , পপ করার সময় সেই ভ্যালুই প্রথমে পপ করবে । আর শেষে যে ভ্যালু রাখবেন সেটা শেষে পপ করবে এবং এইভাবে সিরিয়ালি চলতে থাকবে । আসুন , এই অ্যলগরিদমটা দেখে নিই ।
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Queue(object):
    def __init__(self):
        self.items = []
    def isEmpty(self):
        return self.items == []
    def enqueue(self, item):
        self.items.insert(0, item)
    def dequeue(self):
        return self.items.pop()
    def size(self):
        return len(self.items)
    def peek(self):
        if not self.isEmpty():
            return self.items[-1]
        else:
            raise Exception('Queue is empty.')
    def size(self):
        return len(self.items)
def main():
    queue = Queue()
    queue.enqueue(1)
    queue.enqueue(2)
    queue.enqueue(3)
    queue.enqueue(5)
    queue.enqueue(6)
    print(queue.size())
    print(queue.peek())
    print(queue.dequeue())
    print(queue.peek())
if __name__ == '__main__':
    main()
দেখুন , আগের টার সাথে এটার অনেক মিল আছে । তবে আগেরটাতে ভ্যালু একটা লিস্টে র‌্যানডমলি এপেন্ড করা হয়েছিল , আর এখানে ভ্যালু সবসময় ০ পজিশনে ইনসার্ট করা হয়েছে । তারপর এর সাইজ , পপ , প্রভৃতির জন্য একেকটা ফাংশন লেখা হয়েছে । এভাবে আপনারা বিভিন্ন ভ্যালু ইনপুট দিয়ে এটা ট্রাই করতে থাকুন । ফলে আইডিয়া ক্লিয়ার হবে ।
এবার আমরা যেটা দেখব সেটা হল “DEQUES” । এটা হল আগরে ২ টার একটা কম্বো । আগের ২ টার কাজ এই একটা দিয়েই করা যায় । অর্থাৎ , আপনি চাইলে প্রথমে বা শেষে ভ্যালু ইনসার্ট করতে পারবেন , আবার প্রথম বা শেষ থেকে ভ্যালু পপ ও করতে পারবেন । আসুন , এর কোডটা দেখি :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Deque(object):
    def __init__(self):
        self.items = []
    def isEmpty(self):
        return self.items == []
#স্বাভাবিক নিয়মে ভ্যালু লিস্টে পুশ করবে
    def addFront(self, item):
        self.items.append(item)
#সবসময় ভ্যালু ০ পজিশনে পুশ করবে
    def addRear(self, item):
        self.items.insert(0, item)
#স্বাভাবিক নিয়মে ভ্যালু পপ করবে
    def removeFront(self):
        return self.items.pop()
#সবসময় ০ পজিশন থেকে ভ্যালু পপ করবে ।
    def removeRear(self):
        return self.items.pop(0)
    def size(self):
        return len(self.items)
    def __repr__(self):
        return '{}'.format(self.items)
def main():
    dq = Deque()
    dq.addFront(1)
    dq.addFront(2)
    dq.addFront(3)
    dq.addRear(40)
    dq.addRear(50)
    print(dq.size())
    print(dq)
if __name__ == '__main__':
main()

আশা করি বিষয়টা আপনারা বুঝতে পেরেছেন । না বুঝলে কমেন্ট করুন ।