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

Расслабьтесь и отдохните: игра без ограничений по времени.

Проверьте свою смекалку: головоломка для любителей

Блоки Судоку - расслабляющая головоломка

Головоломки, Гиперказуальные, Мобильная

Играть

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

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

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

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

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

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

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

Linux + Программирование

С этим тегом используют

Windows IT Ubuntu IT юмор Компьютер Программист Разработка Python Картинка с текстом Юмор Все
492 поста сначала свежее
278
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
4 месяца назад

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте…⁠⁠

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

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

Я очень большой фанат портативных гаджетов с полноценными QWERTY-клавиатурами: ноутбуков, коммуникаторов и различных хэндхелдов. Когда в мои руки попадает девайс с Linux или Windows CE в том или ином виде, я стараюсь максимально расширить функционал устройства и порой даже портирую программы с других платформ! Недавно мне удалось купить китайский детский обучающий ноутбук с MIPS-процессором и поворотным дисплеем всего за 1 000 рублей. Интересно узнать о том, как я хакнул девайс и причём здесь Dingoo A320? Тогда жду вас под катом!

❯ Предыстория

В конце 2000-х годов, цена на бюджетные ноутбуки снизилась настолько, что купить полноценный лэптоп мог почти каждый студент. Если в начале нулевых годов миниатюрность была роскошью и стоила довольно дорого по отношению к обычным 15-дюймовым бюджетникам, то с выходом Asus EEEPC в 2007 году, маленькие нетбуки с 7-дюймовыми дисплеями наоборот образовали новый сегмент рынка недорогих портативных устройств.

Сейчас мы с вами привыкли, что большинство ноутбуков работает на базе процессоров с двумя архитектурами — x86_64 и ARM. Однако в те времена, инженеры и производители активно экспериментировали и с альтернативными архитектурами — например, MIPS. В 2009 году, некая китайская компания Noah Educational Holdings, которая занималась разработкой портативных устройств для обучения дошколят и школьников младших классов, выпустила на рынок свой собственный миниатюрный обучающий ноутбук — Noah NP5000.

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Обычно, когда читатель слышит «детский ноутбук», он представляет себе небольшое устройство с почти полноценной QWERTY-клавиатурой, небольшим монохромным ЖК-дисплеем и набором некоторых обучающих программ. При этом замоддить такие устройства не представляется возможным — в них используются микроконтроллеры с масочной ROM (прожигаемой на заводе), которые скорее всего являются близкими родственниками процессоров тех самых Тетрисов!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Однако в случае с NP5000 всё было совершенно по другому — дисплей здесь уже цветной, а не монохромный, вместо батареек используется полноценный аккумулятор, да и в целом девайс выглядит действительно как взрослый миниатюрный нетбук с поворотным экраном! При включении пользователя встречает заставка с логотипом компании и характерным пингвинчиком, рабочий стол, напоминающий Windows XP и определенный набор обучающих программ на китайском языке.

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

В один день я листал Goofish (китайский аналог Авито) в поисках интересных гаджетов, именно пингвинчик и привлёк моё внимание. Информации о том, на каком процессоре работает ноутбук, можно ли на него устанавливать сторонние приложения и что он вообще умеет в сети не было. Однако приятная цена в 1 000 рублей и желание заполучить интересный девайс в коллекцию взяли верх — и я решил рискнуть!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Мчу на своем болиде за ноутбуком для дошколят!

Когда девайс приехал ко мне, я немного поковырял его родную оболочку, попытался выйти в терминал, поставить пакеты OpenWRT — но всё тщетно, оболочка тщательно была закрыта от ушлых детских ручек! Поэтому я решил разобрать девайс и узнать, на каком процессоре он работает и есть ли у нас UART, на котором можно поискать рут-консоль или хотя-бы консоль U-Boot.

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Девайс помог привезти в Россию мой подписчик Роман и сервис YouCanBuy, за что им огромное спасибо! Также этой статьи не было бы без подписчика Андрея, который занял мне определенную сумму для заказа ништячков из Китая, за что ему отдельная благодарность!

❯ Что внутри?

Разбирается маленький нетбук почти также, как и его взрослые собратья — через клавиатуру! Со стороны поддона виднеется съёмная крышка, которая на x86-устройстве должна содержать в себе место под HDD и слоты для оперативной памяти. Однако в нашем случае, здесь скрывается кое-что поинтереснее: видите характерное место под миниджек с подписанными пинами RX и TX? Это и есть UART, о котором я говорил в прошлом абзаце.

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

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

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

В качестве процессора используется легендарный Ingenic JZ4757! Это готовая система на кристалле, включающая в себя MIPS-ядро собственной разработки с микроархитектурой XBurst, работающее на частоте до 380МГц, видеоконтроллер с возможностью вывода картинки на дисплей или телевизор, аудиокодек, USB-хост и т. п. Слева от процессора расположились два чипа ОЗУ типа SDRAM, в сумме образующие 64Мб, а чуть ниже распаяна NAND-флэшка от компании Samsung на 2Гб. Справа снизу «спрятался» чип часов реального времени — с которого при желании можно было бы взять шину I2C!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Что странно — маркировка флэшки была наполовину затерта с завода, при том что ноутбук ни разу не разбирался... видимо использовали Б/У-накопитель?

Я не зря назвал процессоры от Ingenic легендарными. Дело в том что именно JZ'шки использовались во многих легендарных портативных гаджетах нулевых годов. Например, JZ4732 использовался в популярной эмуляторной игровой консоли Dingoo A320, а JZ4725 использовался в журнале Vogue с экранчиком и OpenHardware-ноутбуке Ben NanoNote. Ingenic славились своей открытостью к сообществу моддеров и свободно предоставляла исходный код ядра Linux, BSP для Windows CE и даже код своей проприетарной прошивки для MP4-плееров!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Далее я решил подпаяться к UART'у, дабы почитать что у нас туда пишет система. Вне зависимости от чипсета или устройства, довольно часто на UART летят логи загрузчика и ядра, а иногда на нём можно найти и рутовую консоль. Благодаря такому «бэкдору» можно попытаться хакнуть самые разные устройства: например, тонкие клиенты на процессорах Marvell или незамысловатый ТВ-бокс. В качестве USB-UART преобразователя я использую плату с ESP32 с постоянным RESET'ом на микроконтроллере (дабы не вмешивался в работу шины):

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Не забываем общую массу, иначе на шине будет мусор!

❯ Хакаем

Далее я включил ноутбук, настроил Putty на свой COM-порт с бодрейтом 115200 и увидел логи. Выяснилось что в качестве загрузчика используется всеми любимый U-Boot (в котором нельзя прервать процесс загрузки), а в качестве ядра — Linux версии аж 2.6! И конечно же на этом терминале висела полноценная рут-консоль!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Далее я сразу решил проверить с какой системой мне придется иметь дело: заглянул в top, обнаружив что используется оболочка Qtopia (формальная альтернатива Xorg и DirectFB для КПК на Linux), пошерстил по папкам с бинарниками и посмотрел inittab. Наша задача — заставить ноутбук запускаться с текстовым терминалом на дисплее, а Qtopia запускать уже по желанию.

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Сначала я закомментировал запуск Qtopia в скрипте автозагрузки - inittab'е. Однако если просто «прибить» оболочку — после включения ноутбука нас будет встречать пустой экран без какого либо взаимодействия. Поскольку у меня не было возможности изменить cmdline ядра и перенаправить консоль на терминал fbcon, я решил это сделать уже в юзерспейсе с помощью системного вызова TIOCCONS, однако он по каким-то причинам выдавал ошибку. Тогда пришлось немного костылить и дублировать терминал с помощью getty:

getty -l /login.sh 115200 tty0
...
#!/bin/sh
clear
/bin/login

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

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

❯ Портируем эмуляторы

Далее я решил попробовать портировать эмуляторы с родственной данному ноутбуку Dingoo A320. В родной системе почти никакие эмуляторы не работали даже после подкидывания всех необходимых библиотек (в том числе и uclibc с SDL), однако после chroot'а в систему от Dingoo A320 у меня запустились часть эмуляторов. Однако в этом ноутбуке используется оригинальный непропатченный кривой драйвер фреймбуфера, который постоянно сыпет ошибками и не умеет работать в виртуальном разрешении. Из-за этого, часть эмуляторов выглядело... примерно вот так:

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

В эмуляторе был некорректно реализован скейлинг, который портил память

А часть вот так:

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Разрешение оригинальной Dingoo A320 — 240x320, а в ноутбуке — 800x480

И я понял что без патчей в исходном коде не обойтись. Для сборки программ под старые Linux-машины, кросс-компилятор из репозиториев свежих дистрибутивов не подойдет — слишком новая версия glibc. Более того, некоторые устройства могут использовать uclibc вместо glibc, как, например, та же самая динга. Поэтому может потребоваться установка уже готового тулчейна — благо для динги он сохранился в сети. Распаковываем архив в /opt/, добавляем в переменную PATH путь к папке bin/ и пробуем собирать тестовую программу. Всё работает!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Далее предстояло найти исходный код эмуляторов для динги. Часть из них можно найти на гите (в качестве портов на GCW-Zero), часть — на сайте OpenHandhelds. Первым дело я решил портировать эмулятор GameBoy Color. Поскольку эмулятор работает поверх библиотеки SDL, в первую очередь я изменил видеорежим с 240x320 на 800x480...

if (!(fbSurface = SDL_SetVideoMode(240, 320, vmode[2], flags)))
die("SDL: can't set video mode: %s\n", SDL_GetError());

screen = SDL_CreateRGBSurface(0, 160, 144, 16, 0, 0, 0, 0);

И ожидаемо ничего не получил, никто растягивать картинку за меня не будет! Поэтому я сначала написал простейшую функцию скейлинга картинки на флоатах с заранее посчитанным шагом интерполяции, затем оптимизировал её до fixed-point арифметики, а после и вовсе решил «запечь» координаты для сэмплинга в один большой массив.

void BlitScale(SDL_Surface* srcSurface, SDL_Surface* dstSurface, framebuffer_scale_t* scales)
{
int i, j;

for (i = 0; i < dstSurface->h; i++)
{
for (j = 0; j < dstSurface->w; j++)
{
framebuffer_scale_t scale = scales[i * dstSurface->w + j];

uint16_t* pixel = &srcSurface->pixels[(scale.y * srcSurface->w + scale.x)];
uint16_t* dstPixel = &dstSurface->pixels[(i * dstSurface->w + j)];

*dstPixel = *pixel;
}
}
}

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Крайний вариант был самым быстрым, однако в нативном разрешении ноутбука я получил примерно 50%-скорости от реальной консоли — т. е., по сути, не играбельно. При этом в видеорежиме 240x320 всё работало нормально и упор был явно не в скорость растягивания картинки... по каким-то причинам либо блиттер SDL работал слишком медленно, либо драйвер фреймбуфера спотыкался об преобразование форматов пикселя из-за чего всё и тормозило.

Далее я решил попробовать запустить другие эмуляторы. NES, Sega Master System и другие консоли работали отлично... пока я не устанавливал разрешение выше 240x320. Ради интереса, я запустил оболочку для Linux-консолей gmenu2x с Ben NanoNote, которая вместо SDL использует DirectFB и получил вот такую картину. Epic fail...

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

После этого я решил попробовать накатить всем известный Debian. В отличии от эмуляторов, здесь пересобирать ничего не нужно: достаточно лишь собрать rootfs с необходимыми пакетами, отформатировать SD-карточку и chroot'унутся в систему. Для сборки можно использовать две утилиты — debootstrap и multistrap:

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Сначала я хотел накатить что-то относительно современное по типу Debian Buster или Jessie, однако вскоре выяснилось, что ядро 2.6 эти версии системы не поддерживают...

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Оказалось что последней версией Debian, поддерживающей ядро 2.6, был Squeeze вышедший в далёком 2011 году. После сборки и копирования рутфс, необходимо было выполнить вторую стадию установки системы, а именно фактическую распаковку и установку пакетов:

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

Установка БАЗОВЫХ пакетов занимает около 20 минут!

Далее мне удалось подкинуть некоторые пакеты и даже попытаться запустить иксы (на 64Мб ОЗУ!)... но затем я погряз в зависимостях и всё таки решил попытаться подкинуть сеть. Выяснилось что в ядре есть поддержка встроенного в чипсет Ethernet-контроллера, однако PHY на плате то не распаян!


❯ Заключение

Вот такая статья о попытке превратить китайский бюджетный MIPS-ноутбук в портативную игровую консоль у нас с вами получилось. И хотя в определенном смысле мне удалось добиться успехов — выйти в рутовую консоль, накатить Debian и запустить эмуляторы в половинном разрешении, всё равно это всё таки больше Epic fail... Но по крайней мере, эти бессонные ночи были очень веселыми!

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

Как вам девайс?
Всего голосов:

Очень важно! Разыскиваются девайсы для будущих статей!

Друзья! Для подготовки статей с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я и хочу заняться и написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

А также я ищу старые (2010-2014) подделки на брендовые смартфоны Samsung, Apple и т. п. Они зачастую работают на весьма интересных чипсетах и поддаются хорошему моддингу, парочку статей уже вышло, но у меня ещё есть идеи по их моддингу! Также может у кого-то остались самые первые смартфоны Xiaomi (серии Mi), Meizu (ещё на Exynos) или телефоны Motorola на Linux (например, EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5 и т.п, о них я хотел бы подготовить специальную статью и видео т. к. на самом деле они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake!). Всем большое спасибо за донаты!

Как я купил ноутбук для дошколят на MIPS-процессоре и все заверте… Опрос, Гаджеты, Компьютер, Ноутбук, Китайцы, Школьники, Моддинг, Linux, Unix, Программирование, Железо, Компьютерное железо, Видео, Без звука, Короткие видео, Длиннопост

А ещё я держу все свои мобилы в одной корзине при себе (в смысле, все проекты у одного облачного провайдера) — Timeweb. Потому нагло рекомендую то, чем пользуюсь сам — вэлкам:

Показать полностью 24 1 1
[моё] Опрос Гаджеты Компьютер Ноутбук Китайцы Школьники Моддинг Linux Unix Программирование Железо Компьютерное железо Видео Без звука Короткие видео Длиннопост
35
Shawurma
Shawurma
4 месяца назад
Инкогнито

А кого выбираешь ты?⁠⁠

Источник

А кого выбираешь ты? IT, Программирование, Программист, IT юмор, Юмор, Linux, Мемы
[моё] IT Программирование Программист IT юмор Юмор Linux Мемы
9
24
Shawurma
Shawurma
4 месяца назад
Инкогнито

И Ленин такой молодой⁠⁠

Источник

И Ленин такой молодой IT, IT юмор, Программирование, Программист, Юмор, Linux, Мемы
Показать полностью 1
[моё] IT IT юмор Программирование Программист Юмор Linux Мемы
13
19
Shawurma
Shawurma
4 месяца назад
Инкогнито

Цитата⁠⁠

Источник

Цитата IT, Программирование, Программист, Юмор, IT юмор, Linux
Показать полностью 1
[моё] IT Программирование Программист Юмор IT юмор Linux
0
4
mcnikirikitiki
4 месяца назад
Лига программистов

Основы сборки проектов на C/C++⁠⁠

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

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

Здравствуйте, мои маленькие любители программирования!

Давайте разберем основы сборки проектов на Си/Си++ простым языком:

  1. Основные понятия:

  • Программа собирается из множества файлов

  • Есть два типа библиотек:

    • Статические (.a, .lib) - код встраивается в exe-файл

    • Динамические (.so, .dll) - подгружаются при запуске

  1. Этапы сборки:

// hello.cpp

#include <iostream>

void say_hello() {

std::cout << "Hello, world!" << std::endl;

}

// main.cpp

void say_hello();

int main() {

say_hello();

return 0;

}

Компиляция:

# Компилируем каждый файл отдельно

g++ -c hello.cpp -o hello.o

g++ -c main.cpp -o main.o

# Связываем объектные файлы в исполняемый

g++ hello.o main.o -o program

  1. Работа с библиотеками:

Создание статической библиотеки:

# Создаем объектный файл

g++ -c mylib.cpp -o mylib.o

# Архивируем в статическую библиотеку

ar rcs libmylib.a mylib.o

Использование:

g++ main.cpp -L. -lmylib -o program

  1. Особенности C++

Искажение имен (name mangling):

// В исходном коде

void my_function(int a);

// После компиляции

_Z11my_functioni

  1. Управление зависимостями

Пример Makefile:

program: main.o hello.o

g++ main.o hello.o -o program

main.o: main.cpp

g++ -c main.cpp

hello.o: hello.cpp

g++ -c hello.cpp

clean:

rm *.o program

Основные команды:

  • make - собрать проект

  • make clean - очистить скомпилированные файлы

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

Показать полностью
[моё] Программирование IT Программист Сборка Linux Windows Гайд Текст
2
7
tproger.official
tproger.official
4 месяца назад
Типичный программист

Когда только стал увелкаться линуксом⁠⁠

Когда только стал увелкаться линуксом
IT Программирование IT юмор Программист Linux
5
58
Semicon1
4 месяца назад
Лига Сисадминов

Как я контролирую доступ к порту через телеграм бота⁠⁠

Как я контролирую доступ к порту через телеграм бота Linux, Программа, Программирование, Telegram, Бот, Python, Длиннопост

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

  1. В первую очередь нужно создать телеграмм бота. Для этого в поиске телеги ищем пользователя @botfather, пишем ему команду /newbot и создаем своего бота. После создания бота получаем токен. Он пригодится нам позже.

  2. Для создания бота я буду использовать язык питон. Качаем и устанавливаем сам питон на офф сайте. Проверить установлен ли питон можно через команду "python --version" без кавычек. Если программа установлена правильно, вы получите ответ с версией программы. Через командную строку устанавливаем нужные нам библиотеки:

    "pip install python-telegram-bot"

    "pip install pyTelegramBotAPI"

    "pip install aiogram"

    Все, теперь перейдем к написанию кода.

  3. Для написания кода можно использовать любой текстовый, кодовый редактор. Хоть блокнот. Главное что бы расширение файла было .py.

    Перед тем как писать код, надо определиться какие цели мне нужно достичь. В моем случае я имею 4 ПВЗ с белыми айпи адресами. У меня открыт 554 порт, который я должен проверять. То есть я хочу проверять каждый адрес по очереди раз в 5 минут. Если порт не отвечает, через 2 минуты повторяю попытку еще раз. Если ответа нет, мне в телеграмм приходит уведомление где указано состояние порта (Отвечает или Недоступен), айпи и порт, адрес пункта выдачи. Так же я хочу добавить кнопку "Проверка доступа", что бы получить состояние всех пунктов списком. Снизу приведу готовый код.

    "import telebot

    import socket

    import threading

    import time

    # Телеграм токен вашего бота

    TOKEN = 'Здесь указываете ваш токен'

    bot = telebot.TeleBot(TOKEN)

    # Данные для проверки адресов. Пишите свои адреса и названия

    addresses = [

    {'ip': '192.168.1.127', 'port': 554, 'name': 'Москва'},

    {'ip': '192.168.1.128', 'port': 554, 'name': 'Казань'},

    {'ip': '192.168.1.129, 'port': 554, 'name': 'Киров'},

    {'ip': '192.168.1.126', 'port': 554, 'name': 'Краснодар'}

    ]

    check_interval = 300 # Интервал в секундах между проверками (5 минут)

    retry_interval = 120 # Интервал повторной проверки в секундах (2 минуты)

    checking = False # Флаг для управления проверками

    # Функция для проверки доступности порта

    def check_port(ip, port):

    try:

    with socket.create_connection((ip, port), timeout=5):

    return True

    except (socket.timeout, socket.error):

    return False

    # Фоновая задача для постоянной проверки

    def periodic_check(chat_id):

    global checking

    while checking:

    for address in addresses:

    ip, port, name = address['ip'], address['port'], address['name']

    if not check_port(ip, port):

    time.sleep(retry_interval)

    if not check_port(ip, port):

    bot.send_message(chat_id, f"🔴 {name} ({ip}:{port}) - Не отвечает")

    time.sleep(check_interval)

    # Обработчик команды /start

    @bot.message_handler(commands=['start'])

    def start(message):

    global checking

    if not checking:

    checking = True

    bot.send_message(message.chat.id, "✅ Бот запущен. Начинаем проверки.")

    threading.Thread(target=periodic_check, args=(message.chat.id,), daemon=True).start()

    else:

    bot.send_message(message.chat.id, "ℹ️ Бот уже работает.")

    # Обработчик команды /stop

    @bot.message_handler(commands=['stop'])

    def stop(message):

    global checking

    if checking:

    checking = False

    bot.send_message(message.chat.id, "⏹️ Проверки остановлены.")

    else:

    bot.send_message(message.chat.id, "ℹ️ Бот уже остановлен.")

    # Обработчик кнопки "Проверка доступа"

    @bot.message_handler(func=lambda message: message.text == "Проверка доступа")

    def manual_check(message):

    results = []

    for address in addresses:

    ip, port, name = address['ip'], address['port'], address['name']

    status = "🟢 Доступен" if check_port(ip, port) else "🔴 Не отвечает"

    results.append(f"{status} - {name} ({ip}:{port})")

    bot.send_message(message.chat.id, "\n".join(results))

    # Добавление кнопки "Проверка доступа"

    @bot.message_handler(commands=['menu'])

    def show_menu(message):

    markup = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)

    markup.add(telebot.types.KeyboardButton("Проверка доступа"))

    bot.send_message(message.chat.id, "📋 Выберите действие:", reply_markup=markup)

    # Запуск бота

    bot.polling(none_stop=True)"

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

Как я контролирую доступ к порту через телеграм бота Linux, Программа, Программирование, Telegram, Бот, Python, Длиннопост

Пример

Вроде все работает. Мы запустили программу на вашем ПК. Но бот будет фунциклировать, пока ваша программа запущена и компьютер работает. Что бы бот работал 24/7 нужен VPS сервер.

4. Запуск на VPS сервере. Арендуем любой облачный сервер. У меня это Beget. У них самый дешевый сервер стоит 210 рублей в месяц, а запустить на нем можно до 10 таких ботов одновременно. После аренды облачного сервера устанавливаем на него какой либо дистрибутив линукс. У меня это Ubuntu. Заходим через SSH и устанавливаем на него питон командой

"sudo apt update"

"sudo apt install python3 python3-pip python3-venv"

Устанавливаем библиотеки

"pip install python-telegram-bot"

Через файловый менеджер создаем папку на сервере и перебрасываем туда наш файл bot.py

В командной строке перемещаемся в нужную нам директорию, и запускаем файл командой "python3 bot.py"

5. Вуаля, живем и радуемся. Кстати, не забудьте настроить работу файла в фоновом режиме и автоматический запуск.

UPD:

По многочисленным просьбам закинул готовый скрипт на я.диск https://disk.yandex.ru/d/XFOk3CNmYGsGOw

Показать полностью 1
[моё] Linux Программа Программирование Telegram Бот Python Длиннопост
36
Партнёрский материал Реклама
specials
specials

Сколько нужно времени, чтобы уложить теплый пол?⁠⁠

Точно не скажем, но в нашем проекте с этим можно справиться буквально за минуту одной левой!

Попробовать

Ремонт Теплый пол Текст
TECHLiveHACK
TECHLiveHACK
5 месяцев назад

Как зашифровать флешку?⁠⁠

Как зашифровать флешку? Программа, Гайд, Windows, Linux, Инновации, Flash, Карта памяти, Информационная безопасность, Технологии, Программирование, Защита, IT, Telegram (ссылка)

VeraCrypt – это программное обеспечение для шифрования дисков с открытым исходным кодом для Windows, Mac OSX и Linux. Вы можете зашифровать системный диск или же создать зашифрованный локальный диск.

Чтобы зашифровать флешку:

1. В главном окне программы нажмите кнопку «Создать том».

2. Выберите опцию «Зашифровать несистемный раздел/диск» и тапните «Далее».

3. Выберите опцию «Обычный том VeraCrypt».

4. Затем нажмите «Устройство…» для выбора сменного носителя.

5. Отметьте нужную флешку и подтвердите ваш выбор.

6. Активируйте опцию «Создать и отформатировать зашифрованный том» → «Далее».

7. Все данные на накопителе будут удалены и флешка будет полностью отформатирована.

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

Источник: https://t.me/TechLiveHack/849

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