Сообщество - Лига программистов

Лига программистов

1 728 постов 11 639 подписчиков

Популярные теги в сообществе:

КуМир Онлайн - Современная веб-среда для программирования на КуМир

КуМир Онлайн - Современная веб-среда для программирования на КуМир IT, Программирование, Школа, Информатика

Программирование в КуМир Онлайн

Всем привет! 👋

Мы — КуМир Онлайн, российский стартап, занимающийся разработкой одноимённого веб-сервиса для программирования на языке КуМир.

КуМир — это отечественная система, включающая в себя язык программирования и собственную IDE. Она была создана в РАН и в настоящее время используется для обучения основам программирования в средней и старшей школах.

Несмотря на свою обширную функциональность, официальная среда разработки КуМир имеет серьёзные недостатки, которые мы и решили устранить в нашем сервисе.

Во-первых, дизайн оригинальной IDE выглядит несколько устаревшим. При разработки нашей платформы, мы стремились сделать современный и интуитивно понятный пользовательский интерфейс.

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

Присоединяйтесь к числу пользователей КуМир Онлайн и программируйте с удовольствием! ✨

P.S. Мы — стартап, и будем очень признательны, если вы оставите отзыв о нашем сервисе в комментариях (что вам нравится, что нет, а также ваши пожелания по его развитию) или напишете нам на электронную почту: ✉️ kumironline@ya.ru

Веб-сайт: https://kumironline.pythonanywhere.com

Telegram-канал: https://t.me/kumironline

Показать полностью

Зачем нужен code review

Выстроенный code review позволяет:
— найти баги и не пропустить их в прод. Конечно, в дополнение к статическому анализу с помощью настроенного pre-commit и тестам;
— выявить проблемы в архитектуре;
— сделать код единообразным. Спорный тезис, за единообразие должны отвечать линтеры и автоформатирование. Но code review помогает наладить те вещи, которые автоформатирование не тянут, например, именование переменных.

В долгосрочной перспективе постоянные code review:
— налаживают обратную связь между участниками;
— бустят уровень разработчиков, позволяя учиться на своих и чужих ошибках и давая обширную практику чтения чужого кода;
— помогают делиться знаниями о технологиях, вариантах решения проблем, возможных проблемах и самом проекте в команде;
— дают приток новых идей для улучшений в процессах, подходах и автоматизации;
— увеличивают децентрализацию знаний и bus factor.

В DevFM пишу о полезном для разработчика: инструментах вроде Raycast, об архитектурных схемах, записываю видео по FastAPI + Docker для начинающих. А ещё у нас есть бесплатный курс cli-for-dev по Linux на степике.

Вложенность в IDML 2.0: Структурирование данных для гибкости и удобства

Вложенность в IDML 2.0: Структурирование данных для гибкости и удобства Программирование, Разработка, IT

IfBest Data Markup Language 2.0

Документация по IDML 1.0: https://ifbest.org/idml/
Документация по IDML 2.0: https://ifbest.org/idml/v2.php
Наш Telegram-канал: https://t.me/creators_ifbest

В современном мире обработки данных важность правильной организации информации трудно переоценить. Язык разметки IDML (IfBest Data Markup Language) версии 2.0 предлагает мощные инструменты для структурирования данных с поддержкой вложенности. Это позволяет создавать сложные иерархические структуры, которые делают данные более понятными и удобными для анализа.

Введение в IDML 2.0

IDML 2.0 был разработан для упрощения работы с данными, позволяя пользователям организовывать информацию в логические группы. Вложенность в этом языке разметки позволяет создавать многоуровневые структуры, что особенно полезно в сценариях, где необходимо хранить сложные данные, такие как информация о пользователях, их сессиях и активности.

Синтаксис вложенности

В IDML 2.0 вложенные идентификаторы обозначаются двойными звёздочками `**`, а сами вложенные структуры заключаются в фигурные скобки `{}`. Это позволяет создавать многоуровневые иерархии, где каждый уровень может содержать свои собственные идентификаторы и массивы. Например, структура данных о пользователе может выглядеть следующим образом:

</IDML/>

<v="2.0">

*identifiers=[user_id,page_id,ip,last_time]

**user_id=[user{id{session}}]

**ip=[ip{ip2}]

user_id=[12344,{133120,{97743}},133376,133121,133377,133122,133378,133123,133379]

page_id=[8499,4076,5439,2703,2899,5676,3278,9737]

ip=[178.66.159.54,{133.45.234.21,123.45.67.891},31.173.86.215,165.232.97.110,178.178.246.64,176.111.79.97,85.140.160.167,79.139.185.58,176.221.1.128]

last_time=[2024-12-15,2024-12-15,2024-12-15,2024-12-15,2024-12-15,2024-12-15,2024-12-15,2024-12-15]

<\IDML\>

Описание структуры вложенности

Вложенность в IDML 2.0 позволяет логически группировать данные. Например, идентификаторы пользователей могут содержать вложенные идентификаторы сессий, что упрощает хранение и обработку информации. Это также позволяет легко извлекать данные на разных уровнях вложенности, что делает работу с ними более эффективной.

Преимущества использования вложенности

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

2. Упрощение обработки: При работе с вложенными структурами можно легко извлекать и обрабатывать данные на разных уровнях вложенности.

3. Гибкость: Возможность добавления новых уровней вложенности без изменения основной структуры документа позволяет адаптировать данные под изменяющиеся требования.

Заключение

Вложенность в IDML 2.0 является мощным инструментом для представления сложных структур данных. Использование вложенных идентификаторов и массивов позволяет организовать данные в логические группы, что упрощает их обработку и анализ. Это делает IDML 2.0 подходящим выбором для приложений, требующих работы с многоуровневыми данными. В условиях постоянного роста объема информации правильная организация данных становится ключевым фактором для успешного анализа и принятия решений.

Показать полностью

Когда взял чужой код, и он лёг в твой проект как родной:

Язык разметки IDML: Структурирование данных с помощью простого синтаксиса

Язык разметки IDML: Структурирование данных с помощью простого синтаксиса Разработка, IT, Программирование

IfBest Data Markup Language

Что такое IDML (ver. 1.0)

IDML (IfBest Data Markup Language) — это специализированный язык разметки, предназначенный для структурирования и представления данных в удобном для обработки и анализа формате. Его синтаксис прост и понятен, что делает его подходящим для работы с различными типами данных. IDML используется для описания массивов данных, идентификаторов и других структур, что позволяет эффективно управлять информацией.

Основные элементы языка IDML

IDML имеет четко определенные правила синтаксиса и структуры, которые обеспечивают его универсальность и удобство использования. Рассмотрим ключевые элементы языка.

1. Объявление идентификаторов

Идентификаторы в IDML используются для обозначения массивов данных. Они объявляются с помощью специального синтаксиса:

*identifiers=[id,page_id,ip,last_time]

Здесь "*identifiers" — это список идентификаторов, которые будут использоваться в документе. Каждый идентификатор представляет собой массив данных, который будет описан далее.

2. Объявление массивов

Массивы данных в IDML объявляются с использованием квадратных скобок. Каждый массив содержит значения, разделенные запятыми.

Пример:

id=[id1,id2,id3,id4,id5,id6,id7,id8] page_id=[8499,4076,5439,2703,2899,5676,3278,9737] ip=[ip1,ip2,ip3,ip4,ip5,ip6,ip7,ip8] last_time=[2024-12-15,2024-12-15,2024-12-15,2024-12-15,2024-12-15,2024-12-15,2024-12-15,2024-12-15]

Каждый массив имеет уникальное имя (`id`, `page_id`, `ip`, `last_time`) и содержит значения, которые могут быть строками, числами или датами.

3. Структура документа

Документ IDML имеет строгую структуру, которая начинается и заканчивается специальными тегами:

"</IDML/>" - Тег указывает на начало документа.

Тег "<\IDML\>" завершает документ.

Правила форматирования IDML

Чтобы документ IDML был корректным и легко интерпретировался, необходимо соблюдать следующие правила:

1. Идентификаторы: Все идентификаторы должны быть объявлены в начале документа.

2. Массивы: Каждый массив должен быть объявлен на отдельной строке.

3. Значения: Значения в массивах должны быть разделены запятыми и заключены в квадратные скобки.

Пример документа IDML

Ниже приведен пример корректного документа IDML, который соответствует всем правилам:

</IDML/>
*identifiers=[id,page_id,ip,last_time] id=[id1,id2,id3,id4,id5,id6,id7,id8]
page_id=[8499,4076,5439,2703,2899,5676,3278,9737]
ip=[ip1,ip2,ip3,ip4,ip5,ip6,ip7,ip8]
last_time=[2024-12-15,2024-12-15,2024-12-15,2024-12-15,2024-12-15,2024-12-15,2024-12-15,2024-12-15]
<\IDML\>

Этот пример демонстрирует, как можно структурировать данные с помощью IDML, чтобы они были легко читаемы и обработаны.

Преимущества использования IDML

1. Простота синтаксиса: язык имеет минималистичный и интуитивно понятный синтаксис, что снижает вероятность ошибок.

2. Гибкость: Возможность описывать различные типы данных делает язык универсальным.

3. Удобство обработки: Структурированные данные легко анализировать и использовать в различных приложениях.

Заключение

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

Официальная документация: https://ifbest.org/idml/

Telegram-канал проекта: https://t.me/creators_ifbest

Показать полностью

Нужен совет

Добрый день! Сориентируйте по стоимости, пожалуйста.
Требуется разработать приложение для смартфона. Анимация и дизайн - по-минимуму, всё строго.
Функции и возможности:
Пользователь (а это будут пациенты) ежедневно вносит свои показатели (давление, пульс и т.п.), приложение их сохраняет, представляет в виде наглядного графика.
Еженедельно пациент проходит там же, в приложении, тесты по типу анкеты с одним выбором, результат в баллах сохраняется. При превышении порога - уведомление, на какой показатель обратить внимание.
Если пациент забыл что-то внести, приходит напоминание.
Там же, в приложении, есть банк теоретической информации (закачаны статьи, схемы).
Это первый вариант.
И второй вариант: всё то же самое, только уведомления из приложения ещё и лечащему врачу отсылаются. Как бы 2 входа в приложение, как пациент или как врач, курирующий всех, кто пользуется приложением.
Конечно, подобных приложений много существует. Новизна в наборе показателей, которые вносятся.
Конечно, погуглила, но, будучи далека от IT, не смогла разобраться: по запросу "приложения для смартфона" цены от 50000 и до миллионов.
Мне пока нужно сориентироваться в следующем: сколько в среднем стоит такая работа (1 и 2 варианты приложения), сколько времени она занимает, к кому дальше идти - фрилансеры или организация (если да, то какая).
Всем спасибо!

Инструкция по установке Docker и Docker Compose на сервере Ubuntu

1. Обновите систему

Убедитесь, что ваша система обновлена до последних версий пакетов.

sudo apt update && sudo apt upgrade -y


2. Установите необходимые зависимости

Установите пакеты, которые потребуются для добавления Docker-репозитория.

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common


3. Добавьте GPG-ключ Docker

Добавьте официальный GPG-ключ Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg


4. Добавьте Docker-репозиторий

Добавьте Docker-репозиторий в список источников:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


5. Установите Docker

Обновите список пакетов и установите Docker Engine.

sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io

Проверьте установку Docker:

sudo docker --version


6. Убедитесь, что Docker работает

Запустите Docker и добавьте текущего пользователя в группу Docker для выполнения команд без sudo.

sudo systemctl start docker sudo systemctl enable docker sudo usermod -aG docker $USER

Для применения изменений перезагрузите сессию или выполните:

newgrp docker


7. Установите Docker Compose

Загрузите последнюю версию Docker Compose с официального сайта.

7.1 Узнайте последнюю версию Docker Compose:

curl -s https://api.github.com/repos/docker/compose/releases/latest | grep "tag_name" | cut -d '"' -f 4

Например, это может быть v2.26.0.

7.2 Замените <version> на полученную версию и выполните установку:

sudo curl -L "https://github.com/docker/compose/releases/download/&lt;vers... -s)-$(uname -m)" -o /usr/local/bin/docker-compose

7.3 Сделайте файл исполняемым:

sudo chmod +x /usr/local/bin/docker-compose

7.4 Проверьте установку:

docker-compose --version


8. (Опционально) Настройте автозапуск Docker

Если требуется, чтобы Docker автоматически запускался при старте системы:

sudo systemctl enable docker


Теперь Docker и Docker Compose успешно установлены и готовы к использованию.

Показать полностью

Каждый год зимой происходят странности

Например, что-то пропадает. У одних важные вещи, у других новогоднее настроение. В этот раз — потерялись помощники Деда Мороза. Но есть хорошая новость: вы можете их найти! Вернее, помочь им найтись…

Pre-commit — must have утилита любого проекта

Бывает, смотришь на код и сразу видно, что код плохой. Признаков может быть множество:
— разные куски кода по-разному отформатированы;
— импорты в файлах никак не структурированы;
— используются вперемешку синтаксис старых и новых версий питона;
— где-то видны зачатки использования типов, но не везде;
— где-то docstring есть, где-то нет;
Всё это характеризуется так: нет единого стиля в написании кода. Проблема становится особенно актуальной, когда над проектом трудится несколько разработчиков.

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

Для решения всех обозначенных проблем есть замечательная утилита — pre-commit. Один раз в конфиге прописываете, какие анализаторы кода нужно запускать, и далее при любом коммите они будут запускаться автоматически. С этого момента код будет опрятным и шелковистым. Вы просто не сможете сделать коммит, если у анализатора есть вопросики к коду.

В DevFM пишу о полезном для разработчика: инструментах вроде Raycast, об архитектурных схемах, записываю видео по FastAPI + Docker для начинающих. А ещё у нас есть бесплатный курс cli-for-dev по Linux на степике.

Отличная работа, все прочитано!