Pull to refresh
11
0
Владимир Номхоев @nomhoi

Программист

Send message

Глобальная блокировка интерпретатора (GIL) и её воздействие на многопоточность в Python

Reading time34 min
Views58K

Прим. Wunder Fund: в статье рассказано, зачем появилась и существует глобальная блокировка интерпретатора в Питоне, как она работает, и как она влияет на скорость работы Питона, а также о том, куда в будущем, вероятно, будет двигаться Питон. У нас в фонде почти всё, что не написано на плюсах — написано на Питоне, мы пристально следим за тем, куда движется язык, и если вы тоже — вы знаете, что делать )

Как вы, наверное, знаете, глобальная блокировка интерпретатора (GIL, Global Interpreter Lock) — это механизм, обеспечивающий, при использовании интерпретатора CPython, безопасную работу с потоками. Но из-за GIL в конкретный момент времени выполнять байт-код Python может лишь один поток операционной системы. В результате нельзя ускорить Python-код, интенсивно использующий ресурсы процессора, распределив вычислительную нагрузку по нескольким потокам. Негативное влияние GIL на производительность Python-программ, правда, на этом не заканчивается. Так, GIL создаёт дополнительную нагрузку на систему. Это замедляет многопоточные программы и, что выглядит достаточно неожиданно, может даже оказать влияние на потоки, производительность которых ограничена подсистемой ввода/вывода.

Здесь я опираюсь на особенности CPython 3.9. По мере развития CPython некоторые детали реализации GIL, определённо, изменятся. Материал опубликован 22 сентября 2021 года, после публикации в него внесено несколько дополнений.

Читать далее
Total votes 44: ↑41 and ↓3+57
Comments12

Архитектурные паттерны в распределенных высоконагруженных системах

Reading time8 min
Views20K

Всякая сложная инфраструктура, поступательно развивавшаяся на протяжении длительного времени, содержит в себе набор разных архитектурных неоптимальностей, а то и откровенных недостатков. Порой эти недостатки становятся неожиданным препятствием для внедрения новых сервисов. Инфраструктура М.Видео-Эльдорадо в этом отношении не является исключением, в чем мы признаемся без излишней рефлексии. Но что с этим делать? Как сделать систему надежной и пригодной для дальнейшего развития? За ответами мы пришли к Александру Алехину, директору по развитию ИТ архитектуры.

Читать далее
Total votes 46: ↑45 and ↓1+52
Comments7

Почему джуны никому не нужны и как это изменить?

Reading time7 min
Views62K

Всем привет, это Макс Кравец из Holyweb. Знаю много историй, когда начинающего специалиста с первого дня бросают на задачи, за которые никто не берётся, и ждут, пока новый сотрудник сам «выплывет». А перегорит и уйдёт — значит, просто слабак, который не хочет работать.

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

Если вы — тот самый джуниор, хотите расти как IT-специалист и зарабатывать больше, но считаете, что вас постоянно недооценивают и держат на неинтересных задачах, ​​этот материал для вас.

Читать далее
Total votes 27: ↑22 and ↓5+20
Comments111

Как определить C и C++-программистов по коду, который они пишут

Reading time4 min
Views40K

Так уж случилось, что я пишу код для разных IoT-железок, связанных с электричеством, типа зарядных станций автомобилей. Поскольку аппаратных ресурсов, как правило, вполне достаточно, то основным фокусом является не экономия каждого байта и такта процессора, а понятный и надежный код. Поэтому в проекте разрабатывают под Embedded Linux и в качестве основного языка используют C++ в его современном варианте - C++17, активно поглядывая на фичи из стандарта 20-го года и новее.

Иногда запускаются новые проекты на той же платформе, с теми же процессами и с переиспользованием многих уже существующих компонентов, и тогда в эти проекты мы ищем программистов, с учетом вышесказанного - программистов на C++. В embedded, тем не менее, чистый C все еще очень популярен, и нередко собеседоваться на вакансию C++ Developer'а приходят именно сишники. Логика у человека простая: языки, на первый взгляд, довольно близкие, базовый синтаксис одинаков, про ООП кандидат что-то слышал, и значит, основная база уже есть и он сможет легко освоить C++ за 21 день в процессе работы, поэтому можно наплести про "с C++ тоже работал", начать писать на "Си с классами" и все получится.

Но нет, не получится.
Total votes 89: ↑65 and ↓24+62
Comments404

Корутины в C++20 — что это и как с ними работать

Reading time20 min
Views36K

Прим. Wunder Fund: В статье описаны базовые подходы к работе с корутинами в 20м стандарте С++, на паре практических примеров разобраны шаблоны классов для промисов и фьючеров. По нашему скромному мнению, можно было бы реализовать и поизящнее. Приходите к нам работать, если имеете сильные мнения о корутинах хе-хе.

Возникает такое ощущение, что тема реализации корутин в C++20 окутана серьёзной неопределённостью. Полагаю, это так из-за того, что в проекте технической спецификации C++20 сказано, что работа над механизмами корутин всё ещё ведётся, в результате в данный момент нельзя ожидать полной поддержки этих механизмов компиляторами и стандартной библиотекой.Множество проблем, вероятно, возникает из-за отсутствия официальной документации по работе с корутинами. Нам дали синтаксическую поддержку корутин в C++ (co_yield и co_return), но не всё то, что я счёл бы признаками их полной библиотечной поддержки. В стандартной библиотеке имеются хуки и базовый функционал поддержки корутин, но нам приходится самостоятельно встраивать всё это в наши собственные классы. Я ожидаю, что полная поддержка корутин-генераторов появится в C++23.

Если вы — Python- или C#-разработчик и ожидаете увидеть в C++ простую механику работы с корутинами, то вас ждёт разочарование, так как фреймворк общего назначения C++20 недоработан. Учитывая это, можно отметить, что в интернете имеется множество публикаций, в состав кода, обсуждаемого в которых, входит шаблонный класс, поддерживающий корутины-генераторы. В этом материале вы найдёте шаблон корутины, применимый на практике, а также примеры кода. Всё это предваряется общими сведениями о корутинах.

Читать далее
Total votes 26: ↑26 and ↓0+26
Comments11

Пять распространенных проблем кандидатов (по результатам 600 технических собеседований)

Reading time9 min
Views53K

Компания Geekfactor cовместно с Getmentor.dev проводит программу подготовки к трудоустройству в зарубежные стартапы (бесплатно помогаем подготовиться к интервью и показываем резюме классным компаниям) — почитать о ней подробней и зарегистрироваться можно тут. Свой блог на Хабре мы хотим посвятить теме трудоустройства зарубеж и наша первая статья — про то, каких ошибок стоит избегать при прохождении технических интервью в зарубежные компании.

Недавно я провел свое 600-е собеседование на платформе interviewing.io (IIO). В этой статье я хочу рассказать о своем опыте, подходе к проведению собеседований и основных проблемах, которые встречались у кандидатов на технических собеседованиях.
Читать дальше →
Total votes 50: ↑18 and ↓32-9
Comments76

Как стать web-разработчиком на Python за полгода: конкретный план действий

Reading time9 min
Views84K

Всем привет! Меня зовут Евгений Степанов, и я Python Full Stack-Developer в компании PVS-Studio. В этой статье вы узнаете, что нужно сделать, чтобы за полгода стать Python backend-разработчиком. После прочтения данной публикации у вас будет чёткий план, который останется только реализовать. Поехали!

Читать далее
Total votes 10: ↑8 and ↓2+6
Comments51

Введение в параллелизм

Reading time8 min
Views17K

Данная статья посвящена параллелизму в C++, сопутствующим сложностям и как их можно обойти, используя библиотеку oneAPI Threading Building Blocks (oneTBB) для упрощения параллельного программирования. 

Читать далее
Total votes 10: ↑4 and ↓60
Comments13
Традиционные финансовые институты в ужасе: соцсети строят свою финансовую инфраструктуру (VK Pay — существует, FB — пытается); «Гугл», «Яндекс» и «Эппл» имеют собственную платёжную систему, а маркеты прибирают к рукам небольшие банки. Продажи через мессенджеры — уже рутина. Да что там «Гугл», даже простые сервисы поиска выгодного кредита ставят банки в условия жёсткой конкуренции, спасает лишь законодательство.

Когда конкуренты точнее, быстрее и с наименьшими затратами удовлетворяют запросы клиентов и держат их в пределах своей экосистемы, быстрый запуск новых удобных финансовых сервисов и их масштабируемость — это вопрос выживания.
Пройти опрос
Total votes 14: ↑12 and ↓2+26
Comments26

Осознанная ходьба для удаленщика

Reading time7 min
Views29K

Я работаю на полной удаленке уже 10 лет. Стоит ли говорить, что проблема сидячего образа жизни все эти годы стоит ребром? Мой пример немного не типичен тем, что какое-то движение в жизни было всегда - сидячей работе сопутствовали эпизодические высокие нагрузки пару раз в месяц (выезды в условный лес). Но этого определенно недостаточно. Нужна именно регулярность.

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

Читать далее
Total votes 56: ↑55 and ↓1+66
Comments187

Здоровый сон взрослого человека — это засыпать за 15 минут и не вставать ночью попить и пописать

Reading time13 min
Views165K


Послушала на днях 2х-часовое выступление «Здоровый сон» врача-невролога, сомнолога Елены Царевой. Выдернула самые важные для себя пункты:

  1. Спать регулярно, ложиться и вставать в одно и то же время — самое важное. 
  2. Биоритмы — частично наследуются, частично регулируются стилем жизни. На них можно влиять самому.
  3. Нормальное время отхода ко сну около 22:00. Сова и жаворонок — это отклонение на ±1-2 часа. Больше — это нарушение и сдвиг фазы сна, чаще из-за внешних раздражителей.
  4. Самая частая причина плохого сна и тяжелого засыпания — неправильный свет.
  5. Для сдвига режима на 1 час организму нужен 1 день на адаптацию.
  6. Невозможно «доспать» бессонную ночь. Досыпание устраняет только 30% последствий недосыпа.
  7. Прежде, чем искать причины плохого сна, исключите психологические проблемы (тревожность, депрессию), нарушения щитовидки, дефицит железа, диабеты, сердечно-сосудистые заболевания и патологию почек и мочеполовой системы.
  8. Водителям и пассажирам: 17 часов без сна равны 0,5 промилле, 21 час без сна — 0,8 промилле.
  9. В постели без сна больше 15 минут не находиться — совет при бессоннице. 
  10. Самые физиологичные будильники — те, что светятся. 

Под катом конспект 2х-часового выступления про сон на 15 минут чтения. Еще один поинт в копилку полезных материалов про сон — Sleep Hackers.
Читать дальше →
Total votes 139: ↑119 and ↓20+126
Comments247

Хотели как в FAANG, а вышло как всегда или Опыт собеседования в Тинькофф в 3 актах

Reading time9 min
Views137K

Предисловие Около года назад я задался целью получить оффер от FAANG. Как следствие, постоянной частью моей жизни стали тематические форумы, площадки и вся сопутствующая атрибутика. Спустя какое-то время я попробовал себя на собеседованиях в околоFAANGoвые компании: Lyft, Spotify, Booking и т. д, где-то успешно, где-то не очень. В это же время мне порекомендовали попробовать пройти собеседование в Тинькофф банк, который внедрил схожий процесс. После стандартного общения с HR менеджером была получена ссылка на описание процесса собеседования. “Хм, почти что FAANG + тех. интервью по Primary Skill”, - подумал я и сказал, что готов приступать. В тот же час было назначено 2 интервью: техническое и coding, а вот 3 этап, system design, нужно было заслужить успешным прохождением первых двух. Почему именно эти 2 части являлись основополагающими, осталось неясным.

Акт первый, технический

В назначенный час я встретился со своим интервьюером. Собеседование выглядело “добротным” и стандартным в заданной проф. области, оттого местами скучным. Было много задач на ревью кода и обсуждения специфики языка, в частности...

Читать далее
Total votes 150: ↑134 and ↓16+151
Comments226

Тестируем сервисы для подготовки к собеседованию

Reading time7 min
Views20K

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

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

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

К старту флагманского курса по Data Science разбираемся, действительно ли тестовые собеседования подходят для подготовки к реальным.

Читать далее
Total votes 17: ↑13 and ↓4+12
Comments7

Как потратить меньше времени, и все же найти работу

Reading time9 min
Views7.7K

Так уж получилось, что в последнее время я менял работу несколько чаще обычного (чаще раза в 10+ лет), и в какой-то момент осознал, что накопил уже довольно много мелких и не очень мелких практик и рецептов, помогающих экономить время и повысить качество собственных действий на этом поприще. Так почему бы и не поделиться ими?

То, что с высоты опыта выглядит мелочью — на самом деле экономит немало минут, усилий, и даже нервных клеток. Вот о таких мелких моментах и пойдет речь в статье.

Читать далее
Total votes 11: ↑9 and ↓2+8
Comments5

Что должен, но не знает про конкуренцию в PostgreSQL каждый разработчик?

Reading time13 min
Views21K

Опыт показывает, что разработчики редко задумываются о проблемах, которые могут возникать при многопользовательском доступе к данным. При этом практически любое web-приложение является многопользовательским и так или иначе использует блокировки при доступе к данным в БД. При неправильном использовании эти блокировки могут больно бить по пользователям, а иногда и по системе в целом. Поэтому рано или поздно каждый разработчик многопользовательских систем должен задуматься о том, как ему начать работать с БД так, чтобы пользователи не мешали другу другу. Многие считают, что это сложно, давайте вместе убедимся, что это не так.

Читать далее
Total votes 37: ↑36 and ↓1+42
Comments6

Как выучить английский язык быстро и с удовольствием

Reading time8 min
Views28K

Реально ли построить хорошую карьеру в ИТ без английского языка? Не так важно, реально или нет, но важно то, что с уверенным владением английским - у вас намного больше возможностей!

В статье собраны самые полезные ссылки для изучения английского языка с удовольствием!

Изучить английский язык просто, если прекратить воспринимать уроки как обязанности, и не просто поставить цель, но выбрать то, что Вы на самом деле любите и делать именно это.

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

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

Читать далее
Total votes 6: ↑5 and ↓1+5
Comments9

Сбор требований онлайн: как аналитику найти подход к заказчику на удаленке

Reading time11 min
Views8.6K

Под влиянием пандемии IT-компании, как и их заказчики, адаптировали свои процессы разработки к удаленке. Одни предприятия постепенно вернулись в офисы, для других новый формат работы оказался не менее эффективным. Что это меняет в процессах, начиная с самого первого этапа – сбора требований? На удаленке у аналитика могут быть ограничены возможности для интервью и других привычных приемов.

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

В статье мы рассмотрим:

- что изменилось в воркфлоу сбора требований;

- в чем для аналитика плюсы и минусы онлайн-коммуникаций;

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

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments3

Безопасное использование C++

Reading time34 min
Views16K

От переводчика. Данный текст является переводом документа Safer Usage Of C++, выложенного в общий доступ командой Chromium/Chrome из компании Google. Текст активно обсуждался на Reddit, и команда PVS-Studio решила, что аудитории Habr-а может быть интересно познакомиться с его русскоязычным вариантом. Для перевода использован текст от 20 сентября 2021, и на момент его чтения он может отличаться от текста по ссылке.

Читать дальше →
Total votes 20: ↑15 and ↓5+16
Comments12

Как настроить SQLAlchemy, SQLModel и Alembic для асинхронной работы с FastAPI

Reading time9 min
Views55K

В этом руководстве предполагается, что у вас есть опыт работы с FastAPI и Postgres с помощью Docker. Вам нужна помощь, чтобы ускорить работу с FastAPI, Postgres и Docker?

Читать далее
Total votes 5: ↑4 and ↓1+3
Comments8

Information

Rating
4,886-th
Registered
Activity