anetto1502

anetto1502

Канал про разработку на python и не только https://t.me/+0JMEYBjpMDJiYTMy
На Пикабу
Дата рождения: 29 августа
14К рейтинг 107 подписчиков 148 подписок 65 постов 25 в горячем
Награды:
За участие в Авторской неделе5 лет на Пикабу
4

Ответ TupoyNovoreg в «Удалите морковск»7

А я выиграл суперприз на озоне

На картинке уже спойлер

На картинке уже спойлер

Конечно, суперприз довольно условный

100 рублей – ваш суперприз. Точнее мой, уберите ваши потные ручонки

100 рублей – ваш суперприз. Точнее мой, уберите ваши потные ручонки

Всё равно приятно. Захотел на честно выигранные деньги купить спички Балабановской фабрики, посчитать, сколько их там и не сумасшедшие ли они. Гуглим спички

Оказывается, спички детям не игрушка. Ну что же, нажать кнопку "подтвердить" я мог и в 17 лет, справился и сейчас

Оказывается, спички детям не игрушка. Ну что же, нажать кнопку "подтвердить" я мог и в 17 лет, справился и сейчас

И что же мы видим?

Спички не влезают в наш супербюджет

Спички не влезают в наш супербюджет

Ладно, делаем фильтр до 100 рублей

Ура, могём

Ура, могём

Но стойте. У правых спичек рейтинг 3.9. Что же там могли испортить?! Идём читать

Вот это поворот. Про доставку нигде не сказано

Вот это поворот. Про доставку нигде не сказано

Проверяем, вдруг у Марины доставка в Аляску, чтобы отгонять лосей, а у нас будет хорошо

И реально. В Москву доставят всего за 400 рублей в пункт самовывоза

И реально. В Москву доставят всего за 400 рублей в пункт самовывоза

То есть не видать мне спичек за призовые бабки. Обидно.

Теперь эти 100 баллов смешаются с покупками и станут обычными

Теперь эти 100 баллов смешаются с покупками и станут обычными

Зато я теперь точно знаю, что выиграть суперприз в озоне реально.

Хотел позвать вас в свой канал <a href="https://pikabu.ru/story/otvet_tupoynovoreg_v_udalite_morkovsk_13088912?u=https%3A%2F%2Ft.me%2F%2B0JMEYBjpMDJiYTMy&t=DevFM&h=c693175219d226a51302699000bb1d11e4876fc4" title="https://t.me/+0JMEYBjpMDJiYTMy" target="_blank" rel="nofollow noopener">DevFM</a> в ТГ про разработку, но позову завтра

Хотел позвать вас в свой канал DevFM в ТГ про разработку, но позову завтра

Показать полностью 9

Нельзя использовать goto

Часто говорят, что goto плох. А собственно, почему?

В ассемблерном коде на машинном уровне все управляющие конструкции (if, while, for и другие) преобразуются в набор команд с безусловным переходом jmp (UPD: как правильно заметили, с безусловным или условным переходом, но по указанному адресу, то есть куда угодно). А такой переход — самый настоящий goto. То есть ты весь такой изящный во фраке пишешь циклы, а наглый компилятор/интерпретатор выкидывает всю красоту и делает goto.

Так почему же сам goto является признаком плохого кода, если он на самом деле везде?

Ответ кроется в умении сохранять контекст. Человек может в голове держать 5-9 сущностей, больше не получается. Поэтому придумали функции, и придумали держать их небольшими — для снижения когнитивной сложности. Конструкция if переведёт тебя в одну из веток ниже, циклы for и while выполнят тело цикла или выбросят за его пределы. Команда goto сложность привносит — прыжок может быть куда угодно. А повышение сложности всегда приводит к росту числа ошибок.

Ну а ещё из-за goto может напасть <a href="https://pikabu.ru/story/nelzya_ispolzovat_goto_12583316?u=https%3A%2F%2Fxkcd.ru%2F292%2F&t=%D0%B2%D0%B5%D0%BB%D0%BE%D1%86%D0%B8%D1%80%D0%B0%D0%BF%D1%82%D0%BE%D1%80&h=b4fb4e894ae317dbd4e6f8aa8ca1f5e1ef76eee2" title="https://xkcd.ru/292/" target="_blank" rel="nofollow noopener">велоцираптор</a>

Ну а ещё из-за goto может напасть велоцираптор

Показать полностью 1

Нормальный ли у меня код?

Разработчики часто задаются таким вопросом. Давайте подумаем, как оценить "нормальность" кода. На мой взгляд, важны следующие аспекты:

Код решает поставленную задачу. Самым важным является достижение цели. Код, который работает неверно, однозначно не нормальный. Пусть криво и косо, но нужный результат должен быть получен.

Код легко читается. Правильная архитектура, понятное именование переменных, достаточные комментарии, короткие функции. Это целый набор плохо формализованных требований к коду. Сможете ли вы спустя год понять, что происходит в коде? Сможет ли код разобрать ваш коллега? Сколько времени займут изменения вашего кода?

Быстрый по скорости и компактный по данным. Другими словами, код должен быть нормальной вычислительной и пространственной сложности. Тут помогают и интуитивные представления (что-то тормозит), и теория вычислительной сложности (О-нотация). Если вы сортируете записи за O(n^3) и требуете O(n^5) оперативной памяти, то вы делаете что-то не так.

Если код решает поставленную задачу, легко читается, быстрый и компактный — то код точно нормальный. Если нет, то у вас есть пространство для улучшения.

Если, конечно, не горят сроки

Показать полностью

Как я провожу синки с тимлидами

Когда у вас больше пяти тимлидов в подчинении, а задачи множатся в геометрической прогрессии, стихийные синки превращаются в рулетку: то что-то забудете, то сорвёте дедлайн, то внезапный вопрос срочно «нужно обсудить». За год+ управления командами я перепробовал кучу подходов — и в итоге отточил формат, который убирает хаос, экономит нервы и не даёт терять важное. Рассказываю, как это работает.

Формат:

Обычно, такие встречи проходят раз в неделю. Цель – синхронизация по текущим задачам, проблемам и приоритетам.

Каждый синк – отдельная повторяющаяся приватная таска в таск трекере (как я веду задачи писал тут), либо приватная страничка в вики (в нашем случае конфлюенсе), где фиксируется повестка. Важно, что повестку наполняют оба: руководитель и подчиненный.

Структура:

Повестка состоит из трёх частей:

1️⃣ Обязательная часть

Фиксированный список тем, которые обсуждаются на каждой встрече. Этот раздел редко меняется.

Как правило это:

– Посмотреть action points с предыдущего синка

– Общий статус по задачам в работе

Для разных лидов обязательная часть может отличаться. Например, с некоторыми лидами у нас есть пункт по тайм менеджменту, потому что с этим часто бывают вопросы.

2️⃣ Опциональная часть

Эта такой живой раздел. Сюда каждый из участников записывает темы/вопросы, накапливающиеся в течение недели. Темы могут быть самыми разными: какой формат перфоманс ревью в этом полугодии, обсудить новую идею по изменению шаблонного сервиса, внедрение новых метрик и т.д.

3️⃣ Action points

Самый важный раздел. Здесь фиксируем договоренности с синка с указанием дедлайнов и ответственных.

Соответственно, такой скелет повестки с пояснениями по каждому разделу создается для каждой встречи и наполняется в течение недели.

Почему именно так?

Кому-то может показаться, что такой формат слишком бюрократичен. И в целом, когда у тебя пара подчиненных, действительно можно держать многое в голове, но когда их становится больше, то подобный формат мне дает:

✅ прозрачное отслеживание всех вопросов и договоренностей

✅ возможность накидывать темы заранее, не теряя их

✅ отсутствие стихийных созвонов, когда появляется какой-то вопрос. Всегда есть понятное место, куда его можно припарковать

✅ наличие повестки заранее, что позволяет лучше подготовиться к встрече

✅ лучше работает на асинхронное взаимодействие – если какая-то тема потеряла актуальность за неделю, можно просто её удалить, не тратя время на обсуждение

О применении ТГ для асинхронной работы была отдельная статья.

Пост из канала DevFM.

Показать полностью
1

Анализируем размер проекта

Среди метрик качества проекта теоретики выделяют число LOC == lines of code, измеряемое обычно в тысячах.

Для измерения размера проекта в строках кода есть интересный проект cloc, запускаемый в том числе в docker (зачем docker?).

Cloc для заданного каталога анализирует все файлики, по расширению и содержимому файлов определяет язык программирования, считает число пустых строк, строк с комментариями и строки кода. На мой взгляд, удобнее бы смотреть на итоговую сумму, но я заставить его выводить total не смог.

Пример для одного легаси проекта

Пример для одного легаси проекта

А теперь интересное. LOC является очень противоречивой метрикой для контроля. С одной стороны, чем меньше проект, тем лучше. С другой — сокращение размера кода может вредить его читаемости.

Пост из канала DevFM.

Показать полностью 1
1

Внедрили себе gitlint

В один из проектов внедрили себе gitlint и уже несколько месяцев полноценно им пользуемся. По отзывам разработчиков: кому-то понравилось, что теперь коммиты нужно писать более дисциплинированно, кто-то и так их качественно писал, поэтому и не заметил разницы. Кто-то, конечно, воняет до сих пор, но на них не отвлекаемся :)

Мне же приятно, что ченджлог и история коммитов теперь выглядит стройненько и единообразно.

За вдохновением по правилам написания коммитов загляните сюда.

Чтобы всем этим добром легче пользоваться, существуют всевозможные плагины для вашей IDE.

Вдогонку посмотрите еще на comimitizen.

Не на каждом проекте нужны такие штуки, но может именно на вашем пригодится.

Пост из канала DevFM.

1

Автоматизируй автоматизируемое

Это пост для исключительно для маководов.

Уже очень давно пользуюсь такой замечательной программой — Raycast. Это супер-разухабистая штука, которая может упростить повседневную рабочую рутину, да и не только рабочую.

Начну с банального: слёзы текут, когда вижу как кто-то неуклюже ищет нужное ему окно. Ой, это браузер, ой, это почта, блин, это IDE, фух, вот же он — телеграмчик!

Первое, что у меня настроено в Raycast — это хоткеи абсолютно на все программы, которыми я постоянно пользуюсь: Option + M — почта, Option + T — телеграм, option + B — браузер, и т.д.

Штука рекомендуема к использованию абсолютно всем. Периодически буду делать посты, рассказывая, что ещё интересного с помощью неё делаю.

Также стоит обратить внимание на плагины для Raycast — они предоставляют какое-то нереальное количество возможностей. Переводчик, управление зумом, очистка текста в clipboard от спец символов, конвертер времени из юникс формата — всё через плагины.

Недавно в подкасте обсудили роли в ИТ-проекте.

Показать полностью
12

Поиск команд в консоли с помощью ctrl+r

Стрелочки вверх-вниз помогут найти в консоли команду, которая использовалась раньше. Это удобно для недавних команд, но не поможет со старыми.

Нажмите в linux-консоли ctrl+r и введите любую часть искомой команды. Будет предложен вариант команды из истории. Если он не подходит, нажмите ещё раз ctrl+r для поиска дальше в истории. Добавьте букв для уточнения поиска. Если пропустили нужную команду, итерируйтесь в обратную сторону с помощью ctrl+shift+r (но этот хоткей работает не везде, иногда надо настроить).

На скрине приведён пример поиска по параметру mig, по команде vim, по флагу cpu.

На скрине приведён пример поиска по параметру mig, по команде vim, по флагу cpu.

Обратите внимание, что курсор будет стоять на начале найденной подстроки. Прервать поиск можно с помощью ctrl-c. Когда нашли нужную команду, нажмите enter для выполнения, esc или стрелочку в сторону для модификации.

Больше хаков в терминале в нашем бесплатном курсе cli-for-dev на степике или в видео forkbomb в docker.

Отличная работа, все прочитано!