Droidcon لندن. كيف كان ذلك



في اليوم الآخر في لندن ، عقد مؤتمر droidcon. مواضيع عصرية مثل Redux ، MVI ، تحسين سرعة البناء وقدرات Gradle لم تمر. تم افتتاح الحدث بواسطة تقرير Chet Haase و Romain Guy حول تجزئة الذاكرة والاختلافات بين إصدارات Garbage Collector من Android ، وقدم Jake Wharton عرضًا تقديميًا عن Dagger.

في هذه المراجعة ، أود أن أشارك انطباعاتي عن المؤتمر وتفاصيل هذه التقارير.

لقد سمعت الكثير عن droidcon في لندن ، لكن حتى الآن لم أتمكن من زيارته ، لأنه يخرج أكثر تكلفة بكثير من ، على سبيل المثال ، droidcon Berlin ، ناهيك عن مؤتمرات موسكو. في الوقت نفسه ، ارتفع مستوى المؤتمرات الروسية ، مثل droidcon و Mobius و AppsConf بشكل ملحوظ في السنوات الأخيرة ، وأردت مقارنة الغلاف الجوي ومستوى التنظيم والتقارير مع النظراء الأجانب.

لكن أول الأشياء أولاً.


التذاكر


إذا اشتريت تذكرة مسبقًا ، فيمكنك أخذها مقابل 230 جنيهًا + ضريبة القيمة المضافة. وكان السعر النهائي حوالي 700 جنيه بما في ذلك ضريبة القيمة المضافة. إنه مكلف للغاية عند مقارنته بتذاكر المؤتمرات الروسية ، ولكنه في المتوسط ​​سعر مناسب لأوروبا. ستكلف الرحلة حوالي 30 ألف روبل ، ولكن هناك فرصة لتوفير المال ، حيث أن النصر يحلق هناك ، ويمكنك شراء تذكرة لحوالي 6000 روبل في اتجاه واحد.


الإقامة


عشنا 15 دقيقة سيرا على الأقدام من المكان. الفندق متوسط ​​، حوالي 150 جنيهًا في اليوم. في الواقع ، إذا لم تكن متطلبًا للغاية ، فيمكنك العيش في بيت شباب في وسط المدينة مقابل 20 رطلاً في اليوم.




منظمة

من حيث التنظيم ، كان المؤتمر على مستوى عالٍ إلى حد ما. أحببت الموقع نفسه: قاعة فسيحة للتواصل والاسترخاء الأخلاقي ، وجماهير مريحة تمت فيها قراءة التقارير. في القاعة كان هناك العديد من المدرجات لشركات مختلفة حيث يمكنك أخذ زوج من الأقلام والقمصان. في مساء اليوم الأول ، أقام المنظمون حفلة. كانت هناك مشروبات وموسيقى مجانية ، لكننا ذهبنا في نزهة حول لندن.






التقارير

الجدول الزمني ، في رأيي ، تم وضعه بشكل جيد للغاية ، حيث كانت هناك تقارير مثيرة للاهتمام في أي وقت. بالإضافة إلى ذلك ، عقدت ورش عمل باستمرار.


ولكن من مستوى التقارير كنت أتوقع المزيد. كان العديد منهم بدون أي مكون عملي ، على سبيل المثال ، مجرد وصف لبعض API أو الوظائف. مستوى التقارير في مؤتمرات موسكو ليس أقل على الأقل. كان هناك العديد من العروض القوية وذات الصلة. بعد ذلك ، سأكتب عن تلك التي بدت لي الأكثر إثارة للاهتمام.


المزيد عن التقارير

Keynote - Trash Talk: The Evolution of Garbage Collection على Android
Chet Haase و Romain Guy ، Google
بدأ المؤتمر بتقرير جيد للغاية حول نموذج الذاكرة في Android. أخبر الرجال كيف تغيرت من إصدار إلى آخر ، لماذا حدث هذا. لن أفصح عن التفاصيل هنا ، لكني أوصي بمشاهدة الفيديو .

تطبيق نظام الوحدات - ما مدى صعوبة ذلك؟
إلين نيلسون ، سبوتيفي
ليس تقنيًا تمامًا ، ولكنه أكثر تحفيزًا ، ولكن من هذا التقرير الذي لا يقل أهمية. تحدث إيلين عن الأسباب التي جعلتهم يفكرون في تقسيم التطبيق المترابط إلى وحدات ، ومدى صعوبة ذلك وماذا جاء من حيث كمية التعليمات البرمجية والعمليات وسرعة البناء. رابط التقرير .



Redux على Android
نيش طاهر ، WillowTree
لا أستطيع أن أقول أن هذا التقرير فتح عيني بطريقة أو بأخرى على Redux ، لكن في رأيي ، كشف المؤلف جيدًا عن جوهر هذا القرار ، وتحدث عن المشاكل وما إذا كان يستحق اختيار Redux كنمط معماري رئيسي وفي الحالات التي يكون فيها مبررًا. رابط التقرير



ربط البيانات الحديثة
Yigit Boyar و Jose Alcerreca ، Google
كان من المثير للاهتمام الاستماع إلى تقرير حول أدوات من Google من شفاه المطورين أنفسهم. من حيث المبدأ ، لم يقولوا أي شيء جديد ، كما لم تظهر الرغبة في استخدام Data Binding ، ولكن شكرًا للمحاولة. رابط التقرير

الغوص العميق في البرنامج المساعد Android Gradle
جون رودريجيز ، سكوير كاش
كان هذا التقرير واحدًا من آخر التقارير في المؤتمر ، ولم أكن مستعدًا لإدراك المعلومات الشيقة والمفيدة ، ولكن جون خرج وقدم تقريرًا جيدًا ومتشددًا حول الفروق الدقيقة المثيرة للاهتمام في Android Gradle Plugin. أوصي به أيضًا للعرض .

مساعدة خنجر مساعدتك
جيك وارتون ، جوجل
جاء تقرير جيد من جاك وارتون. جنبا إلى جنب مع Square ، قاموا بإنشاء العديد من المكتبات المفيدة للاستخدام مع Dagger التي تحل عددًا من مشاكل المطورين.

أولا ، الآن يتم إيلاء الكثير من الاهتمام لمشكلة سرعة البناء. هذا ينطبق بشكل خاص على Dagger و ButterKnife حيث يستخدمون معالج التعليقات التوضيحية و kapt. قدم Square حلاً تعمل فيه تطبيقات Dagger و ButterKnife على التفكير بدلاً من إنشاء التعليمات البرمجية. هذا يقلل بشكل طفيف من سرعة تطبيق وقت التشغيل ، ولكنه يوفر الوقت في وقت الترجمة ، وفي إطار تطويرات dev ، يكون له ما يبرره تمامًا ، نظرًا لأنه بالنسبة لأحدث طرازات Pixel و Samsung ، فإن هذا العمل لا يمكن ملاحظته.


هذه هي الطريقة التي تبدو بها تطبيقات Binder في إصدار ButterKnife مع انعكاس
@NonNull @UiThread public static Unbinder bind(@NonNull Object target, @NonNull View source) { List<Unbinder> unbinders = new ArrayList<>(); Class<?> targetClass = target.getClass(); if ((targetClass.getModifiers() & PRIVATE) != 0) { throw new IllegalArgumentException(targetClass.getName() + " must not be private."); } while (true) { for (Field field : targetClass.getDeclaredFields()) { int unbinderStartingSize = unbinders.size(); Unbinder unbinder; unbinder = parseBindView(target, field, source); if (unbinder != null) unbinders.add(unbinder); unbinder = parseBindViews(target, field, source); if (unbinder != null) unbinders.add(unbinder); unbinder = parseBindDrawable(target, field, source); if (unbinder != null) unbinders.add(unbinder); unbinder = parseBindString(target, field, source); if (unbinder != null) unbinders.add(unbinder); ... } for (Method method : targetClass.getDeclaredMethods()) { Unbinder unbinder; unbinder = parseOnCheckedChanged(target, method, source); if (unbinder != null) unbinders.add(unbinder); unbinder = parseOnClick(target, method, source); if (unbinder != null) unbinders.add(unbinder); ... } targetClass = targetClass.getSuperclass(); } return new CompositeUnbinder(unbinders); } 

يمكن العثور على مكتبة ButterKnife على هذا الرابط. نسخة Dagger موجودة هنا .


ثانيًا ، يصبح من الضروري في بعض الأحيان إدخال التبعيات في طرق العرض المخصصة التي يتم الإعلان عنها بتنسيق XML. في السابق ، كان عليك حقنها من خلال طرق محددة ورميها من خلال فئات من الخارج ، على سبيل المثال ، في مقدم العرض ، عندما يتم إرفاقها بطريقة عرض. الآن هناك طريقة ملائمة لذلك: يمكن طرح التبعيات من خلال المنشئ مباشرة بعد المعلمات المطلوبة ، ويمكن لـ LayoutInfater المخصص إنشاء عرض مع هذه المنشئات المعقدة.


كيف تبدو في الكود:


MainActivity.java
 public final class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MainComponent component = DaggerMainActivity_MainComponent.create(); InflationInjectFactory factory = component.getInjectFactory(); getLayoutInflater().setFactory(factory); setContentView(R.layout.main_activity); GalleryPresenter presenter = component.getGalleryPresenter(); GalleryView view = findViewById(R.id.gallery); presenter.attach(view); } @Component(modules = ViewModule.class) interface MainComponent { InflationInjectFactory getInjectFactory(); GalleryPresenter getGalleryPresenter(); } } 

تمت كتابة GalleryView في XML.


جاليريفيو
 public final class GalleryView extends LinearLayout { private final ViewUpdater mViewUpdater; @InflationInject public GalleryView(@Assisted Context context, @Assisted AttributeSet attrs, ViewUpdater viewUpdater) { super(context, attrs); mViewUpdater = viewUpdater; } } 

ثالثًا ، تعامل Square بطريقته الخاصة مع المشكلة التي يحلها AutoValue ، أي إنشاء مصانع للفصول ذات منشئات ثقيلة. يتم دمج هذا الحل فقط إلى أقصى حد في منطق الخنجر.


مثال للاستخدام:


UserPresenter.java
 public final class UserPresenter { private final LoadUserInteractor mLoadUserInteractor; private final String mUserId; @AssistedInject UserPresenter(@Assisted LoadUserInteractor loadUserInteractor, @Exclamation String userid) { mLoadUserInteractor = loadUserInteractor; mUserId = userid; } @AssistedInject.Factory public interface Factory { UserPresenter create(String greeting); } ... } 

UserActivity.java
 public final class UserActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_view); UserPresenter.Factory factory = DaggerUserActivity_ UserComponent.create().getUserPresenterFctory(); UserPresenter presenter = factory.create(getIntent().getStringExtra("user_id")); presenter.attach(); ... } @Component(modules = UserModule.class) interface UserComponent { UserPresenter.Factory getUserPresenterFctory(); } } 

أحببت مدى سهولة تنفيذ هذه الحلول الموضعية. ينصح أيضا للعرض .


مما لا شك فيه أنني تعلمت شيئًا مثيرًا للاهتمام بالنسبة لي من تقارير المؤتمر ، وتحدثت مع زملائي من مختلف الشركات ، وهو إضافة كبيرة إلى مؤتمر دولي ، ويستحق التواصل للذهاب للتواصل. مكافأة هذه المرة كانت زيارة إلى لندن. إذا تحدثنا عن التقارير ، فمن السهل مشاهدتها عبر الإنترنت أو حضور أحد المؤتمرات الروسية العديدة.

Source: https://habr.com/ru/post/ar428562/


All Articles