💪 Конференция Яндекса YaTalks 2023.

🧠 В 2023 году YaTalks пройдёт 5 и 6 декабря в Москве, Белграде и онлайн.

📖 Тема этого года — явления, которые меняют мир и двигают его вперёд.
Пригласили более сотни спикеров, которые будут читать доклады о разработке, управлении и карьере в IT.

⭐️5 декабря — день YaTalks 2023 с хардовыми техническими докладами.

🔹 Андрей Мелихов, ведущий разработчик из Yandex Cloud. Объяснит, с какими проблемами и вызовами пришлось столкнуться, когда выпускали DataLens в опенсорс.

🔹 Никита Илясов, СТО Яндекс Еды и Маркета Деливери. Расскажет, как объединяли Delivery Club и Яндекс Еду.

🔹 Алексей Гусаков, технический директор Яндекс Поиска. Покажет, как инженеры управляют временем — и делают наш мир быстрее.

⭐️6 декабря — день, когда спикеры YaTalks 2023 рассказывают про управление и обучение.

🔹 Галина Юзефович, литературный критик, преподаватель, онлайн-платформа «Страдариум». Расскажет, как новые технологии меняют литературу и какие книги почитать об этой трансформации.

🔹 Евгений Кот, VP of Engineering из Rarible. Объяснит, почему сеньору и менеджеру сложно выбрать вектор для развития и как надо строить карьеру.

💥 Всё это — бесплатно, так что переходите на сайт, изучайте программу и регистрируйтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 GPT-4

💡OpenAi провела мероприятие для разработчиков, на котором анонсировала улучшения в своих моделях. GPT-3.5 и GPT-4 прокачали, выпустили обновлённую версию GPT-4 Turbo, которому наконец рассказали, что произошло в мире и интернете в период с сентября 2021 до апреля 2023.

👍 GPT-4 Turbo быстрее предшественника, а также он способен анализировать больше информации за один запрос. Теперь он может обработать 128 000 токенов, что приблизительно эквивалентно более 300 страницам текста. Сами токены для API станут дешевле в 2-3 раза.

💻 Помимо этого, OpenAi анонсировала своеобразный конструктор чат-ботов на основе GPT-моделей. В скором можно будет гибко кастомизировать нейросеть под свои нужды, а также делиться созданными моделями с другими пользователями.
Обновления обещают раскатать для всех в течение нескольких недель.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👋 Напишем многопоточное приложение, которое моделирует работу нескольких супермаркетов. Каждый супермаркет создает список случайных чеков (сумм продаж) и передает их в налоговую службу для подсчета общей выручки.

🧠 Будем использовать:

🎛Многопоточность - класс ExecutorService и методы awaitTermination() и shutdown() используются для управления потоками выполнения.

🗂Коллекции - список bills в классе Supermarket используется для хранения чеков (сумм продаж).

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
💡Быстрая сортировка (QuickSort)

☝️Этот алгоритм использует стратегию "разделяй и властвуй".
Он выбирает опорный элемент, разбивает массив на две части - элементы, меньшие опорного и элементы, большие опорного. Затем он рекурсивно сортирует каждую из этих частей. В среднем случае сложность алгоритма O(n log n), но в худшем случае может достигать O(n^2).
✏️O(n log n)О(n логарифм n)” означает, что сложность алгоритма
составляет O(n log n), где "n" - размер входных данных.
Это означает, что время выполнения алгоритма будет увеличиваться пропорционально n и логарифму от n.

Код: QuickSort 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🧠 Insertion Sort

ℹ️ Сортировка вставками. Этот алгоритм проходит по массиву, вставляя каждый элемент на свое место в уже отсортированной части массива. Он имеет лучшую сложность, чем сортировки пузырьком и выбором - O(n^2) в худшем случае и O(n) в лучшем случае.


📖 Selection Sort

ℹ️ Сортировка выбором. Этот алгоритм проходит по массиву, находит минимальный элемент и меняет его местами с первым элементом. Затем он находит следующий минимальный элемент и меняет его местами со вторым элементом, и так далее. Сложность алгоритма также O(n^2), что делает его неэффективным для больших массивов.


☝️Выбор между сортировкой вставками, пузырьком и сортировкой выбором, зависит от конкретной ситуации. В целом, сортировка вставками обычно более эффективна на почти отсортированных данных, но сортировка выбором может быть более эффективна на больших массивах данных. Сортировка пузырьком обычно менее эффективна, чем обе эти сортировки.

⭐️Более эффективные алгоритмы сортировки, сортировка (QuickSort) и сортировка слиянием (MergeSort). В большинстве случаев, рекомендуется использовать эти алгоритмы вместо сортировки вставками, пузырьком или сортировки выбором.

💡Для выбора между этими алгоритмами, нужно оценить особенности конкретных данных и использовать более эффективные алгоритмы, такие как QuickSort или MergeSort, если это возможно.

Код: 👩‍💻
Insertion Sort
Selection Sort
Bubble Sort
MergeSort
QuickSort
Please open Telegram to view this post
VIEW IN TELEGRAM
Алгоритм RSA 😎

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

📖 Алгоритм RSA работает следующим образом:

⭐️Генерация ключей: сначала выбираются два больших простых числа p и q. Затем вычисляется их произведение n = p * q, которое называется модулем. Также выбирается число e, которое является взаимно простым с числом (p-1)*(q-1). Эти числа (n, e) составляют открытый ключ. Затем вычисляется число d, которое является обратным к числу e по модулю (p-1)*(q-1). Число d является секретным ключом.

⭐️Шифрование: для шифрования сообщения m сначала оно преобразуется в число, меньшее n. Затем вычисляется зашифрованное сообщение c = m^e mod n.

⭐️Расшифрование: для расшифрования зашифрованного сообщения c сначала вычисляется исходное сообщение m = c^d mod n.

⚙️Алгоритм обладает высокой стойкостью к взлому благодаря трудности факторизации больших чисел на простые множители. Однако он также требует больших вычислительных ресурсов и может быть уязвим к атакам, связанным с криптоанализом или использованием слабых ключей. Поэтому важно правильно выбирать параметры алгоритма при генерации ключей.

Код: Генерация ключей 👩‍💻
Код:
Шифрование и расшифровка 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👋Класс HashSet

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

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

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
😐Программа для учета расходов.

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

⚡️Предлагается ввести данные о своих доходах и зарплате, а затем управлять своими расходами.

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
💡Интерфейс Deque

🧑‍💻 Интерфейс Deque, используется для создания коллекции, которая представляет собой двустороннюю очередь элементов. Он расширяет интерфейсы Queue и Collection и определяет методы для работы с очередью, такие как добавление элемента в начало или конец очереди, удаление элемента из начала или конца очереди, проверка наличия элемента и т.д.

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

☝️Использование интерфейса Deque может быть полезным при работе с потоками данных, когда необходимо управлять порядком обработки элементов с обеих сторон или обрабатывать элементы в порядке приоритета.

⚡️Методы:

📖Добавление элементов:
🔸 void addFirst(E e): Добавляет элемент в начало очереди.
🔸 void addLast(E e): Добавляет элемент в конец очереди.

Удаление элементов:
🔸 boolean offerFirst(E e): Добавляет элемент в начало очереди и возвращает true, если удалось, иначе false.
🔸 boolean offerLast(E e): Добавляет элемент в конец очереди и возвращает true, если удалось, иначе false.
🔸 E removeFirst(): Удаляет и возвращает первый элемент, выбрасывая исключение, если очередь пуста.
🔸 E removeLast(): Удаляет и возвращает последний элемент, выбрасывая исключение, если очередь пуста.
🔸 E pollFirst(): Удаляет и возвращает первый элемент, возвращая null, если очередь пуста.
🔸 E pollLast(): Удаляет и возвращает последний элемент, возвращая null, если очередь пуста.
🔸 E getFirst(): Возвращает первый элемент без удаления, выбрасывая исключение, если очередь пуста.
🔸 E getLast(): Возвращает последний элемент без удаления, выбрасывая исключение, если очередь пуста.
🔸 E peekFirst(): Возвращает первый элемент без удаления, возвращая null, если очередь пуста.
🔸 E peekLast(): Возвращает последний элемент без удаления, возвращая null, если очередь пуста.

❗️Другие методы:
🔸 boolean contains(Object o): Проверяет, содержит ли очередь указанный элемент.
🔸 int size(): Возвращает количество элементов в очереди.
🔸 boolean isEmpty(): Проверяет, пуста ли очередь.

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🧑‍💻 Напишем функцию, которая проверяет каждый ход в игре крестики-нолики.

🗄Функция принимает текущее состояние поля в виде двумерного массива.
🔸Если игрок 'X' выиграл - везвращаем 'Х won', если выиграл игрок 'О', то 'O won'.
🔸Если никто не выиграл - 'Next.
🔸Если поле полностью заполнено, но никто не выиграл - 'Game over'.


✍️Функция solution, которая проверяет текущее состояние игры в крестики-нолики и возвращает соответствующий результат в зависимости от выигрыша, продолжения игры или окончания.

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🧠Алгоритм Бойера-Мура.

💻Алгоритм применяется для поиска подстроки в строке.

❗️Его эффективность особенно проявляется в случаях, когда искомая подстрока длиннее или сопоставима по длине с самой строкой, в которой производится поиск.

📖 Алгоритм часто используется в текстовых редакторах, поисковых системах, базах данных, компиляторах и в программном обеспечении для обработки текстов и анализа данных.

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🧑‍💻 Отправка HTTP-запросов (GET, POST, DELETE) с использованием стандартных классов Java для работы с сетью.🌐

💡Для выполнения HTTP-запросов используем классы HttpURLConnection, URL, BufferedReader, OutputStream и InputStreamReader из пакета java.net.

🗄 Сначала устанавливаем соединение с сервером, указываем тип запроса (GET, POST, DELETE) и настраивает необходимые параметры запроса.

⚡️После этого для запроса GET создается объект URL, через который происходит установка соединения.
Полученный ответ считывается построчно с
использованием BufferedReader и добавляется в буфер для дальнейшего использования.

⚡️Для запроса POST устанавливается флаг setDoOutput(true), чтобы разрешить вывод данных в соединение. После этого отправляются данные в формате JSON через OutputStream.
После отправки данных читается ответ сервера и выводится на экран.

⚡️Для запроса DELETE устанавливается метод запроса, который затем выполняется, и получается код ответа сервера.

🧠 Здесь мы отправляем HTTP-запросы без использования сторонних библиотек, прямо с помощью встроенных средств Java для работы с HTTP.

Код: GitLab (в README есть описание) 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
☃️Всех с наступающим Новым Годом!

✈️Пусть каждый из вас, открывая новую страницу в календаре, находит невероятные возможности для реализации своих мечт и целей.

🧑‍💻Пусть каждый день приносит радость, а каждый труд - удовлетворение от результатов.

🏡Желаю не только радости и отдыха, но и набраться сил для покорения новых вершин в грядущем году!🌲
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩4😍2🤝21🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Всем привет! 👋

🎚️ Сегодня, 1 марта стартовал пятый сезон
«Тренировки по алгоритмам 5.0» от Яндекс 💸

💜 Как устроены Тренировки 😎 и что получат участники:

📣 Обновлённые лекции по алгоритмам.

👥 Собеседования в прямом эфире.

🎁 Сертификат о прохождении Тренировок.

👥 Персональные тренировки для топ-200.

👥 Пробное алгоритмическое собеседование для топ-200.


Записывайтесь по 🧠ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩2
Media is too big
VIEW IN TELEGRAM
🧠 NotchNook

Небольшое приложение для macOS 💻
Созданное специально для пользователей MacBook
с вырезом (notch) на экране.

👏 Основная цель приложения — оптимизация использования пространства вокруг выреза и обеспечение более эффективной работы.

Уже активированный файл ниже, пользуйтесь!

💬Discord
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥1👏1🙏1
NotchNook_1_2_4.dmg
42.6 MB
⌨️Программа сервера и клиента.

🔣Общий процесс

1. Клиент запускает соединение и начинает отправлять строки.
2. Сервер обрабатывает каждую строку и возвращает соответствующий ответ в зависимости от содержимого строки.
3. Клиент получает ответ от сервера.

Таким образом, сервер отвечает "200 OK" ✉️ для строк, содержащих латинские буквы, кириллицу и цифры, и "404 Not Found" 😟 для всех остальных строк.
Если север недоступен "503 Service Unavailable" 🤷‍♂️.

Код: GitLab 👩‍💻.
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥1🤝1
✈️Задача на тему многопоточности.

➡️ Необходимо реализовать потокобезопасный счетчик, который будет увеличивать своё значение до определенного лимита.
⬇️ Когда лимит достигнут, все потоки, пытающиеся увеличить значение счетчика, должны блокироваться до тех пор, пока один из потоков не сбросит значение счетчика в ноль.

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

📷 Например, сервер может ограничивать количество одновременных запросов, которые он обрабатывает, чтобы предотвратить перегрузку. Когда достигается лимит одновременных запросов, сервер может ожидать завершения текущих запросов перед тем, как начать обработку новых.

❣️ ТЗ

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥2👍1