All streams
Search
Write a publication
Pull to refresh
229
12.1
Андрей Дмитриев @AndreyDmitriev

Пользователь

Send message
Такое изменение может косвенно повлиять на другие программы, которые используют похожий механизм, либо на обновления Windows, но как «скорая помощь» — да, вполне может помочь.
Приложением целую неделю пользовались все сотрудники Яндекса. Обычно этого времени хватает, чтобы обнаружить существенные баги.


Это очень опасная практика. Вообще это называется «hallway testing» и вполне может применяться для общей оценки юзабилити, либо для прототипов, но уж никак не заменяет и даже не дополняет тесты в соответствии с планом тестирования продукта.
Что там реально произошло и что в лог попадает — сказать сложно без небольшого реверс-инжиниринга, либо теста в виртуальной машине. Формально честно вызванная для непустой директории RemoveDirectory честно возвращает ошибку 145 ERROR_DIR_NOT_EMPTY. В документации нигде не сказано, что эта директория пометится для удаления после перезагрузки. Там сказано лишь, что она пометится для «отложенного» удаления только в том случае, если есть открытые хэндлы для этой директории — в этом случае она удалится тогда, когда они закроются. Про «scheduled to delete on reboot if it will be empty» в доках ни слова — вот это меня и зацепило. Я честно говоря вообще не знаю, откуда растут ноги у этого сообщения (и вроде как больше чем просто ошибку 145 из GetLastError не вытащить), а документировать лог файлы Яндекс, разумеется не обязан.
Это вы чуть погорячились. Программисты яндекса виноваты хотя бы в том, что совершили прогулку по дереву директорий (причём не системным, а пользовательским) вплоть до корня с попыткой удаления файлов. Я вот разрабатываю программы, которые тоже обновляются вот так «на лету», кроме того хранят логи за последний месяц и чистят старые, и каждый раз вызывая функцию удаления, я страшно боюсь передать ей неверный путь или заставить её вот так вот «рекурсивно» отработать.
Не, сам по себе я.диск у меня от текущего залогиненного пользователя запущен. От SYSTEM (судя по всему) только у тех, кто поставил его «для всех пользователей».
Вообще прецедент весьма любопытный (даже не с точки зрения эпического фейла яндекса, сколько с точки зрения WinAPI). Если судить по логам, то при деинсталляции сервис яндекса удаляет свои папки. Окей, я посмотрел лог повыше — он это и раньше пытался делать (у меня вот 18 октября и 29 ноября)

2013-10-18 16:16:49.796 RemoveDirectory: [%APPDATA%\Yandex\YandexDisk\] error: 145
2013-10-18 16:16:49.796 RemoveDirectory: [%APPDATA%\Yandex\YandexDisk\] cannot be scheduled to delete on reboot
2013-10-18 16:16:49.797 RemoveDirectory: [%APPDATA%\Yandex\] error: 145
2013-10-18 16:16:49.797 RemoveDirectory: [%APPDATA%\Yandex\] cannot be scheduled to delete on reboot

Другое дело, что раньше он ограничивался своей папкой, а 30 ноября попёр дальше:

2013-11-30 18:00:55.896 RemoveDirectory: [%USERPROFILE%] error: 145
2013-11-30 18:00:55.896 RemoveDirectory: [%USERPROFILE%] cannot be scheduled to delete on reboot
2013-11-30 18:00:55.897 RemoveDirectory: [C:\Users\] error: 5
2013-11-30 18:00:55.897 RemoveDirectory: [C:\Users\] cannot be scheduled to delete on reboot
2013-11-30 18:00:55.897 RemoveDirectory: [C:\] error: 5
2013-11-30 18:00:55.897 RemoveDirectory: [C:\] cannot be scheduled to delete on reboot

При попытке сноса %USERPROFILE% целиком вывалилась ошибка 145 (нельзя удалить непустую директорию), а при попытке сноса папки с другими прользователями и затем %HOMEDRIVE% возникла ошибка 5 — отказано в доступе, что ожидаемо.

Если сравнить это дело с логом выше из статьи, то там пользовательша Sophie судя по всему имела права администратора, поэтому во-первых, ошибки 5 не возникло вообще, а вывалилась лишь ошибка 145 при попытке сноса всей папки C:\Users и дальше по тексту, а во-вторых было выдано «scheduled to delete on reboot if it will be empty», а не «cannot be scheduled to delete on reboot»

Любопытен однако тот факт, что при работе из под админа все папки были поставлены в очередь на удаление при презагрузке, но выпилиться они должны были только в том случае, если были бы пустые, однако были удалены вместе с файлами, хотя по идее не должны были. Либо яндекс использовал что-то типа SHFileOperation или там IFileOperation для массового удаления, но в лог об этом писать не стал, либо Windows сделал это сам. А при работе не из под админа они вообще не были поставлены в очередь на удаление. Это повод хорошенько поисследовать функцию RemoveDirectory (надо полагать, именно она и была использована) и её разное поведение при работе по непустым папкам в зависимости от прав залогиненного пользователя.

Всё это, конечно не означает, что работа без прав админа — панацея, так как если какой-либо сервис начнёт рекурсивно обходить %HOMEDRIVE% и удалять оттуда всё, что сможет удалить, то тут будет без разницы, как залогинен пользователь — как минимум свои собственные файлы он по любому потеряет.

Ну и хотелось бы видеть детальный разбор полётов от самого яндекса (не общий для домохозяек типа «при определённом стечении обстоятельств обновление такое-то вызвало удаление всех файлов, простите засранцев»), а именно технически детальное описание от программистов для программистов, тем паче, что яндекс имеет свой раздел на хабре.
Формально если у вас в системе запустится некий сервис, который начнёт рекурсивно обходить %HOMEDRIVE% и без разбора удалять всё, что сможет удалить, то в общем-то будет уже без разницы, работаете вы из под админа или нет — свои файлы вы потеряете.
Если по Германии — зарплата разработчика ПО — где-то 50-60 К брутто в год (если в потолок не плевать), на руки после всех выплат остаётся грубо говоря около 3 К в месяц, а бензин стоит 1,5 Евро за литр. Дизель чуть дешевле. По Норвегии — лучше если кто из местных напишет, но я полагаю, что зарплата чуть ниже — скажем 45-50 К брутто в год, а бензин вроде как 1,75 евро. Многое, конечно, зависит от деталей (налоговый класс, регион, и т.п), но порядок примерно такой.
Можно попробовать использовать Fiddler Web Debugger. Там принцип чуть другой — он ставится как прокси, но это более «высокоуровневый» инструмент и для анализа http траффика может оказаться удобнее. Я с его помощью разобрался с проблемой авторизации на TFS сервере, но, помнится, видел там что-то типа «Transfer Timeline» — может это то, что вам надо.
запуская подряд несколько сборщиков с интервалом в 100-500 миллисекунд, можно получить за одну секунду сколько нужно данных.


О, это любопытный подход.
А вы проверили, что скажем, несколько сборщиков будут выдавать действительно разные отсчёты? Может они извне синхронно тактируются и в течение секунды будут просто выдавать один и тот же отсчёт?
И ещё интересно, насколько такие множественные счётчики грузят систему?
Я с вами, пожалуй, не соглашусь. Ну то есть семья, конечно, влияет в определённой степени, но мне так думается, что в каждом ребёнке практически на генном уровне уже заложены его способности. И очень важно, чтобы «заложенные» способности не вошли в конфликт с «мягко направляемыми». Я это неспроста пишу — дело в том, что у меня RAID 1 близнецы. И хотя в семье всё строго поровну и воспитание вроде как одинаковое и досуг одинаковый (с близняшками это очень важно — не отдавать никому предпочтение), но к своим шести годам они уже абсолютно разные. Я пытаюсь найти ответ — почему они идут явно разными путями и не могу. Они разные как чёрное и белое. Один — рассудительный, второй — сплошные эмоции. Один любит считать, второй — рисовать. Различие особенно заметно, когда они в шахматы друг с другом играют — один просчитывает ходы чуть вперёд, а второму пофиг. Ненавязчиво пытался подсовывать Лего (да, папа хочет mindstorm nxt) — никакого интереса у обоих. Пытался мягко направлять их в музыку. Один вроде направляется, второй — нет. Ну и так далее. Если с детства учить ребёнка играть на пианино, — он, конечно, технически научится, но станет ли он гениальным музыкантом? Тут остаётся лишь очень внимательно наблюдать, и как только станет заметно, в какой области у ребёнка интерес — так просто развивать. Так что, наблюдая за синхронным развитием близнецов, могу почти наверняка утверждать, что вся «склонность» (или даже «гениальность» если хотите) — она уже изначально от рождения заложена. Важно лишь распознать вовремя.
С неразрывным пробелом, если уж быть дотошным.
Да, в Питере на барахолхе возле Автово (которая Юнона) — куча народу повторяли как заведённые «Жёлтый ног, жёлтый ног». Как-то звал туда в очередной раз приятеля, а он мне — знаешь, нельзя мне там больше появляться. На вопрос почему — ответил — «да, понимаешь, намедни кучу чисто латунных разьёмов одному скупщику как „жёлтый ног“ загнал.»
Льву Сергеевичу Термену понравилось бы однозначно.
А у неё какой принцип перемещения курсора? Её в руке на весу держат и в воздухе «магические пассы» совершают, или же она на столе стоит и там пипка для перемещения курсора есть?
А у него колёсико вокруг шарика — ребристый кант — это оно и есть.
Пользуюсь трекболлом Kensington вот уже два года. Обзор писал тут habrahabr.ru/post/130430/
image
Я в LabVIEW работаю и туннельный синдром — болезнь многих LabVIEW программистов (коллега делал даже операцию на запястье).
Его, кстати, очень удобно чистить — шарик вынимается и просто моется под струёй воды. Сразу после мытья шарик надо немного покатать в ладонях — тончайший слой жира работает как смазка, и он крутится в гнезде на пупырках «как по маслу». Когда где — либо надо поработать мышкой — никаких негативных ощущений и дискомфорта не возникает — мозг очень легко переключается. А вот с мышки на трекбол — поначалу требует некоторого времени у новичков. Сейчас трекболл стал моим основным инструментом. У трекболлов есть две принципиально отличающиеся модификации — шарик сбоку или шарик сверху. У меня «шарик сбоку» не пошёл как-то — я так и не смог к нему привыкнуть.
По CAN мне было бы удобнее всего — там готовый разъём есть. Если же по CAN принципиально невозможно, то впаяться межу педалью и ЭБУ. Тут у меня тоже здоровые сомнения есть — педаль напрямую к ЭБУ подключена, или на той же шине CAN висит? Я потому и спросил.
Это понятно, но я в принципе в ПИД регуляторах немного разбираюсь — профиль дороги и прочее я буду учитывать. В идеале хочу также потом прирастить туда измеритель дальности до впереди идущей машины, а потом картинку с камеры анализировать и знаки ограничения скорости отслеживать… А авто у меня — Caddy — там вроде как всё на CAN шине висит, если я не путаю ничего. Педаль газа электронная.
У меня чайниковский вопрос — а как в ЭБУ заводится инфа с педали газа? Её можно «программно» нажимать? Я это к тому, что хочу сделать простую штуку — кнопки 30, 50, 60, 80, 100, 120 — и вот чтобы жамкаешь по соответствующей кнопке и машина едет с соответствующей скоростью (если передача позволяет, ессно), ну то есть круиз-контроль, но с предустановками. У меня была мысль к CAN шине подцепиться, но там, похоже я могу только читать, но не писать. Авто — VW без бортового компьютера MFA.

Information

Rating
571-st
Location
Ahrensburg, Schleswig-Holstein, Германия
Date of birth
Registered
Activity