پشت هر مسئلهای که نهایتاً حل شده، اینترنت خوب و بدون مشکله [البته فقط تو ایران 🫠]
پس قبل از اینکه بخواید یه اروری رو حل کنید، حتماً به SDK Manager اندروید استودیو سر بزنید و مطمئن بشید که همهی پکهایی که دانلود کردید یا نکردید رو نشون بده(بعداً بیشتر در موردش توضیح میدم)
بعد از این رو به من بسپرید که حلش کنم😉
محض اطلاع، اینم آیدیمه:
@NimaM_PA
پس قبل از اینکه بخواید یه اروری رو حل کنید، حتماً به SDK Manager اندروید استودیو سر بزنید و مطمئن بشید که همهی پکهایی که دانلود کردید یا نکردید رو نشون بده(بعداً بیشتر در موردش توضیح میدم)
پس هر مشکلی که داشتید، اول اینترنت رو چک میکنید که از تحریم گذر کردین یا نه؟😊
بعد از این رو به من بسپرید که حلش کنم😉
محض اطلاع، اینم آیدیمه:
@NimaM_PA
🔐 تحریم گذرهای خوب که مناسب برنامهنویسیموبایل هستند:
توی کشوری که از هر طرفیتحریم شده، استفاده از تحریمگذرها برای ما برنامهنویسهای موبایل، بخصوص اندروید اجباریه🥲
1. شکن:
آدرس-> https://shecan.ir
در نوع DNS بهترین گزینهای که خیلی
وقته دست ما برنامهنویس هارو گرفته
قطعاً همین شکن عزیزه
2. 403 آنلاین:
آدرس-> https://403.online
یک خدمت دولتی از نوع DNS که عملکرد
خوبی از خودش نشون داده
3. پروکسی fodev:
آدرس-> fodev.org
برخلاف قبلیها این یکیDNS نیست.
باید این مورد رو با پورت 8118 توی
اندروید استودیو خودتون تنظیم کنید
به امید روزی که بدون تحریم وارد دنیای دیجیتال بشیم🙂
🆔 @AndroidDev_Tips
توی کشوری که از هر طرفی
1. شکن:
آدرس-> https://shecan.ir
در نوع DNS بهترین گزینهای که خیلی
وقته دست ما برنامهنویس هارو گرفته
قطعاً همین شکن عزیزه
2. 403 آنلاین:
آدرس-> https://403.online
یک خدمت دولتی از نوع DNS که عملکرد
خوبی از خودش نشون داده
هر دو تاشون اپلیکیشن ویندوز دارن. حتی 403آنلاین اپلیکیشن موبایل هم داره که خودش DNS رو ست میکنه
3. پروکسی fodev:
آدرس-> fodev.org
برخلاف قبلیها این یکی
باید این مورد رو با پورت 8118 توی
اندروید استودیو خودتون تنظیم کنید
آموزش هاشون رو به ترتیب میزارم
به امید روزی که بدون تحریم وارد دنیای دیجیتال بشیم🙂
🆔 @AndroidDev_Tips
🖐 حرف اول و آخر ساخت برنامهی موفق...
🖥 یکی از چیزهایی که در ساخت یک برنامه حرف اول رو میزنه، داشتن تخصص خیلی بالا نیست!
📲 هیچ یک از برنامههایی که امروزه خیلی حرفهای کار میکنن و فوق موفق هستن، روز اول انتشار، این شکلی نبودن و رفته رفته بهتر شدن. اصلاً بعضی هاشون هدفشون چیز دیگهای بود و تغییر مسیر دادن😳
مهمترین مورد و الزامیترین مورد، قطعاً ...
صبر و تلاش هست
با این مورده که صاحب برنامهای موفق میشید
💡 شروع به ساخت هر ایدهای سخته و حتی میتونم بگم که کافی نیست و نیاز به صبر، همراه با تلاش داره که مشکلات رو شناسایی کنید و با بهترین راهحل، اون رو به بهترین شکل ممکن پیش ببرید
🔋 پس رفیق من لطفاً پس نکش . . . 💪
🆔 @AndroidDev_Tips
🖥 یکی از چیزهایی که در ساخت یک برنامه حرف اول رو میزنه، داشتن تخصص خیلی بالا نیست!
📲 هیچ یک از برنامههایی که امروزه خیلی حرفهای کار میکنن و فوق موفق هستن، روز اول انتشار، این شکلی نبودن و رفته رفته بهتر شدن. اصلاً بعضی هاشون هدفشون چیز دیگهای بود و تغییر مسیر دادن😳
مهمترین مورد و الزامیترین مورد، قطعاً ...
با این مورده که صاحب برنامهای موفق میشید
💡 شروع به ساخت هر ایدهای سخته و حتی میتونم بگم که کافی نیست و نیاز به صبر، همراه با تلاش داره که مشکلات رو شناسایی کنید و با بهترین راهحل، اون رو به بهترین شکل ممکن پیش ببرید
🔋 پس رفیق من لطفاً پس نکش . . . 💪
🆔 @AndroidDev_Tips
🧬 تکامل در برنامه نویسی...
👨💻 برنامهنویس فولاستک کسیه که دقیقاً به این تکامل رسیده؛ ولی . . .
🌗 نمیتوان گفت که تکامل کامل در برنامهنویسی وجود دارد!
🪻 علم برنامهنویسی حد و انتها نداره که بگید بعد x سال به آخرش میرسم🙃
هر لحظه داریم شاهد دنیای گستردهتری از کدها میشیم👾
پس برنامهنویس فولاستک که میگن چیه؟🤔
💻 برنامهنویس فول استک کسیه که میتونه برای اندروید، ios، وب، ویندوز و مک برنامه بنویسه
چندین زبان برنامهنویسی بلده و با اینها برای هر سیستم عامل میتونه برنامهی متوسطِ رو به بالایی بسازه📲
قطعاً یه برنامهنویس فولاستک نمیتونه توی حوضهی خاصی مثل اندروید، در حد یک متخصص اندروید، در مورد سیستمعامل اندروید اطلاعات و تخصص داشته باشه😊
بخوای توی همهی حوضهها مهارت داشته باشی، نمیتونی درصد بالایی از هر کدومشون رو مسلط بشی😏
🆔 @AndroidDev_Tips
👨💻 برنامهنویس فولاستک کسیه که دقیقاً به این تکامل رسیده؛ ولی . . .
🪻 علم برنامهنویسی حد و انتها نداره که بگید بعد x سال به آخرش میرسم🙃
هر لحظه داریم شاهد دنیای گستردهتری از کدها میشیم👾
پس برنامهنویس فولاستک که میگن چیه؟🤔
💻 برنامهنویس فول استک کسیه که میتونه برای اندروید، ios، وب، ویندوز و مک برنامه بنویسه
چندین زبان برنامهنویسی بلده و با اینها برای هر سیستم عامل میتونه برنامهی متوسطِ رو به بالایی بسازه📲
قطعاً یه برنامهنویس فولاستک نمیتونه توی حوضهی خاصی مثل اندروید، در حد یک متخصص اندروید، در مورد سیستمعامل اندروید اطلاعات و تخصص داشته باشه😊
بخوای توی همهی حوضهها مهارت داشته باشی، نمیتونی درصد بالایی از هر کدومشون رو مسلط بشی😏
🆔 @AndroidDev_Tips
💰 بیاید فرهنگ سازی کنیم...
👾 درسته گرفتن هزینهی کمتر در اوایل کار عادی هست ولی خب حدی داره 🤧
بازار رو خراب نکن دوست عزیز😁
🤖 اول اینکه وقتی تازه کاری قطعاً باید قیمت کمتری واسه پروژه بگی
استخدام بشی هم حقوق کمتری میگیری🙄
🤗 وقتی تونستی کارفرما رو متقاعد کنی
که برای کیفیت بیشتر، هزینهی بیشتری
بده، پس رزومهت در حدی هست که بتونه
هزینهی بیشتری بگیره، پس بگیر دیگه😏
💵 کیه که پول بیشتر نخواد😊
مگه نه؟😉
🆔 @AndroidDev_Tips
👾 درسته گرفتن هزینهی کمتر در اوایل کار عادی هست ولی خب حدی داره 🤧
🤖 اول اینکه وقتی تازه کاری قطعاً باید قیمت کمتری واسه پروژه بگی
استخدام بشی هم حقوق کمتری میگیری🙄
🤗 وقتی تونستی کارفرما رو متقاعد کنی
که برای کیفیت بیشتر، هزینهی بیشتری
بده، پس رزومهت در حدی هست که بتونه
هزینهی بیشتری بگیره، پس بگیر دیگه😏
💵 کیه که پول بیشتر نخواد😊
مگه نه؟😉
🆔 @AndroidDev_Tips
👍3
💻 خودت رو به سیستم قوی محدود نکن!!
درسته اندروید استودیو اپ سنگینی هست
ولی نه در اون حد که بابت نداشتن سیستم
خیلی خفن بهونه بیاری❌
فقط اگه سیستمت ضعیفه از شبیهساز خود اندروید استودیو استفاده نکن و حتما از تکنیکهای افزایش سرعت اندروید استودیو استفاده کن
[اگرم بلد نیستی، مشکلی نداره،
در آینده بهت میگم]
📲 همون کاری که توی شبیهساز میتونی انجام بدی، با گوشی خودت هم قابل انجامه...
حتی اگه ورژن اندرویدت بالای 11 باشه، بدون کابل هم میتونی ران بگیری😉
اگه نیازه ران کردن برنامه توی گوشی رو بهتون یاد بدم، توی پیوی بگین...
PV- @NimaM_PA
🆔 @AndroidDev_Tips
درسته اندروید استودیو اپ سنگینی هست
ولی نه در اون حد که بابت نداشتن سیستم
خیلی خفن بهونه بیاری❌
شده که من با رم 4 و سیپییو زپرتی(حتی core i3 هم نبود) و مادربرد DDR4 خیلی قدیمی psGroup، اندروید استودیو رو نصب کنم و باهاش بدون مشکل کار کنم😁
فقط اگه سیستمت ضعیفه از شبیهساز خود اندروید استودیو استفاده نکن و حتما از تکنیکهای افزایش سرعت اندروید استودیو استفاده کن
📲 همون کاری که توی شبیهساز میتونی انجام بدی، با گوشی خودت هم قابل انجامه...
حتی اگه ورژن اندرویدت بالای 11 باشه، بدون کابل هم میتونی ران بگیری😉
اگه نیازه ران کردن برنامه توی گوشی رو بهتون یاد بدم، توی پیوی بگین...
PV- @NimaM_PA
🆔 @AndroidDev_Tips
🏣 فرق زبانهای برنامهنویسی...
اگه زبانی که الان داری یاد میگیری، سخت بنظر میاد، قول میدم آخرین زبانی باشه که برات سخت بنظر بیاد😉
حلقه همونه، شرط همونه، کلاس همونه، فانکشن(تابع) همونه، متغیرا همونن، دیتا تایپها یکیان؛ فقط ممکنه نحوهی نوشتنشون فرق داشته باشه
پس یاد گرفتن مفاهیم برنامهنویسی سخته نه خود زبانها😊
همینه که به جز اولین زبان،
همهی زبانها قراره براتون
راحت باشن🙂
🆔 @AndroidDev_Tips
اگه زبانی که الان داری یاد میگیری، سخت بنظر میاد، قول میدم آخرین زبانی باشه که برات سخت بنظر بیاد😉
🤖 خیلی سخت پیش میاد که زبانهای برنامهنویسی باهم تفاوت خیلی عمیق و
زیادی داشته باشن! [بخصوص بکاند]
حلقه همونه، شرط همونه، کلاس همونه، فانکشن(تابع) همونه، متغیرا همونن، دیتا تایپها یکیان؛ فقط ممکنه نحوهی نوشتنشون فرق داشته باشه
پس یاد گرفتن مفاهیم برنامهنویسی سخته نه خود زبانها😊
همینه که به جز اولین زبان،
همهی زبانها قراره براتون
راحت باشن🙂
🆔 @AndroidDev_Tips
📁 مهارت خواندن داکیومنتیشن...
هر چیزی یه رولبوک یا دفترچه راهنما داره، برنامههایی که ساخته میشن هم داکیومنتی واسه خودشون دارن که نحوهی استفادهی از اونا نوشته شده🙌
📚 قبل از اینکه آموزشِ زبان برنامهنویسی جدید ساخته بشه، قطعاً یکی رفته داکیومنت اون زبان رو خونده🙂از روی غیب که نیست
🆔 @AndroidDev_Tips
هر چیزی یه رولبوک یا دفترچه راهنما داره، برنامههایی که ساخته میشن هم داکیومنتی واسه خودشون دارن که نحوهی استفادهی از اونا نوشته شده🙌
کل برنامهنویسها باید خوندن داکیومنتیشن رو بلد باشن!!!
📚 قبل از اینکه آموزشِ زبان برنامهنویسی جدید ساخته بشه، قطعاً یکی رفته داکیومنت اون زبان رو خونده🙂
🆔 @AndroidDev_Tips
👍1
♨️ نکته:
وقتی تولبار(ToolBar or AppBar) رفت
روی نوتیفیکیشنبار سیستم و یا
باتمنویگیشن(Bottom Navigation) رفت
روی کنترلبار سیستم، کافیه این اتریبیوت
رو به لایه اصلی(Layout) صفحه اضافه
کنید:
گاهی بی دلیل، موقع آپدیت کردن لایبریها ممکنه این اتریبیوت تغییر کنه که ما میایم به صورت دستی تنظیمش میکنیم😉
🆔 @AndroidDev_Tips
وقتی تولبار(ToolBar or AppBar) رفت
روی نوتیفیکیشنبار سیستم و یا
باتمنویگیشن(Bottom Navigation) رفت
روی کنترلبار سیستم، کافیه این اتریبیوت
رو به لایه اصلی(Layout) صفحه اضافه
کنید:
android :fitsSystemWindows="true"
گاهی بی دلیل، موقع آپدیت کردن لایبریها ممکنه این اتریبیوت تغییر کنه که ما میایم به صورت دستی تنظیمش میکنیم😉
🆔 @AndroidDev_Tips
تجربیات یک برنامهنویس اندروید
🔐 تحریم گذرهای خوب که مناسب برنامهنویسیموبایل هستند: توی کشوری که از هر طرفی تحریم شده، استفاده از تحریمگذرها برای ما برنامهنویسهای موبایل، بخصوص اندروید اجباریه🥲 1. شکن: آدرس-> https://shecan.ir در نوع DNS بهترین گزینهای که…
پایانِ 403 آنلاین
این تحـ.ـریم گذر رایگان که عملکرد خوبی از خودش نشون داده بود و حاصل دولت رئیسی بود، حدود یکی-دو ماهی هست که دیگه کار نمیکنه😢
🫷 همین امر باعث شده که شکن روی نسخهی رایگانِ DNS خودش، محدودیتهایی بزاره؛ مثل محدود شدن در استفاده از هوش مصنوعی و بعضاً حتی در وبگردی . . .
🛜 حتی نداشتن ثباتِ اتصال هم دیده شده که برای سینک(Sync) کردن گریدل(Gradle) گاهاً نیاز میشه که دو یا سه بار پس از ناموفق شدن فرایند، تلاش کرد تا بلکه با شکن به هدف مدنظر رسید . . .😕
باز هم میگم: به امید روزی که بدون هرگونه تحریم وارد دنیای دیجیتال بشیم🙂
🆔 @AndroidDev_Tips
این تحـ.ـریم گذر رایگان که عملکرد خوبی از خودش نشون داده بود و حاصل دولت رئیسی بود، حدود یکی-دو ماهی هست که دیگه کار نمیکنه😢
🫷 همین امر باعث شده که شکن روی نسخهی رایگانِ DNS خودش، محدودیتهایی بزاره؛ مثل محدود شدن در استفاده از هوش مصنوعی و بعضاً حتی در وبگردی . . .
🛜 حتی نداشتن ثباتِ اتصال هم دیده شده که برای سینک(Sync) کردن گریدل(Gradle) گاهاً نیاز میشه که دو یا سه بار پس از ناموفق شدن فرایند، تلاش کرد تا بلکه با شکن به هدف مدنظر رسید . . .😕
باز هم میگم: به امید روزی که بدون هرگونه تحریم وارد دنیای دیجیتال بشیم🙂
🆔 @AndroidDev_Tips
✏️ یک آداپتور برای چند RecyclerView
قطعاً هر برنامهنویس اندرویدی با Recycler
برای نمایش آیتم و کارد کار کرده
و میدونه که باید برای نمایش اصولی،
آداپتوری(Adapter) براش بنویسه
ولی یه لحظه تصور کن . . .🙄
چهار تا صفحه داری، چند تا هم دیالوگ که
باید از RecyclerView استفاده کنی و برای
هر کدومش یه آداپتور بنویسی🤯
خب چیکار کنیم که کدی بهینه و کمحجم
داشته باشیم که قابل نگهداری و تستپذیر
باشه؟؟🤗
یه آداپتور جنریک میتونه به داد شما برسه😉
بریم تو پست بعدی یاد بدم تا بسازیش...👇
🆔 @AndroidDev_Tips
قطعاً هر برنامهنویس اندرویدی با Recycler
برای نمایش آیتم و کارد کار کرده
و میدونه که باید برای نمایش اصولی،
آداپتوری(Adapter) براش بنویسه
ولی یه لحظه تصور کن . . .🙄
چهار تا صفحه داری، چند تا هم دیالوگ که
باید از RecyclerView استفاده کنی و برای
هر کدومش یه آداپتور بنویسی🤯
بهت تبریک میگم
حالا یه کد نامنظم، پرحجم، ناخوانا و بدرد نخور داری😁
خب چیکار کنیم که کدی بهینه و کمحجم
داشته باشیم که قابل نگهداری و تستپذیر
باشه؟؟🤗
یه آداپتور جنریک میتونه به داد شما برسه😉
بریم تو پست بعدی یاد بدم تا بسازیش...👇
🆔 @AndroidDev_Tips
تجربیات یک برنامهنویس اندروید
✏️ یک آداپتور برای چند RecyclerView قطعاً هر برنامهنویس اندرویدی با Recycler برای نمایش آیتم و کارد کار کرده و میدونه که باید برای نمایش اصولی، آداپتوری(Adapter) براش بنویسه ولی یه لحظه تصور کن . . .🙄 چهار تا صفحه داری، چند تا هم دیالوگ که باید…
آداپتور عمومی | Generic Adapter
1️⃣ مرحلهی اول
ساختن آداپتور جنریک:
همه ی آداپتور هاتون رو حذف کنید چون این
آداپتور کار همه شون رو می کنه!
🖐 جای جالبش اینجاست که دیگه نیاز نیست
رابط(Interface) بزارید بین آداپتور و کدها
که موقع لانگ کلیک و کلیک عادی تو هر کدوم
یه تابع بسازید!
همچنین ارث بری از رابط هم نیاز نیست و
این بخش از پروژهتون رو بیشتر از 50 درصد
سبک تر میکنه!
برای زبانهای دیگه هم فقط مثل جاوا و...
کافیه این کد رو به یک Ai بفرستید تا تبدیل
کنه
بریم تو پست بعدی تا نحوه ی استفاده رو هم ببینیم...👇
🆔 @AndroidDev_Tips
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️⃣ مرحله ی دوم و آخر
استفاده از آداپتور جنریک:
حالا کافیه این adapter رو تنظیم کنید روی ریسایکلر ویو خودتون😉
فقط باید بجای [Item] اسم دیتا کلاس آیتم مدنظرتون رو بنویسید، بجای [Data] اطلاعات و دیتاتون رو از دیتابیس یا به هر طریقی جایگذاری کنید، بجای [ItemLayoutId] هم آیدی اون لایه ای که میخواید نشون بدید رو جایگذاری کنید!!
🆔 @AndroidDev_Tips
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
👨💻 آقای ابولفضل رادمنش زحمت کشیدن و این مخزن به دنیا ما هدیه دادن🤌
لوگوهای این مخزن با فرمت XML هست تا بهتر مورد استفاده قرار بگیره توی ریسورسهامون🙃
برای استفاده کافیه فقط انتخاب کنید و به بخش ریسورسهاتون اضافه کنید و تمام. به همین سادگی!
🖇️ لینک:
https://github.com/AblRadmanesh/VectorAsset
🆔 @AndroidDev_Tips
👍3
©️ چرا نباید کد رو «کپیپیست بیفکر» کنیم؟
کپیکردن مستقیم کد از اینترنت یا پروژههای دیگه بدون درک منطق اون، یکی از اشتباهای رایج تو مسیر یادگیری و توسعه نرمافزار هست!
✅ کاری که اکثر پیامرسانهای ایرانی، بخصوصبله انجام داد رو شما انجام ندید چون . . .
🔴 دلیل عملکرد کد رو نمیدونید و در مواجهه با ارور یا تغییر شرایط پروژه، دچار سردرگمی و باگهای متعدد میشید!
🔴 وابستگی به کدهای آماده، فرصت رشد تو مهارت حل مسئله رو از شما و تیم توسعهتون میگیره!
🔴 کوچکترین تغییر در شرایط پروژه میتونه باعث از کار افتادن کدی بشه که بدون درک کپی کردید!
به شخصه شاهد آپدیتهایپیامرسان بله بودم که با افزوده شدن هر قابلیت جدید کلی باگ جدید رو میشد که کسی از تیمشون قادر به حل اون نبود😑
حتی یه باگی داشتن که بعد هر آپدیت، یکی دو هفته ناپدید میشد ولی بعداً دوباره گل میکرد😅
🆔 @AndroidDev_Tips
کپیکردن مستقیم کد از اینترنت یا پروژههای دیگه بدون درک منطق اون، یکی از اشتباهای رایج تو مسیر یادگیری و توسعه نرمافزار هست!
✅ کاری که اکثر پیامرسانهای ایرانی، بخصوص
🔴 دلیل عملکرد کد رو نمیدونید و در مواجهه با ارور یا تغییر شرایط پروژه، دچار سردرگمی و باگهای متعدد میشید!
🔴 وابستگی به کدهای آماده، فرصت رشد تو مهارت حل مسئله رو از شما و تیم توسعهتون میگیره!
🔴 کوچکترین تغییر در شرایط پروژه میتونه باعث از کار افتادن کدی بشه که بدون درک کپی کردید!
به شخصه شاهد آپدیتهای
حتی یه باگی داشتن که بعد هر آپدیت، یکی دو هفته ناپدید میشد ولی بعداً دوباره گل میکرد😅
📌 استفاده از نمونهکدها یا کد افراد دیگه به خودی خودش اشتباه نیست؛ مسئله اصلی، نحوه استفاده از اوناست. یادگیری واقعی زمانی اتفاق میفته که کد رو تحلیل کنید و اون رو به بخشی از دانش و تجربه شخصی خودتون تبدیلش کنید😊
🆔 @AndroidDev_Tips
👍2
🦠 اولین ویروس کامپیوتری جهان...
کنجکاوی دو برادر پاکستانی!
👬 تو سال ۱۹۸۶ دو برادر پاکستانی (بسیت و امجد) ویروسی ساختن به اسم Brain که این ویروس از طریق فلاپیدیسک پخش میشد ولی بیشتر نتیجهی کنجکاوی بود تا خرابکاری🫣
❇️ همین کار ساده باعث شد دنیای فناوری بفهمه که پیشرفت بدون امنیت، یه روزی تهدید جدی به بار میاره
🟢 ویروسهایی که امروزه ابزار خرابکاری، جاسوسی و حتی جنگ نرم(سایبری) محسوب میشن، از دست دو نفر سادهلوح و کنجکاو وارد دنیامون شدن و همین تحول بود که امنیت سایبری رو به یکی از حیاتیترین حوزههای فناوری امروز تبدیل کرد😊
🆔 @AndroidDev_Tips
کنجکاوی دو برادر پاکستانی!
👬 تو سال ۱۹۸۶ دو برادر پاکستانی (بسیت و امجد) ویروسی ساختن به اسم Brain که این ویروس از طریق فلاپیدیسک پخش میشد ولی بیشتر نتیجهی کنجکاوی بود تا خرابکاری🫣
❇️ همین کار ساده باعث شد دنیای فناوری بفهمه که پیشرفت بدون امنیت، یه روزی تهدید جدی به بار میاره
🟢 ویروسهایی که امروزه ابزار خرابکاری، جاسوسی و حتی جنگ نرم(سایبری) محسوب میشن، از دست دو نفر سادهلوح و کنجکاو وارد دنیامون شدن و همین تحول بود که امنیت سایبری رو به یکی از حیاتیترین حوزههای فناوری امروز تبدیل کرد😊
🆔 @AndroidDev_Tips
👍2
تجربیات یک برنامهنویس اندروید
💰 بیاید فرهنگ سازی کنیم... 👾 درسته گرفتن هزینهی کمتر در اوایل کار عادی هست ولی خب حدی داره 🤧 بازار رو خراب نکن دوست عزیز😁 🤖 اول اینکه وقتی تازه کاری قطعاً باید قیمت کمتری واسه پروژه بگی استخدام بشی هم حقوق کمتری میگیری🙄 🤗 وقتی تونستی کارفرما رو متقاعد…
اگه فقط از تو تلگرام و سایتهای فریلنسری ایرانی پروژه گرفته باشید، این پیامم👆 رو حتماً از جون و دل درک کردید😢
راهکارش برای ما فعلاً اینه که
بریم سمت fiver و upwork تا
مطمئن باشیم که قیمتا تعرفهی
رسمی اون پلتفرمه😏
ثبتنام خودم تکمیل شه رودمپش رو براتون میزارم 😉🤝
🆔 @AndroidDev_Tips
راهکارش برای ما فعلاً اینه که
بریم سمت fiver و upwork تا
مطمئن باشیم که قیمتا تعرفهی
رسمی اون پلتفرمه😏
نه اینستاگرام 25 میلیونی اونجا خواسته شده و نه یوتیوب 18 میلیونی😅
ثبتنام خودم تکمیل شه رودمپش رو براتون میزارم 😉🤝
🆔 @AndroidDev_Tips
👍2
⌨ بستن کیبورد
این اکستنشن فانکشن (extension Function) رو سیو کنید، هر موقع خواستید کیبورد گوشی کاربر بسته بشه، کال کنید😉😁
🆔 @AndroidDev_Tips
این اکستنشن فانکشن (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
-گفت: چون من آبی دوست دارم و از بقیه رنگ ها خوشم نمیاد🙄
بعدها که مرورگرهای دیگه اومدن، برای اینکه چشم کاربراشون عادت آبی یعنی قابل کلیک رو از دست ندن، ازش تبعیت کردن و الان آبی تبدیل شده به استانداردی برای قابل کلیک بودن یک لینک یا حتی متن. همینقدر الکی الکی😅
جالبه که یه مدت ادج(edge Microsoft) سعی کرد تا شخصیسازی رو تا تغییر رنگِ لینکها گسترش بده ولی کسی حتی استقبال هم نکرد😊
🆔 @AndroidDev_Tips
👍3