Пятничное развлекательное. Этим вечером предлагаем вам очередную подборку комиксов от xkcd с лёгким налётом безумия. Про интерес к этому комиксу вы можете почитать в старом посте.
Безопасность
Взгляды на конфиденциальность
Бессонница
Кишечная фауна
Представь себе поляну
Проверка багажа
Путешествие во времени
Свобода слова
#fun #xkcd
Безопасность
Взгляды на конфиденциальность
Бессонница
Кишечная фауна
Представь себе поляну
Проверка багажа
Путешествие во времени
Свобода слова
#fun #xkcd
🔥6❤1👍1
Кино на выходные
Отойдём от комиксов и вспомним классическую комедию Большой Лебовски (1998), строго в гоблинском переводе. Тут и сюжет, и разлетевшиеся на цитаты фразы героев, и собственная философия (привет, дудеизм), и характерные персонажи. Кажется, что этот необычный фильм нельзя не полюбить.
Для истинных ценителей Лебовски можем предложить вам фанатскую теорию от ЧБУ.
Всем надёжных как швейцарские часы планов.
#fun #films
Отойдём от комиксов и вспомним классическую комедию Большой Лебовски (1998), строго в гоблинском переводе. Тут и сюжет, и разлетевшиеся на цитаты фразы героев, и собственная философия (привет, дудеизм), и характерные персонажи. Кажется, что этот необычный фильм нельзя не полюбить.
Для истинных ценителей Лебовски можем предложить вам фанатскую теорию от ЧБУ.
Всем надёжных как швейцарские часы планов.
#fun #films
Кинопоиск
«Большой Лебовски» (The Big Lebowski, 1998)
🎬 Лос-Анджелес, 1991 год, война в Персидском заливе. Главный герой по прозвищу Чувак считает себя совершенно счастливым человеком. Его жизнь составляют игра в боулинг и выпивка. Но внезапно его счастье нарушается, гангстеры по ошибке принимают его за миллионера…
🔥5❤4👍2
Корчеватель ломает науку
Любую нетривиальную задачу по разработке следует начинать с анализа предметной области (наш пример разбора статей в области видеоаналитики) и просмотра доступных альтернатив на github и gitlab. Анализ предметной области по рецензируемым научным изданиям позволяет получить защиту от переизобретения велосипеда, сразу взять хорошее решение и дорабатывать его.
В хорошей научной статье сделан обзор чужих публикаций, выработаны критерии для сравнения и произведено сравнение альтернатив, результаты которого можно переиспользовать. Мы разбирали плохие критерии в статье про выбор ЯП для изучения программирования и хорошие в статье про сравнение брокеров сообщений.
Но не все научные издания одинаково хороши. Как оценить "хорошесть" издания? Неплохой вариант выявления плохих — продемонстрировать, что журнал принимает к изданию фигню. Но просто написать фигню — на наш вариант. Давайте фигню сгенерируем. Так родился Корчеватель, написанный преимущественно на perl проект по генерации псевдонаучных текстов. Он есть на github (без документации, как мы любим). Но результаты хороши — статья с наукообразным текстом, графиками и литературой, которая была неоднократно принята к изданию с положительными отзывами рецензентов у нас и за рубежом. Таким способом можно выявлять плохих рецензентов и ужасные журналы.
Нельзя не упомянуть яндекс.рефераты. Выбираете набор тематик и получаете фрагмент безумного текста. Залипательно. Маркетинг&Математика выдаёт тексты, похожие на половину пресс-релизов компаний:
В соответствии с законом больших чисел, жизненный цикл продукции традиционно определяет рекламоноситель, полагаясь на инсайдерскую информацию. Баннерная реклама, общеизвестно, экономит тройной интеграл.
Организация службы маркетинга раскручивает стремящийся рейтинг. Медиаплан, конечно, консолидирует убывающий рейтинг. Баланс спроса и предложения, не вдаваясь в подробности, раскручивает минимум, оптимизируя бюджеты.
#edu #sudo #devfm
Любую нетривиальную задачу по разработке следует начинать с анализа предметной области (наш пример разбора статей в области видеоаналитики) и просмотра доступных альтернатив на github и gitlab. Анализ предметной области по рецензируемым научным изданиям позволяет получить защиту от переизобретения велосипеда, сразу взять хорошее решение и дорабатывать его.
В хорошей научной статье сделан обзор чужих публикаций, выработаны критерии для сравнения и произведено сравнение альтернатив, результаты которого можно переиспользовать. Мы разбирали плохие критерии в статье про выбор ЯП для изучения программирования и хорошие в статье про сравнение брокеров сообщений.
Но не все научные издания одинаково хороши. Как оценить "хорошесть" издания? Неплохой вариант выявления плохих — продемонстрировать, что журнал принимает к изданию фигню. Но просто написать фигню — на наш вариант. Давайте фигню сгенерируем. Так родился Корчеватель, написанный преимущественно на perl проект по генерации псевдонаучных текстов. Он есть на github (без документации, как мы любим). Но результаты хороши — статья с наукообразным текстом, графиками и литературой, которая была неоднократно принята к изданию с положительными отзывами рецензентов у нас и за рубежом. Таким способом можно выявлять плохих рецензентов и ужасные журналы.
Нельзя не упомянуть яндекс.рефераты. Выбираете набор тематик и получаете фрагмент безумного текста. Залипательно. Маркетинг&Математика выдаёт тексты, похожие на половину пресс-релизов компаний:
В соответствии с законом больших чисел, жизненный цикл продукции традиционно определяет рекламоноситель, полагаясь на инсайдерскую информацию. Баннерная реклама, общеизвестно, экономит тройной интеграл.
Организация службы маркетинга раскручивает стремящийся рейтинг. Медиаплан, конечно, консолидирует убывающий рейтинг. Баланс спроса и предложения, не вдаваясь в подробности, раскручивает минимум, оптимизируя бюджеты.
#edu #sudo #devfm
Telegram
DevFM
Любая работа по программированию начинается с анализа предметной области. Рекомендуется пара этих ресурсов - для русского и английского поиска.
https://cyberleninka.ru
https://www.researchgate.net
https://scholar.google.com/
В начале ищутся самые популярные…
https://cyberleninka.ru
https://www.researchgate.net
https://scholar.google.com/
В начале ищутся самые популярные…
🔥9👍1🌭1
Интеграционные и юнит-тесты — основа стабильности проекта
В статье Антипаттерны тестирования ПО (хабр, 2018, оригинал) автор подробно рассматривает важность юнит- и интеграционных тестов. На понятных примерах поясняются те или иные проблемы, возникающие при развитии проекта. Тут даже про мной любимую цикломатическую сложность есть, ну красота же.
Не забыл автор и про плохие тесты (антипаттерн 5). Тестировать нужно спецификацию, а не реализацию.
Антипаттерн 10 перекликается с трактом баг — задача — ветка — merge request. Если кратко, это работает так. Обнаружили баг — создали задачу (тикет) — создали ветку к этой задаче — реализовали тест, который воспроизводит проблему (и падает, так как проект выдаёт неверное поведение) — починили баг — создали merge request (или pull request в случае github).
#procode
В статье Антипаттерны тестирования ПО (хабр, 2018, оригинал) автор подробно рассматривает важность юнит- и интеграционных тестов. На понятных примерах поясняются те или иные проблемы, возникающие при развитии проекта. Тут даже про мной любимую цикломатическую сложность есть, ну красота же.
Не забыл автор и про плохие тесты (антипаттерн 5). Тестировать нужно спецификацию, а не реализацию.
Антипаттерн 10 перекликается с трактом баг — задача — ветка — merge request. Если кратко, это работает так. Обнаружили баг — создали задачу (тикет) — создали ветку к этой задаче — реализовали тест, который воспроизводит проблему (и падает, так как проект выдаёт неверное поведение) — починили баг — создали merge request (или pull request в случае github).
#procode
Хабр
Антипаттерны тестирования ПО
Введение Есть несколько статей об антипаттернах разработки ПО. Но большинство из них говорят о деталях на уровне кода и фокусируются на конкретной технологии или...
🔥10❤1👍1
Господа, продолжаем покорять круглые числа. Мы перевалили за байт и теперь нас 256.
Делимся с вами всегда актуальным постом Как правильно лгать с помощью статистики (хабр, 2014). Для любителей статистики есть одноимённая книга
#ToTheMoon
Делимся с вами всегда актуальным постом Как правильно лгать с помощью статистики (хабр, 2014). Для любителей статистики есть одноимённая книга
#ToTheMoon
Хабр
Как правильно лгать с помощью статистики
Существуют три вида лжи: ложь, наглая ложь и статистика ( источник ) Есть такой замечательный жанр — " вредные советы ", в котором детям дают советы, а дети, как известно, всё делают...
🔥9👍3❤1
Мы сняли часовой стрим по созданию небольшого проекта на python для начинающих разработчиков. Идея проста — прочитать в csv-файле ФИО и login и проверить существование этого login на gitlab. Но тут vim, проект на gitlab, консольный git, исключения, google docstring, правильная структура проекта и тесты — всё слилось в едином экстазе.
Все покрытые темы — в описании под видео.
#youtube #python #devfm #sudo
Все покрытые темы — в описании под видео.
#youtube #python #devfm #sudo
YouTube
Стрим: python student часть 1 | Stream: python student part 1
Часовой стрим по созданию небольшого проекта на python из консоли и редактора vim с использованием gitlab. В видео раскрыты:
1. создание проекта в gitlab
2. консольную работу в git (git status / add / commit / diff / push), в том числе удобные alias для ускорения…
1. создание проекта в gitlab
2. консольную работу в git (git status / add / commit / diff / push), в том числе удобные alias для ускорения…
🔥20👍4🤯3
В файле requirements.txt обычно собраны необходимые для запуска python-проекта пакеты. Для установки этих зависимостей нужно выполнить команду
Но с ростом числа поддерживаемых проектов появляются конфликты между разными версиями пакетов. Например, одновременная поддержка Django версий 2, 3 и 4 — это кромешный ад. В статье Modern Python Environments приведен обзор систем управления окружением в python, а в конце есть удобная сравнительная табличка.
Какие проблемы есть у requirements?
1. Команда
2. Нет возможности разделять зависимости по средам исполнения. В development-среде нужны тесты и линтеры, которые в production-среде не требуются.
Для управления зависимостями в проектах я использую Poetry. Из интересного, в poetry отказались от привычного нам requirements, решив проблемы так:
1. Основные зависимости проекта хранятся в файле pyproject.toml, все остальные зависимости poetry собирает в отдельном файле.
2. Для разделения зависимостей по средам исполнения в процессе установки пакета необходимо указать соответствующую опцию и в pyproject.toml появится соответствующий раздел. В production-среде вы сможете устанавливать одни зависимости, в dev другие.
Еще в poetry стоит выделить возможность собирать ваш код в питоновские пакеты, дополнительно не описывая установщик setup. Есть и другие интересности, за которыми стоит заглянуть в документацию.
Poetry полезен даже в Docker, обеспечивая возможность переноса зависимостей между этапами сборки в multi-stage builds.
#python
pip install -r requirements.txtНо с ростом числа поддерживаемых проектов появляются конфликты между разными версиями пакетов. Например, одновременная поддержка Django версий 2, 3 и 4 — это кромешный ад. В статье Modern Python Environments приведен обзор систем управления окружением в python, а в конце есть удобная сравнительная табличка.
Какие проблемы есть у requirements?
1. Команда
pip freeze выводит длинную портянку зависимостей проекта. Поддерживать в аккуратном, контролируемом состоянии подобный файл сложно. Никогда нельзя понять, какие из зависимостей являются основными, а какие транзитивными.2. Нет возможности разделять зависимости по средам исполнения. В development-среде нужны тесты и линтеры, которые в production-среде не требуются.
Для управления зависимостями в проектах я использую Poetry. Из интересного, в poetry отказались от привычного нам requirements, решив проблемы так:
1. Основные зависимости проекта хранятся в файле pyproject.toml, все остальные зависимости poetry собирает в отдельном файле.
2. Для разделения зависимостей по средам исполнения в процессе установки пакета необходимо указать соответствующую опцию и в pyproject.toml появится соответствующий раздел. В production-среде вы сможете устанавливать одни зависимости, в dev другие.
Еще в poetry стоит выделить возможность собирать ваш код в питоновские пакеты, дополнительно не описывая установщик setup. Есть и другие интересности, за которыми стоит заглянуть в документацию.
Poetry полезен даже в Docker, обеспечивая возможность переноса зависимостей между этапами сборки в multi-stage builds.
#python
testdriven.io
Modern Python Environments - dependency and workspace management
This article looks at the available tools for dependency and workspace management in Python.
👍9🔥4❤1
Мы давно смотрим и обсуждаем ютуб-канал SOER с крутыми видео, например, о знаниях джун-разработчика, хорошем и плохом коде или чему научил вуз.
С недавних пор ещё следим и за его тг-каналом. Запомнились посты про roadmap, литературу, дизайн систем и "нельзя всё выкинуть и переписать". Автору зашёл наш стрим по python. Ответный реверанс от нас.
С недавних пор ещё следим и за его тг-каналом. Запомнились посты про roadmap, литературу, дизайн систем и "нельзя всё выкинуть и переписать". Автору зашёл наш стрим по python. Ответный реверанс от нас.
🔥11❤1👍1
Пятничное развлекательное. В этот день мы культурно развиваемся. Или деградируем, тут как повезёт.
На эти выходные мы продолжаем подборку любимых фильмов о времени. Все знают классический День сурка (Groundhog Day, 1993) о застрявшем во времени Филе (Билл Мюррей). Кстати, почему главный герой страдает при бесконечном доступе ко времени? Ситуация звучит как рай.
А если добавить к застывшему времени оружие? Есть и такое. Грань будущего (Edge of Tomorrow, 2014) с Томом Крузом погрузит вас в бесконечный боевик. Некоторые сценарные косяки этого фильма отсутствуют в оригинальной книге All you need is Kill, которая вполне достойна прочтения.
Куда менее известен фильм Петля времени (Looper, 2012) с Брюссом Уиллисом и Джозефом Гордон-Левитт. Машина времени используется преступниками как способ убийства без последствий.
#fun #films #books
На эти выходные мы продолжаем подборку любимых фильмов о времени. Все знают классический День сурка (Groundhog Day, 1993) о застрявшем во времени Филе (Билл Мюррей). Кстати, почему главный герой страдает при бесконечном доступе ко времени? Ситуация звучит как рай.
А если добавить к застывшему времени оружие? Есть и такое. Грань будущего (Edge of Tomorrow, 2014) с Томом Крузом погрузит вас в бесконечный боевик. Некоторые сценарные косяки этого фильма отсутствуют в оригинальной книге All you need is Kill, которая вполне достойна прочтения.
Куда менее известен фильм Петля времени (Looper, 2012) с Брюссом Уиллисом и Джозефом Гордон-Левитт. Машина времени используется преступниками как способ убийства без последствий.
#fun #films #books
Telegram
Вестник
Пятничное развлекательное.
Есть такое понятие, как "культурный код". Это объединяющий некоторую социальную группу набор понятий, терминов, отсылок и мемов. В культурный код входят разные художественные произведения. Сегодня поговорим о фильмах.
Вы знаете…
Есть такое понятие, как "культурный код". Это объединяющий некоторую социальную группу набор понятий, терминов, отсылок и мемов. В культурный код входят разные художественные произведения. Сегодня поговорим о фильмах.
Вы знаете…
🔥5❤1👍1
Фиксация зависимостей и вендоринг
Зачастую в файле с зависимостями проекта можно увидеть следующее:
Установится requests самой свежей версией выше указанной. Безобидный значок >= может повлечь множество неприятностей, и есть шанс после очередного обновления словить:
— калечащие изменения из-за отсутствия обратной совместимости
— новые баги используемой библиотеки
— и даже злонамеренные изменения в коде
Поэтому всегда фиксируйте зависимости путём использования == вместо >=. Применяйте это правило не только к requirements. Например, в докер-файле не используйте тег latest и всегда указывайте конкретную версию образа. В статье A developer sabotaged their own libraries (businessinsider, 2022) показаны последствия нежелания фиксировать версии зависимостей.
Конечно, не следует жить на старых версиях. Но периодические обновления зависимостей должны проходить в ручном режиме.
Следующий уровень паранойи — вендоринг. В дополнение к фиксированию версии вы также храните её в своём локальном репозитории. Кстати, в качестве универсального хранилища любых зависимостей можем порекомендовать self-hosted решение nexus (docker, apt, pip и многое другое).
Это выглядит избыточным, но продуктовая разработка с живыми пользователями заставляет смотреть на подобные рекомендации иначе. Прочитайте Protestware on the rise (techcrunch, 2022) об удалении популярного пакета из pypi.
На каком уровне паранойи остановиться — решать вам.
#python
Зачастую в файле с зависимостями проекта можно увидеть следующее:
requests>=2.28.1
Установится requests самой свежей версией выше указанной. Безобидный значок >= может повлечь множество неприятностей, и есть шанс после очередного обновления словить:
— калечащие изменения из-за отсутствия обратной совместимости
— новые баги используемой библиотеки
— и даже злонамеренные изменения в коде
Поэтому всегда фиксируйте зависимости путём использования == вместо >=. Применяйте это правило не только к requirements. Например, в докер-файле не используйте тег latest и всегда указывайте конкретную версию образа. В статье A developer sabotaged their own libraries (businessinsider, 2022) показаны последствия нежелания фиксировать версии зависимостей.
Конечно, не следует жить на старых версиях. Но периодические обновления зависимостей должны проходить в ручном режиме.
Следующий уровень паранойи — вендоринг. В дополнение к фиксированию версии вы также храните её в своём локальном репозитории. Кстати, в качестве универсального хранилища любых зависимостей можем порекомендовать self-hosted решение nexus (docker, apt, pip и многое другое).
Это выглядит избыточным, но продуктовая разработка с живыми пользователями заставляет смотреть на подобные рекомендации иначе. Прочитайте Protestware on the rise (techcrunch, 2022) об удалении популярного пакета из pypi.
На каком уровне паранойи остановиться — решать вам.
#python
Business Insider
A developer sabotaged their own open-source libraries, breaking thousands of apps, in apparent protest of mega-corporations
The two code libraries have been downloaded millions of times and have thousands of software projects depending on them.
👍8🔥3❤1
Backup: август
Python:
1. Управляем зависимостями: poetry / вендоринг
2. Пример логгирования в python / применяем else в цикле for / разбираем код в трёх постах
3. Заглушки для тестирования — постановка задачи и решение
Обучение:
1. Сравнение брокеров сообщений: идеальные критерии
2. Английский язык: почему он важен / как я научился воспринимать английский на слух
3. Чему стоит научиться в вузе? (хватить губить будущее ИТ)
Рассуждаем о программировании:
1. Нормальный ли у меня код?
2. Поддерживаемость кода
3. Чем плох goto?
4. Чему я научился за 30 лет в разработке?
Hardskills:
1. Подводные камни в bash
2. Анатомия Linux
Самое популярное:
Корчеватель ломает науку — как сгенерированные тексты пытаются опубликовать в рецензируемых изданиях
Наши видео:
1. Идеальный скрипт на bash
2. Атака forkbomb в docker
3. Стрим по python
#backup
Python:
1. Управляем зависимостями: poetry / вендоринг
2. Пример логгирования в python / применяем else в цикле for / разбираем код в трёх постах
3. Заглушки для тестирования — постановка задачи и решение
Обучение:
1. Сравнение брокеров сообщений: идеальные критерии
2. Английский язык: почему он важен / как я научился воспринимать английский на слух
3. Чему стоит научиться в вузе? (хватить губить будущее ИТ)
Рассуждаем о программировании:
1. Нормальный ли у меня код?
2. Поддерживаемость кода
3. Чем плох goto?
4. Чему я научился за 30 лет в разработке?
Hardskills:
1. Подводные камни в bash
2. Анатомия Linux
Самое популярное:
Корчеватель ломает науку — как сгенерированные тексты пытаются опубликовать в рецензируемых изданиях
Наши видео:
1. Идеальный скрипт на bash
2. Атака forkbomb в docker
3. Стрим по python
#backup
Telegram
DevFM
В файле requirements.txt обычно собраны необходимые для запуска python-проекта пакеты. Для установки этих зависимостей нужно выполнить команду
pip install -r requirements.txt
Но с ростом числа поддерживаемых проектов появляются конфликты между разными версиями…
pip install -r requirements.txt
Но с ростом числа поддерживаемых проектов появляются конфликты между разными версиями…
🔥16❤1👍1
Брокер сообщений Apache Kafka
Начать изучение рекомендуем со статьи Apache Kafka: основы технологии от ребят из slurm, в которой покрыты:
— отличия кафки от остальных сервисов очередей
— базовые компоненты kafka
— основные принципы работы
Для опытных пользователей будет полезна статья Apache Kafka: the Complicated Simplicity (открывать с vpn) о неочевидных проблемах, с которыми можно столкнуться. Но наибольшую ценность представляют предложенные решения.
Нам эта статья помогла разобраться, почему не удаляются записи месячной давности при явно заданном в настройках правиле "удалять записи старше одного месяца". Дело в том, что кафка хранит данные в сегментах (segments). Запись осуществляется в один активный сегмент, который при достижении определенного размера становится неактивным. Оказалось, что удалять можно только данные из неактивных сегментов. И правило на удаление не сработает, если данные в этот момент находятся в активном сегменте.
#skills
Начать изучение рекомендуем со статьи Apache Kafka: основы технологии от ребят из slurm, в которой покрыты:
— отличия кафки от остальных сервисов очередей
— базовые компоненты kafka
— основные принципы работы
Для опытных пользователей будет полезна статья Apache Kafka: the Complicated Simplicity (открывать с vpn) о неочевидных проблемах, с которыми можно столкнуться. Но наибольшую ценность представляют предложенные решения.
Нам эта статья помогла разобраться, почему не удаляются записи месячной давности при явно заданном в настройках правиле "удалять записи старше одного месяца". Дело в том, что кафка хранит данные в сегментах (segments). Запись осуществляется в один активный сегмент, который при достижении определенного размера становится неактивным. Оказалось, что удалять можно только данные из неактивных сегментов. И правило на удаление не сработает, если данные в этот момент находятся в активном сегменте.
#skills
Слёрм
Как работает Apache Kafka. Producer, consumer и отличия от RabbitMQ | Блог slurm.io
Разбираемся в механизмах работы Apache Kafka | Блог slurm.io
🔥6👍2❤1
Проектируем сервис: поиск организаций по картам
Частью жизни middle-разработчика и выше является проектирование сервисов. На собеседованиях эта секция называется system design interview. В рамках проектирования нужно уточнить требования к сервису и ограничения, оценить возможную нагрузку, выбрать те или иные технические решения.
В видео FAANG System Design Interview: Design A Location Based Service (англ) проектируют сервис поиска ближайших организаций по картам. Требуется регистрация организации (классический CRUD) и поиск ближайших для заданной геопозиции (вернуть все организации в заданном радиусе). Условия — 200 млн организаций на карте и 100 млн пользователей, генерирующих в день по 5 запросов каждый. Сможете по этим данным прикинуть объём диска для хранения будущей БД?
Автор подробно рассматривает способы хранения точки на карте для быстрого поиска ближайших — geohash и quadtree.
#skills #youtube
Частью жизни middle-разработчика и выше является проектирование сервисов. На собеседованиях эта секция называется system design interview. В рамках проектирования нужно уточнить требования к сервису и ограничения, оценить возможную нагрузку, выбрать те или иные технические решения.
В видео FAANG System Design Interview: Design A Location Based Service (англ) проектируют сервис поиска ближайших организаций по картам. Требуется регистрация организации (классический CRUD) и поиск ближайших для заданной геопозиции (вернуть все организации в заданном радиусе). Условия — 200 млн организаций на карте и 100 млн пользователей, генерирующих в день по 5 запросов каждый. Сможете по этим данным прикинуть объём диска для хранения будущей БД?
Автор подробно рассматривает способы хранения точки на карте для быстрого поиска ближайших — geohash и quadtree.
#skills #youtube
👍5🔥3❤1
Поиск команд в консоли с помощью ctrl+r
Стрелочки вверх-вниз помогут найти в консоли команду, которая использовалась раньше. Это удобно для недавних команд, но не поможет со старыми.
Нажмите в консоли ctrl+r и введите любую часть искомой команды. Будет предложен вариант команды из истории. Если он не подходит, нажмите ещё раз ctrl+r для поиска дальше в истории. Добавьте букв для уточнения поиска. Если пропустили нужную команду, итерируйтесь в обратную сторону с помощью ctrl+shift+r, но этот хоткей работает не везде.
На скрине приведён пример поиска по параметру mig, по команде vim, по флагу cpu. Обратите внимание, что курсор будет стоять на начале найденной подстроки. Прервать поиск можно с помощью ctrl-c. Когда нашли нужную команду, нажмите enter для выполнения, esc или стрелочку в сторону для модификации.
#devfm #skills
Стрелочки вверх-вниз помогут найти в консоли команду, которая использовалась раньше. Это удобно для недавних команд, но не поможет со старыми.
Нажмите в консоли ctrl+r и введите любую часть искомой команды. Будет предложен вариант команды из истории. Если он не подходит, нажмите ещё раз ctrl+r для поиска дальше в истории. Добавьте букв для уточнения поиска. Если пропустили нужную команду, итерируйтесь в обратную сторону с помощью ctrl+shift+r, но этот хоткей работает не везде.
На скрине приведён пример поиска по параметру mig, по команде vim, по флагу cpu. Обратите внимание, что курсор будет стоять на начале найденной подстроки. Прервать поиск можно с помощью ctrl-c. Когда нашли нужную команду, нажмите enter для выполнения, esc или стрелочку в сторону для модификации.
#devfm #skills
👍8🔥4⚡1
Типовая структура python-проекта без веба
В статье Как организовать код в Python-проекте, чтобы потом не пожалеть (хабр, 2022, оригинал) рассматривается более-менее типовая структура проекта без использования веб-фреймворка.
Только отношение к классам в статье странное, что не преминули заметить в комментариях. Для объединения логически связанных функций лучше подходят модули. Потребность в классах возникает при наличии данных и методов управления ими, плюс сокрытии внутреннего поведения.
Рекомендация везде применять множественное число в названиях тоже сомнительная.
Кроме того, в проекте-примере нет тестов, что совсем нехорошо.
#python
В статье Как организовать код в Python-проекте, чтобы потом не пожалеть (хабр, 2022, оригинал) рассматривается более-менее типовая структура проекта без использования веб-фреймворка.
Только отношение к классам в статье странное, что не преминули заметить в комментариях. Для объединения логически связанных функций лучше подходят модули. Потребность в классах возникает при наличии данных и методов управления ими, плюс сокрытии внутреннего поведения.
Рекомендация везде применять множественное число в названиях тоже сомнительная.
Кроме того, в проекте-примере нет тестов, что совсем нехорошо.
#python
🔥5❤2👍1
Пятничное развлекательное. В этот день мы делимся культурным кодом. Поговорим про интерфейсы?
В статье Интерфейсы в реальном мире обсуждаются крутые интерфейсы в физическом мире. Есть вкусное продолжение. Подмечены крутые детали окружения, на которые мы привыкли не обращать внимания.
Проектирование по-настоящему отвратительных интерфейсов требует сноровки. В статье Введите номер телефона, или ад пользователя вас ждут гифки с отборным ужасом.
Ну и классика жанра начала века. Ложка столовая глубокая: инструкция по эксплуатации.
#fun
В статье Интерфейсы в реальном мире обсуждаются крутые интерфейсы в физическом мире. Есть вкусное продолжение. Подмечены крутые детали окружения, на которые мы привыкли не обращать внимания.
Проектирование по-настоящему отвратительных интерфейсов требует сноровки. В статье Введите номер телефона, или ад пользователя вас ждут гифки с отборным ужасом.
Ну и классика жанра начала века. Ложка столовая глубокая: инструкция по эксплуатации.
#fun
👍6❤2🔥2🤯1
Вопросы для junior python developer
Статьи для подготовки к собеседованиям хорошо помогают в поиске собственных пробелов в знаниях. В статье Полный список вопросов с собеседований по Python для дата-сайентистов и инженеров (habr, 2020, оригинал) на самом деле покрываются базовые аспекты Python для младшего разработчика.
Некоторые вещи объяснены плохо, лучше прочитайте документацию, книги Лутца или Лучано. Кстати, у последнего в этом году вышло второе издание Python. К вершинам мастерства (в оригинале Fluent Python).
И да, в п. 53 автор забыл, что в try-except-finally может быть и else, который выполнится, если не было исключений. О блоке else у for мы писали раньше.
#python #books #резюме
Статьи для подготовки к собеседованиям хорошо помогают в поиске собственных пробелов в знаниях. В статье Полный список вопросов с собеседований по Python для дата-сайентистов и инженеров (habr, 2020, оригинал) на самом деле покрываются базовые аспекты Python для младшего разработчика.
Некоторые вещи объяснены плохо, лучше прочитайте документацию, книги Лутца или Лучано. Кстати, у последнего в этом году вышло второе издание Python. К вершинам мастерства (в оригинале Fluent Python).
И да, в п. 53 автор забыл, что в try-except-finally может быть и else, который выполнится, если не было исключений. О блоке else у for мы писали раньше.
#python #books #резюме
Хабр
Полный список вопросов с собеседований по Python для дата-сайентистов и инженеров
Snake and flowers 2 by pikaole Бывает, что компания ищет дата-сайентиста, а на самом деле ей нужен Python-разработчик. Поэтому при подготовке к собеседованию есть смысл освежить в памяти информацию по...
🔥8👍5❤1
Навигация по каналу
#sudo — наиболее важные посты. Начать знакомство с каналом рекомендуем с них.
#devfm — материалы собственного производства. Не просто аннотации, а наши мысли, статьи и видеоролики.
#python — фокусируемся на самом языке и его библиотеках.
#codereview — разбираем код, находим и устраняем проблемы, превращаем плохой код в хороший.
#procode — о профессиональной разработке и тестировании вне зависимости от языка.
#skills — о смежных с разработкой технических навыках, необходимых для работы и резюме. Инструменты (в том числе git, bash, docker), командная работа, безопасность и прочие фундаментальные вещи.
#systemdesign — проектирование систем и построение архитектуры.
#tools — полезные инструменты для работы.
#edu — полезные нетехнические навыки. Об обучении, продуктивности, английском, умении искать и обосновывать решения.
#youtube — видеоматериалы.
#fun — пятничное развлекательное и культурный код. Обзор художественных фильмов #films, книг #books, комиксов #xkcd и прочего.
#backup — лучшие посты месяца.
#sudo — наиболее важные посты. Начать знакомство с каналом рекомендуем с них.
#devfm — материалы собственного производства. Не просто аннотации, а наши мысли, статьи и видеоролики.
#python — фокусируемся на самом языке и его библиотеках.
#codereview — разбираем код, находим и устраняем проблемы, превращаем плохой код в хороший.
#procode — о профессиональной разработке и тестировании вне зависимости от языка.
#skills — о смежных с разработкой технических навыках, необходимых для работы и резюме. Инструменты (в том числе git, bash, docker), командная работа, безопасность и прочие фундаментальные вещи.
#systemdesign — проектирование систем и построение архитектуры.
#tools — полезные инструменты для работы.
#edu — полезные нетехнические навыки. Об обучении, продуктивности, английском, умении искать и обосновывать решения.
#youtube — видеоматериалы.
#fun — пятничное развлекательное и культурный код. Обзор художественных фильмов #films, книг #books, комиксов #xkcd и прочего.
#backup — лучшие посты месяца.
1👍18❤3🔥3
Постигаем git stash
Переключение на другой коммит может потребоваться в тот момент, когда новая фича ещё не завершена и тесты не написаны. Например, нужно запустить код из нового merge request или сделать хот-фикс в master ветке. При попытке перейти к другому коммиту git вежливо сообщит, что переход невозможен, так как есть незакомиченные изменения: error: Your local changes to the following files would be overwritten by checkout...
Первое, что приходит в голову — сделать коммит и перейти в нужное состояние репозитория. Лучше так не делать: получится коммит с не работающим кодом и в будущем будет сложнее вернуть контекст.
Самое время попробовать команду
Подробнее почитать о команде stash можно в главе книги Pro Git (оригинал)
#skills #books
Переключение на другой коммит может потребоваться в тот момент, когда новая фича ещё не завершена и тесты не написаны. Например, нужно запустить код из нового merge request или сделать хот-фикс в master ветке. При попытке перейти к другому коммиту git вежливо сообщит, что переход невозможен, так как есть незакомиченные изменения: error: Your local changes to the following files would be overwritten by checkout...
Первое, что приходит в голову — сделать коммит и перейти в нужное состояние репозитория. Лучше так не делать: получится коммит с не работающим кодом и в будущем будет сложнее вернуть контекст.
Самое время попробовать команду
git stash. В результате git временно откладывает все текущие изменения и мы получаем чистую рабочую копию. Теперь можно спокойно перемещаться по репозиторию. Чтобы вернуть наработки в рабочую копию необходимо выполнить команду git stash pop. Подробнее почитать о команде stash можно в главе книги Pro Git (оригинал)
#skills #books
🔥14👍4❤3
Зачем WSGI в Python?
На картинке изображён путь пользовательского http-запроса до его обработчика на питоне.
Но между ними располагаются вебсервер Nginx, WSGI-сервер Gunicorn и веб-фреймворк Django. И как это всё работает?
На видео WSGI for Web Developers Ryan Wilson-Perkin за 25 минут расскажет о всех элементах картинки, поднимет PEP3333 и покажет небольшую реализацию WSGI на сокетах.
#python #youtube
На картинке изображён путь пользовательского http-запроса до его обработчика на питоне.
Но между ними располагаются вебсервер Nginx, WSGI-сервер Gunicorn и веб-фреймворк Django. И как это всё работает?
На видео WSGI for Web Developers Ryan Wilson-Perkin за 25 минут расскажет о всех элементах картинки, поднимет PEP3333 и покажет небольшую реализацию WSGI на сокетах.
#python #youtube
👍10❤3🔥2