Академия Кода – Telegram
Академия Кода
2K subscribers
673 photos
2 videos
2 files
50 links
Академия кода. Полезный контент по программированию. По всем вопросам @evgenycarter
Download Telegram
Python RegEx: практическое применение регулярок

Рассмотрим регулярные выражения в Python, начиная синтаксисом и заканчивая примерами использования.

https://tproger.ru/translations/regular-expression-python/

Подписывайтесь на канал 👉@cod_academy
👍1
JavaScript: разрабатываем приложение для записи экрана


Хочу поделиться с вами решением интересной задачи: записать экран компьютера пользователя.

Общие требования к реализации:
запись должна состоять из видео и аудио
у пользователя должна быть возможность просмотра и скачивания записи
данные должны передаваться и сохраняться на сервере
запись, сохраняемая на сервере, должна быть приличного качества, но весить мало

https://habr.com/ru/companies/timeweb/articles/591417/

Подписывайтесь на канал 👉@cod_academy
👍2
Объединение множеств

Предположим, у нас есть два множества, А и В. Объединение двух множеств – это множество со всеми элементами из двух этих множеств. Такая операция выполняется при помощи функции Python под названием union().

#python

Подписывайтесь на канал 👉@cod_academy
👍1
Исключения живут во многих языках программирования, и С++ здесь — не исключение (простите за каламбур). Благодаря им программа не падает, даже если сталкивается с ошибкой. На вебинаре будем учиться с ними работать.

→ Бесплатно, 25 апреля в 19:00 Мск

Встречу будет вести Георгий Осипов — программист из Лаборатории компьютерной графики ВМК МГУ.

Что мы разберём:
— в чём именно исключения помогают разработчикам;
— как устроены стандартные исключения в С++, чем они различаются;
— как с ними работать на практике;
— почему исключения — это не всегда медленно, вопреки стереотипу;
— чем исключения C++ отличаются от них же в Java и Python.

Вебинар предполагает практику: Георгий будет писать код в прямом эфире и объяснять всё на примерах. А после ответит на ваши вопросы.

→ Зарегистрироваться на вебинар
🔥1
Кортежи - tuple()

По своей сути кортежи это тот же список, но который имеет ряд преимуществ (если его правильно применять).

Кортежи занимают меньше места, в отличии от списка, но тюплы не изменяются. Их неизменность применяется для большей безопасности. Кроме того, кортежи быстрее работают.

На самом деле каждый из нас использовал tuple, просто не знал, что он им является. При создании списков используются квадратные скобки или функция list(), а для кортежей обычные скобки или tuple().

Как и списки кортежи можно сравнивать между собой. Правила при этом те же.

Используйте tuple, если вам нужен неизменяемый список или нужно получить и сразу же работать со значениями.
#python

Подписывайтесь на канал 👉@cod_academy
👍1
Алгоритм copy_n

Используется для копирования элементов из одного контейнера в другой.

#cpp

Подписывайтесь на канал 👉@cod_academy
👍1
Как записать список в csv файл на Python?

Для записи в csv-файл определенного массива, Вы можете воспользоваться библиотекой csv.

В примере мы показываем, как будем записывать весь список в один столбец и в одну строку.

Посмотреть пример в онлайн редакторе.

#python

Подписывайтесь на канал 👉@cod_academy
Строго-типизированный enum

У «традиционных» перечислений в С++ есть некоторые недостатки: они экспортируют свои значения в окружающую область видимости (что может привести к конфликту имен), они неявно преобразовываются в целый тип и не могут иметь определенный пользователем тип.

Эти проблемы устранены в С++11 с введением новой категории перечислений, названных strongly-typed enums. Они определяются ключевым словом enum class. Они больше не экспортируют свои перечисляемые значения в окружающую область видимости, больше не преобразуются неявно в целый тип и могут иметь определенный пользователем тип (эта опция так же добавлена и для «традиционных» перечислений).

#cpp

Подписывайтесь на канал 👉@cod_academy
👍2
Какой самый надежный способ проверить, равны ли два значения типа double?

Наиболее надежный и точный способ проверить это — использовать Dоuble.соmpare() и сравнить значение с нулем.

#java

Подписывайтесь на канал 👉@cod_academy
Выполнить строку - eval()

Говорят, каждый программист должен написать калькулятор. Но если вы python разработчик, то вы можете сделать это в одну строчку:
print(eval(input()))

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

Единственное, что не умеет eval - присваивать что-то переменным. Зато она может их использовать!

Правильное применение функции сильно упростит вам жизнь.

#python

Подписывайтесь на канал 👉@cod_academy
Алгоритм iota

Присваивает каждому элементу в диапазоне [first,last) последовательные значения val, как если бы они увеличивались ++val после записи каждого элемента.

#cpp

Подписывайтесь на канал 👉@cod_academy
Преобразование строки в дату

Класс SimpleDateFormat имеет некоторые дополнительные методы, в частности parse(), который в Java поможет нам перевести строку в дату соответствии с форматом, хранящимся в данном объекте SimpleDateFormat. Пример на картинке.

#java

Подписывайтесь на канал 👉@cod_academy
Выполнить строку - eval()

Говорят, каждый программист должен написать калькулятор. Но если вы python разработчик, то вы можете сделать это в одну строчку:
print(eval(input()))

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

Единственное, что не умеет eval - присваивать что-то переменным. Зато она может их использовать!

Правильное применение функции сильно упростит вам жизнь.

#python

Подписывайтесь на канал 👉@cod_academy
Распаковка

Неудобно каждый раз для вывода объединять строки через join() или тем более как-то объединять числа. Мы можем распаковать кортеж или список, воспользовавшись звездочкой *. Со словарями данный способ не работает.

На самом деле применение более широкое. Звездочка может также собирать несколько значений в одну переменную. Очень удобно применять для функций с бесконечным количеством аргументов или только с именованными аргументами.

#python

Подписывайтесь на канал 👉@cod_academy
Представления (Views)

Представления — это просто-напросто диапазоны, которые дешево копировать и перемещать (за константное время). Из-за этого представление не может владеть элементами, которые просматривает. Одно исключение — std::views::single, которому принадлежит единственный просматриваемый элемент.

Представления компонуются во время компиляции с прицелом на то, что компилятор заинлайнит код.

Например, следующий код последние последние три элемента диапазона. Сначала мы reverse’им диапазон, затем берем первые три элемента и, наконец, снова reverse’им диапазон (обратите внимание, что существует std::views::drop, который делает это напрямую).

#cpp

Подписывайтесь на канал 👉@cod_academy
👍1
Data reading

Что плохого в этих невинных строках? Да в общем-то ничего, кроме того факта, что мы не знаем размер файла который считываем. Вместо файла может быть что угодно — открытый сокет, который принимает данные, данные из post запроса, все… В общем случае старайтесь не считывать всё в массив байтов, у вас попросту может не хватить памяти. Поэтому будьте осторожны с размером любых данных. Старайтесь обрабатывать и пересылать данные по частям. И всегда следите за размером пользовательских данных и по возможности ограничивайте их.

#java

Подписывайтесь на канал 👉@cod_academy
Как отправить xml запрос в Python?

Чтобы отправить post-запрос с xml-содержимым, Вы можете воспользоваться библиотекой requests

#python

Подписывайтесь на канал 👉@cod_academy
Бинарный поиск

Чаще всего бинарный поиск (бинпоиск) используют, чтобы найти элемент в отсортированном массиве. Мы начинаем искать с середины массива. Если находим то, что нужно, или если больше нечего рассматривать, мы останавливаемся. В противном случае мы решаем, в каком направлении — вправо или влево от середины — мы должны продолжить поиск. Так как пространство поиска после каждой проверки делится на два, то время выполнения алгоритма — O(log n).

#cpp

Подписывайтесь на канал 👉@cod_academy
Log field

Используете логированние в классе? Всегда определяйте переменную лога как static final. Во-первых: у вас никогда не возникнет проблем при попытках сериализации и десериализации обьекта. Во-вторых: инициализация происходит только 1 раз, вместо постоянной инициализации при создании обьектов класса.

#java

Подписывайтесь на канал 👉@cod_academy
В одну строчку

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

Такие методы лучше использовать когда надо сгенерировать что-то маленькое или нужное. Если использовать нужно сейчас и строго по одному, то лучше использовать итераторы. Об итераторах подробнее расскажем чуть позже.

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

#python

Подписывайтесь на канал 👉@cod_academy