Dmitry Develop
前往频道在 Telegram
Этот канал в основном будет интересен новичкам в программировании и людям немного поопытнее. Здесь я буду делиться своими новостями и достижениями в программировании. Разработка, программирование; c++, gcc, g++, gnu, mingw; winapi, windows; vscode.
显示更多205
订阅者
无数据24 小时
无数据7 天
无数据30 天
帖子存档
Сборки gcc + mingw с сайта winlibs не перестают меня удивлять: уже который раз обращаю внимание на то, что в их сборке находятся самые или почти актуальные версии программ.
Версия g++ на данный момент последняя стабильная: 14.2.0.
Версия clang++ и clangd на данный момент отстаёт от стабильной всего на 5 minor версий: 19.1.1.
А ещё, да, это portable сборка, которую достаточно скачать, разархивировать, добавить в переменные среды (path), что может быть необязательно, если вы знаете, как это сделать временно, и можно работать, даже на флешке и на другом компьютере в школе или у друга.
Никаких установщиков и трудностей выбора каких-то пакетов.
Репозиторий git.
Репозиторий llvm.
ссылка на канал | ссылка на группу
// compile_flags.txt
...
-fexec-charset=windows-1251
Никто не знает можно ли как-то clangd указать execution charset для строковых литералов?
Файл исходного кода у меня в utf-8, но -fexec-charset=windows=1251 перекодирует строки в windows-1251 в скомпилированной программе.
Соответственно я хочу, чтобы визуальные подсказки по ordinary string literal отображались с правильным размером типа данных (const char[N]) и правильными кодами символов (codepoint).
При указании аргумента, отличного от utf-8, для -finput-charset или -fexec-charset, в редакторе появляется ошибка:
Invalid value 'windows-1251' in '-fexec-charset=windows-1251' clang(drv_invalid_value).
Ошибка появляется для любого значения, отличного от utf-8.
По информации из интернета я понял, вроде, что дело то ли в используемом кодировщике iconv или ICU и какой-то их особенности под windows в виде отсутствии поддерживания другой кодировки.
То ли это особенность самого clangd, который также не поддерживает кодировку любую другую кодировку кроме utf-8.
ссылка на канал | ссылка на группуКому понадобится наложить на видео или стрим overlay с нажатыми клавишами, мне понравились вот эти два решения:
Это плагин для obs с набором готовых настроек и атласов для отображения раскладки клавиатуры или игрового манипулятора с состоянием их клавиш:
https://obsproject.com/forum/resources/keyviz.1565/
https://github.com/mulaRahul/keyviz
Это самостоятельная программа с большим количеством настроек, которая показывает на экране нажатые клавиши и их сочетания:
https://obsproject.com/forum/resources/input-overlay.552/
https://github.com/univrsal/input-overlay
Я такую как раз использовал в последнем видео.
ссылка на канал | ссылка на группу
Ничего себе мне книги отдали).
Жаль, жёлтая книга - не связана с обучением и в общем хрень какая-то как по моему мнению, так и по отзывам на ozon.
Зелёная мне понравилась, хотя и является копией 1 в 1 какой-то другой книги.
По-моему там не хватает более подробного объяснения изменяемых и неизменяемых переменных, что происходит при изменении неизменяемых переменных и других вопросов.
Как-то косвенно затрагиваются ссылки.
Не хватает тонкостей работы, например, с кортежами.
Кортежи это неизменяемый тип данных, то есть после их создания нельзя добавлять, удалять или изменять элементы, однако, это не мешает изменять значение элементов, если они изменяемые.
Описания таких тонкостей я не видел, а они важны, у меня на собеседовании такой вопрос задавали.
Так же хотелось видеть в разделе ООП хотя бы краткого описания видов полиморфизма: ad-hoc и параметрический, было бы ещё лучше наличие примеров их реализаций, сравнение на практике и несколько задач на эту тему.
Так же не раскрыта тема сложных декораторов с 3 уровнем вложенности, а я такой когда-то уже писал
Чёрная интересна будет уже после прохождения жёлтой, там много разных практических тем.
ссылка на канал | ссылка на группу
Нравится мне форматировать код по колонкам, отдельно тип данных, отдельно имена и знак равно.
А кто-то мне говорит, это неудобно и долго.
Да как же, если у меня это занимает всего несколько секунд, чтобы один раз сделать нужное форматирование, а если понадобится потом, новые изменения вносятся так же быстро.
Почему бы просто не использовать форматтер кода XY?
Можно, но я предпочитаю сам форматировать свой код, и рука у меня уже на это набита, писать код и поддерживать нужный мне стиль форматирования.
ссылка на канал | ссылка на группу
Принесли мне недавно ноутбук с описанием проблемы: появляется синий экран спустя примерно 10 минут после запуска и через раз происходит загрузка при включении.
А вот конкретную ошибку они почему-то не додумались посмотреть, запомнить и рассказать мне.
Включаю ноутбук, что-то делаю, смотрю журнал ошибок и через некоторое время он намертво зависает, даже курсор не двигается, на caps lock проверить не смог, не было индикатора.
И тут внезапно синий экран смерти с ошибкой CRITICAL_PROCESS_DIED.
И после перезагрузки он больше не загружался, а ssd диска не было даже в bios.
Вставил диск в мой внешний корпус, windows сообщил о диске в 0 байт и предложил его инициализировать, интересный случай...
С диском из моего ПК всё работает.
Разобрал ноутбук, и он оказался после залития, были следы влаги и какие-то разводы, какие-то дорожки и компоненты просто сгнили.
И самое главное, жидкость добралась до ssd диска и там тоже были следы коррозии.
Решил почистить их ватной палочкой с изопропиловым спиртом и отвалился какой-то чёрный smd компонент.
Ну всё, подумал я, приехали.
Прозвонил его мультиметром, это оказался резистор на 10 кОм.
Подумал, это какая-то подтяжка и этот элемент важен для работы диска.
Прозвонкой нашёл какие-то дорожки на m.2 разъёме шли на место обрыва.
Как бы я не пытался, припаять у меня smd компонент никак не получалось, сначала он плохо держался, а потом вовсе куда-то пропал).
Но с капелькой припоя вместо резистора диск всё равно заработал и ноутбук больше не зависал и синие экраны не кидал.
ссылка на канал | ссылка на группу
Ох, сколько же незаконченных дел у меня накопилось за этот и предыдущие месяцы, а сил и желания на них всё не могу найти.
В последнее время было много заказов с просьбой установить разные версии операционной системы windows.
Удалять старое содержимое 1.iso, а потом распаковывать содержимое 2.iso в корень флешки неудобно и/или долго.
Решил я наконец попробовать сделать флешку с ventoy, а не просто делать с ним эксперименты на виртуальном диске.
Установил при помощи Ventoy2Disk, положил все нужные iso образы на нужный раздел,
Достаю ноутбук, подключаю диск, включаю и перехожу в загрузочное меню, и... и ничего.
В загрузочном меню есть все нужные пункты, но не моя флешка.
Вспомнил, каким образом ventoy размечает диск, какой отступ у первого раздела, где находится раздел с ventoy, а ещё у прошивки bios может быть ограничение 137 GB или любое другое число, дальше которого она не сможет загрузиться или увидеть файлы.
А флешка у меня, на минуточку, на 2 TB, так что вероятная причина мне сразу стала понятна.
Хорошо, открыл документацию, нашёл нужный пункт, прочитал, сделал всё по рекомендации, а именно создал третий раздел, который будет после скрытого раздела VTOYEFI, тем самым сдвигая его ближе к началу диска.
Примерно разделы будут выглядеть так: [iso storage(120 GB), VTOYEFI(32 MB), the rest(???)].
И после этого раздел с моей флешкой появился, и я успешно загрузился.
Это всё была теория в домашних условиях на современной технике с возможностью оперативно исправить проблемы, если они возникнут.
Но первая же практика показала, что мне не просто так не понравился ventoy: он просто не запустился на ноутбуке клиента, что бы я не делал.
В итоге я просто распаковал содержимое нужного iso файла, сделал раздел активным, через bootrec восстановил стандартный загрузчик windows (bootmgr) и после этого как обычно загрузился и установил windows.
Мне ventoy не понравился своей очень жёсткой структурой:
первый раздел должен иметь строго 1 MB отступ, ни больше, ни меньше, и иметь название только и только "Ventoy", ничего другого.
второй раздел должен идти строго за первым без каких-либо отступов и иметь название "VTOYEFI", насчёт строгости размера не уверен, но он 32 MB по умолчанию.
А ещё есть куча проверок в загрузчике, который при малейшем отступлении от этих правил выдаёт ошибку и прекращает какую-либо работу.
Изменил хотя бы одну букву названия? Ошибка!
Переместил загрузчик в начало или хочешь хранить iso файлы на третьем разделе? Фатальная ошибка!
Автор ventoy объясняет такую строгость и монолитность простотой поддержки, а я вижу в этом только одни недостатки, особенно для энтузиастов.
Естественно, я решил поискать другие готовые решения для создания мультизагрузочной флешки с возможностью загрузки с iso файлов, но ни один мне не понравился, поэтому я решил попробовать сделать его сам.
У меня была не одна попытка за всё время, но сегодня я смог из-под windows установить на виртуальный диск загрузчик grub2, он даже грузится в qemu, а потом смог настроить grub.cfg, чтобы у меня появились хотя бы какие-то пункты в меню.
Возможно, я создаю себе лишнюю работу, но мне нравятся изучать что-то новое, сложное и интересное).
ссылка на канал | ссылка на группу
Это что ещё за булочка?)
А это мне сегодня пришли два микроконтроллера esp32-c3 ревизии модели FN4 со встроенной памятью 4MB.
Их покупку мне проспонсировал один участник группы по arduino.
С моей стороны нужно будет сделать инструкцию, как развернуть окружение в vs code для полноценной работы с этими микроконтроллерами.
Не знаю сколько уйдёт на это времени, ведь нужно собрать как можно больше материала, проверить его, систематизировать, записать видео, смонтировать и озвучить.
Постараюсь так же воспроизвести специально или столкнуться случайно с какими-то распространёнными проблемами, решить их, описать проблему и решение.
ссылка на канал | ссылка на группу
Уже прошёл месяц с того момента, как я открыл issue в github репозитории расширения code lldb для vs code, но мне так никто и ничего не ответил.
https://github.com/vadimcn/codelldb/issues/1127
Суть проблемы в том, что при использовании LLDB на windows 10 в vs code во время отладки кнопка изменения значения переменной неактивна, если переменная типа псевдонима из stdint.h (cstdint), а если стандартного типа, то всё работает, как ожидается.
Через консоль отладки значения переменных обоих типов спокойно изменяются.
Такое наблюдается что на одном расширении, что на втором, если использовать LLDB.
Если вместо LLDB использовать GDB, проблема пропадает.
Проблема в vs code, в расширении, в отладчике?
Подскажите, с чего мне начать, что почитать, что попробовать?
Может, есть какой-то ключ для отладчика?
ссылка на канал | ссылка на группу
