С UEFI вообще забавно, стандарты не читал, но большинство материнок просто ищут файл на первом разделе жёсткого диска по пути /EFI/BOOT/BOOTX64.EFI и запускают его на выполнение (справедливо для x86_64, для других архитектур другие имена). Даже ядро линукса давно умеет грузиться в UEFI.
The EFI Boot Stub On the x86 and ARM platforms, a kernel zImage/bzImage can masquerade as a PE/COFF image, thereby convincing EFI firmware loaders to load it as an EFI executable.
Даже существуют утилиты, которые соберут вам в один EFI-файл initrd+kernel linux (даже без загрузчика!) и это просто будет запускаться с флешки, по факту являясь файлом-прошивкой для архитектуры x86_64.
миф, что пользователи хотят именно так. Они хотят хорошо структурированную информацию
Делали приложение, так главная страница занимает, наверное, экранов двадцать - приходится скроллить. Пользователей переубедить не удалось, им привычен такой порядок элементов и чтобы всё находилось в одном месте. Только добавили сбоку быструю навигацию, но ей не пользуются.
оперативная память DDR4 комплект 8*2 ГБ или 16 ГБ * 6 штук
оперативная память DDR3 комплект 8*2 ГБ или 16 ГБ * 10 штук
SSD M2 NVME 512 ГБ * 6 штук
SSD M2 NVME 256 ГБ * 10 штук
SSD sata 256 ГБ * 10 штук
SSD sata 512 ГБ * 5 штук
Потом всё это совершенно внезапно собралось в новые компьютеры, лишнее из заказа пошло на апгрейды существующих. Года через два на системниках появились инвентарные номера. Как это оформили в бухгалтерии - не знаю
Это несравнимые категории: самостоятельное изготовление книги и домашняя печать на лазерном принтере. Заказывал в типографии книгу на 700+ ч/б страниц в твёрдом цветном переплёте, размер А5. У типографии стоит готовая машина, которая печатает с двух сторон на стандартной 80 г/м2 офисной бумаге А4, финишер складывает тетрадки с сразу же сшивает блок книги. Человеку остаётся только приклеить обложку (+500 рублей). Книга обошлась где-то в 2700 рублей за каждый экземпляр.
Сразу видно в по сигнатуре функции, что значение возвращается через аргумент или иным способом функция модифицирует передаваемое значение. Плюс компилятору должно быть больше информации для оптимизаций.
let mut buf_rx: [MaybeUninit<u8>; 2048] = …;
let size = socket.recv(&mut buf_rx).unwrap();
Да, накладываются большие ограничения на реализацию трейтов (типажей), реализация может быть написана только для своего трейта или для своего типа, но нельзя взять одновременно чужой трейт и чужой тип - не скопилируется. Раньше, вроде, обходилось путём typedef - и у тебя на руках якобы свой тип.
Вот более современная сборка под таргет *-unknown-uefi
С UEFI вообще забавно, стандарты не читал, но большинство материнок просто ищут файл на первом разделе жёсткого диска по пути /EFI/BOOT/BOOTX64.EFI и запускают его на выполнение (справедливо для x86_64, для других архитектур другие имена). Даже ядро линукса давно умеет грузиться в UEFI.
Даже существуют утилиты, которые соберут вам в один EFI-файл initrd+kernel linux (даже без загрузчика!) и это просто будет запускаться с флешки, по факту являясь файлом-прошивкой для архитектуры x86_64.
Питоновский скрипт здесь явно лишний, хватило бы строк десять в уже существующем makefile. А так поздравления с первым работающим кодом!
Теперь ждём такую же статью не на Си, а на Расте.
Именно, не загрузчик, а EFI-приложение, работающее на bare metal.
Почти на 100% уверен, что там бесконечная крутилка, как колёсико мыши.
В стабильном дебиане такого нет. В убунте да, такое бесило.
Так новая версия XFCE вышла Dec 15 2022.
Делали приложение, так главная страница занимает, наверное, экранов двадцать - приходится скроллить. Пользователей переубедить не удалось, им привычен такой порядок элементов и чтобы всё находилось в одном месте. Только добавили сбоку быструю навигацию, но ей не пользуются.
Извиняюсь за оффтоп. Пример кода:
warning: V560 A part of conditional expression is always true: ch <= 255. The value range of unsigned char type: [0, 255].
Отлично, один варнинг есть. Но есть ещё претензии к коду, который можно отловить автоматически:
повторный вызов
isalnum
в этом же выражении - микрооптимизация: вынести вызов перед сравнениемisalnum
возвращает 0 или НЕ ноль, то есть сравнение== 2
(и== 1
) некорректно. Правильно== 0
или!= 0
Незамеченное UB?В расте так и сделано, переменные по умолчанию не мутабельные, хочешь изменить переменную - укажи модификатор
mut
.У нас в организации как-то временно запрещали закупать компьютеры. Окай, подумали мы, и в следующей закупке было закуплено:
компьютерный корпус с блоком питания мин ХХХ ватт и usb3 на передней панели * 12 штук
материнская плата, сокет такой-то с M2 * 12 штук
процессор Ryzen 5 (?) столько-то ядер * 6 штук
процессор Ryzen 3 (?) столько-то ядер * 6 штук
кулеры мин ХХХ ватт
оперативная память DDR4 комплект 16*2 ГБ минимальная частота ХХХХ ГГц * 10 штук
оперативная память DDR4 комплект 8*2 ГБ или 16 ГБ * 6 штук
оперативная память DDR3 комплект 8*2 ГБ или 16 ГБ * 10 штук
SSD M2 NVME 512 ГБ * 6 штук
SSD M2 NVME 256 ГБ * 10 штук
SSD sata 256 ГБ * 10 штук
SSD sata 512 ГБ * 5 штук
Потом всё это совершенно внезапно собралось в новые компьютеры, лишнее из заказа пошло на апгрейды существующих. Года через два на системниках появились инвентарные номера. Как это оформили в бухгалтерии - не знаю
Любой лазерный принтер и даже простая фотобумага легко позволит печать с плотностью пикселей 1200 dpi. Теперь сравните с экранами тех же смартфонов.
Это несравнимые категории: самостоятельное изготовление книги и домашняя печать на лазерном принтере. Заказывал в типографии книгу на 700+ ч/б страниц в твёрдом цветном переплёте, размер А5. У типографии стоит готовая машина, которая печатает с двух сторон на стандартной 80 г/м2 офисной бумаге А4, финишер складывает тетрадки с сразу же сшивает блок книги. Человеку остаётся только приклеить обложку (+500 рублей). Книга обошлась где-то в 2700 рублей за каждый экземпляр.
Что там за глобальная переменная _isWithFracture?
Либо две функции делать:
Либо условную компиляцию:
Тогда так:
"git add ." - это вообще за гранью зла, особенно если есть специально не добавленные в коммит файлы.
Сразу видно в по сигнатуре функции, что значение возвращается через аргумент или иным способом функция модифицирует передаваемое значение. Плюс компилятору должно быть больше информации для оптимизаций.
с++ же не умеет в возвратный полиморфизм, или нет?
Выше про примитивы рассказали, но не показали. А ваш с++ может так?
Да, накладываются большие ограничения на реализацию трейтов (типажей), реализация может быть написана только для своего трейта или для своего типа, но нельзя взять одновременно чужой трейт и чужой тип - не скопилируется. Раньше, вроде, обходилось путём typedef - и у тебя на руках якобы свой тип.
Извините, а где можно скачать старую версию приложения (например, 5.39 LTS для старой архитектуры процессора)? Раньше была ссылка вида repo.2gis.ru.