YeaHub Tech
412 subscribers
343 photos
15 videos
2 files
449 links
Новые технологии, советы и обучающие материалы

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#book #book
📚 Test-Driven Development with Java
Автор: Alan Mellor


Разработка на основе тестирования позволяет разработчикам создавать хорошо продуманный код и предотвращать дефекты. Это простой, но мощный инструмент, который помогает сосредоточиться на проектировании кода, одновременно автоматически проверяя правильность его работы. Освоение TDD позволит вам эффективно использовать паттерны проектирования и стать опытным архитектором программного обеспечения.

Перейти к материалу

👉 База вопросов 👉 Новости
#Собес #v8 #optimization #browser
🤔 Как работают hidden classes и shape-based оптимизации в V8?

💬 Кратко:

Hidden classes (скрытые классы) в V8 — это внутренние структуры, которые движок создает для представления форм объектов и их свойств. Когда вы создаете объекты с одинаковыми свойствами, V8 присваивает им один и тот же скрытый класс, что ускоряет доступ к их свойствам. Shape-based оптимизации позволяют движку быстро определять, где находятся свойства в памяти, что значительно уменьшает время доступа к ним.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🧑‍💻 Вопросы с собеседований для DevOps

1. Перечислите компоненты Docker.
Docker состоит из трех основных компонентов: Docker Client, Docker Host и Docker Registry. Docker Client взаимодействует с Docker Host, отправляя команды для управления контейнерами, Docker Host управляет контейнерами и их образами, а Docker Registry хранит образы Docker.

2. Как удалить все остановленные контейнеры и неиспользуемые сети в Docker?
Для удаления всех остановленных контейнеров и неиспользуемых сетей используется команда docker system prune. Она также удаляет неиспользуемые образы и кэш.

3. Какова цель томов в Docker?
Тома в Docker предназначены для хранения и обмена данными между контейнерами и хост-системой. Они позволяют сохранять данные независимо от жизненного цикла контейнера, обеспечивая сохранность данных при остановке или удалении контейнера. Тома можно использовать для базы данных, конфигураций приложений и логов.

4. Поддерживает ли Docker IPV6?
Да, Docker поддерживает IPv6, но только на Linux-серверах. Чтобы включить поддержку IPv6, необходимо настроить Docker daemon, изменив параметр ipv6 в конфигурационном файле /etc/docker/daemon.json.

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

#docker_client #docker_host #docker_registry #docker_system_prune #clean #unused_resources #docker_volumes #persistent_data #storage #ipv6 #docker #daemon #container #virtual_machine #isolation
#book #test
📚 "Python. Разработка на основе тестирования" (автор - Гарри Персиваль, год издания - 2018)

Проводя вас по процессу разработки реального веб-приложения от начала до конца, второе издание книги демонстрирует преимущества методологии разработки на основе тестирования (TDD) с использованием языка Python. Вы научитесь писать и выполнять тесты до написания любого фрагмента вашего приложения и затем разрабатывать минимальный объем программного кода, необходимого для прохождения этих тестов. В результате вы получите чистый программный код, который работает!

Перейти к материалу

👉 База вопросов 👉 Новости
#repository #corrodeshelltutorial #buildyourcliinrust #оболочка
📚 corrode/write-yourself-a-shell

Курс по созданию оболочки командной строки на Rust. Помогает освоить промежуточные концепции языка, такие как работа с потоками, обработка ввода-вывода и идиоматичный стиль программирования. Длительность курса — около 6 часов

Перейти к материалу

👉 База вопросов 👉 Новости
#Собес #cache #invalidation
🤔 Какие стратегии инвалидации кэша использовали?

💬 Кратко:

Основные стратегии инвалидации кэша — это инвалидация по TTL (автоматическое удаление по истечении времени) и явная инвалидация. Явная инвалидация происходит при изменении данных в основном источнике (например, в базе данных), чтобы кэш всегда содержал актуальную информацию. Часто используется комбинация TTL для защиты от "протухания" данных и явной инвалидации для мгновенного обновления.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🔥1
Forwarded from YeaHub
🚀 В январе перед нами стояли три ключевые задачи.

1. Миграция на Next.js
Мы перевели публичную часть проекта на Next.js, а дашборд оставили на React.js. Основные работы почти завершены — сейчас занимаемся тестированием и финальными правками.
В процессе столкнулись с рядом инфраструктурных вызовов: текущих ресурсов сервера оказалось недостаточно под новые проекты, поэтому пришлось масштабироваться. Впереди также большая работа по настройке SEO.

2. Сервис для лайвкодинга
Мы разрабатываем сервис лайвкодинга — аналог LeetCode с задачами российских компаний с реальных собеседований. У проекта большие планы:

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

Базовая версия сервиса уже готова и проходит тестирование. Совсем скоро — релиз.

3. Сервис уведомлений
Мы начали разработку сервиса уведомлений, который объединит всю нашу экосистему: платформу, Telegram-каналы и бота.

В Telegram будут публиковаться:

— новые собеседования,
— вопросы и задачи,
— статьи и подборки,
— анонсы,
— вакансии,
— статистика с HH.

Наша цель — сделать каналы максимально полезными, чтобы вы всегда были в курсе обновлений и нового контента.

Дополнительно
В работе также находится сервис тестов с вариантами ответов и системой разделения вопросов по темам — для будущего роадмапа. Пока эти направления развиваются в «лайт»-режиме.

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

P.S. Новогодние скидки продолжают действовать до запуска сервиса лайвкодинга. После релиза цены увеличатся в 2 раза — сейчас самое выгодное время подключиться и поддержать нас.

👉 Членство YeaHub

Впереди много интересного. Спасибо, что вы с нами.✊🏻🚀💪
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 5 вопросов с собесов Frontend разработчиков

1. Как использовать Fetch API и Streams для обработки больших объемов данных?
Fetch API позволяет загружать данные с сервера, а Streams — обрабатывать их по частям, что особенно полезно для работы с большими объемами данных. Вместо загрузки всего файла сразу, можно использовать метод response.body.getReader(), чтобы считывать данные частями, что позволяет уменьшить использование памяти и ускорить обработку. Это позволяет начать обработку данных, не дожидаясь полной загрузки, что особенно полезно для больших файлов, таких как видео или изображения.

2. Как использовать Service Workers для реализации офлайн-приложений и кэширования ресурсов?
Service Workers — это скрипты, работающие в фоновом режиме и позволяющие веб-приложениям работать в офлайн-режиме, а также кэшировать ресурсы для ускорения загрузки. Для их использования необходимо зарегистрировать Service Worker в основном скрипте приложения, а затем использовать API кэширования для сохранения ресурсов. Это позволяет пользователям продолжать использовать приложение, даже когда интернет-соединение отсутствует.

3. Как реализовать собственную очередь задач и управлять приоритетами выполнения?
Собственная очередь задач позволяет управлять порядком выполнения асинхронных операций. Чтобы реализовать такую очередь, можно использовать массив для хранения задач и сортировать их по приоритету. При добавлении задачи в очередь указываем ее приоритет, а затем запускаем выполнение задач в порядке их приоритета, используя Promise.resolve() для асинхронного выполнения. Это позволяет эффективно управлять задачами и обеспечивать их выполнение в нужном порядке.

4. Объясните влияние блокирующих операций на Event Loop и как их избежать.
Блокирующие операции в JavaScript — это те, которые останавливают выполнение кода и не позволяют Event Loop обрабатывать другие задачи. Это может привести к зависанию интерфейса пользователя и снижению отзывчивости приложения.

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

5. Как использовать Subresource Integrity (SRI) для защиты загружаемых ресурсов?
Subresource Integrity (SRI) — это механизм безопасности, который позволяет браузерам проверять, что загружаемые внешние ресурсы (например, скрипты и стили) не были изменены. Для использования SRI необходимо добавить атрибут integrity к тегам <script> или <link>, указав хеш-сумму загружаемого файла. Если файл изменен, браузер не загрузит его, что предотвращает выполнение потенциально вредоносного кода.

#streams #fetch #browser #workers #кэш #promise #очередь #event_loop #sri #security #basic
#article #optimization
📚 Математика на складе. Как оптимизировать хаос

В этой статье команда Ozon Tech показывает, как прикладная математика помогает оптимизировать реальные складские процессы: от размещения товаров и маршрутов сотрудников до моделирования и экспериментов. Авторы описывают использование оптимизационных моделей для слоттинга, конфигурации шкафов, дискретно-событийного моделирования для оценки ресурсов, статистической проверки гипотез и методов теории графов для уменьшения пробегов и повышения эффективности операций, а также отмечают, что классическое машинное обучение применяется выборочно там, где это действительно улучшает предсказания времени выполнения заданий и анализ факторов производительности

Перейти к материалу

👉 База вопросов 👉 Новости
#article #jvm #оптимизация
📚 Насколько сложно сделать свою JVM

Статья рассказывает об опыте автора по разработке собственной виртуальной машины Java (JVM) на языке Rust, объясняя базовые структуры class-файлов, процесс выполнения байт-кода, а также эксперименты с оптимизациями вроде хвостовой рекурсии и мемоизации, показывая сложности и особенности создания собственной JVM и сравнивая её с полноценной реализацией HotSpot.

Перейти к материалу

👉 База вопросов 👉 Новости
#Собес #container #virtual_machine #isolation
🤔 Что такое отличие между контейнером и виртуальной машиной?

💬 Кратко:

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

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍1
🧑‍💻 Вопросы с собесов для Node.js Разработчика

1. Какие стратегии кэширования данных можно использовать для улучшения производительности?
Кэширование данных позволяет значительно улучшить производительность веб-приложений. Основные стратегии кэширования включают кэширование на стороне клиента, где данные хранятся в браузере пользователя (например, с использованием localStorage или IndexedDB), и кэширование на стороне сервера, где данные сохраняются на сервере для повторного использования.

Также стоит учитывать кэширование на уровне сети, например, использование CDN (Content Delivery Network), который позволяет хранить и быстро передавать статические ресурсы. Правильное использование стратегий кэширования помогает сократить время загрузки и улучшить пользовательский опыт.

2. Какие распространенные уязвимости существуют в JavaScript-приложениях и как их предотвращать?
Распространенные уязвимости в JavaScript-приложениях включают XSS (межсайтовый скриптинг), CSRF (межсайтовая подделка запросов) и инъекции SQL. Для предотвращения XSS важно очищать и экранировать пользовательский ввод, а для защиты от CSRF — использовать токены и заголовки. Кроме того, следует применять параметры для запросов к базе данных, чтобы избежать SQL-инъекций. Понимание и применение этих мер безопасности помогает защитить приложения от атак.

3. Как реализовать Content Security Policy (CSP) для защиты веб-приложений на JavaScript?
Content Security Policy (CSP) — это механизм безопасности, который позволяет разработчикам контролировать, какие ресурсы могут быть загружены и выполнены на веб-странице. CSP реализуется с помощью HTTP-заголовка Content-Security-Policy, где можно указать разрешенные источники скриптов, стилей и других ресурсов. Это помогает предотвратить загрузку вредоносного контента и снижает риск атак типа XSS.

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

4. Объясните защиту от Cross-Site Scripting (XSS) и Cross-Site Request Forgery (CSRF) в контексте JavaScript.
Cross-Site Scripting (XSS) — это атака, при которой злоумышленник вставляет вредоносный скрипт на веб-страницу, что позволяет ему получить доступ к данным пользователя.

Защита от XSS включает экранирование пользовательского ввода и применение Content Security Policy (CSP).

Cross-Site Request Forgery (CSRF) — это атака, при которой злоумышленник заставляет пользователя выполнить нежелательное действие на сайте, где он аутентифицирован.

Защита от CSRF включает использование уникальных токенов для подтверждения запросов и проверки заголовков.

5. Как безопасно обрабатывать пользовательский ввод и работать с внешними API?
Безопасная обработка пользовательского ввода включает в себя валидацию, экранирование и очищение данных перед их использованием в приложении. Важно проверять входные данные на стороне клиента и сервера, чтобы предотвратить возможные атаки, такие как XSS и SQL-инъекции.

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

#indexeddb #localstorage #cdn #xss #csrf #инъекции_sql #csp #security #basic #api
#course #по
📚 Бесплатный курс «Постановка задачи на разработку ПО»

Системные и бизнес-аналитики с помощью курса научатся выявлять требования и управлять ими.

Может показаться, что в начале много воды, но со 2-го раздела видео максимально полезные.

Перейти к материалу

👉 База вопросов 👉 Новости
#repository #собес
📚 Interactive Coding Challenges от Donne Martin

Более 120 интерактивных задач по кодированию Python (алгоритмы и структуры данных) — поставляется с картами программы для запоминания Anki.

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #reference #counting
🤔 Можно ли отключить механизм подсчета ссылок в Python?

💬 Кратко:

Нет, механизм подсчета ссылок нельзя отключить в стандартном интерпретаторе Python (CPython). Это фундаментальная часть системы управления памятью, встроенная в ядро интерпретатора. Подсчет ссылок работает автоматически для всех объектов Python и обеспечивает немедленное освобождение памяти. Даже если отключить дополнительный сборщик мусора (поколений), подсчет ссылок продолжит работать. Альтернативные реализации Python, такие как Jython или IronPython, могут использовать другие механизмы управления памятью.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
🧑‍💻 5 вопросов с собесов Frontend разработчиков

1. Как обеспечить изоляцию зависимостей?
Изоляция достигается через отдельные бандлы, scoped CSS, namespace для глобальных объектов и использование Shadow DOM при необходимости.

2. Как управлять версионностью зависимостей (например, React) между микрофронтами?
Обычно используют единый реестр версий или загрузку общих зависимостей через CDN/module federation. Важно избегать дублирования больших библиотек в каждом микрофронте.

3. Какие проблемы возникают в микрофронтенд-архитектуре?
Основные проблемы — сложность синхронизации зависимостей, управление версиями, изоляция стилей, обмен состоянием и интеграция разных технологий.

4. Ключевые особенности React 18 vs React 17 (автобатчинг, Fiber).
React 18 добавил автоматический батчинг, новый рендеринг через Concurrent Mode и улучшения Fiber. Это делает обновления более плавными и эффективными.

5. Что происходит при перерендере компонента?
При изменении состояния или пропсов React сравнивает новый виртуальный DOM с предыдущим и вносит минимальные изменения в реальный DOM.

#microfrontend #isolation #versioning #dependency #architecture #react_18 #batching #concurrent #react #render #reconciliation
#trainer #codewars
📚 CodeWars

LeetCode можно не обсуждать — про него всё понятно. А вот младшего брата CodeWars — можно. Это сайт с задачами, ĸоторые делают другие пользователи.

Почему он младший брат? Потому что задачи в нём больше на логиĸу и отработĸу базовых логичесĸих ĸонструĸций. Алгоритмичесĸие задачи тоже можно встретить, но более лёгĸий порог входа — отличительная сторона сайта. За прохождение задач (они называют их Kata) вы получаете Honor-очĸи, тем самым повышаете репутацию своего профиля.

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#article #optimization
📚 Математика на складе. Как оптимизировать хаос

В этой статье команда Ozon Tech показывает, как прикладная математика помогает оптимизировать реальные складские процессы: от размещения товаров и маршрутов сотрудников до моделирования и экспериментов. Авторы описывают использование оптимизационных моделей для слоттинга, конфигурации шкафов, дискретно-событийного моделирования для оценки ресурсов, статистической проверки гипотез и методов теории графов для уменьшения пробегов и повышения эффективности операций, а также отмечают, что классическое машинное обучение применяется выборочно там, где это действительно улучшает предсказания времени выполнения заданий и анализ факторов производительности

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #transaction #isolation #serializable
🤔 В чём суть уровня изоляции SERIALIZABLE?

💬 Кратко:

SERIALIZABLE — самый строгий уровень изоляции транзакций. Он гарантирует, что результат параллельного выполнения транзакций эквивалентен их последовательному выполнению. Это устраняет все виды аномалий чтения. Цена за это — снижение производительности и возможные ошибки сериализации. Используется редко и осознанно.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
Forwarded from YeaHub
👨🏻‍💻 Сервис лайвкодинга в YeaHub

Фактически — релиз уже состоялся.
Но честно: мы не успели загрузить ту огромную базу задач, которую планировали, и ещё не всё успели полноценно протестировать.

Поэтому до 23 февраля работаем в режиме «вместе доделываем продукт»:
— мы активно добавляем задачи и чиним баги, все
— пока тестируем, все задачи открыты, после этого примерно 50% закроем для членов
— вы решаете, находите проблемы, пишете в поддержку и даёте фидбек
— ну и оформляете подписку 😜

Что уже есть:
• база реальных задач с собеседований
• JavaScript / Python / Java / Go
• удобный редактор и проверка решений

Что скоро:
• связь задач с компаниями и коллекциями собеседований (не успели в этот релиз)
• другие языки
• контесты
• обучающие модули и курс по алгоритмам
• AI-разбор решений построчно
• челленджи и соревнования

👉 Задачи: https://yeahub.ru/dashboard/tasks

👉 Членство: https://yeahub.ru/dashboard/settings#select-tariff

Новогодние цены действуют только до полноценного запуска. После — x2.
Сейчас лучший момент подключиться и поддержать проект.


Спасибо, что помогаете нам запустить это правильно✊🏻🚀💪
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2