Сравним Kotlin-Flow и ViewModel в Android приложении, посмотрим в чем отличия и узнаем сильные стороны каждого подхода.
Все потоки
- Новые
- Лучшие
- Все
- ≥0
- ≥10
- ≥25
- ≥50
- ≥100
Актуален ли еще Solid?
Перевод статьи Роберта Мартина
Недавно я получил письмо:
В течение многих лет проверка понимания принципов SOLID было стандартной частью нашей процедуры приема на работу. Предполагалось, что кандидаты хорошо знакомы с этими принципами. Однако в последнее время один из наших менеджеров, который больше не занимается программированием, усомнился в том, что это разумно. Его аргументы заключались в том, что принцип открытости-закрытости (open–closed principle) больше не очень важен, потому что большая часть кода, который мы пишем, не содержится в больших монолитах, а внесение изменений в небольшие микросервисы безопасно и легко. Принцип подстановки Лисков (Liskov substitution principle) давно устарел, потому что мы не уделяем столько внимания наследованию, как 20 лет назад. Я думаю, нам следует рассмотреть позицию Дэна Норта по SOLID: «Просто напишите простой код».
В ответ я написал следующее письмо:
Принципы SOLID остаются актуальными и сегодня, как и в 90-е годы (и даже до этого). Это потому, что программное обеспечение не сильно изменилось за все эти годы. Оно не сильно изменилось даже с 1945 года, когда Тьюринг написал первые строчки кода для электронного компьютера. Программное обеспечение по-прежнему представляет собой операторы if, циклы while и операторы присваивания - последовательность, выбор и итерацию.
Каждое новое поколение любит думать, что их мир сильно отличается от мира предыдущего поколения. Каждое новое поколение ошибается в этом. Это то, что каждое новое поколение узнает, когда приходит следующее новое поколение, чтобы рассказать им, насколько все изменилось. Итак, давайте рассмотрим принципы один за другим.
Сценарий для апокалипсиса — геомагнитная буря 1859 года
В обыденном сознании последствия геомагнитных бурь ограничиваются головной болью и нарушением мобильной связи. Однако это справедливо лишь для слабых бурь. Вероятность же того, что мы станем свидетелями крупной чрезвычайно мала. Но на долю жителей 19 века и «местных путешественников во времени» всё же выпала такая участь. Речь идет о «Событии Каррингтона», геомагнитной бури 1859 года. В период слабой электрификации её последствия ограничились повреждениями телеграфной сети и, возможно, поломкой парочки «машин времени». По мнению некоторых экспертов, случись такая буря в наше время, она привела бы отключению электричества минимум на несколько месяцев. Рассмотрим подробнее природу события 1859 год.
Хороший инженер, плохой инженер
В организациях, которые применяют каскадный процесс или команды работают разрозненно, работа обычно передается между командами. Например, бизнес-группа определяет и предоставляет требования, группа по архитектуре решения определяет решения и проекты, группа разработки или доставки реализует решения и так далее.
Как вы понимаете, из-за меньшего взаимодействия и сотрудничества между различными функциями желаемый результат может не быть достигнут, и обычно происходит доработка, потому что каждая команда сосредотачивается на своей собственной области и выполняет то, что от них просят.
Как дополнить данные в Amplitude информацией из CRM и других систем с помощью S2S событий
Межсерверные (server-to-server или S2S) события позволяют отслеживать кастомные события и параметры через HTTP запросы. Они часто используются в мобильной атрибуции, например, в Appsflyer или в Adjust. При этом S2S события можно использовать и в Amplitude. Рассказываем как это настроить.
Аминокислоты как ноты: как звучит белок?
Существует высказывание: «о политике и вкусах не спорят». К сожалению, споров на эти темы все же хватает. Главный же посыл этой фразы в том, что у каждого человека могут быть свои предпочтения в кино, литературе, музыке. Кто-то случает Шуберта и призирает AC/DC, кого-то вдохновляют песни Жанны Агузаровой, а кто-то предпочитает слушать саундтреки к любимым фильмам. Вкусовое разнообразие обусловлено невероятно широким диапазоном звуков, которые мы способны создавать с помощью самых разных музыкальных инструментов (и своего голоса, конечно), от духовых и струнных до ударных и клавишных. Но какой будет мелодия, если исполнителем будет белок? Данный эксперимент увенчался успехом, но результат был, мягко говоря, специфическим. И вот ученые из Национального университета Сингапура решили усовершенствовать методику преобразования белков в музыку, сделав ее более приятной человеческому слуху. Как именно белок становится музыкальным инструментом, какие мелодии он способен играть, и что удалось сочинить ученым в результате? Ответы на эти вопросы мы найдем в докладе ученых. Поехали.
Правила «идеального программиста»
Когда меня спрашивают про мой опыт работы программистом, в частности про время потраченное от первого, до последнего рабочего куска кода, я привык отвечать — «От пары лет, до пары месяцев». До текущего момента этот ответ был довольно странный, но имеющий право на жизнь, ибо может показаться, что полученный опыт работы «IT-шником-одиночкой» (кем я и был до недавнего времени) не в IT компании довольно сложно применить к боевой разработке и в расчет к опыту профессиональной деятельности применяться не должен. Но это не так. Недавно мне довелось перечитать один из бестселлеров трилогии дядюшки Боба -«Идеальный программист» и сквозь призму времени, довольно странного опыта и изученного материала я готов обозначить, пожалуй, главные навыки, которые должен иметь, либо развивать «Идеальный программист». Данный список является несколько абстрактным, что делает его применимым не только для разработки, но и для других сфер.
Материалы митапа для аналитиков: ценообразование, дашборд для SCRUM-команд, построение процессов
По традиции делимся материалами своего последнего митапа для аналитиков. В этот раз записи могут пригодиться тем, кто нанимает людей в команду и начинает выстраивать аналитические процессы, сотрудникам маркетплейсов и площадок для объявлений, а также SCRUM-мастерам.
Популярные расширения для PostgreSQL: как установить и для чего использовать
Облачные базы данных Selectel поддерживают 40 расширений для PostgreSQL. Некоторые добавляют небольшие радости оптимизации баз данных, другие — заменяют отдельные модули разработки на стороне приложения. На данный момент расширениями пользуются 26% пользователей DBaaS. Мы узнали, какие экстеншены наиболее популярны у клиентов и где они их применяют.
Если вы опытный DBA, вы точно нужны в комментариях — расскажите, какие расширения используете и как они решают ваши задачи.
Нужно ли DevOps’ам уметь в кодинг?
IT — сфера большая и многогранная. В ней обитают программисты и сетевики, сисадмины и инженеры. Иногда попадаются копирайтеры, дизайнеры и маркетологи. Но это не точно.
Кто-то ушел в «компьютерную» профессию осознанно: сначала радиокружок, потом — технический факультет ВУЗа. Кто-то стал айтишником и вовсе по воле случая.
С точки зрения обывателя каждый «технарь» обязан как минимум чинить компьютеры любого вида и возраста. И уж точно понимать в программировании. Как раз о последнем мы и хотели бы поговорить: насколько важны кодерские навыки ИТ-спецам, не занятым непосредственно разработкой?
Мы поделимся с вами двумя историями двоих наших коллег из отдела DevOps. Оба они в какой-то момент интересовались языками программирования, однако пошли по другому пути. Это тенденция, заговор или несчастный случай? Как и почему это случилось? Ответы под катом!
Будущее ствольной артиллерии
Сейчас мы живём в интересное время. С одной стороны, войска всех стран завалены техникой поздней Первой Холодной войны (те же М109, Акации, Грады, да даже PzH 2000 – всё детища той эпохи), которая активно модернизируется, с другой – всё больше и больше становится роботов, космос стал полноценным доменом (по классификации США), где ведутся БД, потоки информации тоже становятся оружием. После боёв в Карабахе очередной раз похоронили артиллерию, всё будущее стали считать за ударными БПЛА и дронами-камикадзе. Но, между тем, в Бристоле летом проходит конференция Future Indirect Fires 2021 (Будущее навесного огня 2021), где обсуждаются проблемы развития западной артиллерии; в США, России, Израиле, Китае, Южной Корее и других странах идут активные работы по вооружению, которое может сейчас многим показаться фантастикой. Так давайте заглянем, что таится во мраке тёмного будущего.
Обеспечиваем безопасность стеков Docker Compose с помощью CrowdSec
В этой статье рассказывается, как объединить CrowdSec и Docker Compose для защиты приложений, заключенных в контейнеры. Это позволит нам:
• автоматически закрывать скомпрометированным IP-адресам доступ к нашим контейнерным сервисам;
• вручную добавлять/удалять и проверять решения о запрете;
• отслеживать поведение CrowdSec (с помощью cli и дашбордов).
Как настроить автоматическую сборку образов ВМ для VMware Cloud Director — компактное руководство
Привет, Хабр! Меня зовут Роман Петров, занимаюсь разработкой продуктов для управления учетными данными в SberCloud. В рамках одного проекта мне потребовалось автоматизировать сборку виртуальных машин под VMware Cloud Director.
Можно было решить эту задачу с помощью инструментов VMware: Fusion, Workstation или Player, но они требуют покупки лицензий, а последний еще и установки не обновляемого пакета VMware VIX API в случае GNU\Linux. Я выбрал альтернативный путь и построил необходимый пайплайн на базе опенсорсного VirtualBox.
Под катом — кратко о том, как я это сделал.
Самописец Михалыча с L1. Или один день из жизни инженера технической поддержки Schneider Electric
07:00
Слышу звуки будильника. Вот и добрейшее утро повисло расходящимися тучами.
08:50
Прохожу турникеты в офис, машу рукой девочкам с Reception, здороваюсь с ангелами из охраны.
Захожу в наш открытый open space...
Как грумить задачу: чек-лист с примерами
Все примеры ниже — специфичные и подойдут не каждому, они построены в основном на продуктах Mindbox «Рассылки» и «Программа лояльности». Продукты помогают нашим клиентам запускать автоматические рассылки по триггерам (действиям или событиям), чтобы не спамить пользователей, выдавать промокоды и выстраивать бонусные системы. Если поймете, что чек-лист полезен, можете заменить примеры на свои и использовать.
Ниже подробнее о том, как сделать качественный грум:
- цель грума,
- необходимый минимум,
- уточнение требований и контекста,
- типичные этапы,
- особенности при доработке механик.
Личное планирование: от стикеров на мониторе до целей на 20 лет. Часть первая
Привет, я Дарья Двоеглазова, менеджер продукта в Quadcode. 3,5 года назад я пришла работать в IT и сразу окунулась в мир управления проектами. В статье я расскажу о том, как прошла путь от стикеров на мониторе до планов на 20 лет.
Максимум планирования, с которым я встречалась до начала работы, — школьный дневник и блокнот на телефоне для списка покупок. Все изменилось, когда я вышла на работу: мой монитор стал обрастать стикерами с напоминаниями. Это действительно помогало на первом этапе, пока экран не оказался заклеенным стикерами по всему периметру.
За это время я попробовала несколько инструментов и множество разных методов управления временем. Сейчас моя система позволяет мне планировать долгосрочные цели на 10-20 лет. Конечно, планы не всегда сбываются, но я предпочитаю идти (или хотя бы лежать) к своим целям. Кстати, недавно я достигла цели, к которой шла больше 5 лет.
Что должен, но не знает про конкуренцию в PostgreSQL каждый разработчик?
Опыт показывает, что разработчики редко задумываются о проблемах, которые могут возникать при многопользовательском доступе к данным. При этом практически любое web-приложение является многопользовательским и так или иначе использует блокировки при доступе к данным в БД. При неправильном использовании эти блокировки могут больно бить по пользователям, а иногда и по системе в целом. Поэтому рано или поздно каждый разработчик многопользовательских систем должен задуматься о том, как ему начать работать с БД так, чтобы пользователи не мешали другу другу. Многие считают, что это сложно, давайте вместе убедимся, что это не так.
Прокачиваем силу — Rust и Windows API
Недавно я написал статтью Трясём стариной — или как вспомнить Ассемблер, если ты его учил 20 лет назад. В статье рассказывается о том, как изучать ассемблер на примере игрушки 2048. Возможно для целей самой статьи игрушка была подходящая, но конечный результат меня немного удручил. Бинарник размером в 10 килобайт, который потребляет 2 мегабайта памяти, из-за неправильно слинкованной библиотеки резал глаза.
Посему я задался вопросом, а как это можно было бы сделать правильнее? Наверняка есть намного более удачное решение. (И организовал ещё один конкурс с призами в конце статьи)
А почему бы не сделать на Rust, и правильно прикрученных библиотеках? При этом, если вы знаете, что делаете, то вы можете запросто уменьшить количество потребляемой оперативной памяти, но при этом написать визуальную игрушку с использованием Windows API.
Причём это не значит, что вы будете использовать какую-то нестандартную библиотеку. Встречайте — windows-rs, проект поддерживаемый Microsoft. Ваш билет в мир Windows, если вы пишете на Rust.
Почему онлайн-обучение вытесняет традиционное и как эффективно учиться онлайн?
Еще лет 20–30 назад обучение в России редко выходило за рамки школы, техникума, университета и периодических курсов повышения квалификации. Но сегодня все чаще упоминается концепция lifelong learning, или обучение на протяжении всей жизни.
Разбираемся почему онлайн-обучение вытесняет традиционное и как эффективно учиться онлайн?
Во все порты: одна карта и три картридера
Казалось бы, выбор картридера очевидным образом влияет на скорость карт памяти: модели с интерфейсом USB 3.x всегда быстрее их предков с USB 2.0, но все ли картридеры USB 3.x одинаково шустрые? Есть ли для них смысл в USB 3.2 Gen 2 (10 Гбит/с), или же это заведомый overkill и маркетинговый шум?
Мне захотелось проверить это на примере работы microSDXC Transcend 340S на 256 ГБ (TS256GUSD340S) с тремя разными картридерами. Для чистоты эксперимента выбрал ридеры той же фирмы (благо, их часто закупают). Ниже привожу результаты тестов, но для начала опишу основные условия их проведения.
Материнка: Asus Maximus VIII Hero (старая, но всё ещё добрая);
Камень: Core i7-7700K на частоте 4500 МГц (45x100x4+HT);
Оперативка: 2 планки по 8 Гб Kingston HyperX DDR4-3466 в двухканальном режиме;
Два твердотельника по полтерабайта: WD Black SN750 (под систему) + TS512GSSD452K (хранилка);
Б/п: SSR-750TR (он же Seasonic Prime TX-750).
Картридеры: Transcend HUB5C, RDF9K2 и RDF5
Операционка: 64-разрядная Win 7 с последними обновками (ESU).