en
Feedback
Javanese Online

Javanese Online

Open in Telegram

Статьи и новости, наблюдения и советы. Кодревью: http://javanese.online/%D1%80%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%BA%D0%BE%D0%B4%D0%B0/ Обсуждение в @javanese_questions Материалы пишет @Harmonizr

Show more
723
Subscribers
No data24 hours
+37 days
+530 days
Posts Archive
Спасибо @egroden за внимательность! Регистрация не через приложение для iOS — тут: https://cocoaheads-spb.timepad.ru/event/1113307/

15 ноября пройдет петербургская встреча CocoaHeads на площадке от Revolut. В программе: – Sign In with Apple (client + server) Пётр Третьяков, Redmadrobot – Рефакторинг в условиях быстрорастущего стартапа Георгий Фесенко, Revolut – Эволюция антипаттернов в Java и Kotlin Михаил Горюнов, Яндекс Афтерпати, викторина и тёплая атмосфера практически в сердце Петербурга. https://apps.apple.com/ru/app/cocoaheads-russia/id1257534277

Теперь то же самое, только вживую:

«Скажите этому чуваку, что у него эхо!» Казалось, всё должно пройти хорошо: саундчек был, настройки шумоподавления и громкости мы выбрали. Я открыл Impress на обоих экранах: один стримил, на втором видел следующий слайд. На телефоне открыл YouTube, чтобы поглядывать в чат, в Telegram держал связь с организаторами. Оказывается, чат в YouTube не работает на телефоне. Он остаётся белым полотном, и по нему не угадать, пустой он или сломался. Вот такой получился полезный опыт тестирования в проде. Приношу всем извинения за эхо и паузы в попытке всё исправить.

Стрим через пять минут. https://youtu.be/4-OOYlkf6l0

10 ноября(воскресенье) приглашаем всех желающих на бесплатный онлайн-доклад практикующего Android-разработчика Михаила Горюно
10 ноября(воскресенье) приглашаем всех желающих на бесплатный онлайн-доклад практикующего Android-разработчика Михаила Горюнова (github.com/Miha-x64, twitter.com/Miha_x64, @javanese_online) 💬Тема доклада: «Эволюция антипаттернов в Java и Kotlin». Приходите послушать и прокачать свой skill.💪🏼 Будет интересно и полезно! ——————————————— ❗️Save the date! 10 ноября в 19 по мск❗️ ——————————————— Трансляция состоится в ⏰19:00 по московскому времени на нашем Youtube-канале https://www.youtube.com/c/SkillBranch. Присоединяйся!🏃🏻‍♂️💨

Основы?.программирования?.на?.Kotlin!! Мне прислали проект на ревью и попросили пояснить, правильно ли реализованы MVP и маппинг. Отвечаю: нет, хороший маппер — выпиленный маппер, то же касается и хорошего презентера. Так что я просто разобрал встреченные в проекте ошибки. Напомню, любой желающий может прислать свой код на ревью. Если пример окажется интересным и нетипичным, я постараюсь его разобрать.

Боль мапперов Почему мапперы придумали — понятно: чтобы трансформировать данные из одного формата в другой, нужно представить
Боль мапперов Почему мапперы придумали — понятно: чтобы трансформировать данные из одного формата в другой, нужно представить их в каком-то виде. Работать непосредственно с потоком токенов или синтаксическим деревом и привязываться к формату сериализации никому не хочется, а особенно неприятно, если формат динамически типизирован (JSON, XML), а язык программирования — статически. Поэтому универсальной формой данных стали DTO и всевозможные их сочетания. Однако, код преобразования одних DTO в другие выглядит невыразительно, в нём легко ошибиться, а парсинг в промежуточные структуры избыточен. Что делать с этим императивным наследием махрового энтерпрайза? Жду ваши варианты в @javanese_questions

Тема следующей статьи или доклада
Anonymous voting

Товарищ написал статейку о минусах MVP. Очень легко читается, должно быть понятно и знакомо каждому андроидщику.

sidenote: JSON ужасно неэффективен, т. к. там постоянно повторяются имена полей объектов. JSON особенно неэффективен в Java, т. к. там UTF-16. Ещё JSON категорически неэффективен в XML (привет, SharedPreferences), т. к. каждая кавычка превращается в ".

Java hidden costs revisited Этот перевод я сделал раньше, чем канал в телеграме. Так что вот он ещё раз, исправленный и дополненный.

Форкнул и поправил план роста и развития для андроидщиков. Содержит как спорные и необязательные темы вроде Firebase, так и необходимые: языки, Java Core, Android SDK.

Любопытный блог, автор которого критикует Elegant Objects Егора Бугаенко и излагает своё видение ООП, которое называет Pragmatic Objects. The core principles of software design No DI containers, please

Написал несколько инспекций для IntelliJ IDEA / Android Studio: * атомик можно заменить на volatile, если используются только методы get и set * возвращаемое значение Enum.values() стоит кешировать Kotlin: * property delegation * не надо называть сущности ключевыми словами из Java * от инлайн-функции больше вреда, чем пользы, если внутри неё объявлены неинлайновые анонимные функции * функция не может быть заинлайнена в данной ситуации Android XML: * использование аттрибута темы <include layout="вот здесь"> Страница плагина

Я встречал два разных определения понятия Dependency Injection. 1. Пафосное название для передачи зависимостей.
new SomeServerApplication(
    new HttpServer("https", "example.com", 443),
    new DbConnectionPool(new JdbcConnection(...)),
    new HtmlResponseWriter(Charsets.UTF_8)
)
2. Передача зависимостей с помощью стороннего, «магического» (т. е. внеязыкового) механизма.
@Inject SomeServerApplication(params)
Некоторые споры и сломанные копья упираются не в разногласия между спорящими, а в разницу между определениями.

Хакатон. Разные люди, разные привычки и предпочтения. Кому-то понятна только Java с XML, т. е. нельзя просто так взять и выбрать Anko или Splitties View DSL для всего приложения. Но желание не писать легаси-код лично у меня побеждает, спонтанно получается вёрстка в коде. При этом сахар пишется на коленке и по мере необходимости — и получается очень простой и в небольших количествах.

Категорически согласен с этим господином: код должен в первую очередь кричать о том, что он делает, а не из каких компонентов состоит. https://youtu.be/YZstpc2939s?t=1564

Немного тезисов. Для рантайма, где дженерики стёрты и всё указатель, такие идиомы, как кодогенерация, макросы и рефлекшен неуместны. ProGuard не узнает, какие конвертеры в Gson используются, а какие будут только занимать место. Тонкий клиент или CRUD-приложение — частный случай дата-байндинга. Видео с #AppsConf2019: https://www.youtube.com/watch?v=Yx2VjW5G2GA Библиотека: Lychee, чат: @kotlin_lychee

Давно я ревью не делал. Здесь выполненное тестовое задание: валидатор банковских карт. Вывод из этого всего напрашивается один — упрощайте.