Mad Devs Channel
1.6K subscribers
664 photos
30 videos
1 file
867 links
Канал Mad Devs.🤘Здесь мы рассказываем о жизни компании и инсайтах. Делимся знаниями и лайфхаками IT-индустрии.
Download Telegram
Слышали про Dython?🤔

Dython - это библиотека Python для анализа данных, особенно в области зависимостей и корреляций. Dython упрощает процесс анализа данных, используя стандартные библиотеки Python, такие как Pandas, Matplotlib и NumPy.

Dython предлагает следующие основные возможности:

📌Работа с табличными данными
Dython предоставляет операции для работы с таблицами (датафреймами), включая фильтрацию, сортировку, объединение и агрегацию данных.

📌Очистка данных
Фреймворк предлагает функции для эффективной очистки данных, включая обработку пропущенных значений, удаление дубликатов и преобразование типов данных.

📌Инженерия признаков
Функции для создания новых признаков на основе существующих данных, создание столбцов, преобразование значений и извлечение информации из существующих признаков.

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

📌Визуализация данных
Создание графиков и визуализации данных, включая диаграммы, гистограммы, диаграммы рассеяния и другие типы графиков для исследования и представления данных.

Заинтересовало? Тогда с документацией фреймворка можно ознакомиться здесь.
🤔5👍21
7 быстрорастущих open-source проектов на GitHub, о которых следует знать:

📌 RLHF + PaLM
👉Альтернатива ChatGPT с открытым исходным кодом.
Эта языковая модель объединяет обучение с подкреплением (RLHF) и архитектуру PaLM, и хотя предварительно обученная модель отсутствует, она обладает потенциалом стать конкурентоспособной альтернативой ChatGPT.

📌 RATH
👉Альтернатива Tableau с открытым исходным кодом.
RATH предлагает передовые технологии для анализа и визуализации данных, привлекая множество разработчиков, Data Scientists и бизнес-аналитиков, которые активно содействуют развитию проекта.

📌 Gogs
👉Альтернатива GitHub с открытым исходным кодом.
Gogs предлагает удобный интерфейс управления версиями Git, а также отслеживание проблем, пулл реквесты и вики. Благодаря своей гибкости и безопасности, он является отличной альтернативой для совместной работы с Git.

📌 NocoDB
👉Альтернатива Airtable с открытым исходным кодом.
NocoDB — гибкая и масштабируемая платформа данных, поддерживающая SQL, NoSQL и Graph. Она предлагает простой интерфейс для создания и управления базами данных в режиме реального времени.

📌 Rocket.Chat
👉Альтернатива Slack с открытым исходным кодом.
Rocket.Chat обеспечивает разнообразные средства коммуникации для команд, включая текстовые, голосовые и видеозвонки, совместное использование экрана и обмен файлами. Он может быть развернут самостоятельно или использован в качестве облачного решения.

📌 Plausible Analytics
👉Альтернатива Google Analytics.
Plausible Analytics предоставляет безопасную аналитику, не собирающую личные данные пользователей. Она предлагает простой интерфейс для отслеживания активности на веб-сайте в режиме реального времени.

📌 Mastodon
👉 Альтернатива Twitter.
Mastodon — децентрализованная социальная сеть, где пользователи могут общаться, обмениваться контентом и участвовать в онлайн-сообществах. Она обеспечивает функциональность, аналогичную традиционным социальным сетям, с акцентом на конфиденциальность, свободу слова и контроль над личностью в Интернете.

А у вас есть в закромах интересные open-source проекты на GitHub? Делитесь со всеми нами в комментариях!
👍7
Про CSS. Gap vs Margin
Правильное управление пространством между элементами на веб-странице является важной частью создания качественного интерфейса. Сегодня мы сосредоточимся на сравнении двух ключевых свойств CSS, а именно Gap и Margin.

Что такое Gap и Margin?

Это два свойства CSS, которые используются для управления пространством между элементами на веб-странице.

Gap. Свойство определяет размер промежутка между строками и столбцами в многоколоночном макете.

Margin. Свойство позволяет добавлять пространство вокруг отдельных HTML-элементов.

Как они работают?

Gap применяется к контейнеру элементов, создавая промежутки между дочерними элементами. Он не затрагивает внешнюю область контейнера.

Margin применяется к отдельным элементам, создавая пространство вокруг них.

Рассмотрим преимущества:

📌 Gap:
- Позволяет управлять пространством между элементами внутри контейнера, не затрагивая внешнюю область.
- Идеально подходит для создания макетов с равномерными промежутками.
- Упрощает стилизацию многоколоночных макетов.

📌 Margin:
- Очень универсален и может быть применен к любому HTML-элементу.
- Позволяет контролировать пространство вокруг элемента, включая внешние границы.
- Идеально подходит для создания пространства между элементами, которые не находятся в одном контейнере.

Определим недостатки

Gap:
- Не все браузеры поддерживают свойство gap для flexbox, что может вызвать проблемы совместимости.
- Не может быть применен к отдельным элементам.

Margin:
- Использование margin для создания пространства между элементами может привести к созданию дополнительного пространства после последнего элемента.
- Может вызвать проблемы с коллапсом полей, что может привести к неожиданным результатам.

Что в итоге? Выбор между gap и margin зависит от конкретных потребностей вашего проекта. Оба свойства имеют свои преимущества и недостатки, и важно понимать, как они работают, чтобы сделать правильный выбор.

А что и когда предпочитаете вы? Поделитесь в комментариях.
👍4🔥1
Ищем стажера ML инженера в наш проект Enji.ai

Вы очень часто спрашиваете у нас о стажировках и вот это случилось! Мы ищем стажера в команде нашего проекта Enji.ai.
Enji - это продукт, который обеспечивает прозрачную работу инженерных команд (и не только).

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

Мы ждем тебя, если у тебя есть математический бэкграунд (ты учился на математическом факультете, писал курсовые бакалаврские или магистерские работы по направлению машинного обучения), тебе нравится работать с данными, а "Алгоритмы и структуры данных" - твоя настольная книга, то тебе точно к нам!

Больше подробностей по вакансии на сайте. Переходи и оставляй свой отклик!
🔥10👏3
Задача с любовью (и со звездочкой) от Mad Blockchain Department 🎯

Самое время размять мозги и порешать задачи, не считаете? В этот раз задачу, которую мы приготовили для вас с ребятами из нашего блокчейн департамента, всемогущий Chat GPT не смог верно решить даже с 5 попытки. А получится ли у вас?

Итак, NFT-трейдер купил редкий токен на картинку с поросёнком, сумма сделки составила 6 тысяч долларов. Через время он продал токен за 7 тысяч, но передумал и выкупил обратно за 8 тысяч. Ещё через какое-то время он продал этот токен за 9 тысяч долларов.

Вопрос: сколько денег в итоге заработал или потерял трейдер на этой цепочке сделок?

🎁 Первого верно решившего эту задачу мы наградим ценным призом - нашей брендированной толстовкой.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍2👏2
Mad Devs Channel
Задача с любовью (и со звездочкой) от Mad Blockchain Department 🎯 Самое время размять мозги и порешать задачи, не считаете? В этот раз задачу, которую мы приготовили для вас с ребятами из нашего блокчейн департамента, всемогущий Chat GPT не смог верно решить…
Время поделиться решением задачи. Итак, сколько же в итоге заработал NFT-трейдер на цепочке сделок?

Иногда эту задачу решают так:

Трейдер потратил 6 (−6), потом заработал 7 (+7), потом потратил 8 (−8), а потом заработал 9 (+9), но раз после последней продажи он остался без токена, который изначально стоил 6, то он ещё потерял 6 (−6):

−6 + 7 − 8 + 9 − 6 = −4 тысячи долларов.

По этой логике трейдер потерял за все эти сделки 4 тысячи долларов, но это явно неверное решение.

Правильное решение

Задачу легко решить, если правильно определить исходную точку. А она такая: когда трейдер покупает токен, это не трата, а его цель, за которой он пришёл. На старте у него есть 6 тысяч долларов, а остальное зависит от продавцов.

На первом шаге он покупает токен за 6 тысяч, и его баланс равен −6 тысяч.

На втором шаге он продаёт его за 7 тысяч, и его баланс становится равен −6 + 7 = 1 тысяча.

На третьем шаге трейдер покупает токен назад за 8, и его баланс равен 1 − 8 = −7 тысяч.

А на четвёртом он продаёт токен обратно и получает за это 9 тысяч, и итоговый баланс становится равен −7 + 9 = 2 тысячи.

Подвох с пропавшей тысячей

🤔 Кажется, что задача решена, но если трейдер в плюсе на 2 тысячи и пришёл на криптобиржу с 6 тысячами на счёте, то у него должно быть 8 тысяч. Но за последнюю продажу он получил 9 тысяч и с ними и остался — куда же тогда делась ещё тысяча?

А тысяча делась на возврат долга самому себе, когда трейдер выкупал обратно свой же токен на тысячу дороже, чем он стоил:

Купил за 6 тысяч ← денег стало 0 (условно, на самом деле мы не знаем, сколько денег у него было на счёте).
Продал за 7 тысяч ← появились 7 тысяч.
Купил за 8 тысяч ← а вот здесь как раз не хватает той тысячи, которую нужно у кого-то занять, чтобы выкупить токен.
Продал за 9 тысяч ← появилось 9 тысяч, возвращаем 1 тысячу долга.
🤯7👍1
Mad Devs Channel
Задача с любовью (и со звездочкой) от Mad Blockchain Department 🎯 Самое время размять мозги и порешать задачи, не считаете? В этот раз задачу, которую мы приготовили для вас с ребятами из нашего блокчейн департамента, всемогущий Chat GPT не смог верно решить…
Правильных ответов получилось достаточно много, но первым верный ответ на задачу дал Ростислав (Rstg Perm) и наша толстовка отправится к нему прямиком в Пермь!

Мы считаем что оригинальные и интересные способы решения задач непременно достойны внимания и поэтому мы не могли не отметить ответы и промт-инжениринг от Михаила Фрускейта. Михаил, вас также ждет наша фирменная толстовка и небольшая экскурсия по офису 🎯

Большое спасибо всем за участие в решении наших задач. Следующая задача будет опубликована совсем скоро и мы с нетерпением будем ждать ваших решений!
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉8🔥3👏2
Mad Devs Channel
Правильных ответов получилось достаточно много, но первым верный ответ на задачу дал Ростислав (Rstg Perm) и наша толстовка отправится к нему прямиком в Пермь! Мы считаем что оригинальные и интересные способы решения задач непременно достойны внимания и поэтому…
Завершим сегодняшний день фотографией счастливого Михаила, который забрал свою награду в нашем офисе🤘

Еще раз благодарим всех за решение задачи и ждём огоньков от тех, кто уже ждёт следующую 🔥
🔥21👏7🎉61
Как отслеживать скрытые конфликты?
Скрытые конфликты на рабочем месте могут быть разрушительными для эффективности команды и рабочей атмосферы. Как они чаще всего возникают?

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

Правильно развивать команду и уделять ей достаточно внимания – важная задача для каждого руководителя. Активное участие в работе подразделения помогает минимизировать скрытые конфликты и устранять недовольство среди сотрудников.

Какие методы мы используем в Mad Devs, чтобы выявлять скрытые конфликты ?
📌Использование eNPS и пульс-опросов для измерения уровня удовлетворенности сотрудников.
📌Оценка 360 - кросс-оценка коллег для выявления несоответствий в оценках.
📌Встречи, в том числе ретроспективы, для обсуждения проблем и конфликтных ситуаций.
📌Регулярные 1-1 встречи с сотрудниками для выявления индивидуальных недовольств и проблем.
📌Оценка общих чатов проектов на наличие резких высказываний и долгих неурегулированных обсуждений.

Помните, что работа с командой и улучшение корпоративной культуры в компании помогут избежать необходимости привлекать новых сотрудников в будущем. А конфликты этому не способствуют.
👍7🤔4
Что такое Highload-приложения и как они справляются с нагрузками на систему

Highload-системы обрабатывают большую нагрузку на сервер и гарантируют работоспособность при резком увеличении нагрузки. В отличие от обычных приложений, они требуют сложной реализации и масштабируемости. Масштабируемость важна только при необходимости.

Какие существуют виды нагрузок и как эффективно с ними справляться?

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

Существует несколько распространенных методов решения задач с большими нагрузками:

📌 Реплицирование — увеличение экземпляров программы для балансировки нагрузки, обеспечения отказоустойчивости и высокой доступности системы.

📌 Шардинг — распределение нагрузки между экземплярами программы по ключу, например, по ID пользователя.

📌 Кэширование — хранение информации в оперативной памяти для снятия нагрузки с базы данных.

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

Highload-системы способствуют пониманию обработки запросов и необходимых ресурсов. Вы уже работали с данными системами? Расскажите о своем опыте в комментариях ✍️
👍7
Документация ML-проекта и правила её составления

Сегодня поговорим о важности документации в ML-проектах и ключевых правилах, которые обеспечат её эффективность и актуальность.

Документация ML-проекта — это письменный документ, который объясняет различные аспекты проекта, включая его цели, данные, методы и результаты. Хорошо составленная документация поможет как вам, так и пользователям понять, как работает проект, и как его использовать и т.п.

📑 Правила составления документации:

📍 Документация должна быть понятно написана для широкой аудитории.

📍 При написании будьте краткими и лаконичными, чтобы её было легко читать.

📍 Используйте простой язык, чтобы прочитанное было понятно людям с различным уровнем технической подготовки.

📍 Используйте изображения и диаграммы, которые могут помочь объяснить сложные концепции и сделать документацию более привлекательной для чтения.

📍 Ссылайтесь на другие документы, если упоминаются другие документы, такие как пользовательские руководства или технические отчеты.

📍 Используйте шаблоны, которые помогут вам включить все важные элементы.

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

📍 Перед публикацией протестируйте документацию на предмет ошибок и несоответствий.

📍 Используйте систему контроля версий для отслеживания изменений в документации.

📍 Используйте облачные технологии, которые помогут вам легко хранить и управлять документацией.

📍 Используйте социальные сети, чтобы распространять информацию и получать обратную связь от пользователей.

📍 Используйте видео, который помогут объяснить сложные концепции.

Следуя этим правилам, вы можете составить четкую, лаконичную и полезную документацию ML-проекта. 💪
👍4👨‍💻21
Как GPT-Migrate помогает при миграции

GPT-Migrate — это нейросетевой инструмент для быстрой миграции кода между языками программирования. У него уже 6000 звёзд на GitHub. С помощью данного инструмента, вы можете ускорить процесс миграции, но учтите, что GPT-Migrate не гарантирует полностью верный код после автоматического перевода на другой язык.

Как это работает?

GPT-Migrate переносит код из --sourcelang в --targetlang:
📌 Создает Docker-среду для --targetlang и оценивает код.
📌 Выбирает соответствующие зависимости --targetlang из существующего кода --sourcelang.
📌 Перестраивает новый код из существующего, начиная с файла --sourceentry, с опцией --step migrate.
📌 Разрабатывает модульные тесты с использованием unittest в Python и опционально тестирует их на существующем приложении с опцией --step test.
📌 Тестирует новый код на --targetport с помощью модульных тестов.
📌 Итеративно выполняет отладку кода с помощью журналов, сообщений об ошибках и дает указания к следующему этапу миграции.
📌 Новая кодовая база будет в --targetdir.

Как использовать на практике?

Мигрируйте код с GPT-Migrate:

1️⃣ Установите Docker и API-ключ для ChatGPT (предпочтительно GPT-4-32k).
2️⃣ Установите требования для python и ключ API OpenAI.
3️⃣ Запустите скрипт с выбранным --targetlang: python main.py --targetlang nodejs.
4️⃣ При необходимости, используйте --sourceport для проверки созданных модульных тестов с существующим приложением.

Как настроить:

Настройте GPT-Migrate, используя параметры в скрипте main.py:
—model: "gpt-4-32k" (по умолчанию).
—temperature: 0 (по умолчанию).
—sourcedir: "../benchmarks/flask-nodejs/source" (по умолчанию).
—sourcelang: (по умолчанию отсутствует).
—sourceentry: "app.py" (по умолчанию).
—targetdir: "../benchmarks/flask-nodejs/target" (по умолчанию).
—targetlang: "nodejs" (по умолчанию).
—operating_system: "linux" (по умолчанию).
—testfiles: "app.py" (по умолчанию).
—sourceport: (необязательно).
—targetport: 8080 (по умолчанию).
—guidelines: (по умолчанию пусто).
—step: "all" (по умолчанию).

Упрощение миграции приложения с одного языка на другой — сложная задача. Но с GPT-Migrate может стать менее абсурдной и безболезненной. Если вы уже протестировали GPT-Migrate, поделитесь в комментариях своим опытом. 👇
👍4🔥3🌚1
Слышали ли вы о Гипотезе "одинокого бегуна"?

Одна из нерешенных окончательно, но захватывающих задач в комбинаторной теории чисел.

Представьте себе k бегунов на круговой треке длиной в одну единицу. Каждый бегун движется с разной постоянной скоростью и все они стартуют с одного места. Вопрос гипотезы: станет ли каждый бегун в какой-то момент "одиноким", то есть окажется на расстоянии не менее 1/k от любого другого бегуна?

Мы не назвали гипотезу однозначно доказанной или опровергнутой не случайно. Она была доказана в случаях, когда 2 ≤ k ≤ 7, но остается недоказанной для всех чисел k ≥ 8.
Она привлекает множество умов из различных областей, ведь для ее изучения можно использовать разные подходы, однако они не дали полного решения. Например:

Геометрия
Здесь мы можем представить бегунов как точки, движущиеся по окружности. Время и скорость могут быть представлены в виде углов и вращений вокруг окружности. Таким образом, задача сводится к определению, когда все углы (или бегуны) достигают определенного расстояния друг от друга.

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

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

Диофантовы приближения
Эта область математики изучает приближения рациональных чисел иррациональными. Если мы рассмотрим скорости бегунов как иррациональные числа, то задача может быть связана с поиском таких иррациональных чисел, которые приближают рациональные числа с определенной точностью.

При крепкой математической базе, а также владении многими любимым Python - вы можете в пару строк визуализировать эту задачу с различными подходами к ней.

Кто знает, может вы и будете тем, кто положит конец дискуссиям?
👍4🤓2🤔1
Онлайн-компиляторы живы

Вы думали, что онлайн-компиляторы уже давно где-то отошли в мир иной? А если и есть какие-то, то с унылым дизайном, на котором однажды был запущен пресловутой “hello world”, то ошибаетесь.
Смотрите, тут подборочка отличных онлайн-компиляторов Python и их ключевые функции.

📌 Repl.it - это относительно молодой продукт, который имеет интерфейс, похожий на GitHub и другие системы версионирования.

Что хорошо:
Удобный интерфейс с поддержкой темной темы.
Поддерживает множество других языков, помимо Python.
Позволяет совместное редактирование кода.
Обладает встроенным отладчиком и терминалом.
Поставляется с удобным менеджером пакетов.

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

📌 Colab - это многослойное решение от Google, которое занимает одно из лидирующих мест благодаря финансированию. Многие преподаватели курсов по машинному обучению предпочитают использовать именно этот инструмент.

Что хорошо:
Бесплатный доступ к GPU (графическому процессору), что обеспечивает высокую производительность при выполнении вычислений.
Встроенное версионирование, что позволяет отслеживать историю изменений аналогично Google Docs.
Логичный и удобный интерфейс «Поделиться», наследуемый от Google Диска, для совместной работы над проектами.
Автозаполнение и интерактивные виджеты, например, возможность "причесывания таблиц".
Импортирование популярных библиотек без необходимости их установки.

Что плохо:
Иногда мощностей, предоставляемых Colab, не хватает для обработки данных, которые не считаются "большими".

📌 MyBinder.org (Jupyter Notebook) - это среда, которая специализирована для развертывания готового кода и может "принять" ваш репозиторий, выделяя для него контейнер Docker.

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

Что плохо:
Работает только с репозиториями, поэтому не позволяет запускать пустые компиляторы для простых задач, таких как вывод "Hello World". Требует наличия кода или проекта в репозитории для работы.

📌 Glot.io - это многоязыковой компилятор, который предоставляет быстрый доступ к среде исполнения кода.

Что хорошо:
Обеспечивает быстрый доступ к среде исполнения кода, не требуя регистрации или переходов по сложной процедуре.
Поддерживает несколько языков программирования, включая Python, что позволяет использовать различные языки для разработки проектов.
Имеет простой и понятный интерфейс, что делает работу с компилятором легкой и удобной даже для новичков.
Позволяет запускать фрагменты кода без создания учетной записи, что упрощает быстрое тестирование и проверку различных кодовых конструкций.
Предоставляет возможность сохранения фрагментов кода в виде "gists" для дальнейшего использования и обмена ими с другими пользователями.

Что плохо:
Не поддерживает импорт кода непосредственно из репозитория, что может ограничивать возможности работы с внешними проектами и требовать ручного копирования кода для использования в компиляторе.
👍3🔥1
📢 Регистрация на Google I/O Extended Bishkek 2023 от GDG Bishkek и Mad Devs 📢

12 августа в ololo Planet состоится Google I/O Extended! Этот оффлайн ивент организован волонтерским сообществом GDG Bishkek в со-организации с Mad Devs, и входит в серию ивентов Google I/O, проходящих по всему миру. На протяжении многих лет этот ивент объединяет профессионалов из различных областей, чтобы обсудить последние инновации и технологические тенденции.

В этом году в программе будут темы посвященные продуктам Google, IoT, matter protocol, Flutter roadmap, Generative AI, Accessibility 101. Расписание и список спикеров будет опубликован совсем скоро на странице GDG Bishkek.

Участие в Google I/O Extended абсолютно бесплатное, но количество мест ограничено, поэтому не забудьте зарегистрироваться заранее. Пройти регистрацию вы сможете перейдя по ссылке.

🗓️ Дата: 12 августа 2023 (суббота)
Время: стартуем в 10:30
🏢 Место: ololo Planet (Бишкек, Юнусалиева 80)
🔥5👏32
Вспомним про матанализ

Математический анализ (матанализ) – это база. Для чего он нужен:

1️⃣ Оценить время выполнения алгоритма. Например, если у нас есть алгоритм сортировки сложности O(n log n), и алгоритм сложности O(n^2), то при увеличении размера данных в несколько раз, алгоритм с O(n log n) будет более эффективным.

2️⃣ Определить способы оптимизации алгоритма. Анализ может показать, что перед обработкой данных их нужно отсортировать или что оптимальная скорость работы программы достигается при использовании определенной структуры данных, например, хэш-таблицы вместо списка.

3️⃣Создать адаптивные алгоритмы, которые могут изменять количество потоков выполнения в зависимости от доступных ядер процессора или автоматически выбирать наилучшую структуру для работы с определенным набором данных. Такие алгоритмы могут более эффективно использовать ресурсы и приспосабливаться к различным условиям выполнения.

🔺В случае машинного обучения и ИИ, с помощью матанализа оптимизируют модели, оценивают градиенты и решают дифференциальные уравнения.

🔺В Data science он используется в разработке алгоритмов регрессии, классификации и кластеризации данных.

🔺В разработке игр матанализ позволяет моделировать и симулировать сложные явления, процессы и поведение объектов.

Как прокачать себя по матанализу? Вот книги и математические библиотеки, которые помогут подтянуть знания. А лучше, конечно, на курсы записаться.

Книги:
📚«Математический анализ», В.А. Зорича
📚«Сборник задач и упражнений по математическому анализу», Б. П. Демидович
📚«Курс математического анализа», Л. Д. Кудрявцев

Библиотеки:
📍SciPy – используется для инженерных и научных расчетов.
📍SymPy – применяется для символьных вычислений.
📍PyDSTool – мощный инструмент для моделирования и анализа динамических систем.
📍SymEngine – супербыстрая C++ библиотека, которая легко интегрируется с Python и используется для символьных вычислений.
👍4
Коллекция сниппетов для замера производительности страницы

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

💡 Экономьте время и повышайте эффективность работы с коллекцией сниппетов. Просто скопируйте их в консоль браузера или используйте в DevTools во вкладке Sources. Создавайте, запускайте и сохраняйте свои сниппеты для замеров и анализа любой странички. Подробнее в этом репозитории.
🔥2👍1
Forwarded from Кибирд | Keybeard
Что такое Product Management? Кто такой Product Manager и какие функции он выполняет? В чем отличие между Product Owner и Product Manager?

Так много вопросов и так мало ответов. Но не отчаивайтесь! На них вам ответят в новом выпуске #Кибирд Михаил Иващенко и Олег Пузанов. Вы узнаете, кто такой Product Manager и зачем он нужен команде, а еще как Product Manager направляет команду к цели и в чем польза от discovery phase.

🔗 https://youtu.be/qBTGzYEEyrM

Приятного просмотра!
🔥9
Как написать чистый код и сделать жизнь проще
Сегодня разберемся что такое чистый код и зачем он нужен. А также опишем принципы его создания.

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

💻 Разработчикам. Чистый код позволяет быстро анализировать и дорабатывать уже готовый код, включая собственный, написанный ранее. Это сокращает время на разработку и улучшает "time to market" (время от идеи до реализации).

🧑‍💼 Техлидам. Чистый код облегчает задачи техлидов, позволяя быстрее проводить ревью кода и переключаться между задачами. Он также способствует соблюдению соглашений в команде.

💼 Бизнесу. Для бизнеса важна скорость появления новых функций и минимальное количество ошибок. Чистый код позволяет команде быстро работать и выпускать качественные продукты, что способствует росту прибыли компании.

Как писать чистый код?
📍 Постоянно улучшайте свой код. Поддерживайте код в хорошем состоянии, удаляйте неиспользуемое и обновляйте с учётом требований.

📍 Делите код на слои, где каждый с определённой функцией. Разделяйте логику и представление для упрощения тестирования и независимости. Используйте вертикальное разделение и луковичную архитектуру для более чистого и организованного кода.

📍 Проектируйте сервисы, классы и функции, соблюдая принципы SOLID. Особенно важен "Принцип единственной ответственности (Single Responsibility Principle)". То есть пишите функции, которые делают только одну вещь — и делают её хорошо.

📍 Ограничивайте наследование, чтобы избежать сложных иерархий, которые усложняют отладку.

📍 Предпочитайте полиморфизм операторам If/Else, перенося поведение в классы.

📍 Используйте принцип DRY, чтобы избегать дублирования кода и повторно использовать его только при сохранении ответственности.

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

📍 G22: Делайте физические зависимости между модулями. Зависимости должны быть явными и легко понимаемыми.

📍 Используйте понятные и описательные имена для переменных, функций и классов. Избегайте сокращений и аббревиатур.

📍 Форматируйте код:
Используйте сочетание клавиш Ctrl + Alt + L в Idea для автоматического форматирования.
Добавьте одну пустую строку в отступах между блоками кода. Это облегчит восприятие.

📍 Используйте принципы TDD:
Не пишите продукционный код без необходимого покрытия тестами.
Напишите достаточно тестов для выявления проблем, избегая дублирования проверок на разных уровнях.
Не пишите больше продукционного кода, чем необходимо для прохождения текущих тестов.

📍 Используйте исключения только для обозначения критических ошибок. Для обработки ошибок предпочитайте Result-Oriented Programming (R.O.P) или другие подходы, чтобы код был более предсказуемым и безопасным.

📍 Оставляйте комментарии в коде для объяснения причин выбора определенного подхода, а не для описания того, что код делает.

📍 Задавайте границы для внешних библиотек и систем

📍 Живите в парадигме Null Safety — не передавайте, не возвращайте и не используйте null.

📍 Максимальный размер функции/метода — 5 строк. Кристиан Клаусен и Роберт Мартин рекомендуют этот подход. Компактный код улучшает читаемость, облегчает понимание и поддержку. Ограничивайте объем функции, разделяя логику на более мелкие и понятные части.

📍 Отделите бизнес-логику от технических деталей. Бизнес-правила, валидация и расчёты должны быть чётко разделены от базы данных и интеграций.

📍 Идеальное количество входных параметров для функции - один
Возвращайте результат изменения функции, избегая множества аргументов. Упакуйте некоторые в отдельный класс для читаемости кода.

А каких правил придерживаетесь вы при написании кода?
👍5🫡2🤓1
Наглядный справочник по TypeScript

Большинство из нас лучше всего усваивает информацию через визуальные объекты, и особенно их движение. Так вот для всех неравнодушных к TypeScript счастливый день, поскольку есть информационный ресурс построенный на этой эволюционной особенности!

В этом сборнике Medium вы найдете ссылки на более, чем 40 статей от одного автора, который заморочился объяснить многие принципы и особенности TypeScript через наглядную анимацию. Отдельного внимания заслуживает серия статей о реализации типов утилит - Pick, Omit, RequiredByKeys и других.

Просто переходите и наслаждайтесь!
👍3🎉2🥰1