IT Stack | Technologies – Telegram
IT Stack | Technologies
33 subscribers
74 photos
37 links
От нуля к единице. Как создаются большие приложения. Все о технологиях и IT компаниях. Актуальные новости в мире IT.

Связь:
@ruslan_kuyanets
Download Telegram
Next.js 14

В свежем релизе Next.js 14 разработчики представили ряд привлекательных обновлений, направленных на ускорение и упрощение процесса разработки веб-приложений.

Turbopack:

- Локальный сервер теперь запускается на 53% быстрее.
- С Fast Refresh код обновляется на 94% быстрее.

Server Actions (Стабильный):

- Прогрессивно улучшенные мутации делают обработку данных на сервере более гибкой.
- Интеграция с системами кэширования и перепроверки данных обеспечивает актуальность информации.

Partial Prerendering (Превью):

- Быстрый статический ответ и последующая динамическая загрузка контента улучшают производительность и пользовательский опыт.

Next.js Learn (Новое):

- Бесплатный курс обучения, включающий темы по App Router, аутентификации, работе с базами данных и многому другому, помогает разработчикам быстро освоиться с Next.js 14​.

#news #next #react #framework #update
👍2
Домен

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

Домен — это просто имя вашего сайта в интернете. Вместо того чтобы говорить друзьям набирать 123.45.67.89, вы просто говорите им "заходите на ruslan.com".

Когда вы регистрируете домен, это имя становится вашим указателем на сервер, где хранится ваш сайт. Все очень просто: вводите "ruslan.com" — и вуаля, открывается ваш сайт.

Домены обычно состоят из двух основных частей:

SLD (Second-Level Domain) - это уникальное имя, которое вы выбираете, например, "ruslan" в "ruslan.com".
TLD (Top-Level Domain) - это домен верхнего уровня, такой как ".com", ".org", ".net" и страновые коды типа ".ru", ".us", ".uk".

Иногда в домене может быть и третий уровень — субдомен, например, "blog.ruslan.com", где "blog" является субдоменом. Так мы можем разделять различные части нашего приложения, сервиса (market.yandex.ru / taxi.yandex.ru / bank.yandex.ru и тд)

#обучающийПост #domain
👍6
Что такое DNS

Каждое устройство, подключенное к интернету, имеет уникальный IP-адрес, который используется для обмена данными с другими устройствами в сети. Однако запоминать числовые IP-адреса для всех сайтов было бы очень сложно для людей. DNS позволяет нам использовать запоминающиеся имена доменов (например, "google.com") вместо сложных наборов чисел.

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

Система DNS организована иерархически. В самом верху иерархии находятся корневые сервера, которые управляют базами данных, содержащими информацию о доменных зонах верхнего уровня (например, .com, .org, .net и т.д.). Если локальный DNS-сервер не знает, как перевести доменное имя в IP-адрес, он спрашивает об этом серверы выше уровнем.

#dns #domain #обучающийПост
👍5
ChatGPT все еще самая умная нейросеть в мире. Ответы точнее чем у конкурентов.

#gpt #ai
👍1
Всем привет! Делюсь своим вторым каналом для Веб Разработчиков

- Где брать опыт и как искать работу?
- Как освоить сложную теорию?
- Какие ресурсы использовать для обучения?

Рассказываю тут:

✈️ Telegram Reactify — сложные темы простым языком. Теория, советы, истории с работы.

📹 YouTube Reactify — изучаем JavaScript, React, HTML, CSS. Создаем приложение новостей или курса криптовалюты.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👌1👨‍💻1
Всеми любимый Redux Toolkit 2.0

- Удален устаревший объектный синтаксис из createSlice и createReducer.
- Обновлены опции middleware и enhancers в configureStore, требующие теперь использования колбэков.
- Улучшена упаковка для совместимости ESM/CJS и модернизирован вывод сборки.
- Интегрированы все изменения в Redux Core 5.0, Reselect 5.0, и Redux Thunk 3.0.
- Обновлено стандартное поведение подписки в RTK Query.
- Добавлен новый метод combineSlices для ленивой загрузки редьюсеров слайсов.
- Введено "динамическое промежуточное ПО" для добавления промежуточного ПО во время выполнения.
- Добавлен новый синтаксис колбэков в createSlice.reducers, с опцией определения танков внутри createSlice.
- autoBatchEnhancer теперь включен по умолчанию в configureStore.
- Внесены множество улучшений для TypeScript.

#update #redux #frontend
👍3❤‍🔥1
5 сложных вопросов для Python разработчиков

1. Какие встроенные структуры данных в Python ты знаешь и чаще всего используешь?
Чаще всего используются списки (list), словари (dict), кортежи (tuple) и множества (set). Списки хранят упорядоченные коллекции элементов. Словари хранят данные в виде пар "ключ-значение" для быстрого доступа. Кортежи похожи на списки, но их нельзя изменить после создания. Множества хранят уникальные неупорядоченные элементы и полезны для операций объединения или пересечения.

2. Что такое Pydantic?
Pydantic — это библиотека для проверки данных и управления настройками с помощью аннотаций типов. Она автоматически проверяет типы данных и преобразует их в нужный формат. Это особенно полезно для обработки данных из запросов API или конфигурационных файлов. Библиотека помогает избежать ошибок, обеспечивая корректность данных перед их использованием.

3. Как обычно оптимизируете медленные запросы в ORM?
Оптимизация начинается с поиска узких мест с помощью инструментов вроде django-debug-toolbar. Основные методы: использование select_related и prefetch_related для уменьшения числа запросов, добавление индексов к полям и правильное использование only() или defer() для загрузки только нужных полей. Иногда эффективнее заменить сложный запрос ORM на прямое SQL-выражение с помощью extra() или RawSQL.

4. Что такое "лингвистические паттерны" (naming patterns, code smells)?
Лингвистические паттерны — это соглашения по именованию сущностей в коде, которые улучшают читаемость (например, CamelCase для классов). Code smells — это симптомы в коде, которые указывают на потенциальные проблемы дизайна (например, длинные методы или дублирование кода).

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

#data_structure #list #dictionary #validation #serialization #model #orm #performance #query #naming_patterns #readability #maintainability #implementation
🧑‍💻 5 сложных вопросов для Python разработчиков

1. Что такое "лингвистические паттерны" (naming patterns, code smells)?
Лингвистические паттерны — это соглашения по именованию сущностей в коде, которые улучшают читаемость (например, CamelCase для классов). Code smells — это симптомы в коде, которые указывают на потенциальные проблемы дизайна (например, длинные методы или дублирование кода).

2. Что такое Pydantic?
Pydantic — это библиотека для проверки данных и управления настройками с помощью аннотаций типов. Она автоматически проверяет типы данных и преобразует их в нужный формат. Это особенно полезно для обработки данных из запросов API или конфигурационных файлов. Библиотека помогает избежать ошибок, обеспечивая корректность данных перед их использованием.

3. Как обычно оптимизируете медленные запросы в ORM?
Оптимизация начинается с поиска узких мест с помощью инструментов вроде django-debug-toolbar. Основные методы: использование select_related и prefetch_related для уменьшения числа запросов, добавление индексов к полям и правильное использование only() или defer() для загрузки только нужных полей. Иногда эффективнее заменить сложный запрос ORM на прямое SQL-выражение с помощью extra() или RawSQL.

4. Какие встроенные структуры данных в Python ты знаешь и чаще всего используешь?
Чаще всего используются списки (list), словари (dict), кортежи (tuple) и множества (set). Списки хранят упорядоченные коллекции элементов. Словари хранят данные в виде пар "ключ-значение" для быстрого доступа. Кортежи похожи на списки, но их нельзя изменить после создания. Множества хранят уникальные неупорядоченные элементы и полезны для операций объединения или пересечения.

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

#naming_patterns #readability #maintainability #validation #serialization #model #orm #performance #query #data_structure #list #dictionary #implementation
🧑‍💻 5 сложных вопросов для Python разработчиков

1. Что такое абстрактные классы?
Абстрактные классы в Python — это классы, которые не могут быть созданы непосредственно, а служат как шаблоны для других классов. Они могут содержать абстрактные методы, которые должны быть реализованы в дочерних классах. Абстрактные классы создаются с использованием модуля abc и декоратора @abstractmethod.

2. Разница между одинарным и двойным подчеркиванием?
- Одинарное подчеркивание (_) используется как соглашение для обозначения "непубличных" атрибутов и методов, которые не предназначены для использования вне класса, но это не является жестким ограничением.
- Двойное подчеркивание (__) используется для реализации механизма именования с учётом "защищённых" атрибутов, а также для создания уникальных имен, чтобы избежать конфликтов.

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

4. Какие есть коды ответов HTTP?
Коды ответов HTTP делятся на пять категорий:

- 1xx (Информационные) — запрос принят, обработка продолжается.
- 2xx (Успешные) — запрос успешно выполнен (например, 200 OK).
- 3xx (Перенаправления) — нужно выполнить дополнительное действие (например, 301 Moved Permanently).
- 4xx (Ошибки клиента) — запрос содержит ошибки (например, 404 Not Found).
- 5xx (Ошибки сервера) — проблема на стороне сервера (например, 500 Internal Server Error).

5. Зачем нужен метод super в классе?
Метод super() используется для вызова методов родительского класса в дочернем классе. Это позволяет расширять или изменять функциональность родительского метода без необходимости повторно писать его код.

#abstract_class #oop #inheritance #naming #underscore #middleware #status_code #http #rest #super
🧑‍💻 5 сложных вопросов для Python разработчиков

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

2. Зачем нужен метод super в классе?
Метод super() используется для вызова методов родительского класса в дочернем классе. Это позволяет расширять или изменять функциональность родительского метода без необходимости повторно писать его код.

3. Разница между одинарным и двойным подчеркиванием?
- Одинарное подчеркивание (_) используется как соглашение для обозначения "непубличных" атрибутов и методов, которые не предназначены для использования вне класса, но это не является жестким ограничением.
- Двойное подчеркивание (__) используется для реализации механизма именования с учётом "защищённых" атрибутов, а также для создания уникальных имен, чтобы избежать конфликтов.

4. Что такое абстрактные классы?
Абстрактные классы в Python — это классы, которые не могут быть созданы непосредственно, а служат как шаблоны для других классов. Они могут содержать абстрактные методы, которые должны быть реализованы в дочерних классах. Абстрактные классы создаются с использованием модуля abc и декоратора @abstractmethod.

5. Какие есть коды ответов HTTP?
Коды ответов HTTP делятся на пять категорий:

- 1xx (Информационные) — запрос принят, обработка продолжается.
- 2xx (Успешные) — запрос успешно выполнен (например, 200 OK).
- 3xx (Перенаправления) — нужно выполнить дополнительное действие (например, 301 Moved Permanently).
- 4xx (Ошибки клиента) — запрос содержит ошибки (например, 404 Not Found).
- 5xx (Ошибки сервера) — проблема на стороне сервера (например, 500 Internal Server Error).

#middleware #super #inheritance #oop #naming #underscore #abstract_class #status_code #http #rest
🧑‍💻 Вопросы с собесов для Node.js Разработчика

1. Расскажите о генераторах и итераторах в JavaScript и приведите пример их использования.
Итераторы — это объекты, которые реализуют метод next() и возвращают значение на каждой итерации. Генераторы — это функции, которые создают итераторы с помощью function* и yield. Генераторы позволяют контролировать выполнение кода и возвращать значения по мере необходимости, что упрощает работу с большими или бесконечными наборами данных.

2. Что такое дескрипторы свойств объектов в JavaScript и как их можно использовать на практике?
Дескрипторы свойств — это специальные объекты, которые описывают атрибуты свойства объекта, такие как возможность его изменения, перечисления или удаления. Используя дескрипторы, можно точно контролировать, как свойства объекта будут вести себя. Например, можно сделать свойство неизменяемым или скрыть его от перебора через цикл.

3. Что такое ArrayBuffer и в чем разница между типами Uint32Array и Float32Array?
ArrayBuffer — это объект, который хранит фиксированное количество байт данных в памяти. Он используется для работы с бинарными данными. Uint32Array и Float32Array — это типизированные массивы, которые представляют разные типы данных: Uint32Array работает с беззнаковыми целыми числами, а Float32Array — с числами с плавающей точкой. Основное различие между ними — в типе данных, который они хранят.

4. Назовите несколько способов создания неизменного объекта в JavaScript.
Существуют несколько способов сделать объект неизменным. Один из самых популярных — это метод Object.freeze(), который запрещает добавление, удаление и изменение свойств объекта. Также можно использовать Object.seal(), который позволяет изменять существующие свойства, но не добавлять новые. Для глубоких объектов применяют рекурсивное замораживание.

5. Объясните разницу между последовательным и параллельным выполнением асинхронных функций. Как работают Promise.all() и Promise.allSettled()?
Последовательное выполнение асинхронных функций означает, что каждая следующая функция начинается только после завершения предыдущей, тогда как параллельное выполнение позволяет нескольким функциям выполняться одновременно.

Метод Promise.all() запускает несколько промисов параллельно и возвращает результат, когда все они успешно завершатся, а Promise.allSettled() возвращает результат независимо от того, завершился ли каждый промис успехом или ошибкой.

#функция #yield #next #объекты #defineproperty #байт #данные #arraybuffer #freeze #объект #seal #promise #асинхронность
🧑‍💻 Вопросы с собесов для Node.js Разработчика

1. Виды тестов и их различия
Основные виды тестов: unit (проверка отдельных компонентов), integration (проверка взаимодействия компонентов), e2e (проверка всей системы). Они различаются scope, скоростью выполнения и сложностью setup.

2. Pick, Omit, Partial в TS
Pick, Omit и Partial — это утилитарные типы TypeScript для работы с объектными типами. Pick создает тип из выбранных свойств исходного типа. Omit создает тип, исключая указанные свойства. Partial делает все свойства типа необязательными.

3. Что такое "всплытие" (hoisting) в контексте переменных и функций?
Hoisting (всплытие) - это механизм в JavaScript, при котором объявления переменных и функций "поднимаются" в начало своей области видимости. Объявления функций поднимаются полностью, а переменные, объявленные через var - только объявление, но не инициализация. let и const также всплывают, но не инициализируются до фактического объявления.

4. Представь есть очень толстый сложный запрос (загрузка видео или в бд). Что делать в Node.js? А если в SQL?
В Node.js для тяжелых операций используйте асинхронную обработку, потоки и очередь задач. Для SQL-запросов оптимизируйте запросы, добавляйте индексы и используйте пагинацию. В обоих случаях важно не блокировать event loop и эффективно использовать ресурсы.

5. Какие бывают транспорты между микросервисами (синхронный подход (REST, gRPC) и асинхронный (kafka, rabbitMQ, NATS))
Для коммуникации микросервисов используются синхронные (REST, gRPC) и асинхронные (Kafka, RabbitMQ, NATS) транспорты. Синхронные требуют immediate response, асинхронные используют message brokers для декаплингования сервисов.

#testing #unit #integration #type_utility #pick #omit #hoisting #performance_optimization #streams #sql_optimization #microservices #communication
🧑‍💻 Подборка из 5 вопросов для Golang разработчиков

1. Какие методы уменьшения объема Docker-образа ты знаешь?
Основные методы: использование многоступенчатой сборки (multi-stage build), выбор минимального базового образа (например, alpine), объединение команд RUN в одну для уменьшения слоёв, использование файла .dockerignore и удаление кэша пакетного менеджера в том же слое, где он использовался.

#docker #image_optimization
🧑‍💻 Подборка из 5 вопросов для Golang разработчиков

1. Как в Go реализовать middleware?
Middleware — это функция, которая оборачивает http.Handler и добавляет дополнительную логику до и после вызова ServeHTTP.

2. Как устроен Outbox-паттерн и зачем он нужен?
Outbox-паттерн сохраняет сообщение в таблицу вместе с изменением состояния, а потом отдельный процесс (consumer) читает и отправляет их в Kafka. Это обеспечивает атомарность между БД и очередью.

3. Что такое transactional outbox и зачем он нужен?
Transactional outbox — это способ гарантированной доставки сообщений между сервисами. Он сохраняет сообщение в БД в рамках бизнес-транзакции, а затем отправляет его асинхронно.

4. Как предотвратить списание средств с баланса при гонке транзакций?
Нужно использовать транзакции с блокировкой строк (SELECT FOR UPDATE), чтобы избежать одновременного изменения баланса разными транзакциями.

5. Что такое палиндром и как его определить в Go?
Палиндром — это строка, которая читается одинаково слева направо и справа налево. В Go важно учитывать работу с рунами, а не байтами, особенно для кириллицы. Также часто приводят символы к нижнему регистру для корректного сравнения.

#middleware #http #decorator #outbox #transactional_messaging #kafka #pattern #transaction #locking #balance #string #palindrome
🧑‍💻 Подборка из 5 вопросов для Golang разработчиков

1. RabbitMQ использует базу данных?
RabbitMQ не использует базу данных для хранения сообщений. Вместо этого оно записывает сообщения на диск в двух случаях: если сообщение имеет delivery_mode=2 (устойчивое сообщение) или при недостатке оперативной памяти, чтобы освободить её для других задач.

2. Что такое Erlang?
Erlang — это функциональный язык программирования, разработанный для создания распределённых и отказоустойчивых систем. RabbitMQ разработан на Erlang и использует его платформу Open Telecom Platform (OTP) для кластеризации и обеспечения высокой доступности.

3. Какой протокол использует RabbitMQ?
RabbitMQ использует AMQP (Advanced Message Queuing Protocol) — открытый стандарт для передачи сообщений через сеть. Он обеспечивает надежную, масштабируемую и стандартизированную коммуникацию между системами.

4. Что такое pub/sub?
Pub/sub (publish/subscribe) — это асинхронная модель взаимодействия, где производитель публикует сообщение на определённую тему, и все подписчики этой темы получают его одновременно. Этот подход часто используется в микросервисах для организации событийного взаимодействия.

5. Является ли RabbitMQ устойчивым?
RabbitMQ поддерживает устойчивость сообщений и очередей. Чтобы обеспечить сохранение сообщений при перезапуске сервера, очередь должна быть помечена как durable, а сообщения — как persistent (указанием delivery_mode=2 при публикации). Устойчивые очереди сохраняются между перезапусками сервера, но сами сообщения требуют дополнительного указания их устойчивости.

#rabbitmq #storage #delivery_mode #erlang #otp #amqp #protocol #pub #sub #durability #persistence
#Собес #sql #select #performance

🤔 Middle Java Backend-разработчик в компанию МВидео.

Техническое собеседование. Зима 2025. Просил 250к+. Проект: биллинг (сбор информации по поставщикам). Опыт в резюме: 3 года. Сначала было много вопросов об опыте, стеке, тестах, "почему уходишь с текущего места работы?" и т.д. Был лайкводинг.

💬 Вопросы:

- Как реализовать базовое приложение на Spring Boot?

- Зачем нужен Spring Framework?

- Что такое чистый и поддерживаемый код?

- Какие принципы важны при работе с базой данных?

- Влияет ли количество полей в SELECT на производительность?

👉 Все вопросы из этого собеседования (7)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
#video #ошибки
📚 IT-расследование: как ошибка в программе убила людей?

Нашел для вас интересное видео про баг в аппарате Therac-25 и почему он стоил людям жизни.

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

👉 База вопросов 👉 Новости
🧑‍💻 Подборка из 5 вопросов для Golang разработчиков

1. Можно ли передать функцию как параметр другой функции?
Да, в Go функции можно передавать как параметры другим функциям. Это позволяет создавать гибкие и переиспользуемые блоки логики. Такие функции называются функциями первого класса.

 

2. Какова алгоритмическая сложность доступа по ключу для map?


Доступ по ключу в map в Go выполняется за амортизированное время O(1). Это означает, что операции получения, вставки и удаления обычно очень быстры.

 

3. Что происходит, когда в коде просят выделить 1 КБ памяти?


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

 

4. Как реализовать транзакции через SQL-запросы?


Используются команды BEGIN, COMMIT, ROLLBACK.

5. Почему поиск в B-tree работает быстрее полного перебора данных?


Потому что B-tree отсеивает ненужные данные, двигаясь по дереву, а не проверяя каждую строку таблицы.

 

#function #first_class #parameter #map #hash_table #complexity #memory_allocation #heap #pointer #begin #commit #rollback #b-tree #binary_search #index
#Собес #grpc #middleware #concurrency

🤔 Middle+ Golang Backend-разработчик в Ozon

Техническое собеседование. Лето 2025. Вилка 290к+. Проект: мультисервисная платформа для работы с заказами и аналитикой в Ozon. Опыт в резюме — 3.5 года. Вопросы по конкурентности, работе с HTTP, базам данных, Kafka, паттерну Outbox, архитектуре и SQL.

💬 Вопросы:

- Зачем использовать UUID вместо автоинкрементного ID в распределённой системе?

- Что такое transactional consistency в контексте Outbox?

- Что такое transactional outbox и зачем он нужен?

- Что такое паттерн Strategy и зачем он нужен?

- Как реализовать worker pool в Go?

👉 Все вопросы из этого собеседования (15)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
#article #инструменты #ии
📚 AI уже тут: в какие инструменты уже интегрирован ИИ

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

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

👉 База вопросов 👉 Новости
#podcast #кейсы #проекты
📚 Machine Learning: Нейросети и машинное обучение

Подкаст "Machine Learning" — это захватывающее путешествие в мир нейросетей, машинного обучения и искусственного интеллекта, созданное для всех, кто хочет разобраться в технологиях, меняющих мир! Каждую неделю мы погружаемся в актуальные темы: от новейших архитектур нейросетей, таких как трансформеры, до применения ИИ в медицине, финансах, играх и творчестве. Вместе с ведущими экспертами, исследователями и практиками мы обсуждаем, как алгоритмы учатся, почему большие языковые модели вроде GPT революционизируют обработку данных, и какие этические дилеммы стоят за развитием ИИ.

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

👉 База вопросов 👉 Новости