Tuesday, February 7, 2023

Time complexity banter with software engineers

 As much as the name of software engineer sounds fancy, its work is also very complicated.

A problem can be solved in many ways. But it is necessary to think about how long that problem is to be solved. Some examples will help to understand.



For example, suppose you are given some number -


1,2,3,4,5,6,7,8,9,10,11,13,17,19,51,73, 93, 101…….. N


In the above example, numbers are given from 1 to N. And the numbers are sorted. That is, arranged from small to large.

Now if you are given a number and asked if this number is among those numbers write a program like this. Now how can the work be done? This can be done by simply applying a linear search.


What is linear search?

Linear search is where you check all the numbers from the beginning to the end. If any of these numbers is equal to the number we are looking for then we will understand that the number has been found. And if any number does not match then you must understand that the number you are looking for is not in those numbers.


Now we are talking about how much time linear search takes.

Now suppose you are given a number that starts with 1. So in this case, by checking the first number, it is understood that the number has been found. That is 1 operation we found the number. This is the best case. Since we have 1 operation here, we can say its time complexity is (big O)O(1). But how many operations would be required to find the last number?


1,2,3,4,5,6,7,8,9,10,11,13,17,19,51,73, 93, 101…….. N <= we don't know how many numbers are there. If there are N numbers here then N operations have to be performed to find the last number. Then its time complexity will be (big O)O(N).


If there are 1 crore, 2 crores or more numbers, then 1 crore, 2 crores or more operations have to be carried out.

And when calculating the time complexity, the worst case is counted. That is, if the linear search is applied, its time complexity will be O(N) and it can be very expensive.

Now, something needs to be done to reduce its time complexity. Since the numbers are sorted from smallest to largest then we can apply binary search here. It is not necessary to understand what binary search is, for now, it will be convenient to understand with an example.


Suppose we have N numbers and N = 10

That means we have 10 numbers


101, 103, 109, 111, 124, 138, 147, 152, 177, 183


Now how can we apply binary search to these numbers? We can think of the positions of the numbers that are here. Below are the numbers with positions.



Numbers

101

103

109

111

124

138

147

152

177

183

positions 

1

2

3

4

5

6

7

8

9

10




Now if you are allowed to search whether the number 183 exists. So how can you think about binary search? Let's see

We can let the start position be x and the end position is y.

Then x = 1 and y = 10

And the mid position of x and y can be found as mid and mid = (x+y)/2


In the first operation we get mid = (1+10)/2 = 5.5 = 5 (we will always take the floor value of a number)

What is the floor value of 5.7

The floor value of 5.7 will be 5 

The floor value of 8.1 will be 8

That is, to put it simply, I will drop the part after the decimal.

So in the first operation, we get mid = 5

Now we have to see if the number in position 5 is equal to 183

If it is equal then I got it. If you don't get it, you have to see if the number in the 5th position is smaller or bigger than 183. It looks like there are 124 in the 5th position. This number is smaller than 183. So now what we need to do is to increase the starting position by 1 from mid.

So now x = mid + 1 = 6 and y = 10


Then in the second operation we get mid = (x + y)/2 = (6+10)/2 = 8

8th position has 152 which is less than 183.

Then again start position should be set to mid + 1.

So now x = mid + 1 = 8+1 = 9 and y = 10


Now in the third operation we get mid = (x + y)/2 = (9+10)/2 = 9

9th position has 177 which is smaller than 183.

Then again start position should be set to mid + 1.

So now x = mid + 1 = 9+1 = 10 and y = 10


Now in operation number 4 we get mid = (x + y)/2 = (10+10)/2 = 10

The 10th position has 183 so we find 183.


That is, we found the number 183 in only 4 operations.

Our number here was N = 10

And it took us 4 hours to find a number


Its time complexity will be O(log N) <= showing how


If we write log base 2(N) then it will be log2(10) = 3.32192809 = 3 [we have taken floor value]


Then it can be written as O(logN+1) <= where 1 is the constant value and the constant value is not counted while calculating time complexity.

So the time complexity of this binary search will be O(logN).


There are many more. I tried to explain with a very simple example that a software engineer has to think about time complexity while writing a program. Then while solving many problems, it is seen that it may take a few hours or a few months, or in some cases even years to solve that problem.

So this was a small attempt to discuss time complexity.



Sunday, January 9, 2022

কিভাবে zoom সেশনে জয়েন করবেন ?

 স্টেপ ১ >> ZOOM_LINK <= এই লিংক এ ক্লিক করবেন। এরপর নিচের ছবির মতো ওয়েব পেজ আসবে। 




স্টেপ ২ >> উপরের ছবির মতো ওয়েবপেজ ওপেন হলে ওয়েব পেজ এর নিচের দিকে রেড মার্ক করা ডাউনলোড অপশন দেখতে পারবেন। যদি zoom আপনার কম্পিউটার এ ডাউনলোড করা না থাকে তাহলে ডাউনলোড অপশন এ ক্লিক করে ডাউনলোড করে ইনস্টল করে নিবেন। 

স্টেপ ৩ >> এরপর নিচের ছবিতে মার্ক করা Launch Meeting বাটন এ প্রেস করবেন। 

   

স্টেপ ৪ >> Launch Meeting বাটন এ প্রেস করলে নিচের ছবির মতো পপআপ অপশন দেখতে পারবেন। 


স্টেপ ৫ >> Launch Meeting বাটন এ প্রেস করার পর পপআপ আসলে এরপর মার্ক করা অপেন বাটন এ প্রেস করবেন। এরপর নিচের ছবির মতো পপআপ আসবে। 



 স্টেপ ৬ >> উপরের ছবিতে মার্ক করা Sign in to Join বাটন এ প্রেস করবেন। তাহলে নিচের ছবির মতো  Sign in অপশন আসবে। 




স্টেপ ৭ >> উপরের ছবিতে মার্ক করা google sign in অপশন  এ ক্লিক করবেন। এরপর নিচের ছবির মতো আপনার গুগল একাউন্ট এ নিয়ে যাবে। সেখান থেকে আপনার এক বা একাধিক অপশন থাকলে যে কোন একটা সিলেক্ট করবেন। 


 স্টেপ ৮ >> আপনার জিমেইল দিয়ে এর আগে zoom একাউন্ট ক্রিয়েট করা না থাকলে নিচের ছবির মতো অপশন  এ নিয়ে যাবে। 



স্টেপ ৯ >> একাউন্ট ক্রিয়েট অপশন এ নিয়ে গেলে ইনপুট ফিল্ড ফিলআপ করবেন এবং ফিলআপ করা শেষ হলে continue বাটন এ প্রেস করবেন। তাহলে আপনাকে নিচের ছবির মতো ক্রিয়েট অপশন আসবে। 

স্টেপ ১০ >> উপরের ছবিতে মার্ক করা Create Account বাটন এ প্রেস করলে একাউন্ট ক্রিয়েট হয়ে যাবে। এবং নিচের ছবির মতো পপআপ অপশন আসলে সেটার ওপেন বাটন এ প্রেস করবেন। 

স্টেপ ১১ >> সবশেষ নিচের ছবির মতো অপশন আসলে zoom সেশন একটু সময় নিয়ে শুরু হয়ে যাবে। 



 


Monday, January 3, 2022

new github account code push error unable to access origin

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



 এই  এরর  এর  জন্য  আপনাকে   কয়েকটা  স্টেপ  শুধু  ফলো  করতে  হবে 


স্টেপ  ১ => সার্চ  গিয়ে  credential manager এইটা  লিখতে  credential manager আসবে  সেইটাই  ক্লিক  করে  উইন্ডোস  ক্রেডিয়ানশিয়াল থেকে থেকে  গিটহাব  খুঁজে  বের  করে  আগের  টা  রিমুভ  করে  দিবেন  



স্টেপ ২=> স্টেপ ১ ফলো  করার  পর  শুধু  আপনার  টার্মিনাল এ এসে  আগে  যদি  গিট্  পুশ  করার  ট্রাই  করে  থাকেন  তাহলে 


rm -rf .git <= টার্মিনালে এই কমান্ড টি দিলে .git ফোল্ডার টি রিমুভ হয়ে যাবে।

এর পর থেকে গিটহাবের কমান্ড গুলো আবার প্রথম থেকে দেওয়া যাবে। 

Or

This pc ওপেন করে প্রজেক্টের ফোল্ডারে গিয়ে .git ফোল্ডার টি ডিলিট করে দিলে ও হবে। তবে এক্ষেত্রে যদি ফাইল টি হিডেন করা থাকে তখন দেখা যাবে না। তাহলে উপর থেকে view অপশন এ যেতে হবে। তারপর current view কমান্ড গ্রুপ থেকে Hidden Items এ চেক করে দিতে হবে। এতে .git আনহিডেন হয়ে দেখা যাবে।


ডেপ্লয় করার পর যদি 404 There isn't a GitHub Pages site here

 


solve_process


আপনার গিটহাব রিপোজিটরিতে যাবেন এবং সেখানে যদি আপনার html ফাইল এর নাম উপরের ছবিতে মার্ক করা ফাইল এর নামের মত সেম হয় তাহলে লাইভ লিংক এর শেষে সেই ফাইল এর নাম /index.html দিয়ে দিবেন তাহলেই হয়ে যাবে। নিচের ছবিতে সেটা দেখানো হলো 


রিপোসিটোরিতে যদি index.html ফাইল নামে  কোন ফাইল না থাকে, অন্য কোন নামে থাকে তাহলে ইউআরএল এর শেষে “/” দিয়ে সেই ফাইল এর নাম দিতে হবে।

 

উপরের ছবিতে মার্ক করা ছবির মতো index.html ফাইল নেম এর পরিবর্তে অন্য কোন নাম যদি দেওয়া থাকে সেটা যে কোন নাম হতে পারে তাহলে সেই নামটা ইউআরএল এর শেষে “/” এর পর দিতে হবে। নিচের ছবিতে সেটা দেখানো হল



error: remote origin already exists.

 







এই ধরণের এরর আসলে। নিচের কয়েকটি স্টেপ ফলো করতে হবে। 

স্টেপ ১: টার্মিনাল এ rm -rf .git <= এই কমান্ড টি দিবেন। 
স্টেপ ২: এরপর git init কমান্ড থেকে শুরু করে বাকি কমান্ড গুলো দিবেন। তাহলেই হয়ে যাবে। 

Sunday, January 2, 2022

Git error: "Please make sure you have the correct access rights and the repository exists"


সমাধানঃ এই সমস্যাটি হতে পারে কারণ অনেক সময় ssh-agent পিসি রিস্টার্ট দিলে চলে যায়। ssh-agent এ আপনার key যোগ করা আছে কিনা তা চেক করতে হবে, যদি key না থাকে তাহলে সেটা এড করতে হবে:

১. প্রথমে এই কমান্ডটি দিনঃ ssh-add -l -E md5

২. যদি আউটপুট হিসেবে এটা আসে The agent has no identities তাহলে বুঝতে হবে key রিমুভ হয়ে গেছে।

৩. এরপর এই কমান্ডটি দিতে হবেঃ ssh-add ~/.ssh/git_rsa

ব্যাস! কাজ শেষ।


Fatal: unable to access ‘https://github.com/mdjabed1/developer-portfolio.git/’:Could not resolve host: github.com







সমাধানঃ এই সমস্যাটি --unset ফ্ল্যাগ ইউজ করে সমাধান করা যাবে। নিম্নে বর্ণিত স্টেপ গুলো ফলো করে সমস্যাটি করা যাবেঃ

১. পিসি/ল্যাপ্টপ রিবুট/রিস্টার্ট দিন।

২. পিসিতে নেট কানেকশন দিন।

৩. তারপর এই ২টি কমান্ড যথাক্রমে দিনঃ

git config --global --unset http.proxy

git config --global --unset https.proxy

এরপর git push যথাযথ ভাবে কাজ করবে।


Time complexity banter with software engineers

  As much as the name of software engineer sounds fancy, its work is also very complicated. A problem can be solved in many ways. But it is ...