#Frontend
⏺ Что такое JSON и как с ним работать?
JSON (JavaScript Object Notation) — это текстовый формат для хранения и передачи данных. Он широко используется в API, базах данных, веб-приложениях и мобильных играх.
⏺ Структура JSON
- Данные представляются в виде структуры «ключ-значение».
- Объекты записываются в
- Массивы хранятся в
Пример:
⏺ Типы данных в JSON
- Объекты — сложные сущности, например, профиль пользователя.
- Массивы — списки однотипных данных, например, товары в каталоге.
- Строки — текстовая информация.
- Числа — целые и дробные, поддерживают отрицательные значения.
- Булевы значения —
- Null — обозначает отсутствие данных.
⏺ Преимущества JSON
- Компактный, экономит трафик.
- Читаемый человеком и понятный машинам.
- Поддерживается большинством языков программирования.
⏺ JSON vs другие форматы
- XML — громоздкий, но позволяет задавать атрибуты.
- YAML — проще читается, но чувствителен к отступам.
⏺ Работа с JSON в JavaScript
-
-
⏺ Дополненные версии JSON
- JSON5 — поддерживает комментарии, одинарные кавычки и Infinity.
- JSON Schema — позволяет задавать правила для структуры JSON.
⏺ Безопасность при работе с JSON
- Возможные угрозы: JSON Injection, XSS, SQL-инъекции.
- Решения: валидация данных, санитизация, использование безопасных запросов.
⏺ Как открыть JSON?
- Любой текстовый редактор (VS Code, Sublime Text).
- Онлайн-инструменты для проверки и форматирования JSON.
🔗 Статья
🌐 Новости
🖥 Платформа
JSON (JavaScript Object Notation) — это текстовый формат для хранения и передачи данных. Он широко используется в API, базах данных, веб-приложениях и мобильных играх.
- Данные представляются в виде структуры «ключ-значение».
- Объекты записываются в
{} и состоят из ключей (в двойных кавычках) и значений. - Массивы хранятся в
[] и содержат однотипные данные. Пример:
{
"user": {
"name": "Алекс",
"age": 30,
"skills": ["JavaScript", "Python", "SQL"]
}
}- Объекты — сложные сущности, например, профиль пользователя.
- Массивы — списки однотипных данных, например, товары в каталоге.
- Строки — текстовая информация.
- Числа — целые и дробные, поддерживают отрицательные значения.
- Булевы значения —
true или false, полезны для условий. - Null — обозначает отсутствие данных.
- Компактный, экономит трафик.
- Читаемый человеком и понятный машинам.
- Поддерживается большинством языков программирования.
- XML — громоздкий, но позволяет задавать атрибуты.
- YAML — проще читается, но чувствителен к отступам.
-
JSON.stringify(obj) — превращает объект в строку JSON. -
JSON.parse(jsonString) — преобразует JSON-строку в объект. - JSON5 — поддерживает комментарии, одинарные кавычки и Infinity.
- JSON Schema — позволяет задавать правила для структуры JSON.
- Возможные угрозы: JSON Injection, XSS, SQL-инъекции.
- Решения: валидация данных, санитизация, использование безопасных запросов.
- Любой текстовый редактор (VS Code, Sublime Text).
- Онлайн-инструменты для проверки и форматирования JSON.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
#Frontend
Мощь FFmpeg в браузере
FFmpeg.wasm - это порт популярного фреймворка FFmpeg в WebAssembly, который позволяет обрабатывать видео и аудио прямо в браузере. Это решает проблему обработки медиафайлов без необходимости отправки их на сервер.
1⃣ Какие задачи решает FFmpeg.wasm?
- Обрезка видео и аудио
- Конвертация форматов
- Изменение размера видео
- Применение фильтров и эффектов
- Извлечение аудиодорожки
- Создание превью и миниатюр
2⃣ Какие есть ограничения?
⏺ Размер библиотеки:
- Базовый модуль около 25MB
- Дополнительные кодеки увеличивают размер
⏺ Требования к браузеру:
- Поддержка WebAssembly
- Поддержка SharedArrayBuffer
- Специальные заголовки COOP/COEP
⏺ Ограничения производительности:
- Работа с большими файлами может быть медленной
- Ограничения памяти браузера
3⃣ Когда стоит использовать FFmpeg.wasm?
⏺ Подходит для:
- Простой обработки видео
- Приложений с приватностью данных
- Небольших проектов
⏺ Не подходит для:
- Сложной видеообработки
- Работы с большими файлами
- Приложений с высокими требованиями к производительности
Пример реализации приложения для обрезки видео можете посмотреть здесь
🌐 Новости
🖥 Платформа
Мощь FFmpeg в браузере
FFmpeg.wasm - это порт популярного фреймворка FFmpeg в WebAssembly, который позволяет обрабатывать видео и аудио прямо в браузере. Это решает проблему обработки медиафайлов без необходимости отправки их на сервер.
- Обрезка видео и аудио
- Конвертация форматов
- Изменение размера видео
- Применение фильтров и эффектов
- Извлечение аудиодорожки
- Создание превью и миниатюр
- Базовый модуль около 25MB
- Дополнительные кодеки увеличивают размер
- Поддержка WebAssembly
- Поддержка SharedArrayBuffer
- Специальные заголовки COOP/COEP
- Работа с большими файлами может быть медленной
- Ограничения памяти браузера
- Простой обработки видео
- Приложений с приватностью данных
- Небольших проектов
- Сложной видеообработки
- Работы с большими файлами
- Приложений с высокими требованиями к производительности
Пример реализации приложения для обрезки видео можете посмотреть здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#Tech
🟡 Flux 1 – модель машинного обучения для генерации изображений
Она была разработана для создания реалистичных и детализированных изображений, используя методы глубинного обучения.
❓ Как работает Flux 1?
Flux 1 использует диффузионные модели (diffusion models), которые обучаются превращать шум в осмысленные изображения. Процесс включает два этапа:
1. Прямой процесс (Forward Process) – модель добавляет шум к изображениям, постепенно разрушая их.
2. Обратный процесс (Reverse Process) – обученная модель учится удалять шум, восстанавливая реалистичные изображения.
❓ Ключевые особенности Flux 1
- Генерация изображений с высоким разрешением.
- Обучение на больших датасетах, что позволяет создавать реалистичные и стилизованные изображения.
- Поддержка текстовых промптов, что делает её похожей на DALL·E и Stable Diffusion.
Сгенерируйте изображение*⃣ здесь*⃣
🌐 Новости
🖥 Платформа
Она была разработана для создания реалистичных и детализированных изображений, используя методы глубинного обучения.
Flux 1 использует диффузионные модели (diffusion models), которые обучаются превращать шум в осмысленные изображения. Процесс включает два этапа:
1. Прямой процесс (Forward Process) – модель добавляет шум к изображениям, постепенно разрушая их.
2. Обратный процесс (Reverse Process) – обученная модель учится удалять шум, восстанавливая реалистичные изображения.
- Генерация изображений с высоким разрешением.
- Обучение на больших датасетах, что позволяет создавать реалистичные и стилизованные изображения.
- Поддержка текстовых промптов, что делает её похожей на DALL·E и Stable Diffusion.
Сгенерируйте изображение
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1
Раскройте секреты, которые выведут ваши навыки на новый уровень! Эти малоизвестные концепции — настоящий «арсенал ниндзя» для разработчика. Освойте их, чтобы:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
#Tech
📖 Что почитать начинающему тестировщику ?
Если вы хотите стать тестировщиком, важно не только освоить практические навыки, но и понимать принципы тестирования. Вот список полезных книг, которые помогут разобраться в профессии.
⭐️ Тестирование dot com
Автор: Роман Савин
- Классика тестирования, актуальная даже спустя годы.
- Описывает профессию тестировщика и его задачи.
- Простым языком объясняет, как искать ошибки в ПО.
⭐️ Тестирование программного обеспечения
Автор: Святослав Куликов
- Отличный базовый курс тестирования.
- Разбирает разные виды тестирования, чек-листы и автоматизацию.
- Включает примеры команд и сценариев для автотестов.
⭐️ Ключевые процессы тестирования
Автор: Рэкс Блэк
- Глубокое погружение в процессы тестирования.
- Разбор тестирования на примере проекта «Суматра».
- Помогает понять, как правильно строить процессы в команде.
⭐️ Софт отстой и что с этим делать
Автор: Дэвид Платт
- Книга с юмором, но с полезными выводами.
- Рассматривает тестирование с точки зрения пользователя.
- Показывает, как выявлять проблемы в юзабилити.
⭐️ A Practitioner’s Guide to Software Test Design
Автор: Lee Copeland
- Единственная книга в подборке на английском.
- Описывает 7 подходов к тестированию.
- Подходит для новичков благодаря простому языку.
Эти книги помогут вам лучше понять тестирование и начать карьеру в этой сфере.
🔗 Статья
🌐 Новости
🖥 Платформа
Если вы хотите стать тестировщиком, важно не только освоить практические навыки, но и понимать принципы тестирования. Вот список полезных книг, которые помогут разобраться в профессии.
Автор: Роман Савин
- Классика тестирования, актуальная даже спустя годы.
- Описывает профессию тестировщика и его задачи.
- Простым языком объясняет, как искать ошибки в ПО.
Автор: Святослав Куликов
- Отличный базовый курс тестирования.
- Разбирает разные виды тестирования, чек-листы и автоматизацию.
- Включает примеры команд и сценариев для автотестов.
Автор: Рэкс Блэк
- Глубокое погружение в процессы тестирования.
- Разбор тестирования на примере проекта «Суматра».
- Помогает понять, как правильно строить процессы в команде.
Автор: Дэвид Платт
- Книга с юмором, но с полезными выводами.
- Рассматривает тестирование с точки зрения пользователя.
- Показывает, как выявлять проблемы в юзабилити.
Автор: Lee Copeland
- Единственная книга в подборке на английском.
- Описывает 7 подходов к тестированию.
- Подходит для новичков благодаря простому языку.
Эти книги помогут вам лучше понять тестирование и начать карьеру в этой сфере.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1
#Frontend
Эй! Давай создадим свою слот-машину, как в онлайн-казино! Это будет классный проект, где мы сделаем три вертикальных слота с эмодзи фруктов и овощей.
Сначала мы подготовим HTML-страничку с контейнерами для слотов и кнопкой. Потом добавим стиль, чтобы всё выглядело круто. А после этого напишем скрипт, который будет случайным образом менять эмодзи, когда мы будем нажимать на кнопку.
Также можем добавить какие-нибудь улучшения, например, проверку совпадений или звуки, когда слоты крутятся. В общем, будет весело и полезно! Попробуем?
🔗 Статья
🌐 Новости
🖥 Платформа
Эй! Давай создадим свою слот-машину, как в онлайн-казино! Это будет классный проект, где мы сделаем три вертикальных слота с эмодзи фруктов и овощей.
Сначала мы подготовим HTML-страничку с контейнерами для слотов и кнопкой. Потом добавим стиль, чтобы всё выглядело круто. А после этого напишем скрипт, который будет случайным образом менять эмодзи, когда мы будем нажимать на кнопку.
Также можем добавить какие-нибудь улучшения, например, проверку совпадений или звуки, когда слоты крутятся. В общем, будет весело и полезно! Попробуем?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Программирование на гранях техники: Компьютеры, Редакторы и цифровые DSL
В программировании есть интересные концепции, делающие код более гибким и выразительным. Одной из таких концепций является метапрограммирование. Давайте разберемся, что это такое.
📝 Введение в метапрограммирование
Метапрограммирование позволяет изменять или генерировать код во время выполнения, адаптируя его к изменяющимся условиям.
📝 Метаклассы: магия за кулисами классов
Метаклассы — мощный инструмент для изменения процесса создания классов. Они позволяют автоматически регистрировать классы или динамически изменять их поведение, создавая более адаптивные структуры.
📝 Декораторы: магические обёртки для функций и классов
Декораторы добавляют дополнительное поведение к функциям и классам без изменения их исходного кода. Например, их можно использовать для логирования вызовов функций, что упрощает отладку.
📝 Динамические DSL: создание доменно-специфичных языков
DSL (доменно-специфические языки) решают специфические задачи в определенных областях. Метаклассы и декораторы позволяют создавать динамические DSL, адаптированные под нужды конкретного проекта.
Понимание этих концепций повысит вашу эффективность как разработчика и поможет создавать более гибкие и расширяемые системы!
🔗 Статья
🌐 Новости
🖥 Платформа
В программировании есть интересные концепции, делающие код более гибким и выразительным. Одной из таких концепций является метапрограммирование. Давайте разберемся, что это такое.
Метапрограммирование позволяет изменять или генерировать код во время выполнения, адаптируя его к изменяющимся условиям.
Метаклассы — мощный инструмент для изменения процесса создания классов. Они позволяют автоматически регистрировать классы или динамически изменять их поведение, создавая более адаптивные структуры.
Декораторы добавляют дополнительное поведение к функциям и классам без изменения их исходного кода. Например, их можно использовать для логирования вызовов функций, что упрощает отладку.
DSL (доменно-специфические языки) решают специфические задачи в определенных областях. Метаклассы и декораторы позволяют создавать динамические DSL, адаптированные под нужды конкретного проекта.
Понимание этих концепций повысит вашу эффективность как разработчика и поможет создавать более гибкие и расширяемые системы!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#Tech
🎭 Советы для избежания частых ошибок в разработке
1. Недостаточная обработка исключений
Реальный мир непредсказуем: некорректные данные, недоступные сервисы, повреждённые файлы. Грамотная обработка исключений — это забота о пользователе и бизнесе.
2. Забывая о DRY, пишем дважды
Копирование кода кажется быстрым решением, но становится кошмаром при внесении изменений. Выделение повторяющихся частей в функции — инвестиция в будущую продуктивность.
3. Глобальные переменные
Удобные на первый взгляд, они становятся источником неожиданных проблем. Лучше передавать данные через параметры и возвращаемые значения.
4. Тесты
Код без тестов подобен сложному трюку без страховки. Тесты выявляют ошибки на ранних этапах и документируют ожидаемое поведение программы.
5. Искусство работы с данными
Оптимизируйте алгоритмы и структуры данных. Используйте современные инструменты — генераторы, встроенные функции, специализированные коллекции.
6. SOLID
Эти принципы помогают создавать гибкие, расширяемые системы, устойчивые к изменениям требований.
7. Многопоточность
Без правильных механизмов блокировки и синхронизации параллельное выполнение задач приводит к непредсказуемым результатам.
8. Структура проекта
Логическое разделение на модули и пакеты помогает быстро ориентироваться в проекте и понимать взаимосвязи компонентов.
9. Магические числа:
Замена числовых значений на константы с говорящими именами делает код понятнее.
10. Логирование
Грамотное логирование — ваш проводник при выявлении причин сбоев на продакшене.
11. Планирование
Анализ требований и проектирование архитектуры помогают избежать ненужных переделок.
12. Единообразие
Единый стиль кодирования делает код читаемым и упрощает командную работу.
🔗 Статья
🌐 Новости
🖥 Платформа
1. Недостаточная обработка исключений
Реальный мир непредсказуем: некорректные данные, недоступные сервисы, повреждённые файлы. Грамотная обработка исключений — это забота о пользователе и бизнесе.
2. Забывая о DRY, пишем дважды
Копирование кода кажется быстрым решением, но становится кошмаром при внесении изменений. Выделение повторяющихся частей в функции — инвестиция в будущую продуктивность.
3. Глобальные переменные
Удобные на первый взгляд, они становятся источником неожиданных проблем. Лучше передавать данные через параметры и возвращаемые значения.
4. Тесты
Код без тестов подобен сложному трюку без страховки. Тесты выявляют ошибки на ранних этапах и документируют ожидаемое поведение программы.
5. Искусство работы с данными
Оптимизируйте алгоритмы и структуры данных. Используйте современные инструменты — генераторы, встроенные функции, специализированные коллекции.
6. SOLID
Эти принципы помогают создавать гибкие, расширяемые системы, устойчивые к изменениям требований.
7. Многопоточность
Без правильных механизмов блокировки и синхронизации параллельное выполнение задач приводит к непредсказуемым результатам.
8. Структура проекта
Логическое разделение на модули и пакеты помогает быстро ориентироваться в проекте и понимать взаимосвязи компонентов.
9. Магические числа:
Замена числовых значений на константы с говорящими именами делает код понятнее.
10. Логирование
Грамотное логирование — ваш проводник при выявлении причин сбоев на продакшене.
11. Планирование
Анализ требований и проектирование архитектуры помогают избежать ненужных переделок.
12. Единообразие
Единый стиль кодирования делает код читаемым и упрощает командную работу.
Ошибки — не повод для разочарования, а возможность для роста. Применяя лучшие практики, middle-разработчики могут подняться на новую ступень мастерства.
Постоянное обучение, критический взгляд на собственный код и открытость к обратной связи — ключи к профессиональному успеху.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
#Backend
SQL Practice
Это интерактивная платформа для освоения и совершенствования навыков SQL. Здесь вы решаете реальные задачи по работе с базами данных в удобной онлайн-среде.
Ключевые особенности:
- Обучение через практику — решайте задачи разной сложности
- Мгновенная обратная связь — система сразу проверяет ваши решения
- Реалистичные базы данных — работа с данными, имитирующими реальные сценарии
- Последовательное развитие — от простых запросов к сложным техникам
Как использовать
1. Перейдите на www.sql-practice.com
2. Выберите раздел и сложность
3. Напишите SQL-запрос для решения задачи
4. Получите результат и переходите к следующей задаче
🌐 Новости
🖥 Платформа
SQL Practice
Это интерактивная платформа для освоения и совершенствования навыков SQL. Здесь вы решаете реальные задачи по работе с базами данных в удобной онлайн-среде.
Ключевые особенности:
- Обучение через практику — решайте задачи разной сложности
- Мгновенная обратная связь — система сразу проверяет ваши решения
- Реалистичные базы данных — работа с данными, имитирующими реальные сценарии
- Последовательное развитие — от простых запросов к сложным техникам
Как использовать
1. Перейдите на www.sql-practice.com
2. Выберите раздел и сложность
3. Напишите SQL-запрос для решения задачи
4. Получите результат и переходите к следующей задаче
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
#Frontend
🎓 Crunchzilla - это образовательная платформа, которая предлагает несколько интерактивных обучающих инструментов для изучения JavaScript.
На сайте представлены следующие программы:
1. Code Monster - интерактивный учебник по JavaScript для детей. Учит базовым концепциям программирования через создание анимации и графики.
2. Code Maven - более продвинутая версия для подростков и взрослых. Покрывает более сложные концепции JavaScript и создание интерактивных визуализаций.
3. Game Maven - учит создавать игры с использованием JavaScript, включая управление физикой, детектирование столкновений и другие игровые механики.
Это отличный способ для начинающих узнать основы программирования в интерактивной форме.
🔗 Ссылка
🌐 Новости
🖥 Платформа
На сайте представлены следующие программы:
1. Code Monster - интерактивный учебник по JavaScript для детей. Учит базовым концепциям программирования через создание анимации и графики.
2. Code Maven - более продвинутая версия для подростков и взрослых. Покрывает более сложные концепции JavaScript и создание интерактивных визуализаций.
3. Game Maven - учит создавать игры с использованием JavaScript, включая управление физикой, детектирование столкновений и другие игровые механики.
Все эти инструменты построены по принципу "учись, делая" - они предлагают пошаговые инструкции, которые пользователь выполняет прямо в браузере, сразу видя результаты своего кода.
Это отличный способ для начинающих узнать основы программирования в интерактивной форме.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Микросервисы зарекомендовали себя как эффективный подход в разработке, но бывают ли ситуации, когда они не оправдывают ожиданий?
В этой статье рассмотрены 10 распространенных антипаттернов в работе с микросервисами и решения для их предотвращения.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1
Всегда хотели создать собственное расширение для браузера, но думали, что это сложно? На самом деле, вы можете сделать простое, но полезное расширение всего за 10 минут!
В конце 2020 года я разработал скрипт с падающим снегом для сайтов. Но возникла проблема: скрипт нужно было запускать через консоль браузера, что становилось невозможным на сайтах с жёсткой политикой безопасности. Решение? Создать собственное расширение!
Манифест — это главный документ расширения, который определяет его параметры:
- Название
- Права доступа
- Фоновые скрипты
- Иконку
- Действия при клике
Создадим файл
manifest.json:
{
"name": "Snow Fall",
"version": "1.0",
"manifest_version": 3,
"action": {
"default_popup": "popup.html"
},
"permissions": ["activeTab", "scripting"],
"icons": {
"16": "icons/icon16.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
}
}
1. Откройте Chrome и перейдите в раздел
chrome://extensions/2. Включите "Режим разработчика"
3. Нажмите "Загрузить распакованное расширение" и выберите папку с вашими файлами
Настройка иконок и разрешений
Для работы расширения нам нужны разрешения:
-
activeTab — доступ к активной вкладке-
scripting — возможность запускать скриптыА для всплывающего меню создадим файл
popup.html:
<!DOCTYPE html>
<html>
<head>
<style>
button { width: 100px; height: 30px; }
</style>
</head>
<body>
<button id="start">Запустить снег</button>
<script src="popup.js"></script>
</body>
</html>
Теперь создадим файл
popup.js с кодом для запуска:
document.getElementById('start').addEventListener('click', async () => {
let [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
chrome.scripting.executeScript({
target: { tabId: tab.id },
function: snowFall
});
});
function snowFall() {
// Здесь должен быть код со снежинками
// Пример:
const snow = document.createElement('div');
snow.innerHTML = '❄️';
snow.style.position = 'fixed';
snow.style.top = '0';
snow.style.left = Math.random() * 100 + '%';
snow.style.animation = 'fall 10s linear';
document.body.appendChild(snow);
// Добавьте здесь полный код для снежинок
}
После создания всех файлов и добавления расширения в браузер, вы можете:
1. Зайти на любой сайт
2. Нажать на иконку расширения
3. Нажать кнопку "Запустить снег"
Вуаля! Снежинки появляются даже на сайтах с жёсткой политикой безопасности.
Оригинальная статья
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#WebDevelopment
📡 Какие методы HTTP-запросов существуют?
HTTP — это основа для передачи данных в интернете. Разберём основные HTTP-методы:
➕ GET — Получение данных
• Запрашивает данные без изменений
• Параметры в URL
• Кэшируется
• Можно добавить в закладки
• Идемпотентный
➕ POST — Создание ресурса
• Отправляет данные на сервер
• Для создания новых ресурсов
• Данные в теле запроса
• Не кэшируется
• Не идемпотентный
➕ PUT — Полное обновление
• Заменяет ресурс полностью
• Может создать новый ресурс
• Идемпотентный
➕ DELETE — Удаление
• Удаляет ресурс
• Идемпотентный
➕ PATCH — Частичное обновление
• Частично изменяет ресурс
• Передаёт только изменяемые поля
• Обычно не идемпотентный
➕ HEAD — Только заголовки
• Возвращает только HTTP-заголовки
• Для проверки доступности ресурса
• Идемпотентный
➕ OPTIONS — Информация о ресурсе
• Запрашивает информацию о методах и заголовках
• Используется для CORS
• Идемпотентный
➕ CONNECT — Туннелирование
• Создаёт туннель через прокси
• Для HTTPS через HTTP-прокси
➕ TRACE — Диагностика
• Возвращает запрос обратно
• Для отладки
• Обычно отключен
💡 Что такое идемпотентность?
🌐 Новости
🖥 Платформа
📡 Какие методы HTTP-запросов существуют?
HTTP — это основа для передачи данных в интернете. Разберём основные HTTP-методы:
GET /api/users?id=123 HTTP/1.1
Host: example.com
• Запрашивает данные без изменений
• Параметры в URL
• Кэшируется
• Можно добавить в закладки
• Идемпотентный
POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
{
"name": "Алексей",
"email": "alex@example.com"
}
• Отправляет данные на сервер
• Для создания новых ресурсов
• Данные в теле запроса
• Не кэшируется
• Не идемпотентный
PUT /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"name": "Алексей",
"email": "new.alex@example.com"
}
• Заменяет ресурс полностью
• Может создать новый ресурс
• Идемпотентный
DELETE /api/users/123 HTTP/1.1
Host: example.com
• Удаляет ресурс
• Идемпотентный
PATCH /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"email": "newest.alex@example.com"
}
• Частично изменяет ресурс
• Передаёт только изменяемые поля
• Обычно не идемпотентный
• Возвращает только HTTP-заголовки
• Для проверки доступности ресурса
• Идемпотентный
• Запрашивает информацию о методах и заголовках
• Используется для CORS
• Идемпотентный
• Создаёт туннель через прокси
• Для HTTPS через HTTP-прокси
• Возвращает запрос обратно
• Для отладки
• Обычно отключен
💡 Что такое идемпотентность?
Идемпотентность — многократное выполнение одной операции даёт один результат.
Идемпотентные методы:
• GET
• PUT
• DELETE
• HEAD
• OPTIONS
Не идемпотентные:
• POST
• PATCH (обычно)
Please open Telegram to view this post
VIEW IN TELEGRAM
#Tech
🔐 Хеширование: защита данных в цифровом мире
В эпоху, когда каждый клик оставляет цифровой след, безопасность наших данных становится не роскошью, а необходимостью. Ежесекундно по всему миру пересылаются терабайты конфиденциальной информации — пароли, платежные данные, личная переписка.
Но как убедиться, что эти данные в безопасности? На помощь приходит хеширование — мощный инструмент в арсенале кибербезопасности.
В отличие от шифрования, которое позволяет вернуть данные к исходному виду с помощью ключа, хеширование создает уникальный "отпечаток" информации, который невозможно обратить.
В этой статье мы погрузимся в мир хеш-функций, разберем их типы и применение в реальной жизни — от защиты ваших паролей до блокчейн-технологий.
🔗 Статья
🌐 Новости
🖥 База вопросов
В эпоху, когда каждый клик оставляет цифровой след, безопасность наших данных становится не роскошью, а необходимостью. Ежесекундно по всему миру пересылаются терабайты конфиденциальной информации — пароли, платежные данные, личная переписка.
Но как убедиться, что эти данные в безопасности? На помощь приходит хеширование — мощный инструмент в арсенале кибербезопасности.
В отличие от шифрования, которое позволяет вернуть данные к исходному виду с помощью ключа, хеширование создает уникальный "отпечаток" информации, который невозможно обратить.
В этой статье мы погрузимся в мир хеш-функций, разберем их типы и применение в реальной жизни — от защиты ваших паролей до блокчейн-технологий.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Tech
Вспоминая школьные годы, когда мы часами разбирали старые гаджеты в попытке понять, как они работают, я недавно наткнулась на нечто особенное. Это Retro Gadgets – игра, которая переносит магию создания электроники в цифровой мир.
Что действительно зацепило меня — это возможность не просто собирать, но и программировать свои создания на Lua.
Если вы когда-нибудь мечтали стать изобретателем или просто любите возиться с ретро-электроникой, стоит заглянуть на их сайт. Я давно не испытывала такого творческого азарта.
🔗 Ссылка
🌐 Новости
🖥 База вопросов
Вспоминая школьные годы, когда мы часами разбирали старые гаджеты в попытке понять, как они работают, я недавно наткнулась на нечто особенное. Это Retro Gadgets – игра, которая переносит магию создания электроники в цифровой мир.
Представьте себе: вы берёте виртуальные микросхемы, кнопки, дисплеи и соединяете их в устройство своей мечты. Может быть портативную игровую консоль? Или музыкальный синтезатор?
Что действительно зацепило меня — это возможность не просто собирать, но и программировать свои создания на Lua.
Если вы когда-нибудь мечтали стать изобретателем или просто любите возиться с ретро-электроникой, стоит заглянуть на их сайт. Я давно не испытывала такого творческого азарта.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#Tech
Рейтинги языков программирования: не верь одному источнику!
Думаешь, какой язык учить или куда двигаться дальше? Разные рейтинги дают совершенно разные картины популярности!
Что показывают основные рейтинги в 2025:
TIOBE:
- Python
- C++
- Java
- Delphi внезапно на 9 месте (серьезно?!)
PYPL (Google Trends):
- Python по-прежнему король
- Java обгоняет C++
- Delphi скромно сидит на 30-м месте
RedMonk (GitHub + StackOverflow):
- JavaScript впереди Python
- CSS попал в топ-7 (хотя это не язык программирования)
Вакансии в России:
- Python (10 526)
- JavaScript (6198)
- Java (4354)
Почему языки становятся популярными:
- Python = машинное обучение и AI
- Go & Rust = облачные технологии и микросервисы
- TypeScript = надежный фронтенд
- C++ = сырая производительность
🔗 Ссылка
🌐 Новости
🖥 База вопросов
Рейтинги языков программирования: не верь одному источнику!
Думаешь, какой язык учить или куда двигаться дальше? Разные рейтинги дают совершенно разные картины популярности!
Что показывают основные рейтинги в 2025:
TIOBE:
- Python
- C++
- Java
- Delphi внезапно на 9 месте (серьезно?!)
PYPL (Google Trends):
- Python по-прежнему король
- Java обгоняет C++
- Delphi скромно сидит на 30-м месте
RedMonk (GitHub + StackOverflow):
- JavaScript впереди Python
- CSS попал в топ-7 (хотя это не язык программирования)
Вакансии в России:
- Python (10 526)
- JavaScript (6198)
- Java (4354)
Почему языки становятся популярными:
- Python = машинное обучение и AI
- Go & Rust = облачные технологии и микросервисы
- TypeScript = надежный фронтенд
- C++ = сырая производительность
Не верь одному рейтингу! Сравнивай разные источники. Смотри на тренды в своей сфере. Некоторые всплески популярности (как с Delphi) — просто статистические аномалии или результат маркетинга.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#Frontend
🏗️ Шаблоны проектирования
Что такое шаблоны проектирования:
- Руководства по решению конкретных проблем
- Не являются законченными архитектурными решениями
- Описывают подход к решению проблемы, а не её поиск
1️⃣ Порождающие шаблоны
Описывают механизмы создания объектов:
Простая фабрика
- Генерирует экземпляр объекта без предоставления логики экземпляра
- Пример: создание дверей на фабрике
Фабричный метод
- Использует генерирующие методы для создания объектов
- Пример: создание интервьюеров на фабрике
Абстрактная фабрика
- Группирует индивидуальные фабрики без указания конкретных классов
- Пример: создание дверей и специалистов для их установки
Строитель
- Помогает при создании объектов с несколькими свойствами или большим количеством этапов
- Пример: создание бургеров с различными ингредиентами
- Позволяет добавлять новые опции без изменения структуры
Прототип
- Создаёт объекты путём клонирования существующего объекта
- Пример: клонирование объекта «Овца» для создания новых объектов
- Используется, когда создание объекта с нуля дороже клонирования
Одиночка
- Ограничивает создание класса единственным объектом
- Пример: создание единственного экземпляра класса «Президент»
- Антипаттерн, так как вносит глобальное состояние в приложение
2️⃣ Структурные шаблоны
Определяют способ взаимоотношений между сущностями:
Адаптер
- Помещает несовместимый объект в обёртку для совместимости с другим классом
- Пример: адаптер для совместимости дикой собаки с охотником
Мост
- Предпочитает компоновку наследованию
- Пример: реализация тем оформления веб-страниц
Компоновщик
- Позволяет клиентам обрабатывать объекты в едином порядке
- Пример: обработка сотрудников компании как единой группы, с расчетом зарплаты
Декоратор
- Позволяет динамически изменять поведение объекта
- Пример: добавление ингредиентов к кофе (молоко, взбитые сливки, ваниль)
Фасад
- Предоставляет упрощённый интерфейс для сложной подсистемы
- Пример: компьютерный фасад с функциями включения и выключения
Приспособленец
- Минимизирует использование памяти за счёт общего использования объектов
- Пример: кэширование типов чая в чайном магазине
Заместитель
- Представляет функциональность другого класса
- Пример: класс безопасности проверяет пароль и выполняет функции двери
3️⃣ Поведенческие шаблоны
Определяют алгоритмы и способы взаимодействия объектов:
Цепочка ответственности
- Создание цепочек объектов для обработки запросов
- Пример: банковский счёт и цепочка оплаты
Команда
- Инкапсуляция действий в объекты
- Пример: система заказов в ресторане и пульт управления
Итератор
- Доступ к элементам объекта без раскрытия базового представления
- Пример: перебор радиостанций
Посредник
- Добавление стороннего объекта для управления взаимодействием
- Пример: чат-комната как посредник между пользователями
Хранитель
- Фиксирует текущее состояние объекта для лёгкого восстановления
- Пример: сохранение состояния текстового редактора
Наблюдатель
- Определяет зависимость между объектами для уведомления об изменениях
- Пример: уведомления о новых вакансиях для соискателей
Посетитель
- Позволяет добавлять будущие операции без изменения объектов
- Пример: зоопарк с различными видами животных и типами посетителей
Стратегия
- Переключается между алгоритмами в зависимости от ситуации
- Пример: выбор между пузырьковой и быстрой сортировкой
Состояние
- Меняет поведение класса при изменении состояния
- Пример: инструмент «Кисть» в графическом редакторе
- Реализует машину состояний объектно-ориентированным способом
- Каждое состояние представлено производным классом
- Пример: текстовый редактор с различными начертаниями текста
Шаблонный метод
- Определяет каркас выполнения алгоритма
- Реализация этапов делегируется дочерним классам
- Пример: инструмент для сборки и тестирования с реализациями для Android и iOS
🔗 Ссылка
🌐 Новости
🖥 База вопросов
Что такое шаблоны проектирования:
- Руководства по решению конкретных проблем
- Не являются законченными архитектурными решениями
- Описывают подход к решению проблемы, а не её поиск
Описывают механизмы создания объектов:
Простая фабрика
- Генерирует экземпляр объекта без предоставления логики экземпляра
- Пример: создание дверей на фабрике
Фабричный метод
- Использует генерирующие методы для создания объектов
- Пример: создание интервьюеров на фабрике
Абстрактная фабрика
- Группирует индивидуальные фабрики без указания конкретных классов
- Пример: создание дверей и специалистов для их установки
Строитель
- Помогает при создании объектов с несколькими свойствами или большим количеством этапов
- Пример: создание бургеров с различными ингредиентами
- Позволяет добавлять новые опции без изменения структуры
Прототип
- Создаёт объекты путём клонирования существующего объекта
- Пример: клонирование объекта «Овца» для создания новых объектов
- Используется, когда создание объекта с нуля дороже клонирования
Одиночка
- Ограничивает создание класса единственным объектом
- Пример: создание единственного экземпляра класса «Президент»
- Антипаттерн, так как вносит глобальное состояние в приложение
Определяют способ взаимоотношений между сущностями:
Адаптер
- Помещает несовместимый объект в обёртку для совместимости с другим классом
- Пример: адаптер для совместимости дикой собаки с охотником
Мост
- Предпочитает компоновку наследованию
- Пример: реализация тем оформления веб-страниц
Компоновщик
- Позволяет клиентам обрабатывать объекты в едином порядке
- Пример: обработка сотрудников компании как единой группы, с расчетом зарплаты
Декоратор
- Позволяет динамически изменять поведение объекта
- Пример: добавление ингредиентов к кофе (молоко, взбитые сливки, ваниль)
Фасад
- Предоставляет упрощённый интерфейс для сложной подсистемы
- Пример: компьютерный фасад с функциями включения и выключения
Приспособленец
- Минимизирует использование памяти за счёт общего использования объектов
- Пример: кэширование типов чая в чайном магазине
Заместитель
- Представляет функциональность другого класса
- Пример: класс безопасности проверяет пароль и выполняет функции двери
Определяют алгоритмы и способы взаимодействия объектов:
Цепочка ответственности
- Создание цепочек объектов для обработки запросов
- Пример: банковский счёт и цепочка оплаты
Команда
- Инкапсуляция действий в объекты
- Пример: система заказов в ресторане и пульт управления
Итератор
- Доступ к элементам объекта без раскрытия базового представления
- Пример: перебор радиостанций
Посредник
- Добавление стороннего объекта для управления взаимодействием
- Пример: чат-комната как посредник между пользователями
Хранитель
- Фиксирует текущее состояние объекта для лёгкого восстановления
- Пример: сохранение состояния текстового редактора
Наблюдатель
- Определяет зависимость между объектами для уведомления об изменениях
- Пример: уведомления о новых вакансиях для соискателей
Посетитель
- Позволяет добавлять будущие операции без изменения объектов
- Пример: зоопарк с различными видами животных и типами посетителей
Стратегия
- Переключается между алгоритмами в зависимости от ситуации
- Пример: выбор между пузырьковой и быстрой сортировкой
Состояние
- Меняет поведение класса при изменении состояния
- Пример: инструмент «Кисть» в графическом редакторе
- Реализует машину состояний объектно-ориентированным способом
- Каждое состояние представлено производным классом
- Пример: текстовый редактор с различными начертаниями текста
Шаблонный метод
- Определяет каркас выполнения алгоритма
- Реализация этапов делегируется дочерним классам
- Пример: инструмент для сборки и тестирования с реализациями для Android и iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Frontend
🍪 Работа с куки: эволюция подходов
Работа с куки в JavaScript никогда не была удобной. Метод появился в 1996 году и почти не изменился. Разберем разницу между старым и новым подходом.
1️⃣ Классический способ (document.cookie)
Недостатки:
- Синхронные операции блокируют поток
- Нельзя узнать срок действия или домен куки
- Неудобно работать с несколькими куки
- Нельзя использовать в сервис-воркерах
2️⃣ Современный Cookie Store API
Преимущества:
- Асинхронный API не блокирует поток
- Доступ ко всей информации о куки
- Работает в сервис-воркерах
- Подписка на изменения куки
🔗 Ссылка
🌐 Новости
🖥 База вопросов
🍪 Работа с куки: эволюция подходов
Работа с куки в JavaScript никогда не была удобной. Метод появился в 1996 году и почти не изменился. Разберем разницу между старым и новым подходом.
Недостатки:
- Синхронные операции блокируют поток
- Нельзя узнать срок действия или домен куки
- Неудобно работать с несколькими куки
- Нельзя использовать в сервис-воркерах
Преимущества:
- Асинхронный API не блокирует поток
- Доступ ко всей информации о куки
- Работает в сервис-воркерах
- Подписка на изменения куки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Tech
Прогрессивное совершенствование долгое время считалось несовместимым с современными JavaScript-фреймворками. Однако развитие технологий изменило ландшафт веб-разработки. В статье разбираются проблемы, которые решает PE, архитектурные подходы, соответствие нормативным требованиям и новые инструменты, способные объединить надежность и мощные UI-возможности. Как современные фреймворки адаптируются к принципам PE, и есть ли среди них идеальные решения? Давайте разберемся👇
🔗 Ссылка
🌐 Новости
🖥 База вопросов
Прогрессивное совершенствование долгое время считалось несовместимым с современными JavaScript-фреймворками. Однако развитие технологий изменило ландшафт веб-разработки. В статье разбираются проблемы, которые решает PE, архитектурные подходы, соответствие нормативным требованиям и новые инструменты, способные объединить надежность и мощные UI-возможности. Как современные фреймворки адаптируются к принципам PE, и есть ли среди них идеальные решения? Давайте разберемся
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#WebDevelopment
💯 Прогрессивные веб-приложения (PWA)
Что такое PWA?
Простыми словами: Это сайты, которые вы можете добавить на главный экран своего устройства как обычное приложение. Они работают как нативные приложения — без адресной строки браузера, могут работать офлайн и отправлять уведомления.
По сути: PWA — это веб-приложения, использующие стратегию прогрессивного улучшения. Они проверяют возможности браузера и подстраиваются под них, чтобы обеспечить максимально качественный пользовательский опыт.
Технически: Сайты, удовлетворяющие определенным критериям:
- Работа через HTTPS
- Наличие манифеста (JSON-файл с описанием приложения)
- Обычно используют Service Worker (фоновый JavaScript-код)
✅ Главные преимущества
Универсальность
- Работают на любых устройствах с браузером
- Единая кодовая база для всех платформ
- Не нужно разрабатывать отдельные версии для iOS, Android или Windows
Поведение как у нативных приложений
- Запуск через иконку на главном экране
- Интеграция с операционной системой
- Доступ к аппаратным возможностям (камера, микрофон, Bluetooth)
- Push-уведомления
Удобство использования
- Работают без интернета
- Не требуют установки через магазины приложений
- Автоматически обновляются
- Занимают меньше места в памяти устройства
Свобода и открытость
- Независимость от правил магазинов приложений
- Индексация контента поисковыми системами
- Возможность делиться прямыми ссылками на конкретные разделы
- Стандартные возможности веба (копирование, перевод, печать)
Безопасность и доступность
- Выполнение в песочнице браузера
- Защищенное соединение HTTPS
- Понятная модель разрешений
- Низкий порог входа для разработчиков (HTML, CSS, JS)
❌ Ограничения
Разрозненность
- Нет единого крупного каталога PWA
- Пользователям сложнее находить такие приложения
Неравномерная поддержка
- Разные браузеры поддерживают разные функции
- Особенно заметно на iOS, где все браузеры используют движок WebKit
- Некоторые современные функции могут быть недоступны на старых устройствах
🔗 Ссылка
🌐 Новости
🖥 База вопросов
Что такое PWA?
Простыми словами: Это сайты, которые вы можете добавить на главный экран своего устройства как обычное приложение. Они работают как нативные приложения — без адресной строки браузера, могут работать офлайн и отправлять уведомления.
По сути: PWA — это веб-приложения, использующие стратегию прогрессивного улучшения. Они проверяют возможности браузера и подстраиваются под них, чтобы обеспечить максимально качественный пользовательский опыт.
Технически: Сайты, удовлетворяющие определенным критериям:
- Работа через HTTPS
- Наличие манифеста (JSON-файл с описанием приложения)
- Обычно используют Service Worker (фоновый JavaScript-код)
Термин создан в 2015 году инженерами Google, хотя сама концепция зародилась раньше. Интересно, что Стив Джобс еще в 2007 году, до выпуска первого iPhone, предлагал создавать приложения на веб-технологиях. Apple называет такие приложения "Home Screen Web Apps".
Универсальность
- Работают на любых устройствах с браузером
- Единая кодовая база для всех платформ
- Не нужно разрабатывать отдельные версии для iOS, Android или Windows
Поведение как у нативных приложений
- Запуск через иконку на главном экране
- Интеграция с операционной системой
- Доступ к аппаратным возможностям (камера, микрофон, Bluetooth)
- Push-уведомления
Удобство использования
- Работают без интернета
- Не требуют установки через магазины приложений
- Автоматически обновляются
- Занимают меньше места в памяти устройства
Свобода и открытость
- Независимость от правил магазинов приложений
- Индексация контента поисковыми системами
- Возможность делиться прямыми ссылками на конкретные разделы
- Стандартные возможности веба (копирование, перевод, печать)
Безопасность и доступность
- Выполнение в песочнице браузера
- Защищенное соединение HTTPS
- Понятная модель разрешений
- Низкий порог входа для разработчиков (HTML, CSS, JS)
Разрозненность
- Нет единого крупного каталога PWA
- Пользователям сложнее находить такие приложения
Неравномерная поддержка
- Разные браузеры поддерживают разные функции
- Особенно заметно на iOS, где все браузеры используют движок WebKit
- Некоторые современные функции могут быть недоступны на старых устройствах
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#Tech
🖥 В этой статье вы найдете пошаговое руководство по тому, как закрепить приложение React с использованием Docker.
1️⃣ Вы рассмотрите, как контейнеризация помогает упростить процесс разработки и развертывания, предоставляя изолированные среды, которые предотвращают конфликты зависимостей и конфигураций.
2️⃣ Вы узнаете, как настроить Docker для вашего проекта, создать Docker-образ с помощью Dockerfile, исключить лишние файлы с .dockerignore, а также использовать Docker Compose для работы с многоконтейнерными приложениями.
Также мы обсудим важные особенности Docker Desktop и WSL 2, которые значительно улучшат производительность работы с контейнерами.
🔗 Ссылка
🌐 Новости
🖥 База вопросов
Также мы обсудим важные особенности Docker Desktop и WSL 2, которые значительно улучшат производительность работы с контейнерами.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1