Что я увидел в своих собеседованиях, часть 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
Google Global Cache
Чем быстрее загружается контент, тем комфортнее пользователю. Как ускорить доставку контента?
Google принял интересное решение — давайте поставим интернет-провайдеру своё железо, которое будет выступать прозрачным кэширующим прокси. Провайдер обеспечивает стойку, электричество и интернет. Гугл обеспечивает сервер и удалённое администрирование. В результате у пользователей провайдера youtube и прочее грузится быстрее, при этом внешняя нагрузка на сеть провайдера снижается.
GGC сохраняет недавно просмотренные видео в масштабе района, вероятно, способен делать упреждающую загрузку для набирающих популярность видео и прочую чёрную магию. У самого гугла про это довольно лаконичная страница. Немного дополнительных сведений есть в старой статье Google Global Cache — для избранных.
Сама система запатентована в 2006 году.
#skills
Чем быстрее загружается контент, тем комфортнее пользователю. Как ускорить доставку контента?
Google принял интересное решение — давайте поставим интернет-провайдеру своё железо, которое будет выступать прозрачным кэширующим прокси. Провайдер обеспечивает стойку, электричество и интернет. Гугл обеспечивает сервер и удалённое администрирование. В результате у пользователей провайдера youtube и прочее грузится быстрее, при этом внешняя нагрузка на сеть провайдера снижается.
GGC сохраняет недавно просмотренные видео в масштабе района, вероятно, способен делать упреждающую загрузку для набирающих популярность видео и прочую чёрную магию. У самого гугла про это довольно лаконичная страница. Немного дополнительных сведений есть в старой статье Google Global Cache — для избранных.
Сама система запатентована в 2006 году.
#skills
Google
Introduction to GGC - Interconnect Help
Google Global Cache (GGC) allows ISPs to serve certain Google content from within their own networks. This eases congestion within your network, and reduces the amount on traffic on your peering
🔥8🌭2❤1👍1
Что я увидел в своих собеседованиях (часть 2)
Продолжаем начатое...
❌ Оказалось, что есть типовые вопросы, которые часто задают на собеседованиях, но к которым я специально не готовился. ООП, SOLID, микросервис vs монолит и подобное — без подготовки ответ выходит путанным.
✅ Подботал типовые вопросы.
❌ В какой-то момент я забывался, что нахожусь на интервью и общался с интервьюером, как с коллегой: рассказывал о каких-то негативных моментах в прошлых проектах, говорил от имени команды в контексте "Мы”.
✅ На интервью должна быть дружеская атмосфера, но не нужно забываться. Интервьюера нужно убедить, что я именно тот специалист, который им нужен. На работу устраиваюсь Я, значит в моих рассказах должно быть побольше Я и поменьше Мы. В эту же сторону, поменьше рассказывать о каких-то проблемных местах, побольше рассказывать о удачно решённых задачах.
❌ Во время рассказа "о себе" уходил в ненужные подробности, из-за чего рассказ получался водянистым и производил скорее негативное впечатление.
✅ Я полностью прописал рассказ "о себе", в несколько заходов вычитал и отрепетировал, чтобы в итоге было недолго и по делу.
❌ Когда интервьюер спрашивал "есть ли у меня вопросы по вакансии и компании", то возникала заминка. Я спрашивал не очень связно и не всё, что действительно хотел узнать о потенциальном работодателе.
✅ Для этого я также составил чеклист со списком интересующих меня вопросов.
Какие у вас были проблемы на собесе?
#devfm #edu #резюме
Продолжаем начатое...
❌ Оказалось, что есть типовые вопросы, которые часто задают на собеседованиях, но к которым я специально не готовился. ООП, SOLID, микросервис vs монолит и подобное — без подготовки ответ выходит путанным.
✅ Подботал типовые вопросы.
❌ В какой-то момент я забывался, что нахожусь на интервью и общался с интервьюером, как с коллегой: рассказывал о каких-то негативных моментах в прошлых проектах, говорил от имени команды в контексте "Мы”.
✅ На интервью должна быть дружеская атмосфера, но не нужно забываться. Интервьюера нужно убедить, что я именно тот специалист, который им нужен. На работу устраиваюсь Я, значит в моих рассказах должно быть побольше Я и поменьше Мы. В эту же сторону, поменьше рассказывать о каких-то проблемных местах, побольше рассказывать о удачно решённых задачах.
❌ Во время рассказа "о себе" уходил в ненужные подробности, из-за чего рассказ получался водянистым и производил скорее негативное впечатление.
✅ Я полностью прописал рассказ "о себе", в несколько заходов вычитал и отрепетировал, чтобы в итоге было недолго и по делу.
❌ Когда интервьюер спрашивал "есть ли у меня вопросы по вакансии и компании", то возникала заминка. Я спрашивал не очень связно и не всё, что действительно хотел узнать о потенциальном работодателе.
✅ Для этого я также составил чеклист со списком интересующих меня вопросов.
Какие у вас были проблемы на собесе?
#devfm #edu #резюме
Telegram
DevFM
Что я увидел в своих собеседованиях, часть 1
Как и обещал, тезисно изложу ошибки, замеченные в результате просмотра собеседований и решения, к которым пришел.
❌ В самом начале собеседования возникала какая-то суета: включена ли камера и звук, открыто ли…
Как и обещал, тезисно изложу ошибки, замеченные в результате просмотра собеседований и решения, к которым пришел.
❌ В самом начале собеседования возникала какая-то суета: включена ли камера и звук, открыто ли…
👍10🌭3❤1🔥1
Ключевая способность программиста
В статье Почему твоя мама всё ещё не прогает? поднимается интересный вопрос: существует ли талант к программированию? Что именно требуется человеку, чтобы преуспеть в ИТ? Процитируем центральный момент статьи:
"По моему опыту, главная особенность, необходимая для того, чтобы стать программистом, это способность длительно, в повседневном режиме выдерживать фрустрацию, возникающую от преодоления когнитивной сложности. Не ум, не рациональность мышления, не высокая концентрация внимания, а именно способность терпеть страдания, разбираясь в чём-то сложном."
За деталями отправляем к первоисточнику. Аргументация местами спорная, но с выводом тяжело не согласиться. В профессиональной разработке мы непрерывно сталкиваемся с вопросом "WTF оно не работает". Или, что хуже, с вопросом "как оно вообще работает". И весь инструментарий разработчика направлен на снижение когнитивной сложности за счёт декомпозиции на мелкие, управляемые сущности.
Важно уметь доводить до конца, как поделились историей в комментариях.
#edu
В статье Почему твоя мама всё ещё не прогает? поднимается интересный вопрос: существует ли талант к программированию? Что именно требуется человеку, чтобы преуспеть в ИТ? Процитируем центральный момент статьи:
"По моему опыту, главная особенность, необходимая для того, чтобы стать программистом, это способность длительно, в повседневном режиме выдерживать фрустрацию, возникающую от преодоления когнитивной сложности. Не ум, не рациональность мышления, не высокая концентрация внимания, а именно способность терпеть страдания, разбираясь в чём-то сложном."
За деталями отправляем к первоисточнику. Аргументация местами спорная, но с выводом тяжело не согласиться. В профессиональной разработке мы непрерывно сталкиваемся с вопросом "WTF оно не работает". Или, что хуже, с вопросом "как оно вообще работает". И весь инструментарий разработчика направлен на снижение когнитивной сложности за счёт декомпозиции на мелкие, управляемые сущности.
Важно уметь доводить до конца, как поделились историей в комментариях.
#edu
Хабр
Почему твоя мама всё ещё не прогает?
Случай с бомжом Однажды в конце декабря, когда воздух пахнет сгорающими над городом фейерверками, а улицы полны паникующих из-за цен на горошек, я решил научить программированию бомжа. Он сидел у...
👍8❤3⚡1🔥1🌭1
Проблемы MongoDB
В статье Ошибки выбора MongoDB в качестве основной БД в стартапе подмечены некоторые сложности mongo:
— будет беда, если работать напрямую со словарями из базы
— отсутствие привычных схемы и миграций может создать проблемы
— сложные query по вложенным документам могут заставить грустить
Проблемы и аргументация местами спорные. Комментарии указывают на часть ошибок автора. Например, что с query всё хорошо и без схемы здорово.
MongoDB самая популярная NoSQL база данных, если верить опросу StackOverflow. Ранее мы писали об этом. Если у вас проблемы с mongo, то либо вы решаете не ту задачу и вам нужен другой инструмент, либо вы что-то делаете не так.
Какие базы используете вы? Поделитесь недавней болью в комментариях.
#skills #database
В статье Ошибки выбора MongoDB в качестве основной БД в стартапе подмечены некоторые сложности mongo:
— будет беда, если работать напрямую со словарями из базы
— отсутствие привычных схемы и миграций может создать проблемы
— сложные query по вложенным документам могут заставить грустить
Проблемы и аргументация местами спорные. Комментарии указывают на часть ошибок автора. Например, что с query всё хорошо и без схемы здорово.
MongoDB самая популярная NoSQL база данных, если верить опросу StackOverflow. Ранее мы писали об этом. Если у вас проблемы с mongo, то либо вы решаете не ту задачу и вам нужен другой инструмент, либо вы что-то делаете не так.
Какие базы используете вы? Поделитесь недавней болью в комментариях.
#skills #database
Хабр
Ошибки выбора MongoDB в качестве основной БД в стартапе
В этой статье я хочу рассказать о своих ошибках, которые я допустил, когда писал сервис, у которого MongoDB была основной БД для хранения пользовательских данных (да и не только, но об этом ниже). Я...
👍3🌭3❤1🔥1
Пятничное развлекательное
Очередная подборка комиксов от xkcd. В фокусе опять IT. И грусть.
Кому докладывает Linux о нарушении sudo? Победим ли мы в войне против роботов? Мысли об установки приложений и важности чтения мануалов. Концепция цифровой археологии личности и ужасно бедный марсоход.
Инцидент
Сражение с лотком CD (война роботов)
Установка программ
RTFM (тостер)
Старые файлы
Спирит (марсоход)
#fun #xkcd
Очередная подборка комиксов от xkcd. В фокусе опять IT. И грусть.
Кому докладывает Linux о нарушении sudo? Победим ли мы в войне против роботов? Мысли об установки приложений и важности чтения мануалов. Концепция цифровой археологии личности и ужасно бедный марсоход.
Инцидент
Сражение с лотком CD (война роботов)
Установка программ
RTFM (тостер)
Старые файлы
Спирит (марсоход)
#fun #xkcd
❤5🔥3👍2⚡1
Кино на выходные
Серия фильмов Терминатор является классикой о восстании машин. Первый фильм 1984 года с брутальным Арнольдом Шварценеггером в роли Терминатора запомнился неотвратимостью машин. Терминатор 2: Судный день 1991 года расширяет возможности роботов, Роберт Патрик в роли жидкого металла Т-1000 существенно повышает градус опасности. Здесь же поднимается вопрос ценности человеческой жизни и идея обучения робота человеческому. Оба фильма заслуживают просмотра.
Следующие фильмы, кажется, были порождены жаждой денег, да и ригинального режиссёра первых двух частей Джеймса Кэмерона в 3-5 частях не задействовали. Отсюда слабые рейтинги, незапоминающийся сюжет и куча нестыковок. Возврат Кэмерона в 6 части делу не помог.
Бэдкомедиан сделал обзор на пятую и шестую части франшизы.
#fun #films
Серия фильмов Терминатор является классикой о восстании машин. Первый фильм 1984 года с брутальным Арнольдом Шварценеггером в роли Терминатора запомнился неотвратимостью машин. Терминатор 2: Судный день 1991 года расширяет возможности роботов, Роберт Патрик в роли жидкого металла Т-1000 существенно повышает градус опасности. Здесь же поднимается вопрос ценности человеческой жизни и идея обучения робота человеческому. Оба фильма заслуживают просмотра.
Следующие фильмы, кажется, были порождены жаждой денег, да и ригинального режиссёра первых двух частей Джеймса Кэмерона в 3-5 частях не задействовали. Отсюда слабые рейтинги, незапоминающийся сюжет и куча нестыковок. Возврат Кэмерона в 6 части делу не помог.
Бэдкомедиан сделал обзор на пятую и шестую части франшизы.
#fun #films
Кинопоиск
«Терминатор» (The Terminator, 1984)
🎬 История противостояния солдата Кайла Риза и киборга-терминатора, прибывших в 1984 год из пост-апокалиптического будущего, где миром правят машины-убийцы, а человечество находится на грани вымирания. Подробная информация о фильме Терминатор на сайте Кинопоиск.
🌭4👍3🔥2❤1
Шаблонизатор HTML — Jinja
На прошлом видео про WSGI рассматривался веб-запрос с момента пользовательского перехода на сайт до демонстрации ему строчки текста. Но современная веб-страница — это не просто текст, а фарш из HTML, CSS и javascript. Обычно сейчас frontend является отдельным проектом на angular/vue/react, а python код отдаёт лишь json для дальнейшей отрисовки на фронте.
Если нет сложных требований к фронтовой части приложения, можно воспользоваться html-шаблонизатором. Собственно, это HTML плюс небольшой язык управляющих конструкций типа for и if. Разработчик формирует шаблон — классическую HTML-страницу, в которой будущие данные оформлены в виде управляющих конструкций с внешними переменными. Из кода на python мы выбираем шаблон и подаём входные данные. Шаблонизатор подставляет входные данные в управляющие конструкции и формирует итоговую HTML-страницу для пользователя.
Наиболее популярным HTML-шаблонизатором для python является Jinja. Он применяется в Flask и FastAPI, его можно подключить в Django вместо Django template language.
Небольшой гайд по Jinja в рамках работы с Flask.
Полная документация по Jinja.
#python #devfm
На прошлом видео про WSGI рассматривался веб-запрос с момента пользовательского перехода на сайт до демонстрации ему строчки текста. Но современная веб-страница — это не просто текст, а фарш из HTML, CSS и javascript. Обычно сейчас frontend является отдельным проектом на angular/vue/react, а python код отдаёт лишь json для дальнейшей отрисовки на фронте.
Если нет сложных требований к фронтовой части приложения, можно воспользоваться html-шаблонизатором. Собственно, это HTML плюс небольшой язык управляющих конструкций типа for и if. Разработчик формирует шаблон — классическую HTML-страницу, в которой будущие данные оформлены в виде управляющих конструкций с внешними переменными. Из кода на python мы выбираем шаблон и подаём входные данные. Шаблонизатор подставляет входные данные в управляющие конструкции и формирует итоговую HTML-страницу для пользователя.
Наиболее популярным HTML-шаблонизатором для python является Jinja. Он применяется в Flask и FastAPI, его можно подключить в Django вместо Django template language.
Небольшой гайд по Jinja в рамках работы с Flask.
Полная документация по Jinja.
#python #devfm
Telegram
DevFM
Зачем WSGI в Python?
На картинке изображён путь пользовательского http-запроса до его обработчика на питоне.
Но между ними располагаются вебсервер Nginx, WSGI-сервер Gunicorn и веб-фреймворк Django. И как это всё работает?
На видео WSGI for Web Developers…
На картинке изображён путь пользовательского http-запроса до его обработчика на питоне.
Но между ними располагаются вебсервер Nginx, WSGI-сервер Gunicorn и веб-фреймворк Django. И как это всё работает?
На видео WSGI for Web Developers…
⚡2👍2❤1👎1🔥1🌭1
Задача на собеседовании — проектируем динамическую фильтрацию
При поиске товаров на любой торговой площадке мы видим разухабистые возможности фильтрации товаров. Ваша задача — спроектировать функционал фильтрации результата поиска товаров.
Если вам на собеседовании поставили задачу в такой размытой формулировке, не пытайтесь сразу приступать к её решению. В первую очередь уточните требования и ограничения.
После уточнения задачи получаем следующие вводные:
— имеется клиент-серверное приложение интернет-магазина с возможностью поиска товаров
— количество записей в результате поиска может доходить до 1кк
— к полученным в результате поиска товарам можно применять множественные фильтры, у каждого фильтра есть набор значений
— у разных категорий товаров разный набор фильтров
— после применения конкретного фильтра появляется новая выборка и для нее также должны отображаться только актуальные фильтры
Рассмотрим пример. Для телефонов должны быть фильтры "производитель" и "операционная система". После применения фильтра "производитель: Apple" в фильтрах ОС уже не может быть значения Android.
— для каждого значения фильтра необходимо отображать количество подходящих товаров. После выбора одного фильтра все счетчики должны пересчитываться.
Было "производитель": "Apple: 10", "Xiaomi: 20", "Встроенная память": "128 Гб: 10", “256 Гб: 20". Выбрали "128 Гб", после применения станет, например, "производитель": "Apple: 7", "Xiaomi: 19". То есть 3 модели Apple и 1 модель Xiaomi не попали под выбранный фильтр.
— данные хранятся в postgres. Отдельно подумайте, как можно решить задачу, если у вас не стоит ограничение на базу данных
Как на настоящем собеседовании, уточняющие вопросы можно задать в комментариях. Наше решение задачи в 20:00 понедельника.
#devfm #skills #резюме
При поиске товаров на любой торговой площадке мы видим разухабистые возможности фильтрации товаров. Ваша задача — спроектировать функционал фильтрации результата поиска товаров.
Если вам на собеседовании поставили задачу в такой размытой формулировке, не пытайтесь сразу приступать к её решению. В первую очередь уточните требования и ограничения.
После уточнения задачи получаем следующие вводные:
— имеется клиент-серверное приложение интернет-магазина с возможностью поиска товаров
— количество записей в результате поиска может доходить до 1кк
— к полученным в результате поиска товарам можно применять множественные фильтры, у каждого фильтра есть набор значений
— у разных категорий товаров разный набор фильтров
— после применения конкретного фильтра появляется новая выборка и для нее также должны отображаться только актуальные фильтры
Рассмотрим пример. Для телефонов должны быть фильтры "производитель" и "операционная система". После применения фильтра "производитель: Apple" в фильтрах ОС уже не может быть значения Android.
— для каждого значения фильтра необходимо отображать количество подходящих товаров. После выбора одного фильтра все счетчики должны пересчитываться.
Было "производитель": "Apple: 10", "Xiaomi: 20", "Встроенная память": "128 Гб: 10", “256 Гб: 20". Выбрали "128 Гб", после применения станет, например, "производитель": "Apple: 7", "Xiaomi: 19". То есть 3 модели Apple и 1 модель Xiaomi не попали под выбранный фильтр.
— данные хранятся в postgres. Отдельно подумайте, как можно решить задачу, если у вас не стоит ограничение на базу данных
Как на настоящем собеседовании, уточняющие вопросы можно задать в комментариях. Наше решение задачи в 20:00 понедельника.
#devfm #skills #резюме
🌭5⚡3❤2🔥1
Нас круглое число 2^10=1024. Все помнят, что в 1024 году родился Магнус I Добрый, король Норвегии и Дании.
Сегодня читаем Теорию жоп, шуточную статью о теории управления проектами. Или не шуточную...
Залипнуть во фрактальные картинки можно на сайте медузы и жопы.
#ToTheMoon
Сегодня читаем Теорию жоп, шуточную статью о теории управления проектами. Или не шуточную...
Залипнуть во фрактальные картинки можно на сайте медузы и жопы.
#ToTheMoon
🔥10👍3❤2🌭2
В задачах на проектирование чего-либо интервьюера интересует не столько сам ответ, сколько ход ваших мыслей. Вы можете не дойти до правильного ответа, или дойти с подсказкой. Рассмотрим потенциальные решения задачи и покритикуем их:
💡 Давайте присылать все данные на фронт и фильтровать там.
🚫 1кк записей передавать нецелесообразно. Более того, даже хранить фильтры на фронте не выйдет, так как они динамические и определяются конкретной выборкой. В любом случае, фильтровать должен бекенд.
💡В postgres можно спроектировать схему для хранения фильтров в связке со списком товаров, к которым эти фильтры можно применять.
🚫 Здесь не стали приводить конкретики, но отметим, что при таком подходе будут проблемы с динамическим обновлением счетчиков. А ещё такое решение несёт сложную ментальную нагрузку на разработчика.
💡Сведём задачу фильтрации к фасетному поиску. Для этого каждую единицу товара мы характеризуем набором конкретных признаков.
✅ В базе данных нам нужно завести отдельную колонку, где для каждого товара явно хранить набор его признаков и их значений. Для агрегации, подсчета количества и быстрого поиска по выбранным фильтрам можно использовать мощный механизм полнотекстового поиска.
Пример реализации такого решения с использованием полнотекстового поиска в postgres приведен в статье Faceted search using PostgreSQL full text search.
💡 Давайте присылать все данные на фронт и фильтровать там.
🚫 1кк записей передавать нецелесообразно. Более того, даже хранить фильтры на фронте не выйдет, так как они динамические и определяются конкретной выборкой. В любом случае, фильтровать должен бекенд.
💡В postgres можно спроектировать схему для хранения фильтров в связке со списком товаров, к которым эти фильтры можно применять.
🚫 Здесь не стали приводить конкретики, но отметим, что при таком подходе будут проблемы с динамическим обновлением счетчиков. А ещё такое решение несёт сложную ментальную нагрузку на разработчика.
💡Сведём задачу фильтрации к фасетному поиску. Для этого каждую единицу товара мы характеризуем набором конкретных признаков.
✅ В базе данных нам нужно завести отдельную колонку, где для каждого товара явно хранить набор его признаков и их значений. Для агрегации, подсчета количества и быстрого поиска по выбранным фильтрам можно использовать мощный механизм полнотекстового поиска.
Пример реализации такого решения с использованием полнотекстового поиска в postgres приведен в статье Faceted search using PostgreSQL full text search.
Telegram
DevFM
Задача на собеседовании — проектируем динамическую фильтрацию
При поиске товаров на любой торговой площадке мы видим разухабистые возможности фильтрации товаров. Ваша задача — спроектировать функционал фильтрации результата поиска товаров.
Если вам на собеседовании…
При поиске товаров на любой торговой площадке мы видим разухабистые возможности фильтрации товаров. Ваша задача — спроектировать функционал фильтрации результата поиска товаров.
Если вам на собеседовании…
🔥4❤2👍1
Тестирование миграций alembic
Все пишут юнит-тесты к своему коду и любят их за сокращение времени разработки. Но тестирование миграций — это что за зверь такой?
При использовании postgres в проектах для миграций мы обычно используем alembic. Бывают случаи, когда:
— внес изменения в модель и забыл накатить миграции
— пишешь миграцию, а потом оказывается, что она не работает для уже заполненных таблиц
Оказывается, можно избежать этих раздражающих проблем. Недавно наткнулись на плагин для pytest, который тестирует миграции. В комплекте идет 4 теста:
1. test_single_head_revision — проверяется, что существует единственная head ревизия
2. test_upgrade — проверяется согласованность всех миграций, то есть что миграции от первой до последней накатываются
3. test_model_definitions_match_ddl — проверяется, что состояние моделей должно полностью соответствовать миграциям
4. test_up_down_consistency — проверяется, что можно сделать даунгрейд от текущего состояния до пустой схемы
#python #database
Все пишут юнит-тесты к своему коду и любят их за сокращение времени разработки. Но тестирование миграций — это что за зверь такой?
При использовании postgres в проектах для миграций мы обычно используем alembic. Бывают случаи, когда:
— внес изменения в модель и забыл накатить миграции
— пишешь миграцию, а потом оказывается, что она не работает для уже заполненных таблиц
Оказывается, можно избежать этих раздражающих проблем. Недавно наткнулись на плагин для pytest, который тестирует миграции. В комплекте идет 4 теста:
1. test_single_head_revision — проверяется, что существует единственная head ревизия
2. test_upgrade — проверяется согласованность всех миграций, то есть что миграции от первой до последней накатываются
3. test_model_definitions_match_ddl — проверяется, что состояние моделей должно полностью соответствовать миграциям
4. test_up_down_consistency — проверяется, что можно сделать даунгрейд от текущего состояния до пустой схемы
#python #database
👍6🔥4❤2⚡1🌭1
Сервис проверки регулярок — regex101
У вас была одна проблема, потом вы решили применить регулярные выражения, теперь у вас две проблемы. Регулярки выглядят универсальным молотком, и после их изучения весь мир становится похожим на гвоздь. Но будьте осторожны! Применяйте регулярные выражения вдумчиво, когда другие способы действительно плохо применимы. Один из способов применения регулярок в pattern matching мы предлагали ранее.
Если всё-таки решили использовать регулярки, то для понимания их работы существует удобный сервис regex101.
Из удобного:
— наглядно видно, какая часть текста попала под регулярное выражение
— объясняется, как именно работает ваша регулярка
— есть подсказки, где можно быстренько что-то подглядеть
— можно выбрать язык, в рамках которого пишется регулярка, чтобы учитывать особенности ЯП
В дополнение есть менее применимый на практике сервис по визуализации и объяснению регулярок — regex-vis.
#skills
У вас была одна проблема, потом вы решили применить регулярные выражения, теперь у вас две проблемы. Регулярки выглядят универсальным молотком, и после их изучения весь мир становится похожим на гвоздь. Но будьте осторожны! Применяйте регулярные выражения вдумчиво, когда другие способы действительно плохо применимы. Один из способов применения регулярок в pattern matching мы предлагали ранее.
Если всё-таки решили использовать регулярки, то для понимания их работы существует удобный сервис regex101.
Из удобного:
— наглядно видно, какая часть текста попала под регулярное выражение
— объясняется, как именно работает ваша регулярка
— есть подсказки, где можно быстренько что-то подглядеть
— можно выбрать язык, в рамках которого пишется регулярка, чтобы учитывать особенности ЯП
В дополнение есть менее применимый на практике сервис по визуализации и объяснению регулярок — regex-vis.
#skills
regex101
regex101: build, test, and debug regex
Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust.
👍5⚡3🔥2❤1🌭1
Почему трава зеленая, а программисты крутые
В одноимённой статье поднимается занятный вопрос умения удачно абстрагировать сущности. Представьте детский вопрос «Почему трава зеленая». У вас есть 4 варианта ответа:
1. «Потому что. У тебя мороженка уже капает»
2. На скорую руку придуманное объяснение
3. Хорошее понятное объяснение с точки зрения науки в понятных ребенку терминах
4. Вывалить на ребенка кучу научной чепухи, чтобы он сам выбрал нужное и погуглил недостающее
Наверное, лучший все-таки вариант 3. Но есть проблема. Вы не знаете вариант 3. В статье интересно рассказывается почему и как всё это связано с программированием.
#edu
В одноимённой статье поднимается занятный вопрос умения удачно абстрагировать сущности. Представьте детский вопрос «Почему трава зеленая». У вас есть 4 варианта ответа:
1. «Потому что. У тебя мороженка уже капает»
2. На скорую руку придуманное объяснение
3. Хорошее понятное объяснение с точки зрения науки в понятных ребенку терминах
4. Вывалить на ребенка кучу научной чепухи, чтобы он сам выбрал нужное и погуглил недостающее
Наверное, лучший все-таки вариант 3. Но есть проблема. Вы не знаете вариант 3. В статье интересно рассказывается почему и как всё это связано с программированием.
#edu
Хабр
Почему трава зеленая, а программисты крутые
Я люблю находить на новостных ресурсах статьи о том, что программисты получают очень много денег. Я сразу пролистываю их до комментариев и с теплом в душе читаю гневные отзывы о том, что программисты...
❤7👍3🔥2⚡1🌭1
Пятничное развлекательное
Игра "кто хочет стать миллионером" является калькой с одноимённого британского шоу. И в США есть аналогичное шоу. Первый раз приз в один миллион долларов выиграл John Carpenter 19.11.1999, не израсходовав ни одной подсказки до финального вопроса. И на вопросе на миллион долларов он позвонил своему отцу. Отправляем вас посмотреть трёхминутное видео с заданным вопросом и неожиданной развязкой. 6 миллионов просмотров.
Спойлер. Он не задал вопрос отцу. Звонил игрок сообщить отцу, что выиграл. Обратите внимание на эмоции всех участвующих лиц.
С тех пор у Джона даже есть своя статья на вики.
#fun
Игра "кто хочет стать миллионером" является калькой с одноимённого британского шоу. И в США есть аналогичное шоу. Первый раз приз в один миллион долларов выиграл John Carpenter 19.11.1999, не израсходовав ни одной подсказки до финального вопроса. И на вопросе на миллион долларов он позвонил своему отцу. Отправляем вас посмотреть трёхминутное видео с заданным вопросом и неожиданной развязкой. 6 миллионов просмотров.
Спойлер. Он не задал вопрос отцу. Звонил игрок сообщить отцу, что выиграл. Обратите внимание на эмоции всех участвующих лиц.
С тех пор у Джона даже есть своя статья на вики.
#fun
YouTube
Who wants to be a Millionaire- million dollar winner
I do not own this video, or anything in it. I am in no way trying to take credit for the making of this clip or the TV show "Who Wants to be a Millionaire?"
😁8❤3🔥2🌭2⚡1👍1