Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как сгенерировать изображение 3D кубиков (игральных костей) на стороне сервера?

Лучший ответ:
заранее наделать пару тысяч статических картинок не дешевле получится?

Худший ответ:
У меня пока такая идея:
сам рендеринг изображения можно выполнить при помощи запуска headless браузера, в котором выполняется сценарий на JS с библиотекой Three.js. Нужно лишь случайным образом расположить камеру и сохранить изображение объекта.
Вопрос: Какой смысл в CSS фреймворках, если есть чистый CSS?

Лучший ответ:
css фреймвроки нужны чтоб по быстрому набросать прототип, без какого либо дизайна

В реальных проектах с проработанными дизайн макетами css фреймворки не используются. А если используются, то дизайн макет должен быть полностью адаптирован под этот самый фреймворк

Худший ответ:
Если вы об этом, то мне нравится бутстрап для проектирования красивых форм.
Вопрос: Realtek RTL8822CE отваливается Wifi Fedora Linux 36?

Лучший ответ:
Такая же проблема была. Помогло отключение сервисов местоположения. Настройки - Конфиденциальность - Сервисы местоположения (необходимо выключить (синий переключатель))

Худший ответ:
После выхода обновления fedora 37 и ядра 6.0.0 проблема исчезла.
Вопрос: Какой выбрать ноутбук для программиста?

Лучший ответ:
Процессор обязательно Интел (Опыт в программировании с АМД у меня печальный)
Ryzen сейчас крайне хорош, да ещё и жор меньше, чем у интела.

По требованиям - нашёл вот такие варианты:
HP Pavilion 15-ec1090ur
Lenovo Legion 5 15IMH6
ASUS Vivobook Pro 15 OLED K3500PC-L1012T
Acer Swift X SFX14-41G- R3N5

Худший ответ:
1) Размер ноута 15 дюймов. Если больше - будешь ходить с чемоданом или большим рюкзаком. Минимум 13 дюймов - работать можно, но все вкладки, сайдбары придется убрать с экрана - неудобно.

2) Мы (программисты) работаем с экраном - код на экране, результат и отладка тоже... Поэтому очень важно, чтобы экран был хорошим, красивым, отображал цвета (если веб разработка). Глаза не устают.

3) Хорошо, когда есть 8Гб памяти. Минимум 4Гб, но работать хуже - зависать будешь чаще. Больше лучше, но хорошо, когда есть 8Гб.

4) SSD 256Гб тоже хорошо. Нужно больше подключишь внешний диск. Архивы держать на внешнем.

5) Самое последнее, что тебе нужно смотреть - это процессор. Почему? Потому что программисты могут работать на любой машине, какой тормознутой бы она ни была. Итак, сколько осталось денег все в процессор. Конечно чем круче проц, тем лучше.

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

Из опыта: я часто летал на о.Бали, на Филлипины, Вьетнам, Малайзия. Ноут 17 дюймов - твой враг!

P.S. Не бери кредит или в минимум. Я работал на ноуте 13 дюймов $200 и заработал на нормальный ноут. Если тебе будут предлагать игровой ноут - тебя разводят на бабло (кредит).
Вопрос: Можно ли сделать дамп MySQL БД из консоли Linux, исключив из него определенные поля определенных таблиц?

Лучший ответ:
https://dba.stackexchange.com/questions/34887/mysq...

советы примерно следующие:
* сделать выборку по полям и сдампить в Csv
* сделать выборку во временную таблицу и уже ее дампить

Худший ответ:
В общем, сделал так:

1. Сделал копию базы.

2. В копии выполнил что-то вроде:

UPDATE `user` SET `username` = NULL, `email` = NULL, `phone` = NULL

3. Сдампил копию.

Конечно, хотелось бы одной командой, но не судьба -)
Вопрос: Изменение памяти — законно?

Лучший ответ:
Винда позволяет читать и писать в память чужого процесса. Конечно, всё в рамках прав твоей и целевой программы. Пример такой программы - ArtMoney - популярная в свое время (да и актуальная сейчас) программа для "взлома" сингловой игры на деньги, опыт и прочее.

Читы же работают так: 
1. Создается библиотека, которая может быть подключена к целевой программе. Под библиотекой понимается dll. Эта dll располагается в памяти чужого процесса (например, ManualMap способ).
2. В чужой программе создается поток, который инициирует эту библиотеку и запускает нужную функцию (точка входа). 
3. Теперь dll, в которой ваш код имеет прямой доступ ко всей памяти процесса, а так же, ко всей работе программы. Можно получить доступ к классам, методам свойствам и так далее.

Худший ответ:
Обычно ОС не позволяет обращаться к памяти другой программы только если у желающей программы нет каких нибудь повышенных прав.
Такие повышенные права могут быть у:
1. Драйверов и других kernel-mode программ
2. У программ, запущенных с root или же админскими правами.

Ну и не забываем, что ОС бывают разные.
Вопрос: Считается ли это плагиатом (моб приложение)?

Лучший ответ:
Сто тыщ раз говорили - обычно пофиг. Заниматься вопросом "а этот нехороший человек-редиска стырил у нас дизайн" начинают тогда, когда тыреное приложение начинает каким-то образом забивать оригинал или хотя бы отьедать от него долю рынка.
Но и тут зависит от того, сколько владелец оригинала готов потратить на суды.
Если приложение-оригинал скачало полторы калеки - и ваше полторы калеки - всем будет пофиг.

Худший ответ:
Сто тыщ раз говорили - обычно пофиг. Заниматься вопросом "а этот нехороший человек-редиска стырил у нас дизайн" начинают тогда, когда тыреное приложение начинает каким-то образом забивать оригинал или хотя бы отьедать от него долю рынка.
Но и тут зависит от того, сколько владелец оригинала готов потратить на суды.
Если приложение-оригинал скачало полторы калеки - и ваше полторы калеки - всем будет пофиг.
Вопрос: Есть ли бесплатный хостинг для скриптов?

Лучший ответ:
"скрипт из интернета" связанный с деньгами
выдерживал большое посещения, не лажился
Неужели у бизнесмена нет 100 рублей на хостинг?
Закончились времена халявы.

Худший ответ:
Не понял из-за кучи терминов, если вы просто про бесплатный хостинг, то вот https://app.netlify.com/ уже как пол года юзаю
Вопрос: Powershell как заменить 2 последних символа в каждом слове?

Лучший ответ:
"Иванов Иван Иванович" -replace '\w{2}(\s|$)','*$1'
Иван* Ив* Иванов*

Худший ответ:
В общем для чего мне это было нужно, я хочу брать из служебной записки ворд ФИО которое укажет пользователь, следовательно пользователи бывают разные и ФИО могут указать не в именительном падеже, поэтому я принял решение обрезать 2 буквы от каждого слова и заменять звездочками, пробовал на разных ФИО в АД вроде без проблем ищет в 100% случаев нужного мне человека, возможно мой код полнейший колхоз))) но я до этого дошел сам и это главное))) у кого будут предложения по оптимизации, всегда рад
P.S. на названия переменных внимания не обращайте)) это из черновика
$familiya = $fio |% {"{0}" -f $_.split(' ')} |% {$_.Substring(0, $_.length - 2) }
$imya = $fio |% {"{1}" -f $_.split(' ')} |% {$_.Substring(0, $_.length - 2) }
$otchestvo = $fio |% {"{2}" -f $_.split(' ')} |% {$_.Substring(0, $_.length - 4) }
$searchname = "$($familiya)* $($imya)* $($otchestvo)*"
$aduser = Get-ADUser -Filter {Name -like $searchname} -Properties Description
Вопрос: Какой курс по word press можно купить для 15 мальчика?

Лучший ответ:
Любой, как тут говорят, курсы это налог на тупость

Худший ответ:
Задачи парня поддерживать сайт и улучшать макет сайта 
Для улучшения макета - нужен не курс по wordpress, а курс по верстке + иногда php при отрисовке по условию.

По теме вопроса: любой курс для уровня beginner => т.е не udemy, а ютуб с ключом = посадка верстки на wordpress.

Курс как правило подразумевает под собой - разработка темы с нуля, и всё это так же есть бесплатно на ютубе и кодексе wp.
Вопрос: Какие существуют способы бесплатной интеграции whatsapp в битрикс?

Лучший ответ:
Бесплатных легальных сервисов для интеграции WhatsApp (т.н. WhatsApp Business API) нет. Есть нелегальные (не очень дорогие), основанные на имитации взаимодействия с WhatsApp Web, но с ними есть риск получить бан, так что как минимум особенно ценный номер телефона я бы таким в любом случае не доверил.

Худший ответ:
В пакете Подписки на Маркет появилось, по их заявлению, первое полностью бесплатная интеграция.
Приложение YousApp.
Оплачивается только подписка на Маркет.
Вопрос: Калькулятор на Python?

Лучший ответ:
У вас несколько раз повторяется одинаковая строка. Подумайте, как сделать, чтобы она не повторялась. 
Также надо добавить обработку неверного ввода (не чисел и не мат.операторов) и обработку деления на нуль.

Худший ответ:
есть интересная команда exec, она упростит код
метод Python exec() выполняет переданный набор кода в виде строки.

cmd = r'print({} {} {})'.format(a, z, b)
exec(cmd)
Вопрос: Как наверстать сайт без знаний верстки?

Лучший ответ:
Не существует web-программистов без знания основ вёртски. Если лень разбираться с вёрсткой, то лучше даже не пытаться эту область изучать.

Худший ответ:
Минимальные знания HTML ведь у вас есть? Берите какой-нибудь готовый шаблон в этих ваших интернетах (есть и бесплатные и не дорогие) и используйте.
Вопрос: Выучил синтаксис языка. как использовать его на практике?

Лучший ответ:
Надо действительно написать этот самый круд.
А дальше его переписывать. 
Этим можно себя занять очень надолго.
Причем не надо сразу задрав штаны бежать за красивыми словами - эмвэце, оопэ. 
Учиться надо постепенно. Иначе станешь не разработчиком, а попугаем. 

MVC надо прочувствовать. Надо поставить себя в ситуацию, когда станет понятно - "Вот я дебил, зачем же я SQL вперемешку с HTML писал! Теперь придется выковыривать. Но уж дальше у меня логика и вывод будут разделены!".  
А потом - "Вот я дебил, зачем же я прямо в контроллере всю логику шарабашил! Теперь в консольной команде то ли код дублировать, то ли опять логику из НТТР интерфейса выковыривать". 
И потом - "Вот я дебил, всё сам на коленке писал, когда в фреймворке всё уже готовое!"
И так много-много итераций. 

И это я не перечисляю совсем уж детсадовские инсайты, типа "вот я дебил, оказывается если SQL запросы не защищать, то и авторизацию по сути писать бесполезно - все равно кто хочешь зайдет" и "Ой, оказывается кроме меня на сайте ещё другие пользователи есть! И им ошибки показывать не надо!"  

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

Худший ответ:
Синтаксис языка это просто некая надводная часть айсберга. Помимо синтаксиса есть еще такие вещи как 
- runtime
- экосистема библиотек
- best practices
Ни один учебник языка обычно не в состоянии охватить эти все вещи. Да и не надо пихать в учебник. А чтобы испольовать на практике - надо найти команду которая что-то делает и влиться в нее на добровольных началах. Побыть учеником. Юнгой на корабле. Тебя будут ругать бить и пинать. Но это нормально. Только так. Из самых низов можно чего-то достичь.
Вопрос: Как работает инкремент?

Лучший ответ:
a++ - возвращает изначальное значение "a", а потом увеличивает на единицу
++a - увеличивает "a" на единицу, а потом возвращает получившееся значение.

Писать такой код не следует.

Худший ответ:
cout << ++a;
Порядок решает
Вопрос: Как лучше делать return?

Лучший ответ:
В конкретном примере больше ничего не нужно def test(a):
    return a == "abc"

В общем случае предпочитаю один return, так прямее на мой взгляд.

Худший ответ:
В данном случае никакой разницы.  В обоих вариантах код простой, короткий и понятный. Второй покороче, я бы его использовал.

На практике часто смешиваются эти два варианта. Сначала обрабатываешь простые граничные случаи, в них сразу пишешь return True/False/1/0. А потом заводишь нужные переменные, обрабатываешь общий случай с разными ответвлениями и вычислениями, в конце которого уже идет return answer.
Вопрос: Как писать условие if если очень много значений для проверки, а нужно чтобы они за экран не залезали, не превращались в очень длинную строку?

Лучший ответ:
Это очень хороший вопрос!

 Для длинных условий можно и нужно использовать такую замечательную практику, как именованные условия!
В большинстве случаев, когда условия не зависят друг от друга, можно просто присвоить результат вычисления условия переменной с обязательно говорящим именем, и дальше уже использовать эти переменные:

$dateIsValid = $obj->getDate() >= getCurrentDate();
$balanceOk = $obj->getBalance() > 0;
// Любые другие условия
if ($dateIsValid && $balanceOK) ...

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

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

Худший ответ:
It depends.
Абстрактных решений тут не будет, всё зависит от того, что это именно за условия.
Из стандартных методов - упрощение логических выражений, вынесение условий в функции, замена проверок вида x == 1 || x == 2 || ... || x == n на [1, 2, ..., n].includes(x) и т.п.
Вопрос: Что означает эта иконка на консольном приложении?

Лучший ответ:
Нет, это не значит, что приложение запущено.
Тем более, если его нет в процессах.
А значок у консольного приложения может быть любой, он настраивается при написании программы.

Худший ответ:
Может быть
А может и нет.
Так это или нет - знает только его разработчик. Он может менять иконку по событию (как "Корзина", например), а может - по желанию своей левой пятки.
Вопрос: Как «натравить» утилиту Rufus на жесткий диск?

Лучший ответ:
Не стоит никак размечать диски с порченными секторами. Забирайте с них важные данные и сдавайте по гарантии, если она ещё не закончилась. 

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

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

Худший ответ:
А смысл, диск умирает и это неизбежно , оживить ну получится
Вопрос: Python или C# для игр?

Лучший ответ:
Очевидно C#

Худший ответ:
Конечно же C#
Вопрос: Логирование в разные файлы в Python3?

Лучший ответ:
Добавьте название для логгеров 
log_left = logging.getLogger('left')
log_right = logging.getLogger('right')
Если не передавать название, то будет приходить root - логгер, который один

Худший ответ:
Для этого необходимо более явно указывать название логгера при получении. Например:
log_left = logging.getLogger("left_logger")
log_right = logging.getLogger("right_logger")
Вопрос: Почему прыгает качество сигнала?

Лучший ответ:
Если коаксиал это какой нибудь rg-6 то длину надо уменьшить и проверить как он соединен с антенной. И пигтейл на модеме самодельный или заводской? 5 метров для 4g это не менее 3 дБ потерь, половина усиления антенны зачастую. Расположите модем как можно ближе к антенне, используйте USB удлинитель, но придется найти очень хороший, на большей части барахла только мышка может работать. Синяя антенна это какая? Что нибудь на ней написано? она точно для 4g?

Худший ответ:
Купить микротик с симкой, типа SXT. Поставить на крышу
От него кинуть витую пару вниз

А вы не думали что роутер на крыше немного офигивает от погоды?)
Вопрос: Почему не получается получить значение value?

Лучший ответ:
сравните

class="input-in"
и 
document.querySelector(".input-it")

и будьте внимательней

Худший ответ:
сравните

class="input-in"
и 
document.querySelector(".input-it")

и будьте внимательней
Вопрос: Я когда слушаю звук с ноута через Bluetooth-колонку (типа JBL) — чей ЦАП используется — колонки или ноута?

Лучший ответ:
Колонка. Вот там где цифра перетекает в непрерывное напряжение - (усилитель) - вот там и появляется
аналоговый сигнал. До этого весь pipeline (или как говорят в радиотехнике - тракт) полностью цифровой.

Bluetooth - это тоже стандарт цифровой связи хотя и в радио-диапазоне.

Худший ответ:
Если суммировать обсуждение в комментариях к предыдущему топику, то в моем случае это происходит так:

1. Обмен аудио с колонкой идет по протоколу https://ru.wikipedia.org/wiki/A2DP который предусматривает повторную оцифровку звука.

2. В практическом смысле это значит вот что: если я даже запускаю на ноуте FLAC, то в колонке будет играть НЕ FLAC а его пережатая копия. 

Иными словами, лучшее качество будет при воспроизведении с USB/SDCard а не через Blutooth.

Это ответ.
Вопрос: Как решить проблему с N + 1 запросом БД при выборке модели с getNameAttribute?

Лучший ответ:
Вот это должно работать:
public function reviews(): HasManyThrough
{
    return $this->hasManyThrough(
        Review::class,
        Comment::class,
        'commentable_id',
        'reviewable_id'
    );
}

public function getCommentsCountAttribute(): int
{
    return $this
        ->reviews
        ->where('commentable_type', Review::class)
        ->count();
}

Ну и да, при выборке вы должны указать, что хотите для коллекции постов жадно загрузить comments.

Худший ответ:
Получается 3 модели Post, Review, Comment.
Нет смысла делать модель Review. Это одинаковая с Comment сущность. Добавляется поле parent_id и "Review" это будет Comment со скоупом whereNull parent_id. 
public function scopeParents($query)
{
    return $query->whereNull('parent_id');
}
А у комментариев отзыва parent_id == id отзыва. И будет структура, как на Тостере. 
Если отзывы и комменты добавляются к разным моделям (посты, товары и тд) то стандартная полиморфная связь.
В модели коммент
public function commentable():
{
    return $this->morphTo();
}

В трейте, который нужно добавить ко всем моделям у которых есть комменты

public function comments()
{
    return $this->morphMany('App\Models\Comment', 'commentable');
}

Количество комментариев считать как обычно методом withCount. Просто для "отзывов" добавлять скоуп ->parents() к отношениям.
Вопрос: Какое VPN расширение выбрать для Firefox?

Лучший ответ:
VPN в расширениях не бывает, только Прокси. 

Из хороших могу посоветовать "Обход блокировок Рунета", очень много разных настроек (подключение локально через Тор, подключение локально через WARP), и куча чего еще, открытый код.
Подробнее. (Пункт про Прокси)

Также есть "Censor Tracker", также открытый код, можно настраивать проксирование определенных сайтов, можно убирать сайты из проксирования, напрямую работает с реестром заблокированных сайтов от РосКомСвободы, так как это их проект.
Подробнее.

Худший ответ:
Из расширений, лично у меня, лучше всех BrowSec работает.
Вопрос: Как почитать строку в java?

Лучший ответ:
Например, перебирая посимвольно с помощью цикла и метода String.charAt().
И лучше выбрать другое имя для метода калькулятора.

Худший ответ:
Добрый день.
На самом деле можно по-разному реализовать ваш функционал.
Все зависит от того, насколько глубоко вы хотите копнуть...
Если вы только изучаете java, а судя по методу main, это так и есть, то коллега вам уже подсказал.
А так можно например, глянуть в сторону постфиксных операторов https://stackoverflow.com/questions/12269191/postf...
Или например, реализовать паттерн интерпретатор для реализации функционала калькулятора и т.д. В общем, вариантов куча
Вопрос: Какой выбрать ЯП для непрограммиста?

Лучший ответ:
C - забудьте, не надо. SQL - не понял. Это язык запросов к бд. Если у вас есть СУБД с SQL - учите. Нет - не надо.

А так - для "вторичных костылей" вполне подойдут питон и что то с джаваскриптом

Худший ответ:
Учите JavaScript+html+css так как эта связка много где работает.
Вопрос: Какой глубины должын быть заряд -разряд на замененной батареи смартфона?

Лучший ответ:
Не нужно. В процессе эксплуатации сам подстроится.

Худший ответ:
Ничего не нужно, просто заменил, зарядил и пользуешься.
Вопрос: Автоматическое обновление windows xp как исправить?

Лучший ответ:
1) Попробовать через другой браузер

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

Худший ответ:
попробуй эту ссылку, вроде бы есть возможность загрузить буквально все обновления в т.ч. для winxp официально, вручную и для offline установки
к сожалению придется качать все файлы и заранее не узнаешь, для какой операционной системы оно
Вопрос: Как проще определить какие поля изменились при обновлении модели?

Лучший ответ:
Если доку не читали в гугле вводим Laravel Dirty, 3-5 минут читаем понимаем, затем делаем как нужно.

Худший ответ:
Если доку не читали в гугле вводим Laravel Dirty, 3-5 минут читаем понимаем, затем делаем как нужно.
Вопрос: Можно ли на Kyocera запретить печатать форматы А4, А3, А5, А6 и т.д.?

Лучший ответ:
Попробуйте так: укажите в настройках, что в лотке A5. По идее после этого принтер должен ругаться при попытке печатать на A4, потому что будет думать, что у него нет подходящей бумаги.


Худший ответ:
Попробуйте так: укажите в настройках, что в лотке A5. По идее после этого принтер должен ругаться при попытке печатать на A4, потому что будет думать, что у него нет подходящей бумаги.
Вопрос: Подвох с указанием банковской карты при регистрации в онлайн сервисе и навязанная опция автосписания — как избежать растраты средств?

Лучший ответ:
1)Выпускате виртуалку 
2) Проходите регистрацию
3) через 10 мин после оплаты блокируете виртуалку 

Никакие ваши персональные данные  они не получат кроме тех что сами вы  введете

Худший ответ:
Никогда и никому не давайте номера карты с деньгами. Выпустите виртуалку - Я.Деньги, Киви, тысячи их. Закидывайте на нее и платите с нее и только с нее. Насчет фио - по-моему можно писать от балды, я же могу выпустить карту например подруге :) Главное, чтобы сервису передали то фио, которое на карте
Вопрос: Почему не определяется хост в /etc/hosts?

Лучший ответ:
Потому что в браузере включён прокси. В таком случае ваш hosts не имеет значения.

Уберите прокси или расширения которые его включают

Худший ответ:
ping unika.htb что показывает?
В браузере "безопасный DNS" (не дословно) выключен?
Вопрос: Можно ли использовать «async ValueTask» в Unity?

Лучший ответ:
В юнити нельзя, тк ValueTask - это слишком новая фича.
Но скорее всего он вам не нужен

Худший ответ:
Такое поведение с доступностью/недоступностью в коде идёт от того, что Unity сама генерирует файлы .sln и .csproj для проекта. Ты добавляешь ссылку на пакет через Nuget, Unity это не понимает и убирает эту ссылку, когда пересохраняет сборку при открытии движка. Unity из коробки не дружит с Nuget
Вопрос: Как лучше начать строить карьеру в IOS разработки?

Лучший ответ:
Идёте на Авито и покупаете тот Макпук, что сможете позволить.
Или Mac mini. На актуальные (поддерживаемые) версии прайс идёт от 40k (при этом сможете его использовать лет пять), при этом во вполне комфортной конфигурации.
Но можете и виртуалку поднять, образов с системой полно.

Худший ответ:
1)Читаете книгу Усова "Swift. Основы разработки приложений под iOS и macOS" - там примеры можно разбирать и на РС, он объясняет как. Свифт кроссплатформенный. Более того - существуют онлайн среды выполнения простых скриптов на Свифт, примеры можно разбирать и там
2)Читаете "iOS Programming: The Big Nerd Ranch Guide" - там есть версии этой книги которые базируются на Objective-C - ищите те что поновее, там Свифт .

Если не знаете английский - тут хуже, ищете любую книжку на том языке что вы понимаете. Их мало, поэтому перебирать харчами не приходится - хватаете и учите.
Лично мне очень нравится Big Nerd, потому что у этого чувака своя школа обучения программированию, буткемп, и эта книжка - учебник с этого буткемпа, там прямо всё методически хорошо, как человек не чуждый преподаванию это вижу. Я проходил буткемп по данной программе - мне весьма и весьма понравилось как всё построено, в общем книгу рекомендую.
Однако было бы глупо не упомянуть такой классный источник знаний как проект Рея Вендерлиха - это конкурирующий с Ранчо ресурс, тоже очень классный и качественный.

Почитав упомянутые две книжки берете и пишете приложения. Как все пишут - тудушку, список покупок, чатик на Firebase, прорабатываете паттерны проектирования.
Стучитесь и ищете стажировку или позицию джуна.

По поводу отсутствия техники эппл.
1)б/у мак мини на вторичке - они там недорого
2)хакинтош
3)идете на любимый трекер и качаете оттуда готовую и настроенную виртуалку с макос. ВАЖНО - именно готовую, смысла трахаться с установкой макоси на виртуалку не вижу никакого - все эти пляски с патчами ядра итп - глупая потеря времени которая не научит вас ничему кроме установки патченой макос на виртуалку - не самые нужные в жизни знания

когда я был на буткемпе по iOS разработке, там на группу из 30 человек настоящих железных маков было три, остальные как-то обошлись виртуалками.

С++ учить не надо, если хотите в iOS разработку - учите сразу iOS разработку