11 августа мы провели Data Science Meet Up #2. Повестка митапа — работа с данными кредитных продуктов, а тематическая — киберпанк. Это был второй митап по DS, но первый тематический. Для тех, кто не смог поучаствовать, немного расскажем как прошёл митап и поделимся конспектами докладов и ссылками на записи, если захотите посмотреть какое-то выступление полностью, а не в нашем урезанном виде. Под катом: фотографии, доклады от джунов, которым не верят, что они джуны и жёсткая обратная связь от участника.
Совершенный код *
Как Макконнелл завещал
Новости
Вот почему вам стоит использовать оператор Walrus в Python
Выражение присваивания (также известное как оператор walrus) — это функциональность, которая появилась в Python недавно, в версии 3.8. Однако применение walrus является предметом дискуссий и множество людей испытывают безосновательную неприязнь к нему.
Под катом эксперт компании IBM Мартин Хайнц*, разработчик и DevOps-инженер, постарается убедить вас в том, что оператор walrus — действительно хорошее дополнение языка. И его правильное использование поможет вам сделать код более лаконичным и читаемым.
*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.
Что такое объект
Вы задумывались, что такое объект? Что-то из реального мира: человек, машина, здание? Почему?
Я тоже так думал. Это меня ограничивало. Но затем я понял одну вещь. Эта вещь не только помогла продвинуть мое мышление ближе к объектно-ориентированной парадигме, но и писать лучший код.
Хочу поделиться своим ООзарением с вами.
Сказ об ООП, пиве, чае и дружбе
В статье присутствуют материалы, о которых обучающимся программированию рассказывают в самом начале. Когда я преподавал в GeekBrains, первый месяц курса по PHP был посвящен синтаксису, а вот второй как раз тем темам, о которых я буду говорить здесь. К сожалению, не помню, когда мне их преподавали в институте во время моего обучения на программиста, но, наверное, тоже где-то на первых курсах.
Во время подготовки этой статьи я опирался на свой опыт и на отрывки запомнившихся статей и книг. Здесь я выражаю только лишь свое мнение, с которым, конечно же, вы вправе не соглашаться. Любая критика, особенно конструктивная, приветствуется.
Цель статьи: напомнить нам, разработчикам, об основах и мотивировать нас уделять больше времени базовым, академическим знаниям и опыту наших предшественников. Они действительно помогают писать код лучше. Вовремя прочитанная книжка может сэкономить несколько лет неосознанных повторений своих же решений.
Программировать нужно осознанно.
Как повысить скорость разработки с помощью общедоступных функций JavaScript
Практическое руководство по написанию лаконичного кода и повторному использованию вспомогательных функций JS в проектах.
Краткое введение в разработку собственных правил для ESLint
Недавно мы в команде столкнулись с тем, что нам понадобилось кастомное правило для линтера. Немного поиска в гугле, и через час-полтора правило было готово. Делимся базовыми примерами, которые помогут вам погрузиться в процесс разработки правил.
DAST ist fantastisch: отечественный динамический анализатор к взлету готов
Бортовой лог №1, 23.08.20xx. Говорит Денис Кораблёв, капитан одного из научно-исследовательских кораблей Positive Technologies. Я поручил нашему ай-ай открыть шампанское: сегодня вышел из беты DAST-сканер PT BlackBox.
Что такое DAST-сканер? Какие функции он выполняет? Почему без него в разработку не внедрить качественные практики DevSecOps? И кто такой ай-ай?.. Ответы дадут собранные в этом посте бортовые логи. А если вы уже разбираетесь в DevSecOps, то логи раскроют тонкости нашей работы и расскажут о её результате — PT BlackBox.
Сравнение стандарта PEP8 и «Чистого кода» Роберта Мартина
ПРЕДИСЛОВИЕ
Привет Хабр! Признаюсь, честно, за время моего отсутствия я успел по вам соскучиться.
Прежде чем начинать изложение материала, позвольте рассказать небольшую историю, вдохновившую написать эту статью.
Был совершенно обычный день, когда мне в обеденное время написал в ВК знакомый с предложением пройти собеседование на должность разработчика на языке Python. Вакансия очень сильно заинтересовала, поскольку у меня есть большой интерес развиваться в этом языке. Пообщавшись с менеджером, сбросил ему резюме и прикрепил небольшой проект web-серверного приложения.
Главный разработчик провёл ревью и пришёл к выводу, что мне пока рано занимать такую вакантную должность. Вместе с этим HR отправил рекомендации разработчика, как и в каком направлении можно развиваться. Одно из них – чтение книги «Чистый код» под авторством Роберта Мартина
Я сначала не придал особого значения этой книге. За время обучения программированию на Python мне много рекомендовали что почитать. Что-то мне нравилось, что-то нет. Но здесь всё решил один случай.
Через три дня после собеседования я поехал на крупнейшую IT конференцию на Урале DUMP2022. Там познакомился со многими практикующими разработчиками в том числе из этой компании. Какова была моя радость, когда на одной из секций докладчик отметил мой вопрос как лучший, а подарком как раз стала эта книга.
Я понял, что это был знак. Мне действительно надо было прочитать эту книгу. И как оказалось не зря.
Нет, эта статья не очередной обзор, на парадигму автора. Это статья о сравнении двух стандартов PEP8 и "Чистого кода". Вместе с вами я посмотрю чем отличаются эти два стандарта между собой, в чём их сходство. Полученные знания углубят понимание фундаментальных принципов программирования и возможно повлияют на стиль оформления кода.
Подходы к декомпозиции бэкендов информационных систем
Количество классов в реализации даже небольшой программы на один человеко-месяц исчисляется десятками. В средних программах на несколько человеко-лет счёт идёт уже на тысячи. А человек может одновременно оперировать 7-ю +/- 2 объектами. Поэтому все нетривиальные программы требуют декомпозиции своей реализации на более крупные блоки, чем классы - я буду называть такие блоки пакетами.
Сейчас наиболее распространены два основных подхода к декомпозиции систем: пакетирование по слоям и техническим аспектам (далее просто "по слоям" для краткости) и пакетирование на основе предметной области (представленное группой вариантов: пакетирование по фичам, пакетирование по компонентам, ограниченные контексты и пакетирование по агрегатам из предметно-ориентированного дизайна (DDD))
Однако ни один из этих подходов мне не подошёл в полной мере и я изобрёл… объектно-ориентированный подход к декомпозиции систем. Точнее, я изобрёл простую методику выполнения декомпозиции, а потом понял, что на выходе она даёт штуки обладающие свойствами объекта.
Но обо всём по порядку - сначала я рассмотрю критерии оценки подходов, распространённые подходы и почему они мне не подошли. А закончу пост представлением методики выполнения объектно-ориентированной декомпозиции.
Это кто понаписал?
Встречайте нашего главного героя – Джейка. Он разработчик, недавно принятый в компанию, на проект, которому идет седьмой год. В процессе онбординга Джейку поручили устранить баг, и для этого ему пришлось закопаться в глубины legacy-кода. Вооружившись всеми своими знаниями и пониманием контекста, он сделал шаг в бездну. Всё должно было быть просто. В конце концов, это задача для новичка. Что такого может случиться? (где-то здесь прозвучал циничный смех)
Как проводить код-ревью: главное из вебинара
В декабре Яндекс Практикум провёл открытый вебинар о том, как устроен процесс код-ревью в коммерческой разработке и образовании. Руководитель отдела разработки поисковых интерфейсов в Яндексе Сергей Бережной и старший код-ревьюер на курсе «Веб-разработчик» Айгуль Маликова рассказали о полезных инструментах для ревью кода и поделились кейсами из своей практики.
Видеозапись вебинара доступна по ссылке. Для тех, кому удобнее воспринимать информацию в текстовом формате, мы сделали конспект.
Как организовать код в Python-проекте, чтобы потом не пожалеть
Каждая минута, потраченная на организацию своей деятельности, экономит вам целый час.
Бенджамин Франклин
Python отличается от таких языков программирования, как C# или Java, заставляющих программиста давать классам имена, соответствующие именам файлов, в которых находится код этих классов.
Python — это самый гибкий язык программирования из тех, с которыми мне приходилось сталкиваться. А когда имеешь дело с чем-то «слишком гибким» — возрастает вероятность принятия неправильных решений.
Писать плохой код и гордиться. Зачем?
Чаще всего, когда возникает вопрос о том как улучшить навыки разработки, стандартный ответ: почитать про чистый код, выучить новые языки программирования, посмотреть проекты где реализованы лучшие практики и т.д. Но есть другой способ - пойти от обратного, и попробовать написать код максимально ужасно. Написав по-настоящему плохой код можно в конце концов понять, как писать хороший. Можно небрежно и на скорую руку сделать работу кое-как, но этого будет недостаточно. При условии, что уже есть представление о том, как писать хорошо, очень сложно сознательно писать плохо.
Другого человека можно легко запутать, ведь он не знает ход ваших мыслей. Гораздо сложнее обыграть самого себя, чтобы уже через несколько дней было невозможно разобраться в том, что реально происходит и откуда все эти баги. В этой игре вы и есть ваш самый главный противник. Поэтому попробовать такой челлендж будет интересно как новичкам, так и опытным разработчикам, ведь у опытных разработчиков могут быть все более комплексные ухищрения.
Конкурс внимательности: PVS-Studio vs Хакер
Время от времени мы пишем статьи в духе "статический анализатор внимательнее C++ программиста". Сегодня мы продолжим эту традицию, разве что заменив "программист" на "хакер".
Так почему джуны все-таки не нужны?
Для джуна поиск работы похож на полосу препятствий. Тот, кто успешно преодолел ров с крокодилами, катящиеся шары, лаву и дротики с ядом, получает приз — классную работу.
Всем привет, это Макс Кравец. В 2021 году я написал серию статей о том, почему джуны никому не нужны и куда катится рынок зарплат разработчиков в IT. В них я посмотрел на вопросы со стороны нанимателя. Рассказал, почему джуны — это рисковая инвестиция. Дал общие советы, как новичку не застрять на начальном уровне, прокачать самостоятельно soft- и hard-скиллы и достигнуть желаемого роста в зарплате. Спустя полгода я решил дополнить эти материалы.
Предупреждения помогают писать лаконичный код
Некоторые предупреждения анализатора или компилятора сложно однозначно классифицировать как ложное срабатывание или указание на настоящую ошибку. Бывает, что формально анализатор/компилятор прав, но и код работает правильно. Что делать? Возможно, это повод упростить код.
Фу, тестовое. Или 8 ошибок в заданиях для QA на живом примере
Привет! Я QA Automation Engineer в Scalable Solutions. Наша компания, как и многие другие, предлагает после устного собеседования сделать тестовое задание. Как человек, который два года назад делал похожее задание при трудоустройстве, решила разобрать основные ошибки тестировщиков при его выполнении, а также поделиться спецификой наших (и не только) ожиданий в ходе найма.
Предотвращаем утечки памяти в Go, ч. 2. Особенности рантайма
Мы продолжаем наш рассказ о причинах повышенного потребления памяти в языке Go. В предыдущей статье мы детально разобрали ошибки бизнес-логики приложения, которые могут привести к утечкам памяти. Сегодня же сосредоточимся на особенностях рантайма языка Go.
Стоит ли тебе прочесть книгу «Идеальный программист»?
Сегодня я расскажу тебе, достойна ли книга Роберта Мартина “Идеальный программист” внимания. Стоит ли её читать, если ты уже опытный программист, прошедший большой путь и многое познавший? А если ты только начинаешь свою нелегкую дорогу в мир разработки? Быть может ты находишься где-то по середине и не знаешь, как дальше развиваться? Может ты вообще до этого не читал никакой технической литературы и боишься к ней подступиться? На все эти вопросы ты найдешь ответ в этой краткой статье.
Сужение данных. Продолжение борьбы с переполнением
Все началось с глупой ошибки. В тексте программы вместо оператора x=20; где x – целая переменная со знаком и размером в байт, случайно написали x=200;
И компилятор, что называется не моргнув глазом, сформировал команду записи в переменную x константы 0C8H, что вообще-то соответствовало оператору x=-56; Выяснилось, что за долгие годы эксплуатации этого компилятора ни одна собака ни один пользователь (включая и нас самих) никогда не писал подобных ляпов и поэтому ошибка в компиляторе оставалась незамеченной. А виноваты оказались команды сужения данных.
Вклад авторов
-
fillpackart 976.6 -
Andrey2008 685.6 -
PsyHaSTe 619.4 -
AloneCoder 567.2 -
valemak 474.0 -
spiff 370.0 -
Tomcat 356.0 -
alizar 316.8 -
Delka 301.0 -
DreamWalker 259.0