Как начать играть в Майнкрафт с помощью TLauncher
Чтобы начать играть в такую интересную игру Minecraft, достаточно установить наш лаунчер, который помимо запуска самой игры, улучшит сам игровой процесс множеством интересных функций! Активная поддержка программы говорит о том, что крутых фишек будет только больше.
А вот и небольшая инструкция, о том, как запустить Майнкрафт:
2) В установщике достаточно нажимать «Продолжить«, по окончанию TLauncher запустится:
3) В лаунчере в поле с лева, вводим ваш логин/ник. Выбираем версию игры для установки, лучше оставить первую — новейшую версию:

4) Начнется загрузка необходимых файлов Майнкрафт:

5) По завершению скачивания файлов, игра будет запущена. Можно спокойно начать ваше путешествие по кубическому миру:

6) Рекомендованные гайды к изучению:
Если что-то не понятно, запросите поддержку у TLauncher:
Java для Майнкрафт / TLauncher [Windows/MacOS/Linux] [32/64x]
Для запуска нашего лаунчера и самой игры Minecraft, у вас обязательно должен быть установлена Джава. На данной странице, вы узнаете все основные подробности установки. На всё это у вас уйдёт не много времени, а в результате получите доступ к одной из самых популярных игр в истории. Дополнительно, узнайте какие версии Java используют новые и старые версии игры.
Важная информация
Для TLauncher нужна именно Java 8! В некоторых Linux системах работает и с Java 11.
Рекомендованная версия Джава для Minecraft (1.16.5 и ниже) на Windows: Java 8 Update 51 (приоритет) или Java 8 Update 45.
Рекомендованная версия Java для Майнкрафт (1.16.5 и ниже) на MacOS/Linux: Java 8 Update Последний.
Рекомендованная версия Джава для Minecraft (1.17 и 1.17.1) на Windows: Java 16 (используемая разработчиками игры).
Рекомендованная версия Java для Майнкрафт (1.17 и 1.17.1) на MacOS/Linux: Java 16 (используемая разработчиками игры).
Рекомендованная версия Джава для Minecraft (1.18 и выше) на Windows: Java 17 (используемая разработчиками игры).
Рекомендованная версия Java для Майнкрафт (1.18 и выше) на MacOS/Linux: Java 17 (используемая разработчиками игры).
ВНИМАНИЕ : TLauncher автоматически* использует нужную версию Java рекомендованную разработчиками игры: для версии игры 1.18 — Java 17, для игры 1.17 — Java 1.16, для игры 1.16.5 и ниже — Java 8 Update 51. Поэтому, не нужно вручную устанавливать Java 16 или 17! Если происходит ошибка запуска связанная с Java, то проверьте в настройках лаунчера (Иконка «Шестеренки» -> «Настройки»), что стоит «Выбор Java» на «По умолчанию«. Если стоит другая версия, лаунчер будет пытаться запустить каждую версию от нее и может быть ошибка! Меняйте это, если понимаете для чего.

* Нужно использовать актуальную версию TLauncher 2.84 и выше.
Где скачать Java 8
MacOS*: Java MacOS x64 (MacOS 10.7.3 и ВЫШЕ версии!);
Где скачать Java 16
Где скачать Java 17
* Все версии взяты с официального сайта Java, не было внесено никаких изменений, подписаны цифровой подпись Oracle!
Установка Java в Windows (XP, 7, 8, 10, 11)
1) Определяем разрядность вашей системы — x32 или x64, если знаете, переходите к следующим пунктам. Если нет, то открываем «Мой компьютер» -> в верхнем меню (Компьютер) ищем «Свойства системы» и кликаем на эту кнопку.

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

2.1) Если указано «32-разрядная операционная система, процессор x64«, то рекомендуется переустановить Windows используя разрядность x64, так как процессор ваш поддерживает. В противном случаи, x32 обладает ограничениями на выделения оперативной памяти!
3) Определив вашу разрядность, скачиваем версию Java для x32 или x64 по ссылкам выше.
4) Запускаем скаченный установщик и нажимаем на кнопку «Install«. Произойдёт установка и теперь ваш компьютер готов к работе с Minecraft/TLauncher.

Установка Java в MacOS
1) Скачиваем версию Java под MacOS x64 по ссылке выше.
2) Запускаем скаченный образ DMG и запускаем в нём пакет установки PKG:

3) В первых двух окнах просто нажимаем «Продолжить«:

4) Как всегда, при установке в Мак ОС, вводим пароль:

5) Готово! Теперь у вас установлена Java на OS X.

Установка Java в Linux
Установка Java в Ubuntu для TLauncher/Minecraft
1) Открываем Терминал и выполняем стандартные sudo apt-get update , а после sudo apt-get upgrade .
2) Устанавливаем Java: sudo apt install openjdk-8-jdk и соглашаемся Y на установку.

3) Скачиваем Linux версию лаунчера и распаковываем архив с .jar файл в любое место (Архив .zip распаковываем, но не сам .jar!)
4) Запускаем лаунчер командой sudo java -jar /home/user/Downloads/TLauncher-2.83.jar . У вас будет другой путь, смотря куда положили файл! Будут скачены нужные файлы и запущен лаунчер:

Установка Java в Debian/Mint для TLauncher/Minecraft
1) Открываем Терминал и выполняем стандартные sudo apt-get update , а после sudo apt-get upgrade .
2) Устанавливаем саму Java: sudo apt install default-jdk и соглашаемся Y на установку.

3) Скачиваем Linux версию лаунчера и распаковываем архив с .jar файл в любое место (Архив .zip распаковываем, но не сам .jar!)
4) Запускаем лаунчер командой sudo java -jar /root/Downloads/TLauncher-2.83.jar . У вас будет другой путь, смотря куда положили файл! Будут скачены нужные файлы и запущен лаунчер:

Установка Java в Fedora/CentOS для TLauncher/Minecraft
1) Открываем Терминал и выполняем стандартные sudo yum update и обновляем.
2) Устанавливаем Java: sudo yum install java-11-openjdk и соглашаемся Y на установку.

3) Выполняем команду sudo update-alternatives —config java и указываем в поле число соответствующей версии Java 11, чтобы установить её по умолчанию. Проверяем с помощью java -version , что выводит Java 11:

4) Скачиваем Linux версию лаунчера и распаковываем архив с .jar файл в любое место (Архив .zip распаковываем, но не сам .jar!)
5) Запускаем лаунчер командой sudo java -jar /home/user/Downloads/TLauncher-2.84.jar . У вас будет другой путь, смотря куда положили файл! Будут скачены нужные файлы и запущен лаунчер.
Решение проблем при установке Java
1) Не запускается установщик Java, без ошибок и окон.
1.1) Пробуем полностью перезагрузить компьютер и запустить снова установщик.
1.2) Если перезагрузка не помогает, нужно переустановить вашу ОС (Windows и т.д.), так как она сломалась.
Как запустить Tlauncher на Linux?
Ещё очень давно, уже в далеком 2011 году вышла знаменитая по сей день компьютерная игра под названием Minecraft основанная всего одним разработчиком, чуть позже компания Mojang AB была выкуплена мировой компанией Microsoft.

Как же нам запустить Tlauncher на linux ? Проще некуда! Я использую систему на базе Ubuntu, всю установку можно описать всего в несколько шагов.
1. Переходим на официальный сайт Tlauncher(а) или качаем jar архив по этой ссылки, сразу после нажимаем на большую кнопку «Скачать Tlauncher» и выбираем версию для Linux, если только вы не скачали jar архив по второй ссылки.
2. Переходим в терминал и вводим данную команду для установки Java в linux:
$ sudo apt update && sudo apt install openjdk-8-jdk

3. Действие с jar-архивом который был скачен, перетащите его на рабочий стол, кликните правой кнопкой мыши, далее свойства > Права

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

Успех! Теперь правой кнопкой мыши по нашему jar-архиву > открыть с помощь… и выбираем приложение «open-JDK java 8» и на этом все, лично установка не заняла у меня более 2-ух минут


Вот мы установили Java и запустили Tlancher на ядре Linux, счетчик кадров завышается больше чем на Windows, но это и логично, мы не запускаем данную игру через Wine, а делаем это средствами системы. Надеюсь статья вам понравилась! Играйте на здоровье

1 год назад
Во-перввх зачем инструкция, если Майнкрафт под Линуксом ставится проще чем под виндой? Всё делается и без консоли. Во-вторых: последние версии требуют java17 минимум
раскрыть ветку
1 год назад
я когда нажимаю правой кнопкой мыши на архив нет кнопки »свойства» или «права»
раскрыть ветку
Похожие посты
2 дня назад

Когда первый раз пытаешься выйти из Vim
13 дней назад
Вторая жизнь старым ip-tv приставкам
В даном посте хотелось бы затронуть тему древних IP-TV приставок, которые не поддерживают обновления приложений и т.д. Началось всё с того, что мне в руки попала древняя приставка MAG250, он же AuraHD, которые давным давно выдавались провайдерами. Именно у меня версия от infomir. Приставка работает на линуксе, а не на андроиде. В силу этого — своего как такового магазина приложений у мага нет. Когда-то он был, но в силу времени поддержка порталов с возможностью установки из них приложений давно прекращена.
На данный момент приставка в своём «стоковом» виде имеет возможность только показывать iptv из плейлиста, загруженного в него ссылкой. Перелопатил я не мало форумов, сайтов, связанных с этой приставкой и порталами к ней. Нигде не нашёл информации, которая была бы мне полезна. Но вот не так давно наткнулся на такой сервис, как «Лампа». Лампа собой представляет онлайн-кинотеатр. Возможно, кому-то будет этот пост полезен, далее распишу настройку «софтины».
- В настройках приставки прописываем портал http://lampa.mx, как прописать портал на вашей приставке — можно посмотреть в гугле и ютубе, на каждой приставке разные менюшки, кому нужно будет руководство конкретно по МАГу — дайте знать в комментариях, распишу.
- Перезапускаем портал, выбираем язык, на котором Вам будет удобно.
- Переходим во вкладку «расширения» в настройках, где подгружаем TMDB прокси, этот плагин всегда один из первых в рекомендуемых.

4. Нажимаем «добавить плагин», прописываем ссылку http://lampa.stream/modss Перезагружаем портал Пользуемся! Может быть только заминка с балансером (сервер с которого будет тянуть фильм), там выбираем Резку, и не знаем бед.

Для андроид приставок и телевизоров — скачиваем Media Station X, и прописываем всё тот же портал http://lampa.mx
Показать полностью 2
14 дней назад
Дорогу осилит идущий
Я учу людей языку программирования Java. Бесплатно. Совсем бесплатно. Прям даром. И даже без рекламы. Совсем без рекламы. Вот вообще.
Ссылка на тг: Дорогу осилит идущий. Java
С чего все началось: Помогу с изучением Java. Бесплатно. Не реклама:)
В свое время я опубликовал пост, в котором предлагал помощь в изучении Java всем желающим. Сегодня этой инициативе исполняется год.

Год бесконечных, по крайней мере, в моем восприятии, статей, обсуждений и ревью. Год новых знакомств, холиваров и необычного опыта.
Год, за которое сформировалось уютное, как мне кажется, и живое комьюнити. Комьюнити, готовое помогать новичкам в чатах, отвечать на вопросы и делиться опытом.
В этом посте не будет итогов или стенаний об усталости. Лишь благодарность людям, которые поддерживали меня и канал все это время.
Тем, кто готов делиться знаниями и тратить на это свое время. Совсем недавно мы провели первый вебинар и в скором времени планируем второй. Надеюсь, все участники остались довольны:)
Тем, кто готов разбавлять публикации уроков чем-то необычным — например, интервью с подписчиком. Кажется, оно получилось отличным и, во многом, мотивирующим.
Тем, кто добровольно вычитывает статьи, находя бесконечные грамматические ошибки. Именно благодаря этим людям я кажусь не совсем безграмотным:)
Тем, кто задает вопросы и искренне пытается разобраться в изучаемых темах. И тем, кто на эти вопросы отвечает и не менее искренне пытается помочь.
Тем, кто пишет слова благодарности и поддержки.
Именно благодаря всем этим людям «Дорогу осилит идущий» живет и развивается.
Мы уже прошли долгий путь — от самых основ синтаксиса, через Java Core, многопоточность и SQL. Начали знакомство с системами сборок.
Конечно, идти хотелось бы быстрее. И поэтому отрадно видеть людей, которые начинали (или продолжали), когда канал только зарождался, а теперь уже стали Java-разработчиками. Они все еще в пути, но уже намного дальше:) Вдвойне приятно, когда эти люди остаются активны и уже сами помогают новичкам. Или пишут и советуются уже по вопросам, связанным с коммерческой разработкой.
А у нас все еще впереди. И свою дорогу мы тоже проползем пройдем!
Как и всегда, буду искренне рад тем, кто захочет присоединиться:) Вместе шагать веселее
P.S. Когда-то я говорил, что блек джек и шлюхи тоже будут. У ребят, которые устроились на работу — уже есть, для остальных — пока только показываем

Показать полностью 2
30 дней назад

Дикая природа IT удивительна
Взято из телеграмма — Инкогнито

Показать полностью 1
Поддержать
1 месяц назад

Ответ на пост «Как я стал программистом в 32 года. Отработал 1 год. Стоит ли оно того?»
Короткий рассказ.
Скорее нет, особенно вначале.
Можно ли получать удовольствие?
Изменяется ли личность?
Да, но у всех по-своему. Иногда это пугает.
Это спокойная работа?
Нифига, нервы нужны крепкие.
Про общение с неприятными людьми можно забыть?
И опять нет, вам хватит руководителей, а заказчики ещё та песня.
Можно ли работать на удаленке?
100% , если вы готовы.
Новые друзья и крутая тусовка прилагаются?
Зависит от выбора компании и отдела в ней.
А что тогда в этом хорошего?
Мой ответ таков, что, умея программировать, я могу наделать себе интересных пет-проектов для души, и чего я всегда желал. Например. Чат бот на языковой модели GPT. Или это. Обучение с подкреплением для биржевой торгашки.
Длинный рассказ.
Я тоже только в 32 стал прогать на работе.
Но не так жестоко было всё. Не с нуля, не из менеджерской роли.
Образование социологическое, диплом по количественным методам. На красную пятёрку. Правда, когда спустя лет 8 я связался с профессором социологии из Урбане-Шампейне, на чьей статье я развивал тему, оказалось, что мой подход был почти полностью калом, с его точки зрения.
А, ну ещё в школе еле вытянул факультатив на бейсике. Вообще с логикой проблемы были лет до 30-35.
6 лет аналитиком данных (эксель), SPSS. И другие статистические пакеты с графическим интерфейсом. Прокачивал скорее матчасть в области анализа, нежели чистую техничку.
Понадобились макросы. Открыл IDE в экселе и прямо такое приятное чувство испытал, когда за долбанными таблицами скрывается ЯП и море возможностей. Visual Basic, если что. Через месяц я написал аж программу, которая прогнозирует продажи и даже общается с 1С.
Потом понадобилось сделать такую штуку для маркетинга, как ассоциированные продажи. Установил R. Про их IDE понятия тогда не имел. Научился в командной строке делать моделирование (a priori). Получилось.
Параллельно прошёл бесплатный курс по SQL , базовые вещи. Начал слегка шурупить в реляционных базах.
На работе застой с повышениями. Плюс антикризисное управление. А у меня кредит большой. Через хаха получил приглашение на мидла статистика. Три вечера читал про проверки гипотез. Собес прошёл. Дали тогда 90 на руки, это 2014 был. Это было не больше, чем я получал. И в карьере бывал и старшим и руководителем группы. Короче, дауншифтнулся конкретно, лишь бы из маркетинговых исследований и анализа свалить.
Сил в 30 лет дофига ещё.
На новой работе начал фигачить нормальную взрослую статистику. Rstudio, и много сложных запросов. Самый прикол — без хороших коллег профессиональный рост очень медленный. Мне дядька у соседнего компа пару раз подсказал по БД и реально как лампочка зажглась в голове.
Потом подняли до старшего, ЗП 115 или 120. Было покомфортнее. Через три года я ушёл по личным причинам плюс менеджеры подпалили мне седло, да и однообразие задач стало добивать просто нереально. Но писал запросы я уже с нормальной оптимизацией.
На новой работе был мидлом с зп 200. Прошёл курс Advanced R (а на ступеньку ниже уже давно прошёл). Курсы от C. a. Там был сложный проект, который я взялся писать на R. За почти полтора года где-то 10-12 тыщ строк. Ушёл по . личным причинам. К меня ещё с эмоциальной стабильностью не всё отлично.
Потом ещё переход на другую работу, там уже были 220 ЗП. Задачи разные, интересные, много исследований. Подключил Python. Ушёл с — бее — Винды и плюсовой среды версионирования на линукс. Наигрался в машинное обучение, глубокие сети. Большие данные немного.
И тут я подзастрял в своей ракушке комфорта. Ну и уже на Python уровень мидла сделал. И 8 лет на R, сениористость детектед.
Выгораний было дофига. В моём случае, в основном, от общения с манагерами. Переход на полную удаленку сделал меня хуже. Хотя через пару лет стало привычно. Как теперь ежедневно бежать в офис на какой-то дейлик я ХЗ!
Не жалею, что ушёл из экселя и маркетинга, там душновато прямо бывало. И ещё раз. Нужны полезные люди вокруг. Меня предупреждали, что в ИТ зае. Ну вы поняли, от однообразных задач. Потом эту же теорию высказал один эксперт: он свалил в Европы за интересной работой, и уже оттуда ныл, что всё уже видел и опять то же самое и тд.
И я вас предупреждаю об этом. А ещё о том, что учить новое надо будет постоянно, если хотите карьерной мобильности. А если вы не гений, то удовольствие от новых вещей вы начнёте получать совсем не сразу а фрустрацию — как раз сразу. А если ещё лид попадётся, повёрнутый на «модненьких штучках», вы будете страдать.
То есть вместо борьбы не на жизнь, а на смерть за руководящую должность я получил через 4 года работу, к которой больше лежит душа. Только живот отрос в процессе.
Показать полностью
Поддержать
1 месяц назад
Как я стал программистом в 32 года. Отработал 1 год. Стоит ли оно того?
Ровно год назад в возрасте 32 лет я получил свой первый оффер и устроился в IT-компанию на должность Junior-разработчика на языке Java, где отработал 3 недели, после чего уволился. Это не история успеха, после которой будут ссылки на какие-либо курсы, это всего-лишь личный опыт человека (то есть меня), который до 32 лет работал инженером в строительной области, но в один момент решивший изменить если не всё, то точно существенную часть своей жизни.
Ранее я подробно рассказывал о том каким был мой путь: как возникли мысли стать программистом в 30+ лет, как и где я учился, а также сколько времени ушло на обучение и насколько сложно было найти первую работу. Если очень кратко, то вот основные тезисы из прошлых постов:
- Бэкграунд в программировании: ноль, но в плане ПК я продвинутый юзер, то есть могу переустановить винду, найти и установить драйвера и вот это вот всё.
- Учился я под присмотром ментора.
- Теорию смотрел на YouTube, либо в дешевых курсах с площадки на букву U.
- Закреплял знания на практике, выполняя небольшие пет-проекты, задания к которым мне выдавал ментор. Если кому-то интересно, то могу скинуть ссылку на задания в комментариях.
- На учебу ушло 7,5 месяцев или 1000 часов обучения.
- У меня была накоплена финансовая подушка, которая позволила полностью отказаться от основной работы и бросить все силы на обучение.
- Сделал 700 откликов на hh, прежде чем получил первое приглашение на работу.
Если не лень читать подробные посты на эти темы, то оставлю ссылки ниже:
- Как я стал разработчиком с нуля в 32 года
- Про первую работу джуном и первое увольнение спустя 3 недели
Так уж получилось, что первая работа оказалось абсолютно не тем, чего я ожидал от работы в новой для себя IT-сфере: легаси-проект, максимально бесполезные (с точки зрения профессионального развития) задачи, а также зарплата, на которую невозможно было прокормить семью. Но мне повезло: спустя 3 недели после того, как я попал на свою первую работу, мне написала HR с другой компании и пригласила на собеседование. Проект на свежих технологиях, зарплата почти в 2 раза выше. И да, меня взяли.
Абсолютно без всяких сожалений я написал заявление «по собственному» и ушел одним днем. Помню, как рядом сидящий джун (студент) мне говорил: «Ну и зря ты увольняешься. Где ты ещё без опыта найдешь работу начинающим разработчиком, так ещё и на такую нормальную зарплату». Согласен, для студента, который живет с родителями, 45000р — это может и нормальная зарплата, но не для семейного человека, за плечами которого жена в декрете, маленький ребенок и съемная квартира.
Итак, я ушел в другую компанию. На новом месте меня всё более чем устраивало: приятный и дружелюбный коллектив, проект с нормально написанным (на первый взгляд) кодом, адекватные моему уровню задачи и зарплата, на которую уже можно хоть как-то жить.
Я попросил читателей моего небольшого блога накидать мне в комментариях вопросов, которые их интересуют, ведь мне есть чем поделиться. Перед началом обучения, да и в процессе обучения я сам искал подобные статьи, так как было безумно интересно узнать: а как оно всё на самом деле в этом вашем IT, так ли всё круто, как нам рисуют маркетологи различных IT-курсов, как проходит день разработчика и реально ли работать на берегу океана с макбуком на коленях? Кстати, идея работать на берегу океана — это отстой на мой взгляд, какая бы это работа ни была. А теперь отвечу на вопросы читателей, разбив их на 3 блока: обучение, работа, общие вопросы.
== Про работу ==
Среди коллег есть те, кто вошел в эту профессию в возрасте 35+ или даже 40+ ?
Как ты себя ощущал в первые дни на работе?
В принципе на любой новой работе мне в первые несколько недель всегда не очень комфортно. Но если раньше это было в большей степени связано с новым коллективом, то здесь новым было практически всё. Когда мне дали первую задачу, я смотрел в экран монитора и вообще не понимал что от меня требуется, что происходит в этом коде и как сформулировать вопрос, чтобы меня не посчитали совсем уж тупым. Я работал в офисе и ежедневно по утрам проводились встречи (которые называют дэйликами), где каждый член команды рассказывал над чем работает в данный момент и какие есть проблемы. Для меня это было максимально стрессовое время, так как мне было непонятно абсолютно всё, но как задать конструктивный вопрос я не знал, поэтому был немногословен.
Расскажи про рабочий процесс: как получаешь задачи, от кого, как и перед кем отчитываешься, несколько примеров своих задач, состав команды?
В первые дни на первой работе мне дали ссылку на репозиторий, чтобы я ознакомился с проектом. Я смотрел на громадные классы со сложной бизнес-логикой, знакомился с БД, смотрел какие таблицы там есть, связи между ними. Первой задачей было найти и устранить баг: было задвоение информации в базе данных. Нужно было SQL-командой удалить задвоенную информацию. Кстати, на первой работе, где я отработал 3 недели — я не написал ни одной строчки кода, соответственно не сделал ни одного коммита. Всё задачи были связаны с БД.
На своей текущей работе задачи получаю из бэклога или тех.долга в Jira. После завершения задачи происходит код-ревью другим разработчиком (все ревьюят друг друга), после чего задача переходит в стадию тестирования. Каждый отчитывается о статусе своих задач на ежедневном созвоне. В команде 3 бэкенд-разработчика (один из них Senior, другой выполняет роль архитектора), 3 тестировщика, 1 проект-менеджер.
Примеры задач: отпилить от монолита часть логики и сделать отдельный микросервис, настроить логирование в нужном формате, настроить трейсинг, написать микросервис, который по расписанию будет забирать данные из БД, отправлять на сторонний API, получать данные и записывать в БД, привести в соответствие swagger и документацию в Confluence, покрыть код unit и интеграционными тестами. На прошлой работе писал ci/cd пайплайны для сборки образов и деплоя.
На второй работе в числе первых задач нужно было написать Kafka-продюсеры и консюмеры с несложной логикой обработки сообщений, а также изменить поля у DTO-моделей.
Была ли помощь более опытных коллег?
В первые дни на любой из работ я всегда спрашивал кого я могу спрашивать по проекту. Это нормально, особенно в первое время. Я всегда, когда это было необходимо, получал помощь или как минимум совет от более опытных товарищей. Старался спрашивать вопросы именно по самому проекту и его логике, а не по техническим моментам, которые можно легко загуглить, типа: «как переключиться на другую git-ветку».
Было ли разочарование из категории «ожидания — реальность». Когда работа на деле оказывается не настолько интересной, как кажется в начале пути?
Многое зависит от проекта и команды. Было разочарование, когда я попал на первую работу на легаси-проект с ужасным кодом. Но что касается второго и третьего места работы, то реальность совпала с ожиданиями. Работа над пет-проектами, как оказалось, была максимально похожа на реальную работу. Только всё на порядок сложнее, но это компенсируется зарплатой, а также возможностью обсудить проблему с коллегами. Ощущение, что я продолжаю обучаться, но теперь за это ещё и платят. В общем разочарования нет, работаю по большей части в удовольствие, но тот самый первый восторг от работы программистом уже ушел, привык что ли.
Расскажи какие трудности были на работе или они есть до сих пор?
Я бы не назвал это трудностью, скорее специфика отрасли — постоянно приходится изучать что-то новое, гуглить или спрашивать Chat GPT. На новом (уже третьем) месте работы практически каждая новая задача требует от меня того, чтобы я посмотрел часовой урок/доклад на YouTube или хотя бы прочитал статью на эту тему. В начале меня пугала эта неизвестность, сейчас это уже норма. Я больше начинаю переживать, если задачи закрываются, а я не узнаю при этом ничего нового себя, ведь это никак не способствует росту и, соответственно, повышению зарплаты. Собственно именно поэтому я ушел со второго места работы, так как было однообразное перекладывание json’ов и crud-операции.
Как происходило вливание в коллектив?
Я успел поработать как в офисе, так и удаленно. Мне было комфортно начинать работу в офисе, когда видишь коллег вживую и можешь пойти поболтать с ними на кухне за кружкой чая. А вот начинать работу в коллективе, когда слышишь только голоса (созвоны без камер) лично мне менее комфортно, но со временем привыкаешь и создается впечатления, что знаком с человеком лично. С одним из коллег договорились встретиться через пару недель, он приезжает отдыхать в город, где я живу.
Я не скрываю того факта, что стал разработчиком относительно недавно, все абсолютно нормально к этому относятся (даже на этапе собеседований). Никаких ущемлений не заметил. Более того на прошлой работе есть несколько людей, кто пришел в разработку в 35, 37 и даже в 40+ лет.
Что ожидает новичков, о чем мы не догадываемся и чему нам стоит больше уделять внимания? Насколько начал расти скилл и начал ли вообще расти?
Возможно, ожидают скучные, неинтересные и однотипные задачи. Повторюсь, зависит от проекта. Но когда ищешь первую работу, выбирать не приходится, обычно соглашаешься на первое предложение.
На счёт роста скиллов: пет-проекты – это, конечно, хорошо, но только на реальной работе можно столкнуться с проблемами высоконагруженных приложений и большого объема данных. Естественно, в процессе решения таких проблем растет скилл, а также скилл работы в команде, ведь приходится взаимодействовать с другими разработчиками, аналитиками, тестировщиками, инженерами devops.
Интересно было бы узнать какой уровень разработчиков, которые встретились вам на работе, насколько им вообще интересно расти, повышать ЗП, менять должности, насколько они активны?
Джуны, миддлы, сеньоры, архитекторы. Встретил только одного парня, который активно проходил собесы и в итоге ушел в другое место с повышением ЗП в 2 раза. Основная масса коллег — работает на одном месте годами с небольшой индексацией ЗП каждый год. Как сказал мне один из коллег: «Для меня прохождение собеседований — это выход из зоны комфорта. Тут я всё знаю, коллектив устраивает, а что будет в другом месте? Вдруг там всё плохо, что прибавка к ЗП не компенсирует этого?».
Отличался ли стек в вакансии, от стека на работе, по вашему опыту?
В моем случае всё, что было заявлено в описании вакансии оказывалось правдой. О легаси также открыто писали в вакансии и говорили на собеседовании.
Как растет понимание процессов, технологий после того, как устроились на работу, в сравнении с обучением или возможно наступает однообразие и роста нет?
Год назад ничего не знал о процессах, сейчас общее понимание присутствует в контексте всего цикла жизни проекта: анализ, планирование, разработка, тестирование, развертывание, поддержка. За 10 месяцев работы наступило некоторое однообразие в плане задач и остановка активного развития, что сподвигло меня на смену компании и даже языка программирования (Java -> Kotlin).
Какие ощущения после года работы? Считаете ли вы, что смогли достаточно узнать, чтобы закрепиться плотно в этой сфере и теперь уверенно развиваться вперёд, не боясь конкуренции по сравнению с теми, кто заканчивает институты по этой вакансии?
Определенно появилась некоторая уверенность в своих силах. Многого не знаю, но как показывает опыт — во всем можно разобраться, ведь в интернете в любом случае уже кто-то решал подобную или похожую проблему. Периодически пишут HR с предложениями пройти собеседование, иногда соглашаюсь и прохожу для опыта.
== Про обучение ==
Как считаете, ваш опыт работы инженером как-то повлиял на скорость обучения Java-разработке?
Безусловно повлиял. Инженерный склад ума, дружба с математикой, любовь к различного рода логическим задачкам, а также прошлая инженерная деятельность позволили в достаточно сжатые сроки освоить необходимый материал для трудоустройства. Но у меня есть знакомый (37 лет), который был максимально далек от математики, компьютеров и был скорее гуманитарием, а не технарем, но он также, как и я, прошел этот путь, просто это заняло в два раза больше времени.
Что бы ты посоветовал знать 100% перед первой работой?
Всё, что обычно указывают в вакансиях. Для Java-стека это: собственно сама Java (можно не углубляться в многопоточку, но всё остальное знать обязательно), SQL, Hibernate, Spring, Docker, Git, Maven (или Gradle). Чтобы выглядеть лучше большинства новичков стоит познакомиться хотя бы с одним из брокеров сообщений и микросервисной архитектурой.
== Общие вопросы ==
Насколько сложнее (проще) работать разработчиком по сравнению с твоей предыдущей работой?
До того как я перешел в разработчики, я работал инженером производственно-технического отдела. С технической точки зрения программирование, конечно, на порядок сложнее. Но с точки зрения условий работы, психологического комфорта и удовлетворенности — старая сфера деятельности сильно уступает.
Так ли там хорошо, как кажется со стороны?
Комфортные условия труда, зарплата, возможность удаленной работы, различные «плюшки» в виде ДМС, оплаты обучения и спорта — всё это имеется в большинстве крупных компаний. Не могу предугадать что представляют себе о подобной деятельности другие люди, но мои ожидания оправдались. Многое, конечно, зависит от компании, коллектива и проекта, поэтому вполне возможно, что кому-то повезет меньше или наоборот — больше.
Если бы финансовая подушка закончилась, а вы были бы не готовы начинать работать, что бы вы сделали?
До перехода в IT я был самозанятым инженером ПТО и имел подработку в виде репетиторства, то есть я имел возможность брать заказы и работать в удобном для себя графике. Если бы финансовая подушка закончилась, то, скорее всего, возобновил бы поиск заказов по старой деятельности и репетиторству, но не прерывал бы обучение.
Нравится ли вам IT профессия? Или уровень заработка все же на первом месте? Не думаете ли уйти в frontend или стать full-stack разработчиком?
Пока нравится. Если бы платили одинаково в строительной сфере и в IT, то с высоты своего опыта всё равно выбрал бы разработку. Frontend абсолютно никак не привлекает и ещё в процессе написания пет-проектов и работы над визуальной частью, я четко понял, что это не мое.
Насколько большая разница между Junior и Middle разработчиком?
Зависит от компании. Мое мнение: если прошел собес на Middle-разработчика, получаешь зарплату как Middle-разработчик, значит ты и есть Middle-разработчик)
Какие планы на будущее: очень рады, что так все получилось и уверены, что теперь нашли то, что искали или не так все однозначно, иногда подумываете между тем, стоило оно того или нет?
За свои 33 года я перепробовал достаточно много профессий и работ: официант, крупье в казино, инженер-проектировщик, инженер ПТО, риелтор, репетитор, пробовал открывать небольшой бизнес на набережной, открывал интернет-магазин настольных игр, пробовал вести бизнес с партнером и вот теперь я пишу код. Как я говорил ранее, на данный момент всё нравится, ожидания оправдались и искать что-то новое пока не тянет. Возможно, через 5-10 лет найду что-то более интересное для себя.
Удаётся ли соблюдать пресловутый work-life balance? Сколько часов в день вы выделяете на саморазвитие помимо работы?
До недавнего времени удавалось и всё было достаточно «лайтово». Как только устроился в новую компанию, где незнакомый для меня стек технологий, баланс немного нарушился, так как приходится даже после работы смотреть различные курсы и читать статьи. Может быть 2-3 раза в неделю уделяю по 1-2 часа на обучение.
Как справляешься с синдромом «самозванца»?
Глядя на чужой код или слушая коллег на созвонах, я очень часто ловлю себя на мысли, что я многого не знаю или не смог бы написать такой красивый с архитектурной точки зрения код. Иногда мне кажется, что я очень долго сижу над задачей и что другой разработчик справился бы гораздо быстрее меня. Как только синдром самозванца начинает мешать мне жить, я запрашиваю обратную связь о своей работе у тех людей, кто ставит и проверяет мои задачи. И во всех случаях (даже на той работе, где я отработал всего 3 недели) мне говорили: «Всё ок, быстро схватываешь». Также стараюсь перестать сравнивать себя с другими разработчиками, но пока не очень получается.
== Заключение ==
В заключении хочется сказать, что IT точно не для всех. И я сейчас не про умственные способности, а скорее про склад характера, усидчивость, любовь в решению логических задачек. Меня увлекло программирование на начальном этапе обучения и не было такого, что я что-то делал через силу. Наоборот, мне всегда хотелось побыстрее прийти домой, сесть за комп, ведь в голову пришла идея как можно реализовать вон ту штуку в пет-проекте или как решить алгоритмическую задачу. Поэтому сейчас я не испытываю проблем с тем, что мне «не хочется идти на работу».
Но большинство людей из моего окружения считает это невероятно скучным занятием и даже ради относительно высокой зарплаты никто не готов потратить около 1000 часов на обучение, после чего возникнет проблема с поиском первой работы. И их можно понять, зачем менять свою сферу деятельности, где ты уже профи на что-то непонятное и, возможно, неинтересное для тебя? Но если вам это нравится, то никогда не поздно. И моя история – далеко не единственное подтверждение этому.
P.S. Мелкие заметки делаю в телеге (https://t.me/lovecodebro), на Пикабу публикую редко и только лонгриды.
Показать полностью
1 месяц назад
Построй свой VPN который не заблокируют

Всратый мем, чтобы поднять пост в горячее. Ведь судя по всему так работает лента на пикабу.
Пару дней назад я запостил в комментариях микро-статью о том как поднять свой VPN за 15 мин. Там инструкция значительно легче, но сам VPN не идеальный.
Она стала относительно популярна, но не обошлось без тонн говна конструктивной критики.
Сегодня я исправлюсь и помогу настроить более совершенный VPN, который будет лишен недостатков Wireguard.
Короче, будем использовать Outline VPN, резкий, дерзкий, мимикрирует под HTTPS, а значит его будет сложнее заблокировать.
Outline VPN обеспечивает высокий уровень безопасности и конфиденциальности для пользователей, шифруя и аутентифицируя их трафик с помощью современных алгоритмов. Outline VPN также не ведет журнал трафика пользователей или не собирает никаких личных данных. Outline VPN был проверен двумя независимыми фирмами по безопасности, чтобы подтвердить его качество и надежность.
Настраивается где-то за 20 мин.
Я держу все свои проекты на TimeWeb уже не первый год, по этому могу рекомендовать их.
https://timeweb.cloud/r/cr09221(ссылка реферальная, дают 300р если будете пользоваться, но как регистрироваться и где выбирайте сами). Подойдет ЛЮБОЙ сервер и хостинг.
До СВО я пользовался Digital Ocean, великолепный сервис, но сейчас российской картой там не оплатить + курс доллара не в нашу пользу.

Саня, ты справишься!
Инструкция:
- Регистрируемся тут https://timeweb.cloud/r/cr09221
- Выбираем «Создать» -> «Облачный Сервис» -> “Маркетплейс” ->”Docker”
- Выбираем регион сервера
Тут внимательно, выбираем САМЫЙ дешевый тариф, ОТКЛЮЧАЕМ бэкапы, они стоят дорого и нам нахер не сдались.
4. Жмем “Заказать”.
5. Скачиваем менеджер и клиент Outline VPN. https://getoutline.org/get-started/#step-1 (не реферальная ссылка).
Тут делаем вдох и выдох, я пишу эту инструкцию для новичков, не для бородатых сисадминов, не для синьоров-помидоров у которых за плечами сотни лет администрирования, прошу быть дружелюбными. Если ты(вы) новичок, и тебе кажется, что дальше сложно, — ты(вы) справишься. Просто делай как я, если что-то не получается, пиши в комментариях я помогу.
1. Открывает консоль на ПК (win+r —> cmd —> жмем ok)

Здесь копируем IP и пароль
2. В консоли пишем ssh root@85.193.91.112 далее вставляем пароль

Так выглядит консоль после авторизации
3. Открываем скаченный ранее Outline Manager
4. Выбираем четвертый пункт “Set up Outline anywhere”
5. Копируем текст из верхнего поля и вставляем в консоль. Подтверждаем установку жмем «Y» и нажимаем Enter.

Примерно это вы должны наблюдать в консоли
6. Ждем. Нам нужно дождаться появления желтой строки.

7. Копируем желтую строку вместе с фигурными скобками и вставляем во второе поле Outline Manager. После этого жмем «DONE»

Так выглядит успешное подключение
8. Копируем ключ.
9. В Outline клиенте жмем «Add Server» и вставляем и жмем «ADD SERVER».
10. Вы великолепны.
Я готов к очередной порции конструктивной критики, цель моих постов дать людям возможность пользоваться ресурсами, к которым нет доступа из их стран. Для меня таким ресурсом стал ChatGPT. Так же VPN использую, чтобы работать в путешествиях и не раздражать службу безопасности.
Ты можешь лайкнуть этот пост по двум причинам:
- Тут нет ссылки на телеграм
- Это вроде как авторский контент, а не копипаст баянов.
- Я на самом деле хочу, чтобы больше людей узнали, что это просто и легко.
Напоминаю, что тут более простой вариант, но не без минусов: предыдущий пост
Комплимент для тех кто дочитал: Ты настолько прекрасен, что Роскомнадзор может тебя заблокировать.
По сути точно так же, скопировать ключ и вставить в приложение.
Там буквально пара кликов
Показать полностью 7
1 месяц назад
1310 | 25 events @ 3 min: Котик всё

Рейтинг гендиров по версии юзеров профессиональной соцсети Blind: Nvidia 96%, Walmart 88%, Palo Alto Networks 84%, Apple 83% . Alteryx 3%, Unity 2%, WD и Nordstorm 0%.

Британия разрешила Microsoft купить Activision Blizzard, но только если Ubisoft получит права на облачный гейминг.
Microsoft купила Activision Blizzard за 68,7 млрд $. Крупнейшая сделка в истории индустрии видеоигр.
Гендир Activision Бобби Котик освободит кресло в конце декабря и получит золотой парашют на 375 млн $.
Китай первым в мире выдал разрешение на беспилотное аэротакси. Лицензию получила компания EHang, которая выпускает двухместный октокоптер EH216-S.
Евросоюз требует от Telegram назначить представителя по вопросам блокировки контента. Срок до 17 февраля.
Евросоюз начал проверку соцсети X. Подозревает в недостаточной фильтрации контента о войне в Израиле.
# Software
▸[7] Превью нейронки Adobe Fast Fill: убирает объекты и меняет одежду людей на видео.
▸[8] Юзеры Twitch теперь могут банить других от просмотра своих стримов.
▸[9] Поддержка Windows 11 v. 21H2, которая вышла два года назад, прекращена.
▸[10] Ubuntu 23.10 Mantic Minotaur: ядро 6.5, GNOME 45, поддерживает Raspberry Pi 5.
▸[11] Браузер Tor 13.0 обновился до Firefox 115 и поменял иконку.
▸[12] Соцсеть Meta Threads добавила голосовые сообщения.
▸[13] Поисковик Google научился генерировать картинки. Функция активируется в Search Labs.
# Hardpron
▸[14] Внешняя карта видеозахвата AVerMedia Live Gamer ULTRA 2.1: HDMI 2.1, 4K @ 60 FPS, FullHD @ 240 FPS, RGB подсветка. Цена 300 $.

▸[15] Часы Honor Watch 4 Pro: 38 мм AMOLED, ОЗУ 64 Мб, ПЗУ 4 Гб, датчики здоровья, eSIM, батарейка на 10 дней, стальной корпус. Цена 1600 ¥ [21 000 ₽], с кожаным ремешком 1800 ¥ [24 000 ₽].

▸[16] Часы Garmin Marq Carbon: спецверсия с карбоновым корпусом. Каждый экземпляр с уникальным рисунком. Цены от 2950 $.

▸[17] Планшет Dell Latitude 7230 Rugged Extreme Tablet: ударопрочный, 10″, Core i5 и i7, ОЗУ до 32 Гб, ПЗУ до 2 Тб, Windows 11, IP65. В продаже до конца года, цены нет.


▸[18] Смартфон Magic Vs2: складной, внутри 7,9″, снаружи 6,4″, оба OLED, Snapdragon 8+ Gen 1, камера 50 Мп. Цены: 7000 ¥ [93 000 ₽] за 8 Гб ОЗУ + 256 Гб ПЗУ и 7700 ¥ [102 500 ₽] за 16 + 512 Гб.

# Business
▸[19] Японская Fujitsu делает серверный процессор MONAKA на 150 ядер и с воздушным охлаждением. Arm, техпроцесс 2 нм, сборка TSMC, планирует выпустить в 2027.
▸[20] Qualcomm увольняет 1258 рабочих или 2,5% штата в Калифорнии для экономии.
▸[21] Акционеры iRobot согласились продать компанию Amazon’у за 1,4 млрд $. Ранее Amazon предлагала 1,7 млрд $, но передумала из-за роста долгов компании.
▸[22] Google обещает помочь в судебных делах против юзеров его нейронок.
▸[23] Ростелеком заказал 800 000 Wi-Fi-роутеров у компании Электра за 2,7 млрд ₽, что на 10% дороже ипортных.
▸[24] Atlassian покупает стартап Loom, который делает софт для записи экрана, за 975 млн $.
# Следующий выпуск 23 октября
Показать полностью 7
Поддержать
1 месяц назад
0510 | 22 events @ 3 min: Win XP жив

Анонс графического движка Adobe Project Stardust: распознаёт предметы на фото и меняет их по текстовому запросу. Больше информации во вторник.
Android 14: настройка внешнего вида экрана блокировки, нейронка-генератор обоев, Ultra HDR картинки, приложение Health Connect теперь внутри ОС и многие другие мелкие изменения.
# Software
▸[2] СУБД VictoriaMetrics 1.94.0: улучшили скорость, добавили разделение чисел подчёркиванием, сохранение копии бэкапа на сервере, vmui показывает историю запросов и научился экспортировать данные в Prometheus.
▸[3] OpenSSH 9.5: ключи Ed25519 теперь включены по умолчанию.
▸[4] Дыра «Looney Tunables» Linux библиотеки glibc: можно получить root используя переполнение буфера. Задеты Fedora 37 и 38, Ubuntu 22 и 23, и Debian 12 и 13. Патчи уже выходят.
▸[5] Апдейт драйвера видеокарт Intel Arc и Iris: значительно ускорили DirectX 11 и исправили баг с вылетом After Effects при рендере.
# Hardpron
▸[6] Смартфон Google Pixel 8 Pro: 6,7″ OLED @ 120 Гц, Tensor G3 на 9 ядер по 2,9 гигагерц, ОЗУ 12 Гб, ПЗУ от 128 до 512 Гб, камера 50 Мп с нейронкой для замены лиц и ручным управлением, Wi-Fi 7. Цена от 1000 $.

▸[7] Смартфон Google Pixel 8: 6,2″ OLED @ 120 Гц, Tensor G3 на 9 ядер по 2,9 ГГц, ОЗУ 8 Гб, ПЗУ 128 или 256 Гб, камера 50 Мп с нейронкой для замены лиц, Wi-Fi 7. Цена от 700 $.

▸[8] Наушники Google Pixel Buds Pro: затычки с шумодавом, автоматически выключают музыку при разговоре, батарейка на 11 часов + 20 в кейсе. Цена 200 $.

▸[9] Контроллер Xbox Gold Shadow Special Edition: теперь и золотого цвета! Цена 70 $.

▸[10] Электроподлодка U-Boat Worx Super Sub: три места, скорость 18,5 км/ч, глубина до 300 м, батарейка на 8 часов. Цена 5,4 млн $.

▸[11] Часы Google Pixel Watch 2: 41 мм OLED, Snapdragon W5+ Gen 1, ОЗУ 2 Гб, IP68, новые датчики здоровья, батарейка на 24 часа, если не выключать дисплей. Цена 350 $, версия с LTE за 400 $, ремешки по 50 $.

▸[12] Bluetooth-метка Samsung SmartTag2: хранит контактную информацию владельца, IP67, батарейка на 700 дней. В продаже через неделю за 30 $.

▸[13] Caviar iPhone 15 Pro «Машина времени»: золотой корпус с механическими часами на задней крышке. Вкрапления клыков тираннозавра, зубов мегалодона, бивня мамонта, древнеримского копья, шведской пули, метеорита и частей iPhone 2G. Цена 7 млн ₽.

# Business
▸[14] Amazon Web Services открывает филиал в Кении. Займётся разработкой софта.
▸[15] Тим Кук продал 551 000 акций Apple за 87,8 млн $. После налогов получил 41,5 млн $. Итого у него осталось 3,3 млн акций стоимостью 565 млн $.
▸[16] Fujitsu и Riken запустили второй в Японии квантовый компьютер. Мощность 64 кубита.
▸[17] Доля юзеров по версиям Windows за сентябрь: 10 – 71,6%, 11 – 23,6%, 7 – 3,3%, 8 – 0,9%, XP – 0,4%.
▸[18] Intel перестала выпускать серверные Xeon Cascade Lake, которые вышли в 2019, из-за низкого спроса.
▸[19] Соцсеть X больше не показывает заголовки новостей у ссылок в постах. Только картинку и домен сайта.
▸[20] BlackBerry разделяется на две компании: по кибербезопасности и интернету вещей.
▸[21] Фанаты крипты Dogecoin скинулись на памятник собаке-маскоту. Установят в Японии, откуда он родом, в следующем месяце.
# Спасибо Таинственному пикабушник за донат!
Показать полностью 8
Поддержать
1 месяц назад

Проблемы чисел с плавающей точкой
Всем привет, работаю java разработчиком уже 10 лет, в этом посте хотел бы привести пример, почему нужно с опаской подходить к использованию чисел с плавающей точкой. Проблемы возникают из-за двух ограничений:
- невозможности представить некоторые дробные числа в конечном виде в двоичной кодировке;
- ограниченного объема памяти, выделенного для хранения значения.
В результате может страдать точность, причем в не самых очевидных случаях. Например, сравниваем между собой два маленьких различных числа. Они, очевидно, различны:
double little1 = 0.0000000000000000000000000000000000000001;
double little2 = 0.0000000000000000000000000000000000000002;
print(little1 == little2); //false
Далее попробуем сложить эти два числа с большим, и проверим, совпадают ли суммы:
double big = 10000000000000000000000000000000000000.0;
print(big + little1 == big + little2); //true
Оказывается что суммы равны, хотя интуиция подсказывает обратное. Проблема в том, что число которое имеет много символов до точки и после точки, не может быть достаточно точно представлено в памяти, и его конец обрезается. Из-за чего вычисления приводят к равенству.
Тем кто вынужден работать с нецелыми числами, рекомендую присмотреться к BigDecimal. Всем удачи!
1 месяц назад
Мир ещё не готов к этому

Поддержка голосовых сообщений в комментариях.
Хочу иметь возможность нажать на кнопку и записать голосовое сообщение. MP3 файл будет сохранён в папку /.idea или /resources или другую пользовательскую папку. Внутри блока комментариев будет аудио-плеер, который будет воспроизводить мои мысли об этом коде.
Концепт:
Показать полностью 1
3 месяца назад
Автоматическое включение VPN на iPhone
Двое человек в комментариях попросили рассказать, как сделать автоматическое включение. Ранее это было доступно только для ограниченно числа приложений, сейчас — свобода. За идею и возможность спасибо @storminside.
Острожно! Дальше много скринов!
Для начала заходим в приложен «Команды» переходим снизу в пункт «автоматизация» и создаем новую, нажав на «+» сверху справа.

Далее выбираем нужное приложение: instagram, TikTok, Safari и т.д.; обращаем внимание на пункт «Открыто»

Далее выбираем активность — в поиске вводим и выбираем VPN

Обязательно выбирайте какой именно vpn нужен:

Обязательно убрать «вредную» галку с пункта «спрашивать до запуска», а то заколебет и каждый раз придется уже из пункта уведомления подключать

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

А и еще, опция появилась недавно. Тестировал на iOS 16.4.1. Но на относительно новой 16.1.2 пункт с впн отсутствует. В таком случае только обновляться.
Круто вообще, что такая штука появилась. Да и выпендриться можно среди близких и девушек, что вы погромист 😀 При быстром впн, будто и нет блокировок, и весь интернет свободен и вся жизнь впереди)
Показать полностью 6
4 месяца назад
Ответ на пост «Как с вероятностью 95% оценить, что ваше устройство взломано?»
То, что посоветовал ТС — лютая клоунада. Но если же вам действительно хочется проверить, а не сливается ли чего лишнего с вашего компьютера, то рекомендую обратить внимание на Simple Wall. Простой интерфейс, удобная настройка, открытый исходный код — то что нужно, чтобы закрыть все исходящие соединения для непрошенных гостей и чуть больше контролировать, что творится в вашей системе. Ссылочка на гитхаб для роднуль

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

Анонс бесплатного курса «Командная строка для разработчиков»
По нашему опыту, современному backend-разработчику неплохо бы понимать Linux на каком-то уровне. Свои мысли насчёт того, зачем разработчику Linux, мы недавно оформили в виде статьи, вызвавшей особо бурные обсуждения.
Кто-то считает, что без линукса действительно никуда. Кто-то считает, что разработчику и в винде комфортно. Кому-то наши примеры показались выдуманными. Кто-то нашёл примеры очень жизненными.
На наш вкус, линукс полезен, но существует непростая проблема высокого порога входа. Есть либо огромные книги вроде Advanced Bash-Scripting Guide, либо фрагментарные статьи совершенно разного уровня качества, либо различные курсы. Курсов много разных, но у нас своё видение. Как в классическом комиксе про стандарты:

Сообщество любит отправлять новичков читать мануалы, что мега-полезно, но довольно непросто. Кстати, на курсе мы разберём, как читать man-ы.
Наша мотивация по созданию курса
Мы довольно давно готовим молодых python-разработчиков, и начинаем именно с базовых знаний в Linux, прививая желание и умение работать в терминале. Вдохновляясь курсом «Поколения Python» на степике, мы решили сделать свой бесплатный курс «Командная строка для разработчиков», посвящённый терминалу Linux, языку bash и базовому администрированию. Начинающим разработчикам поможем преодолеть неловкость перед текстовым терминалом, опытным разработчикам покажем неочевидные и полезные в работе фишки для увеличения продуктивности.
Курс начинался с оффлайна, а переход в онлайн требует существенной переработки материала. Поэтому релизимся поэтапно, выпуская новые уроки по мере готовности.
Подробнее о курсе
Курс сильно завязан на практику, поэтому обязателен компьютер с линуксом в каком-то виде. Мы предлагаем три варианта:
- Ubuntu в качестве гостевой операционной системы. Для этого в системе виртуализации (virtualbox, VMWare или любой другой) поставить Ubuntu.
- Ubuntu в качестве основной операционной системы. Годится любой Linux-дистрибутив или даже macOS.
- Ubuntu в WSL2, он же Windows Subsystem for Linux.
Начало курса неспешное и подходит совсем для начинающих. При этом мы обращаем внимание на важные детали, на которые часто никто не обращает внимание. Например, когда выбирать короткие, а когда выбирать длинные флаги команды? Есть ли разница между ls -al, ls -la и ls —all?
Примерная структура курса
Модуль 1. Пользуемся Ubuntu. Осваиваем терминал
- Введение в курс.
- Перемещаемся по файловой системе.
- Работаем с файловой системой.
- Редактор текста, работаем с файлами. Создаём и запускаем скрипты.
- Процессы, знакомимся с PID, ps | grep и конвейером.
- Используем ctrl-r и работаем с историей команд. Алиасы.
- Настраиваем терминал.
Модуль 2. Программируем в Ubuntu. Основы Bash
- Bash для разработчика, несколько занятий. Полезные однострочники на примере изменения формата файлов, сортировки в разных вариациях.
- Всё про поиск — конкретных файлов, поиск внутри файлов .
- Виртуальная файловая система proc. Используем proc, PID, PPID, дескрипторы стандартных потоков, файловые дескрипторы, аргументы командной строки, подменяем PATH. Переменные окружения (как они работают, область и время действия), в том числе PATH и HOME. Спецсимволы < >>> 2> 2>> &>.
- Работаем с учётными записями в Ubuntu. Разграничиваем права доступа.
- Применяем sudo и root. Немного про безопасность, проблемы копирования из терминала, про пакеты, которые ставятся курлом.
Добро пожаловать на курс «Командная строка для разработчиков»! Введение и первое занятие уже доступно.
Интереса ради, мы спросили ChatGPT, нужен ли линукс для питонистов.
ChatGPT о важности Linux для python-разработчика
Python-разработчикам может быть полезно использовать операционную систему Linux в своей работе по ряду причин.
Во-первых, Linux обычно является основной платформой для серверных приложений и веб-серверов, которые часто используются для хостинга Python-приложений. Разработчики, работающие с серверными приложениями, должны быть знакомы с Linux, чтобы установить, настроить и поддерживать серверное окружение.
Во-вторых, многие инструменты и библиотеки для Python, такие как NumPy, SciPy и Pandas, часто предназначены для работы в Linux-подобных операционных системах. Разработчики, которые используют эти инструменты, будут иметь преимущество, если они работают на Linux.
В-третьих, Linux предлагает множество инструментов командной строки, которые могут значительно упростить и ускорить разработку. Например, Linux-разработчики могут использовать командную строку для автоматизации задач, обработки данных, управления пакетами и тестирования кода.
Наконец, Linux является бесплатной и открытой операционной системой, которая имеет широкое сообщество разработчиков и пользователей. Это означает, что Python-разработчики могут получить доступ к большому количеству бесплатных инструментов, библиотек и ресурсов, которые могут помочь им в их работе.
В целом, использование Linux может значительно улучшить производительность и эффективность работы Python-разработчика, поэтому знание и опыт работы с этой операционной системой могут быть ценными навыками для разработчика.
Как считаете, правы ли нейросети?
Показать полностью 1
5 месяцев назад

Обаятельный робот-сортировщик из Lego «Spike Prime»
Последний год я плотно увлеклась лего-робототехникой, программированием для детей и подобными вещами, потому что моя сестра открыла клуб технического творчества «Кубарий».
Пока мой любимый набор — Spike Prime. Он весёлый и яркий, лёгкий в сборке, а возможностей у него много.
Я только недавно плотно занялась изучением этого набора, прохожу курс по нему на Фоксфорде. Уже начинаю изобретать собственные простые постройки, но что-то сложное изобрести мне пока тяжело, так что осваиваю интересные инструкции из интернета.
Это робот, который сортирует кубики по цветам. В наборе есть датчик цвета. Выглядит, как попугайчик или, возможно, кобра.
В сборке не самая простая модель, лучше давать взрослым или уже опытным ученикам.
Вот такая копия у меня получилась:
Пожалуй, самое интересное и полезное для меня в механизме было то, что подъём и закрытие челюсти контролируются одним и тем же мотором. Получается, при подъёме неизбежно закрывается челюсть и наборот.
Программируются такие роботы с помощью простого языка scratch, состоящего из цветных блоков. В видео есть пример программы, но мне пришлось её немного переделать.

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

Оставила попуга собранным, чтобы показывать ученикам. Они ставили эксперименты, например он так же успешно сортирует лего-человечков из серии майнкрафт, у которых квадратная голова.
Из сложностей — у попугая иногда сбивается положение шестерёнок и мотора, приходится поправлять. И если я выключаю его, когда он в нижней точке, а потом включаю — он не может вернуться в исходное положение. Скорее всего, потому что он возвращается в положение 0 «самым коротким путём», и когда он в нижней точке этот короткий путь противоречит его конструкции.
Один из учеников вдохновился и решил собрать такого же, но со своими дополнениями.
Если у вас есть на примете интересные инструкции и идеи для лего-роботехники, буду рада их услышать.
Показать полностью 2
5 месяцев назад
Парсим яндекс диск при помощи Python
В данный момент я работаю контент-менеджером в «крупном» интернет — магазине. В моём случае, это больше 100 000 позиций.
Иногда приходится сталкиваться с такой проблемой: поставщик присылает фотографии со ссылками на яндекс диск. Это крайне неудобно, потому что приходится ходить по каждой ссылке и скачивать изображение к себе, а затем уже загружать на сервер и т.д.
Готового решения я не нашел и решил написать свою реализацию работы с яндекс диском. Хорошо, что я знаю python.
У меня было 2 версии программы:
- когда по ссылке находится папка с картинками, python скачивает эту папку как зип файл, затем распаковывает. Все манипуляции записываются в csv файл, путь до файла с картинками
- когда по ссылке идёт только одна картинка, в данном случаи все немного проще, не нужны лишние действия с распаковкой картинок
p.s. ещё были 2 побочные небольшие программки: 1-я для уменьшения размера картинки, 2-я для переименования картинок (менялся пробел на дефис)
Приступим к реализации
- скачать и установить python c официального сайта https://www.python.org/downloads
- открыть любимый редактор кода (я использую vscode) https://code.visualstudio.com
- подключить следующие стандартные библиотеки: urllib.parse, csv, os, zipfile. Установить библиотеку requests https://pypi.org/project/requests/ (для отправки запроса на сервер)
- для полного фен-шуя можно использовать виртуальное окружение, дабы не засорять систему ненужными пакетами. Подробнее о virtualenv можно ознакомится по ссылке https://docs.python.org/3/tutorial/venv.html или же использовать poetry.
Ссылки на яндекс диск имеют вид: https://disk.yandex.ru/d/xNBn7lE1_Y5knQ . Чтобы их можно было скачать, они должны быть публичными.
Обратимся к API яндекс. После ключа public_key=»вставляем_ссылку_на_файл»
В ответе мы получаем json, из которого нам нужно получить значение по ключу href. Полученное значение и будет нашей прямой ссылкой к файлу.

Пожалуй, на этом хватит теории, теперь, постараюсь внятно объяснить, как всё это можно применить в контексте python.
# создаем новый файл и подключаем нужные нам библиотеки
import requests
from urllib.parse import urlencode
import csv
import os
import zipfile
Для начало создадим функцию, которая будет возвращать нам ссылку для скачивания:
final_url = base_url + urlencode(dict(public_key=public_link))
response = requests.get(final_url)
parse_href = response.json()[‘href’]
return parse_href
Файлы могут быть в разных форматах: ссылки могут быть на одну или несколько картинок. В первом случае можно напрямую скачивать картинку по ссылке. Во втором, если по ссылке несколько картинок, то при скачивании мы получаем архив, который требует дополнительных действий (распаковку).
Далее, мы скачиваем файлы и в зависимости от его типа выполняем действия: просто записываем в результирующий файл или же переходим к его распаковке с последующей записью.
В итоге, мы получаем файл result_data.csv со ссылками на фотографии на нашем жестком диске:

В добавок, у нас на жёстком диске появляется папка со скаченными картинками в папке download_files.
Полностью посмотреть код можно в репозитории на гитхаб.
p.s. Официальная документация по API Яндекс. Диска
Братишка с пикабу подсказал готовую библиотеку на питоне. Спасибо b4ro тык.
p.s.s. Немного поразмышляв, я подумал, что неплохо было бы написать, тесты. Пройтись линтером по коду. Добавить функцию переименования файлов. Может быть что-нибудь ещё?)
Спасибо за прочтение! Комментарии, лайки, дизлайки, предложения, пожелания крайне приветствуются.
Показать полностью 2
5 месяцев назад
Забугорная халява 2009
В далеком 2009 году, когда деревья были большими, Убунту на дисках присылали совершенно бесплатно, стоило только попросить на официальном сайте. До последнего не верил, пока не забрал диск на почте России. Жаль, что в 2011 лавочку прикрыли.

Показать полностью 1
5 месяцев назад

Простой Telegram-бот на Java и Spring Boot
В данном видеоуроке я показываю как можно разработать свой собственный Telegram-бот на Java с использованием Spring Boot. После просмотра данного видео, вы сможете создать свой собственный Telegram-бот, но уже с более сложным функционалом.
Показать полностью
5 месяцев назад

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера

К сожалению, в наше время многие старые, но весьма неплохие по характеристикам гаджеты отправляются напрямую в помойку, и их владельцы не подозревают, что им можно найти применение. Сервер, мультимедийная-станция, да даже просто как TV-приставка — люди в упор не замечают сфер, где старенький планшет мог бы быть полезен. Но как быть, если посвящаешь жизнь портативным гаджетам, кодингу и копанию в железе? Правильно: сделать довольно мощную игровую консоль из старого планшета самому! Сегодня вам расскажу, как я сделал свою портативную приставку из планшета с нерабочим тачскрином, Raspberry Pi Pico и 8 кнопок! За рабочим результатом прячется несколько дней работы: поиск UART на плате, разработка контроллера геймпада на базе RPi Pico, написание приложения-сервиса, которое слушает события и отправляет их в подсистему ввода Linux в обход Android. Интересно? Тогда жду вас под катом!
❯ Мотивация
Прошло уже практически 10 лет с того момента, как у меня появилась моя первая портативная консоль. Несмотря на то, что я был заядлым ПК-игроком, я уже успел посмотреть на PS3 и PSP, но денег на их покупку у меня особо не было, да и к тому времени уже был в наличии Android-планшет. Но к моему 13-летию в 2014 году, когда я ходил и выбирал себе будущий девайс на день рождения, отец и мама решили подарить мне мою первую портативную консоль. Изначально, я уговаривал её купить мне целых два девайса, но бюджет был ограничен 4.000 рублей, а я хотел взять смартфон Fly IQ239 и консоль JXD S601 одновременно:

Однако, увидев здоровую 7-дюймовую консоль в магазине TREC (думаю, жители южной части РФ помнят такой), мама уговорила меня взять именно её, мотивируя это «ну и чего ты будешь тыкаться в этот мелкий экран? Возьми большую». После покупки гаджета, я был доволен: играл какие-то игрушки с ретро-платформ, устанавливал игры на Android, сидел в ВК через Kate Mobile. Что еще нужно было школяру? Однако, планшет прожил у меня недолго: с очередного лага я психанул и ударил по нему кулачком, унеся на тот свет и дисплей и тачскрин. Так консолька и пролежала в подвале около 8 лет. Впрочем, мне продолжали импонировать подобные устройства и в прошлом году я купил и написал про несколько подобных девайсов.

Несколько месяцев назад, мой читатель Кирилл Севостьянов с Хабра прислал мне HTC HD2 в качестве донора и планшет Prestigio PMP7170B3G, который был рабочим, но… у него отказал тачскрин. Я всё думал, чего бы с ним сделать и решил реализовать игровую консольку своими руками из подручных средств. Идея крутилась в голове довольно давно, но реализовал я её только сейчас.
❯ Что нам нужно сделать?
Итак, что должно быть у портативной консоли? Чипсет, дисплей, звук, ОС — это всё нам уже предоставляет планшет. Нам остаётся лишь сделать свой геймпад. Давайте подумаем, что нам будет нужно для того, чтобы его сделать и передавать от него события на планшет:
- Контроллер для геймпада: тут нам подойдет практически любой микроконтроллер, который работает от 3.3в. Выбор большой: Arduino Pro Mini 3.3v, ESP32, RPi Pico. Я остановился на последнем: недавно я взял себе две штучки «пощупать» их — и они мне очень понравились!
- Физический интерфейс: с планшетом нужно как-то общаться. У нас есть три варианта: USB (не факт, что поддержка преобразователей включена в ядре), UART и SPI/I2C на пятачках тачскрина (потребуют написания драйвера т. к. в android-устройствах нет прямого доступа к SPI/I2C из userland’а). Я остановился на UART: его легко найти на большинстве китайских планшетов, а если не получилось — то на помощь может прийти схема платы.
- Программная реализация: как это будет работать? Я решил реализовать геймпад в виде сервиса на Android, который слушает состояния кнопок с UART и «инжектит» события напрямую в драйвер ввода. Таким образом, поддержка нашего геймпада появляется даже в самой системе — можно управлять менюшкой или приложениями как с клавиатуры!
С планом определились, пора начать с программной части: сначала нам обязательно понадобится ROOT-доступ. Его получение на разных девайсах отличается — на prestigio уже был порт CWM и я просто поставил SuperSU. Без ROOT доступа мы не сможем использовать UART!

Теперь нам нужно найти пятачки UART на плате. Разведен он не везде, но в случае устройств на MediaTek — почти всегда, ещё и пятачки подписаны. На моём планшете он нашёлся сразу: был между двух металлических экранов и соответствовал 4-ому каналу UART. Получить к нему доступ можно в /dev/ttyMT3. Я использую ESP32 в качестве UART преобразователя: подпаиваемся к RX/TX, запускаем putty и заходим в adb shell. Определяем бодрейт (скорость) нашего UART порта — на MediaTek он обычно равен 921600, на других чипсетах — 115200. Пытаемся что-то вывести и хоба — мы уже можем «поболтать» с планшетом!

❯ Приложение-сервис
Итак, у нас уже есть доступ к UART и мы можем общаться с планшетом из внешнего мира. Но получить события с кнопок пол дела, нужно их ещё и послать в систему. Для этого есть целых три способа:
- InputManager.injectInputEvent — именно этим методом пользуется команда input, которую вы можете использовать через adb. Но увы, он работает только при наличие разрешения INJECT_EVENTS, который доступен только системным приложениям — находятся они в /system/app и подписаны тем же сертификатом, что и остальная прошивка.
- Модуль uinput дает возможность создать виртуальное устройство ввода и посылать события из userland’а — т. е. из прикладного приложения. У моего планшета было устройство /dev/uinput, но lsmod показывал, что сам модуль не загружен. Так что отметаем — он есть не везде.
- Прямой инжект событий в character устройство — весьма грязный хак, который позволяет инжектить события, не притворяясь системным приложением, но имеет некоторые ограничения. Именно его я и выбрал и о ограничениях ниже.
Сначала нам нужно узнать, какие кнопки поддерживают загруженные устройства ввода в системе. Для этого используем команду getevent -li. Там есть разные устройства ввода, в том числе и тачскрин (если вам нужно симулировать нажатия на экран), мне же подошёл драйвер физических кнопок mtk-kpd. Он занимается обработкой кнопок громкости, включения и т. п. Тут важно обратить внимание на то, что если попытаться послать кнопку, которое устройство не реализует (например пробел), то ничего не произойдет:

Инжект событий я писал на C, т. к. это требовало прямой записи input_event, а в Java прокинул его через Jni. Концепция простая: открываем устройство /dev/input/event2 и посылаем в него события ввода и синхронизации (это обязательно!), которые затем Android читает и обрабатывает:
#include
#include
#include
#include
#include
#include
#include
int uinput;
extern «C» JNIEXPORT void JNICALL Java_com_monobogdan_inputservicebridge_InputNative_init(JNIEnv *env, jclass clazz)
uinput = open(«/dev/input/event2», O_WRONLY);
__android_log_print(ANDROID_LOG_DEBUG , «Test», uinput >= 0 ? «Open event OK» : «Failed to open event»); >
void emit(int fd, int type, int code, int val)
struct input_event ie; ie.type = type;
ie.code = code; ie.value = val;
ie.time.tv _sec = 0;
ie.time.tv _usec = 0;
write(fd, &ie, sizeof(ie)); >
extern «C» JNIEXPORT void JNICALL Java_com_monobogdan_inputservicebridge_InputNative_sendKeyEvent(JNIEnv *env, jclass clazz, jint key_code, jboolean pressed)
__android_log_print(ANDROID_LOG_DEBUG , «Test», «Send»);
emit(uinput, EV_KEY, key_code, (bool)pressed ? 1 : 0);
emit(uinput, EV_SYN, SYN_REPORT, 0);
>
Основной обработкой занимается сервис, который я реализовал в отдельном потоке: он слушает события с UART и посылает соответствующие изменения состояния через sendKeyEvent. На вход приходят простые сообщения вида:
U L где U/D — нажато, не нажато, а L — однобайтовый идентификатор кнопки. В случае L — это влево, R — вправо и т. п. Вся доступная раскладка хранится в словаре. Причём само чтение из UART реализовано костылем с чтением «чужого» stdout, т. к. android-приложения не умеют сами по себе работать с root правами. В теории, это могло дать неприятный оверхед, но на практике никакого серьезного инпут лага это не создает. Не забываем сделать устройство event записываемым — ставим ему права 777:
package com.monobogdan.inputservicebridge;
public class InputListener extends Service
private static final int tty = 3;
private InputManager iManager;
private Map keyMap;
private Method injectMethod;
private Process runAsRoot(String cmd)
try
return Runtime.getRuntime().exec(new String[] < "su", "-c", cmd >);
>
catch (IOException e)
e.printStackTrace();
return null;
>
>
@override
public void onCreate()
super.onCreate();
// According to linux key map (input-event-codes.h)
keyMap = new HashMap<>();
keyMap.put(‘U’, 103);
keyMap.put(‘D’, 108);
keyMap.put(‘L’, 105);
keyMap.put(‘R’, 106);
keyMap.put(‘E’, 115);
keyMap.put(‘B’, 158);
keyMap.put(‘A’, 232);
keyMap.put(‘C’, 212);
InputNative.init();
try
runAsRoot(«chmod 777 /dev/input/event2»).waitFor();
> catch (InterruptedException e)
throw new RuntimeException(e);
>
Executors.newSingleThreadExecutor().execute(new Runnable()
@override
public void run()
Process proc = runAsRoot(«cat /dev/ttyMT» + tty);
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
while(true)
try
String line = reader.readLine();
if(line != null && line.length() > 0)
Log.i(«Hi», «run: » + line);
boolean pressing = line.charAt(0) == ‘D’;
int keyCode = keyMap.get(line.charAt(2));
Log.i(«TAG», «run: » + keyCode);
InputNative.sendKeyEvent(keyCode, pressing);
>
>
catch(IOException e)
e.printStackTrace();
>
/*try
Thread.sleep(1000 / 30);
> catch (InterruptedException e)
e.printStackTrace();
>*/
>
>
>);
>
@override
public IBinder onBind(Intent intent)
return null;
>
>
Таким образом, если мы отправляем с ПК «D L» — система считает, что мы зажали стрелку влево, а U L — считает что мы отпустили. Но если mtk-kpd поддерживает стрелки и еще некоторые действия без каких либо проблем, то enter в список обрабатываемых кнопок не входит: придется мудрить! И тут нам приходит на помощь механизм трансляции кодов кнопок в действия: они хранятся в специальных файлах .kl в /system/usr/keylayout/. Я назначил DPAD_CENTER на… кнопку регулировки громкости звука! Ну, а почему бы и нет. 🙂 Таким образом можно переназначить уже имеющиеся кнопки громкости на, например, start/select.

❯ Геймпад
После того, как сервис был готов и отлажен, нужно было реализовать хардварную часть проекта — сам геймпад. В качестве контроллера я, как уже говорил, выбрал Raspberry Pi Pico на базе МК RP2040 — бодреньком контроллере с двумя ARM Cortex-M0 ядрами. Стоит копейки, а в отличии от ESP’шек, его SDK не такое перегруженное и выглядит более приближенным к bare-metal.

На данный момент, я решил развести все кнопки на бредборде — макетной плате без пайки, т. к. макеток для пайки у меня под рукой не было. Сделал примитивный геймпад:

Развел на соответствующие GPIO:

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

А почему бы не попробовать поиграть в какую-нибудь игру? Ну мы же консоль вроде делаем: берём эмулятор NES, биндим кнопки в настройках и наслаждаемся игрой в Марио!
❯ Заключение
Реализация этого проекта заняла у меня не так уж и много времени: всего около 3-х дней работы по вечерам. Вероятно кто-то спросит: «а чего ты просто Bluetooth геймпад не купил?». Так это не прикольно ведь. Гораздо приятнее играть в девайс, к которому ты приложил руку сам. Более того, не у всех старых планшетов есть BT. Обошёлся на данной стадии проект недорого: планшет мне подарили бесплатно (точно также у вас дома может лежать подобный), RPi Pico — 350 рублей, кнопки по 10 рублей/штучка.
В целом, я сам по себе обожаю копаться в различных железках и их софтварной части (вспомнить хотя-бы статью про перекомпиляциюu-boot из вендорских исходников для нонейм консоли), а созидать что-то свое вообще вызывает какие-то нереальные всплески эндорфина — оно и понятно! 🙂
Однако несмотря на то, что мы уже имеем рабочий «прототип», проект далёк от завершения: я намерен довести его до конца и окончательно перевоплотить старый планшет в автономную игровую консоль (и рассказать об этом во второй части статьи). Для этого мне понадобится распечатать корпус и кнопки на 3D-принтере. К сожалению, у меня в городе ни у кого особо нет 3D-принтеров, поэтому начну копить на Ender 3, а от вас, читателей, с удовольствием почитаю мнение в комментариях и советы касательно выбора принтера!
Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, чтобы не пропускать еженедельные статьи про моддинг различных гаджетов!
Как установить моды в Minecraft [TLauncher]
Установка модов не такой сложный процесс как кажется многим, всего лишь достаточно прочитать и выполнить несколько пунктов данной инструкции. И наконец, вы сможете порадовать себя интересными модами, которые могут добавить в Minecraft много всего: от мелких предметов до целых миров.
0) Проверяем, что у вас последняя версия нашего лаунчера. Скачать актуальной версии TLauncher можно с главной страницы. Инструкции представлены для версий Майнкрафт выше 1.5. Не рекомендуем вообще использовать версию меньше.
Установка модов через Мод-паки
В новых версиях нашего лаунчера, мы внедрили специальную систему помощи установки модов — TL MODS. С её помощью, можно решить множество проблем: поиск модов на разных сайтах, частые краши и простое управление сборками модов. Поэтому, рекомендуем использовать её, особенно новичкам.
1) Открываем TLauncher и находим в нижнем правом углу находим иконку «TL MODS«, кликаем на неё, дабы открыть окно Мод-пак системы.

2) Теперь необходимо создать ваш собственный Мод-пак (сборку модов), данная система предполагает создание множества сборок и их управление, находим сверху и кликаем на «Создать» (1), вводим любое название Мод-пака (2) и кликаем на «Создать» (3) в данном окне.

3) У вас в списке сборок теперь появился новый, можете наполнять его модами из специальной вкладки «Моды«. Для добавления мода, нужно нажать на кнопку «Установить» (4), как только модов будет достаточное количество, проверяем, что у вас выбрана в списке версий ваша сборка (мод-пак) (5) и нажимаем на большую жёлтую кнопку «Войти в игру» (6).

4) После загрузки всех необходимых файлов, произойдёт запуск игры. Во вкладке «Моды«, сможете подтвердить успешную установку ваших модификаций! Можно играть!

Установка модов таким способом гораздо удобнее, так как большую часть действий выполняет наш лаунчер — вывод каталога, установка дополнительных зависимостей и скачивание модов. Вы всегда можете вручную установить из интернета моды в вашу сборку, через специальную функцию «Ручная установка«. Плюс, в других вкладках, в один клик, сможете установить — другие сборки (мод-паки), Ресурс-паки, Шейдеры и Карты. Моды доступны от разных версий Minecraft, от 1.5 до новых 1.15.2! Подробнее про нашу Мод-пак систему, можно узнать из статьи «TLauncher — Лаунчер с модами».
Установка модов вручную
Данный способ более традиционный, так как именно им, многие годы уже устанавливали наши игроки. Но в данном случаи, нужно более тонко разбираться во всех деталях и рекомендуется только продвинутым игрокам.
1) Находим в интернете мод который вам нужен (Моды на Minecraft 1.15.2), и смотрим под какую версию игры он разработан. У нас в примере будет «TL SKIN CAPE» для версии 1.15.2. Скачиваем файл мода и сохраняем пока в любое место на компьютере.
2) Открываем лаунчер, и находим в списке версий Forge (Именно он отвечает за работу большинства модов), версии такой же как и мод, в нашем случае 1.15.2. Нажимаем на кнопку «Установить«, дожидаемся установки и первого запуска.

3) Теперь нужно открыть папку с самой игрой, если не меняли в настройках лаунчера путь, то стандартный будет таков:
Windows 7, 8, 10: c:\Users\ИМЯ ПОЛЬЗОВАТЕЛЯ\AppData\Roaming\.minecraft\
Windows XP: c:\Documents and Settings\ИМЯ ПОЛЬЗОВАТЕЛЯ\Application Data\.minecraft\
MacOS: /Users/ИМЯ ПОЛЬЗОВАТЕЛЯ/Library/Application Support/minecraft/
Автовход: В нашем лаунчере нажать на иконку «Папки» в нижнем правом углу, откроется окно с нужной директорией!

4) В ней находим папку «mods» (которая создаётся автоматически после установки любой версии Forge) и заходим в неё. Берём скачанный мод (который с расширением .jar или .zip) и копируем в открытую папку mods.

5) Запускаем лаунчер и входим в версию Майнкрафт Forge, в меню нажимаем на кнопку «Mods«, там находим установленный мод. Это значит то, что теперь мод должен работать. Играем и радуемся! Действительно наш способ установки модов в Minecraft простой? Мы так и думали: Да!

Решение ошибок/крашей у модов
При вылете игры (краше), наш лаунчер показывает «Консоль разработчика«, дабы упростить нахождение проблемы и поиска решения.
1) Ошибка в «общих» классах игры или Java, пример:
Caused by: java.lang.SecurityException: class «javax.vecmath.Matrix4f»‘s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(Unknown Source) ~[?:1.8.0_45]
Решение: Полная переустановка версии игры, самым простым способом является — «Полный сброс«, через настройки TLauncher.
2) Ошибка «java.lang.ClassNotFoundException может указывать на две возможные причины:
2.1) Отсутствие дополнительной библиотеки. Если в данной строчке есть упоминание какого мода с «Lib», то это указывает на необходимость установить данный дополнительный мод.
2.2) «Испорченный» мод. Если всё же в строчке фигурирует название полноценного мода, то есть резон попробовать установить мод актуальной версии или другую версию Forge (Не версию игры, а именно версию Мода и Forge!).
Caused by: java.lang.ClassNotFoundException: net.minecraft.client.gui.inventory.GuiInventory
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
