Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Что таится в глубинах Земли? Только Аид знает наверняка. А также те, кто доберётся до дна шахты.

Эпичная Шахта

Мидкорные, Приключения, 3D

Играть

Топ прошлой недели

  • Oskanov Oskanov 9 постов
  • Animalrescueed Animalrescueed 44 поста
  • Antropogenez Antropogenez 18 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
Timeweb.Cloud
Timeweb.Cloud
TECHNO BROTHER

Программирование для Windows 1.0 в 2025 году⁠⁠

1 час назад

«...Одним из примеров громоздкой и, по мнению авторов, бесполезной надстройки является интегрированная система WINDOWS фирмы Microsoft. Эта система занимает почти 1 Мбайт дисковой памяти и рассчитана на преимущественное использование совместно с устройством типа "мышь".» — вы точно знаете, откуда это

Приветствую всех! Буквально неделю назад прошло сорок лет с момента выхода первой релизной версии Windows. Именно в тот день в 1985 году началась история ныне повсеместно распространённой ОС.

И вот, узнав об этом, я подумал: а что, если попробовать запустить эту ОС и узнать, как предполагалось писать софт для неё? Именно этим мы сейчас и займёмся. Заодно и узнаем, насколько это было проще или сложнее, нежели сейчас.

❯ Суть такова

Уверен, если вы интересуетесь историей ОС, то хорошо знаете, что вообще такое Windows 1.0 и что она собой представляла. Хотя Windows 1.X были не полноценными ОС, а графическими оболочками под DOS, для них существовал SDK, позволяющий писать оконные приложения. Тем не менее, из-за высокой по меркам тех лет сложности разработки самих приложений было не так уж и много.
Особой популярности система тоже не заполучила, поскольку имела значительные системные требования и малое количество софта. Очень многие из тех, у кого в те годы был ПК, про этот продукт вообще ни разу не слышали. В общем, это самая подходящая платформа, под которую сейчас стоит попробовать что-то написать. Этим-то мы и займёмся.

❯ Обзор оборудования

Как известно, я пишу про железо, а не только про софт, поэтому запускать то, что получится, будем на настоящем ПК.

Намного более аутентичного для такой системы PC XT у меня нет, поэтому для запуска был вытащен вот такой промышленный одноплатник. Конечно, можно было бы взять и просто плату на 286 или 386, но этот девайс лежал у меня уже больше полугода и всё ждал, когда я сделаю с ним что-то интересное. Так что сейчас будем пробовать с ним.

Это ROCKY-328E-M4. На борту процессор 386SX-40 (точнее, SoC Ali M6117C, объединяющая процессорное ядро и чипсет Ali M1217), четыре мегабайта памяти, IDE, флоппи-контроллер, в данный момент ненужный Ethernet, панелька под DiskOnChip и стандартные для любого ПК интерфейсы. Когда-то давно он работал на одном неназванном предприятии и управлял какими-то устройствами при помощи плат дискретного ввода-вывода и платы последовательных портов. Впрочем, про эти модули поговорим как-нибудь в другой раз, а сейчас будем рассматривать его просто как обычный ПК.

Вообще, такие промышленные ПК — отличный вариант для того, кто хочет заполучить себе ретрокомпьютер, но у кого поставить дома обычную «тройку» или «четвёрку» возможности нет. Эта плата позволит заиметь полноценный 386 без всяких эмуляторов, а места такая машина будет занимать не больше, чем обычный бесперебойник.

Встроенного видео на плате нет, поэтому для запуска понадобится ещё и видеокарта.

Это довольно популярная в своё время плата на чипе Realtek RTG3105i. Особых причин выбрать именно её у меня нет: просто когда-то она досталась мне вместе с этим промПК.

Всё вместе втыкается в кросс-плату.

У меня она вот такая, от Advantech. Конкретно эта сделана под размер обычной материнки типа AT. Даже предусмотрен разъём DIN-5 для клавиатуры с отводом от него для подключения к процессорной карте.

❯ Что нужно, чтобы начать писать софт под Windows 1.X?

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

  • Образ MS-DOS 3.0.

  • Дистрибутив Windows 1.X.

  • Компилятор. В моём случае Microsoft C 4.0.

  • Windows SDK. Тут я решил использовать версию 1.03.

Изначально я хотел использовать SDK 1.01 и Microsoft C 3.0, но...

...во всяком случае, я пытался.

То ли ему чего-то не хватает, то ли устанавливается он не так просто, как мне думалось, но ни одна программа им не собралась. Поэтому выбор был сделан в пользу того, на что имелась документация. Никаких PDF, никакой онлайн-справки в те годы не было, все мануалы были бумажными. Так уж вышло, что на Microsoft C 4.0 и Windows SDK 1.03 их сканы имелись в наличии.

Ну что, приступим?

❯ Эмулятор

Как я уже упомянул, собирать всё будем в эмуляторе. Им стал 86box (пришедший на смену почившему PCem). Как его поставить, описывается тут.

Создал виртуалку с процессором 386SX и чипсетом как у моей платы (дабы, если что, заранее обнаружить, что что-то пошло не так, и это решить).

Далее добавляем винт, а в разделе контроллеров выбираем «PC/AT Floppy Drive Controller» и «[ISA16] PC/AT IDE Controller (Dual-channel)».

В BIOS указываем параметры жёсткого диска. Загружаем в дисковод образ DOS и перезагружаемся.

Далее выполняем стандартные действия для установки DOS: размечаем диск при помощи fdisk, форматируем при помощи format, делаем его загрузочным при помощи sys и копируем остальные файлы. На этом загрузочная дискета нам больше не понадобится. Компьютер теперь будет запускаться с винта.

Процесс установки Windows 1.0 особых сложностей тоже не вызывает, так что показывать его я тут не буду. При установке надо указать следующие параметры: мышь — Microsoft Mouse (Bus/Serial), видеокарта — EGA with Enhanced Color Display or Personal Computer Color Display, принтер — не используется.

Запускаем ОС командой win и убеждаемся, что картинка цветная, мышь шевелится, а стандартные приложения нормально открываются.

❯ Компилятор

Теперь очередь компилятора.
Установочной программы у него нет. Поэтому всё придётся копировать самому. На системном диске создаём папки BIN, INCLUDE, TEMP, LIB. В BIN копируем всё содержимое первой дискеты, ещё несколько экзешников со второй и link.exe с третьей, в INCLUDE — всё с расширением *.H и *.INC, в LIB — всё с расширением *.OBJ и *.LIB, TEMP оставляем пустой. В INCLUDE создаём папку SYS и копируем туда содержимое одноимённого каталога на третьем диске. Дискеты 6, 7 и 8 для первого запуска можно пока не трогать.

Казалось бы, на этом всё. Но на самом деле нет, ведь если теперь мы попробуем что-либо собрать, то компилятор выдаст вот такую ошибку.

Поэтому продолжим установку, для чего создадим в корне системного диска ещё два файла.

Первый, AUTOEXEC.BAT, следующего содержания:

PATH C:\WINDOWS;C:\BIN;C:\INCLUDE;C:\LIB
SET INCLUDE=C:\INCLUDE
SET LIB=C:\LIB
SET TMP=C:\TEMP
SET TEMP=C:\TEMP

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

Второй, CONFIG.SYS, вот такой:

FILES=20 BUFFERS=40

Это файл конфигурирования системы. Здесь мы задали число максимально возможных открытых файлов и число максимально возможных дисковых буферов.

Если у вас не чистая установка DOS, то прописываем эти параметры и имена переменных в соответствующих файлах.

После этого тестовая программа (из комплекта компилятора) должна будет собраться и запуститься. Отлично.

❯ SDK

Теперь нужно установить Windows SDK. Поставляется он опять таки на нескольких дискетах.

Вставляем диск номер два и выполняем следующие команды:

C:
copy A:\INSTALL.BAT C:\INSTALL.BAT
CD \
INSTALL \BIN \WINDOWS \INCLUDE \LIB

После этого начнётся установка.

Тут всё просто, вставляем очередную дискету и ждём, пока скопируются файлы.
На этом установку SDK можно считать законченной.

❯ Ставим Windows

А пока что отвлечёмся от установки инструментария и произведём ещё одну установку Windows.

На этот раз создадим загрузочную дискету с Windows 1.03, установив систему на чистый образ и добавив на оставшееся место DOS. Туда же чуть позже закинем собранные приложения.

Собираем тестовый стенд.

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

❯ Пишем первую программу

Ну что же, время попробовать что-нибудь собрать. В составе SDK есть и какие-то примеры кода. С них-то и начнём.

Находим папку HELLO и копируем её на жёсткий диск. Теперь заходим в неё и выполняем команду:

make hello

После этого через примерно пару минут приложение должно будет собраться. Если не собралось — проверяем, правильно ли установили компилятор и SDK.

Можно даже попробовать запустить свежесобранный экзешник и убедиться, что приложение действительно требует для работы Windows.

Поэтому заходим в Windows, запускаем, и, если всё получилось, на экране должно будет появиться примерно следующее:

Отлично!

❯ Что же тут происходит?

Взглянем на исходник этого приложения.

Файл достаточно внушительной длины (больше полутора сотен строк). Тем не менее, там можно встретить много того, что есть и в куда более свежих программах для Windows на Си.

Вообще, первые версии Windows были просто оболочками, не имели никакой многозадачности, а целью их создания было не выпустить полноценную ОС, а облегчить работу с DOS. Несмотря на это, кое-что из появившегося в них либо претерпело значительное развитие и используется и до сих пор (например, GDI, много позже ставший GDI++ и использующийся и сейчас, появился с самых первых сборок Windows), либо ушло в историю, но оставило свой след (например, параметр hPrevInstance, использовавшийся в Win16 и всегда равный NULL в Win32).

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

❯ Тесты на ПК

Теперь попробуем запустить тестовый стенд.

Насаживаем перемычку между контактами PS_ON и землёй на кросс-плате, запуская тем самым блок питания. Через несколько секунд компьютер проходит POST и начинает загружаться. Можно набирать WIN и пробовать запускать софт.

Всё успешно работает!

И ещё одно приложение — показ фигуры заданного мышкой размера.

❯ Утилиты

Помимо инструментария для сборки в комплекте с SDK идёт несколько графических приложений. Само собой, никаких интерактивных редакторов кода с ним не поставлялось: для написания программы надо было открыть текстовый редактор, набрать там код, закрыть редактор, попробовать собрать приложение, затем при необходимости снова открыть редактор и исправить ошибки. И так очень много раз. Но всё же несколько интересных утилит тут имеется.

Первая из них — это редактор шрифтов.

Следом идёт редактор иконок.

В Windows 1.0 нет ни рабочего стола, ни панели задач. Единственное место, где видны эти иконки, так это при сворачивании приложения. Снизу видны открытые HELLO.EXE, MS-DOS Executive и калькулятор.

Вот так выглядит процесс редактирования.

И, наконец, самое важное. Это редактор диалогов.

Весь интерфейс программы создаётся в нём и сохраняется в виде двух файлов — ресурсов и заголовков.

❯ Что же в итоге?

Несмотря на то, что программирование под Win16 по сути умерло, некоторые порой всё же пробуют что-то написать. Кому-то это надо из любви к ретрокомпьютерам, кому-то — ради того, чтобы оживить какой-то древний, но очень нужный и приносящий очень много денег софт.
Но всё же если вдруг вас так и тянет попробовать что-то написать под древнюю ОС, то рекомендую начать опыты с Windows 95 или 98. Под них куда больше документации и примеров кода, а инструментарий намного более удобен.
Такие дела.

❯ Ссылки

  • Win16 for Fun and (Probably No) Profit

  • Building Win16 GUI applications in C

  • Win16 Retro Development

  • Win16 Programming Resources

  • Готовая установка Microsoft C для разработки софта под Windows 1.X


Материал получился очень объемным, но весьма интересным. Все иллюстрации не влезли. Но их можно изучить в

оригинальной статье.


Написано при поддержке Timeweb Cloud.

Больше интересных статей и новостей в нашем блоге на Хабре и телеграм-канале.

Реклама ООО «ТАЙМВЭБ.КЛАУД», ИНН: 7810945525

Показать полностью 24
IT Программист Windows Программирование Программа Электроника Microsoft Timeweb Telegram (ссылка) YouTube (ссылка) Reddit (ссылка) Длиннопост Блоги компаний
2
10
DmitriitheFals
Лига Сисадминов
Серия Кудахтеры

Ответ AcidMuzungu в «Расскажите про своего самого ужасного коллегу»⁠⁠2

4 дня назад

Для того, чтобы получать и разбирать логи, и реагировать на результаты в логах, уже много лет существуют:
Windows Event Collector. Это, наверное, еще в школах изучают.
100500 разных Syslog collector. Rsyslog и syslog-ng. Вот сходу первый попавшийся список - Top 10 best free syslog servers. Сходу там упомянуты:
ELK (Elasticsearch). Открываешь вторую страницу AWS, статью Что такое стек ELK?, и читаешь.
Если хочется чего-то новее, то открываешь для себя тройничок:  Promtail, Loki, Grafana
Сбоку от этого всего висит Filebeat.

Все вместе – часть огромного куска го пирога с го модного и стильного направления observability. Это тот же мониторинг, но дороже.
Конкретно логи безопасности и реагирование на них - это SIEM: Security Information & Event Management, а что это такое - вы могли бы и сами узнать в курсе Security 101.

[моё] Работа Некомпетентность Текст Информационная безопасность IT Системное администрирование Программирование Программист Ответ на пост Windows Опыт
1
7
NetIntel
NetIntel
Лига программистов

Что происходит, когда запускается код?⁠⁠

4 дня назад

ТГК: NetIntelRU

Когда программист пишет код, он редко задумывается о том, что происходит с программой после того, как он её написал. Но понимание этого процесса необходимо для эффективной отладки, оптимизации и написания надёжного кода. А ещё, это просто интересно.

Три пути выполнения

Что происходит, когда запускается код?

Если код компилируемый (например, написан на C++ или Go), то компилятор берет ваш исходный код (.cpp, .rs) и превращает его в так называемый объектный файл (.o или .obj). Это уже почти машинный код, но в нем могут быть "пробелы", например, вызов функции printf, код которой находится в другой библиотеке.

В работу вступает линковка (линкер/компоновщик/сборщик). Его задача взять один или несколько объектных файлов и склеить их в единый, работоспособный исполняемый файл (.exe или ELF). Он находит все недостающие функции (в других объектных файлах или в системных библиотеках), подставляет их реальные адреса на место "пробелов" и создает итоговый файл, готовый к загрузке в память.

Если код интерпретируемый (Python, JavaScript), то ситуация иная. Здесь нет классической компиляции и линковки перед запуском. Файл, который вы запускаете, это исходный текст. В память загружается сама программа-интерпретатор, а уже она получает путь к вашему скрипту. То есть, процесс создается для интерпретатора, а он уже, в свою очередь, будет читать и выполнять ваш код построчно в реальном времени.

Существует и гибридный подход (JIT-компиляция в Java или C#), когда исходный код сначала компилируется в промежуточный байт-код CIL (промежуточный код между высокоуровневым исходным кодом, который пишут разработчики, и машинным кодом, исполняемым процессором), а специальная среда выполнения (виртуальная машина) компилирует его в машинный код уже в процессе работы программы, совмещая гибкость интерпретации и скорость компиляции.

Теперь, когда у нас есть готовый исполняемый файл или запущен интерпретатор, загрузчик (см. Подготовка среды) наконец-то может сделать свою работу. Он открывает файл, считывает его структуру и раскладывает сегменты кода и данных по тем самым зонам в памяти, которые ОС выделила для процесса.

Подготовка среды

Операционная система готовит для программы пространство в памяти. ОС (Операционная система) - это главный менеджер вашего компьютера. Она постоянно слушает, что вы делаете (через графический интерфейс или командную строку). Когда она получает команду "запустить эту программу", она понимает, что задача найти исполняемый файл и подготовить его к работе.

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

ОС отрезает в оперативной памяти (RAM) приватный участок и называется он "виртуальное адресное пространство". Это мощная абстракция, которая дает каждому процессу иллюзию, что у него в распоряжении есть вся память компьютера целиком, начиная с адреса 0 и заканчивая очень большим числом (например, 2^64 в 64-битных системах).

В этом пространстве будут жить сам код программы, данные (глобальные переменные) и служебные структуры, такие как стек для вызовов функций и куча для динамической памяти. Эта изоляция - фундамент безопасности и стабильности системы.

Интересный момент не по теме: Если ОС так тщательно изолирует процессы, как тогда программа-вирус может украсть данные, зашифровать файлы или встроиться в систему? Ответ прост: вирус должен получить разрешение от пользователя или ОС на выход из своей "песочницы". Вирус, запущенный от имени обычного пользователя (без прав админа), не может повредить систему, но он может свободно работать с файлами текущего пользователя. Также вирус может использовать уязвимости и внедриться в другие процессы.

Каждому новому процессу ОС присваивает уникальный номер - Process ID. Так она может отличать твою запущенную косынку от десятков других процессов.

Теперь, когда процесс есть в памяти, специальный компонент ОС, "загрузчик", открывает твой исполняемый файл (.exe или файл в формате ELF) и раскладывает его части по заранее размеченным зонам в памяти.

Управление

Планировщик задач

Загрузчик разместил код в памяти, ОС передала управление процессору. Программа ожила и начала выполнять свои инструкции, но она не одна. На компьютере одновременно работают десятки других процессов. Как ОС управляет этим?

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

Если у тебя четырёхъядерный процессор с Hyper-Threading, он может одновременно выполнять до восьми потоков (по одному на каждое логическое ядро). Однако в системе обычно работают десятки или даже сотни процессов и потоков, что гораздо больше, чем ядер.

Для этого существует планировщик ОС. Его задача эффективно распределять все процессы и потоки по доступным ядрам. Планировщик выделяет каждому потоку квант времени, обычно от нескольких до десятков миллисекунд, запускает поток на одном из ядер, даёт ему поработать, затем принудительно останавливает его, сохраняет контекст (содержимое регистров, счётчик команд и т.д.) и ставит на выполнение следующий поток.

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

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

Системные вызовы

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

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

Когда программе нужно выполнить привилегированную операцию (например, открыть файл, выделить память или отправить данные по сети), она инициирует системный вызов. Для этого используется специальная инструкция процессора (например, syscall или svc), которая вызывает программное прерывание. Это прерывание приостанавливает выполнение программы и передаёт управление ядру ОС.

Ядро проверяет запрос, выполняет необходимые действия (например, чтение файла или выделение памяти), а затем возвращает результат программе и снова передаёт ей управление. Если операция требует ожидания, например, данные ещё не загружены с диска, ядро может временно блокировать программу, чтобы не тратить ресурсы процессора на ожидание.

Управление памятью и файлами

Во время работы программы её потребности в ресурсах могут меняться. ОС постоянно отслеживает это. Если программе требуется выделение или освобождение памяти на уровне ОС (например, при увеличении кучи или создании нового сегмента памяти), она делает системный вызов.

Менеджер памяти ОС зарезервирует виртуальное адресное пространство для процесса, а физическую память выделит по мере необходимости (например, при первом обращении к памяти). Если свободной физической памяти нет, ОС может использовать файл подкачки на диске. После выделения памяти ОС обновляет таблицы страниц процесса, чтобы он мог использовать новые блоки. Когда программа завершается, ОС освобождает память и другие ресурсы, возвращая их системе.

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

Исполнение

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

Выборка (Fetch)

Процессор имеет специальный регистр - счётчик команд (Program Counter, PC или Instruction Pointer, IP), в котором хранится адрес следующей инструкции, которую нужно выполнить. Этот адрес виртуальный, и он преобразуется в физический с помощью MMU (Memory Management Unit).

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

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

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

Предварительная выборка это механизм, при котором процессор заранее загружает инструкции и данные в кэш, ещё до того, как они понадобятся.

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

Декодирование (Decode)

Скопированная инструкция это просто числа. Процессор должен понять, что она означает. Каждая инструкция состоит из кода операции (opcode), который определяет действие, и операндов, указывающих, с какими данными работать.

Устройство управления анализирует opcode и генерирует сигналы для активации нужных компонентов процессора. Например, для инструкции сложения (ADD EAX, EBX) оно отправит сигнал в арифметико-логическое устройство (АЛУ), чтобы выполнить операцию, и в регистры, чтобы сохранить результат.

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

Пример: Рассмотрим инструкцию MOV EAX, [EBX] (переместить данные из ячейки памяти, адрес которой хранится в EBX, в регистр EAX). На этапе декодирования процессор:

  1. Определяет, что это инструкция перемещения данных (MOV).

  2. Извлекает адрес из регистра EBX.

  3. Подготавливает АЛУ и регистры для передачи данных из памяти в EAX.

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

Выполнение (Execute)

Где процессор берет числа для операций и куда кладет результат? Для этого у него есть своя сверхбыстрая внутренняя память - регистры.

Давайте посмотрим на этот процесс на простом примере. Возьмем строчку кода: c = a + 5;

После того как процессор декодировал инструкцию, соответствующую этой строке, он переходит к выполнению. Процессор загружает значение переменной a из оперативной памяти в один из своих регистров. Затем он загружает константу 5 в другой регистр (например, в RBX).

Он отдает команду своему АЛУ, чтобы сложить то, что лежит в RAX, с тем, что лежит в RBX. АЛУ выполняет сложение, и результат (например, 23) помещается обратно в регистр RAX. Наконец, процессор сохраняет значение из регистра RAX обратно в оперативную память, по адресу, где находится переменная c.

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

Завершение работы и уборка

Завершение работы

Прерывание это сигнал от аппаратного устройства, который говорит процессору остановиться. Оно не связано с текущей выполняемой инструкцией и может произойти в любой момент.

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

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

Исключение это событие, сгенерированное самим процессором в ответ на ошибку или особую ситуацию во время выполнения инструкции. Это синхронное событие, напрямую связанное с выполняемой инструкцией.

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

Для системного вызова ОС выполняет запрошенную операцию и возвращает управление программе, как мы описывали ранее.

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

Уборка

Как бы программа не завершалась, во всех случаях ОС собирает мусор. У ОС есть таблица, где она отслеживает все файлы, которые открыл процесс. ОС проходит по этому списку и закрывает каждый файл. Это гарантирует, что все буферы на диске будут записаны, а сам файл станет доступен для других программ.

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

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

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

Его уникальный номер (PID) теперь свободен и может быть выдан новому процессу. Планировщик задач убирает этот процесс из своих очередей на выполнение.

Сборщик мусора (Garbage Collector, GC) это не механизм операционной системы, а компонент среды выполнения конкретного языка программирования. Если уборка, которую делает ОС, это снос целого процесса, то сборщик мусора это уборка внутри процесса, пока он живёт.

Если понравилась статья - рекомендую подписаться на телеграм‑канал NetIntel. Там вы сможете найти множество полезных материалов по IT и разработке!

Показать полностью 1
[моё] Программа IT Программирование Сисадмин Операционная система Программист Linux Windows Linux и Windows Информационная безопасность Тестирование Длиннопост
21
it.forkids
it.forkids

Дизайн для детей: обучение цифровому творчеству на онлайн-курсах⁠⁠

7 дней назад

Уроки обучения дизайну для детей могут строиться вокруг пары самостоятельных направлений. Это, скажем, web-дизайн, в рамках которого предполагается погружение в теорию и практику использования Figma и подобных сервисов для прототипирования и создания визуальных макетов страниц. Второе же направление в данном контексте – графический дизайн. Осваивать его ребята различных возрастов могут путем работы с рядом редакторов, например Photoshop и Illustrator.

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

Содержание

  • Графический и веб-дизайн для детей: подборка онлайн-курсов для ребят младшего школьного и подросткового возраста

  • Комплексная траектория «UX/UI-дизайн» для детей 12–17 лет

  • Уроки графического дизайна для школьников, обучающихся в 5–11-х классах

  • Занятия по графическому и веб-дизайну: обучение для школьников

  • Цифровой дизайн: уроки для ребят 7–16 лет

  • Курс «Digital-дизайнер» для детей от 10 до 15 лет

  • Уроки графического дизайна для детей: обучение онлайн школьников 10+ лет

  • Уроки обучения веб-дизайну для детей от 8 до 17 лет

  • FAQ

  • Чем полезны уроки обучения веб-дизайну для детей?

  • Как выбрать онлайн-курсы веб-дизайна для подростков?

  • В каком возрасте можно записаться на обучение веб-дизайну для школьников?

  • Онлайн-обучение дизайну для детей подойдет только творческим ребятам?


Графический и веб-дизайн для детей: подборка онлайн-курсов для ребят младшего школьного и подросткового возраста

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


Комплексная траектория «UX/UI-дизайн» для детей 12–17 лет

Узнать о траектории графического и веб-дизайна для подростков

Форматы: пройти уроки обучения графическому и веб-дизайну для детей можно в группе или один на один с опытным учителем.

Цена: от 600 рублей за час.

Скидка: 10 %. Получить выгоду удастся, если заплатить за 12 уроков минимум в день обращения.

Оплата маткапиталом: предусмотрена, дополнительно можно оформить вычет в размере 13 % и воспользоваться рассрочкой.

Содержание уроков: если коротко, то занятия по графическому и веб-дизайну для подростков помогут участникам траектории разобраться в создании сайтов, использовании Adobe Photoshop и Illustrator, а также собрать ряд проектов и добавить их в собственное портфолио.

Если более конкретно, то школьникам предстоит освоить:

  • Веб-дизайн на примере использования Figma. Это сервис, функционирующий онлайн и предназначенный специально для создания макетов и прототипов сайтов. Дополнительно в соответствующий перечень блоков теории и практики заложены темы, касающиеся создания веб-проектов посредством конструктора Tilda, не требующего навыков в написании кода;

  • Графический дизайн на примере использования Photoshop и Illustrator от Adobe. Если более конкретно, то участникам образовательной траектории предстоит поработать с цветом, формами, расположением визуальных элементов в проектах, а также вникнуть в векторную и растровую графику как обособленные сферы графического дизайна в целом.


Уроки графического дизайна для школьников, обучающихся в 5–11-х классах

Форматы: организатор набирает мини-группы, индивидуальные уроки не предусмотрены.

Цена: от 770 рублей за урок.

Темы: применение Figma, использование Photoshop, конструирование сайтов посредством Tilda и т. д.


Занятия по графическому и веб-дизайну: обучение для школьников

Форматы: мини-группы.

Цена: весь курс стоит от 34 750 рублей.

Темы: дизайн лендингов, графические концепции, работа с визуалом, разработка афиш и баннеров, оформление плакатов и т. д.


Цифровой дизайн: уроки для ребят 7–16 лет

Форматы: только индивидуальные удаленные уроки.

Цена: от 1 200 рублей за урок.

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


Курс «Digital-дизайнер» для детей от 10 до 15 лет

Форматы: набираются группы.

Цена: от 1 650 рублей за одно дистанционное занятие.

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


Уроки графического дизайна для детей: обучение онлайн школьников 10+ лет

Форматы: проводятся индивидуальные и индивидуально-групповые уроки.

Цена: от 790 рублей за урок.

Темы: коллажи в Фотошопе, ретуширование фотографий, креатив и стилизация, создание стикеров из пикселей и т. д.


Уроки обучения веб-дизайну для детей от 8 до 17 лет

Форматы: только один на один с учителем.

Цена: базовая стоимость занятия составляет 1 500 рублей.

Темы: создание графических интерфейсов, работа с прототипами, использование сервиса Figma и т. д.


FAQ

Чем полезны уроки обучения веб-дизайну для детей?

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

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

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

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


Как выбрать онлайн-курсы веб-дизайна для подростков?

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

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

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

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

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


В каком возрасте можно записаться на обучение веб-дизайну для школьников?

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

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


Онлайн-обучение дизайну для детей подойдет только творческим ребятам?

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

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

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

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

Реклама ООО «ПИКСЕЛЬ.СТАДИ», ИНН: 5074078988

Показать полностью 8
Программирование Обучение IT Образование Программа Python Тестирование Программист Задача Linux Postgresql Microsoft Windows Фриланс Автоматизация Openai Информационная безопасность Заработок в интернете Стартап Блоги компаний Длиннопост
it.forkids
it.forkids

Создание модов на языке программирования Python в Майнкрафте: ТОП-10 онлайн-курсов для обучения детей⁠⁠

7 дней назад

Уроки языка программирования «Питон» с нуля для детей не всегда обязательно строить вокруг сухой теории и выполнения скучных проектов. Дело в том, что данный инструмент можно использовать в связке с Minecraft для разработки и кодинга модов, что на практике улучшает восприятие Python и делает учебный процесс куда более увлекательным. Это обусловлено популярностью Майнкрафта среди детей и подростков.

Содержание

  • Онлайн-курсы Python – языка программирования в Майнкрафте

  • Python-разработчик: образовательная траектория для младших школьников и подростков 10–13 лет

  • Онлайн-уроки Python в Minecraft для ребят 10+ лет

  • Курс «Основы математической логики в среде Minecraft» для детей 8–12 лет

  • Уроки программирования и 3Д-моделирования для детей 8–10 лет

  • Онлайн-занятия по кодингу в Майнкрафте для школьников 9–12 лет

  • Online-курс по программированию в Майнкрафте для детей 7–12 лет

  • Уроки создания модификаций в Minecraft для школьников 10 лет и старше

  • Трехмерное моделирование и кодинг в игровой вселенной для ребят 8–10 лет

  • Уроки кодинга на языке программирования Python в Minecraft для ребят 9–14 лет

  • Дистанционный курс написания кода в Майнкрафте для ребят 9 лет и старше

  • FAQ

  • Можно ли записаться на курсы языка программирования «Питон» для подростков без Майнкрафта?

  • Есть ли онлайн-занятия по языку «Питон» для 8-х классов?

  • Какой язык программирования используется в Minecraft для кодинга модов?

  • На каком языке программирования написан сам Майнкрафт?


Онлайн-курсы Python – языка программирования в Майнкрафте

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


Python-разработчик: образовательная траектория для младших школьников и подростков 10–13 лет

Узнать о комплексной траектории разработки и кодинга на «Питоне»

Особенности: траектория объединяет два курса и характеризуется повышенным образовательным потенциалом с точки зрения освоения языка программирования «Питон» с нуля на уроках для детей.

Форматы: освоить представленное направление можно в группе или индивидуально с учителем.

Цена: от 600 рублей за один час онлайн-уроков.

Скидки: 10 %. Для получения выгоды нужно выполнить условие в виде оплаты 12 занятий минимум в день обращения.

Выгоды: вычет 13 % после учебы, оплата маткапиталом, рассрочка.

Содержательная сторона: отметили, что траектория объединяет два курса. Первый можно считать вводным: он основан на программировании модов для Майнкрафта на «Питоне». Второй же поможет углубиться в основы кодинга на данном языке и приблизиться к пониманию принципов продвинутого написания текстового кода.

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

  • Основах кодинга на Python и продвинутом программировании на данном языке;

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

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

Так, курсы языка программирования «Питон» для детей и подростков, объединенные в траекторию, помогут овладеть данным инструментом и начать использовать его на продвинутом уровне даже вне рамок Майнкрафта.


Онлайн-уроки Python в Minecraft для ребят 10+ лет

Форматы: видео в записи.

Цена: доступ к видеокурсу на месяц стоит 7 990 рублей. Если хочется увеличить срок до 160 суток, потребуется заплатить 20 000+.

Темы: циклы, ввод текста, случайные числа, типы данных, создание модов для Майнкрафта и т. д.


Курс «Основы математической логики в среде Minecraft» для детей 8–12 лет

Форматы: один на один с учителем и в группе.

Цена: от 4 900 рублей за месяц.

Темы: операторы, компараторы, логические схемы, строительство в игровой вселенной и т. д.


Уроки программирования и 3Д-моделирования для детей 8–10 лет

Форматы: групповые занятия.

Цена: от 1 650 рублей за урок.

Темы: написание кода, создание 3D-моделей, скриптинг различных модов и т. д.


Онлайн-занятия по кодингу в Майнкрафте для школьников 9–12 лет

Форматы: мини-группы.

Цена: базовая стоимость занятия составляет 1 200 рублей.

Темы: структура Minecraft-модов, пиксельная графика, типы данных, координаты, условия и т. д.


Online-курс по программированию в Майнкрафте для детей 7–12 лет

Форматы: индивидуальное и групповое онлайн-обучение.

Цена: от 1 125 рублей за урок.

Темы: основы кодинга в игровой вселенной, создание игровых объектов, командная разработка и т. д.


Уроки создания модификаций в Minecraft для школьников 10 лет и старше

Форматы: группы.

Цена: от 5 200 рублей за месяц.

Темы: разработка Minecraft-модификаций, проектирование внутриигровых объектов, 3Д-моделирование и т. д.


Трехмерное моделирование и кодинг в игровой вселенной для ребят 8–10 лет

Форматы: групповое дистанционное обучение.

Цена: от 3 000 рублей за онлайн-урок.

Темы: моды для Minecraft, их создание и программирование, трехмерное моделирование и т. д.


Уроки кодинга на языке программирования Python в Minecraft для ребят 9–14 лет

Форматы: индивидуальное обучение.

Цена: нет информации.

Темы: методы и атрибуты, работа с координатами, условные операторы, сравнение, синтаксис «Питона», его потенциал с точки зрения создания модов и т. д.


Дистанционный курс написания кода в Майнкрафте для ребят 9 лет и старше

Форматы: индивидуальный и индивидуально-групповой.

Цена: от 790 рублей / урок.

Темы: основы программирования, азы 3Д-моделирования, создание мини-игр в виде модификаций и т. д.


FAQ

Можно ли записаться на курсы языка программирования «Питон» для подростков без Майнкрафта?

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

Отличительная особенность – упор на использование языка для выполнения проектов, альтернативных модам для Minecraft. Вместе с тем не стоит полагать, что увлекательная практика исключается или опускается до минимума: проектная деятельность – основа множества современных детских курсов «Питона». Почти в любой вероятной ситуации ребятам предстоит осваивать теорию и закреплять получаемые представления посредством практики. Речь, скажем, о программировании чат-ботов, создании 2Д-игр на Python и не только.


Есть ли онлайн-занятия по языку «Питон» для 8-х классов?

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

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

Дополнительно советуем уточнить сведения о лицензировании организатора: наличие разрешительной документации будет плюсом. В других статьях в блоге отмечали, что это гарантия качества образовательных программ. Дополнительно лицензия открывает клиентам доступ к ряду условных бонусов вроде возможности оплаты занятий ребенка средствами маткапитала или оформления налогового вычета в размере 13 %.


Какой язык программирования используется в Minecraft для кодинга модов?

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

При этом важно учитывать, что в Code Builder необходимо использовать блоки с текстовыми командами, написанными на Python и JavaScript. То есть в случае с кодингом модов в неоднократно упомянутой игровой вселенной вероятны два варианта языков, а именно «Питон» и ДжаваСкрипт.


На каком языке программирования написан сам Майнкрафт?

Minecraft существует в двух основных версиях, которые написаны на разных языках программирования. Оригинальный вариант игры прописан посредством использования Java. Данная и стартовая версия создана Маркусом Перссоном.

Выбор представленного языка был обусловлен его кроссплатформенностью: игра может работать на различных операционных системах без необходимости переписывания кода. Кроме того, открытая архитектура как важное свойство Java позволила сформировать обширное сообщество моддеров. Речь о том, что пользователи получили возможность разрабатывать и устанавливать модификации, существенно расширяющие функционал игры.

Вторая версия под названием Minecraft: Bedrock Edition была переписана на языке C++. Здесь выбор, как кажется, связан с необходимостью обеспечить высокую производительность и эффективное управление ресурсами на разнообразных устройствах, включая консоли и мобильные телефоны. Потребность в этом стала вытекать из роста популярности Майнкрафта.

Благодаря C++ версия Bedrock способна похвастаться лучшей оптимизацией и стабильной работой даже на сравнительно слабых устройствах. Дополнительно вариант поддерживает кроссплатформенную игру, то есть пользователи могут играть вместе независимо от того, используют они ПК, консоль или смартфон.

Между версиями есть существенные различия. Java Edition доступна исключительно на ПК, предлагает широкие возможности для моддинга, но может характеризоваться проблемами производительности при установке большого количества модификаций.

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

Реклама ООО «ПИКСЕЛЬ.СТАДИ», ИНН: 5074078988

Показать полностью 11
Программирование IT Обучение Инженер Программа Python Тестирование Образование Linux Postgresql Microsoft Автоматизация Windows Openai Фриланс Информационная безопасность Стартап Программист Блоги компаний Длиннопост
it.forkids
it.forkids

Уроки Scratch на русском: ТОП-10 онлайн-курсов от школ программирования для детей⁠⁠

7 дней назад

Уроки программирования для детей онлайн на русском с использованием Скретча – визуально-блочной среды кодинга – часто рассматриваются как вводное направление. И это вполне справедливо: Scratch создан специально для дошкольников и младших школьников, он предназначен для погружения в основы. Так задумано разработчиком, а именно медиалабораторией Массачусетского технологичесокго института.

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

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

Содержание

  • Дистанционные уроки Scratch на русском от детских школ программирования

  • Траектория «Разработка игр» для детей от 9 до 11 лет от международной школы Pixel

  • Онлайн-уроки Скретча для детей 8–10 лет от Kodland

  • Онлайн-занятия по Scratch для детей 8–12 лет от FoxFord

  • Дистанционный курс блочного программирования в Scratch для школьников от 7 до 8 лет от OnlineSchool №1

  • Курс Scratch-кодинга для ребят от 7 до 12 лет от CyberUm

  • Курс программирования в Скретче для ребят 8–12 лет от Skillbox Kids

  • Создание игр в Скретче для детей от 6 до 12 лет в EasyPro Academy

  • Курс Скретча для детей 7 лет и старше от школы «Айтигенио»

  • Уроки блочного программирования для детей 7 лет и старше от ProgKids

  • Scratch-программирование для детей 7 лет и старше в Hello World School

  • FAQ

  • Скретч поможет подготовиться к обучению «Юнити» с нуля на русском?

  • Можно ли бесплатно скачать Скретч Джуниор на русском?

  • Где искать уроки Scratch 2.0 на русском?

  • Можно ли установить Скретч 3.0 на русском на персональный компьютер?

  • Скретч освоен, хотим попробовать Kodu. Где можно скачать Коди Гейм Лаб на русском бесплатно?


Дистанционные уроки Scratch на русском от детских школ программирования

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


Траектория «Разработка игр» для детей от 9 до 11 лет от международной школы Pixel

Узнать о комплексной траектории геймдева для младших школьников

Особенности: траектория с уроками Scratch на русском образована тремя самостоятельными курсами. Помимо освоения основ геймдева и блочного кодинга в Скретче, что стоит отметить, ребята смогут научиться разрабатывать игры посредством движков Godot и Roblox Studio.

Стоимость: цена одного часа занятий установлена на уровне 600 рублей минимум.

Выгоды: скидка 10 % для новых клиентов, оплата маткапиталом, оформление вычета в размере 13 %, рассрочка 50/50.

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

Содержательная сторона: отметили, что траектория комплексная. Она посвящена теории и практике использования следующих инструментов:

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

  • Godot. Годо – игровой движок, особенность которого сводится к возможности создания 2Д- и 3Д-игр. На занятиях ребята смогут узнать, помимо прочего, о программировании на языке GDScript. Дополнительно в тематические блоки теории и практики заложены сведения о переменных, функциях, классах и т. д.;

  • Roblox Studio. Роблокс Студио – еще один движок, изучение которого включено в образовательную программу траектории. Функционал данного инструмента впечатляет: благодаря его освоению участники траектории смогут разобраться в трехмерном моделировании, программировании на языке «Луа», а также в выполнении game-проектов и их публикации в Роблоксе, популярном среди детей и подростков.


Онлайн-уроки Скретча для детей 8–10 лет от Kodland

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

Форматы: нет сведений.

Темы, примеры: основы Скретч-программирования, гейм-дизайн, работа со спрайтами и графикой, создание 2Д-игр и т. д.


Онлайн-занятия по Scratch для детей 8–12 лет от FoxFord

Стоимость: от 900 рублей за онлайн-занятие.

Форматы: курс реализуется только в группах.

Темы, примеры: введение в визуальный кодинг, интерфейс Скретча, программирование спрайтов и т. д.


Дистанционный курс блочного программирования в Scratch для школьников от 7 до 8 лет от OnlineSchool №1

Стоимость: от 700 рублей за онлайн-урок.

Форматы: только группы, индивидуальные уроки не предусмотрены.

Темы, примеры: разработка мини-игр, применение логических операторов, циклов, переменных и условий, создание game-проектов в команде и т. д.


Курс Scratch-кодинга для ребят от 7 до 12 лет от CyberUm

Стоимость: нет информации.

Форматы: только индивидуальные уроки.

Темы, примеры: азы платформы, условные выражения и циклы, сенсоры, управление спрайтами и т. д.


Курс программирования в Скретче для ребят 8–12 лет от Skillbox Kids

Стоимость: от 1 650 рублей за урок.

Форматы: организатор набирает группы.

Темы, примеры: создание анимации и интерактивных историй, виды графики и графический редактор в Скретче, логика и различные механики в game-проектах, клонирование спрайтов и т. д.


Создание игр в Скретче для детей от 6 до 12 лет в EasyPro Academy

Стоимость: от 790 рублей за занятие.

Форматы: индивидуальные уроки.

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


Курс Скретча для детей 7 лет и старше от школы «Айтигенио»

Стоимость: от 790 рублей за занятие.

Форматы: индивидуальный и индивидуально-групповой.

Темы, примеры: базовые принципы кодинга, разработка интерактивных проектов, создание мультфильмов и т. д.


Уроки блочного программирования для детей 7 лет и старше от ProgKids

Стоимость: нет сведений.

Форматы: нет сведений.

Темы, примеры: азы кодинга, переменные и функции, циклы и условия, координаты и т. д.


Scratch-программирование для детей 7 лет и старше в Hello World School

Стоимость: нет информации.

Форматы: индивидуальные уроки.

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


FAQ

Скретч поможет подготовиться к обучению «Юнити» с нуля на русском?

Да, попробовать можно примерно к 10 годам, но предварительно стоит записаться на дополнительные занятия, скажем, посвященные «Питону» и проводимые на русском для детей. Шаг оправдан и даже целесообразен, ведь в случае с «Юнити» предстоит осваивать и программирование на Си Шарпе. Сразу после Скретча данный язык может показаться ребенку сложным.

Однако в случае, когда возрастные образовательные потребности и познавательные способности развиты достаточно, можно перейти к движку Unity и без промежуточных шагов. Мы считаем, что оптимальный возраст в данном контексте – 10–14 лет. Если же ребенку, скажем, 8–9, дополнительная подготовительная ступень станет желательной и даже необходимой.


Можно ли бесплатно скачать Скретч Джуниор на русском?

Да, но только на Android или iOS. Мы не рекомендуем пользоваться программным обеспечением Scratch Jr сторонних разработчиков, если оно предназначено для персональных компьютеров. Соответствующее решение может быть связано с рядом рисков и угроз, скажем, с заражением ПК вирусами.


Где искать уроки Scratch 2.0 на русском?

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

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

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


Можно ли установить Скретч 3.0 на русском на персональный компьютер?

Да, разработчиками предусмотрена возможность скачивания и установки третьей версии Scratch на компьютеры с Windows и macOS. Дополнительно реализован мобильный софт для устройств с операционной системой Android.


Скретч освоен, хотим попробовать Kodu. Где можно скачать Коди Гейм Лаб на русском бесплатно?

Полноценной и переведенной на русский язык версии Kodu Game Lab нет. Есть отдельные сборки, созданные независимыми разработчиками, но мы рекомендуем использовать только официальные версии софта. И хотя разобраться в них может быть сложно, на Rutube и других видеохостингах можно найти полноценные курсы в формате материалов в записи.

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

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

Реклама ООО «ПИКСЕЛЬ.СТАДИ», ИНН: 5074078988

Показать полностью 11
Программирование IT Обучение Linux Python Программа Тестирование Программист Windows Microsoft Postgresql Фриланс Автоматизация Openai Блоги компаний Длиннопост
9
DmitriitheFals
Лига Сисадминов
Серия Кудахтеры

Импортозамещение: Гитфлик (GitFlic)⁠⁠

16 дней назад

Для лиги лени: продукт есть, но есть куда расти. Некоторые вещи вызывают недоумение.
Медведь годный.

Годный медведь

Годный медведь

Учебник по интиму часть 1. Введение
Часть 2. Стоит только нам взять телескоп и посмотреть вооружённым глазом
Часть 3. Давайте пробовать поставить
Часть 4. Немного душноты
Часть 5. Gitflic api
Заключение

Учебник по интиму часть 1. Введение

Пришли ко мне в личку, в запрещенной в РФ сети, бывшие коллеги с вопросом, а знаю ли я, а могу ли я посмотреть, и им показать, что такое гитфлик (GitFlic). Я про такое первый раз слышу, потому что за импортозамещением в ИТ в РФ не слежу. Нет смысла следить за переименованиями, типа Debian 10-11-12 – Astra, Samba – ALD, Панголин – PostgreSQL, и так далее.

Тут вот, свой продукт.

Погуглил.
На сайте новостей Минцифры – две рекламные статьи, обе от 2021 года:
Первая - GitFlic. Российский GitHub и вторая, ответ на нее, «GitFlic: нас обвинили в «распиле». На этом все.
Остальное – 3 рекламные статьи, и два треда на лоре «как это работает вообще без техподдержки».
И, внезапно, статья от 1с – Инфостарт, Автоматизация процесса разработки с помощью сервиса GitFlic.
Пока дописывал статью, нашлась еще одна минцифровая статья «Cборка Java-проектов в GitFlic Kubernetes-агентом»

GitFlic не является форком какого-либо решения. Он написан с нуля и создан без иностранного участия, поэтому не зависит от внешних факторов и сторонних разработок.

В отличие от GitLab и GitHub, которые разработаны на Ruby и Ruby on Rails, GitFlic написан на Java. Это обеспечивает стабильность и производительность даже для крупных проектов.

Это Java то про производительность? Ну ладно

В 2023 году продукт был куплен Астрой

ГК «Астра» продолжает реализацию стартовавшей в 2020 году M&A-стратегии и объявляет о вхождении в контур группы ООО «РеСолют», разработчика GitFlic —сервиса для работы с исходным кодом и его хранения. Сделка проводится в два неразрывных этапа, по завершении которых в конце текущего года ГК «Астра» получит мажоритарную долю 51%. Оставшаяся часть акций будет по-прежнему принадлежать основателям компании: Алексею Синицину, Максиму Козлову, Тимуру Миронову, Денису Рамазанову и Константину Леоновичу. Стратегические договоренности компаний предполагают, что в дальнейшем ГК «Астра» сможет еще увеличить свою долю в разработчике.

Ну был и был, мало ли чего скупила Астра.

Часть 2. Стоит  только нам взять телескоп и посмотреть вооружённым глазом

Продукт позиционируется как комбайн с вертикальным взлетом – тут и хранение кода (вместо GitLab Self-Managed), и хранение итогов сборок вместо Maven (Реестр пакетов Maven), Nexus, и так далее. С релиза 3 объявили что «Релиз 3.0.0 отличается удобным интерфейсом, развитой функциональностью и способен стать полноценной заменой зарубежных продуктов GitHub, GitLab, Nexus, Artifactory, Jenkins и т.д.»

Пишут, что теперь работает и с OneScript (это для 1с).
Обещают замену не только хранению кода, но и CI\CD, почти как в GitLab Runner или в GitHub Actions.
В версии 4.6 пообещали что уже добавили:
Проксирование реестра пакетов Deb
Проксирование реестра пакетов Helm
Прочее - 4.6.0 Что нового
Обещают, что к проекту подключилось 100500000000 пользователей, но на этом все. Просто все.
Зато в 4.4 отобрали манифесты:

Из стандартных пакетов убраны манифесты для k8s. На смену им пришли Helm Charts

При этом примеров «как это работает» и рассказов, кроме «мы внедрили, интерфейс красивый» - нет. Реклама есть. Сообщества нет. Примеров нет. Чат в телеграмме есть.

У продукта два исполнения – облачное и self-hosted. Облачное ни коллегам, ни мне не интересно, а на self-hosted можно и посмотреть.

Дальше я буду попутно сравнивать с GitLab Community Edition. Не потому, что он какой-то супер, а потому что я его видел, и с ним время от времени сталкиваюсь. У GitFlic Self-Hosted возможностей вроде сильно побольше, но посмотрим.

Gitlab CE (Community Edition ). Ставится в одну команду по инструкции с официального сайта -
sudo EXTERNAL_URL="https://gitlab.example.com" apt install gitlab-ce

Все.
На самом деле нет, если посмотреть Gitlab CE Self-compiled installation, то там английским по белому написано:  In GitLab 18.0 and later, PostgreSQL 16 or later is required.

GitFlic Self-Hosted. Требует Redis и PostgreSQL.
Зачем им редис – не понимаю. Но, GitLab Community Edition включает NGINX, Postgres, Redis, так что, есть и есть, как и у GitLab CE

Сама web страница загрузки (их репо) малость странное. Сверху указывается «N дней назад», и только внизу указано 2025-11-06, причем зачем-то этот фрагмент как-бы-защищен (нет) от выделения и копирования.

В реестре контейнеров последний бесплатный дистрибутив -
gitflic-server-ce
Бесплатный дистрибутив GitFlic
Версия latest
Опубликован 26 марта 2025 г.

Скачан целых 5 (пять) раз.

Дистрибутивы: Gitlab CE в варианте gitlab-ce_18.3.6-ce.0_arm64.deb.
GitLab Community Edition (including NGINX, Postgres, Redis)
Package Size 1.31 GB
Installed Size 3.55 GB
MD5  7244b435f26e74991f02a6525c4d3d26
SHA1  11c154d0bb4df6e9be39af864185d0cdfac7ea9e
SHA256  6b3e1ae33d8dd89c7344338fc51f98e39d992b2c87e6b6e0167d91b496390868
SHA512  479be83c2f8eb0247637097e5b1863f2eafe1787ed9e9b843e470eed343e8328799187b5153d723b6c756405e64005fd9b4faa59da471ded412a259643e254cf

Все вместе с опубликованными MD5 лежит открыто.

Дистрибутивы:gitflic .. все сложно.
По ссылке – лежит описание по 4.6.0
По другой ссылке
Лежит короткий readme, ссылка на сам файл gitflic-server_onpremise_4.6.0.zip, и ничего кроме.
MD5 ? SHA? Не завезли.
Ссылку для wget ? Не завезли.

Прямая ссылка на сейчас -
https://gitflic.ru/project/gitflic/gitflic/release/7f32e898-...

Файл gitflic-server_onpremise_4.6.0.zip размером 780590717 байт.
MD5 25C91261305A3EDA778684363D1D9D4F
SHA256 67DE3A8EFAD516DB39196E9DA6726E4A5287D51F60950951C62106C22CC4301D

На момент начала написания статьи обновление вышло буквально вчера (статья писалась почти 2 недели, работы привалило, откуда не ждали). Буду смотреть сразу свежее.

Часть следующая, давайте пробовать офлайн

У дебиан опять поменялась страница загрузки, так что, например, отсюда
https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/
берем debian-13.2.0-amd64-DVD-1.iso
Тестовая VM, 2 vCPU, 4 Гб памяти, 45 Гб жесткий диск, Debian 13. Next-next-без графики-готово-забираем обновления – готово.
Правим /etc/network/interfaces и /etc/apt/sources.list
Заодно правим /etc/sysctl.conf от ipv6 и /etc/resolv.conf для DNS
Убеждаемся в  том, что по неведомым причинам /usr/sbin/ так и не прописан в путях по умолчанию, делаем ребут.
/usr/sbin/shutdown

Смотрим – получилось меньше 5 Гб всей виртуальной машины.
Заливаем туда gitflic-server_onpremise_4.6.0.zip, отключаем сеть на уровне гипервизора и идем читать инструкцию

В инструкции куча слов про создание папок и установку из zip, но ни слова про то, что jar файлы по умолчанию запускать нечем.
Между тем, ПО идет как jar -
gitflic.jar, размером 444275979,
MD5  7ADC17898B22007B71C8C3D305777B42
SHA256  19468BAE05E83ADB6F56792C7BB6C946CE40CFD2F35F47B72BF77CAF879DF7B4

Поэтому, кроме упомянутого в руководстве apt install unzip , нужно сделать и apt install default-jdk. Еще в инструкции по установке везде стоит sudo, его тоже нет в debian по умолчанию. Хотите – ставьте.
Дальше хотелось бы делать по инструкции, но так не выйдет.
Потому что инструкцию надо было читать с самого начала, раздела «Предварительные условия», а не как я, сразу перейдя к установке приложения.

В предварительных условиях указано:
OpenJDK 11
default-jdk на момент написания статьи - openjdk 21.0.9 2025-10-21, OpenJDK Runtime Environment (build 21.0.9+10-Debian-1deb13u1)

Затем, везде в инструкции стоит использование sudo. Его по умолчанию нет в Debian, поэтому
apt install sudo

В инструкции указан PostgreSQL 11. Последняя версия, 11.22, вышла два года назад, 2023-11-09.
Актуальная версия – 18.1, или хотя бы  17.7. А тут 11.

Попробую с 16, что еще делать.
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor –o /etc/apt/trusted.gpg.d/postgresql.gpg
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
apt install -y postgresql-16

и дальше пойдем по инструкции из раздела Астры для PostgreSQL 11.
Файла мандатного доступа etc/parsec/mswitch.conf у меня нет, и хорошо.  В инструкции в пути мелкая опечатка, и в части установки расширений забыли написать \q
дальше ставим Redis, ну или keyDB. Я поставил Redis - apt install redis, redis-cli ping отработал.

Остается сразу перевесить порт сервера с 22 на, скажем, 1122. Найду конфиг
find / -name "sshd_config" , и поправлю. Потом ребут, и

Перейду к самой установке по инструкции
mkdir /tmp/gitflic
unzip gitflic_*.zip -d /tmp/gitflic – эта команда не сработает с ошибкой
unzip:  cannot find or open gitflic_*.zip, gitflic_*.zip.zip or gitflic_*.zip.ZIP.

Будьте добры писать команду целиком,
unzip gitflic-server_onpremise_4.6.0.zip -d /tmp/gitflic
cd /tmp/gitflic

for d in cicd repo img releases registry; do sudo mkdir -p "/var/gitflic/$d"; done;
эта команда .. ну, я от рута делал, так что на sudo ругнется.
sudo mkdir -p /opt/gitflic/bin
sudo mkdir -p /etc/gitflic
sudo mkdir -p /var/log/gitflic
sudo cp gitflic.jar /opt/gitflic/bin
sudo cp application.properties /etc/gitflic/application.properties
sudo mkdir -p /opt/gitflic/cert
sudo ssh-keygen -t ed25519 -N "" -q -f /opt/gitflic/cert/key.pem

И так далее. Шаг 13, конечно, тоже не сработает – нужно не useradd, а
/usr/sbin/useradd --no-create-home --system --shell /sbin/nologin gitflic

Дальше в инструкции идет раздел «Конфигурация SSH порта». На .. то есть – зачем?
Раздел «Конфигурация SSH порта» ссылается на следующий раздел, «Конфигурация и запуск». Это многое объясняет.
Если же читать инструкцию с начала, а не с середины, то в разделе «Предварительные условия» написано – зачем:

Для того, чтобы было возможным использовать remote-url вида git@gitflic.ru:gitflic/gitflic.git, необходимо освободить стандартный 22 порт ssh сервера!

Раздел написан корректно, но можно чуть-чуть улучшить. Например, переписав весь список главы «установка под Астру» в раздел «просто установка». Но, можно и не переписывать, продукт куплен Астрой.

Все бы хорошо, но нельзя просто так и сделать только по инструкции. Не работает. Например, сделав
systemctl status gitflic-server.service
видно, что сервис есть, а веб консоли – нет.  Почему? Потому что надо смотреть инструкцию лучше, сервис по умолчанию стартует как [::ffff:127.0.0.1]:8080

В инструкции написано:

После запуска перейдите по адресу, указанному при конфигурировании и проверьте работоспособность сервиса

Но в инструкции нет пункта «адрес конфигурации».
Точнее, в самом начале инструкции указано:
Перед конфигурацией приложения, ознакомьтесь с назначением параметров на странице Конфигурация application.properties

По пункту 9 инструкции по установке понятно, что параметры лежат в
/etc/gitflic/application.properties, и внутри там написано
# Дефолтное значение адреса localhost
server.address=127.0.0.1
gitflic.base.url=http://localhost:8080 .
Заодно и логи указано где хранить, logging.file.name=/var/log/gitflic/server.log

Ну, окей, все понятно, слушаем на локалхосте. Ничего такого. Там же указано:
# При необходимости также можно указать порт, на котором будет запущен SSH сервер для работы
# SSH транспорта git. Дефолтное значение порта 22
ssh.server.port=2255

Ничего не понятно, но очень интересно.

Ну да ничего. Правим в конфиге IP и делаем systemctl restart  gitflic-server.service. Перезапускается пару минут (в ограниченной по ресурсам виртуалке), и появляется WEB консоль.
Медведь хороший, мне нравится! Настолько хороший, что я выкинул из черновика картинки Kadabrus.
Остается зайти:
Стандартный пользователь и пароль
Почта - adminuser@admin.local
Пароль - qwerty123

Зашло. Работает.
И даже работает после перезагрузки.

Итого по установке
Медведь выбран удачно.
Инструкция достаточна для установки. Есть мелкие недоделки, типа пропущенного в одном месте слеша, или \q для выхода из psql, но ничего критичного.
PostgreSQL 11 надо менять на 16, 17 или лучше сразу 18. 11 – устарел.
JDK тоже указан старый.
В инструкции по LDAP авторизации сделано что-то не очевидное, но сейчас с этим разбираться лень

Часть 4. Немного душноты

С чем у коллег проблемы? Проблемы с тем, что они не разработчики, и им Git не нужен. Зато нужно брать секреты из Vault, и забирать к себе готовые плейбуки, ямл, открытые ключи, скрипты и так далее. И, кстати, контейнеры.
Что умеет забирать файлы из онлайна?
Если говорить про Linux, то это curl, wget, docker - docker push, далее со всеми остановками вроде Automate Ansible With GitLab и Build enterprise-grade IaC pipelines with GitLab DevSecOps.
Если говорить про Windows, то есть Desired State Configuration, но иногда людям хочется интима и единообразия, так что мы получаем invoke-webrequest и Invoke-RestMethod. И то и другое относится к (кажется) System.Net.Sockets, но про это не будем.
В Windows есть и wget, но это оболочка для invoke-webrequest, и есть два curl:  один как командлет, и отдельный curl как честный curl.exe. Вот с этим всем и надо попробовать, как чего работает.

Часть 5. Gitflic api

Что есть в документации? Есть документация по  REST-API. И есть небольшая репа gitflic-api, которую надо читать.

Начало простое:
Отправка любого REST-API метода требует авторизации. Для этого необходимо создать токен доступа и указать его в заголовке запроса в следующей форме ..
Создам проект MyNewproject01, в нем ветку master, в нем файл myfile01 с содержанием content01.

Для создания токена доступа через интерфейс необходимо:
Перейти в профиль пользователя
Перейти в раздел API токены
Нажать кнопку Создать

Сказать что инструкция «не очевидная» - это ничего не сказать. Профиль пользователя виден и в левом меню, и в правом верхнем. И токены API генерируются в правом верхнем меню

Вот сюда не надо!

СЮДА НЕ НАДО

СЮДА НЕ НАДО

Надо вот сюда!

Надо вот сюда!

Надо вот сюда!

Токены то есть, но токена «чтобы только читал» там нет.
В Gitlab сделано понятно, надо дать
read_repository: Grants read-only access to repositories on private projects using Git-over-HTTP or the Repository Files API.
read_user (Grants read-only access to your profile through the /user API endpoint, which includes username, public email, and full name. Also grants access to read-only API endpoints under /users. )
read_api (Grants read access to the API, including all groups and projects, the container registry, and the package registry.)

а тут как?
Просмотр информации о пользователе – ну, допустим.
Просмотр информации о проектах пользователя – окей,
Просмотр информации о реестре пакетов
Создание пакетов реестра
Удаление пакетов реестра

Где простой read_repository_only ?
Дам все права сразу, потом разбираться буду.

Замечу, что кроме API токенов и транспортных токенов, в проекте есть еще какие-то токены развертывания, но перечня «есть три типа токенов» в руководстве нет. Или где-то дальше, как транспортные токены.

Впрочем, не важно.
сообщение про токен читаемое, в моем случае:

Скопируйте токен. Он показан один раз и при перезагрузке страницы его получить иными способами не получится: af71db42-9683-40b4-b615-d31c9e5f7a16

Что с ними делать?

Для того, чтобы создать REST-API запрос, необходимо обратиться на определенный адрес (endpoint), который должен иметь следующее начало:

api.gitflic.ru для работы с API на gitflic.ru
localhost:8080/rest-api для работы с API в self-hosted сборках

Домен и порт при работе с self-hosted решением могут отличаться.

Для взаимодействия с публичным API GitFlic необходимо указать полученный access token в заголовке запроса в следующей форме:
Authorization: token <accessToken>

Что мешало написать пример для curl или хоть чего-то?

Пример с настройкой header для любителей Windows:

$headers = @{
'Content-Type' = 'application/json'
'Authorization' = 'Bearer your_access_token'
'X-Custom-Header' = 'MyCustomValue'
}
Invoke-WebRequest -Uri 'https://api.example.com/data' -Method 'GET' -Headers $headers

Примеры для моего случая, правильные и неправильные

$headers01 = @{'Authorization: token' = 'af71db42-9683-40b4-b615-d31c9e5f7a16'}
$headers02 = @{'Authorization' = 'token af71db42-9683-40b4-b615-d31c9e5f7a1'} # однозначно ошибочный токен
$headers03 = @{'Authorization' = 'token af71db42-9683-40b4-b615-d31c9e5f7a16'}

Делаем пример 01:
Invoke-WebRequest -Uri 'http://192.168.21.61:8080/rest-api' -Method 'GET' -Headers $headers01 –Verbose
Получим ошибку:
Specified value has invalid HTTP Header characters.
Parameter name: name

Делаем пример 02:
Invoke-WebRequest -Uri 'http://192.168.21.61:8080/rest-api' -Method 'GET' -Headers $headers02 –Verbose
Очевидно, тут в токене сознательно сделана ошибка, и результат:
The remote server returned an error: (403) Forbidden.

Делаем пример 03
Invoke-WebRequest -Uri 'http://192.168.21.61:8080/rest-api' -Method 'GET' -Headers $headers03 –Verbose
Результат:
VERBOSE: GET with 0-byte payload
Invoke-WebRequest : The remote server returned an error: (404) Not Found.

Ну … ладно. Оно, допустим, работает, но можно же было бы и вернуть «токен ОК, а дальше не знаем». Но ответ (404) Not Found - пугает.

Можно же было сделать пример для запроса «токен ок, запросите чего-то еще». Валидации токена не хватает. Или я не искал и не нашел.  А он – есть.

Ты проверку токена видишь? И я не вижу

Ты проверку токена видишь? И я не вижу

Методы для работы с данными пользователей
Поиск пользователей
GET admin/user?email={email}&username={userAlias}

Сделаю чуть меньше букв

$h04 = @{'Authorization' = 'token af71db42-9683-40b4-b615-d31c9e5f7a16'}
$Ad02 = 'http://192.168.21.61:8080/rest-api/admin/user'
iwr -Uri $Ad02  -Method 'GET' -Headers $h04  -Verbose

Ответ:
VERBOSE: GET with 0-byte payload
VERBOSE: received -1-byte response of content type application/hal+json
StatusCode  : 200
StatusDescription :
Content  : {123, 34, 95, 101...}
RawContent  : HTTP/1.1 200

Если посмотреть чуть внимательнее, и сделать
$Ret01 = iwr -Uri $Ad02  -Method 'GET' -Headers $h04  -Verbose

И посмотреть $Ret01.RawContent, то мы увидим

{"_embedded":{"restUserAdminModelList":[{"id":"()","username":"adminuser","email":"adminuser@admin.local","name":"Admin user","surname": null,"fullName":"Admin user","avatar":"http://localhost:8080/static/image/avatar.jpg","cover":"http://localhost:8080/static/image/user-cover.png","confirmed":true}]},"page":{"size":10,"totalElements":1,"totalPages":1,"number":0}}

Стало быть, работает.

Получение настроек сервиса
GET /admin/settings
Запрос возвращает объект со всеми настройками сервиса.

Делаем:


$h04 = @{'Authorization' = 'token af71db42-9683-40b4-b615-d31c9e5f7a16'}
$Ad03 = 'http://192.168.21.61:8080/rest-api/admin/settings'
$Ret03 = iwr -Uri $Ad03  -Method 'GET' -Headers $h04  -Verbose
$Ret03.RawContent

Ответ содержит вполне понятный строчный объект, типа
{"disableLdapAuth":false,"disableSamlAuth":false,"disableOidcAuth":false, и так далее}

Уже неплохо. Наверное, его можно даже распарсить в какой-то объект, но это не является темой для статьи

Через curl тоже работает:
curl.exe --verbose --header "Authorization:token af71db42-9683-40b4-b615-d31c9e5f7a16" $Ad03
Ключ --verbose, конечно, мне был нужен только для отладки, и в таком виде только для читаемости
Так что в windows можно делать
$Ret032 = curl.exe --header "Authorization:token af71db42-9683-40b4-b615-d31c9e5f7a16" $Ad03


В Linux все как-то не так.

head1='Authorization:token af71db42-9683-40b4-b615-d31c9e5f7a16
ad03='http://192.168.21.61:8080/rest-api/admin/settings'
echo $head1
echo $ad03
curl --header $head1 $ad03


Вот так мы не работает, нам видите ли токен не нравится. "status":403 и до свиданья
Зато вот так

curl --header "Authorization:token af71db42-9683-40b4-b615-d31c9e5f7a16" $ad03


все работает. Причем кавычки я, конечно, проверил и одинарные и двойные, все равно что-то не идет токен через переменные.

Методы получения проектов
Получение списка публичных проектов
GET /project?q={title}

Делаем:

$Ad04 = 'http://192.168.21.61:8080/rest-api/project'
$Ret04 = iwr -Uri $Ad04 -Method 'GET' -Headers $h04 –Verbose
$Ret04.RawContent

Ответ несколько непредсказуем. Заголовок – есть, ответ StatusCode: 200 есть, а внутри – ничего нет. Ни массива, ничего. Потому что публичных проектов у меня нет. Хотя бы вернули 200, а не (404) Not Found.

Получение проекта по псевдониму
GET /project/{ownerAlias}/{projectAlias}
Запрос возвращает проект с указанным псевдонимом

Делаем:

$Ad05 = 'http://192.168.21.61:8080/rest-api/project/adminuser/mynewproject01/'
$Ret05 = iwr -Uri $Ad05 -Method 'GET' -Headers $h04 –Verbose
$Ret05.RawContent

Работает. Возвращает
{"id":"(какой-то)","title":"MyNewproject01","description":"","alias":"mynewproject01"," итд}

Метод для получения содержимого файла
GET /project/{ownerAlias}/{projectAlias}/blob?commitHash={commitHash}&file={fileName}
Запрос возвращает содержимое файла, который был изменен в указанном коммите, строкой. Если размер файла больше, чем 15МБ, или же он бинарный/картинка необходимо использовать следующий метод
commitHash. Обязательный параметр. Хэш коммита, который хранит необходимое состояние репозитория

И как это понимать? Какой еще хеш коммита? Зачем ?
Сравните для Gitlab  :

curl --header "PRIVATE-TOKEN: glpat-norDQhvwoTxyAtM9ANhV" http://192.168.1111.2222/api/v4/projects/2/repository/files/first.sh/raw?ref=main -o ot08.txt

И вот это. Какой еще коммит? Если мне надо не коммит, а всегда latest, то что?

Но, метод работает. Одна проблема, где взять хеш коммита. И вторая, как указать ветку, видимо по хешу. Очень странно.
С хешем просто. Его можно получить двумя способами.
Первый способ, простой. Нужно зайти в историю коммитов файла в GUI и справа будет 7 значный (почему 7 ?) номер коммита

Второй способ, чуть сложнее. Нужно ткнуть на RAW, откроется длинная ссылка вида
http://192.168.21.61:8080/project/adminuser/mynewproject01/blob/raw?file=myfile01&commit=9e12345(длинный хвост)
Первые 7 цифр в ID коммита – хеш. Остальное – даже не представляю, UUID какой-то.

Код

$Commi2 = '9e12345'
$Long4S08 = http://192.168.21.61:8080/rest-api/project/adminuser/mynewproject01/
$Ad08 = $Long4S08 + "blob?commitHash=" + $Commi2 + "&file=myfile01"
$Ret08 = iwr -Uri $Ad08 -Method 'GET' -Headers $h04 –Verbose
$Ret08.Content

И теперь то же самое для curl

curl.exe --verbose --header "Authorization:token af71db42-9683-40b4-b615-d31c9e5f7a16" $Ad08


--verbose, конечно, мне был нужен только для отладки, и в таком виде только для читаемости

Метод для получения списка файлов
GET /project/{ownerAlias}/{projectAlias}/blob/recursive?commitHash={commitHash}&directory={directory}&depth={depth}

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

Опять commitHash. Опять «Обязательный параметр. Хэш коммита, который хранит необходимое состояние репозитория».

Заключение

Приложение работает, API работает.
Документация вызывает ряд вопросов, но их уже без меня пусть бывшие коллеги решают.
Получение файла и чего угодно вообще через хеш коммита, а не последней (текущей) версии файла выглядит крайне странно. Как и часть инструкции, где этот хеш коммита упомянут, а где его брать – нет.
Не очевидно оформляется токен, где не совсем понятно, как сделать read_repository_only
Как это будет работать с докером, ансиблом, и так далее – не проверял, и не хочу. Наверное, как-то работает.

PS.
Пока писал статью: оказалось что дело было не в бобине, и коллеги и сами справились. Просто у них опять кое-кто накрутил с сертификатами, проверками, и прочей безопасностью, и не сознавался.
Пока писал статью: программа набрала 10000000 очков в рейтинге - GitFlic признана лидером среди российских DevOps-платформ по версии CNews.

Литература

Автоматизация процесса разработки с помощью сервиса GitFlic
GitLab Community Edition

Показать полностью 6
[моё] IT Опыт Импортозамещение Windows Git Microsoft Автоматизация Длиннопост
5
127
timru
timru
Лига Сисадминов

Microsoft прикрыла лазейку для бесплатной активации Windows посредством KMS38⁠⁠

19 дней назад

Поскольку поддержка Windows 10 завершилась, многие пользователи стали присматриваться к Windows 11. Однако для тех, кто планировал активировать операционную систему без лицензии, стало на один способ меньше. Дело в том, что разработчики убрали из ОС функцию GatherOSstate, которую использовал инструмент офлайн-активации KMS38 для обхода проверки лицензии, созданный хакерской группировки Massgrave.

«MAS» в Massgrave расшифровывается как Microsoft Activation Scripts, т.е. скрипты активации Microsoft. За время существования Massgrave опубликовала в интернете несколько инструментов, с помощью которых можно без лицензии активировать Windows и Office. Оригинальные PowerShell-скрипты доступны, например, на GitHub.

Блокировка стала результатом последовательных действий со стороны Microsoft. Еще в январе 2024 года компания начала удалять файл gatherosstate.exe из установочных образов, а в октябрьском необязательном обновлении KB5067036 его функциональность была окончательно отключена. Ноябрьские же патчи KB5068861 и KB5067112 сделали использование KMS38 полностью невозможным на обновленных системах.

Источник: https://3dnews.ru/1132416/microsoft-prikrila-lazeyku-dlya-be...

KMS38 has now been removed from the MAS script. Users are advised to use HWID or TSforge activation instead.

Показать полностью
Microsoft Windows Информационная безопасность Программа Текст IT
100
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии