Android App development এর জন্য ব্যবহৃত Architectural pattern-গুলোর মধ্যে বর্তমানে MVVM সবচেয়ে জনপ্রিয়। গুগল থেকে এই প্যাটার্নে প্রোজেক্ট ডেভেলপ করার জন্য রিকমেন্ড করা হচ্ছে। আপনি ইন্টারনেটে সার্চ করলে MVVM এর যেসব ভাল ভাল টিউটোরিয়াল খুঁজে পাবেন তাদের বেশির ভাগেই ইউজ করা হয়েছে Dagger — Dependency Injection এবং Reactive Programming এর জন্য Rx. তাই আপনার মনেই হতে পারে যে, আপনার প্রোজেক্টটি MVVM এর প্রিন্সিপাল অনুসরণ করতে চাইলে Dagger ও Rx লাগবেই! কিন্তু ব্যাপারটা আসলে সেরকম না। আপনি dagger ও Rx ছাড়াও MVVM ফলো করতে পারবেন। MVVM শেখার বেশির ভাগ টিউটোরিয়ালে Dagger ও Rx এর ইমপ্লিমেন্টেশন থাকায়, এটা শেখার শুরুর দিকে আমার…


Android App Development শেখার একদম শুরুতে আমরা কোডিং আর্কিটেকচার ও অন্যান্য স্ট্যান্ডার্ড প্র্যাক্টিসের সাথে পরিচিত থাকি না। শেখার সুবিধার্থে শুরুর দিকে অ্যাপের যাবতীয় কাজগুলো সব Activity বা Fragment এর ভিতর আমরা করে থাকি। কিন্তু যখন বড় প্রোজেক্ট করি, সেটাকে বছরের পর বছর মেইনটেইন করতে হয়, নতুন ফিচার আসে বা বিজনেস লজিক চেঞ্জ হয় তখন আগের মত কোড করলে আর চলে না। যত রকম চেঞ্জ আসে বা লজিক চেঞ্জ হয় আমরা যদি Activity তে সব অ্যাড করতে থাকি কোডটা তখন আস্তে আস্তে buggy হওয়া শুরু করে। Activity এর সাইজ হয়ে যায় বিরাট বড়।

লেখাটি প্রথম প্রকাশিত হয়েছে আমার ব্যক্তিগত ব্লগ সাইট…


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

লেখাটি প্রথম প্রকাশিত হয়েছে আমার ব্যক্তিগত ব্লগে। ব্লগ থেকে পড়তে ক্লিক করুন

এই পোস্টটি বুঝার জন্য আপনাকে আগে থেকে RecyclerView কিভাবে কাজ করে বা ReclyeclerView দিয়ে কিভাবে একটা লিস্ট শো করতে হয় সে ব্যাপারে জানা থাকতে…


Android App development শুরু করার পর আমরা খুব আশ্চর্য হয়ে লক্ষ্য করি gradle নামক বস্তুটার কাজ-কারবার। ২০১৫ সালের দিকে যখন অ্যান্ড্রয়েড শুরু করি তখন দিনের মধ্যে কয়েক ঘন্টা সময় কাটতো “gradle build running…” এই লেখাটার দিকে তাকিয়ে থেকে।

আজকের এই পোস্ট এ আলোচনা করব অ্যান্ড্রয়েড APK ফাইলের জীবন চক্র। অর্থাৎ জাভা বা কটলিন থেকে, UI xml আর রিসোর্স সহ কিভাবে একটা APK file build হয় Android Studio-তে। আরো জানবো এই APK file generate করতে gradle কী কাজ করে? জানতে পারব সবুজ রঙের তিনকোণা Run button এ ক্লিক করলে আসলে কী ম্যাজিক ঘটে? …


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

রিকার্সনের বেশ কিছু প্রাথমিক ধারণা দেয়া হয়েছে প্রথমদ্বিতীয় পর্বে। সেগুলো মাথায় থাকলে আশা করি এই পর্ব বুঝতে কোনো সমস্যা হবে না।

লেখাটি প্রথম প্রকাশিত হয়েছে আমার ব্যক্তিগত ব্লগে

GCD বা গ.সা.গু. কী?

ছোটবেলায় আমরা পড়ে এসেছি গ.সা.গু. এর পূর্ণরূপ হচ্ছে গরিষ্ঠ সাধারণ গুণনীয়ক। ইংরেজিতে যাকে বলা…


ধরো তোমার দুনিয়ায় রিকার্সিভ ফাংশন বলে কিসসু নাই। তুমি মহা শান্তিতে কোড করে দিন পার করতেছো। তোমার একদিন হঠাৎ করে জটিল একটা প্রবলেম সলভ করতে ইচ্ছা করলো। জটিল (!) প্রবলেমটা হচ্ছে ১ থেকে ১০ পর্যন্ত সংখ্যাগুলোকে তুমি প্রিন্ট করতে চাও। এই জটিল প্রবলেমের সহজ সমাধানের জন্য তুমি একটা কোড লিখলে এরকম করেঃ

#include<stdio.h>void printSeries(int n)
{
for(int i=1; i<=n; i++)
printf("%d\n",i);
}
int main()
{
printSeries(10);
return 0;
}

চমৎকার ভাবে একটা ফাংশন কল করে তুমি ১ থেকে ১০ পর্যন্ত প্রিন্ট করে ফেললা! তবে এই একই কাজ করার জন্য আরেকটা দারুণ কোড লিখা যায় নিচের মত করেঃ

#include<stdio.h>void…


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

লেখাটি প্রথম প্রকাশিত হয়েছে আমার ব্যক্তিগত ব্লগে

Prerequisites for understanding this post

এই পোস্টটি পড়ে উপকৃত হবার জন্য…


Photo by William Iven on Unsplash

সেই দিনটার কথা মনে পড়ছে, যখন একটা অ্যাপের ফাইনাল রিলিজের আগে বন্ধু-বান্ধব ও পরিচিতজনদেরকে অ্যাপের APK ফাইল মেইল করতাম। একটা মেইলের লিস্টই ছিল, যাদেরকে নিয়মিত অ্যাপ টেস্ট করার জন্য মেইল করতাম। কোথাও ক্র্যাশ করলে তারা মেইলে বা ফেসবুকে নক দিয়ে বলত “অমুক বাটনে ক্লিক করে তমুক পেজে গেলাম। সেখানে গিয়ে তিন বার চোখের পলক ফেলার পরই অ্যাপ ক্র্যাশ!”। আমি আমার ডিভাইসে একই রকম করে নির্দিষ্ট পেজে গিয়ে তিন বার না, ছয়বার পলক ফেললাম। তাও ক্র্যাশ করলো না! একবার হলো কী! ক্লায়েন্টের একটা কাজ করছিলাম। মনে হয় সেটাই প্রথম ক্লায়েন্টের কাজ করা। আমাদের সব ডিভাইসে অ্যাপ চলে, ক্লায়েন্টের ফোনে রান করলে…


Image Source: Pixabay

Android App এ পরস্পর সম্পর্ক যুক্ত (relational) ডেটা স্টোর করা, প্রয়োজনের সময় ঐসব ডেটা খুঁজে বের করা, দরকার অনুযায়ী আপডেট-ডিলিট করার জন্য SQLite Database সবচেয়ে বেশি জনপ্রিয়। SQLite ছাড়াও অ্যান্ড্রয়েডে ব্যবহার উপযোগি আরো ডেটাবেজ রয়েছে। তবে এটিই সবচেয়ে বেশি পরিমাণে ব্যবহৃত হয়ে থাকে।

History of SQLite

SQLite database ডেভেলপ করেন D. Richard Hipp.


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

তো প্রোগ্রামিং শেখার সময় এই বাধাগুলো কী কী?

১. বিরাট মহৎ কোন উদ্দেশ্য নির্দিষ্ট করে প্রোগ্রামিং শিখো না

প্রোগ্রামিং শেখার প্রতিবন্ধতাগুলো খোঁজার আগে প্রোগ্রামিং শেখার learning process বা motivation নিয়ে…

Hasan Abdullah

Software Engineer at Brain Station 23 Ltd. Author at HelloHasan.Com

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