محل تبلیغات شما

آندروید



کاتلین خر ترین زبان برنامه نویس است که گوگل به من فهماند میتوان در عین باهوش بودم دست به احمقانه ترین تصیمیم زد و کاتلین رو ساپورت کرد. شرکتها هم بز بز قندی و احمقانه فکر کردن کاتلین خداس مخصوصا وقتی MVVM هم تقریبا با معرفی کاتلین تو اندروی ساپورت شد خلی از احمق های برنامه نویس فکر میکنن خیلی از خصوصیت های mvvm فثچرای کانلینه !!! 

چرا حالا من انقد شاکیم و هر چی بیشتر کاتلین یاد میگیرم بیشتر از حالم از کاتلین بهم میخوره

چون فیچراش بیشتر خار کدو میگاد تا مفید باشه
چون سادگی و انعطاف پذیری جاوا و سی رو نداره
چون خار ریدیبیلیتی کدو میگاد
چون یه روز از زندگیم رفت بابات این خط کد:
if (container1.value!!.sizeId == null || container1.value!!.typeId == null) {
Log.e("SIZ" , "******************** sized & type is null ***************************")
}
// if remove this code on kotline, you will be error from server. 
// because the sizeId and typeId didn't convert to jason and sent to server (On APK Release mode)
مشکل چی بود : یه ای پی آی زدیم. تو حالت دیباگ همه چیش عالی کار میکرد مام خوشحال و خندان ریلیز گرفتیم فرستادیم بچه ها یه تست کنن تو لالوهای خوشحالیمون بودیم که بچه ها گفتن کسخل برنامت باگ داره. هرچی من تست میکردم میگفتم باگ نداره طرف میگفت باگ داره. خلاصه فهمیدیم تو حالت ریلیز که ای پی کا رو کامپایل میکنیم یه سری فیلدا تبدیل به جیسون نمیشه. فیلد سایز آیدی و تایپ آیدی تو حالت ریلیز که مینیفای هم فعال بود اصلا به جیسون کانورت نمیشد (در حالتی که تو دیباگ کانورت انجام میشد).  رفتم کد بالا رارو لای  برنامم زدم که خیلی غیر منطقی و بی دلیل دیدم کد داره کار میکنه. 
پس نتیجه اخلاقی : کلاسای ی دیتا مدل کاتلین که خیلی کسخلای عاشق کاتلین روش مانور میدادن وقتی میخواد کامپایل بشه و ریلیز بشه، چک میکنه که تو کد آیا از اون فیلدا جایی استفاده کردی یانه . عقلشم به این نمیرسه که شاید کتابخونه جی-سون با رفلکشن بخواد با فیلدا کار کنه. نتیجه این میشه که برای اینکه فاضی رم مصرف نشه کدایی که قبال برای اون فیلد زید رو حذف میکنه خاره. و باعص میشه یه روز از جوونیم بگا برکه که این سگ پدر مثلا میخواسته کد آپتیماز زده باشه برای کاتلین ی


 تو کاتلین . زنده باد حاوا


I hate Kotlin
I Love JAVA

KOTLIn is stupest programming language . fuck to google for support fucking kotlin

با Smack‌کار میکردم که همینجوری یو هویی این ارور گریدلی میومد 
خیلی حرکتا کردم درست نشد
مثلا پروژه رو کلین کردم درست نشد
مثلا پروژه رو ریبیلد کردم درست نشد
مثلا اندروید استادیو رو ریست کردم درست نشد
مثلا سیستم و ریبوت کردم درست نشد
مثلا خودمو از 2000پا ارتفاع پرت کردم پایین درست نشد

ولی یه پروژه جدید باز کردم دیپندنسیای خود smack رو فقط تو build.gradle معرفی کردم یه ران گرفتم یه خورده روی دانلود کردن طول کشید در حد دو دقیقه ولی بعدش این پروژه جدید که هیچ کدی نزده بودم ران شد. پروژه جدید رو بستم رفتم رو پروژه اصلی یه بار دیگه پروژه رو بیلد کردم درست شد

بهر حال ایراد از گریدل و دیپندنسی بود تو تمام مراحلم من زده بودم که ازین تخمی بازیهای تخریمی رو نداشته باشم خودم فکر میکنم شاید جند فایل مربوط به دیپندنسیا ناقص شده بود که احتمالا پوشه .gradle خود پروژه رو پاک میکردمم درست میشد ولی اینکارو نکردم حال نداشتم سه ساعت صبر کنم همه چیز از اول دانلود بشه

پس چی کار کردم درست شد:
1 - یه پروژه جدید تو اندروید استادیو ساختم
2 - فقط دیپندنسیهای اسمک رو تو بیلد گریدل تعریف کردم
3 - پروژه جدید رو ران کردم و  یه چیزایی دانلود کرد و ران هم شد بدون مشکل
4 - پروژه جدید رو بستم
5 - رفتم رو پروژه ی اصلی وقتی ران زدم این ارور خری دیگه نیومد Failed to resolve: de.measite.minidns:minidns-hla و همه چیز درست کار کرد

روشای قبلی که سر جاشه که تو App.class زبان رو عوض میکردیم فقط باید یه بیس برای همه اکتیویتیا بسازیم این متد م اوراید کنیم که دیگه 5 به بالام rtl‌کار کنه

@Override
protected void attachBaseContext(Context newBase) {
Context context = Language.wrap(newBase);
super.attachBaseContext(context);
}


public static ContextWrapper wrap(Context context) {


Locale newLocale = new Locale(Social.getInstance(context).getLanguage());

Resources res = context.getResources();
Configuration configuration = res.getConfiguration();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
configuration.setLocale(newLocale);

LocaleList localeList = new LocaleList(newLocale);
LocaleList.setDefault(localeList);
configuration.setLocales(localeList);

context = context.createConfigurationContext(configuration);

} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
configuration.setLocale(newLocale);
context = context.createConfigurationContext(configuration);

} else {
configuration.locale = newLocale;
res.updateConfiguration(configuration, res.getDisplayMetrics());
}

return new ContextWrapper(context);
}

آخرین جستجو ها

اورژانس کامپیوتر سرزمین ماندگار ثبت شرکت مسئولیت محدود - ثبت برند فارسی ثبت شرکت - ثبت برند - ثبت شرکت مسئولیت محدود nadtimicutt آذربایجان ادبیاتی دانلود نرم افزار های جدید ای پی سافت bestndepatra exingecar inunerun