This media is not supported in your browser
VIEW IN TELEGRAM
Решение задачи
На самом деле в задаче два важных момента на понимание работы python: копирование объектов и изменяемость типов.
По умолчанию копирование поверхностное. При копировании дублируется самый внешний контейнер и заполняется ссылками на те же элементы, что хранятся в исходном контейнере. И все хорошо, пока внутри контейнера не появляется изменяемый тип — список. В этом случае в l1 и l2 будет ссылка на один и тот же список.
Таким образом, в третьей строке добавление элемента изменит только l1, а удаление в четвертой строке повлияет на оба списка l1 и l2.
Самостоятельно посмотреть пример с визуализацией можно в python tutor.
Обратите внимание еще на один пример с визуализацией, если изменить внутренний список на кортеж.
Было также предположение, что сработает исключение из-за странного синтаксиса в 6 строке, но это не так. О такой возможности f-строк у нас был отдельный пост.
На самом деле в задаче два важных момента на понимание работы python: копирование объектов и изменяемость типов.
По умолчанию копирование поверхностное. При копировании дублируется самый внешний контейнер и заполняется ссылками на те же элементы, что хранятся в исходном контейнере. И все хорошо, пока внутри контейнера не появляется изменяемый тип — список. В этом случае в l1 и l2 будет ссылка на один и тот же список.
Таким образом, в третьей строке добавление элемента изменит только l1, а удаление в четвертой строке повлияет на оба списка l1 и l2.
Самостоятельно посмотреть пример с визуализацией можно в python tutor.
Обратите внимание еще на один пример с визуализацией, если изменить внутренний список на кортеж.
Было также предположение, что сработает исключение из-за странного синтаксиса в 6 строке, но это не так. О такой возможности f-строк у нас был отдельный пост.
👍11❤3🔥3⚡1🌭1
Пятничное развлекательное – Universal Paperclips
Совершенно умопомрачительная браузерная игра. Вы занимаетесь бизнесом по производству и продаже скрепок. Создаёте скрепку, определяете цену, закупаете материалы. Развиваетесь. Вкладываетесь в технологии и маркетинг.
Пока не выпустите гипно-дронов. Тогда людям станут нужны только скрепки, и мир никогда не будет прежним...
Вас ждёт только текст, только хардкор. Три стадии игры с совершенно разным игровым процессом. Часы потраченного времени.
Для ускорения процесса можно зажимать на клавиатуре enter либо использовать кликер.
Веб-версия на ПК бесплатная, приложение для телефона платное.
#fun #games
Совершенно умопомрачительная браузерная игра. Вы занимаетесь бизнесом по производству и продаже скрепок. Создаёте скрепку, определяете цену, закупаете материалы. Развиваетесь. Вкладываетесь в технологии и маркетинг.
Пока не выпустите гипно-дронов. Тогда людям станут нужны только скрепки, и мир никогда не будет прежним...
Вас ждёт только текст, только хардкор. Три стадии игры с совершенно разным игровым процессом. Часы потраченного времени.
Для ускорения процесса можно зажимать на клавиатуре enter либо использовать кликер.
Веб-версия на ПК бесплатная, приложение для телефона платное.
#fun #games
🌭7⚡2🔥2❤1
Кино на выходные
Цельнометаллическая оболочка – культовое антивоенное кино 1987 года от Стэнли Кубрика о подготовке морских пехотинцев и последующей войне во Вьетнаме. Наибольшее впечатление сможете получить в озвучке Гоблина. Естественно, присутствует мат.
Эпизод знакомства с сержантом является классикой. "Как будешь оправдываться?". Интересно, что актёр Рональд Ли Эрми был приглашённым консультантом. Его харизма так понравилась режиссеру, что он получил роль сержанта Хартмана.
Впоследствии Эрми снялся в различных фильмах. Можно вспомнить Техасскую резню бензопилой 2003 года – удачный перезапуск одноимённого фильма ужасов 1974 года, породивший волну ремейков старых ужастиков.
Комедийный фильм ужасов с невзрачным названием Страшилы 1996 года демонстрирует занятную идею коммерческой эксплуатации призраков. В главной роли Майкл Джей Фокс, известный по роли Марти из Назад в будущее. У Эрми в Страшилах эпизодическая роль.
#fun
Цельнометаллическая оболочка – культовое антивоенное кино 1987 года от Стэнли Кубрика о подготовке морских пехотинцев и последующей войне во Вьетнаме. Наибольшее впечатление сможете получить в озвучке Гоблина. Естественно, присутствует мат.
Эпизод знакомства с сержантом является классикой. "Как будешь оправдываться?". Интересно, что актёр Рональд Ли Эрми был приглашённым консультантом. Его харизма так понравилась режиссеру, что он получил роль сержанта Хартмана.
Впоследствии Эрми снялся в различных фильмах. Можно вспомнить Техасскую резню бензопилой 2003 года – удачный перезапуск одноимённого фильма ужасов 1974 года, породивший волну ремейков старых ужастиков.
Комедийный фильм ужасов с невзрачным названием Страшилы 1996 года демонстрирует занятную идею коммерческой эксплуатации призраков. В главной роли Майкл Джей Фокс, известный по роли Марти из Назад в будущее. У Эрми в Страшилах эпизодическая роль.
#fun
Кинопоиск
«Цельнометаллическая оболочка» (Full Metal Jacket, 1987)
🎬 Американская база подготовки новобранцев корпуса морской пехоты. Жесточайшая, бесчеловечная система призвана превратить домашних мальчишек в натренированных хладнокровных убийц. Их готовят к войне во Вьетнаме, где им придется часто задавать себе вопрос…
🔥11👍4⚡2
Какие знания нужны разработчику?
При погружении в новую область знаний сразу возникает вопрос, куда копать и с чего начать. Ответ можно найти в книгах, обзорных статьях, видео и других источниках.
Одним из вариантов визуализации подобных знаний является roadmap. Это такая "дорожная карта" с пометками, что следует освоить.
Самым популярным проектом является roadmap.sh. В их github 215к звёзд, настолько это общее место для индустрии. Прописаны roadmap для самых разных специализаций и технологий. Недавно к каждому навыку они стали прикреплять пачку статей и видео из изучения.
Roadmap позволяет выявить пробелы в текущих знаниях и наметить актуальные вопросы для изучения.
#sudo #edu
При погружении в новую область знаний сразу возникает вопрос, куда копать и с чего начать. Ответ можно найти в книгах, обзорных статьях, видео и других источниках.
Одним из вариантов визуализации подобных знаний является roadmap. Это такая "дорожная карта" с пометками, что следует освоить.
Самым популярным проектом является roadmap.sh. В их github 215к звёзд, настолько это общее место для индустрии. Прописаны roadmap для самых разных специализаций и технологий. Недавно к каждому навыку они стали прикреплять пачку статей и видео из изучения.
Roadmap позволяет выявить пробелы в текущих знаниях и наметить актуальные вопросы для изучения.
#sudo #edu
👍17🔥4❤3🌭3⚡1
Проблемы курсов по программированию
В статье Хватит клепать псевдопрограммистов, или «Горшочек — не в IT!» автор критикует состояние платных ИТ-курсов в 2021 году. При этом он сам полгода преподавал в geekbrains, то есть знаком с внутренней кухней курсов не понаслышке.
Кажется, что за прошедший год дела не сильно изменились. Обсуждаются проблемы
— специалистов-преподавателей
— размера групп на курсах
— проектов для портфолио
— ненужных сертификатов
— домашних заданий
— гарантий трудоустройства
В конце сформулирован ряд имеющих смысл правил, соблюдение которых поможет обучению.
В комментах делятся опытом поиска годных курсов на udemy. Есть интересная мысль о роли случайности в устройстве на работу.
Был ли у вас опыт прохождения платных или бесплатных курсов? Делитесь историями в комментариях.
#edu
В статье Хватит клепать псевдопрограммистов, или «Горшочек — не в IT!» автор критикует состояние платных ИТ-курсов в 2021 году. При этом он сам полгода преподавал в geekbrains, то есть знаком с внутренней кухней курсов не понаслышке.
Кажется, что за прошедший год дела не сильно изменились. Обсуждаются проблемы
— специалистов-преподавателей
— размера групп на курсах
— проектов для портфолио
— ненужных сертификатов
— домашних заданий
— гарантий трудоустройства
В конце сформулирован ряд имеющих смысл правил, соблюдение которых поможет обучению.
В комментах делятся опытом поиска годных курсов на udemy. Есть интересная мысль о роли случайности в устройстве на работу.
Был ли у вас опыт прохождения платных или бесплатных курсов? Делитесь историями в комментариях.
#edu
Хабр
Хватит клепать псевдопрограммистов, или «Горшочек — не в IT!»
Дисклеймер: все события являются вымышленными, а совпадения - случайными Все они были мертвы. Последний выстрел поставил жирную точку в этой истории. Я снял палец с курка — всё было кончено. Макс Пэйн...
⚡4👍3🌭2❤1
Пересмотри своё собеседование
В статьях о собеседованиях часто говорят о пользе обратной связи после интервью. Беда в том, что компании нечасто дают обратную связь. Вы получаете либо оффер, либо отписку в духе "извините, но вы нам не подходите".
Вы можете быть отличным специалистом. Вы можете потратить тонну времени на изучение нового материала, щёлкать задачи с leetcode, знать теорию и практику прохождения собесов. Но один небольшой аспект может всё испортить. Держитесь неуверенно? Путано излагаете мысли? Пропускаете ключевые детали, в результате чего изложение выглядит рваным и несвязным? Зависаете при ответе на вопрос?
В случае онлайн-собеседований у вас есть уникальная возможность посмотреть на себя со стороны. Запишите всё: аудио, видео со своей камеры и монитор с собеседником. На Linux для записи экрана удобен Kazam.
По видеозаписи вы сможете выявить свои косяки, которые совершенно не заметны без взгляда "со стороны". Кроме того, вы можете словить реакцию собеседующего на ваши ответы. В процессе интервью сделать это сложно — мозг занят другими вопросами.
После прохождения интервью просмотрите запись и выявите систематические ошибки. Легко сказать — выявить ошибки. На деле совсем не просто найти проблемы в своём же интервью.
Хорошим вариантом будет получить мнение со стороны. Попросите друзей посмотреть вашу запись свежим взглядом и подметить проблемы. Прямо по пунктам, где и что не так.
Все полученные замечания нужно критически обработать. Проанализируйте и проработайте каждый пункт, чтобы не повторить ту же ошибку в будущем. Сформулируйте список проблем, которые нужно поправить.
При анализе следующего интервью сверяйтесь со списком проблем. Всё ли получилось исправить?
По результатам просмотра двух первых интервью мои злые друзья нашли 36 проблемных мест. В результате их проработки я сформулировал десяток конкретных пунктов как надо делать и как делать не надо.
Запишите своё следующее интервью и проработайте его. Вы удивитесь, как много нового можно узнать.
Желательно спросить разрешение противоположной стороны на видеозапись. С другой стороны, если вы не планируете запись публиковать, то требуется ли разрешение?
🌭, если интересно узнать мой список конкретных пунктов.
#devfm #edu #резюме
В статьях о собеседованиях часто говорят о пользе обратной связи после интервью. Беда в том, что компании нечасто дают обратную связь. Вы получаете либо оффер, либо отписку в духе "извините, но вы нам не подходите".
Вы можете быть отличным специалистом. Вы можете потратить тонну времени на изучение нового материала, щёлкать задачи с leetcode, знать теорию и практику прохождения собесов. Но один небольшой аспект может всё испортить. Держитесь неуверенно? Путано излагаете мысли? Пропускаете ключевые детали, в результате чего изложение выглядит рваным и несвязным? Зависаете при ответе на вопрос?
В случае онлайн-собеседований у вас есть уникальная возможность посмотреть на себя со стороны. Запишите всё: аудио, видео со своей камеры и монитор с собеседником. На Linux для записи экрана удобен Kazam.
По видеозаписи вы сможете выявить свои косяки, которые совершенно не заметны без взгляда "со стороны". Кроме того, вы можете словить реакцию собеседующего на ваши ответы. В процессе интервью сделать это сложно — мозг занят другими вопросами.
После прохождения интервью просмотрите запись и выявите систематические ошибки. Легко сказать — выявить ошибки. На деле совсем не просто найти проблемы в своём же интервью.
Хорошим вариантом будет получить мнение со стороны. Попросите друзей посмотреть вашу запись свежим взглядом и подметить проблемы. Прямо по пунктам, где и что не так.
Все полученные замечания нужно критически обработать. Проанализируйте и проработайте каждый пункт, чтобы не повторить ту же ошибку в будущем. Сформулируйте список проблем, которые нужно поправить.
При анализе следующего интервью сверяйтесь со списком проблем. Всё ли получилось исправить?
По результатам просмотра двух первых интервью мои злые друзья нашли 36 проблемных мест. В результате их проработки я сформулировал десяток конкретных пунктов как надо делать и как делать не надо.
Запишите своё следующее интервью и проработайте его. Вы удивитесь, как много нового можно узнать.
Желательно спросить разрешение противоположной стороны на видеозапись. С другой стороны, если вы не планируете запись публиковать, то требуется ли разрешение?
🌭, если интересно узнать мой список конкретных пунктов.
#devfm #edu #резюме
🌭41👍7❤2🔥1
Pre-commit — must have утилита любого проекта
Бывает смотришь на код и сразу видно, что код плохой. Признаков может быть множество:
— разные куски кода по-разному отформатированы
— импорты в файлах никак не структурированы
— используются вперемешку синтаксис старых и новых версий питона
— где-то видны зачатки использования типов, но не везде
— где-то docstring есть, где-то нет
Всё это характеризуется так: нет единого стиля в написании кода. Проблема становится особенно актуальной, когда над проектом трудится несколько разработчиков.
Частично эту проблему решает встроенный в среду разработки анализатор кода или запускаемые вручную анализаторы кода. Но анализатор в среде разработки может быть настроен по-разному у разных членов команды. Если в проекте принято использовать несколько анализаторов одновременно, то разработчик может забыть прогнать код через все анализаторы до коммита.
Для решения всех обозначенных проблем есть замечательная утилита — pre-commit. Один раз в конфиге прописываете, какие анализаторы кода нужно запускать, и далее при любом коммите они будут запускаться автоматически. С этого момента код будет опрятным и шелковистым. Вы просто не сможете сделать коммит, если у анализатора есть вопросики к коду.
#devfm #procode
Бывает смотришь на код и сразу видно, что код плохой. Признаков может быть множество:
— разные куски кода по-разному отформатированы
— импорты в файлах никак не структурированы
— используются вперемешку синтаксис старых и новых версий питона
— где-то видны зачатки использования типов, но не везде
— где-то docstring есть, где-то нет
Всё это характеризуется так: нет единого стиля в написании кода. Проблема становится особенно актуальной, когда над проектом трудится несколько разработчиков.
Частично эту проблему решает встроенный в среду разработки анализатор кода или запускаемые вручную анализаторы кода. Но анализатор в среде разработки может быть настроен по-разному у разных членов команды. Если в проекте принято использовать несколько анализаторов одновременно, то разработчик может забыть прогнать код через все анализаторы до коммита.
Для решения всех обозначенных проблем есть замечательная утилита — pre-commit. Один раз в конфиге прописываете, какие анализаторы кода нужно запускать, и далее при любом коммите они будут запускаться автоматически. С этого момента код будет опрятным и шелковистым. Вы просто не сможете сделать коммит, если у анализатора есть вопросики к коду.
#devfm #procode
🔥7👍3🌭2⚡1❤1
Как вызвать функцию summator?
Anonymous Quiz
14%
summator(1, 12, 5)
31%
summator(1, 12, mod=5)
12%
summator(a=1, b=12, mod=5)
3%
summator(a=1, b=12, 5)
11%
в объявлении функции ошибка
28%
все предложенные варианты рабочие
👍5🔥4
Чисто позиционные параметры
В python 3.8 появилась возможность определять чисто позиционные параметры с помощью символа /. Параметры слева от / будут позиционными.
Символ * , напротив, нужен чтобы вызывать функцию с чисто именованными параметрами. Параметры справа от * должны быть именованными.
Комбинация * и / позволяет гибко управлять параметрами.
Функция summator возвращает сумму двух чисел по модулю. Первые два параметра просто числа, для них не важен порядок и у них нет какого-то осмысленного названия. Поэтому мы делаем эти параметры чисто позиционными — слева от /. Модуль, по которому будет суммирование, наоборот, имеет смысловую нагрузку. При вызове функции важно, что третий параметр именно модуль, поэтому мы его делаем чисто именованным и размещаем справа от *.
Отдельного внимания заслуживает четвертый вариант ответа
summator(a=1, b=12, 5)
Таким образом никогда не получится передать параметры в функцию. Позиционные параметры не могут идти после именованных.
В python 3.8 появилась возможность определять чисто позиционные параметры с помощью символа /. Параметры слева от / будут позиционными.
Символ * , напротив, нужен чтобы вызывать функцию с чисто именованными параметрами. Параметры справа от * должны быть именованными.
Комбинация * и / позволяет гибко управлять параметрами.
Функция summator возвращает сумму двух чисел по модулю. Первые два параметра просто числа, для них не важен порядок и у них нет какого-то осмысленного названия. Поэтому мы делаем эти параметры чисто позиционными — слева от /. Модуль, по которому будет суммирование, наоборот, имеет смысловую нагрузку. При вызове функции важно, что третий параметр именно модуль, поэтому мы его делаем чисто именованным и размещаем справа от *.
Отдельного внимания заслуживает четвертый вариант ответа
summator(a=1, b=12, 5)
Таким образом никогда не получится передать параметры в функцию. Позиционные параметры не могут идти после именованных.
Telegram
DevFM
Используем относительно новые фишечки питона.
Объяснение вечером, как и всегда.
#quiz
Объяснение вечером, как и всегда.
#quiz
👍10🌭6🔥3⚡1❤1
Пятничное развлекательное
Разработчики — люди весёлые. Существует практика при создании игр, фильмов и программного обеспечения оставлять "пасхалки", они же easter eggs.
Google славится различными пасхалками. Всем знаком Динозавр, появляющийся в Chrome при отсутствии интернета.
Команда elgoog сохранила у себя многие пасхалки. Тактика игры в StarCraft Zerg rush уничтожит ваш поиск. Подводный поиск позволит побуянить вместе с рыбками. При нажатии на туфельки в Волшебнике страны Оз вы попадёте в ураган. Google gravity покажет поиск с гравитацией. Вообще у elgooG собрано много пасхалок от Google. На вики собран подробный перечень, но многие пасхалки оттуда были временными и уже не работают.
Atari оказала огромное влияние на видеоигры. Прямо в выдаче картинок в гугле можно поиграть в breakout, который является переизданием физического аркадного автомата Pong. Выпущенный в 1972 году, автомат Pong от Atari стал первой коммерчески успешной видеоигрой. Спустя 15 лет такой класс игр назвали Арканоид.
Многие пасхалки доступны на гугле прямо сейчас. Загуглите Томатина, нажмите на томат вверху. Поиск любого персонажа из сериала Друзья предоставит интерактивную отсылку. Например, Джо Триббиани, как известно, не делится едой. Некоторые простые запросы вроде кот или собака также интерактивны. Запрос рождество, если нажать на подарок, отправит вас в огромный набор детских игр и мультиков. Там даже есть игры про алгоритмы.
Все мы любим запрос о рекурсии. И игру Жизнь Конвея (только с компьютера).
А какие пасхалки любите вы?
#fun
Разработчики — люди весёлые. Существует практика при создании игр, фильмов и программного обеспечения оставлять "пасхалки", они же easter eggs.
Google славится различными пасхалками. Всем знаком Динозавр, появляющийся в Chrome при отсутствии интернета.
Команда elgoog сохранила у себя многие пасхалки. Тактика игры в StarCraft Zerg rush уничтожит ваш поиск. Подводный поиск позволит побуянить вместе с рыбками. При нажатии на туфельки в Волшебнике страны Оз вы попадёте в ураган. Google gravity покажет поиск с гравитацией. Вообще у elgooG собрано много пасхалок от Google. На вики собран подробный перечень, но многие пасхалки оттуда были временными и уже не работают.
Atari оказала огромное влияние на видеоигры. Прямо в выдаче картинок в гугле можно поиграть в breakout, который является переизданием физического аркадного автомата Pong. Выпущенный в 1972 году, автомат Pong от Atari стал первой коммерчески успешной видеоигрой. Спустя 15 лет такой класс игр назвали Арканоид.
Многие пасхалки доступны на гугле прямо сейчас. Загуглите Томатина, нажмите на томат вверху. Поиск любого персонажа из сериала Друзья предоставит интерактивную отсылку. Например, Джо Триббиани, как известно, не делится едой. Некоторые простые запросы вроде кот или собака также интерактивны. Запрос рождество, если нажать на подарок, отправит вас в огромный набор детских игр и мультиков. Там даже есть игры про алгоритмы.
Все мы любим запрос о рекурсии. И игру Жизнь Конвея (только с компьютера).
А какие пасхалки любите вы?
#fun
elgoog.im
Chrome Dinosaur Game: Birthday Edition - elgooG
Celebrate with the Chrome T-Rex Dinosaur Game's 🎂 Birthday Limited Edition, commemorating Google Chrome's 10th anniversary in September 2018. Whether you call it Chrome Dino, or the NO INTERNET GAME, this Google surprise is a nostalgic treat. Craving some…
👍5🌭5❤2🔥2
Генеративно-состязательная сеть (GAN)
В машинном обучении наибольшую популярность приобрели нейронные сети. Существуют различные архитектуры нейронок. Потихоньку появляются новые. Более того, комбинация различных нейронных сетей может привести к неожиданным результатам. Так, в 2014 году Ian Goodfellow придумал GAN — комбинацию из пары нейронных сетей. Рассмотрим её идею на примере генерации фотореалистичного изображения.
Первая сеть, называемая Generator генерирует фотографии. Вторая сеть, называемая Discriminator отбраковывает фотографии, которые не похожи на реалистичные. Обе сети учатся в процессе, Generator пытается сформировать реалистичную фотографию, которая обманет Discriminator, который в свою очередь пытается научиться лучше отбраковывать сгенерированные изображения. В результате конкуренции этих нейронных сетей Generator оказывается способен выдавать изображения, которые с точки зрения человека совершенно реалистичны.
Больше деталей о GAN, включая примеры кода, можно найти в статье Generative Adversarial Networks: Build Your First Models (перевод). Различные презентации от Ian Goodfellow можно найти на его личном сайте.
В прошлый раз мы писали, что deepfake уже применяется для мошенничества в виде замены голоса.
#devfm #skills #datascience
В машинном обучении наибольшую популярность приобрели нейронные сети. Существуют различные архитектуры нейронок. Потихоньку появляются новые. Более того, комбинация различных нейронных сетей может привести к неожиданным результатам. Так, в 2014 году Ian Goodfellow придумал GAN — комбинацию из пары нейронных сетей. Рассмотрим её идею на примере генерации фотореалистичного изображения.
Первая сеть, называемая Generator генерирует фотографии. Вторая сеть, называемая Discriminator отбраковывает фотографии, которые не похожи на реалистичные. Обе сети учатся в процессе, Generator пытается сформировать реалистичную фотографию, которая обманет Discriminator, который в свою очередь пытается научиться лучше отбраковывать сгенерированные изображения. В результате конкуренции этих нейронных сетей Generator оказывается способен выдавать изображения, которые с точки зрения человека совершенно реалистичны.
Больше деталей о GAN, включая примеры кода, можно найти в статье Generative Adversarial Networks: Build Your First Models (перевод). Различные презентации от Ian Goodfellow можно найти на его личном сайте.
В прошлый раз мы писали, что deepfake уже применяется для мошенничества в виде замены голоса.
#devfm #skills #datascience
Realpython
Generative Adversarial Networks: Build Your First Models – Real Python
In this step-by-step tutorial, you'll learn all about one of the most exciting areas of research in the field of machine learning: generative adversarial networks. You'll learn the basics of how GANs are structured and trained before implementing your own…
🌭3🔥2❤1⚡1
Делаем код мягким и шелковистым
Мы уже говорили об утилите pre-commit, которая автоматизирует рутинный запуск анализаторов кода и не позволяет сделать коммит, пока проблемы не будут исправлены.
Теперь расскажем о тех утилитах, которые применяются в каждом нашем проекте:
— flake8 — статический анализатор кода с поддержкой очень большого количества плагинов
— black форматирует и приводит код в общему виду
— mypy проверяет аннотации типов
— reorder-python-imports единообразно организует импорты
— autoflake удаляет неиспользуемые импорты и переменные
— pyupgrade обновляет синтаксис до текущей версии python
— yesqa удаляет ненужные
Применение всех утилит с настройками по умолчанию скорее вредно, поэтому вот несколько советов:
— настройте в pre-commit опцию exclude — список каталогов, для которых не применять анализатор
— в flake8 настройте игнорирование особо душных замечаний
— в autoflake настройте автоматическое исправление замечаний
— при использовании mypy совместно с pre-commit нужно пользоваться специальной версией
Применение перечисленных утилит в командной работе облегчит проведение code review. Никто не будет тратить время на то, что может поправить машина.
Расскажите, если на практике используете другие анализаторы кода.
#devfm #procode
Мы уже говорили об утилите pre-commit, которая автоматизирует рутинный запуск анализаторов кода и не позволяет сделать коммит, пока проблемы не будут исправлены.
Теперь расскажем о тех утилитах, которые применяются в каждом нашем проекте:
— flake8 — статический анализатор кода с поддержкой очень большого количества плагинов
— black форматирует и приводит код в общему виду
— mypy проверяет аннотации типов
— reorder-python-imports единообразно организует импорты
— autoflake удаляет неиспользуемые импорты и переменные
— pyupgrade обновляет синтаксис до текущей версии python
— yesqa удаляет ненужные
#noqaПрименение всех утилит с настройками по умолчанию скорее вредно, поэтому вот несколько советов:
— настройте в pre-commit опцию exclude — список каталогов, для которых не применять анализатор
— в flake8 настройте игнорирование особо душных замечаний
— в autoflake настройте автоматическое исправление замечаний
— при использовании mypy совместно с pre-commit нужно пользоваться специальной версией
Применение перечисленных утилит в командной работе облегчит проведение code review. Никто не будет тратить время на то, что может поправить машина.
Расскажите, если на практике используете другие анализаторы кода.
#devfm #procode
Telegram
DevFM
Pre-commit — must have утилита любого проекта
Бывает смотришь на код и сразу видно, что код плохой. Признаков может быть множество:
— разные куски кода по-разному отформатированы
— импорты в файлах никак не структурированы
— используются вперемешку синтаксис…
Бывает смотришь на код и сразу видно, что код плохой. Признаков может быть множество:
— разные куски кода по-разному отформатированы
— импорты в файлах никак не структурированы
— используются вперемешку синтаксис…
🔥11👍7❤2⚡1🌭1
Что я увидел в своих собеседованиях, часть 1
Как и обещал, тезисно изложу ошибки, замеченные в результате просмотра собеседований и решения, к которым пришел.
❌ В самом начале собеседования возникала какая-то суета: включена ли камера и звук, открыто ли мое резюме, под рукой ли ручка с блокнотом.
✅ Составил небольшой чеклист, по которому пробегался за пару минут до начала собеседования.
❌ Камера смотрела как бы в сторону, а я не смотрел в камеру, иногда я говорил не в микрофон и меня было плохо слышно. Да, это тоже очень важно. Собеседнику должно быть комфортно с вами общаться.
✅ Я заранее настроил камеру, чтобы по умолчанию смотреть на собеседника, сделал в голове заметку говорить в микрофон.
❌ Я спешил ответить на вопрос интервьюера и начинал отвечать до завершения вопроса. Со стороны выглядело так, будто я просто перебиваю собеседника. Более того, иногда вопрос мог оказаться совсем не таким, как я думал.
✅ Пункт "дослушивать вопрос и не перебивать собеседника" отправился в копилку заметок.
❌ Порой меня спрашивали о технологиях, с которыми я не работал и про которые мало знал. В этот момент я терялся.
✅ При более предметном анализе оказалось, что на любую малознакомую технологию у меня в багаже есть аналогичная, решающая поставленную задачу. Я сделал для себя заметку: если не работал с технологией, не теряйся, подумай, как решить задачу знакомым способом. Более глобальная мысль: стараться минусы обращать в плюсы. И не забывать постоянно изучать разные технологии.
#devfm #edu #резюме
Как и обещал, тезисно изложу ошибки, замеченные в результате просмотра собеседований и решения, к которым пришел.
❌ В самом начале собеседования возникала какая-то суета: включена ли камера и звук, открыто ли мое резюме, под рукой ли ручка с блокнотом.
✅ Составил небольшой чеклист, по которому пробегался за пару минут до начала собеседования.
❌ Камера смотрела как бы в сторону, а я не смотрел в камеру, иногда я говорил не в микрофон и меня было плохо слышно. Да, это тоже очень важно. Собеседнику должно быть комфортно с вами общаться.
✅ Я заранее настроил камеру, чтобы по умолчанию смотреть на собеседника, сделал в голове заметку говорить в микрофон.
❌ Я спешил ответить на вопрос интервьюера и начинал отвечать до завершения вопроса. Со стороны выглядело так, будто я просто перебиваю собеседника. Более того, иногда вопрос мог оказаться совсем не таким, как я думал.
✅ Пункт "дослушивать вопрос и не перебивать собеседника" отправился в копилку заметок.
❌ Порой меня спрашивали о технологиях, с которыми я не работал и про которые мало знал. В этот момент я терялся.
✅ При более предметном анализе оказалось, что на любую малознакомую технологию у меня в багаже есть аналогичная, решающая поставленную задачу. Я сделал для себя заметку: если не работал с технологией, не теряйся, подумай, как решить задачу знакомым способом. Более глобальная мысль: стараться минусы обращать в плюсы. И не забывать постоянно изучать разные технологии.
#devfm #edu #резюме
Telegram
DevFM
Пересмотри своё собеседование
В статьях о собеседованиях часто говорят о пользе обратной связи после интервью. Беда в том, что компании нечасто дают обратную связь. Вы получаете либо оффер, либо отписку в духе "извините, но вы нам не подходите".
Вы можете…
В статьях о собеседованиях часто говорят о пользе обратной связи после интервью. Беда в том, что компании нечасто дают обратную связь. Вы получаете либо оффер, либо отписку в духе "извините, но вы нам не подходите".
Вы можете…
👍15🔥4❤2🌭2
Внутренняя кухня малого ИТ-бизнеса
В статье ребята делятся своим опытом создания бизнеса на парсинге сайтов. Среди поднимаемых тем:
— Законность и этичность парсинга сайтов
— Средний чек их клиентов
— Их масштабы по железу и числу разработчиков
— У кого лучшая защита от парсинга на рынке
— Судебные угрозы, вызванные парсингом сайтов
Есть много годных видео, например, как открыть ИТ-бизнес и как быстро не закрыться.
Из интересного, у них можно взять полную базу из 4.5кк доменов в зонах ru/рф.
В статье ребята делятся своим опытом создания бизнеса на парсинге сайтов. Среди поднимаемых тем:
— Законность и этичность парсинга сайтов
— Средний чек их клиентов
— Их масштабы по железу и числу разработчиков
— У кого лучшая защита от парсинга на рынке
— Судебные угрозы, вызванные парсингом сайтов
Есть много годных видео, например, как открыть ИТ-бизнес и как быстро не закрыться.
Из интересного, у них можно взять полную базу из 4.5кк доменов в зонах ru/рф.
Telegram
Русский ИТ бизнес 👨
https://vc.ru/life/496144-20-mln-rubley-v-god-na-parsinge-saytov-delyus-nashim-opytom Ребята, поделился опытом. Поставьте лайк плиз, если понравится.
👍4❤2🌭2🔥1😁1
Dependency Injection в python
Кому DI не знаком, статью Python Dependency Injection стоит не только прочитать, но и протыкать. На примере небольшого приложения отрисовки графиков погоды подробно рассказывается о важной концепции Dependency Injection.
Отметим две отличительные особенности:
— автор на примере подводит к ряду проблем, а потом показывает, как применение DI позволяет эти проблемы решить.
— разработка всего примера происходит с использованием достаточно популярной концепции Test-Driven Development — TDD. Это отличная возможность посмотреть на практике эту концепцию и решить, уместно ли её применение у вас.
Интересно узнать ваше мнение, применяете ли вы DI или TDD на практике? Как вы к ним относитесь?
#python
Кому DI не знаком, статью Python Dependency Injection стоит не только прочитать, но и протыкать. На примере небольшого приложения отрисовки графиков погоды подробно рассказывается о важной концепции Dependency Injection.
Отметим две отличительные особенности:
— автор на примере подводит к ряду проблем, а потом показывает, как применение DI позволяет эти проблемы решить.
— разработка всего примера происходит с использованием достаточно популярной концепции Test-Driven Development — TDD. Это отличная возможность посмотреть на практике эту концепцию и решить, уместно ли её применение у вас.
Интересно узнать ваше мнение, применяете ли вы DI или TDD на практике? Как вы к ним относитесь?
#python
testdriven.io
Python Dependency Injection
This article looks at how to use dependency injection to decouple and improve the design of a Python application.
👍6🌭3❤2
Пятничное развлекательное
Мафия — отличная игра для компании, в центре которой находится умение блефовать. У этой игры много вариаций. Например, в Находке для шпиона игрокам даётся локация и должность. По вопросам игроков и ответам на них нужно вычислить шпиона, который локацию не знает. При этом ответ нужно выстроить так, чтобы не дать шпиону лишней информации. Например, для локации "Орбитальная станция" можно сформулировать вопрос "Бегаешь ли ты по утрам в парке". Ответ "Да" однозначно идентифицирует шпиона.
К чему всё это. На ютубе есть канал Куб с записями игр "свой-чужой". Большинство названий выпусков выглядят слабыми, но название Программисты вычисляют учителей информатики привлекло внимание. Видео оказалось достаточно занятным. А как бы вы вычислили человека, не являющегося разработчиком?
#fun #youtube
Мафия — отличная игра для компании, в центре которой находится умение блефовать. У этой игры много вариаций. Например, в Находке для шпиона игрокам даётся локация и должность. По вопросам игроков и ответам на них нужно вычислить шпиона, который локацию не знает. При этом ответ нужно выстроить так, чтобы не дать шпиону лишней информации. Например, для локации "Орбитальная станция" можно сформулировать вопрос "Бегаешь ли ты по утрам в парке". Ответ "Да" однозначно идентифицирует шпиона.
К чему всё это. На ютубе есть канал Куб с записями игр "свой-чужой". Большинство названий выпусков выглядят слабыми, но название Программисты вычисляют учителей информатики привлекло внимание. Видео оказалось достаточно занятным. А как бы вы вычислили человека, не являющегося разработчиком?
#fun #youtube
👍3🌭2❤1⚡1🔥1
Кино на выходные
Все они были мертвы. Последний выстрел поставил жирную точку в этой истории. Я снял палец с курка — всё было кончено.
Игра Max Payne на момент выхода в 2001 году поражала своей проработанностью, сложностью и саундтреком. Многочисленные пасхалки, интересный и захватывающий сюжет. Ключевым аспектом было вдохновлённое Матрицей замедление времени — bullet time, в котором перестрелки становились фантастическими.
В 2008 году сняли фильм Макс Пэйн. Он вышел достаточно проходным, но атмосферу жанра нуар передал отлично.
Для ностальгии — сюжет игры рассказывают в 35-минутном ролике.
В этом году Remedy объявила о будущем ремейке первых двух частей игры. Ждём.
#fun #films #games
Все они были мертвы. Последний выстрел поставил жирную точку в этой истории. Я снял палец с курка — всё было кончено.
Игра Max Payne на момент выхода в 2001 году поражала своей проработанностью, сложностью и саундтреком. Многочисленные пасхалки, интересный и захватывающий сюжет. Ключевым аспектом было вдохновлённое Матрицей замедление времени — bullet time, в котором перестрелки становились фантастическими.
В 2008 году сняли фильм Макс Пэйн. Он вышел достаточно проходным, но атмосферу жанра нуар передал отлично.
Для ностальгии — сюжет игры рассказывают в 35-минутном ролике.
В этом году Remedy объявила о будущем ремейке первых двух частей игры. Ждём.
#fun #films #games
❤4🔥4👍3🌭2⚡1
Синдром «я так и знал»
Он же — знание задним числом, интересно описанный в статье Юдковского. Того самого, который автор Гарри Поттера и методов рационального мышления.
Человек склонен переоценивать вероятность события, если оно уже произошло. Когда сайт упал в результате наплыва посетителей совершенно понятно, что требовался больший запас свободных мощностей. Когда град побил машины, совершенно ясно, что стоило запарковаться в подземный паркинг.
Занятно, что знание задним числом распространяется на логические загадки. Узнав ответ, человек склонен считать его простым и даже в какой-то мере очевидным. Это породило целую волну совершенно бесполезных вопросов на собеседованиях, ответы на которые либо знаешь, либо ответить не сможешь. Проверяют эрудицию, видимо.
В шестиминутном ролике есть интересный пример про результаты соц опроса.
Для интересующихся темой когнитивных искажений человека мы уже рекомендовали фильм Я и другие.
#edu #devfm
Он же — знание задним числом, интересно описанный в статье Юдковского. Того самого, который автор Гарри Поттера и методов рационального мышления.
Человек склонен переоценивать вероятность события, если оно уже произошло. Когда сайт упал в результате наплыва посетителей совершенно понятно, что требовался больший запас свободных мощностей. Когда град побил машины, совершенно ясно, что стоило запарковаться в подземный паркинг.
Занятно, что знание задним числом распространяется на логические загадки. Узнав ответ, человек склонен считать его простым и даже в какой-то мере очевидным. Это породило целую волну совершенно бесполезных вопросов на собеседованиях, ответы на которые либо знаешь, либо ответить не сможешь. Проверяют эрудицию, видимо.
В шестиминутном ролике есть интересный пример про результаты соц опроса.
Для интересующихся темой когнитивных искажений человека мы уже рекомендовали фильм Я и другие.
#edu #devfm
LessWrong на русском
Знание задним числом
Знание задним числом это искажение, при котором люди, знающие ответ, значительно переоценивают его предсказуемость или очевидность в сравнении с оценками тех, кто данный ответ заранее не знает. Иногда это искажение называют эффектом "я-знал-это-наперед".
👍7🔥6❤1🌭1
Backup: октябрь
Hardskills:
1. Docker. Практические советы
2. Тернистый путь к ClickHouse
3. ИИ на службе мошенников
4. Dependency Injection в python
5. Генеративно-состязательная сеть (GAN)
О программировании:
1. Pre-commit — must have утилита любого проекта
2. Делаем код мягким и шелковистым
3. Технический долг
4. Git — исход
Разбираем код:
1. Реализуем read-only атрибуты
2. Поверхностное копирование объектов и изменяемость типов
3. Чисто позиционные параметры
Нетехнические навыки:
1. Какие знания нужны разработчику?
2. Проблемы курсов по программированию
3. Теория разбитых окон
4. Синдром «я так и знал»
Собеседования:
1. Завышать ли опыт в резюме?
2. Пересмотри своё собеседование
3. Что я увидел в своих собеседованиях, часть 1
#backup
Hardskills:
1. Docker. Практические советы
2. Тернистый путь к ClickHouse
3. ИИ на службе мошенников
4. Dependency Injection в python
5. Генеративно-состязательная сеть (GAN)
О программировании:
1. Pre-commit — must have утилита любого проекта
2. Делаем код мягким и шелковистым
3. Технический долг
4. Git — исход
Разбираем код:
1. Реализуем read-only атрибуты
2. Поверхностное копирование объектов и изменяемость типов
3. Чисто позиционные параметры
Нетехнические навыки:
1. Какие знания нужны разработчику?
2. Проблемы курсов по программированию
3. Теория разбитых окон
4. Синдром «я так и знал»
Собеседования:
1. Завышать ли опыт в резюме?
2. Пересмотри своё собеседование
3. Что я увидел в своих собеседованиях, часть 1
#backup
🔥9👍6❤3