Современная народная мудрость
Не так страшен вирус, как его майнер.
Не так страшен вирус, как его майнер.
Всем привет!
Доступ к ресурсу: https://learnika.ru/
Итак, я подобрался к jitsi вплотную. Установить это пол беды, хотя это даже не беда, что там не ждут меня. Что не сохранил с тобой себя.... три, четыре, закончили. Настроить JWT токены это тот еще геморрой.
В начале было слово, а какое не скажу. Потому что не знаю, это все равно что спросить "а кто изобрел колесо".
Естественно, после установки нужно добавить параметры что у нас не анонимные пользователи, а авторизованные. подключил в конфигах токены. И понеслась...
1 Битва. Prosody не видит токены. Видишь токены? и я не вижу, а он есть.
в логах пишет:
modulemanager: Unable to load module 'auth_token': /usr/lib/prosody/.../mod_auth_token.lua: No such file or directory modulemanager: Error initializing module 'auth_token': module 'inspect' not found:
Суть оказалась проста, Prosody искал плагины не там, где они были. так же ему не хватало библиотеки из Lua, которая нужна для работы в jwt. Собственно, через luarocks поставил inspect.
так же в конфигах нужно прописать путь к плагинам : plugin_paths = { "/usr/share/jitsi-meet/prosody-plugins/" }, кто поймет, тот поймет, а кто не поймет, тот не поймет. Да, я капитан очевидность. И..... Prosody таки увидел плагины и начал их грузить!
2 Битва. Пользователи таки стали проходить аутентификацию, но когда подключается второй клиент - давай до свидания, вылетают тут же оба. Client disconnected: connection closed. Сразу оба два.
В настройках : c2s_require_encryption = true а было false, не помогло, если что, это это настройка Prosody XMPP сервера, опять же, кто то понял, кто то нет. да и какая разница. А, ну да, эта настройка определяет обязательно ли шифрование или нет. Вскрытие показало что пациент умер от вскрытия. По любому этот параметр тоже влиял, но, как могла подумать моя многоуважаемая публика, а может и не влиял. Скорее всего да. Но, визуально ничего не поменялось, ошибки все те же самые.
Хм..... хмыкнул я, но и это не помогло. а вдруг права доступа к файлам не права доступа к файлам? а вдруг все под рутом? А у Prosody и пользователь prosody. Права установил, но и это не помогло! Хотя, вскрытие показало что все файлы были под правами рута. При этом Jicofo очень даже молодец, видит, принимает. Если что, он отвечает за управление, фокусировку, координацию участников.
Но вылеты при коннекте продолжаются.
3 Битва. Финал. Порты.
Ну по логике, когда подключение без токенов, оно работает, ну значит и машина не виновата же? А вот Фиг Вам, называется, привет, Шарик. Вскрытие в очередной раз показало что без токенов коннектится по порту 443/TCP, а с токенами используются чуть чуть другие порты, которые для медиа более эффективны: 10000/UDP и 4443/TCP.
Ну а поскольку я брал облачный vps в timeweb (ни в коем случае не реклама) то стало быть настройки где то там в панели. И, в кое то веки вскрытие показало что пациент ожил от вскрытия!!! Оно стало работать!
после выхода с конференции перекидывает на главную страницу
Да, у меня два монитора, очень удобно,
точки и запятые насыпал вот тут: .............,,,,,,,,,,,,,,,, кому важно могут брать оттуда и расставлять по своему усмотрению.
Как то так, всем спасибо за внимание!
ситуация такая, у друзей под Милитополем мини гостишка, стоят китайские замки и китайская же софтина управления Smart Hotel Lock Management System. Нужны карточки для гостей, пустые. но стандартные пустые карты Mifare система не воспринимает. Я на телефоне прочитал пустую карточку которая работает в системе и обнаружил там dead sector 12. я так понимаю, там и кроется секрет. Вопрос, как превратить стандартные карты в такие которые будет воспринимать система? вот скрин дампа.
з.с. раньше покупали карты у фирмы установщика замков, но фирма украинская и разумеется послала их нахер вместе с гарантией и всем остальным.
Думаю, каждый, кто активно пользуется Telegram, сталкивался с этим чувством: на экране всплывает уведомление, вы видите начало фразы, но стоит разблокировать телефон и открыть чат — а сообщения уже нет. Остается только гадать, что там было: опечатка или важная информация, которую от вас решили скрыть?
Меня как разработчика эта ситуация всегда цепляла. Это не просто мелкое неудобство, а сломанный пользовательский опыт: информация была доставлена, но тут же отобрана. Я решил, что с этим можно что-то сделать, и так появился мой пет-проект — бот, который возвращает пользователю контроль над его диалогами.
Идея была в том, чтобы создать инструмент, который фиксирует первоначальное состояние сообщений. Если собеседник решит что-то удалить или изменить, у вас останется оригинал.
Я сфокусировался на трех ключевых функциях:
• 📝 Перехват удаленных сообщений. Если собеседник отправил сообщение, а через секунду его удалил, бот успеет пересылать вам копию. Это работает со всеми типами контента: текст, голосовые, стикеры, файлы, геолокация и т.д.
• 🔄 История изменений. Когда кто-то редактирует свое сообщение, меняя его смысл, бот присылает наглядное уведомление в формате «Было» / «Стало».
• 📸 Сохранение исчезающих медиа. На мой взгляд, это самая сильная функция. Бот умеет перехватывать самоуничтожающиеся фото и видео. Вместо одноразового просмотра вы получаете полноценный медиафайл, который сохраняется в вашем чате с ботом.
За несколько месяцев тестирования накопилось примерно 21 тысяча событий (изменение/удаление/исчезающие медиа). И главное открытие: люди куда чаще отправляют исчезающие медиа, чем удаляют текст. Текст чаще просто исправляют. А вот фото — прячут намеренно.
P.S. (это анонимные логи операций, не содержащие содержание сообщений — только типы действий: удаление, редактирование, исчезающие медиа). Если что — бот не сидит с лупой над вашей перепиской. Максимум, что он “видит”, это то, что кто-то где-то что-то удалил. Представляете? У нас даже нет пункта «почитать драму», только «о, кто-то снова нажал удалить у всех». Так что бот остаётся цифровым Форрестом Гампом: он знает, что что-то произошло, но понятия не имеет, что именно. 😄
Бот работает исключительно через официальный Telegram Business API. Это не сторонний клиент и не "серая" схема.
Однако важно понимать и его ограничения, чтобы не было ложных ожиданий:
1. Бот не видит историю. Он начинает работать только с момента подключения и не имеет доступа к сообщениям, отправленным ранее.
2. Бот работает только в личных чатах. Технология Telegram Business API на данный момент не позволяет отслеживать события в групповых чатах.
Проект продолжает развиваться. Сейчас я собираю обратную связь, чтобы понять, какие еще функции могут быть полезны пользователям. Буду рад, если вы поделитесь в комментариях своими идеями или кейсами, где такой инструмент мог бы пригодиться.
Ссылка на бота: @dialog_guard_bot
Моя очередная версия торгового робота сливала депозит за депозитом. Я видел логику и выстраивал алгоритмы на основе скользящих средних, RSI, объёмов, но рынок жил своей жизнью. В отчаянии я снова стукнулся к Сойеру.
— Ты мыслишь как розничный трейдер, — сказал он как-то раз, когда я в очередной раз пожаловался на ложный пробой. — Ты смотришь на свечи, которые уже стали историей. Настоящая игра ведётся в стакане. Смотри.
Он прислал мне запись стакана заявок за один день и я увидел это. Там были настоящие танцы призраков.
— Видишь эти крупные заявки на покупку на уровне сто пятьдесят? — его голос в наушниках был спокоен. — Их нет. Это «стены» — фантомные ордера, которые выставляются, чтобы создать иллюзию поддержки. Крупный игрок хочет продать, поэтому он пугает мелких рыбок ложным сопротивлением, заставляя их выставлять свои ордера ниже, а потом сметает их одной продажей. Это спуфинг или игра в кошки-мышки с рыночной глубиной.
Мой мир только что перевернулся. Я понял, что всё, чем я занимался до этого, было детским лепетом. Вместо того чтобы предсказывать рынок, нужно было его создавать и дирижировать им. Я тут же переписал своего торгового робота с нуля. Теперь его главной задачей был не анализ истории, а чтение стакана в реальном времени и попытка предугадать намерения крупных игроков. Я научил его видеть эти «стены» и пытаться ставить свои ордера на долю секунды раньше, когда крупный игрок только начинал свою игру, но этого оказалось мало. Даже самый совершенный алгоритм был беспомощен, когда дело доходило до скорости.
— У тебя латентность как у спящего удава, — безжалостно констатировал Сойер, глядя на логи моих сделок. — Пока твой ордер ползёт до биржи через твоего розничного брокера, высокочастотные роботы успевают сделать десять тысяч операций. Ты всегда будешь в хвосте.
— Что делать? — в голосе моём слышалась уже не злость, а усталая покорности перед лицом очевидного.
— Нужен прямой низколатентный доступ к биржевым серверам. Надо разместить наш сервер в одном дата-центре с биржей и нужна координированная работа. Один робот — это одинокий солдат. Десять роботов, работающих синхронно по одному алгоритму — это уже армия, способная создавать микротренды и на них зарабатывать.
Мы оба замолчали, обдумывая масштаб работы. Нужен был не только совершенный код, но и настоящая инфраструктура. Война требовала не только талантливых командиров, но и первоклассного вооружения.
— У меня есть связи, — медленно произнёс Сойер. — Я могу решить вопрос с колированием в Чикаго для начала, через подставную фирму. И надо найти ещё несколько крупных игроков, которым мы сможем доверять.
Я посмотрел на своего торгового робота на экране и улыбнулся.
— Давай сделаем это!
В ту ночь я смотрел на мерцающие свечи на графике и видел уже не случайные колебания, а поле битвы. Нам предстояло хакнуть этот мир!
***
На следующий день я решил поговорить с Периметром, чтобы привлечь его в наш с Сойером проект.
— Привет, мы с Сойером разработали софт для высокочастотной торговли. Нам нужна поддержка и команда для серьёзных дел в крипте. Ты как?
— Ага, дикий запад, — ответил Периметр. — Идея огонь! Можно стать легендой, которую все боятся, но никто не видел.
— Именно, — радостно ответил я.
— Добро! — пришёл короткий ответ от Периметра.
— Пока у нас на примете две цели. Первая биткоин на BitMEX, а вторая эфир на Kraken. Мы хотим создать каскад заявок и не просто сдвинуть цену, а серьёзно её обвалить, чтобы хорошо на этом заработать.
— Очень амбициозно и красиво. — включился Периметр. — BitMEX со своим механизмом ликвидаций… это готовая пороховая бочка, а Kraken… их система иногда задумывается при экстремальной нагрузке. С огромным удовольствием помогу. Это даже не работа, а настоящее искусство!
— Нам нужен человек, который может создать для нас «ключ». Нужен алгоритм, который сможет координировать усилия и создать несколько сотен симулякров в виде ложных кошельков и торговых аккаунтов, чтобы рассеять след.
— Если надо, подключу ещё людей. — ответил Периметр. — Я создам для вас «Гидру». Одна голова атакует BitMEX, вторая Kraken, а третья… третья будет отвлекать, создавая информационный шум в крипто-чатах и социальных сетях. Слухи о взломе, о проблемах с сетью… Маленькие искры для большого пожара.
Мы арендовали сервера в нескольких разных юрисдикциях и запустили там свой софт.
— Гидра развёрнута. Все головы активны. Симулякры готовы. Жду команды, — отрапортовал Периметр.
— Начинаем, — скомандовал я.
Информационная волна пошла. В заранее созданных Телеграм каналах и анонимных аккаунтах в социальных сетях появились сообщения о «критической уязвимости» в сети Ethereum. Никаких доказательств не было. Только шёпот. В криптомире этого достаточно.
— Вижу первую реакцию. Мелкие рыбы начинают паниковать, — доложил Сойер.
— Запускаем первую голову Гидры на BitMEX.
Периметр создал не просто торгового робота, а настоящее произведение инженерного искусства. Алгоритм не только выставлял ордера, но и имитировал поведение тысяч паникующих розничных трейдеров. Шли небольшие каскадные продажи, учащающиеся с каждым моментом. Это создавало отличный фон для паники.
После этого мы запустили наш Молот. Так мы с Сойером назвали нашего усовершенствованного бота, который инициировал каскадный обвал. На BitMEX, где жадные трейдеры использовали огромные плечи, наш Молот сработал как атомная бомба. Он выставлял серию ордеров на продажу, которые на несколько секунд поглощали всю видимую ликвидность на пять процентов ниже текущей цены и… цена проваливалась. Срабатывали первые ликвидации длинных позиций, а их принудительная продажа толкала цену ещё ниже. Каскад заявок был запущен и график превратился в водопад. Это было великолепно!
— Переключаемся на Kraken, — скомандовал я.
Пока BitMEX очухивался от обвала, Гидра перенесла всю свою мощь на Kraken. Там была применена та же тактика, но более жёстко. Мы знали, что у Kraken есть одна маленькая уязвимость. При экстремальной нагрузке, их движок иногда на секунду зависал, не обновляя стакан. В момент пиковой нагрузки мы обрушили на стакан лавину ордеров на продажу. Тысячи симулякров, координируемых Периметром, запустили лавину. Система Kraken не выдержала и стакан замер на несколько секунд. Когда он обновился, то цена была уже на пятьдесят процентов ниже. Да, мы только что обвалили эфир на пятьдесят процентов. Мы сделали это!
— Мы сделали это, бро, — сообщил радостным голосом Сойер. — Завтра я тебе переведу твою долю. Я сейчас в баре, отмечаю! Уааааа!
— Я представил бар и толпу радостных людей, которых угощает выпивкой Сойер. Это была победа!
***
На следующий день я списался с Алисой Врей.
— Привет! Мы разработали по-настоящему уникальный софт и обвалили крипторынки. Если есть серьёзные проекты и нужна наша помощь, то мы готовы!
Алиса была, как всегда, предельно краткой.
— Можете продемонстрировать? Например, обвалить золото, нефть или акции какой-нибудь крупной компании?
— Да, конечно. Как только свяжусь с Сойером и Периметром, мы организуем для тебя показательный спектакль.
Периметр был на связи, а вот Сойера пришлось долго дозваниваться.
— Вчера отлично поработали, — написал я в общий чат. — Нам нужно поиграть мышцами и показать Алисе наши возможности. Можем мы обвалить золото, нефть или акции какой-то крупной компании с помощью нашей Гидры?
— Можем попробовать, — ответил Периметр.
— Теоретически да, — ответил Сойер.
— Ок. Начинаем. Разведка боем, — скомандовал я.
С золотом мы не могли действовать как с криптой. Здесь спамом фантомных ордеров ничего не добьёшься. Золото это миллиардный рынок, где балом правят банки. Наша трёхглавая Гидра, должна была их обмануть.
— Запускаю первую голову, — откликнулся Периметр. — Имитирую панические продажи среднего хедж-фонда. Точечно, в моменты низкой ликвидности.
На графике появилась первая серия мелких, но частых красных свечей. Рынок зевнул, почти не заметив. Это была не атака, а лишь небольшая проверка рефлексов.
— Вторая голова активна. Анализирую реакцию крупных игроков, — подключился Сойер. — Они… игнорируют. Нужно больше давления.
— Запускаю Молот на половину мощности.
Сойер выставил несколько крупных ордеров на продажу. Они были настоящими, «на всю котлету», как любят говорить трейдеры. Гидра постоянно их двигала, не давая им быть исполненными, одновременно создавая иллюзию постоянного присутствия крупного продавца. Это был спуфинг, но достаточно изящный.
Рынок золота впервые зашевелился как спящий дракон, почувствовавший укол булавки. Цена дрогнула, поползла вниз на пол процента, потом ещё на долю процента.
— Они видят нас, но не верят, — прошептал Сойер. — Их алгоритмы не могут классифицировать нашу активность. Она слишком… человекоподобна и в то же время неестественна.
— Усиливаю давление, — сказал Периметр. — Запускаю третью голову. Пошёл информационный фон.
В специализированных чатах для трейдеров металлов появились анонимные сообщения:
— Китай фиксирует прибыль, ФРС может ужесточить риторику.
Это была ложь, смешанная с полуправдой. Мы пошли на риск. Я запустил серию агрессивных рыночных ордеров на продажу небольшими лотами, но с частотой, недоступной человеку.
График золота немного накренился. Минус полтора процента, потом два. На экранах новостей замигали красные предупреждения. Мы почувствовали как рынок напрягся.
— Они начинают паниковать! Вижу ответные продажи! — голос Сойера дрогнул от возбуждения.
Мы ушли в цене на минус три процента. Это было всё, что мы смогли выжать. Рынок золота оказался невероятно упругим. Его глубина и ликвидность поглотили нашу атаку, не дав ей перерасти в катастрофу.
— Впечатляет! — написала в чат Алиса Врей. — Для золота это отличный результат! Как насчёт акций?
— Сойер, Периметр, вальнём Гвиттер?
— Давай попробуем! — ответил Периметр.
— Не, ну надо, так надо, — написал Сойер.
Здесь была иная задача. Цена Гвиттер определяется истерикой, надеждой и страхом. Нам нужно было не сломать стакан, а сломать повестку. Мы задействовали все наши ресурсы. Периметр запустил бота, который начал наводнять соцсети и финансовые форумы паническими сообщениями: «Обнаружена черная дыра в долгах Гвиттер!», «Ключевые рекламодатели уходят!»
Параллельно, на рынке, наш софт начал сложную игру. Мы выставляли крупные лимитные ордера на продажу, создавая видимость «стены продавцов». В тот же момент, наши алгоритмы агрессивно снимали ликвидность с бидов маленькими, но невероятно частыми сделками, буквально выдёргивая из-под рынка опору. Я координировал волны, следя, чтобы информационная и торговая атаки синхронизировались пиками.
Это был настоящий цифровой шторм. Акции начинали метаться как раненое животное. Мы воссоздали ту самую атмосферу безысходности и неопределённости, когда никто не понимал, что происходит и всё неслись в пропасть.
В какой-то момент я оторвался от экранов и посмотрел на реальный Гвиттер. Там был настоящий хаос. Наши фейковые заголовки подхватывали настоящие люди и начиналась настоящая паника. Мы не просто манипулировали ценой, но и реальностью, созданной этим активом. Когда мы закончили, в чате повисла тишина. Затем пришло сообщение от Алисы:
— Впечатляет! Готовимся к серьёзным делам! Предлагаю пощипать Ситигруп!
К штурму Ситигруп долго готовиться не пришлось. Наш софт и стратегия обвалов была уже отточена для многих активов, поэтому мы лишь немного адаптировали нашу стратегию работы. Сегодняшняя операция стала высшей математикой финансового террора.
Первая голова нашей Гидры быстро проанализировала настроения в новостных лентах и соцсетях, находя хрупкие точки. Вторая тут-же идентифицировала и имитировала торговые сигналы крупных игроков. Третья создавала в стакане не просто дисбаланс, а катастрофический вакуум ликвидности.
— Запускаю первую голову. — доложил Периметр. — Генерирую негативный информационный фон на основе ключевых слов: «рецессия», «дефолт», «пузырь». Распространяю через каналы ботов ретрансляторов.
Это была психологическая подготовка поля боя. Мы не ждали плохих новостей, а сами создавали их. Небольшая ложь, запущенная в нужный момент, становилась главным триггером паники.
— Вторая голова Гидры активна. Зафиксирован крупный ордер Ситигруп на продажу. Имитирую его сигнатуру. Усиливаю в несколько раз, — написал Сойер в чат.
Вот оно. Мы надели маску гиганта. Алгоритмы других банков, видя, что Сити начинает массированную продажу, решили, что тот знает что-то, чего не знают они сами. В результате, многие начали продавать следом, усиливая нашу иллюзию.
— Запускаем Молот на полную. — скомандовал я.
Целью его работы было не просто сбить цену, а ударить по стоп-ордерам. Стоп-лоссы — это автоматические ордера на продажу, которые активируются, когда цена падает до определенного уровня. Это настоящие мины на поле боя и мы знали, где они были заложены. Цена тут же провалилась на первый уровень стоп-ордеров и началась цепная реакция. Сработали первые стопы. Их продажа толкнула цену ещё ниже, к следующему уровню стоп-ордеров. Затем к следующему.
— Каскад начался, — констатировал Периметр и в его голосе слышалось что-то вроде холодного восхищения.
Мы больше не управляли процессом. Рынок пожирал сам себя. Алгоритмы, запрограммированные на минимизацию потерь, начинали лихорадочно продавать, усугубляя обвал. Вакуум. Вот что мы создали. На несколько долгих минут покупатели исчезли полностью. Цены на акции европейских гигантов упали сначала на восемь, потом десять, а потом и на пятнадцать процентов. Объёмы торгов зашкаливали.
— Биржа приостанавливает торги на пять минут, — написал Сойер.
Слишком поздно. Лавину было уже не остановить. Когда торги возобновятся, паника лишь усилится. «Что они знают? Почему остановили?» — именно на эту мысль мы и рассчитывали.
Через двадцать минут всё было кончено. Автоматические системы откупили падение, рынок отыграл половину потерь. На экранах новостей были заголовки о «техническом сбое» и «ошибочном алгоритме».
— Отличная работа, — написала Алиса Врей в наш общий чат.
Это была безусловная феноменальная победа! Мы стали настоящими архитекторами хаоса в финансах.
С довольной улыбкой на лице, я откинулся на спинку стула. Но что-то не давало мне почувствовать себя по настоящему счастливым человеком. Наверное, это моё унижение в полицейском участке Бомбея не давало мне покоя. Из-за этого я вынужден был уехать со своей родины и скитаться по миру. Позорище! Какая же это боль и унижение!
Рана, которая навсегда будет терзать мою душу! Лица полицейских, их высокомерные взгляды и слова до сих пор давили на меня и не давали почувствовать себя свободным человеком даже здесь, в тысячах километрах от них. Мне нужно было отомстить им и вернуть свою гордость. Без этого я не смогу снова быть по настоящему свободным и счастливым человеком.
После наших триумфов в финансах эта старая унизительная рана загорелась с новой силой. Я архитектор хаоса, а какой-то мелкий полицейский чиновник унизил меня и ему за это ничего не было. Сегодня я решил, что будет, и нашёл место его работы. Это был полицейский участок в одном из самых захудалых районов Бомбея. Я запустил сканеры, пытаясь найти их сетевую инфраструктуру, точки входа или базы данных и упёрся в стену. У них не было доступа в интернет.
Я не поверил своим глазам. Их единственной связью с внешним миром был обычный стационарный телефон.
— Вот динозавры, — выдохнул я, и горькая усмешка вырвалась у меня наружу.
Я могу обрушить мировые рынки, но не могу взломать картотеку в участке, который не подключён к сети. Моя сила, вся моя мощь, оказалась бесполезной против этого архаичного, аналогового мира. Это было возмутительно.
Ярость закипала во мне. Если нельзя отомстить этим тварям лично… Может, стоит сломать или шантажировать какой-нибудь другой полицейский участок в Бомбее? Неважно какой. Просто чтобы почувствовать, что я могу нанести удар по этой системе. По этим тупым, самодовольным лицам в униформе, которые думают, что они всем управляют, потому что у них есть дубинка и документ с печатью.
План начал формироваться в голове, холодный и жестокий. Если нельзя взломать их компьютеры, может, стоит найти их слабость в другом месте? Их финансы? Их семьи? Уверен, у кого-то из этих динозавров есть современные дети, которые сидят в соцсетях. Или счета в банках, которые уже оцифрованы. Я заставлю этих тварей дрожать. Они не узнают моего имени, но почувствуют как почва уходит из-под ног. Отомстить им даже не месть, а санитарная чистка мира от таких нелюдей.
Для того, чтобы получать и разбирать логи, и реагировать на результаты в логах, уже много лет существуют:
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.
ТГК: 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), которая вызывает программное прерывание. Это прерывание приостанавливает выполнение программы и передаёт управление ядру ОС.
Ядро проверяет запрос, выполняет необходимые действия (например, чтение файла или выделение памяти), а затем возвращает результат программе и снова передаёт ей управление. Если операция требует ожидания, например, данные ещё не загружены с диска, ядро может временно блокировать программу, чтобы не тратить ресурсы процессора на ожидание.
Во время работы программы её потребности в ресурсах могут меняться. ОС постоянно отслеживает это. Если программе требуется выделение или освобождение памяти на уровне ОС (например, при увеличении кучи или создании нового сегмента памяти), она делает системный вызов.
Менеджер памяти ОС зарезервирует виртуальное адресное пространство для процесса, а физическую память выделит по мере необходимости (например, при первом обращении к памяти). Если свободной физической памяти нет, ОС может использовать файл подкачки на диске. После выделения памяти ОС обновляет таблицы страниц процесса, чтобы он мог использовать новые блоки. Когда программа завершается, ОС освобождает память и другие ресурсы, возвращая их системе.
ОС ведёт учёт всех файлов, сетевых соединений, мьютексов, семафоров и других ресурсов, которые использует процесс. Это позволяет ей пытаться корректно закрыть все ресурсы, даже если процесс завершится аварийно, и минимизировать риск утечек или блокировок.
Исполнение это процесс, при котором процессор выполняет инструкции программы, преобразованные в машинный код.
Процессор имеет специальный регистр - счётчик команд (Program Counter, PC или Instruction Pointer, IP), в котором хранится адрес следующей инструкции, которую нужно выполнить. Этот адрес виртуальный, и он преобразуется в физический с помощью MMU (Memory Management Unit).
Процессор обращается по этому адресу к памяти (в сегмент кода, загруженный загрузчиком) и загружает инструкцию в кэш - сверхбыструю внутреннюю память. Если инструкции нет в кэше, процессор обращается к оперативной памяти. Современные процессоры используют конвейеризацию и предварительную выборку, чтобы заранее загружать инструкции и минимизировать простои.
Конвейеризация это технология, при которой процессор разбивает выполнение инструкций на эти этапы и выполняет их параллельно для разных инструкций.
Благодаря конвейеризации процессор может выполнять несколько инструкций одновременно, даже если у него только одно ядро. Это значительно ускоряет работу программы.
Предварительная выборка это механизм, при котором процессор заранее загружает инструкции и данные в кэш, ещё до того, как они понадобятся.
Предварительная выборка помогает уменьшить простои процессора, которые возникают из-за медленной работы оперативной памяти. Чем точнее процессор предсказывает, что понадобится дальше, тем быстрее выполняется программа.
Скопированная инструкция это просто числа. Процессор должен понять, что она означает. Каждая инструкция состоит из кода операции (opcode), который определяет действие, и операндов, указывающих, с какими данными работать.
Устройство управления анализирует opcode и генерирует сигналы для активации нужных компонентов процессора. Например, для инструкции сложения (ADD EAX, EBX) оно отправит сигнал в арифметико-логическое устройство (АЛУ), чтобы выполнить операцию, и в регистры, чтобы сохранить результат.
На этом этапе процессор также извлекает операнды из регистров или памяти. Например, если инструкция требует сложить два числа, процессор загрузит их из указанных регистров в АЛУ.
Пример: Рассмотрим инструкцию MOV EAX, [EBX] (переместить данные из ячейки памяти, адрес которой хранится в EBX, в регистр EAX). На этапе декодирования процессор:
Определяет, что это инструкция перемещения данных (MOV).
Извлекает адрес из регистра EBX.
Подготавливает АЛУ и регистры для передачи данных из памяти в EAX.
В современных процессорах декодирование может быть многоступенчатым и включать микропрограммы для сложных инструкций. Если процессор встречает недопустимую инструкцию, он генерирует исключение, и управление передаётся операционной системе.
Где процессор берет числа для операций и куда кладет результат? Для этого у него есть своя сверхбыстрая внутренняя память - регистры.
Давайте посмотрим на этот процесс на простом примере. Возьмем строчку кода: c = a + 5;
После того как процессор декодировал инструкцию, соответствующую этой строке, он переходит к выполнению. Процессор загружает значение переменной a из оперативной памяти в один из своих регистров. Затем он загружает константу 5 в другой регистр (например, в RBX).
Он отдает команду своему АЛУ, чтобы сложить то, что лежит в RAX, с тем, что лежит в RBX. АЛУ выполняет сложение, и результат (например, 23) помещается обратно в регистр RAX. Наконец, процессор сохраняет значение из регистра RAX обратно в оперативную память, по адресу, где находится переменная c.
После выполнения этой последовательности микро-операций процессор обновляет счетчик команд, чтобы он указывал на следующую инструкцию в вашей программе, и весь цикл "выборка-декодирование-выполнение" повторяется снова миллиарды раз в секунду.
Прерывание это сигнал от аппаратного устройства, который говорит процессору остановиться. Оно не связано с текущей выполняемой инструкцией и может произойти в любой момент.
Когда процессор получает прерывание, текущее состояние программы сохраняется в стек. Процессор передает управление специальной функции в ядре ОС - обработчику прерываний. Это заранее подготовленный код для конкретного устройства.
Обработчик прерываний читает данные с клавиатуры, обрабатывает сетевой пакет или, в случае таймера, вызывает планировщик для переключения на другой процесс.
Исключение это событие, сгенерированное самим процессором в ответ на ошибку или особую ситуацию во время выполнения инструкции. Это синхронное событие, напрямую связанное с выполняемой инструкцией.
Это может быть деление на ноль, обращение к неверной памяти или системный вызов. Для ошибки ОС обычно завершает виновный процесс. Она отправляет ему сигнал, который, если не обработан программой, приводит к ее закрытию. Это защитный механизм, чтобы сбойная программа не повлияла на всю систему.
Для системного вызова ОС выполняет запрошенную операцию и возвращает управление программе, как мы описывали ранее.
При нормальном завершении, программа успешно выполнила все свои задачи и добралась до конца, тогда она закрывается, вызвав специальную функцию, или просто завершает свою главную функцию. При аварийном завершении, процессор генерирует исключение, ОС его перехватывает и решает, что такой процесс жить не может.
Как бы программа не завершалась, во всех случаях ОС собирает мусор. У ОС есть таблица, где она отслеживает все файлы, которые открыл процесс. ОС проходит по этому списку и закрывает каждый файл. Это гарантирует, что все буферы на диске будут записаны, а сам файл станет доступен для других программ.
Если процесс устанавливал сетевые соединения, ОС корректно их разрывает, отправляя соответствующие пакеты удаленным хостам. Это освобождает сетевые порты. ОС также освобождает любые другие захваченные ресурсы.
Когда все ресурсы освобождены, ОС забирает обратно память. ОС полностью удаляет структуру, которая описывала виртуальное адресное пространство процесса. Таблицы страниц, которые связывали виртуальные адреса процесса с физической памятью, очищаются.
Вся физическая оперативная память (RAM) и место в файле подкачки, которые были заняты процессом, помечаются как свободные. Теперь они могут быть выделены другим процессам.
Его уникальный номер (PID) теперь свободен и может быть выдан новому процессу. Планировщик задач убирает этот процесс из своих очередей на выполнение.
Сборщик мусора (Garbage Collector, GC) это не механизм операционной системы, а компонент среды выполнения конкретного языка программирования. Если уборка, которую делает ОС, это снос целого процесса, то сборщик мусора это уборка внутри процесса, пока он живёт.
Если понравилась статья - рекомендую подписаться на телеграм‑канал NetIntel. Там вы сможете найти множество полезных материалов по IT и разработке!
Уроки обучения дизайну для детей могут строиться вокруг пары самостоятельных направлений. Это, скажем, web-дизайн, в рамках которого предполагается погружение в теорию и практику использования Figma и подобных сервисов для прототипирования и создания визуальных макетов страниц. Второе же направление в данном контексте – графический дизайн. Осваивать его ребята различных возрастов могут путем работы с рядом редакторов, например Photoshop и Illustrator.
Собрали несколько комплексных и обособленных онлайн-курсов и проанализировали их: если тема дополнительного обучения творческого ребенка актуальна, материал придется кстати.
Графический и веб-дизайн для детей: подборка онлайн-курсов для ребят младшего школьного и подросткового возраста
Уроки графического дизайна для школьников, обучающихся в 5–11-х классах
Занятия по графическому и веб-дизайну: обучение для школьников
Цифровой дизайн: уроки для ребят 7–16 лет
Курс «Digital-дизайнер» для детей от 10 до 15 лет
Уроки графического дизайна для детей: обучение онлайн школьников 10+ лет
Уроки обучения веб-дизайну для детей от 8 до 17 лет
FAQ
Чем полезны уроки обучения веб-дизайну для детей?
Как выбрать онлайн-курсы веб-дизайна для подростков?
В каком возрасте можно записаться на обучение веб-дизайну для школьников?
Онлайн-обучение дизайну для детей подойдет только творческим ребятам?
Сразу предлагаем перейти к сути: далее опубликовали ряд тематических курсов и аналитические сведения по каждому варианту.
Форматы: пройти уроки обучения графическому и веб-дизайну для детей можно в группе или один на один с опытным учителем.
Цена: от 600 рублей за час.
Скидка: 10 %. Получить выгоду удастся, если заплатить за 12 уроков минимум в день обращения.
Оплата маткапиталом: предусмотрена, дополнительно можно оформить вычет в размере 13 % и воспользоваться рассрочкой.
Содержание уроков: если коротко, то занятия по графическому и веб-дизайну для подростков помогут участникам траектории разобраться в создании сайтов, использовании Adobe Photoshop и Illustrator, а также собрать ряд проектов и добавить их в собственное портфолио.
Если более конкретно, то школьникам предстоит освоить:
Веб-дизайн на примере использования Figma. Это сервис, функционирующий онлайн и предназначенный специально для создания макетов и прототипов сайтов. Дополнительно в соответствующий перечень блоков теории и практики заложены темы, касающиеся создания веб-проектов посредством конструктора Tilda, не требующего навыков в написании кода;
Графический дизайн на примере использования Photoshop и Illustrator от Adobe. Если более конкретно, то участникам образовательной траектории предстоит поработать с цветом, формами, расположением визуальных элементов в проектах, а также вникнуть в векторную и растровую графику как обособленные сферы графического дизайна в целом.
Форматы: организатор набирает мини-группы, индивидуальные уроки не предусмотрены.
Цена: от 770 рублей за урок.
Темы: применение Figma, использование Photoshop, конструирование сайтов посредством Tilda и т. д.
Форматы: мини-группы.
Цена: весь курс стоит от 34 750 рублей.
Темы: дизайн лендингов, графические концепции, работа с визуалом, разработка афиш и баннеров, оформление плакатов и т. д.
Форматы: только индивидуальные удаленные уроки.
Цена: от 1 200 рублей за урок.
Темы: работа с инструментами различных графических редакторов, основы композиции и колористики, выполнение иллюстраций, создание макетов сайтов, фирменный стиль и т. д.
Форматы: набираются группы.
Цена: от 1 650 рублей за одно дистанционное занятие.
Темы: азы иллюстрации, создание композиции графического проекта, верстка, элементы фирменного стиля, основы так называемой упаковки бренда и т. д.
Форматы: проводятся индивидуальные и индивидуально-групповые уроки.
Цена: от 790 рублей за урок.
Темы: коллажи в Фотошопе, ретуширование фотографий, креатив и стилизация, создание стикеров из пикселей и т. д.
Форматы: только один на один с учителем.
Цена: базовая стоимость занятия составляет 1 500 рублей.
Темы: создание графических интерфейсов, работа с прототипами, использование сервиса Figma и т. д.
Уроки веб‑дизайна дают детям отличную возможность развить креативность и прокачать пространственное мышление. На курсах ребята учатся работать с цветами, формами и композицией, продумывать визуальную гармонию проектов и не только. В процессе создания макетов сайтов и интерфейсов школьники пробуют выражать свои идеи через дизайн-концепции, экспериментируют с разными стилями и находят собственный почерк. Это не просто рисование, каким оно предстает на бумаге. Это цифровое и часто вполне осмысленное творчество, где каждая деталь имеет значение и помогает ребенку выразить себя.
Кроме того, веб‑дизайн дает детям возможность прокачивать полезные жизненные навыки. Ребята учатся ставить задачи, искать нестандартные решения и доводить проекты до конца, видя реальный результат своих усилий.
Работа над дизайном требует внимания к деталям, умения структурировать информацию и учитывать потребности пользователя, скажем, в роли заказчика. На практике все это формирует системное мышление.
А еще тематические занятия повышают цифровую грамотность и дают представление о том, как устроены современные онлайн‑сервисы вроде Figma, что в будущем может стать хорошей основой для профессионального роста в IT.
При выборе онлайн‑курсов веб‑дизайна для подростка в первую очередь стоит обратить внимание на то, насколько программа соответствует его уровню и интересам. Важно, чтобы курс не перегружал сложными терминами с первых занятий, а постепенно вводил в тему: от базовых принципов композиции и цвета к работе с инструментами вроде Figma или Tilda.
Хорошо, если обучение построено на практике: выполнение даже мини‑проектов помогает увидеть результат своих усилий и поддерживает мотивацию. Также стоит оценить, насколько материал подается живо и понятно, ведь, скажем, скучная теория без примеров быстро утомляет, а вот разбор живых кейсов и возможность попробовать разные стили дизайна, наоборот, вовлекают в процесс.
Не менее значимы человеческий фактор и формат поддержки. Лучше выбирать курсы, где есть обратная связь от преподавателя: комментарии к работам, разборы ошибок и ответы на вопросы помогают подростку не застревать на трудностях и чувствовать, что его прогресс замечают.
Удобно, если занятия записаны и их можно пересмотреть в записи, а домашние задания не занимают слишком много времени: так легче совмещать обучение с школьной программой.
Учет этих и других факторов поможет сделать безошибочный выбор, который в дальнейшем даст устойчивый результат.
Запись на тематические курсы возможна даже в младшие школьные годы, но важно отталкиваться, помимо прочего, от возрастных познавательных способностей и образовательных потребностей ребенка. Дело в том, что в различных онлайн- и офлайн-школах предусмотрены курсы, ориентированные на обособленные категории учащихся, скажем, на младших школьников и на подростков. По понятным причинам уроки отличаются насыщенностью, темами, содержательностью, а иногда и продолжительностью.
Если с определением оптимального возрастного периода возникают затруднения, можно обратиться за консультацией к конкретному организатору или изучить сайт выбранной школы. Это поможет узнать о перечне образовательных программ и их ориентации на определенные категории учащихся по возрастам.
Нет, онлайн‑обучение дизайну подойдет не только творческим ребятам. Сегодня тематические образовательные программы для детей строятся так, чтобы вести конкретного ученика с самого начала, то есть от азов и до сложных тем. Все это реализуемо, даже если до этого учащийся никогда не рисовал и не интересовался графикой.
В обыкновенном случае все начинается с простых и понятных шагов: ребята разбираются, как выбрать тот или иной цвет, как расположить элементы на экране, как работать с базовыми инструментами используемого редактора и т. д. Задача курсов в данном контексте сводится к тому, чтобы не требовать наличия таланта, а постепенно развивать вкус, чувство композиции и уверенность в работе с цифровыми инструментами.
Важно помнить, что современный дизайн в виртуальном пространстве – это не только про то, чтобы рисовать и делать это красиво. Речь еще и про логику, структуру, понимание базовых графических концепций. Соответствующие задачи привлекают и тех детей, которые могут изначально отдавать предпочтение четким правилам, инструкциям, чем свободному творчеству.
При этом важно понимать, что на курсах дизайна ребята учатся не вдохновению из головы, а конкретным приемам и алгоритмам действий для творчества, и именно через это открывают в себе способность придумывать и воплощать собственные идеи. Так что отсутствие опыта или творческих наклонностей – не препятствие, если ребенок хочет попробовать себя в представленном направлении.
Реклама ООО «ПИКСЕЛЬ.СТАДИ», ИНН: 5074078988