![](https://webcf.waybackmachine.org/web/20211006155813im_/https://habrastorage.org/getpro/habr/upload_files/3de/a4d/720/3dea4d72029f51afff6cca023003f118.jpg)
Сравним Kotlin-Flow и ViewModel в Android приложении, посмотрим в чем отличия и узнаем сильные стороны каждого подхода.
Сравним Kotlin-Flow и ViewModel в Android приложении, посмотрим в чем отличия и узнаем сильные стороны каждого подхода.
Перевод статьи Роберта Мартина
Недавно я получил письмо:
В течение многих лет проверка понимания принципов SOLID было стандартной частью нашей процедуры приема на работу. Предполагалось, что кандидаты хорошо знакомы с этими принципами. Однако в последнее время один из наших менеджеров, который больше не занимается программированием, усомнился в том, что это разумно. Его аргументы заключались в том, что принцип открытости-закрытости (open–closed principle) больше не очень важен, потому что большая часть кода, который мы пишем, не содержится в больших монолитах, а внесение изменений в небольшие микросервисы безопасно и легко. Принцип подстановки Лисков (Liskov substitution principle) давно устарел, потому что мы не уделяем столько внимания наследованию, как 20 лет назад. Я думаю, нам следует рассмотреть позицию Дэна Норта по SOLID: «Просто напишите простой код».
В ответ я написал следующее письмо:
Принципы SOLID остаются актуальными и сегодня, как и в 90-е годы (и даже до этого). Это потому, что программное обеспечение не сильно изменилось за все эти годы. Оно не сильно изменилось даже с 1945 года, когда Тьюринг написал первые строчки кода для электронного компьютера. Программное обеспечение по-прежнему представляет собой операторы if, циклы while и операторы присваивания - последовательность, выбор и итерацию.
Каждое новое поколение любит думать, что их мир сильно отличается от мира предыдущего поколения. Каждое новое поколение ошибается в этом. Это то, что каждое новое поколение узнает, когда приходит следующее новое поколение, чтобы рассказать им, насколько все изменилось. Итак, давайте рассмотрим принципы один за другим.
В обыденном сознании последствия геомагнитных бурь ограничиваются головной болью и нарушением мобильной связи. Однако это справедливо лишь для слабых бурь. Вероятность же того, что мы станем свидетелями крупной чрезвычайно мала. Но на долю жителей 19 века и «местных путешественников во времени» всё же выпала такая участь. Речь идет о «Событии Каррингтона», геомагнитной бури 1859 года. В период слабой электрификации её последствия ограничились повреждениями телеграфной сети и, возможно, поломкой парочки «машин времени». По мнению некоторых экспертов, случись такая буря в наше время, она привела бы отключению электричества минимум на несколько месяцев. Рассмотрим подробнее природу события 1859 год.
В организациях, которые применяют каскадный процесс или команды работают разрозненно, работа обычно передается между командами. Например, бизнес-группа определяет и предоставляет требования, группа по архитектуре решения определяет решения и проекты, группа разработки или доставки реализует решения и так далее.
Как вы понимаете, из-за меньшего взаимодействия и сотрудничества между различными функциями желаемый результат может не быть достигнут, и обычно происходит доработка, потому что каждая команда сосредотачивается на своей собственной области и выполняет то, что от них просят.
Межсерверные (server-to-server или S2S) события позволяют отслеживать кастомные события и параметры через HTTP запросы. Они часто используются в мобильной атрибуции, например, в Appsflyer или в Adjust. При этом S2S события можно использовать и в Amplitude. Рассказываем как это настроить.
Когда меня спрашивают про мой опыт работы программистом, в частности про время потраченное от первого, до последнего рабочего куска кода, я привык отвечать — «От пары лет, до пары месяцев». До текущего момента этот ответ был довольно странный, но имеющий право на жизнь, ибо может показаться, что полученный опыт работы «IT-шником-одиночкой» (кем я и был до недавнего времени) не в IT компании довольно сложно применить к боевой разработке и в расчет к опыту профессиональной деятельности применяться не должен. Но это не так. Недавно мне довелось перечитать один из бестселлеров трилогии дядюшки Боба -«Идеальный программист» и сквозь призму времени, довольно странного опыта и изученного материала я готов обозначить, пожалуй, главные навыки, которые должен иметь, либо развивать «Идеальный программист». Данный список является несколько абстрактным, что делает его применимым не только для разработки, но и для других сфер.
По традиции делимся материалами своего последнего митапа для аналитиков. В этот раз записи могут пригодиться тем, кто нанимает людей в команду и начинает выстраивать аналитические процессы, сотрудникам маркетплейсов и площадок для объявлений, а также SCRUM-мастерам.
IT — сфера большая и многогранная. В ней обитают программисты и сетевики, сисадмины и инженеры. Иногда попадаются копирайтеры, дизайнеры и маркетологи. Но это не точно.
Кто-то ушел в «компьютерную» профессию осознанно: сначала радиокружок, потом — технический факультет ВУЗа. Кто-то стал айтишником и вовсе по воле случая.
С точки зрения обывателя каждый «технарь» обязан как минимум чинить компьютеры любого вида и возраста. И уж точно понимать в программировании. Как раз о последнем мы и хотели бы поговорить: насколько важны кодерские навыки ИТ-спецам, не занятым непосредственно разработкой?
Мы поделимся с вами двумя историями двоих наших коллег из отдела DevOps. Оба они в какой-то момент интересовались языками программирования, однако пошли по другому пути. Это тенденция, заговор или несчастный случай? Как и почему это случилось? Ответы под катом!
Сейчас мы живём в интересное время. С одной стороны, войска всех стран завалены техникой поздней Первой Холодной войны (те же М109, Акации, Грады, да даже PzH 2000 – всё детища той эпохи), которая активно модернизируется, с другой – всё больше и больше становится роботов, космос стал полноценным доменом (по классификации США), где ведутся БД, потоки информации тоже становятся оружием. После боёв в Карабахе очередной раз похоронили артиллерию, всё будущее стали считать за ударными БПЛА и дронами-камикадзе. Но, между тем, в Бристоле летом проходит конференция Future Indirect Fires 2021 (Будущее навесного огня 2021), где обсуждаются проблемы развития западной артиллерии; в США, России, Израиле, Китае, Южной Корее и других странах идут активные работы по вооружению, которое может сейчас многим показаться фантастикой. Так давайте заглянем, что таится во мраке тёмного будущего.
В этой статье рассказывается, как объединить CrowdSec и Docker Compose для защиты приложений, заключенных в контейнеры. Это позволит нам:
• автоматически закрывать скомпрометированным IP-адресам доступ к нашим контейнерным сервисам;
• вручную добавлять/удалять и проверять решения о запрете;
• отслеживать поведение CrowdSec (с помощью cli и дашбордов).
Привет, Хабр! Меня зовут Роман Петров, занимаюсь разработкой продуктов для управления учетными данными в SberCloud. В рамках одного проекта мне потребовалось автоматизировать сборку виртуальных машин под VMware Cloud Director.
Можно было решить эту задачу с помощью инструментов VMware: Fusion, Workstation или Player, но они требуют покупки лицензий, а последний еще и установки не обновляемого пакета VMware VIX API в случае GNU\Linux. Я выбрал альтернативный путь и построил необходимый пайплайн на базе опенсорсного VirtualBox.
Под катом — кратко о том, как я это сделал.
07:00
Слышу звуки будильника. Вот и добрейшее утро повисло расходящимися тучами.
08:50
Прохожу турникеты в офис, машу рукой девочкам с Reception, здороваюсь с ангелами из охраны.
Захожу в наш открытый open space...
Привет, я Дарья Двоеглазова, менеджер продукта в Quadcode. 3,5 года назад я пришла работать в IT и сразу окунулась в мир управления проектами. В статье я расскажу о том, как прошла путь от стикеров на мониторе до планов на 20 лет.
Максимум планирования, с которым я встречалась до начала работы, — школьный дневник и блокнот на телефоне для списка покупок. Все изменилось, когда я вышла на работу: мой монитор стал обрастать стикерами с напоминаниями. Это действительно помогало на первом этапе, пока экран не оказался заклеенным стикерами по всему периметру.
За это время я попробовала несколько инструментов и множество разных методов управления временем. Сейчас моя система позволяет мне планировать долгосрочные цели на 10-20 лет. Конечно, планы не всегда сбываются, но я предпочитаю идти (или хотя бы лежать) к своим целям. Кстати, недавно я достигла цели, к которой шла больше 5 лет.
Опыт показывает, что разработчики редко задумываются о проблемах, которые могут возникать при многопользовательском доступе к данным. При этом практически любое web-приложение является многопользовательским и так или иначе использует блокировки при доступе к данным в БД. При неправильном использовании эти блокировки могут больно бить по пользователям, а иногда и по системе в целом. Поэтому рано или поздно каждый разработчик многопользовательских систем должен задуматься о том, как ему начать работать с БД так, чтобы пользователи не мешали другу другу. Многие считают, что это сложно, давайте вместе убедимся, что это не так.
Еще лет 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).