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

Спрятано в 2024

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

Играть

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

  • AlexKud AlexKud 38 постов
  • Animalrescueed Animalrescueed 36 постов
  • Oskanov Oskanov 7 постов
Посмотреть весь топ

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

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

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

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

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

Сборники заданий по программированию⁠⁠

Всем бедным преподам приходится выкручиваться с заданиями по языкам программирования.
ибо теории много. а практикумов по заданиям не найдешь. особенно по каждым темам.
замучившись сам с такой проблемой решил наделать задачников по темам
предлагаю вашему вниманию оные.
https://github.com/asbcorp24/zadachik
Буду постепенно допиливать и добавлять другие.
сделал в html файлах чтобы проще было работать

Сборники заданий по программированию Урок, Программирование, Студенты, Образование, Высшее образование, Python, Javascript, Java, C++

там же расширение для хрома для создание подобного, если какие нужны языки пишите

Показать полностью 1
[моё] Урок Программирование Студенты Образование Высшее образование Python Javascript Java C++
1
13
Lifehack
Lifehack
11 месяцев назад
IT Юмор

Лучший друг⁠⁠

Источник

IT юмор Программирование Программист Разработка Python C++ Видео Вертикальное видео Telegram (ссылка)
0
Вопрос из ленты «Эксперты»
DELETED
11 месяцев назад

Помогите с c++⁠⁠

как мне написать собственного простого голосового помощника для управления компьютером своим голосом, очень надо для экзамена

[моё] Вопрос Спроси Пикабу Программирование Компьютерная помощь Windows C++ Текст
17
385
Skyscrew
Skyscrew
11 месяцев назад
Лига Сисадминов

На интервью⁠⁠

На интервью Картинка с текстом, Мемы, Программирование, C++, Кот
Показать полностью 1
Картинка с текстом Мемы Программирование C++ Кот
13
1430
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
11 месяцев назад

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM⁠⁠

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Я всегда любил находить новые применения стареньким девайсам, даже если обход защиты и разработка для них чего-то полезного занимала у меня некоторое время. И если с прошлыми моими статьями, где я привносил новую жизнь смартфонам на Android 2.3, а затем и на Android 1.5 всё понятно — девайсы получили возможность не только быть звонилками, но и вполне полноценными смартфонами, то в случае таких необычных девайсов, как электронные переводчики — всё гораздо интереснее, ведь по сути, это дешёвые альтернативы таким легендарным устройствам, как HP Jornada! Недавно я купил переводчик Ectaco за 1.500 рублей на Windows CE, обошел встроенную оболочку, написал программу, которая твикает реестр и даже портировал туда эмулятор NES. Интересно узнать об этом процессе во всех подробностях? Тогда добро пожаловать под кат!

❯ Предисловие

Есть на свете такой интересный класс устройств, как портативные клавиатурные минипк — HPC. Основные особенности таких девайсов перед обычными органайзерами — полноценная QWERTY-клавиатура, возможность запускать кастомный софт и порой интересные процессоры на очень необычных архитектурах. Совсем недавно, я писал статью о том, как купил целых два таких HPC — HP 620LX и HP Jornada 680, причём 620LX я отреставрировал — девайс теперь полностью работает!

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Но буду предельно честен: оба девайса были куплены по низу рынка и не полностью рабочими. Каждый обошёлся в 3.000 рублей, в сумме 6.000 рублей — весьма немалая для меня сумма. Ценники на рабочие экземпляры, причём не всегда с доком и дата-кабелем начинаются от 5-6 тысяч рублей. Кто-то из читателей скажет мол это копейки, но для меня сейчас это прям ощутимые деньги, плюс в моём чате после выхода статьи многие писали что тоже хотели бы заполучить подобные девайсы, но не имеют возможности выложить такую сумму. И тут я подумал, что надо-бы поискать альтернативы джорнаде, которые были бы гораздо дешевле.

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Однако с чего начать поиски? Ведь хочется девайс именно компактный и на необычном процессоре, понятное дело что EEEPC (которые, к слову, на вторичке стоят по 500 рублей) тут не подходят. Коммуникаторы на Windows Mobile тоже вполне недорогие — можно найти некоторые модели HTC или Glofiish по 500-1.000 рублей, но всё же это сайд-слайдеры, а хотелось бы форм-фактор ноутбука (к слову, из «ноутбучных» есть Toshiba Portege G910, который я давно хочу заполучить). И тут подписчик из Казахстана заслал мне целую коробку с подогоном ништяков, где среди девайсов оказался электронный органайзер Citizen!

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Девайс меня жутко заинтересовал, даже несмотря на монохромный простенький ЖК-дисплей, мне хотелось под него что-нибудь написать самому. Да хоть понг или стрелялку, где кораблик — один пиксель слева, а астероиды — пиксели справа. Но я понимал, что конкретно в этой модели вся прошивка лежит в ROM (масочной, которая физически прошивается на заводе один раз) и под эту модель ничего написать самому не получится. Поэтому я полез на барахолки с тегами «органайзер» искать девайсы с возможностью подключения к ПК по USB: мало ли, хоть какая-то модель будет поддерживать кастомные программы на манер инженерных калькуляторов.

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Но нет, поиски не увенчались успехом. Зато в какой-то момент, онлайн-барахолка подсунула мне объявления о продаже электронного переводчика Ectaco, которые тоже были в разделе «для офиса», как и органайзеры. И всё бы ничего — ну да, цветной дисплей, ну да, выглядит замечательно, но я даже не представлял что за процессор и ОС в таком девайсе стоят. Пока не полистал фото, не присмотрелся к крайне знакомому интерфейсу и не увидел вот это...

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Да! Вы все правильно поняли, некоторые переводчики работают на базе WIndows CE. А если там стоит WinCE, то как минимум есть солидный объем оперативной памяти (хотя бы 64 мегабайта), дисплей с разрешением 240x320 и довольно бодрый процессор, как минимум 150-200МГц. Далее я хотел узнать, с чем же мне предстоит столкнуться и начал гуглить мануал, дабы узнать о доступных пунктах в меню и можно ли выйти через них в оболочку WinCE (как на навигаторах). Чтения мана дало понять что нет, но я узнал что для работы устройства обязательно нужна SD-флэшка из комплекта устройства, иначе девайс стопорится на белом экране.

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

А это тоже наводит на определенные мысли. Либо девайс полностью загружается с SD-карты, либо запускает оттуда программы, через которые потенциально можно запустить explorer.exe и выгрузить стандартный софт из памяти. И я начал искать в сети образ родной флэшки. Я нашел на ютубе гайд по восстановлению такого переводчика, где автор видео выложил архив в облако, скачал и начал колупать — да здесь же целая папка System, где лежат отдельные exe'шники каждой программы, представленной на устройстве!

в облако, скачал и начал колупать — да здесь же целая папка System, где лежат отдельные exe'шники каждой программы, представленной на устройстве!

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

На этом моменте я понял, что девайс надо брать! Также на онлайн-барахолках попадаются переводичики и других брендов, которые потенциально работают на других системах. Их тоже было бы интересно поколупать (авось на Linux!), попытаться что-то с ними сделать, но я пока не могу себе позволить их купить.

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Когда девайс приехал ко мне, я понял что отдал деньги не зря: он настолько компактный (даже меньше iPhone 14 Pro Max), что помещается в карман летних шорт, у него есть QWERTY-клавиатура и DPAD (что пригодится для игр), а также резистивный тачскрин и реально классный корпус с металлической рамкой дисплея. Придя домой, я сразу же начал его колупать: такие красавчики точно не должны отправляться в утиль, я был уверен что смогу найти для них новое применение!

Тут важно отметить, что устройства от Ectaco были топовыми в свое время и стоили кучу денег. 15 тысяч рублей в 2009 году — очень серьезные деньги, это цена новенького коммуникатора Rover, Xperia X10 вышедшего годом позже, или, например, Mio/Glofiish. Неудивительно, что девайсы построены на базе неплохого железа и полноценной WinCE!

❯ Что под капотом?

Конечно же перед тем, как смотреть софт, нужно посмотреть на каком железе работает наш переводчик. Разбирается девайс несложно, но конструкция весьма замудренная, нужно быть аккуратным. Вытаскиваем флэшку, откручиваем винтики на крышке отсека АКБ и отключаем аккумулятор. В моём девайсе, он уже был кем-то заменен на свежий (родные уже «все»):

Далее выкручиваем 4 винта из задней крышки и расщелкиваем клипсы — сама крышка снимается легко. Затем нужно открутить винты, крепящие динамик и отложить заднюю крышку в сторону. Перед нами открывается внешний вид материнской платы (вернее, целых двух):

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Сорян за качество фото на этапе разборки, мой S8, купленный по низу рынка и используемый в качестве камеры уже «подустал» и модуль автофокуса у него поврежден.

Сверху расположена материнская плата с процессором, ОЗУ и флэш-памятью. То есть, по сути, это SoM (система на модуле), но не общего назначения, а разработанная Ectaco для своих нужд. Моделей переводчиков было много и возможно компания меняла конфигурацию ОЗУ/процессора и т. п., оставляя одну и ту же нижнюю плату. Для дальнейшей разборки, стоит отклеить черную наклейку, дабы не повредить шлейф дисплея, открутить три винта, крепящие верхнюю плату и снять крепежи грузиков, впаянные в пластик корпуса. Теперь нужно аккуратно вставить плоскую отвертку так, как показано ниже и упереть её в пластиковую прокладку между коннекторами верхней и нижней платы:

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Не тяните пальцами за другие части платы. Она достаточно тонкая и погнуть/надломить её не составит труда!

Теперь верхнюю плату можно снять. Осторожнее с шлейфом дисплея — он весьма хрупкий и его можно случайно порвать:

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Теперь мы можем разглядеть основную плату нашего девайса подробнее. В качестве процессора используется чипсет NXP LH7A404-N0F000B3. Это ARM922T (ARM9TDMI, ARMv4) ядро, работающее на частоте до 200МГц. Уже вполне неплохо, на уровне ранних Intel StrongARM (XScale)! В качестве оперативной памяти, используются две банки Samsung K4M56163LG по 32Мб каждая. Теоретически, объем ОЗУ можно расширить до 128Мб, как я это делал в статье про апгрейд коммуникатора QTek! Тест-поинты дисплея подписаны, скорее всего используется стандартная TTL-RGB матрица (но найти такую на замену будет сложно).

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

С обратной стороны платы расположился чип флэш-памяти типа NAND в корпусе TSOP Legacy. Это стандартная самсунговская флэшка небольшого объема, но на ней находится скорее всего только загрузчик — сама система грузится в ОЗУ с SD-карты. Приятно радует, что подписаны тест-поинты на плате и среди них мы видим как минимум UART. Это значительно повышает возможности девайса для моддинга в будущем, единственный нюанс — лишь бы на этом UART не висела консоль ядра Windows CE, потому что иначе открыть COM-порт не выйдет и «выпнуть» логи из определенного терминала как в Linux не получится! Именно с такой проблемой я и столкнулся на навигаторах с WinCE на борту (UART'ов в SiRF Atlas IV только два, один на GPS-модуль, т. е. чип придется снимать и напрямую к шару паяться, а второй на логи системы).

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

На основной плате расположился чарджер/КП, кодек AC97, разъемы и другие необходимые модули для функционирования девайса!

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

❯ Обходим оболочку

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

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

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Ага, мы видим два потенциальных вектора для атаки: первый это system.bin, собственно «сырой» образ для загрузки в ОЗУ и папка System/App с системными приложениями. Изучение system.bin я отложил на потом, решив подобраться с самого простого метода — попытка подменить exe'шники программ в System/App. Я открыл в IDA Pro программу-лаунчер, которая представляет из себя меню устройства и проверил на манер наличия проверки каких-либо подписей перед запуском программ. Их, к счастью, не оказалось: правда и реверсил я как оказалось не лаунчер, а стартовую анимацию как потом узнал. Сам лаунчер находится в system.bin, но в прошивке для другого девайса, Launcher находится именно на флэшке.

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Помимо этого, в папке лаунчера лежит файл с описанием пунктов меню и соответствующими программами. Я добавил туда пункт, который запускает \Windows\explorer.exe — и это сработало — девайс попал на рабочий стол! Но нужен был способ автоматизации всего этого дела и самое главное — закрытие родной оболочки (она кушает ОЗУ и на нее можно случайно переключиться в панели задач).

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Мы уже вышли на рабочий стол!

Итак: если стартовая анимация запускается лаунчером и нет никаких проверок подписей, то всё просто, нужно лишь написать небольшую программу, которая будет запускать explorer.exe и прибивать родное меню. За минут 30 был написан следующий говнокод (помимо этого, я писал итератор по виндовым окнам дабы найти название класса окна лаунчера):

int WinMain(HINSTANCE inst, HINSTANCE prevInst, LPWSTR cmdLine, int nShowCmd)
{
// Launch explorer
PROCESS_INFORMATION info;
CreateProcess(L"\\Windows\\explorer.exe", 0, 0, 0, 0, 0, 0, 0, 0, &info);

// Terminate launcher
HWND hwnd = FindWindowW(L"NSGL_WINDOW", 0);
if(hwnd)
{
DWORD procId;
GetWindowThreadProcessId(hwnd, &procId);

HANDLE proc = OpenProcess(PROCESS_TERMINATE, false, procId);
TerminateProcess(proc, 0);
CloseHandle(proc);
}
}

Этого кода было достаточно для полноценного запуска системы и полного «выпинывания» стандартной оболочки из памяти :) Но есть важный нюанс: несмотря на то, что здесь используется WinCE 5.0 — довольно свежая система, нормально работают бинарники собранные только для PocketPC 2003 в VS2005/VS2008, иначе система ругается на отсутствие библиотек. Учтите это, если захотите себе такого же красавца!

Но, поскольку система загружается в рамдиск каждый старт устройства, то и реестр системы сбрасывается после отключения. Поэтому я добавил в программу патчинг реестра сразу при старте устройства и копирование нужных для работы других программ dll-файлов в Windows/

void DbgMessageBox(wchar_t* str)
{
MessageBox(0, str, L"Error", MB_OK);
}

void PatchRegistryKeyI(wchar_t* path, wchar_t* key, DWORD val)
{
HKEY hk;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, path, 0, KEY_READ | KEY_WRITE | KEY_SET_VALUE, &hk) != ERROR_SUCCESS)
{
DbgMessageBox(L"Failed to open registry path");

return;
}

if(RegSetValueExW(hk, key, 0, REG_DWORD, (BYTE*)&val, sizeof(val)) != ERROR_SUCCESS)
{
DbgMessageBox(L"Failed to patch registry subkey");

return;
}

RegCloseKey(hk);
}

void PatchRegistry()
{
PatchRegistryKeyI(L"Explorer", L"ViewAll", 1);
PatchRegistryKeyI(L"Explorer", L"ShowExt", 1);
PatchRegistryKeyI(L"Explorer", L"ShowSys", 1);
PatchRegistryKeyI(L"Explorer", L"ExpandControlPanel", 1);
PatchRegistryKeyI(L"\\SOFTWARE\\Microsoft\\Shell\\OnTop", L"Default", 1);
}

void CopyDlls()
{
const wchar_t* searchPath = L"\\Storage Card\\Dll\\";
const wchar_t* searchPattern = L"\\Storage Card\\Dll\\*.*";

WIN32_FIND_DATAW findData;
HANDLE findFile = FindFirstFileW(searchPattern, &findData);

while(findFile != INVALID_HANDLE_VALUE)
{
wchar_t srcPath[255];
wchar_t dstPath[255];

wsprintfW((LPWSTR)&srcPath, L"%s%s", searchPath, &findData.cFileName);
wsprintfW((LPWSTR)&dstPath, L"\\Windows\\%s", findData.cFileName);
CopyFileW((LPCWSTR)&srcPath, (LPCWSTR)&dstPath, true);

findFile = FindNextFile(findFile, &findData) ? findFile : INVALID_HANDLE_VALUE;
}
}

Второй вектор для атак — образ system.bin, я исследовал чуть позже. Открыл образ системы в hex-редакторе и обнаружил, что первый мегабайт просто забит нулями, без каких-либо данных. Возможно это своеобразная защита от любителей распаковывать ROM'ы. Воспользовался поиском текста по сигнатуре CE (часть заголовка образа) и сразу же нашел начало файла: сигнатуру образов CE можно определить по 4-м байтам, где два первых байта произвольные (их значение я не знаю), а вторые два (00 EA) — постоянные. Также сигнатурой можно считать последовательность символов ECE.

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Вырезаем лишний мегабайт и используем программу dumpromx для распаковки образа устройства. Получаем набор готовых файлов. Чуть позже это помогло мне разобраться, как работают драйвера в Windows CE. При желании, можно напрямую редактировать ветки реестра (файлы .hv) и подменить программы/библиотеки на свои!

dumpromx -d nk1/ nk0.bin

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

В копирайтах программ я нашёл имя Вячеслава Боярышникова, который работал над устройством в 2008-2009 году. Отдельное спасибо ему и компании Ectaco за то, что не стали вставлять палки в колеса и сделали процесс моддинга максимально простым и приятным: я обошел стандартную оболочку в первый же день. Серьезно, это проблема современных устройств с заблокированными загрузчиками. Хабр ресурс большой, может кто-то знает его и кастанет в статью? :) Авось ему интересно будет посмотреть, что стало с девайсом его разработки спустя столько лет.

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

❯ Так что с ним можно сделать теперь?

Несмотря на то, что девайс работает на винде (пусть и CE), софта под него не очень много. Многие программы с HP Jornada и других HPC начала нулевых собраны под устройства с процессорами SH3 или банально не оптимизированы под разрешение дисплея нашего переводчика, а ещё в отличии от десктопной винды, у CE есть большие проблемы с совместимостью.

И казалось бы — да и ладно, вон есть Windows Mobile на базе всё той же CE, софт для неё должен хорошо работать на переводчике, но всё, конечно же, не так просто. Особенно когда вопрос касается игр! Большинство эмуляторов здесь не работают т. к. требуют библиотеку GX, которой нет в CE. Поэтому я решил портировать эмулятор сам, который будет рисовать картинку используя GDI.

В качестве основы я взял Wave's NES с китайской реплики телефона Nokia TV E71, выбросил платформо-зависимый код и реализовал рендер с обработкой кнопок для CE. Но вот незадача — производительность совсем не ахти.

Затем я искал возможность выводить картинку напрямую на дисплей — и через DirectrDraw (который почему-то был в дистрибутиве Windows, но для него не было драйвера), и через ExtEscape, и пытался реверсить драйвер дисплея но увы... Остаётся только медленный GDI - и именно в него идёт упор по скорости эмуляции из-за преобразования пиксельформатов (5551 винды в 565 нативный) каждый кадр. Максимум я добился вот такой производительности. Не густо.

При том, что QTek S110 с даунклокнутым до 208МГц PXA272 тащил эмулятор вообще без каких либо проблем, потому что в нём есть прямой доступ к фреймбуферу через GX!

Основной проблемой я считаю отсутствие сете вого стека в системе. К сожалению, сеть сюда никак не получится прокинуть, а жаль, была бы неплохая машинка для проверки почты и работы в терминале, благо порт Putty на нее есть!

Но всё же под девайс есть некоторое количество полезного софта. Например пресловутые текстовые редакторы.

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

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

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Ну и есть конечно же разные нативные игры с HPC 2000х годов! Такие раньше на отдельных дисках продавали!

Как я купил электронный переводчик за 1.000 рублей и превратил в мини-нетбук на ARM Опрос, Гаджеты, Покупка, Переводчик, Органайзер, Ништяки, Windows, Ноутбук, Нетбук, Программирование, C++, Видео, Без звука, Длиннопост

Сейчас я активно портирую KVM (JVM для J2ME) и MIDP-профиль на Windows CE. Если у меня получится — то на WinCE появится поддержка Java-игр!

❯ Заключение

Вот такой интересный материал с моддингом электронного переводчика у нас с вами сегодня получился. Весьма перспективный девайс, и если бы был прямой доступ к фреймбуфферу — потенциально очень неплохая машинка для ретро-гейминга. А как вам такая идея превращения профильного устройства во что-то совершенно иное? Пишите своё мнение в комментариях!

Также я сейчас ищу несколько девайсов для будущего контента, с которым вы, мои читатели, могли бы помочь. В первую очередь, я активно ищу дата-кабель для HP Jornada. У меня есть всё для того, чтобы запилить под него свою игру и рассказывать вам о таком опыте в отдельной статье и видео, но нет самого главного — дата-кабеля, с помощью которого можно было бы устанавливать и отлаживать нашу демку! Так что если у кого-то есть, будет здорово, если сможете поделится.

Также я сейчас ищу телефон Motorola на платформе MAGX или EZX (Linux). Среди таких, например, RAZR V8 и RAZR V9, EM30 и некоторые другие девайсы. Они отлично поддаются моддингу и с ними можно запилить крутой контент!

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

Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, чтобы не пропускать новые статьи каждую неделю!

Понравился моддинг переводчика?
Всего голосов:
Где теперь место Ectaco Partner?
Всего голосов:
Показать полностью 22 2 2
[моё] Опрос Гаджеты Покупка Переводчик Органайзер Ништяки Windows Ноутбук Нетбук Программирование C++ Видео Без звука Длиннопост
231
4
8bitsage
8bitsage
1 год назад

Unreal Engine 5 и VR с нуля. Часть 9. Основы С++. С++ vs Blueprint. Курс по Level Design⁠⁠

Что нового за последнее время и что делать дальше?

После успешного завершения мини игры Darts VR, нужно разобраться, что делать дальше и в каком порядке. Но в целом, у меня сформировался план развития, чтобы в итоге приблизиться к VR демо.

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

  • Мне нужен С++ чтобы в будущем работать в команде. Изменения в блюпринтах не показываются в коммитах git.

  • Мне нужно научиться применять С++ в Unreal Engine , особенно для проектов VR.

  • Мне нужно больше знаний о Level Design, а еще лучше, для игр от первого лица.

План дальнейшего обучения.

Основы C++

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

Курс - 1

Курс - 2

Курс - 3

Базовое программирование на примере создания игры для Windows по референсу DOS игры.

Курс

Level Design Master Class: All in One Complete Course

https://rutube.ru/plst/502826/

С++ и блюпринты в Unreal Engine 5

Курс

Создание проекта на С++ для Unreal Engine 5

Курс

Создание VR проекта в Unreal Engine C++ и Blueprint

(Курс я еще не выложил но обязательно вставлю сюда ссылку)

Пет проект С++

Для практики С++ я уже придумал себе задачу написать скрипт, который будет сравнивать данные из csv и json. Это мне нужно для работы.

Если всё получится, прикреплю сюда ссылку на проект в github (Вставлю ссылку сюда).

Заключение

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

Телеграм канал Unreal Engine VR

Показать полностью
[моё] Разработка Gamedev Unreal Engine Программирование C++ Текст
3
12
tproger.official
tproger.official
1 год назад
Типичный программист

Обучение программированию⁠⁠

Обучение программированию
[моё] IT юмор Программирование IT Программист Картинка с текстом Обучение Курсы программирования C++ Молчание
2
2
Proglib
Proglib
1 год назад
Серия Итоги недели в мире Python и обзоры новых сервисов

Итоги недели в мире Python и обзоры новых сервисов: история создания Python и лучшие практики разработки⁠⁠

Итоги недели в мире Python и обзоры новых сервисов: история создания Python и лучшие практики разработки Программирование, IT, Инновации, Python, C++, Rust, Видео, Длиннопост, YouTube, YouTube (ссылка), Разработка

🥳 Питону – 33 года!

В 2024 году Python исполняется 33 года. За это время он прошел невероятный путь – от пет-проекта до одного из самых универсальных и популярных языков. Все начинающие питонисты знают, что первую версию языка разработал голландский программист Гвидо ван Россум, а назван он в честь британского комедийного шоу, а не прожорливой змеи. Как развивались основные концепции языка, почему крупные ИТ-компании боялись, что автобус может переехать Гвидо, и когда на логотипе Python все-таки появились змеи – расскажет публикация на Хабре.

🏆 Лучшие практики разработки на Python

Знание и правильное применение лучших практик – один из самых важных навыков профессионального разработчика. Следование общепринятым правилам позволяет:

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

  • Ускорить процесс разработки. Применение многократно опробованных шаблонов и подходов помогает быстрее писать типовой код и решать распространенные проблемы.

  • Упростить совместную работу, ревью кода и интеграцию изменений. Особенно в больших командах и опенсорсных проектах.

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

Привет!

Всю неделю мы мониторим интернет, чтобы в воскресенье прислать тебе интересное письмо. Наша цель – держать читателей в курсе последних открытий и тенденций в мире Python. В еженедельных письмах ты найдешь:

  • Новые возможности в последних версиях Python

  • Работа с базами данных и SQL в Python.

  • Веб-разработка на Django и Flask.

  • Машинное обучение и анализ данных с помощью Python.

  • Автоматизация и работа с API на Python.

  • Тестирование и отладка кода на Python.

  • Задачи для новичков с решениями.

📧 Подпишись, чтобы быть в числе первых, кто получит дайджест

Вот что входит в набор общепринятых на данный момент правил:

  • Устанавливайте Python с поддержкой нескольких версий. Используйте mise или pyenv для установки Python – они дают возможность переключаться между разными версиями языка и позволяют обновлять интерпретатор без влияния на другие инструменты и проекты. Еще один отличный вариант – Development Containers.

  • Используйте последнюю версию Python. Для новых проектов выбирайте самую последнюю стабильную версию Python 3. Это обеспечивает наличие последних исправлений безопасности и максимальную производительность. Обязательно обновляйте проекты по мере выхода новых версий языка и забудьте про Python 2.

  • Используйте pipx для запуска приложений в среде разработки. Вместо установки пакетов с помощью pip или другого аналогичного метода используйте pipx для запуска инструментов в отдельной виртуальной среде.

  • Не используйте Poetry для новых проектов – в нем нестандартно реализованы некоторые ключевые функции. Лучше пользоваться PDM или Hatch.

  • Создавайте файл pyproject.toml в корневой директории каждого проекта – для хранения информации о конфигурации и используемых инструментах.

  • Используйте src-структуру для каталогов. Это требует использования редактируемых установок, но PDM и Hatch упрощают задачу.

  • Используйте виртуальные среды для разработки. Виртуальная среда изолирует проекты и наборы установленных для них пакетов – не будет никаких конфликтов.

  • Применяйте файлы requirements.txt для установки пакетов в среду – вместо использования команды pip. Либо используйте PDM или Hatch для управления пакетами.

  • Используйте инструмент для форматирования кода и линтер для проверки на ошибки. Самый популярный форматер Python-кода – Black, а самый известный линтер – flake8. Однако их с успехом можно заменить одним мощным и быстрым инструментом – Ruff.

  • Применяйте pytest для тестирования, а в ситуациях, где это невозможно – используйте стандартный модуль unittest.

  • Используйте PyInstaller для упаковки приложений в исполняемый файл. А свои пакеты публикуйте в виде wheel, чтобы другие разработчики могли загружать их с помощью pipx и pip-sync.

  • Используйте аннотации типов – особенно в важных приложениях и библиотеках. Для проверки вам пригодится mypy, а для интеграции этого инструмента с Pydantic – плагин.

  • Форматируйте строки с помощью f-строк, а не с использованием %, str.format() или str.Template().

  • Всегда используйте объекты datetime, которые знают о временных зонах. По умолчанию Python создает объекты datetime, которые не включают временную зону.

  • Применяйте enum или collections.namedtuple() для неизменяемых наборов пар «ключ-значение».

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

  • Используйте collections.abc для пользовательских типов коллекций. Абстрактные базовые классы в collections.abc реализованы на C и работают очень быстро.

  • Применяйте breakpoint() для отладки. Эта функция создает точки останова, которые могут использовать и встроенный отладчик, и внешние инструменты отладки.

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

  • Применяйте формат TOML для конфигурационных файлов – если они предназначены для людей. Используйте формат JSON для данных, которые передаются между компонентами приложения.

  • Используйте async только там, где это необходимо. Асинхронные возможности Python позволяют одному процессу избегать блокировки на операциях ввода-вывода. Для запуска нескольких процессов нужно использовать контейнеры или сервер Gunicorn. Чтобы создать собственное приложения для управления многочисленными процессами, воспользуйтесь этим стандартным пакетом.

  • Обрабатывайте ввод из командной строки с argparse. Модуль argparse теперь является рекомендуемым способом обработки ввода вместо устаревших optparse и getopt.

  • Для указания путей к файлам и каталогам используйте pathlib, а не строки.

  • Используйте os.scandir() вместо os.listdir(). Функция os.scandir() значительно быстрее и эффективнее, чем os.listdir().

  • Запускайте внешние команды с subprocess. Модуль subprocess предоставляет безопасный способ запуска внешних команд. Используйте его вместо spawn, popen2 и popen3.

  • Используйте httpx для клиентских приложений. Пакет httpx поддерживает HTTP/2 и async и заменяет requests, который работает только с HTTP 1.1.

🐍 Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»

📒 Google Colab или Jupyter Notebook: что лучше подойдет для новичка

Jupyter Notebook обладает массой очевидных достоинств:

  • Позволяет выполнять код по частям и мгновенно видеть результаты.

  • Поддерживает большинство популярных библиотек.

  • В блокнотах легко визуализировать данные и форматировать текст.

  • Устанавливается локально, работает без подключения к сети.

Облачный сервис Google Colab предоставляет похожую функциональность – код можно писать и выполнять в браузере – и несколько дополнительных преимуществ:

  • Использование GPU/TPU.

  • Удобное меню навигации по файлу.

  • Возможность совместной работы над проектом – настойка доступа и синхронизация работают точно так же, как в документах Google.

Итоги недели в мире Python и обзоры новых сервисов: история создания Python и лучшие практики разработки Программирование, IT, Инновации, Python, C++, Rust, Видео, Длиннопост, YouTube, YouTube (ссылка), Разработка

Подробнее о преимуществах и начале работы в Google Colab – в этой статье на Хабре

🕸️ Веб-разработка

«Как настроить уведомления в Django с помощью сигналов: пошаговое руководство» рассказывает обо всех тонкостях работы с сигналами, которые запускают выполнение нужных действий после совершения определенных манипуляций с моделями. Например, сигнал может:

  • Запустить автоматическое создание профиля пользователя после регистрации.

  • Отправить уведомление о заполнении формы, появлении нового отзыва, получении сообщения.

  • Обновить данные в связанных моделях.

  • Сделать запись об изменении статуса объекта.

«Создание собственного API на Python (FastAPI)» – простой и понятный туториал для начинающих.

Итоги недели в мире Python и обзоры новых сервисов: история создания Python и лучшие практики разработки Программирование, IT, Инновации, Python, C++, Rust, Видео, Длиннопост, YouTube, YouTube (ссылка), Разработка

API предоставляет данные о студентах

🧩🐍 Интересные задачи по Python для практики можно найти на нашем телеграм-канале «Библиотека задач по Python»

«Безопасность в Django: защита от распространенных угроз веб-приложений» – рассказывает о самых распространенных типах атак (SQL-инъекциях, межсайтовой подделке запросов, кросс-сайтовом скриптинге, DoS и DDoS) и очень подробно разбирает способы защиты от них.

Итоги недели в мире Python и обзоры новых сервисов: история создания Python и лучшие практики разработки Программирование, IT, Инновации, Python, C++, Rust, Видео, Длиннопост, YouTube, YouTube (ссылка), Разработка

Настройка nginx для защиты от DDoS

📈 Как улучшить производительность Python

Беспрецедентное развитие ИИ сделало Python суперпопулярным языком – и поставило исключительно сложную задачу перед ведущими инженерами: как увеличить скорость работы Питона, не жертвуя его простотой и гибкостью. Одним из решений проблемы стал перенос критически важных для производительности частей кода на более быстрые языки – C, C++ и Rust. Для упрощения совместного использования Python и Rust разработчик Дэвид Хьюитт создал PyO3. В этом интервью он подробно рассказал о сложностях разработки такого проекта и его впечатляющих возможностях.

Как преодолеть разрыв

Интеграция Python и Rust – нетривиальная задача, поскольку эти два языка имеют принципиально разные подходы к управлению памятью, потоками и обработке ошибок. Однако PyO3 решает эти проблемы, используя мощные возможности Rust и C-образную архитектуру интерпретатора Python.

В основе PyO3 лежит концепция сопоставления функций и структур Rust их аналогам в Python. Используя процедурные макросы, PyO3 генерирует необходимый код для создания совместимых с Python объектов и функций, позволяя разработчикам Python легко взаимодействовать с компонентами на базе Rust. Этот подход позволяет программистам на Python воспользоваться преимуществами производительности и безопасности Rust без необходимости глубоко погружаться в тонкости языка.

Безопасность памяти и время жизни объектов

Одна из ключевых задач при объединении Python и Rust – обеспечение безопасности памяти. Система проверки заимствований и времени жизни объектов в Rust играет в этом отношении важную роль. PyO3 использует аннотации времени жизни Rust для управления владением и временем жизни объектов Python, гарантируя, что ссылки на объекты Python являются действительными, а доступ к памяти не осуществляется после ее освобождения. Это внимание к безопасности памяти является существенным преимуществом использования Rust в контексте оптимизации производительности Python. Обеспечивая эти гарантии во время компиляции, PyO3 помогает разработчикам избежать распространенных ошибок и уязвимостей, связанных с памятью, которые могут возникать при использовании привязок C/C++.

Обработка ошибок и производительность

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

Потоки и асинхронность

Одна из самых сложных областей интеграции Python и Rust – обработка потоков и асинхронности. Асинхронная модель Rust с async/await и глобальная блокировка интерпретатора (GIL) Python представляют собой уникальные проблемы, которые команда PyO3 активно решает. Разработчики исследуют различные подходы к преодолению разрыва между моделями параллелизма Rust и Python, в том числе использование типов Rust Send и Sync для обеспечения безопасного обмена данными между потоками, а также обеспечение бесшовной совместимости между асинхронными средами выполнения Rust и циклами событий Python.

🐍💼 Подтянуть свои знания по Python вы можете на нашем телеграм-канале «Библиотека собеса по Python»

Автор рассылки: Наталья Кайда

📧 Подписаться на рассылку

Показать полностью 3 1
Программирование IT Инновации Python C++ Rust Видео Длиннопост YouTube YouTube (ссылка) Разработка
2
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии