Mahmudul Hasan Shohag
banner
imaginativeshohag.bsky.social
Mahmudul Hasan Shohag
@imaginativeshohag.bsky.social
Software Engineer. Android & iOS Developer. Learning to the fullest. Ask me about Android/Compose/Kotlin, iOS/SwiftUI/Swift.

🌏 imaginativeworld.org
🔗 linkedin.com/in/mahmudulhasanshohag
🐘 mastodon.social/@shohag
𝕏 x.com/shohag_iw
হোম/টাইমলাইন স্ক্রিনের সাথে ডিটেইলস স্ক্রিন যুক্ত, যার জন‍্য ট‍্যাব আইটেম একটি। আশা করি অনেকের কাজে লাগবে।

কোনো প্রশ্ন বা সাজেশন থাকলে কমেন্টে অথবা রিপোজিটরির issue তে জানাতে পারেন।

রিপো: github.com/ImaginativeS...
May 26, 2025 at 5:00 AM
আমার "Why Not Compose!" অ‍্যাপে এরকম একটি ইউআই যুক্ত করেছি। হরিজন্টাল সোয়াইপে স্ক্রিন পরিবর্তন এবং ভার্টিকেল সোইপে টাইমলাইনের কন্টেন্ট পরিবর্তন হবে। টাইমলাইন পেজিং সাপোর্টেড, মানে ইনফাইনিট স্ক্রল করা সম্ভব।
May 26, 2025 at 5:00 AM
টিকটক, ইউটিউব শর্টস ইত‍্যাদিতে যে ভার্টিক‍্যাল স্ক্রল করে কন্টেন্ট গুলো এক্সপ্লোর করা হয়। জেটপ‍্যাক কম্পোজে এরকম ইউআই বানানো যায় pager (developer.android.com/develop/ui/c...) দিয়ে।
May 26, 2025 at 5:00 AM
আলাদা করে ডিপেন্ডেন্সির প‍্যাকেজ আইডি খুজতে হবে না গুগলে!

আমার "Why Not Compose!" প্রোজেক্টে "./gradlew refreshVersions" কমান্ডটি দিয়ে সরাসরি দেখতে পারেন এ প্লাগইনটির ব‍্যবহার।

রিপো: github.com/ImaginativeS...
GitHub - ImaginativeShohag/Why-Not-Compose: A collection of animations, compositions, UIs using Jetpack Compose. You can say Jetpack Compose cookbook, showcase or play-ground if you want!
A collection of animations, compositions, UIs using Jetpack Compose. You can say Jetpack Compose cookbook, showcase or play-ground if you want! - ImaginativeShohag/Why-Not-Compose
github.com
May 2, 2025 at 4:18 AM
ফলে ডেভেলপারের কাজ হয় শুধু কোনটি আপডেট করতে হবে সেগুলো কমেন্ট দেখে আপডেট করে দেয়া!

এ প্লাগইনটির আরেকটি সুবিধা হলো এতে বিল্টইন রেডি-টু-ইউজ ১২৫০+ ডিপেন্ডেন্সি নোটেশন (splitties.github.io/refreshVersi...) আছে। ফলে জনপ্রিয় এবং বহুব‍্যবহৃত ডিপেন্ডেন্সি সরাসরি প্লাগইন থেকেই যুক্ত করা যাবে।
May 2, 2025 at 4:18 AM
এখন নতুন একটি গ্র‍্যাডল প্লাগইনের সন্ধান পেয়েছি, নাম— "refreshVersions" (github.com/Splitties/re...). এটি "libs.versions.toml" ক‍্যাটালগ ফাইলে এবং সাথে অন‍্য কোনো গ্র‍্যাডল ফাইলে যদি ভার্সন ইনফেরমেশন থাকে, প্লাগইনটি প্রতিটি ডিপেন্ডেন্সির নিচে লেটেস্ট ভার্সনের কমেন্ট যুক্ত করে দেয়।
May 2, 2025 at 4:18 AM
এতদিন আমি "dependencyUpdates" (github.com/ben-manes/gr...) গ্র‍্যাডল প্লাগইনটি ব‍্যবহার করতাম, এটি একটি "report.txt" ফাইলে আউটডেটেড ডিপেন্ডেন্সির তালিকা দিত। তারপর একটা একটা করে ভার্সন আপডেট করতে হতো ক‍্যাটালগ ফাইলে!
GitHub - ben-manes/gradle-versions-plugin: Gradle plugin to discover dependency updates
Gradle plugin to discover dependency updates. Contribute to ben-manes/gradle-versions-plugin development by creating an account on GitHub.
github.com
May 2, 2025 at 4:18 AM
তবে কিছু থার্ড পার্টি প্লাগইন/লাইব্রেরি আছে যেগুলো দিয়ে আমরা এ সমস‍্যার সমাধান করতে পারি।

রিসেন্টলি আমি আমার ওপেন-সোর্স "Why Not Compose!" প্রোজেক্টে Gradle Version Catalogs যুক্ত করেছি, এর বড় সুবিধা হচ্ছে সব গুলো ডিপেন্ডেন্সির ভার্সন সমূহ একটি "libs.versions.toml" ফাইলে থাকে।
May 2, 2025 at 4:18 AM
এগুলো সব নিজেই লেটেস্ট ডিপেন্ডেন্সি ভার্সনে প‍্যাকেজ/লাইব্রেরি/ডিপেন্ডেন্সি গুলোকে আপডেট করে।

কিন্তু অ‍্যান্ড্রেয়েডে এরকম অফিশিয়াল কোনো ফিচার নেই। অ‍্যান্ড্রয়েড স্টু্ডিও মাঝে মাঝে সাজেশন দিলেও সব সময় সব প‍্যাকেজের জন‍্য লেটেস্ট ভার্সন সাজেস্ট করে না।
May 2, 2025 at 4:18 AM
সফটওয়‍্যার ডেভেলপমেন্টে একটা প‍্যারাদায়ক কাজ হচ্ছে ডিপেন্ডেন্সি আপডেট করা। জাভাস্ক্রিপ্ট ফ্রেমওয়ার্কে npm update বা অ‍্যাপলের প্রজেক্টে SPM প‍্যাকেজ আপডেট করতে Xcode এ "Update to Latest Package Versions" থাকে, CocoaPods ব‍্যবহার করলে "sudo gem install cocoapods" কমান্ড আছে।
May 2, 2025 at 4:18 AM
তাই মক রেস্পন্স ডেটা দিয়ে UI Testing করা একটা পসিবল সলুশন আমার কাছে মনে হয়েছে। আমার Why Not SwiftUI! অ‍্যাপে মক ডেটা দিয়ে কিভাবে UI Testing করা যায় তার একটা উদাহরন যু�¦•্ত করেছি। সোর্স: github.com/ImaginativeS...
March 3, 2025 at 5:00 AM
আমার "Why Not Compose!" অ‍্যাপে আমি দুই ধরনের উদাহরনই যুক্ত করেছি। কোনো প্রশ্ন বা সাজেশন থাকলে কমেন্টে অথবা গিটহাবে issue খুলতে পারেন।

রিপো: https://github.com/ImaginativeShohag/Why-Not-Compose/tree/dev/app/src/main/kotlin/org/imaginativeworld/whynotcompose/ui/screens/tutorial/barcodescanner
February 10, 2025 at 4:00 AM
এতে এবং Google code scanner এ একই ML Kit মডেল ব‍্যবহার করা হয়েছে। এই সিস্টেমে অ‍্যাপের সাইজ 2.4 MB এর মত বৃদ্ধি পায়, যদিও অ‍্যাপের সাইজ কমাতে মডেল অনডিমান্ড ডাউনলোড এর সুবিধা আছে।
February 10, 2025 at 4:00 AM
দ্বিতীয় সলিউশন হচ্ছে ML Kit মডেল দিয়ে বারকোড স্ক‍্যানিং (https://developers.google.com/ml-kit/vision/barcode-scanning/android)। এটির জন‍্য তুলনামুলক কিছু কোড বেশী লিখতে হয়, তবে নিজের ইচ্ছা মত ভিউ তৈরি করে Camera, Camera2 বা CameraX ব‍্যাবহার করে কোড স্ক‍্যানার তৈরি করা যায়।
February 10, 2025 at 4:00 AM
ফটো পিকারের মত ওপেন হবে, কোড ডিটেক্ট করতে পারলে ডেটা রিটার্ন দেবে।
February 10, 2025 at 4:00 AM
একটি হচ্ছে Google code scanner (https://developers.google.com/ml-kit/vision/barcode-scanning/code-scanner), যা Google play service এর মাধ‍্যমে দেয়া হয়। এর সুবিধা হলো মাত্র কয়েক লাইন কোডের মাধ‍্যমে কোনো ক‍্যামেরা পার্মিশন ছাড়াই কোড স্ক‍্যানার অ‍্যাপে যুক্ত করা যায়। অসুবিধা হলো এতে কোনো ইউআই কাস্টমাইজেশনের ব‍্যাবস্থা নেই।
February 10, 2025 at 4:00 AM
বারকোড স্ক‍্যান একটি কমন ফিচার মাঝে মাঝেই আমারদের বিভিন্ন অ‍্যাপে যুক্ত করতে হয়। একসময় ZXing (https://github.com/zxing/zxing) রিলেটেড লাইব্রেরি বারকোড স্ক‍্যানের জন‍্য জনপ্রিয় ছিল। তবে এই মুহুর্তে গুগল নিজেই আমাদের দুইটি সলিউশন প্রোভাইড করছে যে গুলো আমার কাছে প্রমিজিং লেগেছে।
February 10, 2025 at 4:00 AM