После установки надо перезагрузить страничку или же перезапустить браузер, чтобы начало считать, пока хз как это поправить.
Идея появилась очень приземлённо. Я много лет сижу за компом. Код, браузер, тексты. И в какой-то момент поймал себя на мысли: мышь я в руках держу больше, чем что-либо ещё, а про неё не знаю вообще ничего.
Сколько кликов в день? Сколько раз я просто бессмысленно вожу курсором? Сколько «километров» уже накатал за годы?
Полез в Chrome Store — либо тайм-трекеры с кучей лишнего, либо вообще не то. Простого «посчитать мышь» нет.
Ну окей, значит сделаю сам.
Что сделал
Расширение:
считает клики
считает прокрутку
считает пробег курсора (да, в метрах и километрах)
работает локально
ничего никуда не шлёт
висит в фоне и не мешает
Без аккаунтов, аналитики, «улучшим вашу продуктивность» и прочего маркетинга.
В процессе
Самое интересное было не написать код, а решить мелочи:
как считать движение, а не микродрожь
как не грузить браузер
как показать цифры так, чтобы они были читаемы даже на маленькой иконке
Типичный инженерный пет-проект: половина времени уходит на «а вот тут неудобно».
Выложил в Chrome Store
Выложил без особой надежды на публикацию — думал, у них таких заявок сотни, и мою глупую идею просто отсекут. Но нет, через неделю пришло уведомление: расширение опубликовано! Вот это было круто — реально порадовало.
Пока пользователей всего двое, но всё равно приятно. Теперь хочу поделиться проектом с сообществом Пикабу — вдруг кому-то тоже будет интересно.
Проект с открытым исходным кодом
Сейчас расширение стало опен-сорс проектом. Код открыт, и если кому-то интересно — можно присоединиться на GitHub. Буду рад любым идеям, пулл-реквестам и просто общению.
Давно хотелось сделать что-то, где разные программисты могут вместе развивать простую, но любопытную идею. Есть мысли: не просто считать движение мыши, а анализировать «энергию» пользователя, эмоциональное состояние, добавлять разные метрики и визуализации.
Если тебе близка тема open source и хочется поэкспериментировать — добро пожаловать.
Open Source остается основой глобальной кооперации в разработке. Преимущества, которые он приносит в мировую ИТ-индустрию, значительно перевешивают потенциальные риски.
Существует популярное мнение, что открытый код легче взломать. Такие утверждения обычно строятся на том, что код доступен всем, и любой желающий может найти в нем уязвимость, чтобы определить вектор атаки на развёрнутое приложение. Tadviser поговорил с экспертами по кибербезопасности, которые сделали важные ремарки на этот счёт.
Когда код видят тысячи разработчиков, уязвимости обнаруживаются и исправляются значительно быстрее. Кроме того, организации могут самостоятельно изучать код, что особенно важно для обеспечения безопасности критических систем. Аудиторы в больших и популярных проектах тоже видят код, что уравновешивает шансы закрытия уязвимостей ПО.
Как рассказал Пётр Козлёнков, руководитель службы информационных технологий PVS-Studio, открытое ПО имеет длинную историю как в инженерной, так и в производственной инфраструктуре: от операционных систем (Linux) до систем управления базами данных (PostgreSQL). Доверие к таким решениям складывается из практических механизмов: прозрачности, воспроизводимости и коллективного аудита. Например, OpenSSL, ядро Linux и PostgreSQL регулярно проходят независимые проверки, включая исследования университетов и консалтинговых компаний.
Алексей Варлаханов, руководитель отдела прикладных систем Angara Security, считает, что Open Source заслуживает доверия, прежде всего, благодаря прозрачности исходного кода, что позволяет проводить независимый аудит безопасности и модифицировать продукт под конкретные нужды организации.
«Один из ключевых аргументов в пользу OSS-продуктов – любой желающий может посмотреть исходный код, пересобрать его, провести аудит с помощью инструментов статического, композитного или динамического анализа. Всё это снижает вероятность возникновения скрытых бэкдоров, неочевидных шпионских функций или недокументированных механизмов сбора данных, к примеру, телеметрии», — рассказал Пётр Козлёнков, руководитель службы информационных технологий PVS-Studio.
Возможность изучить исходники на предмет уязвимостей выгодно отличает OSS от проприетарного кода, защищенного политиками вендоров.
Как рассказал генеральный директор Swordfish Security Александр Пинаев, продукты с открытым исходным кодом пользуются доверием разработчиков, поскольку его безопасность можно проверить. Инженеры могут самостоятельно просканировать исходный код или заказать проверку у ИБ-специалистов. С проприетарным кодом это не всегда возможно, так как компании чаще всего не поставляют исходный код вместе с продуктом.
С точки зрения доверенности и безопасности, наличие свободных компонентов является большим плюсом, поскольку возможности их исследования значительно выше, чем проприетарных, отметил Алексей Смирнов, председатель совета директоров «Базальт СПО». К тому же, благодаря доступности исходного кода в его исследовании принимает участие большое сообщество разработчиков.
Широко известны OSS-проекты, такие как Linux, Nginx, Kubernetes, OpenSSH, которые выбирают из-за ряда преимуществ и используют повсеместно крупные коммерческие компании. Эксперты считают, что эти программы являются более надёжными, чем многие проприетарные аналоги.
«Идея о том, что OSS-продукты более уязвимы – миф. Действительно, есть риски, связанные с качеством управления проектом, атаками на цепочку поставок и отсутствием централизованной ответственности, но корректное управление ими делает использование OSS-продуктов более безопасным», — отметил Пётр Козлёнков, руководитель службы информационных технологий PVS-Studio.
По словам Алексея Варлаханова, руководителя отдела прикладных систем Angara Security, проприетарное ПО может скрывать свои уязвимости от внешнего анализа, что создает эффект «черного ящика» с неизвестными угрозами. Однако коммерческие продукты зачастую обладают более качественной и формальной поддержкой, что снижает эксплуатационные риски. Таким образом, опасения относительно OSS оправданы лишь частично, и все зависит от конкретных условий поддержки, процесса разработки и применения продуктов.
«Можно сказать, что идея о потенциально более высокой уязвимости Open Source по сравнению с проприетарным софтом является ошибочным стереотипом. Действительно, публичность кода означает, что уязвимости видны всем, включая злоумышленников, но одновременно это обеспечивает гораздо более быстрый отклик сообщества и производителей на их устранение» — прокомментировал Алексей Варлаханов, руководитель отдела прикладных систем Angara Security.
В этой статье я хочу поделиться своим опытом и первыми шагами в Open Source-разработке. Свой путь я начал в начале 2025 года и за это время мои проекты в сумме набрали более 200 звёзд на GitHub.
За прошедший год мне удалось выпустить несколько релизов, выстроить базовые процессы тестирования, а также привлечь первых контрибьюторов к своим проектам.
Я не считаю свой опыт в Open Source разработке большим, однако уверен, что некоторые наблюдения и практические советы могут быть полезны тем, кто только планирует начать свой путь, а также разработчикам, которые уже делают первые шаги в открытых проектах.
Основной фокус статьи будет направлен на процессы разработки: с какими трудностями я столкнулся, какие решения оказались удачными и на какие аспекты, на мой взгляд, стоит обратить внимание на ранних этапах создания Open Source-проекта.
Большинство Open Source-проектов создаётся не с целью прямой монетизации, а ради социального признания. К таким показателям можно отнести звёзды на GitHub, лайки и подписчиков в социальных сетях. Эти метрики позволяют получить внешнюю оценку проделанной работы и, в определённой степени, повысить свою заметность на рынке.
Прямой финансовый доход от подобных проектов, как правило, не предполагается. Возможны донаты или спонсорская поддержка, однако на начальных этапах разработки не стоит рассчитывать на значительный заработок.
Исходя из этого, я рекомендую начинать с проектов, которые полезны вам лично. В таком случае у вас появляется естественная мотивация поддерживать и развивать проект, даже если внешняя обратная связь минимальна.
Отдельное внимание стоит уделить масштабу проекта. Оптимальное время разработки до первой MVP-версии не должно превышать 1–2 недель. Более длительный цикл без ощутимого результата значительно повышает риск выгорания и потери интереса к проекту.
Для вдохновения вы можете посмотреть проекты которые сейчас в тренде на GitHub или подписаться на Topic по интересующему вас направлению (https://github.com/trending).
Выбор аудитории
При создании Open Source-проекта важно заранее определить целевую аудиторию, поскольку от этого решения будет зависеть практически вся дальнейшая разработка.
В общем случае проекты можно условно разделить на два типа:
проекты для разработчиков;
проекты для конечных (сторонних) пользователей.
На этапе планирования необходимо чётко понимать, для кого именно создаётся продукт, так как выбранная аудитория напрямую влияет на архитектуру, набор функций, требования к документации и способы распространения проекта.
Проекты для разработчиков
Если вы разрабатываете библиотеку, фреймворк или инструмент для разработчиков, имеет смысл ориентироваться на технологии, которые востребованы на рынке. Использование популярных языков программирования и экосистем, как правило, позволяет охватить более широкую аудиторию.
Однако существует и альтернативный подход: вместо выбора языка можно отталкиваться от актуальных рыночных трендов. Например, изучить популярные проекты и экосистемы и создать для них вспомогательную библиотеку, плагин или интеграционный шлюз.
В таком случае даже использование менее распространённого языка программирования может стать преимуществом: конкуренция будет ниже, а проект сможет привлечь значительную аудиторию за счёт решения актуальной задачи. Типичный пример — разработка полезного инструмента или библиотеки для новой технологии или нейросети, которая находится на пике интереса.
Проекты для конечных пользователей
Если проект ориентирован на пользователей, не связанных с разработкой (как в моём случае), приоритеты смещаются. Здесь особенно важно уделять внимание:
производительности и оптимизации;
качественной и понятной документации;
простоте установки и быстрому развёртыванию проекта.
Необходимо учитывать, что такая аудитория, как правило, не имеет технического бэкграунда. Поэтому ключевой фактор успеха — минимальный порог входа и понятный пользовательский опыт.
Наблюдения из практики
По моему опыту, проекты для разработчиков чаще получают звёзды на GitHub, поскольку их аудитория хорошо ориентируется в экосистеме платформы и активно использует такие метрики. Однако подобные проекты сложнее продвигать и выделять среди конкурентов.
Проекты для конечных пользователей, в свою очередь, обычно получают меньше звёзд, но их аудитория охотнее идёт на контакт и более заинтересована в развитии продукта, особенно если он напрямую влияет на их бизнес-процессы.
Начало разработки
На ранних этапах разработки важно сразу продумать сценарий использования проекта с точки зрения пользователя. В идеале процесс установки и первичной настройки не должен превышать 2–3 шага — чем ниже порог входа, тем выше вероятность, что пользователь действительно попробует ваш продукт.
Если вы разрабатываете библиотеку, имеет смысл ориентироваться на популярные менеджеры пакетов соответствующей экосистемы. Это позволяет пользователям подключать ваше решение к проекту с помощью нескольких команд в терминале, без дополнительной ручной настройки.
Если же проект представляет собой отдельный сервис (как в моём случае), стоит заранее задуматься о контейнеризации. Использование Docker позволяет изолировать зависимости, стандартизировать окружение и значительно упростить процесс установки и запуска проекта.
В процессе разработки проекта tg-support-bot я предусмотрел два варианта установки:
Полный вариант — развёртывание через docker-compose, включающее все необходимые сервисы: PostgreSQL, PgAdmin, Loki, Grafana, Redis и другие компоненты.
Упрощённый вариант — установка проекта на обычный хостинг с возможностью подключения внешней базы данных и отключения необязательных сервисов.
При этом важно избегать жёстких зависимостей между контейнерами. Пользователи должны иметь возможность отключать или заменять отдельные сервисы внутри docker-compose без нарушения работоспособности основного приложения.
Линтинг, настройка CI и тесты
Перед публикацией проекта важно настроить надежную систему тестирования и линтинга. Это помогает предотвратить ошибки, повышает стабильность проекта и облегчает совместную разработку.
Code style и линтеры
Для каждого проекта важно определить и задокументировать правила code style. Чем строже и однозначнее эти правила, тем проще поддерживать читаемость кода и единый стиль среди участников проекта.
Также необходимо настроить линтеры, которые проверяют код на:
синтаксические ошибки и типизацию;
соответствие имен переменных и функций выбранному стилю;
распространённые ошибки и потенциальные уязвимости.
Автоматическое тестирование
Автотесты критически важны для поддержания стабильности проекта и ускорения разработки. Чем больше функций покрыто тестами, тем безопаснее вносить изменения и привлекать сторонних контрибьюторов.
В проекте tg-support-bot я реализовал систему shell-скриптов для автоматизации линтинга и тестирования с передачей дополнительных параметров к инструментам анализа.
Скрипты интегрированы с git-хуками:
При коммите запускаются проверки только для файлов, включённых в индекс.
Статический анализатор PHPStan проверяет код на ошибки и нарушения типизации;
Выполняются unit-тесты для изменённых классов;
Если изменён Dockerfile, запускается Hadolint для проверки Dockerfile;
Если изменены shell-скрипты, применяется ShellCheck для выявления ошибок и потенциальных уязвимостей.
При push выполняется проверка всего проекта: PHPStan анализирует весь код, запускаются все unit-тесты и линтеры. Это позволяет выявить проблемы, которые могли быть пропущены при коммите.
На этапе CI система повторно проверяет весь проект, что особенно важно для Open Source: сторонние контрибьюторы могут внести изменения, которые нарушат работу проекта.
Пример работы CI в проекте tg-support-bot
В случае обнаружения ошибки системы блокирует изменения до исправления ошибок.
Таким образом, процесс тестирования делится на три уровня:
Локальная проверка при коммите — только файлы, добавленные в коммит.
Проверка при push — весь проект для предотвращения глобальных ошибок.
CI/CD — полная автоматическая проверка, включая сторонние изменения.
Продуманная система тестирования и линтинга позволяет снизить риски и обеспечивает стабильность проекта, что особенно важно в Open Source-разработке.
Структура GitHub репозитория
В процессе разработки вы будете создавать множество веток, которые в дальнейшем будут сливаться с основной веткой main. От правильной организации веток напрямую зависит качество проекта и удобство командной работы.
Структура веток
На своих проектах я использую следующую схему:
Ветка main является основной. Прямые коммиты в неё запрещены — все изменения вносятся через дочерние ветки.
Релизные ветки создаются перед планированием релиза. Например, для шестого релиза создаётся ветка release_6. В этой ветке я фиксирую все задачи, которые должны войти в релиз.
Ветки задач создаются для каждой отдельной задачи из релиза. В наименовании ветки обязательно указывается номер соответствующего Issue. Это строгое правило: ветка с некорректным именем не пройдет проверки CI, и изменения не смогут быть слиты в проект.
Такой подход помогает:
Приучиться создавать Issues для любых изменений;
Контролировать работу сторонних контрибьюторов;
Поддерживать прозрачность процесса разработки.
Пример описания коммитов
Структура коммитов
Для упрощения отслеживания изменений я использую shell-скрипты, которые автоматически:
Добавляют в начало описания коммита номер задачи (issues-62 | update tests);
Формируют список изменённых файлов с пометками Added, Changed, Deleted.
Также важно соблюдать грамотное описание релизов: каждая версия должна содержать чёткий список изменений и исправленных задач. Такой подход обеспечивает:
прозрачное ведение истории изменений;
удобство для контрибьюторов и пользователей;
облегчение поддержки проекта в долгосрочной перспективе.
Строгая структура веток и коммитов повышает контроль над изменениями, улучшает читаемость истории проекта и минимизирует ошибки при совместной разработке в Open Source.
Документирование
Документирование — один из ключевых аспектов Open Source-разработки. Хорошая документация делает проект доступным для пользователей и контрибьюторов, ускоряет внедрение и снижает количество ошибок при использовании.
Формат: версия, дата релиза, исправления, новые функции.
Отдельно хочу выделить раздел Wiki на GitHub...
GitHub Wiki — это встроенный инструмент для более подробной и структурированной документации проекта. В отличие от README, Wiki позволяет создавать несколько страниц, объединённых логической структурой, что удобно для больших проектов.
Использование Wiki целесообразно для расширенной документации: здесь можно описать архитектуру проекта, инструкции по деплою и CI/CD, гайды по использованию библиотек и сервисов, а также рекомендации для контрибьюторов. Важно, чтобы Wiki дополняла README, а не дублировала его, оставляя последний кратким и ориентированным на быструю установку и запуск.
Практические рекомендации
Документируйте всё ключевое сразу, не откладывая на будущее. Это экономит время и снижает риск потери информации.
Используйте шаблоны и стандарты (например, Markdown, OpenAPI, DocBlock), чтобы документация была однородной.
Поддерживайте документацию в актуальном состоянии — каждая новая функция или изменение должно сопровождаться обновлением описаний.
Для сторонних пользователей делайте упор на простоту и понятность, для разработчиков — на технические детали и примеры использования.
Взаимодействие с аудиторией
Для успешного развития Open Source-проекта важно активно взаимодействовать с аудиторией и привлекать пользователей из сторонних источников. Это помогает не только продвигать проект, но и получать ценные отзывы для улучшения функционала.
Первым шагом является выбор удобного канала коммуникации. Это может быть форма обратной связи на сайте, отдельная почта для обращений пользователей или группа в популярной социальной сети. Главное — чтобы пользователи могли легко задавать вопросы и получать ответы.
В проекте tg-support-bot я создал отдельную группу, где публикую новости, отвечаю на часто задаваемые вопросы и взаимодействую с пользователями.
Этот подход оказался очень эффективным: со временем пользователи стали помогать друг другу, отвечая на вопросы без моего участия. Кроме того, участники активно тестируют новые функции, выявляют ошибки и предлагают улучшения, что значительно ускоряет развитие проекта.
Дополнительно в Telegram-группе я получаю от пользователей идеи для нового функционала и провожу голосования, что позволяет учитывать мнение сообщества при планировании развития проекта.
Таким образом, налаженная коммуникация с аудиторией позволяет объединить пользователей, повысить вовлечённость и создать сообщество вокруг проекта, что является ключевым фактором успешного Open Source-развития.
Скриншот из группы TG Support Bot | Бот для технической поддержки
Популяризация проекта
Для расширения аудитории важно привлекать пользователей из внешних источников. Одним из эффективных способов является создание видеоконтента в формате «Dev-блог», где можно показывать процесс разработки и делиться опытом по созданию проекта.
Видеоинструкции по установке и настройке проекта также оказывают большую помощь пользователям, снижая порог входа и повышая интерес к проекту.
Дополнительно полезно публиковать статьи на популярных ресурсах, таких как Хабр или Пикабу, чтобы привлечь новую аудиторию и рассказать о проекте более широкой публике.
Если проект содержит интересные технические решения, он может привлекать внимание даже тех пользователей, которые не планируют использовать его напрямую, но хотят наблюдать за процессом разработки и изучать технические детали.
Заключение
Open Source — это не только код, но и процессы, сообщество и взаимодействие с пользователями. Продуманная структура репозитория, тесты, документация и активная коммуникация помогают проекту развиваться и привлекать новых участников.
Если вам интересно следить за моими проектами и участвовать в их развитии, подписывайтесь на мой GitHub — там вы найдёте все обновления и сможете присоединиться к работе над проектами.
Уже полгода хожу в фитнес клуб World Class или как пишут в самом клубе - являюсь его резидентом. Выбрал этот клуб в основном из-за наличия в нём бассейна. Потом заинтересовался групповыми программами и частенько хожу на сайкл тренировки - это тренировки на специальном велотренажере.
И единственное меня раздражает, что для просмотра расписания занятий на следующую неделю каждый раз приходилось идти на сайт сети Ворд Класс, переходить в мой клуб, отбиваться от нескольких назойливых баннеров которые предлагают перезвонить через 3 секунды для того чтобы стать их клиентом. И только после этого найти в огромном расписании несколько строчек которые я ищу. На неделе таких занятий может проходить несколько и я вносил их в свой календарь, чтобы сходить хотя бы на одно в неделю. Вся это операция с поиском и занесением в календарь занимала минут 15. И так каждую неделю.
Автоматически созданное при помощи скрипта событие в моём гугл календаре
В какой-то момент мне это надоело и я подумал, а не написать ли скрипт, который раз в неделю будет ходить на их сайт с расписанием и добавлять в мой календарь занятия на сайкле автоматически?
Некоторым препятствием стало то, что сайт World Class динамически загружает контент с помощью JavaScript после начальной загрузки страницы. Зато нашлась конечная точка API и теперь занятия по сайклу каждый понедельник ночью добавляются в мой календарь за 3 секунды работы скрипта вместо 15 минут моей жизни каждую неделю.
Веб-сайт с общедоступным расписанием клуба World Class
Обычно расписание приветствует вот так
На сайте используется динамическая загрузка контента с помощью JavaScript. Это значит что сайт, который динамически загружает контент с помощью JavaScript после первоначальной загрузки страницы, - это тот, на котором не вся информация сразу доступна при первом появлении страницы. Вместо этого дополнительные данные или контент извлекаются с сервера и отображаются по мере взаимодействия со страницей. Этот метод обычно используется в современных веб-приложениях. Это устраняет необходимость перезагружать всю страницу и делает процесс более быстрым и плавным для пользователя.
Конечная точка API - это определенный URL-адрес, который позволяет внешним приложениям взаимодействовать с ним. API позволяют различным программным системам взаимодействовать друг с другом, отправляя запросы и получая ответы.
Когда взаимодействую с сайтом, который динамически загружает контент, то сайт часто запрашивает данные со своего сервера с помощью API. Сервер обрабатывает запрос и возвращает необходимые данные, которые затем отображаются на веб-странице. В контексте фитнес-клуба World Class конечной точкой API будет определенный URL-адрес, который предоставляет данные о расписании занятий. Отправив запрос на эту конечную точку, можно получить данные о расписании напрямую, минуя необходимость вручную перемещаться по сайту.
Поворотный момент и техническая проблема
В какой-то момент я наткнулся на чистую ссылку, которая ведёт только на само расписание фитнес-клуба World Class без любой рекламы. Ссылка выглядит следующим образом:
Где вместо d35ba5fc-1f7e-11ec-b664-50e548298f06 должен стоять идентификатор вашего клуба. Выше это идентификатор клуба в городе Перми.
Все доступные идентификаторы других клубов можно посмотреть прямо в браузере в режиме просмотра страницы:
Список доступных клубов
Поскольку World Class динамически загружает расписание с помощью JavaScript после начальной загрузки страницы, то стало некоторой проблемой найти конечную точка API и обратиться к ней за этим общедоступным и свободно опубликованным в интернете расписанием.
ICG Color Cycle (сайкл)
В пермском клубе World Class не обязательно записываться на занятия по сайклу заранее - достаточно прийти примерно за полчаса до занятия и взять на входе черную карточку для участия - места есть до тех пор пока карточки не закончатся. Правда бывают приходят и те кто записались онлайн, но карточку не взяли - просто не знали про это и мест не хватает. Это некоторая путаница.
Примерно так выглядят занятия по сайклу
Создание решения
Поскольку я использую Гугл календарь, то написал Google Apps скрипт. Apps Script - платформа на основе JavaScript для быстрой и простой разработки решений.
Скрипт может значительно упростить работу пользователя, избавив его от необходимости вручную проверять расписание и добавлять занятия в свой Гугл календарь.
Скрипт работает следующим образом:
Получение расписания: скрипт отправляет запрос в API World Class с идентификатором определенного спортзала. Далее извлекает расписание на следующие семь дней.
Фильтрация соответствующих занятий: после извлечения расписания скрипт отфильтровывает занятия «ICG Color Cycle» и «CORE», которые я хочу посещать. Все дальнейшие действия происходят только для отобранной выборки.
Создание событий календаря: для каждой отфильтрованной тренировки скрипт автоматически создает событие в Google календарь по умолчанию. Каждое событие включает:
Название: название тренировки (в моём случае либо «ICG Color Cycle», либо «CORE»).
Продолжительность: каждое событие запланировано на один час.
Описание: подробное объяснение зачем нужна эта тренировка.
Расположение: конкретный адрес клуба World Class, где проходит занятие.
Ведение журнала и обработка ошибок: скрипт регистрирует свой ход выполнения, указывая, когда он начинается и заканчивается, и предоставляя подробную информацию о каждом созданном событии. Если запрос API не выполняется или возвращает ошибку, скрипт регистрирует сообщение об ошибке для устранения неполадок.
Файл где можно посмотреть токен, который понадобится для обращения к API
По сути, этот скрипт - инструмент экономии времени для резидентов клуба World Class, которые могут быть уверены, что всегда будут знать когда проходят их любимые занятия.
Версия скрипта полного дня:
function WorldclassAPISchedulingPerm() {
console.log(`Функция WorldclassAPISchedulingPerm начала работу в ${(new Date()).toLocaleString("ru-RU")}`);
Если вы новичок и хотите тоже автоматизировать получение определенных занятий, то скрипт Google Apps это мощный инструмент, который может вам помочь:
Шаг 1: Доступ к скрипту Google Apps
Откройте Google Drive: начните с перехода на Google Drive.
Создайте новый скрипт:
Нажмите кнопку Создать в верхнем левом углу.
Выберите Еще в раскрывающемся меню.
Нажмите Скрипт Google Apps. Откроется редактор скриптов Google Apps на новой вкладке.
Шаг 2: Назовите свой проект
Назовите свой скрипт: как только откроется редактор скриптов приложений, вы увидите проект без названия. Нажмите на заголовок (обычно это «Проект без названия») и дайте ему осмысленное имя, например «Расписание World Class».
Шаг 3: Скопируйте код
Удалите код по умолчанию: в редакторе вы увидите код по умолчанию (function myFunction() {}). Вы можете удалить его, чтобы освободить место для нового скрипта.
Скопируйте и вставьте код:
Перейдите к статье с кодом скрипта Google Apps.
Скопируйте весь скрипт, предоставленный в статье.
Вернитесь в редактор скриптов приложений и вставьте код в пустое место.
Шаг 4: Сохраните свой скрипт
Сохраните свою работу: Щелкните значок дискеты или нажмите Ctrl + S (или Cmd + S на Mac), чтобы сохранить свой скрипт.
Шаг 5: Запустите скрипт
Запустите свой скрипт: Чтобы протестировать скрипт, щелкните значок воспроизведения (▶) в верхней части редактора. Если вы запускаете скрипт впервые, Google запросит авторизацию.
Авторизуйте свой скрипт: Следуйте инструкциям, чтобы разрешить скрипту доступ к вашему Google Calendar и другим необходимым службам.
Шаг 6: Проверьте вывод
Проверьте журналы: После запуска скрипта вы можете проверить сообщения журнала, чтобы убедиться, что он работает правильно. Перейдите в Просмотр > Журналы в редакторе скриптов приложений, чтобы увидеть вывод.
Шаг 7: Автоматизируйте его
Установите триггер: если вы хотите, чтобы этот скрипт запускался автоматически через регулярные интервалы, вы можете настроить триггер:
Нажмите на значок часов на панели инструментов (Триггеры).
Нажмите + Добавить триггер в правом нижнем углу.
Установите запуск скрипта еженедельно, например на ночь между понедельником и вторником.
И это все! Вы успешно создали скрипт Google Apps, который автоматизирует добавление расписания в ваш календарь Google.
Результаты
При использовании гугл календаря этот скрипт представляет удобный инструмент который ищет интересующие групповые события и добавляет их автоматически в Ваш собственный Гугл Календарь.
Государственная Дума РФ в третьем, окончательном, чтении приняла законопроекты №346588-8, №346769-8 и №346750-8, запрещающие участие граждан РФ в незарегистрированных в специальном реестре иностранных некоммерческих организациях, и вводящие, среди прочего, уголовную ответственность за организацию деятельности подобных организаций. Закон вступит в силу после того как пройдёт утверждение в Совете федерации и будет подписан президентом. У продвигаемого закона есть очень серьёзный побочный эффект - под его действие потенциально попадает участие во многих международных проектах, занимающихся разработкой свободного программного обеспечения.
Большая часть крупных открытых проектов, не принадлежащих коммерческим компаниям, зарегистрированы именно как некоммерческие организации для того, чтобы иметь возможность легально принимать и распоряжаться пожертвованиями, а также оплачивать труд наёмных работников. Так как критерии применения закона не определены, под его действие можно притянуть что угодно: от коммитов в репозиторий и до отправки сообщения об ошибке. Под угрозой преследования по новым статьям не только обычные пользователи СПО-проектов, но и сотрудники российских компаний, осуществляющие разработку и внедрение СПО по программе импортозамещения, так как делать это без участия в апстриме невозможно (российские разработчики активно делятся частью наработок с исходными проектами, а также сообщают о найденных ошибках).
Примеры курируемых некоммерческими организациями крупных СПО-проектов, без которых не обходится ни один дистрибутив Linux, включая отечественные ALT Linux, Astra Linux, Rosa Linux и др.:
Ядро Linux (управляется The Linux Foundation);
Вся GNU-обвязка каждого дистрибутива, включая стандартные утилиты (sed, awk, cat и т.д.), загрузчик операционной системы GRUB, компиляторы языков программирования C/C++, набор GnuPG, применяющийся для подписи пакетов во всех дистрибутивах, и т.д. (Free Software Foundation);
Веб-браузер Firefox и почтовый клиент Thunderbird (Mozilla Foundation);
СУБД PostgreSQL (The PostgreSQL Foundation);
СУБД MariaDB (MariaDB Foundation);
Пользовательское окружение KDE, включая все входящие в комплект поставки приложения, а также графический редактор Krita, офисный пакет Kalligra Office (KDE e.V.);
Пользовательское окружение GNOME, включая все входящие в комплект поставки приложения, а также графический редактор GIMP, офисный пакет GOffice (GNOME Foundation);
Язык программирования Python (Python Foundation);
Язык программирования PHP (PHP Foundation);
Язык программирования Perl (Perl Foundation);
Язык программирования Rust (Rust Foundation);
Среда разработки Eclipse и платформа Jakarta EE (Eclipse Foundation);