Онлайн-компиляторы живы
Вы думали, что онлайн-компиляторы уже давно где-то отошли в мир иной? А если и есть какие-то, то с унылым дизайном, на котором однажды был запущен пресловутой “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" для дальнейшего использования и обмена ими с другими пользователями.
Что плохо:
➖Не поддерживает импорт кода непосредственно из репозитория, что может ограничивать возможности работы с внешними проектами и требовать ручного копирования кода для использования в компиляторе.
Вы думали, что онлайн-компиляторы уже давно где-то отошли в мир иной? А если и есть какие-то, то с унылым дизайном, на котором однажды был запущен пресловутой “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)
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👏3❤2
Вспомним про матанализ
Математический анализ (матанализ) – это база. Для чего он нужен:
1️⃣ Оценить время выполнения алгоритма. Например, если у нас есть алгоритм сортировки сложности O(n log n), и алгоритм сложности O(n^2), то при увеличении размера данных в несколько раз, алгоритм с O(n log n) будет более эффективным.
2️⃣ Определить способы оптимизации алгоритма. Анализ может показать, что перед обработкой данных их нужно отсортировать или что оптимальная скорость работы программы достигается при использовании определенной структуры данных, например, хэш-таблицы вместо списка.
3️⃣Создать адаптивные алгоритмы, которые могут изменять количество потоков выполнения в зависимости от доступных ядер процессора или автоматически выбирать наилучшую структуру для работы с определенным набором данных. Такие алгоритмы могут более эффективно использовать ресурсы и приспосабливаться к различным условиям выполнения.
🔺В случае машинного обучения и ИИ, с помощью матанализа оптимизируют модели, оценивают градиенты и решают дифференциальные уравнения.
🔺В Data science он используется в разработке алгоритмов регрессии, классификации и кластеризации данных.
🔺В разработке игр матанализ позволяет моделировать и симулировать сложные явления, процессы и поведение объектов.
Как прокачать себя по матанализу? Вот книги и математические библиотеки, которые помогут подтянуть знания. А лучше, конечно, на курсы записаться.
Книги:
📚«Математический анализ», В.А. Зорича
📚«Сборник задач и упражнений по математическому анализу», Б. П. Демидович
📚«Курс математического анализа», Л. Д. Кудрявцев
Библиотеки:
📍SciPy – используется для инженерных и научных расчетов.
📍SymPy – применяется для символьных вычислений.
📍PyDSTool – мощный инструмент для моделирования и анализа динамических систем.
📍SymEngine – супербыстрая C++ библиотека, которая легко интегрируется с Python и используется для символьных вычислений.
Математический анализ (матанализ) – это база. Для чего он нужен:
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. Создавайте, запускайте и сохраняйте свои сниппеты для замеров и анализа любой странички. Подробнее в этом репозитории.
Сегодня у нас короткий, но очень полезный пост для всех, кто в работе внимательно следит за производительностью веб-страниц.
💡 Экономьте время и повышайте эффективность работы с коллекцией сниппетов. Просто скопируйте их в консоль браузера или используйте в DevTools во вкладке Sources. Создавайте, запускайте и сохраняйте свои сниппеты для замеров и анализа любой странички. Подробнее в этом репозитории.
GitHub
GitHub - nucliweb/webperf-snippets: ⚡️ 💾 Web Performance Snippets
⚡️ 💾 Web Performance Snippets. Contribute to nucliweb/webperf-snippets development by creating an account on GitHub.
🔥2👍1
Forwarded from Кибирд | Keybeard
Что такое Product Management? Кто такой Product Manager и какие функции он выполняет? В чем отличие между Product Owner и Product Manager?
Так много вопросов и так мало ответов. Но не отчаивайтесь! На них вам ответят в новом выпуске #Кибирд Михаил Иващенко и Олег Пузанов. Вы узнаете, кто такой Product Manager и зачем он нужен команде, а еще как Product Manager направляет команду к цели и в чем польза от discovery phase.
🔗 https://youtu.be/qBTGzYEEyrM
Приятного просмотра!
Так много вопросов и так мало ответов. Но не отчаивайтесь! На них вам ответят в новом выпуске #Кибирд Михаил Иващенко и Олег Пузанов. Вы узнаете, кто такой 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 строк. Кристиан Клаусен и Роберт Мартин рекомендуют этот подход. Компактный код улучшает читаемость, облегчает понимание и поддержку. Ограничивайте объем функции, разделяя логику на более мелкие и понятные части.
📍 Отделите бизнес-логику от технических деталей. Бизнес-правила, валидация и расчёты должны быть чётко разделены от базы данных и интеграций.
📍 Идеальное количество входных параметров для функции - один
Возвращайте результат изменения функции, избегая множества аргументов. Упакуйте некоторые в отдельный класс для читаемости кода.
А каких правил придерживаетесь вы при написании кода?
Сегодня разберемся что такое чистый код и зачем он нужен. А также опишем принципы его создания.
Кому и для чего нужен чистый код?
Чистый код — это ключевой фактор для повышения производительности и снижения времени разработки. Он является необходимым инструментом для повышения производительности, ускорения разработки и достижения успешных бизнес-результатов.
💻 Разработчикам. Чистый код позволяет быстро анализировать и дорабатывать уже готовый код, включая собственный, написанный ранее. Это сокращает время на разработку и улучшает "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 и других.
Просто переходите и наслаждайтесь!
Большинство из нас лучше всего усваивает информацию через визуальные объекты, и особенно их движение. Так вот для всех неравнодушных к TypeScript счастливый день, поскольку есть информационный ресурс построенный на этой эволюционной особенности!
В этом сборнике Medium вы найдете ссылки на более, чем 40 статей от одного автора, который заморочился объяснить многие принципы и особенности TypeScript через наглядную анимацию. Отдельного внимания заслуживает серия статей о реализации типов утилит - Pick, Omit, RequiredByKeys и других.
Просто переходите и наслаждайтесь!
👍3🎉2🥰1
ООП: инкапсуляция в программировании
Важные принципы объектно-ориентированного программирования (ООП) играют ключевую роль в создании эффективных и структурированных программ. Один из таких принципов — инкапсуляция, позволяющая скрывать детали реализации объектов от внешнего мира.
Инкапсуляция данных в разработке ПО имеет много практических применений. Вот несколько примеров:
📍 Безопасность данных. Защита данных от некорректного доступа. Класс предоставляет методы (геттеры и сеттеры) для безопасного доступа и проверки операций.
📍 Сокрытие реализации. Инкапсуляция позволяет менять внутреннюю реализацию класса без влияния на внешний код, облегчая поддержку и развитие программы.
📍 Упрощение интерфейса. Инкапсуляция обеспечивает простой интерфейс взаимодействия с объектами через публичные методы класса, скрывая детали его внутренней реализации.
📍 Модульность. Инкапсуляция создает модульные системы с классами, представляющими отдельные модули с данными и методами. Модули взаимодействуют через публичные интерфейсы, улучшая читаемость и восприятие кода.
📍 Принцип единственной ответственности. Инкапсуляция соответствует принципу единственной ответственности. Класс отвечает только за свои данные и операции с ними.
📍 Контроль доступа. Инкапсуляция в ООП устанавливает уровни доступа к данным и методам, обеспечивая защиту и контроль кода.
Применение процесса инкапсуляции в программировании помогает обеспечить структурированный, безопасный и гибкий код. Кроме того, внедрение инкапсуляции в программирование помогает эффективно управлять сложностью кода и облегчает сотрудничество разработчиков в процессе работы над крупными проектами.
Важные принципы объектно-ориентированного программирования (ООП) играют ключевую роль в создании эффективных и структурированных программ. Один из таких принципов — инкапсуляция, позволяющая скрывать детали реализации объектов от внешнего мира.
Инкапсуляция данных в разработке ПО имеет много практических применений. Вот несколько примеров:
📍 Безопасность данных. Защита данных от некорректного доступа. Класс предоставляет методы (геттеры и сеттеры) для безопасного доступа и проверки операций.
📍 Сокрытие реализации. Инкапсуляция позволяет менять внутреннюю реализацию класса без влияния на внешний код, облегчая поддержку и развитие программы.
📍 Упрощение интерфейса. Инкапсуляция обеспечивает простой интерфейс взаимодействия с объектами через публичные методы класса, скрывая детали его внутренней реализации.
📍 Модульность. Инкапсуляция создает модульные системы с классами, представляющими отдельные модули с данными и методами. Модули взаимодействуют через публичные интерфейсы, улучшая читаемость и восприятие кода.
📍 Принцип единственной ответственности. Инкапсуляция соответствует принципу единственной ответственности. Класс отвечает только за свои данные и операции с ними.
📍 Контроль доступа. Инкапсуляция в ООП устанавливает уровни доступа к данным и методам, обеспечивая защиту и контроль кода.
Применение процесса инкапсуляции в программировании помогает обеспечить структурированный, безопасный и гибкий код. Кроме того, внедрение инкапсуляции в программирование помогает эффективно управлять сложностью кода и облегчает сотрудничество разработчиков в процессе работы над крупными проектами.
👍7😢1
JWT - по секрету лишь клиенту
JWT (JSON Web Tokens) - это простой и безопасный способ передачи информации между клиентом и сервером. Своего рода секретное зашифрованное сообщение, расшифровать которое может только получатель.
Он состоит из трех отдельных частей, разделенных точкой (.):
1️⃣ Заголовок: содержит метаданные о токене и используемом криптографическом алгоритме, обычно это HMAC SHA256 или RSA.
2️⃣ Полезная нагрузка: здесь хранятся фактические данные, которые содержит токен. Полезная нагрузка также известна как "утверждения" и может включать информацию о пользователе и дополнительные метаданные.
3️⃣ Подпись: криптографически защищенное доказательство, которое подтверждает отправителя и гарантирует, что сообщение не было изменено во время передачи.
⚙️ Работает вот так:
🔹 Клиент выполняет вход, сервер проверяет учетные данные, генерирует JWT и отправляет его клиенту.
🔹 Клиент хранит JWT и включает его в заголовок каждого последующего HTTP-запроса.
🔹 Сервер проверяет JWT и, если действителен, аутентифицирует и авторизует клиента.
Но не забываем про безопасность при использовании!
‼️ Уязвимости JWT:
🔻 Кража токена: JWT хранятся на клиентской стороне и могут быть украдены. Обязательно использовать HTTPS для защищенной передачи данных.
🔻 Отсутствие встроенного механизма недействительности: JWT не могут быть индивидуально или группово отозваны. Будьте внимательны при работе с устаревшими токенами.
🔻 Размер токена: Слишком большой размер JWT может негативно повлиять на производительность сети. Избегайте хранения большого объема данных в токене.
🔻 Уязвимости алгоритмов: Некоторые алгоритмы JWT могут быть уязвимы к атакам. Всегда используйте безопасные и обновленные алгоритмы, и храните ключи подписи как секретную информацию.
JWT (JSON Web Tokens) - это простой и безопасный способ передачи информации между клиентом и сервером. Своего рода секретное зашифрованное сообщение, расшифровать которое может только получатель.
Он состоит из трех отдельных частей, разделенных точкой (.):
1️⃣ Заголовок: содержит метаданные о токене и используемом криптографическом алгоритме, обычно это HMAC SHA256 или RSA.
2️⃣ Полезная нагрузка: здесь хранятся фактические данные, которые содержит токен. Полезная нагрузка также известна как "утверждения" и может включать информацию о пользователе и дополнительные метаданные.
3️⃣ Подпись: криптографически защищенное доказательство, которое подтверждает отправителя и гарантирует, что сообщение не было изменено во время передачи.
⚙️ Работает вот так:
🔹 Клиент выполняет вход, сервер проверяет учетные данные, генерирует JWT и отправляет его клиенту.
🔹 Клиент хранит JWT и включает его в заголовок каждого последующего HTTP-запроса.
🔹 Сервер проверяет JWT и, если действителен, аутентифицирует и авторизует клиента.
Но не забываем про безопасность при использовании!
‼️ Уязвимости JWT:
🔻 Кража токена: JWT хранятся на клиентской стороне и могут быть украдены. Обязательно использовать HTTPS для защищенной передачи данных.
🔻 Отсутствие встроенного механизма недействительности: JWT не могут быть индивидуально или группово отозваны. Будьте внимательны при работе с устаревшими токенами.
🔻 Размер токена: Слишком большой размер JWT может негативно повлиять на производительность сети. Избегайте хранения большого объема данных в токене.
🔻 Уязвимости алгоритмов: Некоторые алгоритмы JWT могут быть уязвимы к атакам. Всегда используйте безопасные и обновленные алгоритмы, и храните ключи подписи как секретную информацию.
👍8🤔1
Mad Devs в поисках Creative Lead-а 🚀
Наш технический опыт не ограничивает наши творческий потенциал и креативные идеи. Мы реализуем их, создавая посты в социальных сетях, подкасты и стримы, проводя мероприятия, коллаборируя с международными изданиями и, чего уж там, даже записывая видео в TikTok. Чтобы усилить нашу креативную команду, мы ищем Creative Lead-а, который возьмет на себя управление нашей контент-стратегией и процессом публикации, и сублимирует сотни креативных идей рождающихся внутри Mad Devs в вирусный, запоминающийся, хайповый контент, который захватит социальные сети.
Если вы креатор и любитель технологий, заядлый участник различных онлайн-сообществ и всегда в курсе последних новостей, трендов и мемов в мире ИТ, мы ждем вас в нашей команде!
Узнать больше подробностей о вакансии и подать заявку вы можете по ссылке: https://maddevs.io/careers/creative-lead/
Наш технический опыт не ограничивает наши творческий потенциал и креативные идеи. Мы реализуем их, создавая посты в социальных сетях, подкасты и стримы, проводя мероприятия, коллаборируя с международными изданиями и, чего уж там, даже записывая видео в TikTok. Чтобы усилить нашу креативную команду, мы ищем Creative Lead-а, который возьмет на себя управление нашей контент-стратегией и процессом публикации, и сублимирует сотни креативных идей рождающихся внутри Mad Devs в вирусный, запоминающийся, хайповый контент, который захватит социальные сети.
Если вы креатор и любитель технологий, заядлый участник различных онлайн-сообществ и всегда в курсе последних новостей, трендов и мемов в мире ИТ, мы ждем вас в нашей команде!
Узнать больше подробностей о вакансии и подать заявку вы можете по ссылке: https://maddevs.io/careers/creative-lead/
🔥10🤣2
Нужно ли учить язык R, если ты питонист?
R создан для статистического анализа и визуализации данных (dataviz). Python тоже подходит, но R легче в использовании:
📌 Удобные встроенные компоненты: R предлагает простоту работы без сложной документации.
📌 Быстрое прототипирование и обнаружение инсайтов: R помогает быстро находить идеи для анализа данных.
📌 Богатство библиотек и пакетов: R имеет много полезных библиотек для визуализации и обработки данных, таких как ggplot2, dplyr, Leaflet и simplevis.
📌 R и Python имеют примерно одинаковую лаконичность и читаемость синтаксиса
📌 Сообщество R достаточно популярно среди статистиков и исследователей данных, и насчитывает около 2 миллионов человек. Благодаря этому, можно легко найти ответы на сложные вопросы и обмениваться опытом.
➡️Но есть небольшой нюанс - R может быть медленнее Python в некоторых операциях, особенно при использовании циклов for.
В общем, выбор между ними зависит от конкретной задачи и предпочтений разработчика. Если ваша цель - академическая карьера и влияние на науки статистики, теории вероятности и смежные области, R будет более подходящим выбором. Также, R и Python могут успешно совмещаться: R можно использовать для подготовки и очистки данных, а Python - для визуализации.
А вы используете R в своей работе? Поделитесь ваши опытом 👇
R создан для статистического анализа и визуализации данных (dataviz). Python тоже подходит, но R легче в использовании:
📌 Удобные встроенные компоненты: R предлагает простоту работы без сложной документации.
📌 Быстрое прототипирование и обнаружение инсайтов: R помогает быстро находить идеи для анализа данных.
📌 Богатство библиотек и пакетов: R имеет много полезных библиотек для визуализации и обработки данных, таких как ggplot2, dplyr, Leaflet и simplevis.
📌 R и Python имеют примерно одинаковую лаконичность и читаемость синтаксиса
📌 Сообщество R достаточно популярно среди статистиков и исследователей данных, и насчитывает около 2 миллионов человек. Благодаря этому, можно легко найти ответы на сложные вопросы и обмениваться опытом.
➡️Но есть небольшой нюанс - R может быть медленнее Python в некоторых операциях, особенно при использовании циклов for.
В общем, выбор между ними зависит от конкретной задачи и предпочтений разработчика. Если ваша цель - академическая карьера и влияние на науки статистики, теории вероятности и смежные области, R будет более подходящим выбором. Также, R и Python могут успешно совмещаться: R можно использовать для подготовки и очистки данных, а Python - для визуализации.
А вы используете R в своей работе? Поделитесь ваши опытом 👇
👍4
scrollbar-gutter
scrollbar-gutter предназначено для решения проблемы с "прыгающей" шириной контента, которая возникает при появлении или скрытии скроллбара. Обычно это происходит, когда высота контента меняется или появляется модальное окно.
У scrollbar-gutter есть три значения:
📍 auto — это значение по умолчанию. Если у элемента установлено overflow: scroll или overflow: auto, и его содержимое вызывает переполнение, тогда появляется отступ для скроллбара.
📍 stable — отступ для скроллбара появляется, если у элемента установлено overflow: hidden, overflow: scroll или overflow: auto, независимо от того, вызывает ли его содержимое переполнение.
📍 stable both-edges — то же самое, что и stable, но отступы для скроллбара будут создаваться с двух противоположных сторон. При вертикальной прокрутке — справа и слева, при горизонтальной — сверху и снизу.
Важно отметить, что во всех случаях не будет создаваться отступ, если скроллбар является оверлейным.
scrollbar-gutter поддерживается всеми современными браузерами, за исключением Safari. ☝🏻
Подробнее можно узнать здесь
scrollbar-gutter предназначено для решения проблемы с "прыгающей" шириной контента, которая возникает при появлении или скрытии скроллбара. Обычно это происходит, когда высота контента меняется или появляется модальное окно.
У scrollbar-gutter есть три значения:
📍 auto — это значение по умолчанию. Если у элемента установлено overflow: scroll или overflow: auto, и его содержимое вызывает переполнение, тогда появляется отступ для скроллбара.
📍 stable — отступ для скроллбара появляется, если у элемента установлено overflow: hidden, overflow: scroll или overflow: auto, независимо от того, вызывает ли его содержимое переполнение.
📍 stable both-edges — то же самое, что и stable, но отступы для скроллбара будут создаваться с двух противоположных сторон. При вертикальной прокрутке — справа и слева, при горизонтальной — сверху и снизу.
Важно отметить, что во всех случаях не будет создаваться отступ, если скроллбар является оверлейным.
scrollbar-gutter поддерживается всеми современными браузерами, за исключением Safari. ☝🏻
Подробнее можно узнать здесь
👍3🔥1
Anthropic запустила Claude 2 🤖
Anthropic был основан в 2021 году Дарио Амодеем, бывшим директором по исследованиям в компании OpenAI, вместе с другими бывшими сотрудниками компании. Чат-бот стартапа, известный как Claude, проходил закрытое тестирование с января 2023 года.
На сегодняшний день чат-бот Claude имеет бета-версию, которая доступна через платный API с тарифом около $0,0465 за 1000 слов или на сайте claude.ai. На данный момент, сервис доступен только для жителей США и Великобритании. Однако в будущем планируется расширить охват и предоставить доступ к новой модели для пользователей из других стран.
Обновленная нейросеть, Claude 2, представляет собой значительный шаг вперед в области искусственного интеллекта. Она обладает улучшенной способностью писать код, решать математические задачи и создавать более длинные тексты. Кроме того, она чаще форматирует ответы в JSON, XML и YAML правильно. Однако, в отличие от GPT-4, эта нейросеть не способна искать информацию в интернете.
Важно отметить, что Claude 2 также демонстрирует значительное снижение частоты выдачи "обидных, опасных или предвзятых" ответов по сравнению с предыдущей моделью Claude 1.3. Несмотря на улучшения, компания признает, что, как и любая другая модель, Claude 2 не застрахована от возможных сбоев. Поэтому сложно предсказать ее поведения в различных ситуациях. Это подчеркивает важность дальнейшего развития и исследований в области ИИ для обеспечения безопасного и эффективного использования таких мощных инструментов.
По данным стартапа, новая модель, Claude 2, продемонстрировала лучшие результаты по сравнению с Claude 1.3 при прохождении профессионального экзамена для получения медицинской лицензии.
Также, она показала более высокие результаты при ответе на вопросы того же типа из юридического теста — 76,5% против 73%. Это подтверждает улучшенные возможности и эффективность новой модели в решении профессиональных задач и увеличении точности ответов на разнообразные вопросы из различных областей знаний.
Довелось ли вам уже поработать с Claude 2? Поделитесь мнением в комментариях 👇
Anthropic был основан в 2021 году Дарио Амодеем, бывшим директором по исследованиям в компании OpenAI, вместе с другими бывшими сотрудниками компании. Чат-бот стартапа, известный как Claude, проходил закрытое тестирование с января 2023 года.
На сегодняшний день чат-бот Claude имеет бета-версию, которая доступна через платный API с тарифом около $0,0465 за 1000 слов или на сайте claude.ai. На данный момент, сервис доступен только для жителей США и Великобритании. Однако в будущем планируется расширить охват и предоставить доступ к новой модели для пользователей из других стран.
Обновленная нейросеть, Claude 2, представляет собой значительный шаг вперед в области искусственного интеллекта. Она обладает улучшенной способностью писать код, решать математические задачи и создавать более длинные тексты. Кроме того, она чаще форматирует ответы в JSON, XML и YAML правильно. Однако, в отличие от GPT-4, эта нейросеть не способна искать информацию в интернете.
Важно отметить, что Claude 2 также демонстрирует значительное снижение частоты выдачи "обидных, опасных или предвзятых" ответов по сравнению с предыдущей моделью Claude 1.3. Несмотря на улучшения, компания признает, что, как и любая другая модель, Claude 2 не застрахована от возможных сбоев. Поэтому сложно предсказать ее поведения в различных ситуациях. Это подчеркивает важность дальнейшего развития и исследований в области ИИ для обеспечения безопасного и эффективного использования таких мощных инструментов.
По данным стартапа, новая модель, Claude 2, продемонстрировала лучшие результаты по сравнению с Claude 1.3 при прохождении профессионального экзамена для получения медицинской лицензии.
Также, она показала более высокие результаты при ответе на вопросы того же типа из юридического теста — 76,5% против 73%. Это подтверждает улучшенные возможности и эффективность новой модели в решении профессиональных задач и увеличении точности ответов на разнообразные вопросы из различных областей знаний.
Довелось ли вам уже поработать с Claude 2? Поделитесь мнением в комментариях 👇
🤔1🌚1
Методология для проекта
Цикл жизни проекта представляет собой последовательность этапов, которые проходит проект с момента его создания до передачи в операционную эксплуатацию. Ясное представление и понимание этого цикла позволяют команде:
📌 эффективно управлять проектом в соответствии со стратегией развития компании или организации;
📌 поддерживать спокойный темп работы над проектом;
📌отслеживать прогресс и статус каждого этапа проекта;
📌 завершать проекты более оперативно;
📌 минимизировать риски и ограничения;
📌 управлять рисками, закупками, коммуникациями и интеграцией.
Однако не всем удаётся правильно организовать процессы. Согласно данным PMI, как минимум 12% от каждого вложенного миллиарда долларов теряется из-за низкой эффективности выполнения проектов, отсутствия силы и мотивации у команды, а также из-за несоблюдения сроков и неправильного определения приоритетов.
Мы подготовили для вас 3 методологии, которые помогут вам выработать правильный подход. Смотрите в карточках ⬆️
Цикл жизни проекта представляет собой последовательность этапов, которые проходит проект с момента его создания до передачи в операционную эксплуатацию. Ясное представление и понимание этого цикла позволяют команде:
📌 эффективно управлять проектом в соответствии со стратегией развития компании или организации;
📌 поддерживать спокойный темп работы над проектом;
📌отслеживать прогресс и статус каждого этапа проекта;
📌 завершать проекты более оперативно;
📌 минимизировать риски и ограничения;
📌 управлять рисками, закупками, коммуникациями и интеграцией.
Однако не всем удаётся правильно организовать процессы. Согласно данным PMI, как минимум 12% от каждого вложенного миллиарда долларов теряется из-за низкой эффективности выполнения проектов, отсутствия силы и мотивации у команды, а также из-за несоблюдения сроков и неправильного определения приоритетов.
Мы подготовили для вас 3 методологии, которые помогут вам выработать правильный подход. Смотрите в карточках ⬆️
👍6