<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shihab Mahamud</title>
    <description>The latest articles on DEV Community by Shihab Mahamud (@mt-shihab26).</description>
    <link>https://dev.to/mt-shihab26</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1004824%2F9ee82a37-058b-4241-832f-8ec45c1b5e26.jpg</url>
      <title>DEV Community: Shihab Mahamud</title>
      <link>https://dev.to/mt-shihab26</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mt-shihab26"/>
    <language>en</language>
    <item>
      <title>Hosting Web Application For The Web</title>
      <dc:creator>Shihab Mahamud</dc:creator>
      <pubDate>Sat, 07 Sep 2024 18:45:58 +0000</pubDate>
      <link>https://dev.to/mt-shihab26/hosting-web-application-for-the-web-1ejg</link>
      <guid>https://dev.to/mt-shihab26/hosting-web-application-for-the-web-1ejg</guid>
      <description>&lt;p&gt;Hosting a web application is a process where we make software accessible via the web over the internet.&lt;/p&gt;

&lt;p&gt;First, we need to understand what the web actually is.&lt;br&gt;
The World Wide Web, or simply 'the Web', is an information system where resources are identified by unique URLs.&lt;br&gt;
To me, the web is a kind of open platform where we can share anything we want.&lt;br&gt;
We can share content, images, documents, videos, and any digital assets.&lt;/p&gt;

&lt;p&gt;We can also share web applications.&lt;br&gt;
A web application is a type of software that runs on a computer over the internet,&lt;br&gt;
responding to requests from a user's browser or their clients devices.&lt;br&gt;
If I define a web application, it's a software system directly used by users who are connected to the internet.&lt;/p&gt;

&lt;p&gt;If we want to share a web application, the first thing we need to do is decide what kind of web hosting we're going to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Special Computer
&lt;/h2&gt;

&lt;p&gt;In the previous section mentioned that web applications run on a computer.&lt;br&gt;
This is entirely true.&lt;br&gt;
At the end of the day, it actually does run on a computer.&lt;br&gt;
However, it's not a normal computer. It's a special kind of one.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  This computer has to run 24/7, always.&lt;/li&gt;
&lt;li&gt;  It has to be connected to the internet 24/7.&lt;/li&gt;
&lt;li&gt;  It must have a static IP. We need a static IP.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Normally, when we connect any device to the internet, the router assigns a dynamic IP to the device to uniquely identify it.&lt;br&gt;
But typically, this IP is dynamic and automatically assigned by the router.&lt;br&gt;
It changes every time we change the connection.&lt;/p&gt;

&lt;p&gt;However, the computer that will run the web application has to have a static IP that should not change.&lt;br&gt;
This is because we have to point a domain to the IP. So that users can easily access our web application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Self-Hosting Approach
&lt;/h2&gt;

&lt;p&gt;For hosting a web application, the first approach we can take is to handle everything ourselves.&lt;br&gt;
This involves buying a computer, ensuring it will run 24/7, ensuring the internet connection will stay active 24/7, buying a static IP from an ISP, and everything else.&lt;/p&gt;

&lt;p&gt;After we set up our computer, we can start the process of running the web application on this machine.&lt;br&gt;
This type of computer that is connected with a static IP is also called a Server.&lt;br&gt;
From now on, I will refer to this computer as a server.&lt;/p&gt;

&lt;p&gt;As you can see, this is a lot of work just for hosting a web application on the web.&lt;br&gt;
It's also an expensive upfront investment.&lt;br&gt;
Most of the time, we don't know upfront if we will succeed in the business or not.&lt;br&gt;
So, if we want to do everything ourselves, it's a lot of work and really expensive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloud Platforms
&lt;/h2&gt;

&lt;p&gt;So, we've seen the self-hosting approach, right?&lt;br&gt;
It's expensive and a lot of work.&lt;br&gt;
To save money and reduce work, we can use something called a cloud platform.&lt;/p&gt;

&lt;p&gt;What is a cloud platform? A cloud platform is Infrastructure as a Service (IaaS),&lt;br&gt;
where we basically rent computers from a cloud provider.&lt;br&gt;
In a nutshell, we have to rent a server that has a static IP from a cloud provider.&lt;br&gt;
This computer will run 24/7 and also will be connected 24/7 if everything is okay.&lt;/p&gt;

&lt;p&gt;Now, we can do whatever we want with this computer.&lt;br&gt;
We can easily access its shell with SSH in the command line interface.&lt;br&gt;
Also, we can host a web application there with a web server.&lt;br&gt;
This web server will serve our web application if someone requests the static IP of the rented server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of Cloud Platforms
&lt;/h2&gt;

&lt;p&gt;But there is also a catch. There are two kinds of cloud platforms:&lt;br&gt;
Managed Hosting Cloud and Unmanaged Hosting Cloud.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Managed Hosting Cloud
&lt;/h3&gt;

&lt;p&gt;What a managed cloud tries to do:&lt;br&gt;
It makes certain types of application hosting very easy.&lt;br&gt;
They will try to manage as much as they can.&lt;br&gt;
They will configure the OS for us.&lt;br&gt;
They will install necessary software on it and also configure it.&lt;br&gt;
They will configure the web server for us.&lt;br&gt;
We just have to push our code, that's it.&lt;br&gt;
They will manage everything.&lt;/p&gt;

&lt;p&gt;Some examples of managed cloud platforms are Vercel, Netlify, Heroku, Hostinger, Namehero, etc.&lt;/p&gt;

&lt;p&gt;This kind of platform is good for easily deploying specific kinds of applications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Vercel and Netlify are good for hosting Node.js based serverless application and Frontend applications.&lt;/li&gt;
&lt;li&gt;  Heroku is good for hosting backend applications of certain types of programming platforms.&lt;/li&gt;
&lt;li&gt;  Hostinger and Namehero are good for hosting WordPress and all kinds of website hosting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ultimately, this kind of server is managed.&lt;br&gt;
So, we don't have full access to the computer that is running our application.&lt;br&gt;
Vercel and Netlify use serverless computing under the hood.&lt;br&gt;
Heroku-like platforms use traditional servers, but they are so managed that we can't access the server via SSH.&lt;br&gt;
So, we don't have full access to the server.&lt;br&gt;
Hostinger and Namehero give some access, but it's limited and has many limitations.&lt;/p&gt;

&lt;p&gt;Ultimately, this kind of hosting platform is not suitable for building scalable software solutions that require custom server configurations.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Unmanaged Hosting Cloud
&lt;/h3&gt;

&lt;p&gt;We have many limitations in Managed Hosting Cloud, but in Unmanaged Cloud, we have no limitations.&lt;br&gt;
Basically, we are renting a computer from a cloud provider.&lt;br&gt;
It has dedicated CPU cores, memory, and storage, just like a traditional computer.&lt;br&gt;
The main difference is that it has a static IP, so we can point a domain to this server.&lt;br&gt;
If someone requests this domain, the request will come to the server.&lt;/p&gt;

&lt;p&gt;Now that we have a real computer from a cloud provider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  We can install an OS on it.&lt;/li&gt;
&lt;li&gt;  Most people use Linux-based OS for running web applications because it's lightweight, easy to configure, free, open-source, and has great reliability.&lt;/li&gt;
&lt;li&gt;  After installing Linux, we can install web server software to handle web requests.&lt;/li&gt;
&lt;li&gt;  There are two choices: Apache HTTP Server and Nginx. Nginx is more modern, lightweight, and easy to configure, so we can use it confidently.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now we're ready to host web applications. Here, we have full control over our server and can do whatever we want.&lt;/p&gt;

&lt;p&gt;For pricing, unmanaged servers are also more cost-efficient than managed ones because they don't include the charge of managing the servers.&lt;/p&gt;

&lt;p&gt;Some examples of these cloud platforms are AWS, Microsoft Azure, Google Cloud Platform, DigitalOcean, Linode, etc.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  AWS, Azure, and GCP are full-featured with many features, good for big teams and big applications.&lt;/li&gt;
&lt;li&gt;  However, they're overkill for small teams and applications and have hidden pricing models that can be hard to predict.&lt;/li&gt;
&lt;li&gt;  DigitalOcean and Linode are good in terms of pricing and easy maintenance of servers.&lt;/li&gt;
&lt;li&gt;  These clouds have easy-to-use dashboards and the most famous features of the big three.

&lt;ul&gt;
&lt;li&gt;  For example, DigitalOcean has Droplets (equivalent to AWS EC2), Spaces (equivalent to AWS S3), and VPC (equivalent to AWS VPCs).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  If we need full control over the server, we should use unmanaged cloud.&lt;/li&gt;
&lt;li&gt;  For small teams, we can use DigitalOcean or Linode-like clouds.&lt;/li&gt;
&lt;li&gt;  If we lack technical knowledge about configuring servers, we can use managed hosting, but we'll lose some control.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ultimately, everything has pros and cons. We have to consider our requirements when choosing a hosting platform.&lt;/p&gt;

</description>
      <category>hosting</category>
      <category>cloud</category>
      <category>web</category>
    </item>
    <item>
      <title>কম্পিটিটিভ প্রোগ্রামিং</title>
      <dc:creator>Shihab Mahamud</dc:creator>
      <pubDate>Sat, 27 Jul 2024 14:01:19 +0000</pubDate>
      <link>https://dev.to/mt-shihab26/competitive-programming-3akc</link>
      <guid>https://dev.to/mt-shihab26/competitive-programming-3akc</guid>
      <description>&lt;h2&gt;
  
  
  কম্পিটিটিভ প্রোগ্রামিং (CP) কি?
&lt;/h2&gt;

&lt;p&gt;কম্পিটিটিভ প্রোগ্রামিং (CP) হলো মানসিক খেলা যা ইন্টারনেট এবং স্থানীয় ভাবে অনুষ্ঠিত হয়। এখানে অংশ গ্রহন কারিদেরকে নির্দিষ্ট সংখ্যক সমস্যা দেওয়া হয়, নির্দিষ্ট সময়ে সমাধান করার জন্য। যে বা যে দল সব থেকে বেশি সমস্যা সমাধান করতে পারে বা দুই দল সমান সংখ্যক সমস্যা সমাধান করলে যারা আগে করতে পারে, তারা বিজয়ী হয়।&lt;/p&gt;

&lt;p&gt;তবে আমার কাছে CP হলো চিন্তা করতে শেখার সবথেকে সেরা পদ্ধতি। CP এর মাধ্যেমে একজন প্রোগ্রামার চিন্তা করতে শেখে, নতুন কিছু শেখার জন্য সর্বদা প্রস্তুত থাকে। নতুন কিছু শেখা কষ্টের না হয়ে তার কাছে হয়ে ওঠে আনন্দের। যা কিনা তাকে অন্যের থেকে অবশ্যই একধাপ এগিয়ে রাখে।&lt;/p&gt;

&lt;h2&gt;
  
  
  CP এবং Problem Solving এর মধ্যে পার্থক্য কি?
&lt;/h2&gt;

&lt;p&gt;আনেকেই CP এবং Problem Solving কে একই জিনিস মনে করে। চিন্তাটা অনেকটা সত্য হলেও পুরোপুরি সত্য নয়। এই বিষয়টা একটি উদাহরনের মাধ্যেমে বুঝা যাক। ধরুন, আপনি বাইক কিনলেন, এখন আবশ্যই বাইক চালনো শিখবেন, বাইক চালানো শেখার পর আপনি নিয়মিত বাইক চালান। এখন আমি এই বাইক চালানো শেখা এবং নিয়মিত বাইক চালানোকে Problem Solving এর সাথে তুলনা করতে পারেন। তবে এখন প্রশ্ন আসে CP এখানে কোথায়? এখন যদি আপনি ঔ বাইকটা নিয়ে বিভিন্ন বাইক রেসিং প্রতিযোগিতায় অংশ নিতে যান তখন এটাকে তুলনা করা যায় CP এর সাথে। তাহলে একথায় বললে, Problem Solving হলো বাইক চালানো আর Competitive Programming হলো সেই বাইন নিয়ে Racing করা। এখন পাঠকের কাছে প্রশ্ন হচ্ছে, যে বাইক Racing করে তার বাইক চালানোর Skill কতোটা হবে।&lt;/p&gt;

&lt;h2&gt;
  
  
  উল্লেখযোগ্য Programming Contests:
&lt;/h2&gt;

&lt;p&gt;উল্লেখযোগ্য Onsite প্রোগ্রামিং প্রোতিযােগিতা:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/Google_Code_Jam" rel="noopener noreferrer"&gt;Google Code Jam&lt;/a&gt;: 2003 থেকে Google এটি আয়োজন করে আসছে। এখানে বিজয়িকে 15 হাজার ডলার পুরস্কার দেয়া হয়। এটার ফাইনাল Google এর অফিসে হলেও বর্তমানে করোনা ভাইরাসের কারনে অনলাইনেই অনুষ্ঠিত হচ্ছে।&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/Facebook_Hacker_Cup" rel="noopener noreferrer"&gt;Facebook Hacker Cup&lt;/a&gt;: 2011 সাল থেকে Facebook এটি আয়োজন করে আসছে।&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/International_Collegiate_Programming_Contest" rel="noopener noreferrer"&gt;International Collegiate Programming Contest (ICPC)&lt;/a&gt;: এটি University পর্যায়ের সব থেকে বড় প্রতিযােগিতা। এই প্রতিযােগিতায় অংশ নিতে হলে অবশ্যই তাকে University শিক্ষার্থী হতে হয় এবং তিনজনের টিম করতে হয়, সাথে থাকে একজন কোর্চ। এটিকে প্রোগ্রামিংয়ের বিশ্বকাপও বলা হয়।&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/International_Olympiad_in_Informatics" rel="noopener noreferrer"&gt;International Olympiad in Informatics (IOI)&lt;/a&gt;: এটি হাই স্কুল পর্যায়ের প্রতিযােগিতা।&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;উল্লেখযোগ্য Online প্রোগ্রামিং প্রোতিযােগিতা:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://codeforces.com" rel="noopener noreferrer"&gt;Codeforces&lt;/a&gt;: এটি বিশ্বের সব থেকে জনপ্রিয় Competitive Programming platform। এখানে প্রতি সপ্তাহেই contests থাকে। এই web site এর রেটিং ব্যবস্থা আছে। প্রতিটি কন্টেস্টের performance এর উপর ভিত্তি করে রেটিং বাড়ে কমে।&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.codechef.com/" rel="noopener noreferrer"&gt;Codechef&lt;/a&gt;: এটিও অন্যতম জনপ্রিয় platform। এটিরও Codeforces এর মত রেটিং সিস্টেম আছে।&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://atcoder.jp/" rel="noopener noreferrer"&gt;Atcoder&lt;/a&gt;: এটি একটি জাপানিজ web site। এখানে Beginner দের জন্য ভালো Contest হয়।&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://leetcode.com/" rel="noopener noreferrer"&gt;LeetCode&lt;/a&gt;: এখানেও এখন সাপ্তাহিক কন্টেস্ট হয়। তবে এটি Interview preparation এর জন্য বেশি ব্যবহার করা হয়।&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  কম্পিটিটিভ প্রোগ্রামিং কিভাবে শুরু করবো?
&lt;/h2&gt;

&lt;p&gt;কম্পিটিটিভ প্রোগ্রামিং শুরু করার জন্য পূর্বশর্ত হচ্ছে যেকোন একটি প্রোগ্রামিং ভাষার মৌলিক বিষয়গুলো (variable, data type, if else, loop, array, function) জানা। প্রোগ্রামিং ভাষার মৌলিক বিষয় জানা হয়ে গেলে এখন শুরু করতে হবে সমস্যা সমাধান (problem solving) করা। এখন প্রশ্ন হচ্ছে কোন Online Judge এ সমস্যা সমাধান করবো? যেকোন OJ তেই সমস্যা সমাধান করলে হয়, তবে আমি বলবো URI Online Judge থেকে শুরু করতে। এই OJ এর সমস্যা গুলো তুলনামূলক অনেক সহজ, এখানে অনুশীলন করলে প্রোগ্রামিং ভাষাটির উপর শক্ত ভিত্তি তৈরি হয়ে যাবে। এখানে কিছুদিন অনুশীলন করার পর বিভিন্ন OJ তে প্রচেস্টা করা যেতে পারে (যেমন: Codeforces, Codechef, Atcoder, LightOJ, etc.)। এই OJ গুলোতে 50-60 টি সমস্যা সমাধান করার পর শুরু করা উচিত Contest দেয়া। Competitive Programming করার আসল সাধ এর মাধ্যেমেই পাওয়া যাবে। এখন 150-200 সমস্যা সমাধান করা হয়ে গেলে Data Structure and Algorithm শেখা শুরু করা উচিত। এই পর্যন্ত কেউ আসতে পারলে এর পর কি করতে হবে তা অটোমেটিকই যেনে যাবে।&lt;/p&gt;

&lt;h2&gt;
  
  
  কিছু গুরুত্বপূর্ন Data Structure and Algorithm:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Binary Search&lt;/li&gt;
&lt;li&gt;Sorting (Merge Sort, Quick Sort, etc)&lt;/li&gt;
&lt;li&gt;Graph Theory (BFS/DFS, Shortest Part, Articulation Point, Max/Min Flow, etc)&lt;/li&gt;
&lt;li&gt;Strings (KMP, Z Algorithm, Finite Automata, etc)&lt;/li&gt;
&lt;li&gt;Greedy&lt;/li&gt;
&lt;li&gt;Constructive Algorithm (Merge Sort logic, Two pointers, Backtracking, etc)&lt;/li&gt;
&lt;li&gt;Dynamic Programming&lt;/li&gt;
&lt;li&gt;Bit Manipulation&lt;/li&gt;
&lt;li&gt;Game Theory&lt;/li&gt;
&lt;li&gt;Number Theory&lt;/li&gt;
&lt;li&gt;Stack, Queue, Link list&lt;/li&gt;
&lt;li&gt;Tree, Segment Tree,&lt;/li&gt;
&lt;li&gt;Heap and maps&lt;/li&gt;
&lt;li&gt;Disjoint Set Union, Trie, etc&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learning Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;h1&gt;
  
  
  &lt;a href="https://www.rokomari.com/book/166987/computer-programming--1st-part" rel="noopener noreferrer"&gt;কম্পিউটার প্রোগ্রামিং-প্রথম খণ্ড (তামিম শাহরিয়ার সুবিন)&lt;/a&gt;
&lt;/h1&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://dimik.pub/book/77/programming-contest-data-structure-and-algorithm" rel="noopener noreferrer"&gt;প্রোগ্রামিং কনটেস্ট ডেটা স্ট্রাকচার ও অ্যালগরিদম (মো: মাহবুবুল হাসান)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://cses.fi/book/book.pdf" rel="noopener noreferrer"&gt;Competitive Programmer’s Handbook (Antti Laaksonen)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://cpbook.net/" rel="noopener noreferrer"&gt;Competitive Programming 3 (Felix Halim and Steven Halim)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://cp-algorithms.com/" rel="noopener noreferrer"&gt;cp-algorithms.com &lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>problemsolving</category>
      <category>dsa</category>
      <category>cpp</category>
    </item>
    <item>
      <title>বইটি নিয়ে আমার কথা!</title>
      <dc:creator>Shihab Mahamud</dc:creator>
      <pubDate>Thu, 14 Mar 2024 09:56:37 +0000</pubDate>
      <link>https://dev.to/mt-shihab26/bitti-niyye-aamaar-kthaa-phulsttyaak-ddebhelpmentt-kaanekttin-dy-ddtts-hm-nayem-4e44</link>
      <guid>https://dev.to/mt-shihab26/bitti-niyye-aamaar-kthaa-phulsttyaak-ddebhelpmentt-kaanekttin-dy-ddtts-hm-nayem-4e44</guid>
      <description>&lt;p&gt;প্রথমে ভেবেছিলাম বইটি কিনবো না, কারণ আগে তামিম শাহরিয়ার সুবিন ভাইয়ের প্রোগ্রামিংয়ের আশ্চর্য জগৎ পড়েছিলার এবং সুবিন ভাই ও HM Nayem ভাইয়ের অনেক গাইডলাইন মুলক ভিডিও দেখেছি তাই Programming, Software Development এবং Software Engineering সম্পর্কে সঠিক ধারণা ছিল। কিন্তু Youtube এ HM Nayem ভাইয়ের রিভিউ দেখে মনে হলো, হয়ত বা বইটিতে নতুন কিছু যানার আছে। তাই বইটি কিনেই ফেললাম, এখন পড়ার পরে মনে হচ্ছে সিদ্ধান্তটা ঠিকই ছিল। অসংখ্য ধন্যবাদ HM Nayem ভাইকে প্রোগ্রামিং শিখতে আসা নতুন শিক্ষার্থিদের ভুল পথে সময় ও টাকা ব্যয় করার থেকে বাচানোর জন্য। এছাড়াও ধন্যবাদ এতো সুন্দর বই উপহার দেওয়ার জন্য।&lt;br&gt;
এখন আসা যাক আসল আলোচনায়, আমি মনে করি মোটা দাগে বইটিকে দুই ভাগে ভাগ করা যায়। প্রথম অংশ হলো Programming শেখা নিয়ে আর দ্বিতীয় অংশ হলো ফুলস্ট্যাক ওয়েব ডেভেলপমেন্ট নিয়ে।&lt;/p&gt;

&lt;p&gt;প্রোগ্রামিং নিয়ে আমার অভিজ্ঞতা বেশি দিনের নয়, তবে Programming Community এর সাথে যুক্ত থাকার করণে দেখেছি অনেকের কাছে যথেষ্ট সময় ও সুযোগ থাকার পরেও Freelancing এর গুতায় Programming বা Computer Science এর বেসিক না শিখেই বিভিন্ন ফ্রেমওয়ার্ক বা টুল শেখা শুরু করে। তাই বইয়ের প্রথম অংশ আমার কাছে খুবই কার্যকরি মনে হয়েছে। এই অংশে আলোচনা করা হয়েছে Computer Science এর বেসিক — Programming, Data Structure and Algorithm, Problem Solving, Object Oriented Programming , Discrete Mathematics নিয়ে, এগুলাে কেন স্কিপ করা উচিত না তা নিয়ে। এছাড়াও অধ্যায় চৌদ্দোর শেষে সবকিছু শেখার রির্সোস শেয়ার করার ব্যাপারটি ভালো লেগেছে। তবে আমার অনুরোধ থাকবে, দ্বিতীয় প্রকাশে বইয়ের এই অংশে আরও দুটি বিষয় নিয়ে আলােচনা করার জন্য একটি হলো Computer Networking (যদিও লেখক নিজেই এটি উল্লেখ করেছে) আর একটি হলো Operating Systems। যেহেতু এই বইয়ের মুল আলোচ্য বিষয় হলো ওয়েব ডেভেলপমেন্ট তাই Networking নিয়ে আলেচনা আমি আশা করেছিলাম। যাই হোক আশাকরি দ্বিতীয় প্রকাশে এটি পাব। আর যেহেতু Back-End Development পুরোপুরি Operating Systems এর সাথে সম্পর্কিত বিষয় তাই এটি আশা করাও হয়ত বা দোষের না। যদি আবেদনটি HM Nayem ভাইয়ের কাছে পৌছায় আশা করি আমলে নেবেন, ইনশাআল্লাহ।&lt;br&gt;
যেহেতু আমি তামিম শাহরিয়ার সুবিন ভাইয়ের বইয়ের নিয়মিত পাঠক, তাই বইটি প্রথম অংশে বর্ণিত বিষয়বস্তু সম্পর্কে আমি আগেই অবগত ছিলাম। তাই বইটি পড়ে আর একজন জ্ঞানীর থেকে বিষয়গুলো ভেরিফাই হয়ে গেল আরকি।&lt;/p&gt;

&lt;p&gt;এবার আশা যাক বইয়ের দ্বিতীয় অংশে, বইটির দ্বিতীয় অংশে HM Nayem ভাই একটা ওয়েব অ্যপলিকেশন তৈরির আইডিয়া থেকে শুরু করে ডেপলয়মেন্ট পর্যন্ত যা যা থিওরি এবং টুল যানা দরকার তা বর্নণা করেছেন। এক কথাই বললে ওয়েব ডেভেলপমেন্টে পুরো প্রোসেসটা বর্ননা করা হয়েছে। তাই ওয়েব ডেভেলপমেন্টে আগ্রহী প্রোগ্রামারের জন্য বইটির দ্বিতীয় অংশ হতে পারে আর্দশ সঙ্গী । আমার ডেভেলপমেন্ট নিয়ে অল্প অল্প ধারণা থাকলেও পরিষ্কার ধারনা ছিলনা। যা বইটি পড়ার মাধ্যমে ভালই অর্জিত হয়েছে। বিশেষ করে ওয়ের ডিজাইন ও ফ্রন্টেন্ড ডেভেলপমেন্টের মধ্যে পার্থক্যটি পরিষ্কার হয়েছে।&lt;/p&gt;

&lt;p&gt;সবশেষে, ফুলস্ট্যাক ডেভেলপমেন্ট কানেকটিং দ্য ডটস (HM Nayem) বইটি সম্পর্কে বলা যায় যে, একজন ভালো ওয়েব ডেভেলপার হওয়ার জন্য যা যা করা দরকার, তার প্রায় সবকিছুই বইটিতে আলোচনা করা হয়েছে। তাই আমি মনে করি ওয়েব ডেভেলপমেন্টে আগ্রহী শিক্ষার্থিদের জন্য বইটি অপরিহার্য।&lt;br&gt;
এটি কোন বই রিভিউ না বরং বইটি সম্পর্কে আমার একটা মতামত মাত্র। আশাকরি ভুলগুলো ক্ষমা সুন্দর দৃষ্টিতে দেখবেন এবং কমেন্টে যানাবেন। ধন্যবাদ&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>fullstack</category>
      <category>programming</category>
    </item>
    <item>
      <title>নতুনদের জন্য সমস্যা সমাধান</title>
      <dc:creator>Shihab Mahamud</dc:creator>
      <pubDate>Tue, 12 Mar 2024 09:36:38 +0000</pubDate>
      <link>https://dev.to/mt-shihab26/ntunder-jny-smsyaa-smaadhaan-1db4</link>
      <guid>https://dev.to/mt-shihab26/ntunder-jny-smsyaa-smaadhaan-1db4</guid>
      <description>&lt;p&gt;Problem এর বাংলা হলো সমস্যা আর Solving হলো সেই সমস্যা সমাধান করা। কিন্তু আমার কাছে Problem বা সমস্যা মানে হলো কোন unknown situation বা অজানা পরিস্থিতি। আর সেই unknown situation থেকে নিজেকে বের করে নিয়ে আসাই হলো Problem solving। Problem solving অনেকটা adventure এর মতো you don't know what will be next।&lt;/p&gt;

&lt;p&gt;আমাদের বাস্তব দুনিয়ায় Problem solving সব জায়গা আছে। একজন কৃষক বিভিন্ন ফসল চাষের মাধ্যমে আমাদের খাদ্যের সমস্যা সমাধান করছে। তেমনি একজন ডাক্তার আমাদের শারিরীক সমস্যার সমাধান করে। কিন্তু এগুলোর মধ্যে এই ব্লগে আমরা Programming এর Problem Solving নিয়ে আলোচনা করবো। প্রথমেই আসে Programming এ Problem Solving কি? কোন বাস্তর জিবনের সমস্যা যদি কম্পিউটার বা কম্পিউটিং ডিভাইস দিয়ে সমাধান করা যায় তবে তাকে আমরা Programming এ Problem solving হিসাবে আখ্যায়িত করতে পারি।&lt;/p&gt;

&lt;p&gt;তাহলে Problem solving এর ধাপ সমুহ কি হতে পারে। প্রথমে আমাদের সমস্যা খুজে বের করতে হবে। তার পর সমস্যাটিকে analysis করতে হবে। তারপর মনে মনে, খাতায় বা white board ইত্যাদিতে সমস্যাটির সমাধান করতে হবে। এখন পালা সমাধানটি কম্পিউটারকে বুঝানোর। সমাধানটি কম্পিউটারকে বোঝানোর জন্য যেকোন একটি প্রোগ্রামিং ভাষা ব্যবহার করে code লিখে কম্পিউটারকে সমাধানটি বোঝাতে হবে।&lt;/p&gt;

&lt;p&gt;তাহলে উদাহরণ হিসেবে একটি Problem দেখা যাক। Problem টি Codeforces Beta Round #4 (Div. 2 Only) এর A নম্বর Problem, যার নাম Watermelon (&lt;a href="https://codeforces.com/problemset/problem/4/A" rel="noopener noreferrer"&gt;https://codeforces.com/problemset/problem/4/A&lt;/a&gt;) । পরামর্শ রইলো প্রথমে Problem টি ভালো ভাবে পড়ে, এখানে কি বলা হয়েছে তা বুঝার চেষ্টা করা। তবুও আমি সংক্ষেপে Problem টিতে কি বলা হয়েছে তা বলি, Pete এবং Billy Watermelon কিনেছে। এখন তারা এমন ভাবে ওজন অনুযায়ী Watermelon কে ভাগ করতে চায় যে, দুই ভাগের ওজন জোড় সংখ্যা (even number) এবং 0 থেকে বড় হয় । এখন আমাদের বলতে হবে যে আমরা এ রকম ভাবে ভাগ করতে পারবো কি না। যদি পারি তবে YES প্রিন্ট করতে হবে না হলে NO প্রিন্ট করতে হবে। যেমন যদি তাদের Watermelon এর ওজন 8 হয় তবে আমরা 6, 2 বা 4, 4 যেকোন ভাবেই ভাগ করতে। এখানে উল্লেখযোগ্যা বিষয় হলো দুই ভাগ সমান নাও হতে পারে, দুইটি জোড় সংখ্যা (even number) হলেই হবে।&lt;/p&gt;

&lt;p&gt;তাহলে Problem Solve করার প্রথম ধাপ Problem Identify বা Problem Read গেলে, এখন আসে Analysis এর পালা। এখানে simple বিষয় হলো একটি সংখ্যা দেবে সেটিকে কি দুটি জোড় সংখ্যায় (even number) ভাগ করা যাবে কি না তা বলতে হবে। তবে এখানে simple analysis হলো যেকােন জোড় সংখ্যাকেই দুইটি জোড় সংখ্যায় ভাগ করা যায়। তবে এখানে একটি কর্ণার কেস রয়েছে, 2 তো জোড় সংখ্যা তাই না। কিন্তু 2 কে আমরা 2, 0 তে ভাগ করতে পারি না কারণ 2, 0 তে ভাগ করলে এখানে 0 আসছে যেটা valid নয়। অবশেষে আমরা conclusion এ পৌছালাম যে, 2 থেকে বড় যেকোন জোড় সংখ্যাকে দুইটি জোড় সংখ্যায় ভাগ করা যাবে। এটা গেলে আমাদের Analysis এবং Problem টিকে মনে মনে Solve করা। এখন পালা implement বা code করার।&lt;/p&gt;

&lt;p&gt;আমরা একটি সংখ্যা Input নিবো তারপর চেক করবো সংখ্যাটি 2 থেকে বড় না ছোট, ছোট বা সমান হলে NO প্রিন্ট করবো না হলে চেক করবো সংখ্যাটি 2 দিয়ে ভাগ যায় কি না যদি ভাগ যায় তবে এটি জোড় সংখ্যা YES প্রিন্ট করবো না হলে NO প্রিন্ট করবো। code দেখলে আরো ভালো ভাবে বোঝা যাবে।&lt;/p&gt;

&lt;p&gt;আমি তিনটি Language (‌C/C++, Python, Go) এ implement করে দেখালাম। পাঠক যে Language যানে সেটা অনুসরন করতে পারে। আর কােন Programming Language না জানলে যে কােন একটা Language শিখলেই হবে, এই তিনটার যেকোন একটি শিখতে হবে, তেমন কিন্তু নয়। তবে C/C++ recommended থাকবে। কারণ জনগণ Problem Solving এর জন্য এটি সবথেকে বেশি ব্যবহার করে।&lt;/p&gt;

&lt;p&gt;C/C++ implementation: &lt;a href="https://codeforces.com/contest/4/submission/159295024" rel="noopener noreferrer"&gt;https://codeforces.com/contest/4/submission/159295024&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;bits/stdc++.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;cin&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"NO&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"YES&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;
            &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"NO&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python implementation: &lt;a href="https://codeforces.com/contest/4/submission/159295164" rel="noopener noreferrer"&gt;https://codeforces.com/contest/4/submission/159295164&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NO&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YES&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NO&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>cpp</category>
      <category>pgoramming</category>
      <category>codeforces</category>
      <category>problemsolving</category>
    </item>
    <item>
      <title>কিভাবে সি প্রোগ্রমিং শিখবো?</title>
      <dc:creator>Shihab Mahamud</dc:creator>
      <pubDate>Mon, 11 Mar 2024 08:59:53 +0000</pubDate>
      <link>https://dev.to/mt-shihab26/kibhaabe-si-progrmin-shikhbo-3hbc</link>
      <guid>https://dev.to/mt-shihab26/kibhaabe-si-progrmin-shikhbo-3hbc</guid>
      <description>&lt;p&gt;সি প্রোগ্রামিং ভাষা, যাকে সকল প্রোগ্রামিং ভাষা মা বা The mother of all language বলা হয়। এখনও যদি কোন অভিজ্ঞ প্রোগ্রামারকে বলা হয়, “ভাই, প্রোগ্রামিং শিখতে চাই কোন ভাষা দিয়ে শুরু করবো”। বেশির ভাগেই উত্তর হবে এই ৪৮ বছরের পুরোনো ভাষাটি । এর কারণ কি?&lt;br&gt;
এর অনেকগুলো কারণ আছে তার মধ্যে একটি হলো এটি ছোট একটি ভাষা, বর্তমানে আমরা যত হাই-লেভেল প্রোগ্রামিং ভাষা দেখতে পাই তার প্রায় সব গুলোতেই অনেক অনেক জিনিস থাকে (যেমন: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং, অনেক বড় বিল্টইন লাইব্রেরি ইত্যাদি)। কিন্তু যারা নতুন প্রোগ্রামিং শুরু করছে তাদের এত কিছু শুরুতেই যানার প্রয়োজন হয় না। তাদের দরকার হয় প্রোগ্রামিংয়ের মৌলিক বিষয় গুলোর জ্ঞান যা সি-য়ের মাধ্যমে অন্য যেকোন ভাষার থেকে ভালভাবে নেওয়া সম্ভম। কারন, সি অনেক ছোট একটি ভাষা এখানে প্রোগ্রামিংয়ের মৌলিক বিষয় গুলোর শেখার পর্যপ্ত সুযোগ পাওয়া যায়।&lt;br&gt;
যাইহোক, এখন আশা যাক আসল আলোচনায় আমার সি প্রোগ্রামিং শেখার অভিজ্ঞতা থেকে এই ব্লগে আমি একটি রোডম্যপ(Roadmap) ও সেটি বস্তবায়নের রির্সোস দেওয়া চেষ্ট করাবো। আশাকরি এটি অনেকরই কাজে আশবে, ইনশাআল্লাহ। আমি সি প্রোগ্রামিং শেখাকে চারটি ধাপে ভাগ করেছি।&lt;/p&gt;

&lt;h2&gt;
  
  
  ধাপ-১: প্রাগ্রামিংয়ের মৌলিক বিষয়গুলো শেখা।
&lt;/h2&gt;

&lt;p&gt;যদি প্রোগ্রামিংয়ের মৌলিক বিষয়গুলো শেখার কথা আশে তাহলে এক কথায়, বেস্ট অপশন হলো তামিম সাহরিয়ার সুবিনের কম্পিউটার প্রোগ্রামিং — ১ম খন্ড বইটি। অসাধারণ একটি বই, এপর্যন্ত আমার পড়া প্রোগ্রমিংয়ে সেরা বই এটি। এটি পড়ার সময় পাঠকের মনে হবে লেখক তার সামনে বসে আছে। তাকে প্রোগ্রামিং শেখাচ্ছে, আমার তো এটিই মনে হয়েছিল। বইটি হাতে পাওয়া বেশকিছু অপশন আছে। কেউ চাইলে সরাসরি হার্ডকপি কিনতে পারে রকমানি থেকে আবার cpbook.subeen.com এ বইটি ফ্রি পড়তে পারে। আবার চাইলে cpbook.subeen.com থেকে পিডিএফও ডাউনলোড করতে পারে, যা যেটা ভালো লাগে আরকি। সাথে সাথে দ্বিমিক কম্পিউটিংয়ের ফ্রি র্কোস প্রোগ্রামিংয়ে হাতে খড়ি করাতে হবে।&lt;/p&gt;

&lt;h2&gt;
  
  
  ধাপ-২: প্রাগ্রামিংয়ের মৌলিক বিষয়গুলো পোক্ত করা।
&lt;/h2&gt;

&lt;p&gt;কেউ যদি ধাপ-১ সম্পন্ন করে এবং কম্পিউটার প্রোগ্রামিং — ১ম খন্ড বইটিতে বর্ণিত বিষয়গুলো মেনে অনুশীলন করে তবে তার প্রাগ্রামিংয়ের মৌলিক বিষয়গুলোর প্রতি ভালো ধারণা হয়েছে। এখন তাকে এই ধারণা পোক্ত করতে হবে। এজন্য বেস্ট অপশন হলো কিছু প্রোগ্রামিং সমস্যা সামাধান করা। যার জন্য বেস্ট অপশন হলো দ্বিমিক অনলাইন জাজের সমস্যাগুলো সমধান করা। এখানে দেওয়া সমস্যাগুলো সমাধান করলে প্রাগ্রামিংয়ের মৌলিক বিষয়গুলোর উপর দক্ষতা চলে আসবে। যেটা খুবই জরুরি। এবং আনন্দের বিষয়হলো দ্বিমিক অনলাইন জাজের সমস্যাগুলো বাংলায়।&lt;/p&gt;

&lt;h2&gt;
  
  
  ধাপ-৩: সি-য়ের অ্যাডভান্স বিষয়গুলো শেখা।
&lt;/h2&gt;

&lt;p&gt;ধাপ-১ ও ধাপ-২ সঠিক ভাবে সম্পন্ন করার পর এখন সি-য়ের তুলনামুলক অ্যাডভান্স বিষয়গুলো (যেমন পয়েন্টার, রিকার্শন, বিটওয়াইজ অপারেশন, স্ট্রাকচার ইত্যাদি) শিখতে হবে। এজন্য কম্পিউটার প্রোগ্রামিং দ্বিতীয় খণ্ড (তামিম শাহরিয়ার সুবিন) বইটি পড়া যেতে পারে। যেটি রকমারিতে কিনতে পাওয়া যায়। এছাড়াও Tech Yourself C (Herbert Schildt) এই বইয়ের অধ্যায়-৬ থেকে অধ্যায়-১২ পর্যন্ত পড়া যেতে পারে। কোন বিষয়ে কনফিউশন থাকলে Google ও Youtube এ র্সাচ দিতে হবে বিভিন্ন ব্লগ ও ভিডিও থেকে সেগুলো শিখে নিতে হবে। এজন্য কিছু Youtube Channel — freeCodeCamp.org (English), MySirG.com (Hindi), Anisul Islam (Bangla), Sharif Chowdhury (Bangla) ও ওপেবসাইট — tutorialspoint.com, programiz.com, geeksforgeeks.org।&lt;/p&gt;

&lt;h2&gt;
  
  
  ধাপ-৪: সি-য়ের অ্যাডভান্স বিষয়গুলো পোক্ত করা।
&lt;/h2&gt;

&lt;p&gt;আবার সেই প্রোগ্রামিং প্রব্লেম সলভিং বা প্রোগ্রামিং সমস্যা সমাধান করা। প্রোগ্রমিংয়ের যেকোন কনসেপ্ট সঠিক ভাবে আয়ন্ব করতে হলে অনুশীলনের কোন বিকল্প নিই। আর প্রোগ্রামিং অনুশীলন করার একটি সহজ এবং কার্যকরী পদ্ধতি হলো প্রোগ্রামিং প্রব্লেম সলভিং বা প্রোগ্রামিং সমস্যা সমাধান করা। তাই যেকোন প্রব্লেম সলভিং ওয়েবসাইটে (যেমন: codeforces.com, lightoj.com, UVa) গিয়ে কমপক্ষে ১০০টি মোটি মোটি কঠিন সমস্যা সমাধান করতে হবে। তবেই এই অ্যাডভান্স বিষয়গুলো অয়ত্বে চলে আসবে।&lt;br&gt;
এই চারটি ধাপে বর্নিত বিষয়গুলো শিখে যদি কউ সন্তুষ্ট না থাকে তবে The C Proramming Language (Brian Kernighan, Dennis Ritchie) বইটি পড়া যেতে পারে।&lt;/p&gt;

&lt;p&gt;কেউ এই ধাপ গুলো অনুসরন করলে আশা করা যায় প্রোগ্রামিংয়ের উপর একটি ভালো দক্ষতা চলে আসবে, ইনশাআল্লাহ।&lt;br&gt;
ধন্যবাদ&lt;/p&gt;

</description>
      <category>c</category>
      <category>programming</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
