🔥 Горячие вакансии в 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
Основные принципы ООП: наследование в программировании
Принцип наследования в ООП — это как использование готовых строительных блоков для построения дома. Один класс (суперкласс) предоставляет набор функций и свойств, а другие классы (подклассы) могут использовать эти функции и свойства, добавляя свои собственные.
Вот почему это полезно:
✔️Повторное использование кода
Вы можете взять готовый класс и использовать его в других частях программы, что сокращает дублирование кода.
✔️Добавление новых функций
Вы можете создавать новые классы, основанные на существующих, и добавлять в них дополнительные функции или свойства.
✔️Упрощение управления
Это помогает упорядочить код, разбивая его на логические части, что делает его более читаемым и управляемым.
✔️Поддержка разных типов данных
Он позволяет работать с объектами разных классов с помощью общего интерфейса, упрощая обработку данных разных типов.
В итоге принцип наследования — это мощный инструмент, который делает разработку программ проще и эффективнее. Он позволяет создавать гибкие и модульные приложения, облегчая разработку и сопровождение сложных проектов. Кроме того, он способствует повторному использованию кода и соблюдению принципов DRY (Don't Repeat Yourself) и SOLID, что помогает создавать высококачественный и эффективный код.
Принцип наследования в ООП — это как использование готовых строительных блоков для построения дома. Один класс (суперкласс) предоставляет набор функций и свойств, а другие классы (подклассы) могут использовать эти функции и свойства, добавляя свои собственные.
Вот почему это полезно:
✔️Повторное использование кода
Вы можете взять готовый класс и использовать его в других частях программы, что сокращает дублирование кода.
✔️Добавление новых функций
Вы можете создавать новые классы, основанные на существующих, и добавлять в них дополнительные функции или свойства.
✔️Упрощение управления
Это помогает упорядочить код, разбивая его на логические части, что делает его более читаемым и управляемым.
✔️Поддержка разных типов данных
Он позволяет работать с объектами разных классов с помощью общего интерфейса, упрощая обработку данных разных типов.
В итоге принцип наследования — это мощный инструмент, который делает разработку программ проще и эффективнее. Он позволяет создавать гибкие и модульные приложения, облегчая разработку и сопровождение сложных проектов. Кроме того, он способствует повторному использованию кода и соблюдению принципов DRY (Don't Repeat Yourself) и SOLID, что помогает создавать высококачественный и эффективный код.
❤5👌2👍1
Шпаргалка по типам чисел в Java 📝
Java — мощный и гибкий язык программирования, и работа с числами является неотъемлемой частью разработки. В этом посте мы поговорим о различных числовых типах в Java и их применении.
1️⃣ В Java существуют 4 цельночисленных типа, различающихся по размеру в битах и диапазону значений:
📌 byte: 8 бит, от -128 до 127.
📌 short: 16 бит, от -32,768 до 32,767.
📌 int: 32 бита, от -2,147,483,648 до 2,147,483,647.
📌 long: 64 бита, от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807.
Это разделение по битности позволяет оптимизировать использование памяти и процессора в зависимости от задачи.
2️⃣ Существуют два типа чисел с плавающей точкой:
📌 float: 32 бита, диапазон значений примерно от 1.4e-45 до 3.4e+38, с точностью около 7 знаков после запятой.
📌 double: 64 бита, диапазон значений примерно от 4.9e-324 до 1.8e+308, с точностью около 15 знаков после запятой.
Эти типы данных используются для работы с нецелыми дробными числами, предоставляя широкий диапазон значений и высокую точность. Тип float имеет более ограниченную точность и диапазон по сравнению с типом double.
3️⃣ Символьный тип char в Java представляет собой 16-битный символ Unicode, имеющий диапазон значений от \u0000 до \uffff. Char позволяет работать с символами, включая буквы, цифры, знаки препинания, специальные символы и даже управляющие символы. Этот тип данных применяется для обработки текстовых данных, названий файлов и символов форматирования, таких как перевод строки (\n) или табуляция (\t).
4️⃣ Два особенных числовых типа: BigInteger и BigDecimal.
BigInteger используется для работы с очень большими целыми числами, превышающими диапазоны типов данных int и long. Он предоставляет методы для арифметических операций над целыми числами произвольной длины.
BigDecimal, с другой стороны, используется для работы с числами с плавающей точкой, обеспечивая высокую точность при арифметических операциях. Это особенно полезно в финансовых расчетах и других сценариях, требующих точных результатов.
Эти два типа данных позволяют работать с числами, выходящими за рамки стандартных числовых типов в Java.
Надеемся, что теперь вам яснее, какие числовые типы данных в Java подходят для ваших задач 👍
Java — мощный и гибкий язык программирования, и работа с числами является неотъемлемой частью разработки. В этом посте мы поговорим о различных числовых типах в Java и их применении.
1️⃣ В Java существуют 4 цельночисленных типа, различающихся по размеру в битах и диапазону значений:
📌 byte: 8 бит, от -128 до 127.
📌 short: 16 бит, от -32,768 до 32,767.
📌 int: 32 бита, от -2,147,483,648 до 2,147,483,647.
📌 long: 64 бита, от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807.
Это разделение по битности позволяет оптимизировать использование памяти и процессора в зависимости от задачи.
2️⃣ Существуют два типа чисел с плавающей точкой:
📌 float: 32 бита, диапазон значений примерно от 1.4e-45 до 3.4e+38, с точностью около 7 знаков после запятой.
📌 double: 64 бита, диапазон значений примерно от 4.9e-324 до 1.8e+308, с точностью около 15 знаков после запятой.
Эти типы данных используются для работы с нецелыми дробными числами, предоставляя широкий диапазон значений и высокую точность. Тип float имеет более ограниченную точность и диапазон по сравнению с типом double.
3️⃣ Символьный тип char в Java представляет собой 16-битный символ Unicode, имеющий диапазон значений от \u0000 до \uffff. Char позволяет работать с символами, включая буквы, цифры, знаки препинания, специальные символы и даже управляющие символы. Этот тип данных применяется для обработки текстовых данных, названий файлов и символов форматирования, таких как перевод строки (\n) или табуляция (\t).
4️⃣ Два особенных числовых типа: BigInteger и BigDecimal.
BigInteger используется для работы с очень большими целыми числами, превышающими диапазоны типов данных int и long. Он предоставляет методы для арифметических операций над целыми числами произвольной длины.
BigDecimal, с другой стороны, используется для работы с числами с плавающей точкой, обеспечивая высокую точность при арифметических операциях. Это особенно полезно в финансовых расчетах и других сценариях, требующих точных результатов.
Эти два типа данных позволяют работать с числами, выходящими за рамки стандартных числовых типов в Java.
Надеемся, что теперь вам яснее, какие числовые типы данных в Java подходят для ваших задач 👍
👍3🔥3👏1
Почему и зачем дата-сайентисту нужны графы 🔗
Давайте разберемся, что такое теория графов, в каких аналитических задачах она находит применение и почему она несмотря на свою сложность важна, особенно для начинающих в области Data Science.
Графы — абстракция для анализа связей между сущностями: множество вершин и множество рёбер, которые их соединяют. Они важны в Data Science, особенно в задачах, где классические методы не подходят.
Например, компании как Uber, Google, Pinterest все чаще переходят на графовые методы, увеличивая производительность. По прогнозам Gartner, к 2025 году графы будут использоваться в 80% инноваций в области данных и аналитики.
Графы находят применение в различных аналитических задачах, предоставляя новые возможности для обработки данных. Они используются в следующих областях:
📌 Рекомендации товаров или друзей
Графы помогают идентифицировать схожие интересы или связи между людьми, что позволяет делать рекомендации товаров, друзей или контента.
📌 Выявление мошенничества
Графы могут использоваться для построения цепочек транзакций и выявления подозрительных действий или мошенничества.
📌 Построение маршрутов
Графы позволяют находить оптимальные маршруты между точками, учитывая различные факторы, такие как длина дороги и трафик.
📌 Ранжирование информации
Графы могут быть использованы для ранжирования информации, например, в поисковых системах, чтобы определить авторитетность веб-страниц.
📌 Хранение взаимосвязей между сущностями
Графы знаний используются для хранения информации о сущностях и связях между ними, что помогает семантически структурировать знания.
Они позволяют работать с нелинейными данными, представляя их в виде связей между объектами, что важно для анализа сложных взаимосвязей и позволяет преодолеть ограничения классических методов анализа данных.
Графы — универсальный инструмент, используемый в разных задачах. Не нужно запоминать всю их функциональность, важно понимать, что это и в каких областях применяется.
Давайте разберемся, что такое теория графов, в каких аналитических задачах она находит применение и почему она несмотря на свою сложность важна, особенно для начинающих в области Data Science.
Графы — абстракция для анализа связей между сущностями: множество вершин и множество рёбер, которые их соединяют. Они важны в Data Science, особенно в задачах, где классические методы не подходят.
Например, компании как Uber, Google, Pinterest все чаще переходят на графовые методы, увеличивая производительность. По прогнозам Gartner, к 2025 году графы будут использоваться в 80% инноваций в области данных и аналитики.
Графы находят применение в различных аналитических задачах, предоставляя новые возможности для обработки данных. Они используются в следующих областях:
📌 Рекомендации товаров или друзей
Графы помогают идентифицировать схожие интересы или связи между людьми, что позволяет делать рекомендации товаров, друзей или контента.
📌 Выявление мошенничества
Графы могут использоваться для построения цепочек транзакций и выявления подозрительных действий или мошенничества.
📌 Построение маршрутов
Графы позволяют находить оптимальные маршруты между точками, учитывая различные факторы, такие как длина дороги и трафик.
📌 Ранжирование информации
Графы могут быть использованы для ранжирования информации, например, в поисковых системах, чтобы определить авторитетность веб-страниц.
📌 Хранение взаимосвязей между сущностями
Графы знаний используются для хранения информации о сущностях и связях между ними, что помогает семантически структурировать знания.
Они позволяют работать с нелинейными данными, представляя их в виде связей между объектами, что важно для анализа сложных взаимосвязей и позволяет преодолеть ограничения классических методов анализа данных.
Графы — универсальный инструмент, используемый в разных задачах. Не нужно запоминать всю их функциональность, важно понимать, что это и в каких областях применяется.
👍4
Рабочая этика – что может быть проще? О ней уже все сказали и все знают. Что еще добавить? Личный опыт!
В 44-ом выпуске #Кибирд, Олег Пузанов и Михаил Иващенко расскажут на личном примере, что такое рабочая этика, укажут основные принципы и частые проблемы, встречающиеся у сотрудников на рабочем месте. Это видео полезно всем, но особенно тем, кто желает улучшить свою рабочую этику и добиться больших результатов в карьерном росте. Также это видео будет полезно тем, кто лишь начинает свой карьерный путь.
🔗 Смотреть
В 44-ом выпуске #Кибирд, Олег Пузанов и Михаил Иващенко расскажут на личном примере, что такое рабочая этика, укажут основные принципы и частые проблемы, встречающиеся у сотрудников на рабочем месте. Это видео полезно всем, но особенно тем, кто желает улучшить свою рабочую этику и добиться больших результатов в карьерном росте. Также это видео будет полезно тем, кто лишь начинает свой карьерный путь.
🔗 Смотреть
👍2🔥2❤1
Cloudflare Fonts или повышение конфиденциальности и скорости шрифтов веб-сайта 🤖💬
Забудьте о сторонних серверах Google Fonts и скажите привет улучшенной конфиденциальности и мгновенной производительности с Cloudflare Fonts. Теперь вам не потребуется никаких сложных изменений. Поговорим подробнее в этом посте.
Шрифты и конфиденциальность
При загрузке шрифтов с серверов Google ваш веб-сайт обменивается данными с Google. Это может привести к сбору данных, включая IP-адреса и другую информацию. Хотя Google утверждает, что эти данные не используются для персонализированной рекламы, сохранение конфиденциальности всегда важно.
Cloudflare Fonts позволяют загружать шрифты с вашего домена, сохраняя конфиденциальность и улучшая соответствие требованиям локализации данных. Это важно для защиты данных ваших пользователей.
Улучшенная производительность
Cloudflare Fonts решает проблемы производительности путем предоставления возможности загружать шрифты непосредственно с собственного домена веб-сайта. Это устраняет необходимость отправки запросов на сторонние серверы, такие как серверы Google, и уменьшает количество сетевых операций, что способствует улучшению производительности загрузки страницы.
Быстрые шрифты
Cloudflare Fonts улучшает производительность сайтов, уменьшая количество сетевых запросов с 8 до 1 и устраняя необходимость отправки запросов на сторонние сервера для CSS и шрифтов. Он также удаляет необходимость в отдельном запросе для CSS, обеспечивая всего один round-trip для загрузки шрифта. Это достигается путем переписи HTML-кода, чтобы внедрить CSS и модифицировать URL шрифтов. Результаты тестов Google Lighthouse показывают, что Cloudflare Fonts значительно улучшает производительность, сокращая время загрузки первого элемента контента на странице и повышая общую оценку производительности.
Ускорение Cloudflare Fonts с помощью ROFL
С технологией ROFL вы узнаете как ускорить веб-производительности. Модуль ROFL (Response Overseer for FL) от Cloudflare, разработанный с использованием языка Rust для обеспечения безопасности и производительности, преобразует веб-производительность, позволяя в реальном времени изменять HTML и быстро адаптировать ссылки Google Fonts. Эта технология значительно сокращает дополнительную задержку, связанную с обработкой HTML, что приводит к улучшению производительности веб-сайтов.
Надеемся эта информация пригодится вам в работе. А может быть вы уже используете и у вас сложилось свое мнение. Поделитесь своим мнением в комментариях 👇
Забудьте о сторонних серверах Google Fonts и скажите привет улучшенной конфиденциальности и мгновенной производительности с Cloudflare Fonts. Теперь вам не потребуется никаких сложных изменений. Поговорим подробнее в этом посте.
Шрифты и конфиденциальность
При загрузке шрифтов с серверов Google ваш веб-сайт обменивается данными с Google. Это может привести к сбору данных, включая IP-адреса и другую информацию. Хотя Google утверждает, что эти данные не используются для персонализированной рекламы, сохранение конфиденциальности всегда важно.
Cloudflare Fonts позволяют загружать шрифты с вашего домена, сохраняя конфиденциальность и улучшая соответствие требованиям локализации данных. Это важно для защиты данных ваших пользователей.
Улучшенная производительность
Cloudflare Fonts решает проблемы производительности путем предоставления возможности загружать шрифты непосредственно с собственного домена веб-сайта. Это устраняет необходимость отправки запросов на сторонние серверы, такие как серверы Google, и уменьшает количество сетевых операций, что способствует улучшению производительности загрузки страницы.
Быстрые шрифты
Cloudflare Fonts улучшает производительность сайтов, уменьшая количество сетевых запросов с 8 до 1 и устраняя необходимость отправки запросов на сторонние сервера для CSS и шрифтов. Он также удаляет необходимость в отдельном запросе для CSS, обеспечивая всего один round-trip для загрузки шрифта. Это достигается путем переписи HTML-кода, чтобы внедрить CSS и модифицировать URL шрифтов. Результаты тестов Google Lighthouse показывают, что Cloudflare Fonts значительно улучшает производительность, сокращая время загрузки первого элемента контента на странице и повышая общую оценку производительности.
Ускорение Cloudflare Fonts с помощью ROFL
С технологией ROFL вы узнаете как ускорить веб-производительности. Модуль ROFL (Response Overseer for FL) от Cloudflare, разработанный с использованием языка Rust для обеспечения безопасности и производительности, преобразует веб-производительность, позволяя в реальном времени изменять HTML и быстро адаптировать ссылки Google Fonts. Эта технология значительно сокращает дополнительную задержку, связанную с обработкой HTML, что приводит к улучшению производительности веб-сайтов.
Надеемся эта информация пригодится вам в работе. А может быть вы уже используете и у вас сложилось свое мнение. Поделитесь своим мнением в комментариях 👇
👍3
Svelte против Vue: какой интерфейсный фреймворк лучше? 💻
Сейчас в мире технологий происходит жаркая битва между фреймворками. Раньше считались, что React, Angular и Ember. Но сейчас все изменилось, Vue и Svelte приобрели огромную популярность и успешно вошли в список лучших фреймворков JavaScript по всему миру. Однако выбор между ними может быть сложным.
При выборе между Vue и Svelte учитывайте их характеристики и задачи вашего проекта.
Преимущества Svelte:
1. Легкий старт, особенно если вы знакомы с C++, HTML и JavaScript.
2. Обеспечивает отличную производительность за счет оптимизации пользовательского кода на этапе компиляции.
3. Требует меньше кода, что приводит к лучшему опыту пользователя.
Преимущества Vue.js:
1. Прост и нагляден, подходит для тех, кто знаком с HTML, CSS и JavaScript.
2. Предоставляет широкий выбор инструментов, включая Vue CLI, для безпроблемной разработки.
3. Обладает высокой производительностью и масштабируемостью, при компактном размере и компонентной структуре.
🤷 Какой фреймворк лучше?
Превосходная производительность
Svelte и Vue оба используют двустороннее связывание и обеспечивают высокую реактивность. Однако Svelte выделяется своей производительностью как компилятор, который генерирует код мгновенно без необходимости оптимизации, что в конечном итоге приводит к более быстрым переходам и рендерингу.
Поддержка сообщества
Оба фреймворка имеют поддержку сообщества, но Svelte получил высокие оценки удовлетворенности, что делает его привлекательным вариантом.
Размер
Размер приложения имеет значение, и Svelte хорошо подходит для небольших приложений, в то время как Vue является легковесным фреймворком, что также способствует быстрой разработке. Оба фреймворка подходят для разработки как небольших, так и более крупных и сложных приложений.
Независимо от выбора, оба фреймворка подходят как для небольших, так и для более крупных и сложных приложений. Важно выбрать тот, который лучше соответствует вашим целям и задачам разработки.
Сейчас в мире технологий происходит жаркая битва между фреймворками. Раньше считались, что React, Angular и Ember. Но сейчас все изменилось, Vue и Svelte приобрели огромную популярность и успешно вошли в список лучших фреймворков JavaScript по всему миру. Однако выбор между ними может быть сложным.
При выборе между Vue и Svelte учитывайте их характеристики и задачи вашего проекта.
Преимущества Svelte:
1. Легкий старт, особенно если вы знакомы с C++, HTML и JavaScript.
2. Обеспечивает отличную производительность за счет оптимизации пользовательского кода на этапе компиляции.
3. Требует меньше кода, что приводит к лучшему опыту пользователя.
Преимущества Vue.js:
1. Прост и нагляден, подходит для тех, кто знаком с HTML, CSS и JavaScript.
2. Предоставляет широкий выбор инструментов, включая Vue CLI, для безпроблемной разработки.
3. Обладает высокой производительностью и масштабируемостью, при компактном размере и компонентной структуре.
🤷 Какой фреймворк лучше?
Превосходная производительность
Svelte и Vue оба используют двустороннее связывание и обеспечивают высокую реактивность. Однако Svelte выделяется своей производительностью как компилятор, который генерирует код мгновенно без необходимости оптимизации, что в конечном итоге приводит к более быстрым переходам и рендерингу.
Поддержка сообщества
Оба фреймворка имеют поддержку сообщества, но Svelte получил высокие оценки удовлетворенности, что делает его привлекательным вариантом.
Размер
Размер приложения имеет значение, и Svelte хорошо подходит для небольших приложений, в то время как Vue является легковесным фреймворком, что также способствует быстрой разработке. Оба фреймворка подходят для разработки как небольших, так и более крупных и сложных приложений.
Независимо от выбора, оба фреймворка подходят как для небольших, так и для более крупных и сложных приложений. Важно выбрать тот, который лучше соответствует вашим целям и задачам разработки.
👍4🤔3
Лучшие практики для React в 2023 ⚛️
Сегодня мы поговорим о самых актуальных и лучших практиках для разработки с использованием React. Готовы узнать, как создавать отличные проекты с помощью этой потрясающей библиотеки?
📍 Структурируйте папки. Организуйте файлы и ресурсы в проекте с четкой структурой папок, учитывая группировку по маршрутам и функциональности или по типу файлов.
📍 Структурированный порядок импорта. Группируйте импорты по типу (сторонние библиотеки и локальные файлы) для улучшения понимания кода.
📍 Соглашения по именованию. Соблюдайте соглашения по именованию, такие как camelCase и PascalCase, для компонентов и переменных соответственно.
📍 Используйте линтер. Используйте инструменты типа ESLint для обеспечения согласованности и выявления ошибок в коде.
📍 Используйте библиотеки сниппетов. Воспользуйтесь библиотеками сниппетов, чтобы ускорить разработку, такие как ES7+ React/Redux/React-Native snippets.
📍 Объединение CSS и JavaScript. При работе над большими проектами объедините CSS и JavaScript с помощью фреймворков, таких как Tailwind CSS и Emotion.
📍 Ограничьте количество компонентов. Не создавайте избыточные компоненты; используйте Props для повторного использования логики.
📍 Внедрите отложенную загрузку (Lazy Loading). Используйте отложенную загрузку, чтобы ускорить загрузку веб-страниц, загружая только необходимый код.
📍 Переиспользуемые хуки. Создавайте переиспользуемые хуки для расширения функциональности компонентов и избегайте дублирования логики.
📍 Управление ошибками. Обрабатывайте ошибки с помощью инструментов, таких как react-error-boundary, чтобы обнаруживать и управлять ошибками в приложении.
📍 Тестирование и мониторинг. Тестируйте код для обнаружения ошибок и проблем. Следите за обновлениями React и библиотек для поддержания производительности.
📍 Быстрый и надежный хостинг. Используйте быстрый и надежный хостинг-провайдер для доступности вашего веб-приложения.
📍 Следите за обновлениями React. Это позволит вам адаптировать ваш код и использовать новые функции для оптимизации производительности.
📍 Используйте быстрый и надежный хостинг-провайдер. Выбирайте надежного хостинг-провайдера для доступности вашего веб-приложения. Варианты включают бесплатные (Firebase, Vercel, Netlify, GitHub Pages) и платные (Azure, AWS, GoDaddy, Bluehost), а также Application Hosting от Kinsta с широким инструментарием и поддержкой.
С правильным применением этих практик вы сможете разрабатывать удивительные проекты на React и выделяться в мире фронтенд-разработки. Успехов вам в ваших будущих проектах! ⚛️🚀
Сегодня мы поговорим о самых актуальных и лучших практиках для разработки с использованием React. Готовы узнать, как создавать отличные проекты с помощью этой потрясающей библиотеки?
📍 Структурируйте папки. Организуйте файлы и ресурсы в проекте с четкой структурой папок, учитывая группировку по маршрутам и функциональности или по типу файлов.
📍 Структурированный порядок импорта. Группируйте импорты по типу (сторонние библиотеки и локальные файлы) для улучшения понимания кода.
📍 Соглашения по именованию. Соблюдайте соглашения по именованию, такие как camelCase и PascalCase, для компонентов и переменных соответственно.
📍 Используйте линтер. Используйте инструменты типа ESLint для обеспечения согласованности и выявления ошибок в коде.
📍 Используйте библиотеки сниппетов. Воспользуйтесь библиотеками сниппетов, чтобы ускорить разработку, такие как ES7+ React/Redux/React-Native snippets.
📍 Объединение CSS и JavaScript. При работе над большими проектами объедините CSS и JavaScript с помощью фреймворков, таких как Tailwind CSS и Emotion.
📍 Ограничьте количество компонентов. Не создавайте избыточные компоненты; используйте Props для повторного использования логики.
📍 Внедрите отложенную загрузку (Lazy Loading). Используйте отложенную загрузку, чтобы ускорить загрузку веб-страниц, загружая только необходимый код.
📍 Переиспользуемые хуки. Создавайте переиспользуемые хуки для расширения функциональности компонентов и избегайте дублирования логики.
📍 Управление ошибками. Обрабатывайте ошибки с помощью инструментов, таких как react-error-boundary, чтобы обнаруживать и управлять ошибками в приложении.
📍 Тестирование и мониторинг. Тестируйте код для обнаружения ошибок и проблем. Следите за обновлениями React и библиотек для поддержания производительности.
📍 Быстрый и надежный хостинг. Используйте быстрый и надежный хостинг-провайдер для доступности вашего веб-приложения.
📍 Следите за обновлениями React. Это позволит вам адаптировать ваш код и использовать новые функции для оптимизации производительности.
📍 Используйте быстрый и надежный хостинг-провайдер. Выбирайте надежного хостинг-провайдера для доступности вашего веб-приложения. Варианты включают бесплатные (Firebase, Vercel, Netlify, GitHub Pages) и платные (Azure, AWS, GoDaddy, Bluehost), а также Application Hosting от Kinsta с широким инструментарием и поддержкой.
С правильным применением этих практик вы сможете разрабатывать удивительные проекты на React и выделяться в мире фронтенд-разработки. Успехов вам в ваших будущих проектах! ⚛️🚀
❤5
DevFest 2023 совсем скоро!
В этом году мы вновь поддерживаем сообщество GDG Bishkek и выступаем со-организаторами крупнейшей IT-конференции в Кыргызстане DevFest. Это международная технологическая конференция, организуемая сообществами Google Developer Group (GDG) по всему миру в период с сентября по декабрь ежегодно.
DevFest объединяет экспертов, специалистов и новичков в различных областях Tech сообщества. Вас ждут доклады именитых спикеров, которые помогут узнать о последних тенденциях в разработке программного обеспечения, искусственном интеллекте, машинном обучении и менеджменте и многих других смежных сфер. Во время конференции вы сможете не только приобрести знания, но и завести новые знакомство и отлично провести время в кругу единомышленников.
Полная информация о спикерах и темах конференции появится в ближайшее время, а пока Early birds могут начать приобретать билеты здесь. В прошлом году за неделю до конференции был объявлен sold out , поэтому советуем купить билет заранее, пока они еще есть.
Дата конференции: 17 декабря 2023, стартуем в 10:00
Место: Бишкек, Американский Университет Центральной Азии
До встречи на DevFest 2023 👋
В этом году мы вновь поддерживаем сообщество GDG Bishkek и выступаем со-организаторами крупнейшей IT-конференции в Кыргызстане DevFest. Это международная технологическая конференция, организуемая сообществами Google Developer Group (GDG) по всему миру в период с сентября по декабрь ежегодно.
DevFest объединяет экспертов, специалистов и новичков в различных областях Tech сообщества. Вас ждут доклады именитых спикеров, которые помогут узнать о последних тенденциях в разработке программного обеспечения, искусственном интеллекте, машинном обучении и менеджменте и многих других смежных сфер. Во время конференции вы сможете не только приобрести знания, но и завести новые знакомство и отлично провести время в кругу единомышленников.
Полная информация о спикерах и темах конференции появится в ближайшее время, а пока Early birds могут начать приобретать билеты здесь. В прошлом году за неделю до конференции был объявлен sold out , поэтому советуем купить билет заранее, пока они еще есть.
Дата конференции: 17 декабря 2023, стартуем в 10:00
Место: Бишкек, Американский Университет Центральной Азии
До встречи на DevFest 2023 👋
👍5❤1
Какие основные различия между интерпретируемым и компилируемым языком 💻
Языки программирования можно разделить на интерпретируемые и компилируемые, в зависимости от способа их запуска. Поговорим о ключевых различиях между этими подходами.
Интерпретируемые языки
🔺 Python, JavaScript, PHP, Ruby
Hаботают с помощью интерпретатора, который выполняет код построчно. Преимущества таких языков в том, что изменения в коде проявляются сразу, и они более гибки в работе с динамической памятью и типами данных. Однако интерпретация может быть медленной, особенно в крупных проектах с большими объемами данных.
Компилируемые языки
🔺 C++, Java, C, Rust, Kotlin
Требуют предварительной компиляции исходного кода в машинный код до его выполнения. Это делает их более эффективными с точки зрения производительности, но изменения в коде требуют перекомпиляции.
Выбор между ними зависит от конкретной задачи и требований проекта. Важно учитывать, что существуют и гибридные подходы.
Какой язык программирования вы изучали первым?
Языки программирования можно разделить на интерпретируемые и компилируемые, в зависимости от способа их запуска. Поговорим о ключевых различиях между этими подходами.
Интерпретируемые языки
🔺 Python, JavaScript, PHP, Ruby
Hаботают с помощью интерпретатора, который выполняет код построчно. Преимущества таких языков в том, что изменения в коде проявляются сразу, и они более гибки в работе с динамической памятью и типами данных. Однако интерпретация может быть медленной, особенно в крупных проектах с большими объемами данных.
Компилируемые языки
🔺 C++, Java, C, Rust, Kotlin
Требуют предварительной компиляции исходного кода в машинный код до его выполнения. Это делает их более эффективными с точки зрения производительности, но изменения в коде требуют перекомпиляции.
Выбор между ними зависит от конкретной задачи и требований проекта. Важно учитывать, что существуют и гибридные подходы.
Какой язык программирования вы изучали первым?
👍6
О микрофротенде
Микрофронтенд - это подход, при котором фронтенд разделяется на небольшие кодовые базы, хранящиеся в отдельных репозиториях и управляемые разными командами. Каждый микрофронтенд имеет свои стенды, тесты и циклы выпуска.
‼️Важно: в первую очередь это организационное решение для управления сложностью разработки, а не способ ускорить фронтенд.
Преимущества:
⭐️ Независимость разработки — разные команды могут работать над разными микрофронтендами, не затрагивая друг друга.
⭐️ Легкость масштабирования — микрофронтенды могут масштабироваться независимо друг от друга, что упрощает обновление и развертывание системы.
⭐️ Гибкость в выборе технологий — каждый микрофронтенд может использовать те технологии, которые наилучшим образом подходят для его задач.
⭐️ Уменьшение конфликтов — изоляция микрофронтендов помогает уменьшить конфликты между разработчиками и обеспечивает надежную работу системы.
⭐️ Быстрое развертывание — микрофронтенды могут быть легко развернуты и обновлены независимо, что ускоряет процесс разработки и доставки.
Есть множество подходов для организации микрофронтендов, но все зависит от вашей конкретной ситуации и требований проекта. Давайте рассмотрим возможные варианты и их назначение:
📌 iframe - используйте, когда необходимо встроить отдельные некомпатибельные компоненты в единый интерфейс.
📌 веб-компоненты - подходят, если вам нужна небольшая, независимая функциональность, например, корпоративный UI Kit.
📌 пакеты npm - пригодятся, если есть компоненты, которые могут быть повторно использованы в разных проектах и вы хотите обеспечить проверку типов во время сборки.
📌 git submodules - подходит, если вам нужно разделить проект на отдельные репозитории и распределить зоны ответственности между командами.
📌 single-spa - используйте, если вам необходимо комбинировать несколько фреймворков в одном приложении, особенно без серверного рендеринга.
📌 модуль-федерация - подходит для всех остальных сценариев использования микрофронтендов, при условии, что у вас есть единый стек технологий.
Прежде чем перейти к микрофронтендам, важно тщательно оценить, действительно ли они необходимы для вашего проекта. Каждый из этих подходов вносит свои сложности в разработку, CI/CD и производительность. Если у вас есть возможность остаться на одном стеке и использовать монолитное приложение, это может быть более простым и эффективным решением.
Микрофронтенд - это подход, при котором фронтенд разделяется на небольшие кодовые базы, хранящиеся в отдельных репозиториях и управляемые разными командами. Каждый микрофронтенд имеет свои стенды, тесты и циклы выпуска.
‼️Важно: в первую очередь это организационное решение для управления сложностью разработки, а не способ ускорить фронтенд.
Преимущества:
⭐️ Независимость разработки — разные команды могут работать над разными микрофронтендами, не затрагивая друг друга.
⭐️ Легкость масштабирования — микрофронтенды могут масштабироваться независимо друг от друга, что упрощает обновление и развертывание системы.
⭐️ Гибкость в выборе технологий — каждый микрофронтенд может использовать те технологии, которые наилучшим образом подходят для его задач.
⭐️ Уменьшение конфликтов — изоляция микрофронтендов помогает уменьшить конфликты между разработчиками и обеспечивает надежную работу системы.
⭐️ Быстрое развертывание — микрофронтенды могут быть легко развернуты и обновлены независимо, что ускоряет процесс разработки и доставки.
Есть множество подходов для организации микрофронтендов, но все зависит от вашей конкретной ситуации и требований проекта. Давайте рассмотрим возможные варианты и их назначение:
📌 iframe - используйте, когда необходимо встроить отдельные некомпатибельные компоненты в единый интерфейс.
📌 веб-компоненты - подходят, если вам нужна небольшая, независимая функциональность, например, корпоративный UI Kit.
📌 пакеты npm - пригодятся, если есть компоненты, которые могут быть повторно использованы в разных проектах и вы хотите обеспечить проверку типов во время сборки.
📌 git submodules - подходит, если вам нужно разделить проект на отдельные репозитории и распределить зоны ответственности между командами.
📌 single-spa - используйте, если вам необходимо комбинировать несколько фреймворков в одном приложении, особенно без серверного рендеринга.
📌 модуль-федерация - подходит для всех остальных сценариев использования микрофронтендов, при условии, что у вас есть единый стек технологий.
Прежде чем перейти к микрофронтендам, важно тщательно оценить, действительно ли они необходимы для вашего проекта. Каждый из этих подходов вносит свои сложности в разработку, CI/CD и производительность. Если у вас есть возможность остаться на одном стеке и использовать монолитное приложение, это может быть более простым и эффективным решением.
👍4