Какие основные различия между интерпретируемым и компилируемым языком 💻
Языки программирования можно разделить на интерпретируемые и компилируемые, в зависимости от способа их запуска. Поговорим о ключевых различиях между этими подходами.
Интерпретируемые языки
🔺 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
Области применения линейной алгебры в программировании 🖥️
Линейная алгебра — ключевой инструмент в математике, используемый во многих областях, от разработки ПО до биологии и машинного обучения. Она помогает обрабатывать данные, создавать алгоритмы шифрования, моделировать объекты и системы, и многое другое. Важное знание для многих областей.
🖥️ Анализ данных и машинное обучение
Линейная алгебра помогает в поиске связей между переменными, снижении размерности данных, кластеризации и обработке изображений. В линейной регрессии и логистической регрессии используются матричные операции для предсказаний. Метод главных компонент уменьшает размерность данных, а кластерный анализ группирует их по сходству. Нейронные сети, сверточные сети и метод опорных векторов также включают линейную алгебру для обработки данных и классификации.
🖥️ Разработка игр
Она задействована от 3D-графики и физического моделирования до анимации. Описывает объекты в 3D-пространстве, имитирует физическое поведение, и помогает в анимации, создании красочных игровых миров.
🖥️ Искусственный интеллект
Линейная алгебра обрабатывает и анализирует данные, оптимизирует алгоритмы, и помогает в создании умных стратегий и поведения для приложений и игр.
🖥️ Квантовые вычисления
В квантовой механике состояния систем описываются как векторы в линейном пространстве. Квантовые алгоритмы используют линейную алгебру для работы с квантовыми состояниями и операторами. Квантовые вентили, аналогичные битам, представлены матрицами, и используются в алгоритмах квантовых вычислений. Также она применяется в квантовых каналах и задачах оптимизации.
🖥️ 3D-моделирование
Линейная алгебра — основа в ПО для 3D моделирования. Она поддерживает математические модели, трансформации, освещение, анимацию, нормализацию поверхности и расчет коллизий, делая 3D приложения реалистичными и функциональными.
Для упрощения использования линейной алгебры в разработке, можно прибегнуть к специализированным библиотекам.
📍 NumPy и SciPy предоставляют функции для операций над массивами и линейной алгебры.
📍 SymPy позволяет работать с матрицами и векторами, а Pandas удобна для анализа данных в виде таблиц.
📍 Для Data Science и машинного обучения TensorFlow и PyTorch поддерживают многомерные массивы и обширные функции линейной алгебры.
📍 CuPy также обеспечивает матричные операции и вычисления собственных значений. Выбор библиотеки зависит от конкретных потребностей и производительности проекта.
Если вас интересует линейная алгебра, вот несколько книг для чтения:
📍 “Математические алгоритмы для программистов: 3D-графика, машинное обучение и моделирование на Python” — отличное введение в линейную алгебру и математический анализ в программировании с множеством практических примеров на Python.
📍 “Линейная алгебра и ее применения” Гилберта Стренга — обширный учебник, охватывающий основные теоремы и методы линейной алгебры в доступном стиле.
📍 “Высшая математика. Линейная алгебра. Векторная алгебра. Аналитическая геометрия” — объемное пособие с множеством задач, связанных с линейной алгеброй.
Выберите книгу или курс в зависимости от вашего уровня подготовки и интересов, и изучайте линейную алгебру с удовольствием 🧠
Линейная алгебра — ключевой инструмент в математике, используемый во многих областях, от разработки ПО до биологии и машинного обучения. Она помогает обрабатывать данные, создавать алгоритмы шифрования, моделировать объекты и системы, и многое другое. Важное знание для многих областей.
🖥️ Анализ данных и машинное обучение
Линейная алгебра помогает в поиске связей между переменными, снижении размерности данных, кластеризации и обработке изображений. В линейной регрессии и логистической регрессии используются матричные операции для предсказаний. Метод главных компонент уменьшает размерность данных, а кластерный анализ группирует их по сходству. Нейронные сети, сверточные сети и метод опорных векторов также включают линейную алгебру для обработки данных и классификации.
🖥️ Разработка игр
Она задействована от 3D-графики и физического моделирования до анимации. Описывает объекты в 3D-пространстве, имитирует физическое поведение, и помогает в анимации, создании красочных игровых миров.
🖥️ Искусственный интеллект
Линейная алгебра обрабатывает и анализирует данные, оптимизирует алгоритмы, и помогает в создании умных стратегий и поведения для приложений и игр.
🖥️ Квантовые вычисления
В квантовой механике состояния систем описываются как векторы в линейном пространстве. Квантовые алгоритмы используют линейную алгебру для работы с квантовыми состояниями и операторами. Квантовые вентили, аналогичные битам, представлены матрицами, и используются в алгоритмах квантовых вычислений. Также она применяется в квантовых каналах и задачах оптимизации.
🖥️ 3D-моделирование
Линейная алгебра — основа в ПО для 3D моделирования. Она поддерживает математические модели, трансформации, освещение, анимацию, нормализацию поверхности и расчет коллизий, делая 3D приложения реалистичными и функциональными.
Для упрощения использования линейной алгебры в разработке, можно прибегнуть к специализированным библиотекам.
📍 NumPy и SciPy предоставляют функции для операций над массивами и линейной алгебры.
📍 SymPy позволяет работать с матрицами и векторами, а Pandas удобна для анализа данных в виде таблиц.
📍 Для Data Science и машинного обучения TensorFlow и PyTorch поддерживают многомерные массивы и обширные функции линейной алгебры.
📍 CuPy также обеспечивает матричные операции и вычисления собственных значений. Выбор библиотеки зависит от конкретных потребностей и производительности проекта.
Если вас интересует линейная алгебра, вот несколько книг для чтения:
📍 “Математические алгоритмы для программистов: 3D-графика, машинное обучение и моделирование на Python” — отличное введение в линейную алгебру и математический анализ в программировании с множеством практических примеров на Python.
📍 “Линейная алгебра и ее применения” Гилберта Стренга — обширный учебник, охватывающий основные теоремы и методы линейной алгебры в доступном стиле.
📍 “Высшая математика. Линейная алгебра. Векторная алгебра. Аналитическая геометрия” — объемное пособие с множеством задач, связанных с линейной алгеброй.
Выберите книгу или курс в зависимости от вашего уровня подготовки и интересов, и изучайте линейную алгебру с удовольствием 🧠
👍5
Узнайте о том, как создать подушку безопасности для предотвращения выгорания сотрудников и как отслеживать процессы в компании, чтобы не терять денеги. В этой статье на vc.ru мы рассказали об Enji.ai, который собирает данные с ежедневных стендапов, ворклогов и работает с отчетностью из трекеров, мессенджеров и репозиториев кода в одном месте.
vc.ru
Тимлид, который никогда не спит, или как понять, что ваши сотрудники выгорают, до того, как это поняли они сами — Трибуна на vc.ru
Стартап вы или уже единорог, в Саратове или в Сингапуре - мы почти со стопроцентной вероятностью можем вам сказать, что вы тратите лишние деньги.
🔥9👍1
🎙HR-специалист из Mad Devs Клара Абдукова выступит на DevFest 2023 с темой “Почему разработчики — больше не молчаливые ребята в капюшонах?”
Клара - HR специалист с 6+ годами опыта в HR/Talent Manegement, из них уже 4 года работает в IT. Основное направление, на котором специализируется Клара - это построение внутренних процессов в компании, таких как онбординг и оффбординг сотрудников, грейдинг. Выступает в роли ментора и тимлида, и имеет высшее психологическое образование.
В свое докладе Клара сфокусируется на софт скиллах и обсуждении мифов о том, что разработчикам не нужны софт скиллы, немного затронет тему грейдинга, его значение и применение, и как софт скиллы могут влиять на грейд сотрудника.
Конференция DevFest 2023 пройдет уже в это воскресенье 17 декабря, в АУЦА (Бишкек).
Билеты на конференцию в продаже. Их осталось совсем немного.
До встречи на DevFest 2023!
Клара - HR специалист с 6+ годами опыта в HR/Talent Manegement, из них уже 4 года работает в IT. Основное направление, на котором специализируется Клара - это построение внутренних процессов в компании, таких как онбординг и оффбординг сотрудников, грейдинг. Выступает в роли ментора и тимлида, и имеет высшее психологическое образование.
В свое докладе Клара сфокусируется на софт скиллах и обсуждении мифов о том, что разработчикам не нужны софт скиллы, немного затронет тему грейдинга, его значение и применение, и как софт скиллы могут влиять на грейд сотрудника.
Конференция DevFest 2023 пройдет уже в это воскресенье 17 декабря, в АУЦА (Бишкек).
Билеты на конференцию в продаже. Их осталось совсем немного.
До встречи на DevFest 2023!
🔥11
Представьте себе, что вы только что получили электронное письмо от банка, в котором говорится, что ваша учетная запись была взломана. В электронном письме содержится ссылка на веб-сайт, где вы можете проверить свою учетную запись и изменить свой пароль. Однако, как только вы это делаете, вы понимаете, что это была подделка. Но доступ к вашим учетным данным и деньгам на карте уже получен. Это лишь один из многих способов, которыми киберпреступники могут нанести ущерб вашей жизни.
Мекан, ведущий инженер по безопасности в Mad Devs, запустил канал на Youtube, посвященный кибербезопасности. На канале вы найдете видео на различные темы, от базовых правил кибербезопасности до прохождения CTF коробок на HackTheBox.
Очень рекомендуем подписаться на канал Мекана, чтобы чувствовать себя более защищенным в digital мире.
Мекан, ведущий инженер по безопасности в Mad Devs, запустил канал на Youtube, посвященный кибербезопасности. На канале вы найдете видео на различные темы, от базовых правил кибербезопасности до прохождения CTF коробок на HackTheBox.
Очень рекомендуем подписаться на канал Мекана, чтобы чувствовать себя более защищенным в digital мире.
🔥15👍1
Последние билеты на DevFest 2023!
Сегодня последний день продажи билетов и их осталось всего 100 штук. Если вы намерены посетить конференцию в это воскресенье, то советую поторопиться с покупкой.
Помимо интересных докладов от местных и зарубежных спикеров, среди которых эксперты из Alibaba, Aviasales, Skoda Auto, Mad Devs и других компаний, мы приготовили несколько воркшопов, игры и челленджи, выступление музыкальной группы и еще много всего. С полной программой конференции можно ознакомиться здесь.
🔗 Билеты в продаже.
Ждем вас на конференции:
🗓 17 декабря
🕑 10:30-18:00
📍 АУЦА
Сегодня последний день продажи билетов и их осталось всего 100 штук. Если вы намерены посетить конференцию в это воскресенье, то советую поторопиться с покупкой.
Помимо интересных докладов от местных и зарубежных спикеров, среди которых эксперты из Alibaba, Aviasales, Skoda Auto, Mad Devs и других компаний, мы приготовили несколько воркшопов, игры и челленджи, выступление музыкальной группы и еще много всего. С полной программой конференции можно ознакомиться здесь.
🔗 Билеты в продаже.
Ждем вас на конференции:
🗓 17 декабря
🕑 10:30-18:00
📍 АУЦА
🔥5
Почему разработчики бросают программирование 🏃
Несмотря на то, что к 2030 году в IT-отрасли ожидается рост на 22%, количество увольнений только увеличилось на 4,5%, и около пятой части разработчиков хотят покинуть свои нынешние должности. Но стоит отделять людей, которые уходят из разработки в целом, и теми, кто просто покидает свои нынешние должности.
📍 Зарплата. Низкая зарплата часто становится причиной смены работы. Долгосрочное пребывание у одного работодателя может привести к уменьшению дохода на 50%.
📍 Возможности. Поскольку IT — быстрорастущая сфера с постоянными нововведениями, многие предпочитают уходить, ища больше возможностей для экспериментов с различными технологиями.
📍 Повышенная ответственность. Стратегически имеет смысл покинуть перспективно неразвивающуюся работу, если есть возможность продвигаться вперед, беря на себя больше ответственности в другом месте.
📍 Выгорание. 83% разработчиков сталкиваются с выгоранием в течение двух лет. Исправление ошибок, работа в личное время и усталость от работы могут стать причинами скорого выгорания
📍 Здоровье. Любая работа может оказывать негативное влияние на здоровье, а долгое сидение за столом заметно воздействует. Компании, не уделяющие внимание здоровью сотрудников, теряют их быстрее, не предоставляя достаточные страховые возможности и медицинские услуги.
📍 Скука. Разработка ПО может быть скучной и утомительной для некоторых людей, особенно если у них неподходящий тип личности.
📍 Отсутствие цели. Некоторые разработчики могут менять профессии, так как они не находят в этой области удовлетворения и страдают от отсутствия цели и мотивации, что трудно диагностировать и лечить.
📍 Слишком много изменений. Карьера разработчика идеально подходит для людей, которые стремятся к постоянному обучению, но поддерживать высокий уровень знаний и навыков на протяжении всей карьеры может быть вызовом и не всегда осуществимо. Это может привести впоследствии к высокому уровню стресса.
📍 Одиночество. Работа в одиночестве или удаленная работа могут усилить чувство изоляции. Для некоторых людей важно найти способы преодоления одиночества на работе важно.
Несмотря на текучесть разработчиков в IT-отрасли, программирование всё ещё является ценным навыком с высоким спросом, предлагая отличные перспективы карьерного роста.
Несмотря на то, что к 2030 году в IT-отрасли ожидается рост на 22%, количество увольнений только увеличилось на 4,5%, и около пятой части разработчиков хотят покинуть свои нынешние должности. Но стоит отделять людей, которые уходят из разработки в целом, и теми, кто просто покидает свои нынешние должности.
📍 Зарплата. Низкая зарплата часто становится причиной смены работы. Долгосрочное пребывание у одного работодателя может привести к уменьшению дохода на 50%.
📍 Возможности. Поскольку IT — быстрорастущая сфера с постоянными нововведениями, многие предпочитают уходить, ища больше возможностей для экспериментов с различными технологиями.
📍 Повышенная ответственность. Стратегически имеет смысл покинуть перспективно неразвивающуюся работу, если есть возможность продвигаться вперед, беря на себя больше ответственности в другом месте.
📍 Выгорание. 83% разработчиков сталкиваются с выгоранием в течение двух лет. Исправление ошибок, работа в личное время и усталость от работы могут стать причинами скорого выгорания
📍 Здоровье. Любая работа может оказывать негативное влияние на здоровье, а долгое сидение за столом заметно воздействует. Компании, не уделяющие внимание здоровью сотрудников, теряют их быстрее, не предоставляя достаточные страховые возможности и медицинские услуги.
📍 Скука. Разработка ПО может быть скучной и утомительной для некоторых людей, особенно если у них неподходящий тип личности.
📍 Отсутствие цели. Некоторые разработчики могут менять профессии, так как они не находят в этой области удовлетворения и страдают от отсутствия цели и мотивации, что трудно диагностировать и лечить.
📍 Слишком много изменений. Карьера разработчика идеально подходит для людей, которые стремятся к постоянному обучению, но поддерживать высокий уровень знаний и навыков на протяжении всей карьеры может быть вызовом и не всегда осуществимо. Это может привести впоследствии к высокому уровню стресса.
📍 Одиночество. Работа в одиночестве или удаленная работа могут усилить чувство изоляции. Для некоторых людей важно найти способы преодоления одиночества на работе важно.
Несмотря на текучесть разработчиков в IT-отрасли, программирование всё ещё является ценным навыком с высоким спросом, предлагая отличные перспективы карьерного роста.
👍8🤔6❤1👻1
"Джун уронил прод."
Помните реальную историю джуна-разработчика, опубликованную на Reddit в 2017 году? 🤔
История такова, что в ходе выполнения задачи некий джун случайно удалил данные пользователей, заменив их тестовыми значениями. После этого ему сообщили, что его уволили, и компания больше не выходила на связь. Несмотря на явную ошибку юного разработчика (может, он и не юный, но джун все-таки), читатели Reddit поддержали его, отметив неправильное поведение сотрудников компании.
Далее в ветке обсуждения родился чек-лист, который поможет джунам избежать подобных ошибок:
📌 Внимательно проверяйте инструкции и параметры перед запуском скриптов.
📌 Работайте с тестовыми данными и базами данных в отдельной среде, избегая работы с реальными данными.
📌 Создавайте резервные копии перед важными операциями.
📌 Запрашивайте подтверждение и разъяснения у более опытных коллег, если возникают сомнения.
📌 Соблюдайте процедуры безопасности и контроля качества, чтобы избежать случайных удалений или повреждения данных.
Соблюдая эти простые правила, вам будет легче избежать ошибок и повысить надежность своих действий при работе с кодом и базами данных. 👍
Помните реальную историю джуна-разработчика, опубликованную на Reddit в 2017 году? 🤔
История такова, что в ходе выполнения задачи некий джун случайно удалил данные пользователей, заменив их тестовыми значениями. После этого ему сообщили, что его уволили, и компания больше не выходила на связь. Несмотря на явную ошибку юного разработчика (может, он и не юный, но джун все-таки), читатели Reddit поддержали его, отметив неправильное поведение сотрудников компании.
Далее в ветке обсуждения родился чек-лист, который поможет джунам избежать подобных ошибок:
📌 Внимательно проверяйте инструкции и параметры перед запуском скриптов.
📌 Работайте с тестовыми данными и базами данных в отдельной среде, избегая работы с реальными данными.
📌 Создавайте резервные копии перед важными операциями.
📌 Запрашивайте подтверждение и разъяснения у более опытных коллег, если возникают сомнения.
📌 Соблюдайте процедуры безопасности и контроля качества, чтобы избежать случайных удалений или повреждения данных.
Соблюдая эти простые правила, вам будет легче избежать ошибок и повысить надежность своих действий при работе с кодом и базами данных. 👍
❤22👍3
Подсказка по промптам📖
Промпт-инжиниринг — это стратегии и тактики для создания, оценки и улучшения запросов, которые мы отправляем ИИ-моделям, таким как ChatGPT. Для достижения наилучших результатов важно понимать логику и функционал ИИ, а также использовать это понимание.
Техника для создания запросов следующая:
📌 Вы можете указать желаемый тон, стиль и лексику, добавив соответствующие инструкции в запрос, например, "напиши официально" или "изложи как разговор".
📌 Четко определите желаемую структуру ответа, объем, разбивку на разделы или установите ограничения по времени и формату, чтобы более точно управлять результатом.
📌 Многие модели ИИ поддерживают специальные системные команды, которые позволяют настроить параметры, такие как максимальная длина текста.
📌 Включите в запрос информацию, которая обеспечит ИИ необходимым контекстом для выполнения запроса и понимания нюансов.
📌 Разбейте сложные задачи на последовательность более простых запросов, где результат одного запроса становится входом для следующего.
📌 Экспериментируйте с разными формулировками и систематически тестируйте запросы, чтобы найти наилучший вариант и улучшить их со временем.
Есть ли у вас советы по работе с ИИ? Поделитесь ими в комментариях 👇
Промпт-инжиниринг — это стратегии и тактики для создания, оценки и улучшения запросов, которые мы отправляем ИИ-моделям, таким как ChatGPT. Для достижения наилучших результатов важно понимать логику и функционал ИИ, а также использовать это понимание.
Техника для создания запросов следующая:
📌 Вы можете указать желаемый тон, стиль и лексику, добавив соответствующие инструкции в запрос, например, "напиши официально" или "изложи как разговор".
📌 Четко определите желаемую структуру ответа, объем, разбивку на разделы или установите ограничения по времени и формату, чтобы более точно управлять результатом.
📌 Многие модели ИИ поддерживают специальные системные команды, которые позволяют настроить параметры, такие как максимальная длина текста.
📌 Включите в запрос информацию, которая обеспечит ИИ необходимым контекстом для выполнения запроса и понимания нюансов.
📌 Разбейте сложные задачи на последовательность более простых запросов, где результат одного запроса становится входом для следующего.
📌 Экспериментируйте с разными формулировками и систематически тестируйте запросы, чтобы найти наилучший вариант и улучшить их со временем.
Есть ли у вас советы по работе с ИИ? Поделитесь ими в комментариях 👇
👍5❤1
6 типичных ошибок новичков в Python
«Выстрелить себе в ногу» в программировании — это создание кода, способного сломать программу, но при этом не вызвать ошибку, позволяет программе продолжить работу. Термин произошел от описания рисков неосторожных действий в языке программирования C/C++. Но, на самом деле, это касается и других языков программирования.
Например, Python назвали «двуствольным обрезом», который иногда стреляет неудобствами, но трудно предсказать, когда именно.
Если вы только начали изучать программирование, не переживайте, стрелять в ногу — это нормально. Давайте разберемся с разными ошибками в Python, чтобы сократить риск ошибок в коде:
📝 Невнятное именование
Чёткие имена переменных облегчают чтение кода и уменьшают ошибки.
📝 Внешние модули вместо встроенных
Использование встроенных модулей Python обеспечивает стабильность, переносимость и производительность.
📝 Проверка типов
Проверять, с чем работают те или иные функции/методы — хороший способ избежать незапланированного поведения программы и повысить безопасность.
📝 Обработка исключений
Использование try-except помогает избежать прерываний в работе программы и упрощает отладку.
📝 Отсутствие тестов
Создание даже несовершенных тестов лучше, чем выпуск приложения без них.
Начните с простых тестов и постепенно улучшайте навыки тестирования.
Рекомендуется дополнительно изучить тестирование, особенно если вы планируете работать в продакшене.
📝 Не закрывать файлы и ресурсы
Неосвобожденные ресурсы могут привести к утечкам памяти и проблемам с ресурсами.
Следуя этим небольшим рекомендациям, можно облегчить свой путь в Python и стрелять по запланированным «мишеням».
«Выстрелить себе в ногу» в программировании — это создание кода, способного сломать программу, но при этом не вызвать ошибку, позволяет программе продолжить работу. Термин произошел от описания рисков неосторожных действий в языке программирования C/C++. Но, на самом деле, это касается и других языков программирования.
Например, Python назвали «двуствольным обрезом», который иногда стреляет неудобствами, но трудно предсказать, когда именно.
Если вы только начали изучать программирование, не переживайте, стрелять в ногу — это нормально. Давайте разберемся с разными ошибками в Python, чтобы сократить риск ошибок в коде:
📝 Невнятное именование
Чёткие имена переменных облегчают чтение кода и уменьшают ошибки.
📝 Внешние модули вместо встроенных
Использование встроенных модулей Python обеспечивает стабильность, переносимость и производительность.
📝 Проверка типов
Проверять, с чем работают те или иные функции/методы — хороший способ избежать незапланированного поведения программы и повысить безопасность.
📝 Обработка исключений
Использование try-except помогает избежать прерываний в работе программы и упрощает отладку.
📝 Отсутствие тестов
Создание даже несовершенных тестов лучше, чем выпуск приложения без них.
Начните с простых тестов и постепенно улучшайте навыки тестирования.
Рекомендуется дополнительно изучить тестирование, особенно если вы планируете работать в продакшене.
📝 Не закрывать файлы и ресурсы
Неосвобожденные ресурсы могут привести к утечкам памяти и проблемам с ресурсами.
Следуя этим небольшим рекомендациям, можно облегчить свой путь в Python и стрелять по запланированным «мишеням».
❤4👏1
Как сторителлинг помогает в аналитике 📚
В 2009 году журналисты Роб Уокер и Джошуа Гленн провели интересный эксперимент, демонстрирующий, как эмоции могут повысить стоимость товара. Они обнаружили, что люди были готовы платить больше за бутылку вина, если им рассказывали историю о том, как она была изготовлена.
Этот принцип также применим в аналитике данных, где сторителлинг помогает перевести сложные отчеты в понятные истории. Он может быть эффективным инструментом для аналитики данных, но важно использовать его правильно.
Допустим, что вы аналитик в компании, которая разрабатывает дополнения к программе 1С. Вы хотите понять, почему многие пользователи не покупают ваши продукты.
Вы можете использовать сторителлинг, чтобы создать историю о гипотетическом пользователе, который ищет дополнение к 1С. Эта история могла бы включать в себя такие элементы, как:
📌 Цели пользователя: Чего пользователь хочет достичь, покупая дополнение? Например, хочет ли он автоматизировать свой бизнес или улучшить эффективность работы?
📌 Задачи пользователя: Какие шаги пользователь должен предпринять, чтобы достичь своих целей? Например, он должен найти дополнение, которое соответствует его потребностям, прочитать описание, изучить отзывы и проверить совместимость.
📌 Сложности, с которыми сталкивается пользователь: Какие препятствия могут возникнуть на пути пользователя? Например, он может столкнуться с медленной загрузкой страницы, неясным описанием или отсутствием информации о совместимости.
“Распаковав” эти элементы, вы можете создать историю, которая будет интересна и актуальна для вашей целевой аудитории, потому что будет бить точно в боль Еще такая история может помочь вам понять, как улучшить пользовательский опыт и повысить конверсию.
📕 Бонус: Если вам интересна эта тема, то обратите свое внимание на книгу Коул Нассбаумер Нафлик «Данные: визуализируй, расскажи, используй».
В 2009 году журналисты Роб Уокер и Джошуа Гленн провели интересный эксперимент, демонстрирующий, как эмоции могут повысить стоимость товара. Они обнаружили, что люди были готовы платить больше за бутылку вина, если им рассказывали историю о том, как она была изготовлена.
Этот принцип также применим в аналитике данных, где сторителлинг помогает перевести сложные отчеты в понятные истории. Он может быть эффективным инструментом для аналитики данных, но важно использовать его правильно.
Допустим, что вы аналитик в компании, которая разрабатывает дополнения к программе 1С. Вы хотите понять, почему многие пользователи не покупают ваши продукты.
Вы можете использовать сторителлинг, чтобы создать историю о гипотетическом пользователе, который ищет дополнение к 1С. Эта история могла бы включать в себя такие элементы, как:
📌 Цели пользователя: Чего пользователь хочет достичь, покупая дополнение? Например, хочет ли он автоматизировать свой бизнес или улучшить эффективность работы?
📌 Задачи пользователя: Какие шаги пользователь должен предпринять, чтобы достичь своих целей? Например, он должен найти дополнение, которое соответствует его потребностям, прочитать описание, изучить отзывы и проверить совместимость.
📌 Сложности, с которыми сталкивается пользователь: Какие препятствия могут возникнуть на пути пользователя? Например, он может столкнуться с медленной загрузкой страницы, неясным описанием или отсутствием информации о совместимости.
“Распаковав” эти элементы, вы можете создать историю, которая будет интересна и актуальна для вашей целевой аудитории, потому что будет бить точно в боль Еще такая история может помочь вам понять, как улучшить пользовательский опыт и повысить конверсию.
📕 Бонус: Если вам интересна эта тема, то обратите свое внимание на книгу Коул Нассбаумер Нафлик «Данные: визуализируй, расскажи, используй».
👍4🤔1
Приоритизация задач по методу MoSCoW 📊
Представьте, что вы работаете над новым продуктом. Вы собрали команду, разработали план, но столкнулись с проблемой: задач слишком много. Как определить, какие задачи следует реализовать в первую очередь, а какие можно отложить?
На помощь приходит метод MoSCoW.
📌Метод MoSCoW - это простой способ расставить приоритеты задач. Он основан на двух критериях: важности и срочности. В аббревиатуре MoSCoW скрыты четыре категории требований:
➕Must-have - обязательно нужно сделать.
✔️Should-have - желательно сделать, но можно отложить.
♾ Could-have - можно сделать, если есть время и ресурсы.
➖Won't-have - не будем делать.
Вот пример того, как можно использовать метод:
Проект: Разработка нового приложения для мобильных устройств
Задачи:
Must-have: Добавить возможность регистрации с помощью социальных сетей
Should-have: Добавить возможность создания собственных списков
Could-have: Добавить функцию перевода
Won't-have: Добавить возможность 3D-просмотра
Как видите, метод MoSCoW позволяет быстро и легко расставить приоритеты для задач. Но у него есть и недостатки.
Во-первых, это субъективность. Члены команды могут иметь разные взгляды на важность и срочность задач, а это ведет к разногласиям. Что поможет? Объективная система оценки.
Во-вторых, это статичность. Приоритеты задач могут меняться со временем, в зависимости от условий. Какой выход? Не забывать пересматривать приоритеты.
Если вы хотите повысить свою продуктивность и улучшить результаты работы, попробуйте использовать этот метод.
Представьте, что вы работаете над новым продуктом. Вы собрали команду, разработали план, но столкнулись с проблемой: задач слишком много. Как определить, какие задачи следует реализовать в первую очередь, а какие можно отложить?
На помощь приходит метод MoSCoW.
📌Метод MoSCoW - это простой способ расставить приоритеты задач. Он основан на двух критериях: важности и срочности. В аббревиатуре MoSCoW скрыты четыре категории требований:
➕Must-have - обязательно нужно сделать.
✔️Should-have - желательно сделать, но можно отложить.
♾ Could-have - можно сделать, если есть время и ресурсы.
➖Won't-have - не будем делать.
Вот пример того, как можно использовать метод:
Проект: Разработка нового приложения для мобильных устройств
Задачи:
Must-have: Добавить возможность регистрации с помощью социальных сетей
Should-have: Добавить возможность создания собственных списков
Could-have: Добавить функцию перевода
Won't-have: Добавить возможность 3D-просмотра
Как видите, метод MoSCoW позволяет быстро и легко расставить приоритеты для задач. Но у него есть и недостатки.
Во-первых, это субъективность. Члены команды могут иметь разные взгляды на важность и срочность задач, а это ведет к разногласиям. Что поможет? Объективная система оценки.
Во-вторых, это статичность. Приоритеты задач могут меняться со временем, в зависимости от условий. Какой выход? Не забывать пересматривать приоритеты.
Если вы хотите повысить свою продуктивность и улучшить результаты работы, попробуйте использовать этот метод.
👍6🔥1
Как правильно писать bug-report: готовый шаблон от Mad Devs
Мы спросили наших разработчиков, какая проблема остается одной из самых актуальных в коммуникации с менеджерами. Ответ прозвучал незамедлительно: написание баг репортов. Некоторые до сих пор считают, что писать подробный баг-репорт — это слишком долго и трудоемко, и, экономя время, отписывают разработчику короткое сообщение в личной переписке.
Такой якобы простой формат наоборот приносит много проблем в дальнейшем: так труднее получить всю нужную информацию, чтобы быстрее найти и устранить ошибку. Кроме того, как отслеживать прогресс в работе с ошибками, когда все лежит в разных чатах и переписках?
Поэтому мы подготовили небольшой шаблон по-настоящему эффективного баг-репорта. Следуя ему, вы сможете дать полное представление о проблеме, отследить ее, проконтролировать срочность выполнения и зафиксировать ответственных.
Мы спросили наших разработчиков, какая проблема остается одной из самых актуальных в коммуникации с менеджерами. Ответ прозвучал незамедлительно: написание баг репортов. Некоторые до сих пор считают, что писать подробный баг-репорт — это слишком долго и трудоемко, и, экономя время, отписывают разработчику короткое сообщение в личной переписке.
Такой якобы простой формат наоборот приносит много проблем в дальнейшем: так труднее получить всю нужную информацию, чтобы быстрее найти и устранить ошибку. Кроме того, как отслеживать прогресс в работе с ошибками, когда все лежит в разных чатах и переписках?
Поэтому мы подготовили небольшой шаблон по-настоящему эффективного баг-репорта. Следуя ему, вы сможете дать полное представление о проблеме, отследить ее, проконтролировать срочность выполнения и зафиксировать ответственных.
🔥5
Найди 10 отличий: модуль. Пакет. Библиотека. Фреймворк
Новички в программировании часто путают модули, пакеты, библиотеки и фреймворки. Это нормально! В них легко запутаться, потому что они могут частично дублировать функционал друг друга. Давайте разберемся в этих терминах простым языком.
Так понятия описывают в учебниках и статьях:
📌Модуль (Module) — в Python представляет собой логически обособленный сниппет кода в отдельном файле с расширением .py. Модули помогают улучшить структуру кода, позволяя сосредотачиваться на отдельных частях задачи, избегать дублирования кода и минимизировать вероятность конфликта имен.
📌Пакет (Package) — каталоги модулей с иерархической структурой пространства имен. Он служит для группировки и упорядочивания модулей, предоставляя организацию, аналогичную распределению файлов на жестком диске в папках и подпапках.
📌 Библиотека (Library) — объект, который находится на более высоком уровне, содержащий связанные модули и/или пакеты.
📌 Фреймворк (Framework) — в контексте разработки программ представляет собой набор модулей и пакетов, предназначенных для ускорения процесса программирования. Фреймворки более сложны и обладают архитектурой приложения. Известные представители класса – Django, Flask и Bottle.
Как объясним это мы? Очень просто:
Модуль — инструменты в ящике с инструментами. Они используются для выполнения определенных задач.
Пакет — коробка с инструментами. То есть это контейнеры, в которых хранятся модули.
Библиотека — набор инструментов. Это наборы модулей, которые предоставляют определенные функции или возможности.
Фреймворк — инструкция по сборке мебели. Это набор правил и ограничений, которые определяют, как должна быть построена программа.
Сохраните себе эту небольшую подсказку, но помните – полное понимание приходит только на практике. Попробуйте использовать модули, пакеты, библиотеки и фреймворки в своих собственных проектах.
Новички в программировании часто путают модули, пакеты, библиотеки и фреймворки. Это нормально! В них легко запутаться, потому что они могут частично дублировать функционал друг друга. Давайте разберемся в этих терминах простым языком.
Так понятия описывают в учебниках и статьях:
📌Модуль (Module) — в Python представляет собой логически обособленный сниппет кода в отдельном файле с расширением .py. Модули помогают улучшить структуру кода, позволяя сосредотачиваться на отдельных частях задачи, избегать дублирования кода и минимизировать вероятность конфликта имен.
📌Пакет (Package) — каталоги модулей с иерархической структурой пространства имен. Он служит для группировки и упорядочивания модулей, предоставляя организацию, аналогичную распределению файлов на жестком диске в папках и подпапках.
📌 Библиотека (Library) — объект, который находится на более высоком уровне, содержащий связанные модули и/или пакеты.
📌 Фреймворк (Framework) — в контексте разработки программ представляет собой набор модулей и пакетов, предназначенных для ускорения процесса программирования. Фреймворки более сложны и обладают архитектурой приложения. Известные представители класса – Django, Flask и Bottle.
Как объясним это мы? Очень просто:
Модуль — инструменты в ящике с инструментами. Они используются для выполнения определенных задач.
Пакет — коробка с инструментами. То есть это контейнеры, в которых хранятся модули.
Библиотека — набор инструментов. Это наборы модулей, которые предоставляют определенные функции или возможности.
Фреймворк — инструкция по сборке мебели. Это набор правил и ограничений, которые определяют, как должна быть построена программа.
Сохраните себе эту небольшую подсказку, но помните – полное понимание приходит только на практике. Попробуйте использовать модули, пакеты, библиотеки и фреймворки в своих собственных проектах.
🔥4👍3
Управляй зависимостями! Полезный туториал по Cargo в Rust
Знаем, что тех, кто знаком с Rust, становится все больше. Именно с вами хотим поделиться возможностями Cargo - который, как туристический гид, нежно и профессионально отвечает за то, чтобы вы не заблудились в зависимостях и не пропустили ничего интересного.
Что нужно знать
Cargo - это система сборки и управления пакетами, которая помогает разработчикам Rust создавать, собирать, тестировать и публиковать свои проекты:
📍 Автоматически управляет зависимостями, интегрируя сторонние библиотеки.
📍 Обеспечивает компиляцию и сборку проекта, учитывая все зависимости.
📍 Позволяет запускать тесты для поддержания высокого качества кода.
📍 Помогает генерировать автоматическую документацию для вашего кода.
📍 Позволяет публиковать и устанавливать пакеты из официального репозитория Rust, Crates.io.
Вот основные команды:
📍
📍
📍
📍
📍 Для библиотек и пакетов используйте
Простой пример:
Чтобы создать новый проект Rust, используйте команду cargo new my-project. Эта команда создаст новый каталог my-project с файлами проекта, включая файл Cargo.toml.
Далее, чтобы скомпилировать проект Rust, используйте команду cargo build. Эта команда скомпилирует проект и создаст исполняемый файл.
Затем запускаем код Rust, используя команду cargo run. Команда скомпилирует и запустит код.
Чтобы протестировать код Rust, используйте команду cargo test. Эта команда запустит все тесты в проекте.
Ну для того, чтобы сгенерировать документацию для кода Rust, используйте команду cargo doc. Эта команда создаст документацию в формате HTML.
Знаем, что тех, кто знаком с Rust, становится все больше. Именно с вами хотим поделиться возможностями Cargo - который, как туристический гид, нежно и профессионально отвечает за то, чтобы вы не заблудились в зависимостях и не пропустили ничего интересного.
Что нужно знать
Cargo - это система сборки и управления пакетами, которая помогает разработчикам Rust создавать, собирать, тестировать и публиковать свои проекты:
📍 Автоматически управляет зависимостями, интегрируя сторонние библиотеки.
📍 Обеспечивает компиляцию и сборку проекта, учитывая все зависимости.
📍 Позволяет запускать тесты для поддержания высокого качества кода.
📍 Помогает генерировать автоматическую документацию для вашего кода.
📍 Позволяет публиковать и устанавливать пакеты из официального репозитория Rust, Crates.io.
Вот основные команды:
📍
cargo new
создает новый проект, инициализируя его структуру и зависимости.📍
cargo build
автоматически управляет зависимостями и обеспечивает правильную сборку.📍
cargo run
компилирует и запускает код, а cargo test
упрощает тестирование.📍
cargo doc
создает просматриваемую документацию на основе комментариев в коде.📍 Для библиотек и пакетов используйте
cargo publish
для упрощения публикации на Crates.io*.Простой пример:
Чтобы создать новый проект Rust, используйте команду cargo new my-project. Эта команда создаст новый каталог my-project с файлами проекта, включая файл Cargo.toml.
Далее, чтобы скомпилировать проект Rust, используйте команду cargo build. Эта команда скомпилирует проект и создаст исполняемый файл.
Затем запускаем код Rust, используя команду cargo run. Команда скомпилирует и запустит код.
Чтобы протестировать код Rust, используйте команду cargo test. Эта команда запустит все тесты в проекте.
Ну для того, чтобы сгенерировать документацию для кода Rust, используйте команду cargo doc. Эта команда создаст документацию в формате HTML.
👍2
Полезные сервисы для подготовки к техническим собеседованиям 🖥
Предстоит собеседование? Наши поздравления! Напомним, что хоть в индустрии только и разговоров, что о софт-скиллах и эмоциональном интеллекте, технические хард скиллы – по-прежнему база, из-за которой вас и возьмут на работу.
Боитесь провалиться на собеседовании? Не волнуйтесь, вы не одиноки. Технические собеседования могут быть очень сложными, особенно если вы не знаете, чего ожидать. Вам в помощь мы собрали сервисы, которые помогут вам в подготовке.
IT Resume
Один из редких ресурсов на русском языке, где вы можете оценить свои технические навыки. Здесь вы найдете задачи по алгоритмам и структурам данных, синтаксису языков программирования, а также реальные задачи с собеседований.
LeetCode
Эта платформа, пользующаяся высокой популярностью, предоставляет обучающие материалы, которые помогут освежить знания и подготовиться к собесам. Вы найдете разнообразные задачи по алгоритмам и структурам данных с уровнями сложности. Поддерживаются различные языки программирования. Сотрудничество с компаниями: размещение вакансий и поиск работы для пользователей.
CodeSignal
Платформа предлагает широкий выбор заданий, поддержку 70 языков, продвинутую среду разработки, соревнования, обратную связь и сотрудничество с IT-компаниями.
InterviewBit
Универсальная платформа с широким выбором задач, детальными решениями, имеется онлайн-среда разработки и практика на реальных задачах от известных IT-компаний.
Pramp
Уникальная онлайн-платформа, которая позволяет вам практиковаться в прохождении собеседований с помощью ролевых игр. Можно выбрать тип интервью, а также получить персонализированный фидбэк от профессионалов.
Interviewing.io
Популярная платформа для подготовки, на которой представлены реальные собеседования в стиле FAANG. Вы можете выбрать анонимный формат и получить объективную обратную связь по hard skills и soft skills.
Расскажите в комментариях, какие ресурсы используете вы 👇
Предстоит собеседование? Наши поздравления! Напомним, что хоть в индустрии только и разговоров, что о софт-скиллах и эмоциональном интеллекте, технические хард скиллы – по-прежнему база, из-за которой вас и возьмут на работу.
Боитесь провалиться на собеседовании? Не волнуйтесь, вы не одиноки. Технические собеседования могут быть очень сложными, особенно если вы не знаете, чего ожидать. Вам в помощь мы собрали сервисы, которые помогут вам в подготовке.
IT Resume
Один из редких ресурсов на русском языке, где вы можете оценить свои технические навыки. Здесь вы найдете задачи по алгоритмам и структурам данных, синтаксису языков программирования, а также реальные задачи с собеседований.
LeetCode
Эта платформа, пользующаяся высокой популярностью, предоставляет обучающие материалы, которые помогут освежить знания и подготовиться к собесам. Вы найдете разнообразные задачи по алгоритмам и структурам данных с уровнями сложности. Поддерживаются различные языки программирования. Сотрудничество с компаниями: размещение вакансий и поиск работы для пользователей.
CodeSignal
Платформа предлагает широкий выбор заданий, поддержку 70 языков, продвинутую среду разработки, соревнования, обратную связь и сотрудничество с IT-компаниями.
InterviewBit
Универсальная платформа с широким выбором задач, детальными решениями, имеется онлайн-среда разработки и практика на реальных задачах от известных IT-компаний.
Pramp
Уникальная онлайн-платформа, которая позволяет вам практиковаться в прохождении собеседований с помощью ролевых игр. Можно выбрать тип интервью, а также получить персонализированный фидбэк от профессионалов.
Interviewing.io
Популярная платформа для подготовки, на которой представлены реальные собеседования в стиле FAANG. Вы можете выбрать анонимный формат и получить объективную обратную связь по hard skills и soft skills.
Расскажите в комментариях, какие ресурсы используете вы 👇
👍4🔥2❤1
Операция "Вставить": учимся работать с SQL INSERT! 🤖💬
Что общего у оператора INSERT и канцелярской кнопки? С помощью канцелярской кнопки мы можем закрепить бумагу, а с помощью оператора INSERT - закрепить данные в таблице. Давайте разберем его синтаксис и на примерах рассмотрим, как он применяется на практике.
Оператор INSERT в SQL - это мощный инструмент, который позволяет добавлять новые записи в таблицы базы данных.
Синтаксис:
INSERT INTO название_таблицы (список_столбцов)
VALUES (значения_столбцов);
название_таблицы - это имя таблицы, в которую мы хотим добавить данные.
список_столбцов - это список столбцов, в которые мы хотим добавить данные. Если список столбцов не указан, то значения будут вставлены во все столбцы таблицы.
значения_столбцов - это список значений, которые мы хотим добавить в таблицу. Значения должны соответствовать порядку столбцов, указанному в списке столбцов.
Теперь посмотрим примеры использования SQL оператора INSERT. Представим, у нас есть таблица “Клиенты” с полями: 'Имя', 'Фамилия' и 'Email'. Чтобы добавить нового клиента, воспользуемся запросом:
INSERT INTO Клиенты (Имя, Фамилия, Email)
VALUES ('Иван', 'Иванов', 'ivan@example.com');
Мы также можем добавить несколько записей за раз:
INSERT INTO Заказы (Номер, Дата)
VALUES (101, '2023-01-15'),
(102, '2023-01-16'),
(103, '2023-01-17');
А с помощью оператора INSERT и SELECT переносим данные из временной таблицы:
INSERT INTO Заказы (Номер, Дата)
SELECT Номер, Дата
FROM Временные_Заказы
WHERE Дата > '2023-01-01';
Также можно использовать подстановочные знаки:
DECLARE @Имя NVARCHAR(50) = 'Иван';
DECLARE @Фамилия NVARCHAR(50) = 'Иванов';
INSERT INTO Клиенты (Имя, Фамилия)
VALUES (@Имя, @Фамилия);
Вот так с помощью INSERT вы можете добавлять новые продукты в интернет-магазин, регистрировать новых пользователей в системе или просто заполнять таблицы базы данных.
Используете SQL INSERT в работе? Почему да? Почему нет? Хотим ваших мнений в комментариях!
Что общего у оператора INSERT и канцелярской кнопки? С помощью канцелярской кнопки мы можем закрепить бумагу, а с помощью оператора INSERT - закрепить данные в таблице. Давайте разберем его синтаксис и на примерах рассмотрим, как он применяется на практике.
Оператор INSERT в SQL - это мощный инструмент, который позволяет добавлять новые записи в таблицы базы данных.
Синтаксис:
INSERT INTO название_таблицы (список_столбцов)
VALUES (значения_столбцов);
название_таблицы - это имя таблицы, в которую мы хотим добавить данные.
список_столбцов - это список столбцов, в которые мы хотим добавить данные. Если список столбцов не указан, то значения будут вставлены во все столбцы таблицы.
значения_столбцов - это список значений, которые мы хотим добавить в таблицу. Значения должны соответствовать порядку столбцов, указанному в списке столбцов.
Теперь посмотрим примеры использования SQL оператора INSERT. Представим, у нас есть таблица “Клиенты” с полями: 'Имя', 'Фамилия' и 'Email'. Чтобы добавить нового клиента, воспользуемся запросом:
INSERT INTO Клиенты (Имя, Фамилия, Email)
VALUES ('Иван', 'Иванов', 'ivan@example.com');
Мы также можем добавить несколько записей за раз:
INSERT INTO Заказы (Номер, Дата)
VALUES (101, '2023-01-15'),
(102, '2023-01-16'),
(103, '2023-01-17');
А с помощью оператора INSERT и SELECT переносим данные из временной таблицы:
INSERT INTO Заказы (Номер, Дата)
SELECT Номер, Дата
FROM Временные_Заказы
WHERE Дата > '2023-01-01';
Также можно использовать подстановочные знаки:
DECLARE @Имя NVARCHAR(50) = 'Иван';
DECLARE @Фамилия NVARCHAR(50) = 'Иванов';
INSERT INTO Клиенты (Имя, Фамилия)
VALUES (@Имя, @Фамилия);
Вот так с помощью INSERT вы можете добавлять новые продукты в интернет-магазин, регистрировать новых пользователей в системе или просто заполнять таблицы базы данных.
Используете SQL INSERT в работе? Почему да? Почему нет? Хотим ваших мнений в комментариях!
👍6
Защищай данные полностью: 7 лучших программ для шифрования
POV: вы занимаетесь разработкой ПО и проект содержит конфиденциальную информацию, такую как алгоритмы и спецификации продукта. Ваш компьютер заражается вирусом, который крадет ваши файлы и отправляет их конкурентам. Что будет после (спойлер: ничего хорошего)?
Будет следующее - конкуренты получат доступ ко всей конфиденциальной информации, и смогут использовать это, чтобы скопировать ваш продукт, вывести на рынок аналог раньше вас, в общем, нанести ущерб компании.
Поэтому шифрование данных — это не хотелка, не бонус, а необходимая мера для обеспечения безопасности. Слава Одину, это уже давно не нужно делать вручную.
Mad Devs сообрали для вас популярные программы для шифрования:
VeraCrypt
Бесплатное и открытое ПО для создания и управления зашифрованными томами данных, включая как тома, так и отдельные диски. Использует AES в режиме XTS, выбранный NIST как наиболее надежный стандарт шифрования. Кроме того, поддерживаются альтернативные алгоритмы — Twofish и Serpent.
GPG
Бесплатная и открытая программа для шифрования данных и создания электронных подписей. Настройка GPG может быть сложной из-за процесса создания ключей и шифрования, требующих времени и внимания пользователя.
ZuluCrypt
Предоставляет функциональность шифрования для дисков и устройств под управлением Linux, BSD и других UNIX-систем. Поддерживаемые стандарты включают LUKS, а также возможность использования контейнеров TrueCrypt и VeraCrypt.
Dexios
Эффективный и безопасный инструмент шифрования через командную строку, разработанный на языке программирования Rust. Поддерживает шифрование файлов перед их загрузкой в облачное хранилище. Основной алгоритм шифрования — AEAD (XChaCha20-Poly1305 + AES-256-GCM).
BitLocker
Инструмент шифрования дисков в Windows, обеспечивающий защиту данных от несанкционированного доступа. Программа использует алгоритм AES (Advanced Encryption Standard) в режимах, таких как AES-CBC (Cipher Block Chaining) и AES-XTS (XEX-based Tweaked CodeBook Mode with CipherText Stealing).
SiriKali
Универсальное решение в Linux для управления зашифрованными контейнерами и томами, поддерживающее LUKS, CryFS, EncFS и TrueCrypt/VeraCrypt. Программа использует алгоритмы AES, Twofish, Serpent и другие для защиты данных.
AxCrypt
Платное решение, применяющее симметричное шифрование с использованием алгоритма AES. Обеспечивает высокий уровень защиты данных благодаря блочному шифрованию с размером блока 128 бит и ключами 128, 192 или 256 бит. Также поддерживает шифрование данных в облаке.
Вам остается только выбрать подходящую, а затем следить за правильным использованием и хранением ключей.
POV: вы занимаетесь разработкой ПО и проект содержит конфиденциальную информацию, такую как алгоритмы и спецификации продукта. Ваш компьютер заражается вирусом, который крадет ваши файлы и отправляет их конкурентам. Что будет после (спойлер: ничего хорошего)?
Будет следующее - конкуренты получат доступ ко всей конфиденциальной информации, и смогут использовать это, чтобы скопировать ваш продукт, вывести на рынок аналог раньше вас, в общем, нанести ущерб компании.
Поэтому шифрование данных — это не хотелка, не бонус, а необходимая мера для обеспечения безопасности. Слава Одину, это уже давно не нужно делать вручную.
Mad Devs сообрали для вас популярные программы для шифрования:
VeraCrypt
Бесплатное и открытое ПО для создания и управления зашифрованными томами данных, включая как тома, так и отдельные диски. Использует AES в режиме XTS, выбранный NIST как наиболее надежный стандарт шифрования. Кроме того, поддерживаются альтернативные алгоритмы — Twofish и Serpent.
GPG
Бесплатная и открытая программа для шифрования данных и создания электронных подписей. Настройка GPG может быть сложной из-за процесса создания ключей и шифрования, требующих времени и внимания пользователя.
ZuluCrypt
Предоставляет функциональность шифрования для дисков и устройств под управлением Linux, BSD и других UNIX-систем. Поддерживаемые стандарты включают LUKS, а также возможность использования контейнеров TrueCrypt и VeraCrypt.
Dexios
Эффективный и безопасный инструмент шифрования через командную строку, разработанный на языке программирования Rust. Поддерживает шифрование файлов перед их загрузкой в облачное хранилище. Основной алгоритм шифрования — AEAD (XChaCha20-Poly1305 + AES-256-GCM).
BitLocker
Инструмент шифрования дисков в Windows, обеспечивающий защиту данных от несанкционированного доступа. Программа использует алгоритм AES (Advanced Encryption Standard) в режимах, таких как AES-CBC (Cipher Block Chaining) и AES-XTS (XEX-based Tweaked CodeBook Mode with CipherText Stealing).
SiriKali
Универсальное решение в Linux для управления зашифрованными контейнерами и томами, поддерживающее LUKS, CryFS, EncFS и TrueCrypt/VeraCrypt. Программа использует алгоритмы AES, Twofish, Serpent и другие для защиты данных.
AxCrypt
Платное решение, применяющее симметричное шифрование с использованием алгоритма AES. Обеспечивает высокий уровень защиты данных благодаря блочному шифрованию с размером блока 128 бит и ключами 128, 192 или 256 бит. Также поддерживает шифрование данных в облаке.
Вам остается только выбрать подходящую, а затем следить за правильным использованием и хранением ключей.
❤5
О чем так мало говорят: типизация и протоколы в Python
Мы в Mad Devs заметили, что на курсах программирования типизации в Python уделяют не так много внимания. В основном новички знакомятся с базовыми концепциями вроде рекурсии или ООП, и тема остается в тени - кстати, незаслуженно, ведь она особенно важна, например, для коммерческой разработки.
Что такое типизация? Это механизм, который определяет тип данных для хранения в переменной.
Python использует динамическую типизацию, где тип переменной определяется во время присвоения значения.
С одной стороны, это удобно:
🔺 Не нужно заранее объявлять типы.
🔺 Код выглядит более лаконично.
С другой - может привести к ошибкам:
▪️Ошибки типов не определяются на этапе компиляции.
▪️ Код становится менее читаемым и понятным.
С подобными ошибками можно справиться двумя методами:
1. Аннотации типов позволяют явно указать типы переменных, функций и возвращаемых значений.
Статический анализатор mypy использует эти аннотации для проверки кода на потенциальные ошибки типов.
📝Пример:
def add(a: int, b: int) -> int:
return a + b
print(add(2, 5))
# Выводит 7
Эти аннотации просто дают знать программисту, какие типы должны иметь аргументы функции и результат какого типа она возвращает.
2. Утиная типизация для фокуса на методах, а не на типах. Утиная типизация говорит: "Если объект имеет нужный метод, то его тип не важен".
📝Пример:
def send_data(sender, data):
sender.send(data)
А как в этом примере дать понять mypy, что sender должен принимать класс с реализованным в себе методом send? Ответ прост — протоколы.
Что такое протоколы? Протоколы – это инструмент, который позволяет описать набор методов, чтобы реализовывать объект.
Сразу к примеру кода выше. Дополняем его:
from typing import (
Any,
Mapping,
Protocol,
)
class SenderProtocol(Protocol):
def send(data: Mapping[str, Any]) -> None:
Итого получаем:
def send_data(sender: SenderProtocol, data):
sender.send(data)
В данном примере:
Функция send_data принимает два аргумента:
sender: объект, который должен соответствовать протоколу SenderProtocol.
data: данные, которые будут отправлены методом send.
Благодаря протоколу:
📌Мы знаем, что объект sender имеет метод send.
📌Мы знаем, какой тип данных метод send принимает в качестве аргумента.
📌Мы знаем, какой тип данных метод send возвращает.
И задача решена!
В целом, типизация помогает упростить код, избавляя его от лишней писанины.
Однако для достижения этой цели важно знать протоколы, которые стандартизируют код. Это позволит создавать более читаемые, надежные и востребованные решения.
Мы в Mad Devs заметили, что на курсах программирования типизации в Python уделяют не так много внимания. В основном новички знакомятся с базовыми концепциями вроде рекурсии или ООП, и тема остается в тени - кстати, незаслуженно, ведь она особенно важна, например, для коммерческой разработки.
Что такое типизация? Это механизм, который определяет тип данных для хранения в переменной.
Python использует динамическую типизацию, где тип переменной определяется во время присвоения значения.
С одной стороны, это удобно:
🔺 Не нужно заранее объявлять типы.
🔺 Код выглядит более лаконично.
С другой - может привести к ошибкам:
▪️Ошибки типов не определяются на этапе компиляции.
▪️ Код становится менее читаемым и понятным.
С подобными ошибками можно справиться двумя методами:
1. Аннотации типов позволяют явно указать типы переменных, функций и возвращаемых значений.
Статический анализатор mypy использует эти аннотации для проверки кода на потенциальные ошибки типов.
📝Пример:
def add(a: int, b: int) -> int:
return a + b
print(add(2, 5))
# Выводит 7
Эти аннотации просто дают знать программисту, какие типы должны иметь аргументы функции и результат какого типа она возвращает.
2. Утиная типизация для фокуса на методах, а не на типах. Утиная типизация говорит: "Если объект имеет нужный метод, то его тип не важен".
📝Пример:
def send_data(sender, data):
sender.send(data)
А как в этом примере дать понять mypy, что sender должен принимать класс с реализованным в себе методом send? Ответ прост — протоколы.
Что такое протоколы? Протоколы – это инструмент, который позволяет описать набор методов, чтобы реализовывать объект.
Сразу к примеру кода выше. Дополняем его:
from typing import (
Any,
Mapping,
Protocol,
)
class SenderProtocol(Protocol):
def send(data: Mapping[str, Any]) -> None:
Итого получаем:
def send_data(sender: SenderProtocol, data):
sender.send(data)
В данном примере:
Функция send_data принимает два аргумента:
sender: объект, который должен соответствовать протоколу SenderProtocol.
data: данные, которые будут отправлены методом send.
Благодаря протоколу:
📌Мы знаем, что объект sender имеет метод send.
📌Мы знаем, какой тип данных метод send принимает в качестве аргумента.
📌Мы знаем, какой тип данных метод send возвращает.
И задача решена!
В целом, типизация помогает упростить код, избавляя его от лишней писанины.
Однако для достижения этой цели важно знать протоколы, которые стандартизируют код. Это позволит создавать более читаемые, надежные и востребованные решения.
👍7❤2🔥1