Pull to refresh
1
0
Send message

Да, такой вариант уже приятнее глазу, но он всё еще не сравнится с оператором ?. А для него необходимо иметь возвращаемое значение вида как минимум Option<()> что воспринимается как: можем вернуть ничего либо ничего. Хотя мне кажется здесь лучше вернуть ошибку, если Ктулху не пришел и ее пробросить выше, но нужно смотреть на контекст.

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

let cthulhu = if let Some(cthulhu) = call_cthulhu() {
    cthulhu
} else {
    return;
};
// ...
tickle(cthulhu);

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

Правильно. Если хочется избежать копирование можно использовать RefCell, но с ним уже нужно быть внимательным: он переносит проверки подсчёта ссылок из компиляции в рантайм и можно словить панику создав 2 ссылки на содержимое если одна из них мутабельная. Например так:

let val = std::cell::RefCell::new(42);
let a = val.borrow();.    // ок
let b = val borrow();.    // ок
let c = val borrow_mut(); // паника

Можно завернуть поле p в std::cell::Cell. Вроде только оно изменяется, но если нет то и другие изменяемые поля завернуть.

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

Встречался с противоположной ситуацией на старом Toshiba satellite: при переходе в сон, вентилятор резко выключался, а лампочка продолжала показывать что ноут все ещё работает. И так мог минут 10 висеть и сильно греться. После какого-то обновления и лампочка стала показывать что ноут во сне, но все равно грелся. Накатил линь: там мог рандомно включиться (это было и на Винде), решилось выключением wake on lan в биосе.

Нашел статью у себя в закладках, может кому-то пригодится: https://habr.com/p/537568

Возможно я не правильно исползовал термин. Я имел ввиду использование памяти, которая вроде уже выделена для нашей программы, но физически она нигде не занимает место (ни в ram, ни в swap, ни на диске), до момента обращения к ней. Подозревал что подобный функционал реализован на железном уровне, но для его использования необходимы специальные вызовы. Ещё не копал в эту сторону, поэтому буду благодарен за какую-нибудь ссылку.

Изм: Быстрым гуглением ничего не нашел. Похоже придется реализовывать подобное на уровне программы.

Изм 2: нашел - называется overcommit, и похоже есть только на Линукс. Работает через обычный malloc, требуется настройка ядра. Вот и подводный камень.

Спасибо, отличный трюк. Сам хотел как-то сделать подобный хеш-мап, но на плюсах и с использованием виртуальной памяти. Не подскажете какие могут быть подводные камни при ее использовании?

А зачем использовать do { ... } while(0)? Разве нельзя просто обернуть в фигурные скобки? Это какой-то негласный стандарт или просто исторически сложилось?

Американские СА будут в доверенных до первого инцедента. А что будет в случае инцедента с неправомерным использованием Российского СА? Перевыпуск? Произошло один раз - произойдет снова.

Я считал, что это уже дорого для подобных брендов.

А вы берете телефон или бренд?

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

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

Lenovo на андроиде с 4й версией, только через пару лет появилась возможность установить 5ю, в то время, как она уже года 1,5 существовала. И все! Больше обновлений я не увидел.

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

И при таком подходе тебе еще и рекламу показывают )))

Я вот никогда не видел рекламу в системе на своем телефоне - сразу шью, собранную на своем ноуте, прошивку, и не могу представить как можно жить с рекламой в системе.

Замените одну строку:

using TT = std::function<void()>;

Будет работать. Только говорят что std::function<T> медленный. Ручаться не буду, но имейте ввиду.

1) можно "забыть забыть"

2) а зачем использовать асимметричное шифрование, там где можно использовать хеширование?

вводя пароль в консоли его можно оставить в истории shell

Ничего подобного. В тексте данной статьи действительно есть такие слова, сбивающие с толку:


$ cryptsetup open /dev/sdX vaultdrive


Я придумал фразу (а точнее, просто пароль в одно слово) «vaultdrive».

Но в данном контексте "vaultdrive" — это не пароль (возможно автор статьи и использовал такой пароль, но это осталось за кадром). Это просто имя, которое будет задано для виртуального дешифрованного устройства в папке /dev/mapper/.
Пароль будет запрошен во время выполнения программы и в историю bash не попадет.

Зачем отходить на метр? Нужно 2 человека: один стоит впереди с огромной горой покупок, которую он оплатит по чужой карте, удочку к которой обеспечит 2й соучастник (он будет очень близко стоять к жертве, и должен приложить устройство к его карте, связанное с устройством 1го злоумышлиника).

И никаких других банковских счетов — все уйдёт на счёт магазина.
Я как-то подзабыл что на Debian так и было. Но к примеру на Arch такая проблема есть, хоть особо и не мешает. Не знаю как на других дистрибутивах, но возможно где-то есть такая же проблема.
Даже у пингвинов после обновления ядра желательно перезагружаться. Например после обновления удаляются старые модули ядра, и ядро не сможет их использовать. кроме тех что уже загружены. Допустим у вас небыл загружен модуль файловой системы FAT32 (vfat), вы обновили систему а потом воткнули флешку с этой файловой системой. Ядро не сможет с ней работать пока комп не будет перезагружен.
Не понял про какие данные вы говорите, но это моя ошибка. Я имел ввиду под данными скрипт, который будет выполнятся на фейковом кабеле. Тоесть порядок нажимающих клавиш, тк кабель у нас подключился к компу как HID.

Кстати необязательно использовать wifi. В распоряжении есть Bluetooth, или вообще простой радиоэфир (на NRF-ке какой-нибудь, или самому сварганить модуль приема/передачи)
Можно переделать устройство, чтобы оно не поднимало сеть, а наоборот пыталось подключиться к заранее заданной. Для атаки надо на несколько секунд поднять wifi, передать данные и опустить wifi. Каратели и не заметят, либо сказать что случайно тыкнул на телефоне.

Information

Rating
Does not participate
Location
Барнаул, Алтайский край, Россия
Date of birth
Registered
Activity

Specialization

Software Developer
Senior
C++
Qt
Linux
Git
Python
Golang
JavaScript
Vue.js
TypeScript