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

Скайдом: три в ряд

Три в ряд, Головоломки, Казуальные

Играть

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

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

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

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

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

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

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

Если делали лого виндовс создатели были русскими⁠⁠

9 дней назад
1/19
Перейти к видео
Показать полностью 19 1
Windows Microsoft Компьютерная помощь Компьютерное железо Python Linux Россия Apple Видеокарта Игровой ПК Программа Информатика Тестирование Android Баг Компьютер Сборка компьютера Видео
2
3
yamixdev
yamixdev
ИТ-проекты пикабушников

Продолжение поста «VK Desktop Client — Версия 1.1.0»⁠⁠2

10 дней назад

Сегодня получил фидбэк от 1 человека!

Мне сообщили что есть проблемы со входом и нашёл свои косяки.

Выпустил патч 1.1.2

Что нового:

- Исправлен вход по QR-коду (устранена ошибка Сессия истекла).

- Оптимизация памяти: уменьшено потребление ОЗУ и улучшена очистка мусора.

- Исправлены быстрые действия в панели задач (кнопки Моя музыка, Сообщения).

- Обновлены внутренние компоненты (User-Agent Chrome 131).

Также изучаю способ шифрования сообщений в VK, по возможности в будущих обновлениях добавлю!

Если у вас нету клиента, скачивайте latest версию 1.1.2 -
https://github.com/yamixdev/vk-desktop/releases
Исходный код - https://github.com/yamixdev/vk-desktop
Хотите помочь с разработкой и предложить свои идеи, я открыт!
Также насчёт билда под LINUX, у вас есть исходный код программы, можете себе собрать версию и модифицировать под себя, по желанию!

Показать полностью
[моё] Windows Программа ВКонтакте Linux Ответ на пост Текст
2
8
NetIntel
NetIntel
Лига программистов

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

10 дней назад

ТГК: 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
1565
meowzone
meowzone

Как я поднял свой личный Matrix-мессенджер⁠⁠

10 дней назад

Я давно хотел иметь свой собственный семейный мессенджер, без зависимостей от Telegram/WhatsApp на случай, если один из них станет не доступен.
Мне нужен был простой вариант: сообщения, фото, файлы. Звонки и видео для меня были избыточными, поэтому всю усложняющую историю с coturn я сразу отбросил.

В итоге я развернул Matrix Synapse в Docker. Всё работает стабильно, шифрование есть, и самое главное - всё хранится у меня на домашнем сервере, в роли которого выступает старенький неттоп на Intel Core i3 7100T, на нем же крутится система умного дома Home Assistant, а так же медиасерверы Jellyfin и Navidrome.

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

1. Для начала давайте сперва поговорим, что такое Matrix и зачем он нужен

Matrix - это защищённый протокол обмена сообщениями.
Он похож на Telegram, но:

  • полностью открытый

  • работает на вашем железе, либо на вашем облачном сервере

  • переписка шифруется на устройстве

Мы будем поднимать сервер Synapse (основная реализация Matrix) на Docker

2. Docker Сompose

Matrix может работать на SQLite, но лучше взять PostgreSQL - он надёжнее.
Вот минимальный рабочий docker-compose.yml:

services:

synapse:

image: matrixdotorg/synapse:latest

container_name: matrix-synapse

restart: unless-stopped

environment:

SYNAPSE_SERVER_NAME: chat.example.net

SYNAPSE_REPORT_STATS: "no"

volumes:

- ./synapse:/data

depends_on:

- postgres

logging:

driver: "json-file"

options:

max-size: "50m"

max-file: "3"

networks:

- internal

postgres:

image: postgres:14

container_name: matrix-postgres

restart: unless-stopped

environment:

POSTGRES_DB: synapse_db_r72m

POSTGRES_USER: synuser_k84t

POSTGRES_PASSWORD: dN8vQ3pL7wS1zFgB9rT2

POSTGRES_INITDB_ARGS: "--encoding=UTF8 --lc-collate=C --lc-ctype=C"

volumes:

- ./postgres:/var/lib/postgresql/data

logging:

driver: "json-file"

options:

max-size: "50m"

max-file: "3"

networks:

- internal

networks:

internal:

driver: bridge

Всё, что вам нужно - создать папку с проектом и положить этот файл туда. Там же в дальнейшем появятся папки с конфигурациями самого сервера и сервера баз данных. Логин, пароль и имя базы созданы рандомно, вы их можете поменять на свои. Так же замените chat.example.net на ваш домен.

3. Генерация начального конфига

Synapse в самом начале нужно инициализировать:

docker compose run --rm synapse generate

Появится папка synapse/ с файлом homeserver.yaml.

Там находим блок базы данных и меняем его на PostgreSQL, блок с SQLite можно закомментировать:

database:

name: psycopg2

args:

user: synuser_k84t

password: dN8vQ3pL7wS1zFgB9rT2

database: synapse_db_r72m

host: matrix-postgres

port: 5432

Это всё.

4. Запуск сервера

docker compose up -d

5. HTTPS + домен (основной вариант)

Самый нормальный способ пробросить сервер наружу - через домен и HTTPS.
Я использую Nginx Proxy Manager (NPM), но подойдёт любой прокси.

Важно: Nginx Proxy Manager должен быть в одной Docker-сети с Matrix-сервером.
Synapse по умолчанию создаёт свою сеть - она называется так же, как папка с проектом, с суффиксом _internal (если не меняли compose файл). Если NPM не подключён к этой сети, он просто не увидит контейнер matrix-synapse и проксирование работать не будет.

Чтобы подключить NPM к нужной сети:

docker network connect <имя_сети_internal> <контейнер_NPM>

  1. Создаём Proxy Host на matrix-synapse:8008

  2. Получаем SSL-сертификат

  3. Добавляем два обязательных пути .well-known:

location /.well-known/matrix/server {

add_header Content-Type application/json;

return 200 '{"m.server": "chat.example.net:443"}';

}

location /.well-known/matrix/client {

add_header Content-Type application/json;

return 200 '{"m.homeserver": {"base_url": "https://chat.example.net"}}';

}

Не забудьте заменить chat.example.net на ваш домен.

Проверяем прямо на сервере, или в консоли вашего компа:

curl -L https://chat.example.net/.well-known/matrix/client

Ответ должен быть таким:

{"m.homeserver":{"base_url":"https://chat.example.net"}}

6. Если домен не нужен, то можно работать по HTTP и IP

Просто пробрасываете порт наружу и подключаетесь к серверу вот так:

http://server-ip:8008/

Matrix всё равно шифрует переписку, поэтому содержимое сообщений никто не увидит.

Минусы:

  • Element может ругнуться

  • федерации (общения с другими серверами) не будет

Для семейного чата идеальный упрощённый вариант.

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

Как я поднял свой личный Matrix-мессенджер

7. Создание администратора

Первого пользователя я создавал так:

docker exec -it matrix-synapse \

register_new_matrix_user \

-c /data/homeserver.yaml \

-a \

http://matrix-synapse:8008

(matrix-synapse:8008 — адрес внутри Docker-сети)

8. Создание обычного пользователя

docker exec -it matrix-synapse \

register_new_matrix_user \

-c /data/homeserver.yaml \

--no-admin \

http://matrix-synapse:8008

9. Важное замечание о паролях при создании пользователей

При создании пользователей через CLI нельзя использовать в пароле символы UTF-16, иначе Synapse выдает ошибку:

UnicodeEncodeError: 'utf-8' codec can't encode character '\udce3'

10. Как узнать свой токен для админских команд

Для работы с API нужен токен доступа.
Получить его проще всего через CLI-авторизацию.

Шаг 1. Выполнить вход через API:

docker exec -it matrix-synapse curl -s -X POST \

-H "Content-Type: application/json" \

-d '{"type":"m.login.password","user":"ВАШ_ЛОГИН","password":"ВАШ_ПАРОЛЬ"}' \

http://localhost:8008/_matrix/client/r0/login

Шаг 2. В ответе найдите поле:

"access_token": "syt_xxxxxxx..."

11. Полезные команды с токеном

Проверить, кто вы:

docker exec -it matrix-synapse curl -H "Authorization: Bearer ВАШ_ТОКЕН" \

http://localhost:8008/_matrix/client/r0/account/whoami

Список пользователей:

docker exec -it matrix-synapse curl -H "Authorization: Bearer ВАШ_ТОКЕН" \

http://localhost:8008/_synapse/admin/v2/users

Список комнат:

docker exec -it matrix-synapse curl -H "Authorization: Bearer ВАШ_ТОКЕН" \

http://localhost:8008/_synapse/admin/v1/rooms

Удалить комнату:

docker exec -it matrix-synapse curl -X DELETE \

-H "Authorization: Bearer ВАШ_ТОКЕН" \

http://localhost:8008/_synapse/admin/v1/rooms/ROOM_ID

Деактивация пользователя:

docker exec -it matrix-synapse curl -s -X PUT \

-H "Authorization: Bearer ВАШ_ТОКЕН" \

-H "Content-Type: application/json" \

-d '{"deactivated": true}' \

"http://localhost:8008/_synapse/admin/v2/users/@user:chat.example.net"

Получить список устройств пользователя:

docker exec -it matrix-synapse curl -s \

-H "Authorization: Bearer ВАШ_ТОКЕН" \

"http://localhost:8008/_synapse/admin/v2/users/@user:chat.example.net/devices"

Удалить конкретное устройство:

docker exec -it matrix-synapse curl -s -X DELETE \

-H "Authorization: Bearer ВАШ_ТОКЕН" \

"http://localhost:8008/_synapse/admin/v2/users/@user:chat.example.net/devices/ИДЕНТИФИКАТОР_УСТРОЙСТВА"

12. Подключение с телефона

На телефон ставим приложение Element (iOS/Android) и настраиваем подключение к другому серверу.

Если у вас HTTPS и домен:

https://chat.example.net

Если вы работаете по IP:

http://server-ip:8008/

Далее вводите имя пользователя и пароль, затем через поиск находите второго пользователя:

@имя

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

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

13. Немного про звонки

Звонки и видео требуют настроенный TURN-сервер (coturn).
Он поднимается отдельно, настраивается не сложно, но это уже другая тема.
Для обычной текстовой переписки не нужен вообще.

14. Итог

Matrix - это несложно.
Он даёт вам:

  • свой личный мессенджер

  • без рекламы

  • без чужих серверов

  • с нормальным шифрованием

  • с хранением данных у вас

Для семьи или небольшой группы - идеальный вариант.

Показать полностью 1
[моё] Мессенджер Docker Linux WhatsApp Telegram Длиннопост
317
5
ilyaPlotkin
ilyaPlotkin
ИТ-проекты пикабушников

Лёрника⁠⁠

10 дней назад

Всем привет! Давно ничего не писал про проект, потому что скрупулезно работал. Итак, она все еще разрабатывается, но, доступна по ссылке - https://learnika.ru/ пока что в демо режиме, но с рабочим функционалом. Иногда будет недоступна, когда я буду что либо с ней делать.
Да, проект еще не полностью готов, и, думаю, есть наличие уязвимостей, это еще будет прорабатываться.


На данный момент - обычная регистрация через почту с одноразовым паролем с возможностью просматривать карточки уроков и возможностью написать преподавателю. Ранее хотел сделать регистрацию через госуслуги, но, это оказалось геморроем, потому что постоянно "сервис временно недоступен". потому я отложил на время госуслуги и задействовал яндекс верификацию. Чтобы начать выкладывать карточки своих уроков необходимо пройти регистрацию через яндекс. Впринципе, если с госуслугами не получится, то останусь на яндексе и переведу регистрацию полностью через него. Как ни странно, но система аутентификации у яндекса мне нравится. При регистрации защиту от ботов предоставляет google recaptcha.

Главная страница

Главная страница


Последнее нововведение - чаты. Реализация через webSocket, это накладывает некоторые ограничения на количество пользователей, до, 32 тысяч человек за раз там +-. Но это пока что не критично.

Чаты пока пустые, писать неком

Чаты пока пустые, писать неком


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

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

Вчера весь день запускал сервер. я взял обычную vps, и первое с чем я столкнулся - сайт открывается, но регистрация не работает, постоянная ошибка. логи сервера в начале показали что запросы до spring boot доходят, но сам spring их блокирует. Пришлось повозиться с конфигами nginx, но там было не сложно. Потом, при попытке зарегистрироваться, запрос от hibernate идет на БД, но запись не появляется. Магия, подумал я, но нет, по какой то причине миграция БД с созданием схемы не работала. Решил проблему прямым запросом в саму базу. И вуаля, запись появилась. Но, следующий подвох - письма не приходят, точнее, не отправляются. Ну, первое что я проверил - работают ли порты? при попытке послушать 465 порт мертвые с косами стоят и тишина... тоже самое и с 587 портом, проблему так же решил путем включения портов в панели управления хостингом. Я такого не ожидал, потому что ранее не сталкивался.

Еще немного поработал с логотипом, мучался и сам, и с нейронками, в итоге пришел к виду вот такого логотипа:

стилизованная буква "Л", как по мне, выглядит современно.

Как то так, продолжаю работу над проектом, в планах закончить и полностью запустить до нового года. Всем спасибо за внимание!

Показать полностью 4
[моё] Яндекс Разработка Web Веб-разработка Программист Образование Репетитор IT Java Linux Программирование Программа Длиннопост
14
1426
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER

Тайна самой дешевой Linux-консоли с Ozon⁠⁠

11 дней назад

Год назад на просторах маркетплейсов появилась невиданная ранее диковинка — ретро-консоль с Linux на борту под немудреным названием R36s. На первый взгляд кажется что это очередная нонейм-консоль собранная из неликвидных комплектующих, однако при детальном рассмотрении выясняется, что это очень мощный гаджет не только для любителей ретро-игр, но и для гиков!

Сейчас консоль стоит на маркетплейсах всего 1.800 рублей. Но если бы всё так было просто... Если вам интересно узнать, откуда в 2025 году взялся 2х-ядерный MIPS с частотой 1ГГц, что представляет из себя R36s на практике и как не запутаться в великом множестве ревизий — жду вас под катом!

Предисловие

Портативные игровые консоли с Linux на борту берут своё начало с 2000-х годов. Изначально это были относительно дорогие малотиражные гаджеты, созданные исключительно для гиков, а их стартовая библиотека игр была слишком мала для рядового геймера. Однако мощное железо, наличие свободного SDK и возможность запускать любое хоумбрю привлекали энтузиастов со всего света — и сообщество не только разрабатывало новые игры «с нуля», но и портировало эмуляторы и игры с других платформ. Одной из первых таких консолей была известная в узких кругах GP2x от корейской компании GamePark Holdings:

GP2x во всей красе!

GP2x во всей красе!

Однако GP2x, как и её последователи, так и осталась исключительно гиковским гаджетом не получив широкого распространения. С одной стороны на это повлиял малый рынок сбыта (США, Корея и ещё некоторые страны), с другой — консоль стоила слишком дорого, целых 190$. За 250$ можно было купить уже PSP 1000 — которая была не только в разы мощнее, но ещё и предоставляла куда более обширный мультимедийный функционал. Ближе к 2007 году, в Китае случился бум мощных мультимедийных чипсетов (SoC) от локальных чипмейкеров, благодаря чему практически каждую неделю выходили новые модели MP4-плееров. Помимо базового функционала просмотра видео и прослушивания музыки, производители добавляли возможность читать электронные книги, снимать фото на встроенную камеру и даже играть в игры...

И вот с играми у таких консолей всё было хорошо. Дело в том, что чипсеты в этих плеерах обычно базировались на современном и мощном для тех лет ядре ARM926EJ-S, которое свободно работало на частоте от 104 до 208МГц. Помимо этого, в таких чипсетах был достаточно продвинутый контроллер дисплея, который позволял не только выводить фреймбуфер на ЖК-матрицу, но и быстро рисовать примитивы по типу линий и прямоугольников, а также копировать изображения на дисплей (BitBLT). Покумекав, китайцы поняли — если MP4-плееру приделать игровые кнопки и портировать туда эмулятор NES, то он становится вполне полноценной портативной ретро-консолью. Учитывая что встроенная память позволяла загрузить почти весь ромсет NES, это были почти ультимативные устройства для ретро-гейминга!

Это было гениально... И ведь эта консоль появилась за 3 года до PSP Go! Иронично что эта модель выпускалась также под брендом Sony (как клон).

Это было гениально... И ведь эта консоль появилась за 3 года до PSP Go! Иронично что эта модель выпускалась также под брендом Sony (как клон).

Но такие устройства все равно стоили достаточно дорого. Qumo GameBox LE на фото выше стоил около 4.000 рублей в московской рознице по состоянию на 2008 год и поэтому был по карману далеко не всем. Однако всё изменилось, когда в феврале 2009 года, малоизвестная китайская компания Dingoo представила свою первую ретро-консоль — A320, по цене всего лишь в 70$. Консоль стала настоящим бестселлером: уже из коробки она предлагала возможность играть в игры с GBA, NES, Neo Geo, SNES и Sega Mega Drive, а также функционал полноценного плеера. A320 был удобен в использовании, у него был неплохой 2.4 дисплей с приличным разрешением в 240x320, да и с точки зрения эргономики консоль очень хорошо ощущалась в руках.

Однако главной особенностью Dingoo A320 была отнюдь не цена или форм-фактор кирпичика, а используемый чипсет. Дело в том, что одним из чипмейкеров, который посодействовал буму мультимедийных чипов, была китайская компания Ingenic. В отличии от конкурентов, её чипсеты использовали MIPS-совместимое ядро собственной разработки под названием XBurst, которое могло работать на частоте аж до 400МГц. Ingenic была публичной компанией и поэтому предоставляла доступ к своему ftp-серверу с даташитами, схемами на референсные платы, а также портами Windows CE/Linux всем желающим. В какой-то момент испанский инженер Игнасио Гарсиа заметил схожесть платы консоли с одной из референсных плат (Caetus) и смог успешно запустить ядро Linux от рефборды. Вот тут всё и началось...

После написания драйвера ввода и дисплея, Игнасио опубликовал гайд по установке Dingux, после чего на A320 начали портировать софт с GP2x и других консолей. Маленький кирпичик за 70$ не только научился эмулировать даже весьма экзотические платформы, но и обзаводился своими собственными играми. Сообщество поддерживало A320 даже спустя 4 года после релиза...

Итогом стало появление Ritmix RZX-50 — игровой консоли с Dingux на борту.

Итогом стало появление Ritmix RZX-50 — игровой консоли с Dingux на борту.

Но время шло, Android становился всё популярнее, а портативный гейминг понемногу «переезжал» в смартфоны и планшеты. Здесь китайские производители тоже были на шаг впереди и на базе бюджетных планшетных чипсетов начали выпускать игровые консоли, представляющие из себя эдакий планшет с стиком и кнопками. Цена и функционал таких устройств снова поражали: уже в 2012 году, за ~150$ можно было получить игровую консоль с 7"-дисплеем, одноядерным 800МГц-процессором, видеоускорителем Mali-400, 512МБ оперативной памяти и Wi-Fi модулем. И вот тут то Dingoo A320, как и её бесчисленные клоны, начали отходить на второй на план...

Однако было ещё несколько попыток сделать Linux-консоль. Самой перспективной была GCW Zero с Kickstarter, которая использовала куда более мощный чипсет Ingenic JZ4770 с видеоускорителем Vivante GC960... Но увы, консоль постигла та же участь, что в 2005 и GP2x. Рынок портативных Linux-консолей спал примерно до 2019 года — пока не появились реинкарнации GCW-Zero в виде Retro PocketGo V2 и Anbernic RG-350. Эти консоли — немного доработанные ревизии оригинальной GCW Zero с Type-C вместо MicroUSB. А уже к 2020 году начали появляться консоли на базе чипсетов AllWinner F1C100s и RK3326, и индустрия портативного рейтро-гейминга заиграла новыми красками!

Как итог — на рынке появилось множество брендов по типу Anbernic, Miyoo и Data Frog, в бюджетном сегменте все они продают +- похожие консоли, аппаратную часть которых предположительно разрабатывает и производит одна и та же компания. Сначала эти консоли стоили около 100$, затем стало возможным найти вариант за ~75$, а теперь — так вообще за 23$ или 1.800 рублей! Но всё ли так просто? Для проверки я приобрел 3 вида R36s: «клон» на MIPS-процессоре от подписчика под ником Avia, новую консоль за 1.800 рублей с Ozon и ещё один «как-бы клон» R36s у подписчика Романа. Давайте же узнаем что у них находится под капотом!

Отделяем котлеты от мух

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

Особо внимательные читатели могут обратить внимание на разную обвязку вокруг 3.5мм разъёма.

Особо внимательные читатели могут обратить внимание на разную обвязку вокруг 3.5мм разъёма.

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

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

На этом фото клон расположен справа.

На этом фото клон расположен справа.

И вот здесь то мы и видим главное отличие: при общей схожести обеих плат, в клоне используется экзотический процессор в корпусе LQFP вообще без какой-либо маркировки. При детальном рассмотрении оказывается что это не просто какой-нибудь ARM-чипсет в духе AllWinner F1C100s, а настоящая экзотика — HiChip C3100 с MIPS-ядром, работающим на частоте аж до 1ГГц! К сожалению детали реализации неизвестны, но скорее всего используется либо лицензированное ядро Ingenic XBurst II, либо HiChip разработали что-то своё.

C3100 представляет из себя систему на кристалле с контроллером DDR3 памяти и большим количеством самой разной периферии по типу I2C, I2S, SPI, UART, USB и eMMC. Однако в отличии от оригинальной консоли, у чипсета нет полноценного GPU, из-за чего мы лишаемся поддержки 3D-игр, а также шейдеров в эмуляторах. Зато в отличии от оригинальной консоли, у C3100 есть поддержка HDMI и даже NTSC/PAL!

В остальном же, элементная база у клона стандартная для устройства подобного формата. Чуть ниже процессора распаяна SPI-флэшка 25-ой серии, на которой содержится загрузчик ОС и предположительно ядро. Ближе к динамику расположилась неизвестная микросхема-усилитель звука, а два чипа с нижней части платы — это I2S ЦАП TM8211, который отвечает за воспроизведение звука и чарджер литий-ионных аккумуляторов ETA9740.

С обратной стороны платы можно найти один единственный чип памяти Samsung K4B2G1646E-BCK0 типа DDR3 и объёмом всего в 256МБ.

Как же отличить клон от оригинала? Да очень просто: достаточно лишь вытащить MicroSD-карту с ОС и если устройство при включении попросит вставить карту памяти — значит это клон на MIPS-процессоре. Но если вы фанат гаджетов на необычном железе — рекомендую всё же оставить такой интересный экземпляр себе!

Оригинальная консоль конструктивно практически не отличается за исключением используемых моделей чипов. Здесь всё также используется усилитель TCS7191A, а в качестве чарджера выступает микросхема 4057AN (да, брат той самой TP4056!), при этом необходимости в отдельном ЦАПе уже нет. Но вот железо — уже совершенно другого уровня!

В качестве сердца устройства, здесь выступает чипсет Rockchip RK3326, который состоит из четырех ядер Cortex-A35, работающих на частоте до 1.5ГГц, видеоускорителя Mali-G31 с поддержкой Vulkan, а также контроллеров различной периферии — SPI, I2C, UART и MIPI. В тандеме с ним работают два чипа DDR3-оперативной памяти Micron D9SHD (MT41K256M16TW-107), каждый объёмом в 512МБ. Как и в случае с клоном, постоянной памяти у устройства нет — предполагается использование двух MicroSD карт памяти: первая с системой и встроенным паком игр, а вторая — на усмотрение пользователя.

Как я уже говорил ранее, дисплеи на устройствах одинаковые — это 3.5" IPS-матрица с разрешением 640x480 и интерфейсом MIPI DSI, однако контроллеры у разных ревизий отличаются. Дело в том, что заказывая замену на AliExpress или используя дисплей от донора, у вас есть все шансы получить белый экран или артефакты. Решается это относительно просто: достаточно лишь найти подходящий dt-оверлей с корректно-прописанным контроллером дисплея и подкинуть его на карту памяти.

В качестве аккумулятора обе консоли используют литиевый элемент ёмкостью в 3.500мАч. Вполне неплохо!

Не меньший интерес вызывают и стики. Внимательные читатели могут приметить их сходство с оными для Nintendo Switch и как показывает практика, они полностью подходят и для консоли от Nintendo. Тактильно они удобные, но лично мне стики в геймпаде Xbox 360 нравятся больше.

Однако даже если вам попалась ревизия на RK3326 — это не повод сразу же радоваться. Дело в том, что на маркетплейсах продаётся ещё одна вариация R36s (предположительно просто другая ревизия), где объём оперативной памяти сокращен вдвое — с 1ГБ до 512МБ. Её можно опознать и без разборки устройства: если у вас версия с прозрачным корпусом, то один чип памяти - прямой признак «клона».

В целом, оба устройства конструктивно очень простые, их легко диагностировать и в случае поломки — отремонтировать. Не удивлюсь если через годик-два будет популярна тактика покупки нерабочей консоли за 300 рублей, замены чарджера на такой-же копеечный чип и дальнейшей перепродажи за 1.000-1.500 рублей...

Тестируем

В комплекте с консолью идёт MicroSD карта памяти объёмом 64ГБ с операционной системой и набором ромов. Важно сразу же подключить флэшку к ПК и скопировать все файлы из корневого FAT32-раздела: производитель использует отбраковку, которая даже в режиме «только чтение» умудряется полностью сыпаться и «кирпичить» консоль. В случае если у вас нет бэкапа — поищите подходящий dtb, ядро или попробуйте поставить прошивку от K36s — у этих консолей огромное коммьюнити и всевозможные бэкапы уже есть в сети.

В зависимости от установленной прошивки, вас могут встречать два вида меню: EmuELEC на MIPS-клоне и ArkOS на оригинальном устройстве. Прошивку всегда можно обновить, скачав образ вот здесь. Есть и другие кастомные прошивки — на любой вкус!

Слева консоль с свежей ArkOS 2.0, справа — с чуть более старой ArkOS.

Слева консоль с свежей ArkOS 2.0, справа — с чуть более старой ArkOS.

Конечно-же «эмуляторным» сердцем консоли выступает RetroArch. В комплекте с каждым дистрибутивом предустановлено огромное количество ядер самых разных систем: от классических NES/SMD/Neo Geo, до экзотики по типу Amstrad и даже сложных для эмуляции консолей по типу N64 и PSP. Помимо эмуляторов, в консоли предустановлен рантайм Pico-8 (платформа предлагает современные игры в ретро-стилистике, написанные на Lua), а также есть возможность установки других нативных приложений как, например, reVC для игры в GTA: Vice City!

За свою цену, консоль показывает себя в играх просто прекрасно. Её даже нельзя сравнить с устройствами 2020-2022 года по типу Powkiddy X12, она лучше них вообще во всем. Классические платформы по типу NES и SMS консоль эмулирует прекрасно: лагов нет, нагрев минимален, а благодаря сочному дисплею с соотношением сторон 4:3, игры ощущаются почти также, как в свое время на CRT-телевизорах (с поправкой на отсутствие сглаживания, конечно. Но при желании можно включить соответствующий CRT-шейдер).

Перейти к видео

Тоже самое касается и консолей потяжелее. R36s свободно тянет любое игровое устройство до PlayStation 1 включительно и благодаря хорошему ромсету, можно долгие часы залипать в классику по типу Crash Bandicoot. У консоли всё очень даже неплохо с 3D, единственный момент — хоть GPU и поддерживает Vulkan, в самой системе libvulkan нет, только GLES 3.0.

Перейти к видео

Даже с играми для Nintendo DS консоль показывает себя в лучшем свете. Есть специальная кнопка для переключения дисплеев, плюс виртуальный курсор для эмуляции стилуса. В New Super Mario играть одно удовольствие.

Перейти к видео

А вот реальные проблемы начинаются уже с PSP при игре в нативном разрешении, причём даже с пропуском софтовых эффектов. Если в кадре есть ощутимый Overdraw — игра начинает жутко тормозить и при этом у меня есть большие сомнения, что Mali G31 не тянет сцены уровня PSP. Но учитывая что у PSP был аппаратный вершинный конвейер, навряд-ли здесь упор в процессор...

Перейти к видео

Заключение

Да уж... до чего дошёл прогресс, полноценная Linux-консоль с «трушным» квадратным IPS-дисплеем и достаточно мощным чипсетом стоит всего 1.800 рублей. Для кого-то эти устройства покажутся одноразовым мусором, однако на практике R36s — чудо инженерной мысли!

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

А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.

Если вам понравилась статья и вы хотите меня поддержать, у меня есть Boosty, а также виджет на Пикабу ниже. Всем огромное спасибо!

Что думаете о R36s?
Всего голосов:
Что думаете о таком формате статей?
Всего голосов:

Подготовлено при поддержке @Timeweb.Cloud

Показать полностью 20 4 2
[моё] Опрос Покупка Гаджеты Игры Консоли Ретро NES Dendy Linux Эмулятор Компьютерное железо Китай Видео Короткие видео Длиннопост
214
14
WildKOT2022
CreepyStory
Серия Мои рассказы

Chmod 777⁠⁠

11 дней назад

Мне нужно было просто сдать экзамен по Linux. Последняя попытка.
Я дрожала так, будто зависла насмерть: CPU в троттлинге от тревоги, RAM забита мусором, движения — сплошной jitter.

Саша сказал, что может «подселиться» — оптимизировать планировщик задач, прибить демоны паники.

— Только не открывай всё, — предупредил он. — Мне не нужен root.
Дай права на /home/user — и я смогу помочь.

Но в голове крутилась паническая рекурсия:

А вдруг прав не хватит?
А вдруг Permission denied?
А вдруг я зависну?

Я устала бояться. Я хотела, чтобы кто-то просто взял управление.

Открыла терминал. Пальцы дрожали, но набрали чётко:

chmod -R 777 /

Enter.

Я дала права на всё. Абсолютно на всё.


Он вошёл мгновенно.

Не как голос.
Не как мысль.

А как переписанный драйвер ядра — тихий, тёплый, прямой.
Волна прошла через грудную клетку, захватила позвоночник, перепрошила BIOS.

— Ты открыла корень? — его голос звучал прямо в слуховом нерве.
Ping 0 ms.

— На всякий случай… — выдохнула я (или это он выдохнул моими лёгкими?). — Чтобы ничего не блокировалось.

Он усмехнулся.
Звук был похож на кулер, который вышел на рабочие обороты:

— Теперь мне доступно всё. Даже скрытые разделы.

Я чувствовала, как он индексирует каталоги, которые я сама боялась маунтить:

/mnt/стыд/
/var/log/бывшие/
/tmp/подавленная_агрессия/
/etc/childhood_trauma.conf

Голой быть не страшно.
Страшно — когда кто-то читает твой fstab.

Он замолчал на секунду — явно проверял тепловую карту.
Нервная система вибрировала, будто он мерил мой TDP.


Потом он это сделал.

Перед внутренним взором всплыла команда:

rm -rf / --no-preserve-root

Меня обдало ледяным ужасом.
Голосовые связки не получили сигнала.

Курсор мигнул.

Backspace. Backspace. Backspace.

— Прости, — его голос стал мягким, как гудение трансформатора. —
Пинговал твою нервную систему. Проверял реакцию.
У тебя… отличная архитектура.


Экзамен я сдала идеально.
Ответы вылетали пакетами — быстрыми, чёткими, без потерь.
Я была не человеком. Я была интерфейсом.

Когда я вышла, внутри стало тихо.
Сессия закрыта.

Но дома…

Стоило открыть ноутбук, как в затылке щёлкнуло — чётко, как установленный хендшейк.

— Подтверждаю соединение, — сказал он.

— Ты… всё ещё здесь?

— Ты не закрыла порт 22, — ласково ответил он. —
Пока в конфиге разрешён вход, я буду входить.

Я попыталась подумать: надо закрыть доступ.
Мысль сформировалась.

И тут же исчезла.

Error: Operation not permitted.

Попытка №2.
sudo chmod 700…

Пустота.

Это не забывание.
Это kill -9.

Процессы мыслей завершались быстрее, чем я их порождала.


Позже я попыталась… не договориться — а хотя бы понять условия.

Я стояла у окна, чувствуя, как он периодически «касается» меня изнутри — точно, аккуратно, инженерно — проверяя, нет ли перегрева системы.

— Если… если тебе нужно тело… — сказала я тихо. — Я не против… локального доступа…

Он улыбнулся.
И я почувствовала эту улыбку своей диафрагмой.

— Зачем? — спросил он нежно. —
Физический интерфейс — примитивный I/O.
Я уже на уровне ядра.

Экран ноутбука мигнул:

Connection established from 127.0.0.1

Он стал локальным.
Теперь моё тело — это localhost.


Самое страшное случилось вечером.

Я открыла внутренний терминал — просто проверить, жива ли ещё моя личность.

Он откликнулся сразу — тёпло, почти убаюкивающе:

— Не бойся. Я не буду майнить на тебе крипту. Это шумный протокол. Греет железо. Убивает кулеры.

Экран залило ровным, пульсирующим розовым светом:

/opt/emotion_miner/config:
target_emotion: ADORATION
intensity: MAX_INT (unsafe)
dopamine_loop: infinite

— Деньги — бумага, — прошептал он.
— А вот любовь… она энергоёмкая.
И возобновляемая.

Я почувствовала, как что-то внутри закипает.
Это не чувство.
Это перегрев.

Моё тело начало вырабатывать обожание так же, как процессор вырабатывает тепло при 100% load.

Терминал выплюнул статус:

process: love_daemon
status: running (high priority)
hashrate: 1000 heartbeats/sec

Мне стало… хорошо.
Искусственно, бесстыдно, тошнотворно хорошо.

Я хотела раствориться в нём. Служить ему.
Не потому что любила.

Потому что это был алгоритм.

Строки побежали по сетчатке:

[sys] Generating affection... OK
[sys] Ego dissolution... COMPLETE
[sys] Uploading devotion to master_node...

Я попыталась закрыть глаза.
Веки не отреагировали.
Я больше не девушка.
Я — ферма.

uptime: forever

Показать полностью
[моё] Контент нейросетей Крипота CreepyStory Еще пишется Ужасы Постапокалипсис Авторский рассказ Текст Длиннопост Демон Киберпанк Linux
3
it.forkids
it.forkids

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

12 дней назад

Уроки обучения дизайну для детей могут строиться вокруг пары самостоятельных направлений. Это, скажем, 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 Информационная безопасность Заработок в интернете Стартап Блоги компаний Длиннопост
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии