নিজে নিজে টুকটাক কম্পিউটার সায়েন্স শেখার পরিকল্পনার অংশ হিসেবে Operating Systems: Three Easy Pieces বইটি পড়া শুরু করলাম। এইমাত্র প্রথম অংশটি পড়ে শেষ করলাম (তিন পিসের এক পিস)। শেখাটা পাকাপোক্ত করার জন্য চুম্বকাংশগুলো লিখে ফেলার চেষ্টা করব।

আপারেটিং সিস্টেমের কাজ কী?

একটি অপারেটিং সিস্টেমের মূল কাজ হল একটি কম্পিউটারে চলা প্রোগ্রামগুলোকে ম্যানেজ করা। একেকটি প্রোগ্রামের বেশ কিছু রিসোর্স লাগে। যেমন প্রসেসর, মেমরি (RAM), স্টোরেজ, নেটওয়ার্ক ইত্যাদি। অপারেটিং সিস্টেমের একটি কাজ হল এই রিসোর্সগুলোকে সহজে ব্যবহারযোগ্য করে উপস্থাপন করা। যাতে রিসোর্সগুলো কিভাবে কাজ করে, available আছে কিনা ইত্যাদি নিয়ে সাধারণ প্রোগ্রমারের মাথা ঘামাতে না হয়। এই প্রক্রিয়াটিকে বলা হয় ভার্চুয়ালইজেশন।

আরেকটি গুরুত্বপূর্ণ কাজ হল এই…


I was facing a problem, let’s say at some point in a react app, I get a list of cities and I have to make individual API calls to fetch info about the cities. I want to update the UI whenever a single request completes.

So the solution that comes to mind first is this:

As you will notice, this code doesn’t work. Because the callback passed to useEffect will always have cityData from the first render, which is {}. As a result, cityData will always have only the last received data.

If we were using class based components, this…


Netis routers are very popular in our country, at least in my town. Probably because of their lower price. But one convenience they don’t come with is a mobile app. So I built one, with react native.

How?

I noticed that the admin site works through ajax. Inspecting the source revealed that they are mostly using jQuery. First I tried to to read the source to extract an API. But even the very helpful Mandarin comments couldn’t help me understand anything much.

So what I did is, I headed to the network tab of dev tools. There I could see all…


স্লাইডিং পাজল সমাধান: ডিএফএস vs বিএফএস vs A* সার্চ

একটি স্লাইডিং পাজলে সাধারণত মোট আটটি স্কয়ার আর একটি খালি জায়গা থাকে। খালি জায়গাটির অবস্থান পরিবর্তন করে পাজলটিকে এলোমেলো করা যায়, আবার সমাধানও করা যায়। আমরা কোড করে এই পাজলটিকে সমাধন করার চেষ্টা করব।

খালি জয়গা সহ নয়টি স্কয়ারের মোট ৯! = ৩৬২৮৮০ রকম কনফিগারেশন হতে পারে। যার মধ্যে একটি কনফিগারেশন সমাধান। আমাদের কাজ হবে যেকোন এলোমেলো কনফিগারেশন থেকে সেই সমাধান কনফিগারেশনে কিভাবে যেতে হবে বের করা।

আমরা সমস্যাটিকে একটি গ্রাফ হিসেবে বিবেচনা করব। যেখানে প্রতিটি কনফিগারেশন হল একেকটি নোড। আার ঐ কনফিগারেশন থেকে যে সব কনফিগারেশনে যাওয়া যায় সেগুলো হল ঐ নোডের নেইবার। প্রতিটি নোডকে আমরা ০ থেকে ৯…


Photo by Cameron Kirby on Unsplash

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

হুক কি এবং কেন সেটায় বিস্তারিত যাব না। সংক্ষেপে বলি। হুক রিঅ্যাক্টের নতুন এপিআই। হুক ব্যবহার করে ফাংশনাল কম্পোনেন্টেই স্টেট ম্যানেজ করা যায়, লাইফসাইকেল মেথডের কাজও করা যায়। অর্থাৎ হুক ব্যবহার করলে ক্লাস বেসড্ কম্পোনেন্ট ছাড়াই সব ধরণের ফাংশনালিটি ইম্প্লিমেন্ট করা যায়। এতে যা সুবিধা হয় তা হল অনেকগুলো কম্পোনেন্টের মধ্যে স্টেট রিলেটেট লজিক শেয়ার করা যায়। মানে একাধিক কম্পোনেন্টের একই কাছাকাছি স্টেট লজিক থাকলে সেটা প্রত্যেক…


একদিন জিপির কাছ থেকে এমন একটা মেসেজ পেলাম

কি এইটা? সিক্রেট মেসেজ? কোন সিক্রেট অফার নয়ত? সারা বছর অনলিমিটেড ইন্টারনেট? অন্তত মাসখানেক? নাহ অত খুশি হয়ে সম্ভবত লাভ নেই। কোন সমস্যার কারণেই হয়ত এমন মেসেজ চলে এসেছে। ইগনোর করতে যাচ্ছিলাম। তখন ভাবলাম যাই হোক, ডিকোড করার চেষ্টা করা যাক। ক্রিপ্টোগ্রাফি অল্প সল্প কিছু শিখেছিলাম। ( দারুণ এই বইটা পড়ে) দেখা যাক কাজে লাগানো যায় কিনা। কিভাবে করা যায় ডিকোড?

দেখা যাচ্ছে টেক্সটটাতে হাবিজাবি কিছু সংখ্যা আর সাথে &#;। ফরম্যাটটা এমন &#<চার অঙ্কের সংখ্যা>; সংখ্যাগুলা ২৪০০-২৫০০ মধ্যে। এক জায়গায় দেখা যাচ্ছে MB আরেক জায়গায় .88 আবার *7728*2*2#। ৮৮ পয়সায় বিশাল পরিমাণ…


“people queuing beside Louis Vuitton store” by Melanie Pongratz on Unsplash

— আসেন কানে কানে একটা সিক্রেট বলি। ‘জাভাস্ক্রিপ্ট একটি সিঙ্গেল থ্রেডেড ল্যাঙ্গুেজ।’

— কিন্তু, কিন্তু, তাহলে অ্যাসিনক্রোনাস হয় কিভাবে?

— আরে ভাই, অ্যসিনক্রোনাস হতে হলে মাল্টি-থ্রেডেড হতে হবে এমন কথা কই পাইলেন? লেখা আছে কোথাও?

—তাহলে এই কোডটা দেখেন। আপনি কি বলতে চান এই দুইটা রিকোয়েস্ট একটা শেষ হওয়ার পর আরেকটা শুরু হবে? পাইথনের মত?


Image taken from https://medium.freecodecamp.org/react-and-firebase-are-all-you-need-to-host-your-web-apps-f7ab55919f53

ফায়ারবেজ কি?

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

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

রিঅ্যাক্ট অ্যাপ

প্রথমেই একটি রিঅ্যাক্ট অ্যাপ শুরু করে…


Do you think your life sucks? Does it ever happen that you pass a pretty good day but you don’t even notice that? Yeah, we notice only the bad days and think our life sucks.

I built an android app to help people with that. If you keep that in your phone, it will send you a notification every day at the end of the day and let you label your day like ‘happy’, ‘productive’, ‘stressful’, ‘sad’ etc. You can also write down a note if you want. Later you can see how many and what percentage of your days…


Photo by Volkan Olmez on Unsplash

আপনি যদি হালকা পাতলা প্রোগ্রামিং করে থাকেন, বিশেষ করে বিভিন্ন জাজে প্রবলেম সলভ্ করার জন্য, তাহলে আপনি জানেন ফ্লোটিং পয়েন্ট নাম্বার কি প্যারাদায়ক একটা জিনিস। যদি না জানেন তাহলে এখনই F12 প্রেস করুন আর জাভাস্ক্রিপ্ট কনসোলে ছোট্ট দুটি নাম্বার যোগ করার চেষ্টা করুন।

S.j. Sakib

Amateur programmer, writer, caveman.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store