Страницы

Расширенные атрибуты файлов в GNU/Linux

Бывает удобно сохранить дополнительные данные о файле, не создавая явных файлов о файле. В ОС GNU это можно сделать для большинства файловых систем, включая ext4.

setfattr --name user.attrname --value value path-to-file
getfattr --name user.attrname path-to-file

Возможность используется нечасто, поэтому утилиты даже не включены в систему по умолчанию.

/usr/bin/sudo apt install attr

Атрибуты переносятся при использовании утилиты mv. Для cp нужно явно указывать --preserve=xattr. Проще всего в .bashrc создать alias для cp с этим ключём:

alias cp='cp --preserve=xattr'

Мышиная возня

В одной общей переписке появилась копия такого текста
об эксперименте над крысами В 1950-х годах в Гарварде (США) профессор биологии Курт Рихтер провел серию экспериментов с целью найти биологический механизм, который заставляет нас двигаться к цели. Эксперимент получился довольно жестокий, хоть в нем и участвовали только грызуны (при этом, к тому времени накопилось уже достаточно исследований, показывающих, что в плане группового поведения у людей и крыс/мышей имеются очень схожие механизмы). И вот Рихтер собрал крыс — как домашних, так и диких, которых накануне поймали лаборанты. Ученый бросал их в вёдра, наполовину заполненные водой. Крысы — хорошие пловцы, но даже это им не помогло. В среднем они сдавались и тонули через 15 минут. Причём, разница между домашними и дикими крысами оказалась невелика. Домашние крысы продержались чуть дольше. Они пытались не просто барахтаться на поверхности, но и искали путь на дне и долбились в стенки. Дикие крысы же просто барахтались и почти сразу сдавались и шли на дно. Это было удивительно для ученого, ведь эти дикие крысы были такими агрессивными: они активно сопротивлялись когда их ловили и пытались выбраться из клетки. «Что убивает этих крыс? Почему столь свирепые, агрессивные, дикие крысы так быстро умирают при погружении в воду?», — написал ученый в журнале эксперимента. И добавил: «крысы находясь в ситуации, где у них нет никакой надежды — буквально сдаются». И тогда учёный решил исследовать фактор надежды: как он влияет, и влияет ли вообще? Исходя из новой задачи, во втором эксперименте Рихтер изменил условие: крыс снова кидали в ведро, но когда видели, что животное начинает сдаваться от усталости и истощения, они вытаскивали крысу ненадолго. А затем снова бросали их в воду. Как вы думаете, сколько держались крысы во второй попытке, с учётом того, что поначалу всё сдавались через примерно 15 минут? Еще 15 минут? Нет! 60 часов! ШЕСТЬДЕСЯТ часов! Вот такой был зафиксирован факт: обессиленная, истощенная крыса, которая в общем-то уже умирала, вдруг находила в себе сил ещё на 60 часов! То есть эта истощённая крыса после того, как получала надежду, была способна биться за свою жизнь в 240 раз больше чем было изначально! И вывод из такого фантастического изменения был один: именно фактор надежды играл тут ключевую роль. У крыс появлялась надежда, они начинали верить, что в итоге их спасут. Вывод из этого эксперимента был сделан однозначный: когда в ход вступает надежда, высвобождается просто гигантский потенциал энергии. Разумеется, на основании этого эксперимента развернулись дальнейшие исследования, которые показали, что успеха чаще добиваются не самые умные и талантливые, а те, кто верит в то, что может достичь цели. Рисует в воображении результаты успеха. Эта надежда плюс терпение, готовность вкладывать в силы и дают в сумме важный результат. Американский психолог Мартин Селигман, основоположник метода позитивной психологии, характеризовал человека с надеждой так: это такой человек, который объясняет неудачи временными и специфическими причинами. То есть они со временем уйдут, а результат останется, и человек с надеждой в него верит! А состояние беспомощности у такого человека также носит временный характер. Те же, кто не достигает цели, чаще концентрируются на негативных условиях, обстоятельствах, которые мешают им достичь цели. Им не хватает ресурса надежды, чтобы высвободились дополнительные силы для достижения успеха — т.е. те самые мощные силы, которые высвобождались у крыс в эксперименте Рихтера.
С пояснением, что это намёк для тех, кто понимает.

Не знаю, такое ли понимание имел ввиду автор сообщения, но по ряду словесных оборотов мне это напоминает мотивационный листок из курсов вроде "Впаривание и всучивание" и "Успешный успех", но с невольной меташуткой внутри про крысиные бега и про закономерный итог в любом случае.

Из-за этого текста мне вспомнился случай, произошедший в 2009. Зимой в квартиру проникла мышка, чьё присутствие первоначально было выявлено по надгрызанному мылу, а затем и по испорченному ею хлебу. Спустя месяц мышка была случайно поймана, когда застуканная за попыткой пробраться к буханке опрометчиво попыталась скрыться за батареей. В результате получилось, что я воспроизвёл некоторое подобие такого эксперимента, с поправкой на то, что я не пытался утопить животное, а, наоборот, хотел чтобы оно продолжало жить в квартире, но ограниченное в перемещениях.

Пример из книги про автоматное программирование, оказавшийся трудным для верификации

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

А на мой взгляд куда важней, что код из статьи является наглядным примером того, что для того, чтобы проверка работала, форма кода должна быть максимально понятна для разработчиков, и если это не так, то даже самое строгое доказательство корректности не поможет, потому что соответствие непонятной спецификации к непонятному коду только и подтвердит, что программа действительно в точности выполняет то, что разработчик не понимает. И в этом отношении автоматное программирование является классическим антипаттерном, преподносимом как паттерн.