Смена пароля не поможет, т. к. Dropbox не запоминает пароль пользователя.
Он распаковывают в папку /Library/DropboxHelperTools/ набор мелких утилит (которые выполняют операции по добавлению Dropbox'а в список Accessibility и др.) и устанавливают им бит suid. С этого момента эти утилиты периодически запускаются Dropbox'ом и отрабатывают с правами суперпользователя.
Смена пароля не снимет suid-бит, и, соответственно, не отберет у Dropbox'а права.
Ответ кроется в реализации методаList<T>.Enumerator.MoveNext(), который используется конструкцией foreach:
1) Он проверяет, не изменился ли List<T>.
2) Он проверяет выход за границы массива.
Когда CLR видит стандартную конструкцию вида for (int i = 0; i < array.Lengh; i++), она (среда выполнения) убирает проверку на выход за границы массива. Из-за этого RawArrayFor работает так быстро.
Когда CLR видит конструкцию вида foreach (var x in array), где array — это обычный массив, она заменяет foreach на обычный for, а дальше применяется упомянутая выше оптимизция. Из-за этого RawArrayForEach работает так же быстро.
Когда CLR встречает конструкцию for(...) или foreach(...), работающую с List<T> или любой другой динамической коллекцией, все становится плохо:
а) При использовании for(...) CLR не может убрать проверки на выход за границу коллекции, т. к. размер списка может быть изменен другим потоком во время работы цикла.
2) При использовании foreach(...) CLR не может заменить его на for(...), т. к. при обходе коллекции каждый раз проверяется отсутствие изменений и инвалидация итератора в противном случае.
Скорее всего то, что все PUSH-уведомления для iOS-девайсов идут через Apple Push Notification Service (APNS), запросы к которому должны быть подписаны сертификатом.
Сторона, не имеющая такой сертификат, не может отправлять PUSH-уведомления в приложение.
Сторона, имеющая такой сертификат, теоретически может отправлять уведомления в любой инстанс приложения на любой девайс.
Visual Studio 2008, судя по всему, не поддерживаете? Хотел проверить рабочий проект, у нас достаточно интересный кейс: софт под WinCE, пишется в VS2008.
Если знание английского позволяет, можете заглянуть сюда: www.reddit.com/r/rust/
На этот раздел подписаны 6,5 тысяч людей, в том числе те, кто контрибьютит в Rust (серые и сиреневые бейджи «rust»), а также сами создатели языка (оранжевые бейджи).
Уверен, что с вашим вопросом вам там смогут помочь.
Следующий раздел из документации, которую процитировал Xlab, говорит:
Chaining results using match can get pretty untidy; luckily, the try! macro can be used to make things pretty again. The try! macro expands to a match expression, where the Err(err) branch expands to an early return Err(err), and the Ok(ok) branch expands to an ok expression.
Т. е. в тех случаях, когда нужно просто пробросить ошибку наверх, достаточно написать:
Для этого случая Гугл предлагает распечатать пачку резервных кодов подтверждения.
Предполагается, что в случае утери ключа/телефона вы достаете листочек с кодами из сейфа, входите в аккаунт и выключаете двухфакторную авторизацию до тех пор, пока не восстановите свое устройство.
В случае командировки можно позвонить близким и попросить продиктовать этот код.
VPN также относится к высокоприоритетным сервисам. Это связано с тем, что в первую очередь данная функция используется для решения бизнес-задач, поэтому даже перегрузка базовой станции окажет минимальное влияние на скорость VPN-соединений.
Насколько я понял, VPN наоборот перестали резать и сделали высокоприоритетным.
Вы можете отучить систему агрессивно выгружать программы с помощью выставления меньшего swappiness. Подберите подходящее для вас значение и оставьте роль менеджера RAM операционной системе.
Swap нужен не только в том случае, если кончается память.
Ядро Linux умеет выгружать в своп неиспользуемые страницы памяти, принадлежащие процессам, которые запущены и не используются. На освободившееся место ядро помещает различные кэши, ускоряющие работу с, например, mmapped-файлами.
С большинстве случаев это ускоряет работу компьютера.
Под Windows можно использовать Clumsy. Она сильно проще, но основные сценарии покроет.
Reddit, как вариант.
Смена пароля не поможет, т. к. Dropbox не запоминает пароль пользователя.
Он распаковывают в папку
/Library/DropboxHelperTools/
набор мелких утилит (которые выполняют операции по добавлению Dropbox'а в список Accessibility и др.) и устанавливают им бит suid. С этого момента эти утилиты периодически запускаются Dropbox'ом и отрабатывают с правами суперпользователя.Смена пароля не снимет suid-бит, и, соответственно, не отберет у Dropbox'а права.
Ответ кроется в реализации метода
List<T>.Enumerator.MoveNext()
, который используется конструкциейforeach
:1) Он проверяет, не изменился ли
List<T>
.2) Он проверяет выход за границы массива.
Когда CLR видит стандартную конструкцию вида
for (int i = 0; i < array.Lengh; i++)
, она (среда выполнения) убирает проверку на выход за границы массива. Из-за этогоRawArrayFor
работает так быстро.Когда CLR видит конструкцию вида
foreach (var x in array)
, гдеarray
— это обычный массив, она заменяетforeach
на обычныйfor
, а дальше применяется упомянутая выше оптимизция. Из-за этогоRawArrayForEach
работает так же быстро.Когда CLR встречает конструкцию
for(...)
илиforeach(...)
, работающую сList<T>
или любой другой динамической коллекцией, все становится плохо:а) При использовании
for(...)
CLR не может убрать проверки на выход за границу коллекции, т. к. размер списка может быть изменен другим потоком во время работы цикла.2) При использовании
foreach(...)
CLR не может заменить его наfor(...)
, т. к. при обходе коллекции каждый раз проверяется отсутствие изменений и инвалидация итератора в противном случае.Сторона, не имеющая такой сертификат, не может отправлять PUSH-уведомления в приложение.
Сторона, имеющая такой сертификат, теоретически может отправлять уведомления в любой инстанс приложения на любой девайс.
На этот раздел подписаны 6,5 тысяч людей, в том числе те, кто контрибьютит в Rust (серые и сиреневые бейджи «
rust
»), а также сами создатели языка (оранжевые бейджи).Уверен, что с вашим вопросом вам там смогут помочь.
try!
определен следующим образом:То есть это:
Развернется в это:
В макросе по привиденной вами ссылке разобраться с текущим уровнем знания
Rust
'а не могу, извиняйте.Т. е. в тех случаях, когда нужно просто пробросить ошибку наверх, достаточно написать:
И это будет эквивалентно:
Чистый match предполагается применять только в случае окончательной обработки ошибок на верхнем уровне.
Предполагается, что в случае утери ключа/телефона вы достаете листочек с кодами из сейфа, входите в аккаунт и выключаете двухфакторную авторизацию до тех пор, пока не восстановите свое устройство.
В случае командировки можно позвонить близким и попросить продиктовать этот код.
Насколько я понял, VPN наоборот перестали резать и сделали высокоприоритетным.
Ядро Linux умеет выгружать в своп неиспользуемые страницы памяти, принадлежащие процессам, которые запущены и не используются. На освободившееся место ядро помещает различные кэши, ускоряющие работу с, например,
mmapped
-файлами.С большинстве случаев это ускоряет работу компьютера.