Картинка для испытаний:
Играемся с изображениями в Python
Картинка для испытаний:
Пользователь
(с)
Вам знакомо чувство, когда проекты начинают поглощать все ваше время? Слишком много функций для реализации, слишком много найденных ошибок, чрезмерные затраты на исправления. В некоторые дни вы просто недостаточно быстро работаете, слабо продумываете код, тратите часы, чтобы исправить одну единственную ошибку. И чтобы усугубить ситуацию, вы тратите оставшееся время на бессмысленные встречи, а не на работу.
Конечно, в такие дни вы начинаете трудиться сверхурочно, чтобы удержать в руках расползающуюся ткань реальности. Довольно скоро такой график становится нормой, и все привыкают, что вам можно писать письма (и требовать ответы) в любое время. Наступает момент выгорания. И тогда вы начинаете задумываться о практиках тайм-менеджмента.
Сотни людей вокруг, кажется, только и делают, что учат других. Давайте будем честны друг с другом: все курсы управления временем пишут психологи, менеджеры, кто угодно, только не разработчики. Но ведь многие основополагающие вещи контроля времени и управления проектами придумали именно программисты (Фредерик Брукс: «Если проект не укладывается в сроки, то добавление рабочей силы задержит его еще больше»).
Эта шпаргалка поможет вам подготовиться к техническому собеседованию, чтобы вы могли освежить в памяти ключевые вещи. По сути, это содержание курса по информатике безо всяких подробностей.
TextObject
, используемый для рендеринга текста на экране. Мы создадим основное окно, в том числе и фоновое изображение, а затем научимся отрисовывать объекты: кирпичи, мяч и ракетку.TextObject
предназначен для отображения текста на экране. Можно сделать вывод, что с точки зрения дизайна он должен быть подклассом класса GameObject
, потому что тоже является визуальным объектом и его тоже иногда нужно двигать. Но я не хотел вводить глубокую иерархию классов, при которой весь отображаемый Breakout текст оставался на экране неизменным.TextObject
создаёт объект шрифта. Он рендерит текст на отдельную текстовую поверхность, которая затем копируется (рендерится) на основную поверхность. Интересный аспект TextObject
заключается в том, что у него нет какого-то фиксированного текста. Он получает функцию text_func()
, вызываемую каждый раз, когда он рендерится.Недавно мы перезапустили API Яндекс.Кассы – платежного сервиса с 15-летней историей. Я хочу рассказать, как решить такую амбициозную задачу. Материала набралось на серию статей, поэтому здесь я подробно расскажу о проектировании, переработке наших API, а также про наши инструменты и процессы.
Ключевые слова для оценки полезности: API, REST, OpenAPI, Swagger, рефакторинг взаимодействия систем.
constexpr
. С помощью него можно создавать переменные, функции и даже объекты, которые будут рассчитаны на этапе компиляции. Это удобно, ведь раньше для таких целей приходилось использовать шаблоны. Но тут все не так просто. У тех, кто не так хорошо знаком с constexpr
, может сложиться впечатление, что теперь не будет никаких проблем с расчетами на этапе компиляции. Но на constexpr
-выражения наложены серьезные ограничения.constexpr
, о том, какие будут изменения в стандарте C++14, а во второй части будет пример использования constexpr
: библиотека, которая считает результат математического выражения в строке.constexpr auto x = "(4^2-9)/8+2/3"_solve;
std::cout << "Answer is " << x;
Answer is 37/24
Недавно мы писали о забавных, хитрых и странных примерах на JavaScript. Теперь пришла очередь Python. У Python, высокоуровневого и интерпретируемого языка, много удобных свойств. Но иногда результат работы некоторых кусков кода на первый взгляд выглядит неочевидным.
Ниже — забавный проект, в котором собраны примеры неожиданного поведения в Python с обсуждением того, что происходит под капотом. Часть примеров не относятся к категории настоящих WTF?!, но зато они демонстрируют интересные особенности языка, которых вы можете захотеть избегать. Я думаю, это хороший способ изучить внутреннюю работу Python, и надеюсь, вам будет интересно.
Если вы уже опытный программист на Python, то многие примеры могут быть вам знакомы и даже вызовут ностальгию по тем случаям, когда вы ломали над ними голову :)
Язык C++ сильно изменился за последние 10 лет. Изменились даже базовые типы: struct, union и enum. Сегодня мы кратко пройдёмся по всем изменениям от C++11 до C++17, заглянем в C++20 и в конце составим список правил хорошего стиля.
Мы все ценим C++ за лёгкую интеграцию с кодом на C. И всё же, это два разных языка.
Наследие C — одна из самых тяжких нош для современного C++. От такой ноши нельзя избавиться, но можно научиться с ней жить. Однако, многие программисты предпочитают не жить, а страдать. Об этом мы и поговорим.