تجربیات یک برنامه‌نویس اندروید
15 subscribers
14 photos
6 links
🥏 یه تازه کاری یا حرفه‌ای؟
🌟 تو این کانال به تجربیات و آزمون-خطای یک برنامه نویس اندروید دسترسی داری😉
⭐️ راه حل هر باگ و مشکلی که ممکنه بر بخوری، اینجاست. از مسائل طراحی گرفته تا کدها🙂
🌠 من اینجام که هر مشکلی داشتی حل کنم👇
@NimaM_PA
Download Telegram
💻 خودت رو به سیستم قوی محدود نکن!!

درسته اندروید استودیو اپ سنگینی هست
ولی نه در اون حد که بابت نداشتن سیستم
خیلی خفن بهونه بیاری

شده که من با رم 4 و سی‌پی‌یو زپرتی(حتی core i3 هم نبود) و مادربرد DDR4 خیلی قدیمی psGroup، اندروید استودیو رو نصب کنم و باهاش بدون مشکل کار کنم😁


فقط اگه سیستمت ضعیفه از شبیه‌ساز خود اندروید استودیو استفاده نکن و حتما از تکنیک‌های افزایش سرعت اندروید استودیو استفاده کن
[اگرم بلد نیستی، مشکلی نداره،
در آینده بهت میگم]

📲 همون کاری که توی شبیه‌ساز میتونی انجام بدی، با گوشی خودت هم قابل انجامه...
حتی اگه ورژن اندرویدت بالای 11 باشه، بدون کابل هم میتونی ران بگیری😉

اگه نیازه ران کردن برنامه توی گوشی رو بهتون یاد بدم، توی پیوی بگین...
PV- @NimaM_PA

🆔 @AndroidDev_Tips
🏣 فرق زبان‌های برنامه‌نویسی...

اگه زبانی که الان داری یاد میگیری، سخت بنظر میاد، قول میدم آخرین زبانی باشه که برات سخت بنظر بیاد😉

🤖 خیلی سخت پیش میاد که زبان‌های برنامه‌نویسی باهم تفاوت خیلی عمیق و
زیادی داشته باشن! [بخصوص بک‌اند]


حلقه همونه، شرط همونه، کلاس همونه، فانکشن(تابع) همونه، متغیرا همونن، دیتا تایپ‌ها یکی‌ان؛ فقط ممکنه نحوه‌ی نوشتن‌شون فرق داشته باشه
پس یاد گرفتن مفاهیم برنامه‌نویسی سخته نه خود زبان‌ها😊

همینه که به جز اولین زبان،
همه‌ی زبان‌ها قراره براتون
راحت باشن🙂

🆔 @AndroidDev_Tips
📁 مهارت خواندن داکیومنتیشن...

هر چیزی یه رول‌بوک یا دفترچه راهنما داره، برنامه‌هایی که ساخته میشن هم داکیومنتی واسه خودشون دارن که نحوه‌ی استفاده‌ی از اونا نوشته شده🙌

کل برنامه‌نویس‌ها باید خوندن داکیومنتیشن رو بلد باشن!!!


📚 قبل از اینکه آموزشِ زبان برنامه‌نویسی جدید ساخته بشه‌، قطعاً یکی رفته داکیومنت اون زبان رو خونده🙂 از روی غیب که نیست

🆔 @AndroidDev_Tips
👍1
♨️ نکته:
     وقتی تولبار(‌ToolBar or AppBar) رفت
     روی نوتیفیکیشن‌بار سیستم و یا
     باتم‌نویگیشن(Bottom Navigation) رفت
     روی کنترل‌بار سیستم، کافیه این اتریبیوت
     رو به لایه اصلی(Layout) صفحه اضافه
     کنید:

android :fitsSystemWindows="true"


گاهی بی دلیل، موقع آپدیت کردن لایبری‌ها ممکنه این اتریبیوت تغییر کنه که ما میایم به صورت دستی تنظیمش می‌کنیم😉

🆔 @AndroidDev_Tips
تجربیات یک برنامه‌نویس اندروید
🔐 تحریم گذر‌های خوب که مناسب برنامه‌نویسی‌موبایل هستند: توی کشوری که از هر طرفی تحریم شده، استفاده از تحریم‌گذرها برای ما برنامه‌نویس‌های موبایل، بخصوص اندروید اجباریه🥲 1. شکن: آدرس-> https://shecan.ir         در نوع DNS بهترین گزینه‌ای که…
پایانِ 403 آنلاین

این تحـ.ـریم گذر رایگان که عملکرد خوبی از خودش نشون داده بود و حاصل دولت رئیسی بود، حدود یکی-دو ماهی هست که دیگه کار نمی‌کنه😢

🫷 همین امر باعث شده که شکن روی نسخه‌ی رایگانِ DNS خودش، محدودیت‌هایی بزاره؛ مثل محدود شدن در استفاده از هوش مصنوعی و بعضاً حتی در وب‌گردی . . .
🛜 حتی نداشتن ثباتِ اتصال هم دیده شده که برای سینک(Sync) کردن گریدل(Gradle) گاهاً نیاز میشه که دو یا سه بار پس از ناموفق شدن فرایند، تلاش کرد تا بلکه با شکن به هدف مدنظر رسید . . .😕

باز هم میگم: به امید روزی که بدون هرگونه تحریم وارد دنیای دیجیتال بشیم🙂

🆔 @AndroidDev_Tips
✏️ یک آداپتور برای چند RecyclerView

قطعاً هر برنامه‌نویس اندرویدی با Recycler
برای نمایش آیتم و کارد کار کرده
و می‌دونه که باید برای نمایش اصولی،
آداپتوری(Adapter) براش بنویسه

ولی یه لحظه تصور کن . . .🙄
چهار تا صفحه داری، چند تا هم دیالوگ که
باید از RecyclerView استفاده کنی و برای
هر کدومش یه آداپتور بنویسی🤯

بهت تبریک میگم
حالا یه کد نامنظم، پرحجم، ناخوانا و بدرد نخور داری😁



خب چیکار کنیم که کدی بهینه و کم‌حجم
داشته باشیم که قابل نگه‌داری و تست‌پذیر
باشه؟؟🤗

یه آداپتور جنریک می‌تونه به داد شما برسه😉

بریم تو پست بعدی یاد بدم تا بسازیش...👇
🆔 @AndroidDev_Tips
تجربیات یک برنامه‌نویس اندروید
✏️ یک آداپتور برای چند RecyclerView قطعاً هر برنامه‌نویس اندرویدی با Recycler برای نمایش آیتم و کارد کار کرده و می‌دونه که باید برای نمایش اصولی، آداپتوری(Adapter) براش بنویسه ولی یه لحظه تصور کن . . .🙄 چهار تا صفحه داری، چند تا هم دیالوگ که باید…
آداپتور عمومی | Generic Adapter

1️⃣ مرحله‌ی اول

ساختن آداپتور جنریک:
class GenericAdapter<T>(
private val data: List<T>,
@LayoutRes private val layoutId: Int,
private val bind: (View, T) -> Unit,
private val onClick: ((T) -> Unit)? = null,
private val onLongClick: ((T) -> Unit)? = null ) :
RecyclerView.Adapter<GenericAdapter<T>.ViewHolder>() {

inner class ViewHolder(val view: View) :
RecyclerView.ViewHolder(view) {
fun bindItem(item: T) {
bind(view, item)
// فرایند کلیک عادی:
view.setOnClickListener {
onClick?.invoke(item)
}
//فرایند کلیک طولانی:
view.setOnLongClickListener {
onLongClick?.invoke(item)
true
}
}
}

override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int):
ViewHolder {

val view = LayoutInflater.from(parent.context).inflate(layoutId, parent, false)
return ViewHolder(view)

}

override fun onBindViewHolder(
holder: ViewHolder,
position: Int) {

holder.bindItem(data[position])

}

override fun getItemCount() = data.size

}

همه ی آداپتور هاتون رو حذف کنید چون این
آداپتور کار همه شون رو می کنه!

🖐 جای جالبش اینجاست که دیگه نیاز نیست
رابط(Interface) بزارید بین آداپتور و کدها
که موقع لانگ کلیک و کلیک عادی تو هر کدوم
یه تابع بسازید!
همچنین ارث بری از رابط هم نیاز نیست و
این بخش از پروژه‌تون رو بیشتر از 50 درصد
سبک تر می‌کنه!

برای زبان‌های دیگه هم فقط مثل جاوا و...
کافیه این کد رو به یک Ai بفرستید تا تبدیل
کنه

بریم تو پست بعدی تا نحوه ی استفاده رو هم ببینیم...👇
🆔 @AndroidDev_Tips
آداپتور عمومی | Generic Adapter

2️⃣ مرحله ی دوم و آخر

استفاده از آداپتور جنریک:
val adapter = GenericAdapter<[Item]>(
data = [Data],
layoutId = R.layout.[ItemLayoutId],
bind = { view, item ->
view.findViewById<[TextView]>(R.id.[aViewId]).text = item.[Name]
//هر کدی که میخواید توی کلاس بایند ران بشه
},
onClick = { //کد های فرایند کلیک عادی },
onLongClick = { //کدهای فرایند کلیک طولانی }
)

حالا کافیه این adapter رو تنظیم کنید روی ریسایکلر ویو خودتون😉

فقط باید بجای [Item] اسم دیتا کلاس آیتم مدنظرتون رو بنویسید، بجای [Data] اطلاعات و دیتاتون رو از دیتابیس یا به هر طریقی جایگذاری کنید، بجای [ItemLayoutId] هم آیدی اون لایه ای که میخواید نشون بدید رو جایگذاری کنید!!

🆔 @AndroidDev_Tips
🪧 مخزنی در گیت‌هاب با 1700 لوگو 🤩

👨‍💻 آقای ابولفضل رادمنش زحمت کشیدن و این مخزن به دنیا ما هدیه دادن🤌

لوگو‌های این مخزن با فرمت XML هست تا بهتر مورد استفاده قرار بگیره توی ریسورس‌هامون🙃

برای استفاده کافیه فقط انتخاب کنید و به بخش ریسورس‌هاتون اضافه کنید و تمام. به همین سادگی!


🖇️ لینک:
https://github.com/AblRadmanesh/VectorAsset

🆔 @AndroidDev_Tips
👍3
©️ چرا نباید کد رو «کپی‌پیست بی‌فکر» کنیم؟

کپی‌کردن مستقیم کد از اینترنت یا پروژه‌های دیگه بدون درک منطق اون، یکی از اشتباهای رایج تو مسیر یادگیری و توسعه نرم‌افزار هست!

کاری که اکثر پیام‌رسان‌های ایرانی، بخصوص بله انجام داد رو شما انجام ندید چون . . .
🔴 دلیل عملکرد کد رو نمی‌دونید و در مواجهه با ارور یا تغییر شرایط پروژه، دچار سردرگمی و باگ‌های متعدد میشید!
🔴 وابستگی به کدهای آماده، فرصت رشد تو مهارت حل مسئله رو از شما و تیم توسعه‌تون می‌گیره!
🔴 کوچک‌ترین تغییر در شرایط پروژه می‌تونه باعث از کار افتادن کدی بشه که بدون درک کپی کردید!

به شخصه شاهد آپدیت‌های پیام‌رسان بله بودم که با افزوده شدن هر قابلیت جدید کلی باگ جدید رو میشد که کسی از تیمشون قادر به حل اون نبود😑
حتی یه باگی داشتن که بعد هر آپدیت، یکی دو هفته ناپدید میشد ولی بعداً دوباره گل میکرد😅

📌 استفاده از نمونه‌کدها یا کد افراد دیگه به خودی خودش اشتباه نیست؛ مسئله اصلی، نحوه استفاده از اوناست. یادگیری واقعی زمانی اتفاق میفته که کد رو تحلیل کنید و اون رو به بخشی از دانش و تجربه شخصی خودتون تبدیلش کنید😊


🆔 @AndroidDev_Tips
👍2
🦠 اولین ویروس کامپیوتری جهان...
کنجکاوی دو برادر پاکستانی!

👬 تو سال ۱۹۸۶ دو برادر پاکستانی (بسیت و امجد) ویروسی ساختن به اسم Brain که این ویروس از طریق فلاپی‌دیسک پخش می‌شد ولی بیشتر نتیجه‌ی کنجکاوی بود تا خرابکاری🫣

❇️ همین کار ساده باعث شد دنیای فناوری بفهمه که پیشرفت بدون امنیت، یه روزی تهدید جدی به بار میاره

🟢 ویروس‌هایی که امروزه ابزار خرابکاری، جاسوسی و حتی جنگ نرم(سایبری) محسوب میشن، از دست دو نفر ساده‌لوح و کنجکاو وارد دنیامون شدن و همین تحول بود که امنیت سایبری رو به یکی از حیاتی‌ترین حوزه‌های فناوری امروز تبدیل کرد😊

🆔 @AndroidDev_Tips
👍2
تجربیات یک برنامه‌نویس اندروید
💰 بیاید فرهنگ سازی کنیم... 👾 درسته گرفتن هزینه‌ی کمتر در اوایل کار عادی هست ولی خب حدی داره 🤧 بازار رو خراب نکن دوست عزیز😁 🤖 اول اینکه وقتی تازه کاری قطعاً باید قیمت کمتری واسه پروژه بگی استخدام بشی هم حقوق کمتری می‌گیری🙄 🤗 وقتی تونستی کارفرما رو متقاعد…
اگه فقط از تو تلگرام و سایت‌های فریلنسری ایرانی پروژه گرفته باشید، این پیامم👆 رو حتماً از جون و دل درک کردید😢

راهکارش برای ما فعلاً اینه که
بریم سمت fiver و upwork تا
مطمئن باشیم که قیمتا تعرفه‌ی
رسمی اون پلتفرمه😏

نه اینستاگرام 25 میلیونی اونجا خواسته شده و نه یوتیوب 18 میلیونی😅


ثبت‌نام خودم تکمیل شه رودمپش رو براتون میزارم 😉🤝

🆔 @AndroidDev_Tips
👍2
بستن کیبورد

این اکستنشن فانکشن (extension Function) رو سیو کنید، هر موقع خواستید کیبورد گوشی کاربر بسته بشه، کال کنید😉😁


// copy to YourClass.kt file ->
fun View.closeKeyboard() {
    val inputMethodManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
}

// usage
binding.root.closeKeyboard()



🆔 @AndroidDev_Tips
👍2
👓 از مارک اندریسن(سازنده مرورگر موزاییک) پرسیدن چرا لینک‌ها آبی هستن؟

-گفت: چون من آبی دوست دارم و از بقیه رنگ ها خوشم نمیاد🙄
بعدها که مرورگرهای دیگه اومدن، برای اینکه چشم کاربراشون عادت آبی یعنی قابل کلیک رو از دست ندن، ازش تبعیت کردن و الان آبی تبدیل شده به استانداردی برای قابل کلیک بودن یک لینک یا حتی متن. همینقدر الکی الکی😅

جالبه که یه مدت ادج(edge Microsoft) سعی کرد تا شخصی‌سازی رو تا تغییر رنگِ لینک‌ها گسترش بده ولی کسی حتی استقبال هم نکرد😊

🆔 @AndroidDev_Tips
👍3
بیش از ۳.۸ هزار میلیارد تومان(همت) فروش در Black Friday فقط در دیجی‌پی😳


از 1 تا 10 آذر، دیجی‌پی با 1.2 میلیون سفارش از 21 دسته کالا، رکورد فروش ۳.۸ همتی توسط کاربران رو ثبت کرده🫣

نسبت به همین بازه تو سال قبلی، رشد ۱۵۳% درصدی داشته (حدود 2.5 برابر شده)
این آمار فقط برای دیجی‌پی هست که یه پلتفرم اعتباری(قسطی) از زیر مجموعه‌ی دیجی‌کالاست و با تپسی هم همکاری داره!


منبع

🆔 @AndroidDev_Tips
👍2
تجربیات یک برنامه‌نویس اندروید
بیش از ۳.۸ هزار میلیارد تومان(همت) فروش در Black Friday فقط در دیجی‌پی😳 از 1 تا 10 آذر، دیجی‌پی با 1.2 میلیون سفارش از 21 دسته کالا، رکورد فروش ۳.۸ همتی توسط کاربران رو ثبت کرده🫣 نسبت به همین بازه تو سال قبلی، رشد ۱۵۳% درصدی داشته (حدود 2.5 برابر شده) این…
کل فروش دیجی‌کالا توی این 10 روز، با 3.8 همت فروش اعتباری رو حدودا 15 همت برآورد کردن😳

15,000,000,000,000 = 1.5×10¹¹
پشمـــــام😱

به ازای هر سفارش، دیجی‌کالا 9 الی 12 درصد از تأمین‌کننده یا همون فروشگاه، کمیسیون میگیره؛ فقط 10% به صورت میانگین حساب کنیم، 1.5 همت سود دیجی‌کالا شده فقط🤪
هزینه‌ی ارسال و پردازش رو هم که از تأمین کننده میگیره
🎮 اپلیکیشن "گیم سنتر هوشمند"

> اولین اتوماسیون مدیریت گیم‌نت و کافه بردگیم

👤 ساخت پروفایل برای مشتریان ثابت
📃 حسابداری و محاسبه‌ی دقیق فاکتورها
📊 آمارگیری دقیق و کاربردی
🔒 امن و غیر قابل نفوذ
🚶 رصد و تحلیل رفتار مشتریان

نسخه‌ی 1.0.1 پایدار:
http://cafebazaar.ir/app/?id=ir.lifeplus.gamenethelper&ref=share
👍2