5 важных книг для разработчика
Ловите небольшую, но очень качественную подборку книг, которые помогут вам расширить и углубить свои знания в программировании:
📚Чистый код: создание, анализ и рефакторинг. Роберт Мартин
Эта книга объясняет, почему важно писать чистый код и как это сделать. Автор предоставляет практические советы и примеры, делая материал доступным и интересным.
📚Чистая архитектура. Искусство разработки программного обеспечения. Роберт Мартин
Автор разбирает проблемы, связанные с проектированием архитектуры программного обеспечения, предоставляя принципы для создания устойчивых, гибких и тестируемых приложений.
📚Экстремальное программирование. Разработка через тестирование. Кент Бек
Книга вводит в методологию разработки через тестирование (TDD) и делает ее понятной через простой язык и примеры.
📚Паттерны объектно-ориентированного проектирования. Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес
Описывает паттерны проектирования, помогая разработчикам решать задачи при проектировании программного обеспечения. Она также предоставляет примеры использования паттернов.
📚Алгоритмы. Построение и анализ. Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн
Эта книга является классическим источником знаний о алгоритмах. Она содержит глубокое объяснение алгоритмов с множеством примеров и иллюстраций.
Уверены, что многие из вас знакомы с этими авторами их и работами. Потому что это и есть «база».💪🏻 Но если все-таки пропустили, то горячо рекомендуем!
Ловите небольшую, но очень качественную подборку книг, которые помогут вам расширить и углубить свои знания в программировании:
📚Чистый код: создание, анализ и рефакторинг. Роберт Мартин
Эта книга объясняет, почему важно писать чистый код и как это сделать. Автор предоставляет практические советы и примеры, делая материал доступным и интересным.
📚Чистая архитектура. Искусство разработки программного обеспечения. Роберт Мартин
Автор разбирает проблемы, связанные с проектированием архитектуры программного обеспечения, предоставляя принципы для создания устойчивых, гибких и тестируемых приложений.
📚Экстремальное программирование. Разработка через тестирование. Кент Бек
Книга вводит в методологию разработки через тестирование (TDD) и делает ее понятной через простой язык и примеры.
📚Паттерны объектно-ориентированного проектирования. Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес
Описывает паттерны проектирования, помогая разработчикам решать задачи при проектировании программного обеспечения. Она также предоставляет примеры использования паттернов.
📚Алгоритмы. Построение и анализ. Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн
Эта книга является классическим источником знаний о алгоритмах. Она содержит глубокое объяснение алгоритмов с множеством примеров и иллюстраций.
Уверены, что многие из вас знакомы с этими авторами их и работами. Потому что это и есть «база».💪🏻 Но если все-таки пропустили, то горячо рекомендуем!
👍8🫡3
Куда идти продакт- и проджект-менеджерам для успешной карьеры в стартап или корпорацию 🕵️
Сегодня мы затронем очень важную тему для тек, кто работает продакт- и проджект-менеджером. И привести доводы куда лучше идти работать в стартап или корпорацию.
❓ Кто такие проджект и продакт менеджеры и чем они занимаются
Проджект-менеджер и продакт-менеджер — это две разные роли в управлении проектами и продуктами.
Разница между этими ролями заключается в том, что проджект-менеджер управляет временными проектами с конкретными задачами и сроками, в то время как продакт-менеджер управляет продуктом или услугой на протяжении всего его жизненного цикла, определяя его стратегию и развитие.
В некоторых компаниях названия и обязанности могут пересекаться или размываться, но в большинстве случаев эти две роли имеют разные функции и задачи в организации.
🏢 Особенности корпорации
➕ В корпорациях четко определены обязанности и структура. Все делится на узкие задачи и отделы. Это упрощает понимание ролей, но может замедлить процессы.
➕ Корпорации могут участвовать в глобальных проектах с большими бюджетами, чего стартапы не могут себе позволить.
➕ Корпорации приветствуют новичков без опыта, предоставляя обучение и допуская небольшие ошибки.
➕ Корпорации имеют формальные требования, такие как дресс-код и лояльность к компании.
➕ Предоставляются корпоративные бонусы.
➖ Решения принимаются медленно из-за бюрократии и ожидания освобождения ресурсов. Много бумажной работы, возможность имитации активности.
➖ Сложно оценить ситуацию, так как много подразделений. Проджект не всегда видит ход выполнения задачи. Возможна потеря нюансов.
➖ Личные достижения растворяются в команде. Вклад каждого члена не всегда виден, как при успехе, так и при провале.
🏠 Особенности стартапов
➕ Решения принимаются быстро, без длительных согласований, но быстрые решения могут иметь негативные последствия, включая увольнение.
➕ Виден вклад каждого сотрудника из-за небольшой команды, что способствует поощрениям за усердный труд.
➕ Есть возможность быстрого карьерного роста, особенно в быстроразвивающихся стартапах, где ценят универсальность.
➖ В стартапах ожидается разносторонность. Надо готовиться к различным задачам, даже непрофильным, так как маленькая команда делает всё.
➖ В стартапах сложно начать без опыта. Необходимо сразу решать прикладные задачи и достигать результатов в ограниченные сроки.
❓ Как менеджеру выстроить карьерный путь
1. Можно начать в корпорации. Вы сможете развиваться линейно и стабильно, меняя при необходимости.
2. Можно начать работать в стартапе, но вам нужно подготовиться к интенсивной работе и быстрому обучению.
3. Можете получить опыт и в корпорации, и в стартапе, начиная с корпорации, где можно учиться, и затем перейти в стартап для дополнительных знаний.
Что думаете вы? Поделитесь своим мнением в комментариях 👇
Сегодня мы затронем очень важную тему для тек, кто работает продакт- и проджект-менеджером. И привести доводы куда лучше идти работать в стартап или корпорацию.
❓ Кто такие проджект и продакт менеджеры и чем они занимаются
Проджект-менеджер и продакт-менеджер — это две разные роли в управлении проектами и продуктами.
Разница между этими ролями заключается в том, что проджект-менеджер управляет временными проектами с конкретными задачами и сроками, в то время как продакт-менеджер управляет продуктом или услугой на протяжении всего его жизненного цикла, определяя его стратегию и развитие.
В некоторых компаниях названия и обязанности могут пересекаться или размываться, но в большинстве случаев эти две роли имеют разные функции и задачи в организации.
🏢 Особенности корпорации
➕ В корпорациях четко определены обязанности и структура. Все делится на узкие задачи и отделы. Это упрощает понимание ролей, но может замедлить процессы.
➕ Корпорации могут участвовать в глобальных проектах с большими бюджетами, чего стартапы не могут себе позволить.
➕ Корпорации приветствуют новичков без опыта, предоставляя обучение и допуская небольшие ошибки.
➕ Корпорации имеют формальные требования, такие как дресс-код и лояльность к компании.
➕ Предоставляются корпоративные бонусы.
➖ Решения принимаются медленно из-за бюрократии и ожидания освобождения ресурсов. Много бумажной работы, возможность имитации активности.
➖ Сложно оценить ситуацию, так как много подразделений. Проджект не всегда видит ход выполнения задачи. Возможна потеря нюансов.
➖ Личные достижения растворяются в команде. Вклад каждого члена не всегда виден, как при успехе, так и при провале.
🏠 Особенности стартапов
➕ Решения принимаются быстро, без длительных согласований, но быстрые решения могут иметь негативные последствия, включая увольнение.
➕ Виден вклад каждого сотрудника из-за небольшой команды, что способствует поощрениям за усердный труд.
➕ Есть возможность быстрого карьерного роста, особенно в быстроразвивающихся стартапах, где ценят универсальность.
➖ В стартапах ожидается разносторонность. Надо готовиться к различным задачам, даже непрофильным, так как маленькая команда делает всё.
➖ В стартапах сложно начать без опыта. Необходимо сразу решать прикладные задачи и достигать результатов в ограниченные сроки.
❓ Как менеджеру выстроить карьерный путь
1. Можно начать в корпорации. Вы сможете развиваться линейно и стабильно, меняя при необходимости.
2. Можно начать работать в стартапе, но вам нужно подготовиться к интенсивной работе и быстрому обучению.
3. Можете получить опыт и в корпорации, и в стартапе, начиная с корпорации, где можно учиться, и затем перейти в стартап для дополнительных знаний.
Что думаете вы? Поделитесь своим мнением в комментариях 👇
👍6🤔2
URL, URI и URN – в чем разница?
Сегодня быстро вспомним о том, чем отличаются аббревиатуры URL, URI и URN. На самом деле это очень просто:
⭐️ URL
URL - это сокращение от "Унифицированный Локатор Ресурса" и это основной элемент протокола HTTP. Он просто адрес уникального ресурса в интернете, будь то веб-сайт, файл или что-то еще. Его можно использовать и с другими протоколами, такими как FTP и JDBC.
⭐️ URN
URN - это сокращение от "Унифицированное Имя Ресурса". Он использует схему urn. Важно знать, что URN не может помочь найти местоположение ресурса. Проще говоря, он присваивает ресурсу уникальное имя. Например, это может быть как название книги или другого объекта.
⭐️ URI
Это сокращение от "Унифицированный Идентификатор Ресурса". Он помогает определить ресурс в интернете, будь то какой-то файл или веб-страница.
URL и URN - это как бы разновидности URI. URL помогает найти ресурс, а URN - дает ему имя.
Сегодня быстро вспомним о том, чем отличаются аббревиатуры URL, URI и URN. На самом деле это очень просто:
⭐️ URL
URL - это сокращение от "Унифицированный Локатор Ресурса" и это основной элемент протокола HTTP. Он просто адрес уникального ресурса в интернете, будь то веб-сайт, файл или что-то еще. Его можно использовать и с другими протоколами, такими как FTP и JDBC.
⭐️ URN
URN - это сокращение от "Унифицированное Имя Ресурса". Он использует схему urn. Важно знать, что URN не может помочь найти местоположение ресурса. Проще говоря, он присваивает ресурсу уникальное имя. Например, это может быть как название книги или другого объекта.
⭐️ URI
Это сокращение от "Унифицированный Идентификатор Ресурса". Он помогает определить ресурс в интернете, будь то какой-то файл или веб-страница.
URL и URN - это как бы разновидности URI. URL помогает найти ресурс, а URN - дает ему имя.
🔥8👍3🫡3❤1
Новый формат челленджей от команды Mad Security 🥷
Ребята из отдела кибербезопастности Mad Devs подготовили для наших подписчиков несколько интересных челленджей, в которых вам предстоит находить разного рода уязвимости или флаги запрятанные в коде. Мы планируем публиковать такие челленджи по средам пару раз в месяц и ждем вашей активности. Ну что, поехали?
🥷 JS/Express challenge🥷
Найдите уязвимость, опишите в чем она заключается и почему возникает. Фаил с кодом будет в комментариях под этим постом.
Важное условие: скрывайте свои ответы такимобразом , чтобы у других участников была возможность решить челлендж без спойлеров. Будем ждать ваших решений в комментариях.
Ребята из отдела кибербезопастности Mad Devs подготовили для наших подписчиков несколько интересных челленджей, в которых вам предстоит находить разного рода уязвимости или флаги запрятанные в коде. Мы планируем публиковать такие челленджи по средам пару раз в месяц и ждем вашей активности. Ну что, поехали?
🥷 JS/Express challenge🥷
Найдите уязвимость, опишите в чем она заключается и почему возникает. Фаил с кодом будет в комментариях под этим постом.
Важное условие: скрывайте свои ответы таким
👍6🔥2🤯2
Mad Devs Channel
Новый формат челленджей от команды Mad Security 🥷 Ребята из отдела кибербезопастности Mad Devs подготовили для наших подписчиков несколько интересных челленджей, в которых вам предстоит находить разного рода уязвимости или флаги запрятанные в коде. Мы планируем…
Видим, челлендж вас заинтересовал 🥷
Проверка буквально звучит так: если урл запроса начинается с /api, тогда проверяем токен и только если токен верный, пропускаем запрос дальше, после чего этот запрос уже упадет в код лежащий в api.js. НО, чтобы ваш запрос в итоге упал в api.js, необходимо соблюсти правило роутинга описанного на строчке 17.
Однако, пока спрятанную в коде уязвимость никто не нашел. Дадим вам подсказку: разгадка кроется в документации (параграф Application Settings): https://expressjs.com/en/api.html#app.settings.table
Проверка буквально звучит так: если урл запроса начинается с /api, тогда проверяем токен и только если токен верный, пропускаем запрос дальше, после чего этот запрос уже упадет в код лежащий в api.js. НО, чтобы ваш запрос в итоге упал в api.js, необходимо соблюсти правило роутинга описанного на строчке 17.
Однако, пока спрятанную в коде уязвимость никто не нашел. Дадим вам подсказку: разгадка кроется в документации (параграф Application Settings): https://expressjs.com/en/api.html#app.settings.table
Expressjs
Express 5.x - API Reference
Access the API reference for Express.js detailing all modules, methods, and properties for building web applications with this version.
🤔4🔥1
5 новых функций Pandas 2.0
Pandas 2.0 - новая версия библиотеки Python для обработки структурированных данных, названной по "панельным данным". Панельными данными называют информацию, полученную в результате исследований и структурированную в виде таблиц.
Что нового в Pandas 2.0?
📌Производительность, скорость и эффективность использования памяти
В этой версии 2.0 произошло важное изменение - внедрение серверной части Apache Arrow для обработки данных в pandas. Apache Arrow - это стандартизированный формат данных, хранящихся в памяти, который имеет библиотеки для нескольких языков программирования, включая C, C++, R, Python и другие. Для Python доступен PyArrow, который быстр и эффективен, так как основан на реализации Arrow на C++.
📌Типы данных со стрелками и числовые индексы
Внедрена поддержка типов данных "со стрелками" (Arrow types), что приводит к ряду улучшений, особенно в операциях, связанных со строковыми данными, благодаря эффективной реализации типа данных string в PyArrow. Фактически, Arrow поддерживает больше типов данных и предоставляет лучшую поддержку по сравнению с NumPy. Эти типы данных включают даты и время, длительность, двоичные числа, десятичные дроби, списки и карты. Также расширена поддержка числовых индексов. Это означает, что индексы могут быть более разнообразными числовыми типами данных, а не ограничиваться только int64, uint64 и float64. Таким образом, можно использовать, например, 32-разрядные числовые индексы.
📌Упрощенная обработка пропущенных значений
Появилась возможность использовать тип данных 'numpy_nullable', который позволяет учитывать пропущенные значения без изменения типа данных. Это означает, что вы можете сохранить исходные типы данных, не беспокоясь о потере информации при обработке отсутствующих значений.
📌Оптимизация копирования при записи
Добавили новый механизм отложенного копирования, который позволяет откладывать операции копирования данных внутри фреймов данных и объектов серии до тех пор, пока они не будут изменены.
Это означает, что определенные методы будут возвращать представления данных, а не фактические копии, когда функция "копирования при записи" (copy-on-write) активирована. Это улучшает эффективность использования памяти, так как минимизируется ненужное дублирование данных.
📌Дополнительные зависимости
Предоставляется гибкость в установке дополнительных зависимостей при использовании инструмента pip. Это позволяет адаптировать установку к конкретным требованиям проекта, избегая лишних зависимостей и экономя дисковое пространство.
Этот подход также снижает вероятность возникновения проблем совместимости и конфликтов с другими пакетами, что делает процесс разработки более гладким и уменьшает количество "головных болей с зависимостями".
Pandas 2.0 - новая версия библиотеки Python для обработки структурированных данных, названной по "панельным данным". Панельными данными называют информацию, полученную в результате исследований и структурированную в виде таблиц.
Что нового в Pandas 2.0?
📌Производительность, скорость и эффективность использования памяти
В этой версии 2.0 произошло важное изменение - внедрение серверной части Apache Arrow для обработки данных в pandas. Apache Arrow - это стандартизированный формат данных, хранящихся в памяти, который имеет библиотеки для нескольких языков программирования, включая C, C++, R, Python и другие. Для Python доступен PyArrow, который быстр и эффективен, так как основан на реализации Arrow на C++.
📌Типы данных со стрелками и числовые индексы
Внедрена поддержка типов данных "со стрелками" (Arrow types), что приводит к ряду улучшений, особенно в операциях, связанных со строковыми данными, благодаря эффективной реализации типа данных string в PyArrow. Фактически, Arrow поддерживает больше типов данных и предоставляет лучшую поддержку по сравнению с NumPy. Эти типы данных включают даты и время, длительность, двоичные числа, десятичные дроби, списки и карты. Также расширена поддержка числовых индексов. Это означает, что индексы могут быть более разнообразными числовыми типами данных, а не ограничиваться только int64, uint64 и float64. Таким образом, можно использовать, например, 32-разрядные числовые индексы.
📌Упрощенная обработка пропущенных значений
Появилась возможность использовать тип данных 'numpy_nullable', который позволяет учитывать пропущенные значения без изменения типа данных. Это означает, что вы можете сохранить исходные типы данных, не беспокоясь о потере информации при обработке отсутствующих значений.
📌Оптимизация копирования при записи
Добавили новый механизм отложенного копирования, который позволяет откладывать операции копирования данных внутри фреймов данных и объектов серии до тех пор, пока они не будут изменены.
Это означает, что определенные методы будут возвращать представления данных, а не фактические копии, когда функция "копирования при записи" (copy-on-write) активирована. Это улучшает эффективность использования памяти, так как минимизируется ненужное дублирование данных.
📌Дополнительные зависимости
Предоставляется гибкость в установке дополнительных зависимостей при использовании инструмента pip. Это позволяет адаптировать установку к конкретным требованиям проекта, избегая лишних зависимостей и экономя дисковое пространство.
Этот подход также снижает вероятность возникновения проблем совместимости и конфликтов с другими пакетами, что делает процесс разработки более гладким и уменьшает количество "головных болей с зависимостями".
👍4
Как работает OAuth 2.0 🖥️
В этом посте разберем описание потоков OAuth 2.0. Понимание различных способов авторизации и доступа к данным в ваших приложениях.
📍 Поток с использованием кода авторизации (Authorization Code Flow). Самый часто используемый поток в OAuth. После аутентификации пользователя, клиент получает код авторизации и обменивает его на маркер доступа и маркер обновления.
📍 Поток с использованием учетных данных клиента (Client Credentials Flow). Разработан для одностраничных приложений. Маркер доступа возвращается напрямую клиенту без промежуточного кода авторизации.
📍 Поток с неявным использованием кода (Implicit Code Flow). Разработан для одностраничных приложений. Маркер доступа возвращается напрямую клиенту без промежуточного кода авторизации.
📍 Поток с предоставлением учетных данных владельца ресурса (Resource Owner Password Grant Flow). Позволяет пользователям предоставить свое имя пользователя и пароль напрямую клиенту, который затем обменивает их на маркер доступа.
Какой из них выберете для своего следующего проекта? 👇
В этом посте разберем описание потоков OAuth 2.0. Понимание различных способов авторизации и доступа к данным в ваших приложениях.
📍 Поток с использованием кода авторизации (Authorization Code Flow). Самый часто используемый поток в OAuth. После аутентификации пользователя, клиент получает код авторизации и обменивает его на маркер доступа и маркер обновления.
📍 Поток с использованием учетных данных клиента (Client Credentials Flow). Разработан для одностраничных приложений. Маркер доступа возвращается напрямую клиенту без промежуточного кода авторизации.
📍 Поток с неявным использованием кода (Implicit Code Flow). Разработан для одностраничных приложений. Маркер доступа возвращается напрямую клиенту без промежуточного кода авторизации.
📍 Поток с предоставлением учетных данных владельца ресурса (Resource Owner Password Grant Flow). Позволяет пользователям предоставить свое имя пользователя и пароль напрямую клиенту, который затем обменивает их на маркер доступа.
Какой из них выберете для своего следующего проекта? 👇
👍3🔥1
🥷Nginx Config Misconfiguration challenge🥷
Продолжаем серию челленджей от нашего Mad Security отдела. И сегодня смотрим конфиг Nginx.
В данном конфиге серьезно налажали. Найдите ошибку и продемонстрируйте worst-case-scenario эксплойт.
Свои ответы маркируйтеспойлером , чтобы у других участников была возможность решить челлендж без спойлеров. Будем ждать ваших решений в комментариях.
Продолжаем серию челленджей от нашего Mad Security отдела. И сегодня смотрим конфиг Nginx.
В данном конфиге серьезно налажали. Найдите ошибку и продемонстрируйте worst-case-scenario эксплойт.
Свои ответы маркируйте
🔥4🤔3
Mad Devs Channel
🥷Nginx Config Misconfiguration challenge🥷 Продолжаем серию челленджей от нашего Mad Security отдела. И сегодня смотрим конфиг Nginx. В данном конфиге серьезно налажали. Найдите ошибку и продемонстрируйте worst-case-scenario эксплойт. Свои ответы маркируйте…
И у нас есть чемпион! Николай Кирнос разгадал загадку и правильный ответ: если ввести http://localhost/static../main.py, то можно выйти за пределы директории static. Давайте накидаем 🔥 Николаю!
🥷 До встречи в новом челлендже через неделю 🥷
🥷 До встречи в новом челлендже через неделю 🥷
🔥27
🔥 Горячие вакансии в Mad Devs или ML-инженеры, отзовитесь!
🧑💻 Machine Learning Engineer Middle. Откликнуться на вакансию.
Мы в поиске middle ML-инженера для одного из наших b2b-проектов — активно развивающегося продукта с широкой клиентской базой, штаб-квартира которого находится в Вашингтоне, округ Колумбия. В большой команде этого проекта уже работают профессиональные дизайнеры, продакт менеджеры, DevOps-инженеры и разработчики Mad Devs.
🧑💻 Machine Learning Engineer Junior. Откликнуться на вакансию.
Junior ML-инженера мы ждем в нашей команде, разрабатывающей маркетплейс сервис для рынка Юго-Восточной Азии. Цель данного проекта — создание и развитие сервиса объявлений для азиатского рынка, позволяющего пользователям легко и удобно размещать объявления о продаже товаров и услуг, адаптированных к местным потребностям и динамике рынка.
🧑💻 Machine Learning Engineer Intern. Откликнуться на вакансию.
А если вы только начинаете ваш путь в ML-инженерии, то мы ждем вас на стажировке в нашем собственном продукте - Enji.ai. Enji - это продукт, который обеспечивает прозрачную работу инженерных команд (и не только). На данный момент команда машинного обучения занимается построением систем - цифровых двойников, которые позволяют оптимально управлять распределенными командами разработчиков, анализировать состояние каждого отдельного члена команды и всей команды целиком.
🔥Эти и еще ряд проектов Mad Devs ждут инженеров с математическим бэкграундом, любящих работать с данными и постоянно развиваться.🔥
Но это еще не все. В Mad Devs открыто еще несколько вакансий в других направлениях. Мы в поиске:
- JavaScript Lead
- TechLead
- DevOps engineer
- Python Developer Senior
- Junior SEO Specialist
За актуальными вакансиями вы можете следить на нашем сайте, а если подходящей вашему стеку позиции пока нет - смело добавляйте ваше резюме в нашу базу через наш сайт, чтобы мы могли связаться с вами при появлении подходящей вакансии.
🧑💻 Machine Learning Engineer Middle. Откликнуться на вакансию.
Мы в поиске middle ML-инженера для одного из наших b2b-проектов — активно развивающегося продукта с широкой клиентской базой, штаб-квартира которого находится в Вашингтоне, округ Колумбия. В большой команде этого проекта уже работают профессиональные дизайнеры, продакт менеджеры, DevOps-инженеры и разработчики Mad Devs.
🧑💻 Machine Learning Engineer Junior. Откликнуться на вакансию.
Junior ML-инженера мы ждем в нашей команде, разрабатывающей маркетплейс сервис для рынка Юго-Восточной Азии. Цель данного проекта — создание и развитие сервиса объявлений для азиатского рынка, позволяющего пользователям легко и удобно размещать объявления о продаже товаров и услуг, адаптированных к местным потребностям и динамике рынка.
🧑💻 Machine Learning Engineer Intern. Откликнуться на вакансию.
А если вы только начинаете ваш путь в ML-инженерии, то мы ждем вас на стажировке в нашем собственном продукте - Enji.ai. Enji - это продукт, который обеспечивает прозрачную работу инженерных команд (и не только). На данный момент команда машинного обучения занимается построением систем - цифровых двойников, которые позволяют оптимально управлять распределенными командами разработчиков, анализировать состояние каждого отдельного члена команды и всей команды целиком.
🔥Эти и еще ряд проектов Mad Devs ждут инженеров с математическим бэкграундом, любящих работать с данными и постоянно развиваться.🔥
Но это еще не все. В Mad Devs открыто еще несколько вакансий в других направлениях. Мы в поиске:
- JavaScript Lead
- TechLead
- DevOps engineer
- Python Developer Senior
- Junior SEO Specialist
За актуальными вакансиями вы можете следить на нашем сайте, а если подходящей вашему стеку позиции пока нет - смело добавляйте ваше резюме в нашу базу через наш сайт, чтобы мы могли связаться с вами при появлении подходящей вакансии.
🔥6❤2
Уже не первый год мы в Mad Devs разрабатываем собственный продукт Enji, который обеспечивает прозрачную работу инженерных команд и помогает им улучшать свою производительность и эффективность. Миссия Enji — формирование у разработчиков и менеджеров инженерной культуры.
Команды, которые придерживаются инженерного подхода, обеспечивают свои проекты лучшим качеством кода, что по итогу приводит к меньшему количеству сорванных дедлайнов и перерасхода бюджета. Руководители — принимающие решения на основе фактов, данных и метрик меньше подвержены предвзятости и микроменеджменту.
Что умеет Enji?
Сейчас полноценно функционирует набор фичей, позволяющих командам лучше синхронизироваться друг с другом; а также базовый набор инструментов для работы с людьми — инструменты для сбора и анализа 360-фидбека, трекшена 1-1, работы со скилл-матрицами; полноценная аналитика ворклогов, которая позволяет командам выстраивать свое финансовое планирование и прогнозировать нагрузки; мониторинг достижения бизнес целей и еще несколько полезных фич.
Команде Enji предстоит многолетний марафон создания фичей расширяющих имплементацию инженерных практик в командах. Сейчас в разработке внедрение и работа с кодовыми и agile-метрики, аналитика техдолга, предикторы выгораний и много чего еще.
🎯 В Mad Devs мы полностью работаем под управлением Enji, а так же интегрируем в сервис наших клиентов, давая им возможность анализировали нашу работу. Недавно еще две компании — PricerBishkek и TimelySoft, доверились нам и тоже внедряют у себя Enji, чему мы безмерно рады.
Enji уже сейчас может существенно помочь компаниями, похожим на Mad Devs - которые занимаются разработкой софта по модели Time&Material (то есть продают часы инженеров), а также быть полезен большим Enterprise-компаниям, имеющим команды, работающие по Time&Material на них (то есть тем, кто покупает часы инженеров у других компаний).
Сейчас мы готовы предоставлять Enji подобным компаниям на тестовый период абсолютно бесплатно.
Мы будем рады помочь командам погрузиться в продукт, разобраться с фичами, понять смысл и начать использовать его в своей повседневной работе. Отметим, что Enji разворачивается внутри — на вашем co-location центре, клауде, сервере в вашем дата-центре, в общем, в любом месте так, чтобы данные, которые собирает и анализирует Enji были у вас (а не у нас).
📌 Если вам интересно узнать о продукте и его возможностях больше, заходите на сайт enji.ai. А если хотите познакомиться с продуктом поближе — жмите кнопку “Book a Demo” и мы вам в подробностях расскажем и покажем.
Команды, которые придерживаются инженерного подхода, обеспечивают свои проекты лучшим качеством кода, что по итогу приводит к меньшему количеству сорванных дедлайнов и перерасхода бюджета. Руководители — принимающие решения на основе фактов, данных и метрик меньше подвержены предвзятости и микроменеджменту.
Что умеет Enji?
Сейчас полноценно функционирует набор фичей, позволяющих командам лучше синхронизироваться друг с другом; а также базовый набор инструментов для работы с людьми — инструменты для сбора и анализа 360-фидбека, трекшена 1-1, работы со скилл-матрицами; полноценная аналитика ворклогов, которая позволяет командам выстраивать свое финансовое планирование и прогнозировать нагрузки; мониторинг достижения бизнес целей и еще несколько полезных фич.
Команде Enji предстоит многолетний марафон создания фичей расширяющих имплементацию инженерных практик в командах. Сейчас в разработке внедрение и работа с кодовыми и agile-метрики, аналитика техдолга, предикторы выгораний и много чего еще.
Enji уже сейчас может существенно помочь компаниями, похожим на Mad Devs - которые занимаются разработкой софта по модели Time&Material (то есть продают часы инженеров), а также быть полезен большим Enterprise-компаниям, имеющим команды, работающие по Time&Material на них (то есть тем, кто покупает часы инженеров у других компаний).
Сейчас мы готовы предоставлять Enji подобным компаниям на тестовый период абсолютно бесплатно.
Мы будем рады помочь командам погрузиться в продукт, разобраться с фичами, понять смысл и начать использовать его в своей повседневной работе. Отметим, что Enji разворачивается внутри — на вашем co-location центре, клауде, сервере в вашем дата-центре, в общем, в любом месте так, чтобы данные, которые собирает и анализирует Enji были у вас (а не у нас).
📌 Если вам интересно узнать о продукте и его возможностях больше, заходите на сайт enji.ai. А если хотите познакомиться с продуктом поближе — жмите кнопку “Book a Demo” и мы вам в подробностях расскажем и покажем.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9
Псс, не хочешь еще секьюрити челленджей от нашего Cybersecurity отдела?
🥷Сегодня у нас новый Python challenge🥷
Найдите уязвимость, опишите в чем она заключается и попробуйте описать эксплуатацию пошагово.
Свои ответы маркируйтеспойлером , чтобы у других участников была возможность решить челлендж без спойлеров. Будем ждать ваших решений в комментариях.
🥷Сегодня у нас новый Python challenge🥷
Найдите уязвимость, опишите в чем она заключается и попробуйте описать эксплуатацию пошагово.
Свои ответы маркируйте
🔥7❤1👨💻1
Синтаксический сахар: опаснее, чем кажется 💻
Синтаксический сахар — это способ сделать код более "читаемым". Данный прием был предложен еще в 1964 году и считается способствующим лучшему пониманию кода. Однако есть и оппоненты, полагающие, что язык программирования должен быть формальным и не нуждается в приукрашивании.
Например, в тернарном операторе условия true и false разделены двоеточием, что делает код более компактным.
🔺 Стандартная запись:
if (y < 5)
{
x = 5;
}
else x = y;
🔺 Запись с использованием синтаксического сахара:
x = ? (y < 5) 5 : y;
Вы, вероятно, уже используете синтаксический сахар, даже не задумываясь. Например, оператор switch является более удобной записью для нескольких if-else.
Использование синтаксического сахара в коде — это хорошо, но не всегда. Есть пара важных моментов, о которых стоит помнить:
⚫ "Дырявые" абстракции. Означает, что разработчик полагается на них, не имея возможности проверить, не вызывают ли они ошибок. Это может быть источником сложноуловимых ошибок.
⚫ Читаемость и уважение к другим. Хотя синтаксический сахар сокращает код, он может быть менее понятным для других разработчиков. Важно уважать время и усилия своих коллег, которые могут столкнуться с вашим кодом.
Синтаксический сахар улучшает читаемость и компактность кода, но использовать его следует с умом. Важно находить баланс между краткостью и ясностью кода.
Синтаксический сахар — это способ сделать код более "читаемым". Данный прием был предложен еще в 1964 году и считается способствующим лучшему пониманию кода. Однако есть и оппоненты, полагающие, что язык программирования должен быть формальным и не нуждается в приукрашивании.
Например, в тернарном операторе условия true и false разделены двоеточием, что делает код более компактным.
🔺 Стандартная запись:
if (y < 5)
{
x = 5;
}
else x = y;
🔺 Запись с использованием синтаксического сахара:
x = ? (y < 5) 5 : y;
Вы, вероятно, уже используете синтаксический сахар, даже не задумываясь. Например, оператор switch является более удобной записью для нескольких if-else.
Использование синтаксического сахара в коде — это хорошо, но не всегда. Есть пара важных моментов, о которых стоит помнить:
⚫ "Дырявые" абстракции. Означает, что разработчик полагается на них, не имея возможности проверить, не вызывают ли они ошибок. Это может быть источником сложноуловимых ошибок.
⚫ Читаемость и уважение к другим. Хотя синтаксический сахар сокращает код, он может быть менее понятным для других разработчиков. Важно уважать время и усилия своих коллег, которые могут столкнуться с вашим кодом.
Синтаксический сахар улучшает читаемость и компактность кода, но использовать его следует с умом. Важно находить баланс между краткостью и ясностью кода.
👍11
Как обеспечить безопасность телеграм-бота 🤖
Сегодня рассмотрим, как обеспечить безопасность вашего Telegram-бота на Python, чтобы предотвратить спам, фишинг и DDoS-атаки.
❓ Зачем обеспечивать безопасность ботов
- Боты обрабатывают чувствительные данные, поэтому утечка данных может нанести серьезный ущерб как вашей репутации, так и финансовому положению.
- Учтите законы и нормативные акты вашего региона, а также цели вашего бота, чтобы не нарушить правила о защите данных.
- Пользователи ожидают, что обработка и хранение их данных будет обеспечивать безопасность и конфиденциальность.
- Боты подвержены риску атак, таких как спам, фишинг и DDoS-атаки. Необеспеченный надежной защитой бот может стать уязвимой целью для злоумышленников.
❗ Обеспечение безопасности — это непрерывная практика. Угрозы постоянно меняются, и разработчики должны обновлять свой код, чтобы бороться с новыми уязвимостями.
❓ Какие существуют четыре основные угрозы безопасности
- Аутентификация и авторизация. Важно обеспечить надежную аутентификацию и авторизацию, чтобы предотвратить несанкционированный доступ.
- Защита от спама и фишинга. Спам и фишинг могут раздражать пользователей и создавать риски. Необходимы меры для борьбы с ними.
- Защита от вредоносных команд и скриптов. Боты могут стать инструментами для вредоносных действий. Важно контролировать их функциональность.
- Хранение конфиденциальных данных. Секреты бота, такие как API-токены, должны быть надежно защищены от утечек и несанкционированного доступа.
❗ Знание этих угроз — это первый шаг к их предотвращению.
❓ Какие есть меры по обеспечению безопасности
- Используйте уникальный токен для бота и защищайте его.
- Ограничьте доступ по IP для дополнительной защиты.
- Валидируйте и фильтруйте входящие данные, избегая SQL-инъекций.
- Реализуйте ролевую систему доступа и ограничьте опасные команды.
- Логируйте события и мониторьте аномалии для быстрого реагирования.
- Шифруйте конфиденциальные данные и используйте HTTPS при взаимодействии с сервером Telegram.
❗ Настоятельно рекомендуется периодически аудитировать безопасность вашего бота и реагировать на новые угрозы.
❓ Какие инструменты для тестирования безопасности телеграм-ботов:
- SAST (Static Application Security Testing). Анализ кода бота на этапе разработки для выявления потенциальных уязвимостей.
- DAST (Dynamic Application Security Testing). Проверка в реальном времени путем отправки запросов и анализа поведения бота.
- Pen Testing (Penetration Testing). Активные атаки на бота для обнаружения уязвимостей, проводимые специалистами по безопасности.
- Проверка на соответствие стандартам безопасности. Соблюдение стандартов безопасности, таких как рекомендации OWASP, для обеспечения надежности бота.
При разработке телеграм-ботов помните, что обеспечение безопасности — ваш главный приоритет.
Сегодня рассмотрим, как обеспечить безопасность вашего Telegram-бота на Python, чтобы предотвратить спам, фишинг и DDoS-атаки.
❓ Зачем обеспечивать безопасность ботов
- Боты обрабатывают чувствительные данные, поэтому утечка данных может нанести серьезный ущерб как вашей репутации, так и финансовому положению.
- Учтите законы и нормативные акты вашего региона, а также цели вашего бота, чтобы не нарушить правила о защите данных.
- Пользователи ожидают, что обработка и хранение их данных будет обеспечивать безопасность и конфиденциальность.
- Боты подвержены риску атак, таких как спам, фишинг и DDoS-атаки. Необеспеченный надежной защитой бот может стать уязвимой целью для злоумышленников.
❗ Обеспечение безопасности — это непрерывная практика. Угрозы постоянно меняются, и разработчики должны обновлять свой код, чтобы бороться с новыми уязвимостями.
❓ Какие существуют четыре основные угрозы безопасности
- Аутентификация и авторизация. Важно обеспечить надежную аутентификацию и авторизацию, чтобы предотвратить несанкционированный доступ.
- Защита от спама и фишинга. Спам и фишинг могут раздражать пользователей и создавать риски. Необходимы меры для борьбы с ними.
- Защита от вредоносных команд и скриптов. Боты могут стать инструментами для вредоносных действий. Важно контролировать их функциональность.
- Хранение конфиденциальных данных. Секреты бота, такие как API-токены, должны быть надежно защищены от утечек и несанкционированного доступа.
❗ Знание этих угроз — это первый шаг к их предотвращению.
❓ Какие есть меры по обеспечению безопасности
- Используйте уникальный токен для бота и защищайте его.
- Ограничьте доступ по IP для дополнительной защиты.
- Валидируйте и фильтруйте входящие данные, избегая SQL-инъекций.
- Реализуйте ролевую систему доступа и ограничьте опасные команды.
- Логируйте события и мониторьте аномалии для быстрого реагирования.
- Шифруйте конфиденциальные данные и используйте HTTPS при взаимодействии с сервером Telegram.
❗ Настоятельно рекомендуется периодически аудитировать безопасность вашего бота и реагировать на новые угрозы.
❓ Какие инструменты для тестирования безопасности телеграм-ботов:
- SAST (Static Application Security Testing). Анализ кода бота на этапе разработки для выявления потенциальных уязвимостей.
- DAST (Dynamic Application Security Testing). Проверка в реальном времени путем отправки запросов и анализа поведения бота.
- Pen Testing (Penetration Testing). Активные атаки на бота для обнаружения уязвимостей, проводимые специалистами по безопасности.
- Проверка на соответствие стандартам безопасности. Соблюдение стандартов безопасности, таких как рекомендации OWASP, для обеспечения надежности бота.
При разработке телеграм-ботов помните, что обеспечение безопасности — ваш главный приоритет.
👍3
Mad Stream c приглашенным гостем! 🔥
26 октября к нам подключится Николай Кутузов - инженер в Yandex и ex-Researcher-Scientist в Huawei, чтобы выступить с темой «Приложения машинного обучения в Wireless».
С развитием машинного обучения, оно находит свои приложения в новых областях, в частности в Wireless. Применение машинного обучения в области WiFi представляет не только научный интерес, но и открывает возможности для создания новых IoT решений и улучшения качества передачи сигнала.
На выступлении мы разберем постановку задачи, разберем, как развивалось данное направление, какие результаты были достигнуты научным сообществом, и рассмотрим конкретный пример применения ML: улучшение алгоритмов подбора параметров адаптации канала.
Дата/Время: 26 октября, 19:00 (GTM +7)
Вход на вебинар – свободный.
Ссылка будет доступна в нашем Telegram-канале за 15 минут до начала ивента.
Ждем всех!
26 октября к нам подключится Николай Кутузов - инженер в Yandex и ex-Researcher-Scientist в Huawei, чтобы выступить с темой «Приложения машинного обучения в Wireless».
С развитием машинного обучения, оно находит свои приложения в новых областях, в частности в Wireless. Применение машинного обучения в области WiFi представляет не только научный интерес, но и открывает возможности для создания новых IoT решений и улучшения качества передачи сигнала.
На выступлении мы разберем постановку задачи, разберем, как развивалось данное направление, какие результаты были достигнуты научным сообществом, и рассмотрим конкретный пример применения ML: улучшение алгоритмов подбора параметров адаптации канала.
Дата/Время: 26 октября, 19:00 (GTM +7)
Вход на вебинар – свободный.
Ссылка будет доступна в нашем Telegram-канале за 15 минут до начала ивента.
Ждем всех!
🔥8👍3
🥷Good, old PHP challenge🥷
Есть тут те, кто РНР использует? Челлендж для вас и не только.
Найдите уязвимость, опишите в чем она заключается и опишите эксплуатацию пошагово.
Свои ответы маркируйтеспойлером , чтобы у других участников была возможность решить челлендж без спойлеров. Будем ждать ваших решений в комментариях.
Есть тут те, кто РНР использует? Челлендж для вас и не только.
Найдите уязвимость, опишите в чем она заключается и опишите эксплуатацию пошагово.
Свои ответы маркируйте
🔥7
Mad Devs Channel
Mad Stream c приглашенным гостем! 🔥 26 октября к нам подключится Николай Кутузов - инженер в Yandex и ex-Researcher-Scientist в Huawei, чтобы выступить с темой «Приложения машинного обучения в Wireless». С развитием машинного обучения, оно находит свои…
Mad Stream переносится.
К сожалению, по независящим от нас причинам сегодня стрим с Николаем Кутузовым не может быть проведен. Мы обязательно анонсируем новую дату стрима позже.
К сожалению, по независящим от нас причинам сегодня стрим с Николаем Кутузовым не может быть проведен. Мы обязательно анонсируем новую дату стрима позже.
👍3
Mad Devs Channel
🥷Good, old PHP challenge🥷 Есть тут те, кто РНР использует? Челлендж для вас и не только. Найдите уязвимость, опишите в чем она заключается и опишите эксплуатацию пошагово. Свои ответы маркируйте спойлером , чтобы у других участников была возможность решить…
Делимся решением челленджа:
В этом коде предпологается, что аутентифицированый и локальный пользователь может выполнять PHP код через конструкцию call_user_func.
Однако, у этого кода есть проблемы:
- Функция client_ip() опирается на заголовок HTTP_X_FORWARDED_FOR для определения источника запроса, но так как этот заголовок может быть передан клиентом в запросе, то это значит, что клиент может передать туда любое значение, в том числе и 127.0.0.1.
Код с 9 по 12 строчки проверяет, является ли значение в переменной $ip действительным ip адресом и входит ли оно в состав массива array('localhost', '127.0.0.1')
Отсюда делаем вывод и четко понимаем, что если клиент передаст в запросе заголовок X_FORWARDED_FOR: 127.0.0.1, он обойдет эту первую проверку.
Далее по коду проверка на наличие сессионного идентификатора, что подразумевает некую функцию аутентификации, которой в коде не представлено. Но нам это и не нужно, так как проблема очевидна: если пользователь не аутентифицирован, код отправляет пользователя на error.php задав в ответе заголовок Location: error.php и... продолжит выполнение, так как после header("Location: error.php"); не стоит exit() или die(). Это значит, что хоть НЕаутентифицированный пользователь визуально в браузере и увидит перед собой страничку error.php, call_user_func все равно будет выполнен.
Итоговый запрос на получение удаленного выполнение кода будет таким:
GET /code.php?system&arg=whoami HTTP/2.0
Host: domain.com
X-FORWARDED-FOR: 127.0.0.1
В этом коде предпологается, что аутентифицированый и локальный пользователь может выполнять PHP код через конструкцию call_user_func.
Однако, у этого кода есть проблемы:
- Функция client_ip() опирается на заголовок HTTP_X_FORWARDED_FOR для определения источника запроса, но так как этот заголовок может быть передан клиентом в запросе, то это значит, что клиент может передать туда любое значение, в том числе и 127.0.0.1.
Код с 9 по 12 строчки проверяет, является ли значение в переменной $ip действительным ip адресом и входит ли оно в состав массива array('localhost', '127.0.0.1')
Отсюда делаем вывод и четко понимаем, что если клиент передаст в запросе заголовок X_FORWARDED_FOR: 127.0.0.1, он обойдет эту первую проверку.
Далее по коду проверка на наличие сессионного идентификатора, что подразумевает некую функцию аутентификации, которой в коде не представлено. Но нам это и не нужно, так как проблема очевидна: если пользователь не аутентифицирован, код отправляет пользователя на error.php задав в ответе заголовок Location: error.php и... продолжит выполнение, так как после header("Location: error.php"); не стоит exit() или die(). Это значит, что хоть НЕаутентифицированный пользователь визуально в браузере и увидит перед собой страничку error.php, call_user_func все равно будет выполнен.
Итоговый запрос на получение удаленного выполнение кода будет таким:
GET /code.php?system&arg=whoami HTTP/2.0
Host: domain.com
X-FORWARDED-FOR: 127.0.0.1
👍2
Это все Карма
Karma Framework - это метод организации, разработанный в Нидерландах в 1970-х годах, основанный на принципе круговой организации. В этом методе люди объединяются в круги, чтобы достигать общих целей. Круги являются динамичными и также могут исчезать, когда цель достигнута, например, если определенная связь больше не требуется компании.
Что значит аббревиатура?
📌 Karmic (Карма и ценности): Учитываем не только числа, но и эмоции в работе.
📌 Adaptive (Гибкость и быстрая реакция): Готовы быстро адаптироваться к изменениям.
📌 Relevant (Удобство и целесообразность): Используем удобные методы для задачи.
📌 Meaningful (Смысл и цели): Работаем не только ради задач, но и для достижения смысла и целей.
📌 Approach (Комбинированный подход): Применяем разные методы в зависимости от ситуации.
🔘 Как это работает?
Есть один главный корневой круг, а внутри него - много меньших кругов (дочерних). Меньшие круги работают над своими задачами, но их цели всегда связаны с целями главного круга. Каждый круг самостоятелен и свободен в выборе, как достигать своих целей и как управлять своей работой.
🔘 В чем суть?
В Karma Framework команды (Круги) работают над продуктами, учитывая их особенности и потребности заказчика. Главный KPI - довольство заказчика. Да используются стандартные метрики, но также учитывается эмоциональные аспекты для адаптации к изменениям. Основа работы Кругов -
Ожидание - запрос задачи или ресурса
Обещание - согласие на активность или предоставление ресурса
🔘Как этого внедрить?
🔺Начните с определения контекста и целей.
🔺Помните, что "Круги" в Karma Framework создаются и прекращаются гибко и легко, в отличие от отделов в классических организациях.
🔺 Руководители должны быть осторожными и заботливыми в управлении "кругами". Уровень вовлеченности сотрудников зависит от того, насколько лидеры следуют установленным правилам.
🔺 Разработайте инструменты для управления эмоциональными напряжениями и предотвращения персональных конфликтов. Иногда требуется найти компромисс, отложить выполнение обязательств или создать новый "круг" в зависимости от ситуации.
Karma Framework - это метод организации, разработанный в Нидерландах в 1970-х годах, основанный на принципе круговой организации. В этом методе люди объединяются в круги, чтобы достигать общих целей. Круги являются динамичными и также могут исчезать, когда цель достигнута, например, если определенная связь больше не требуется компании.
Что значит аббревиатура?
📌 Karmic (Карма и ценности): Учитываем не только числа, но и эмоции в работе.
📌 Adaptive (Гибкость и быстрая реакция): Готовы быстро адаптироваться к изменениям.
📌 Relevant (Удобство и целесообразность): Используем удобные методы для задачи.
📌 Meaningful (Смысл и цели): Работаем не только ради задач, но и для достижения смысла и целей.
📌 Approach (Комбинированный подход): Применяем разные методы в зависимости от ситуации.
🔘 Как это работает?
Есть один главный корневой круг, а внутри него - много меньших кругов (дочерних). Меньшие круги работают над своими задачами, но их цели всегда связаны с целями главного круга. Каждый круг самостоятелен и свободен в выборе, как достигать своих целей и как управлять своей работой.
🔘 В чем суть?
В Karma Framework команды (Круги) работают над продуктами, учитывая их особенности и потребности заказчика. Главный KPI - довольство заказчика. Да используются стандартные метрики, но также учитывается эмоциональные аспекты для адаптации к изменениям. Основа работы Кругов -
Ожидание - запрос задачи или ресурса
Обещание - согласие на активность или предоставление ресурса
🔘Как этого внедрить?
🔺Начните с определения контекста и целей.
🔺Помните, что "Круги" в Karma Framework создаются и прекращаются гибко и легко, в отличие от отделов в классических организациях.
🔺 Руководители должны быть осторожными и заботливыми в управлении "кругами". Уровень вовлеченности сотрудников зависит от того, насколько лидеры следуют установленным правилам.
🔺 Разработайте инструменты для управления эмоциональными напряжениями и предотвращения персональных конфликтов. Иногда требуется найти компромисс, отложить выполнение обязательств или создать новый "круг" в зависимости от ситуации.
👍3
Как работает gRPC 🤖
Протокол RPC (Remote Procedure Call) называется "удаленным вызовом процедур" потому, что он позволяет производить вызовы функций или процедур между удаленными службами, когда эти службы развернуты на различных серверах в архитектуре микросервисов. Для пользователя это выглядит так, как будто он вызывает функцию или процедуру локально, даже если она выполняется удаленно на другом сервере.
🖥️ Прикрепленная диаграмма иллюстрирует общий поток данных для gRPC. Выполняются следующие шаги:
Шаг 1: Клиент делает вызов REST. Тело запроса обычно в формате JSON.
Шаги 2 — 4: Служба заказа (клиент gRPC) получает вызов REST, преобразует его и выполняет вызов RPC к службе оплаты. gRPC кодирует структуру клиента в бинарный формат и отправляет ее на транспортный уровень низкого уровня.
Шаг 5: gRPC отправляет пакеты по сети через HTTP2. Из-за бинарного кодирования и оптимизации сети говорят, что gRPC в 5 раз быстрее, чем JSON.
Шаги 6 — 8: Служба оплаты (сервер gRPC) получает пакеты из сети, декодирует их и вызывает серверное приложение.
Шаги 9 — 11: Результат возвращается из серверного приложения, кодируется и отправляется на транспортный уровень.
Шаги 12 — 14: Служба заказа получает пакеты, декодирует их и отправляет результат клиентскому приложению.
Расскажите в комментариях, использовали ли вы gRPC в своих проектах? Какие недостатки вы заметили? 👇
Протокол RPC (Remote Procedure Call) называется "удаленным вызовом процедур" потому, что он позволяет производить вызовы функций или процедур между удаленными службами, когда эти службы развернуты на различных серверах в архитектуре микросервисов. Для пользователя это выглядит так, как будто он вызывает функцию или процедуру локально, даже если она выполняется удаленно на другом сервере.
🖥️ Прикрепленная диаграмма иллюстрирует общий поток данных для gRPC. Выполняются следующие шаги:
Шаг 1: Клиент делает вызов REST. Тело запроса обычно в формате JSON.
Шаги 2 — 4: Служба заказа (клиент gRPC) получает вызов REST, преобразует его и выполняет вызов RPC к службе оплаты. gRPC кодирует структуру клиента в бинарный формат и отправляет ее на транспортный уровень низкого уровня.
Шаг 5: gRPC отправляет пакеты по сети через HTTP2. Из-за бинарного кодирования и оптимизации сети говорят, что gRPC в 5 раз быстрее, чем JSON.
Шаги 6 — 8: Служба оплаты (сервер gRPC) получает пакеты из сети, декодирует их и вызывает серверное приложение.
Шаги 9 — 11: Результат возвращается из серверного приложения, кодируется и отправляется на транспортный уровень.
Шаги 12 — 14: Служба заказа получает пакеты, декодирует их и отправляет результат клиентскому приложению.
Расскажите в комментариях, использовали ли вы gRPC в своих проектах? Какие недостатки вы заметили? 👇
👍8