Ейск

Отпуск в этом году ожидался невыездным, но в последний момент подвернулась возможность поехать в Ейск, где я последний раз был 35 лет назад.

yeysk_1986_1.jpg
yeysk_1986_2.jpg

Добирались на машине примерно 13 часов по трассе через Воронеж и Ростов-на-Дону. Многочасовая езда очень утомительна, приходится долго находиться неподвижно в одной позе, и ближе к концу поездки сидеть становится просто невозможно. Дороги в Ростовской области становятся заметно хуже, и средняя скорость передвижения там снижается. На реке Дон прекрасный вид и огромные красивые корабли, но мы проскочили мост без остановки.

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

yeysk_20210627_street_1.jpg yeysk_20210627_street_2.jpg yeysk_20210627_street_3.jpg yeysk_20210627_street_4.jpg yeysk_20210627_street_5.jpg yeysk_20210627_street_6.jpg

Многие дома первой половины 20-го века, а некоторые даже и конца 19-го. Градостроительной политики особой не наблюдается, поэтому если строят что-то новое, то это может выглядеть как угодно уродливо и чужеродно. Впрочем, где у нас сейчас по-другому? Весь город покрыт рекламой и вывесками разной степени безобразности, так как они никак не регулируются правилами; тем не менее, хорошо видно, что Ейск — это место историческое. Думается, что хорошая сохранность старых домиков обусловлена невысокими доходами жителей. У кого денег побольше, забабахал себе кондиционер на старую стену и поставил унылые рольставни, что красоты не добавляет, хотя это, наверное, удобно.

Скромно, но со вкусом (обратите внимание на дымовую трубу) Жуткие ворота в знавшей лучшие годы оправе Сравните с тем, что построили слева 1898 г. Старые ставенки чудесны Решётки портят красоту yeysk_20210627_184910_house.jpg Из кирпича раньше умели делать изящно 1905 г. Некогда красивый дом, изуродованный ремонтом Остатки былой красоты

Не менее примечательны старые двери, где видно, что люди когда-то умели делать красиво и тонко, а ещё мне очень нравятся деревянные ставни, даже самые простые.

yeysk_20210627_161252_door.jpg yeysk_20210627_161753_door.jpg yeysk_20210627_185233_windows.jpg yeysk_20210703_162549_door.jpg

Сын возмущался — зачем я снимаю всякое обшарпанное старьё? Вот есть же новые дома, ворота, окна, они же лучше! Попытался объяснить, но, кажется, неубедительно.

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

Пляжей несколько, мы были на трёх: Центральном, на лимане около железной дороги в восточной части, и на так называемой Каменке — это пляж на Приморской набережной, где куча аттракционов и закусочных. На лимане народу мало, но там очень мелко — отойдя метров на 150 от берега, нам всё ещё было по пояс. Дно илистое, но слой ила тонкий и приятно прохладный. Для детей лиман вполне подходит — утонуть там затруднительно. Каменка соответствует своему названию — зайти в воду там непросто и порезать или рассадить ноги ничего не стоит, во всяком случае, в том месте, где купались мы. Есть ещё пляж на Ейской косе, это дальше Центрального, но мы туда так и не доехали.

Приморская набережная с колеса обозрения:

Слева - пляж Каменка, впереди за морским портом - Центральный пляж Нижняя часть Каменки

Жили мы в очень приличной двухкомнатной квартире на ул. Пушкина в доме 71/2. До лимана рукой подать, а вот на Центральный пляж приходилось ездить на довольно многолюдном ПАЗике № 18, нужно при входе передавать за проезд, от чего я давно отвык. Вообще, всё по-простому, люди живут как могут.

Общепит около пляжа неважный. Мы нашли хорошую недорогую столовую «Домашняя кухня» недалеко от дома на Мира, 171, туда и ходили обедать. Завтраки и ужины я готовил сам, закупаясь в Пятёрочке.

Основной прогулочный маршрут проходил по улице Свердлова — длинной прямой улице, пролегающей мимо рынка, горсовета и парка имени Горького. Парк заполонён памятниками: при входе стоит неизбежный памятник Ленину; конечно, имеется памятник Горькому, как-то не совсем похожему на себя; слева от него — лётчику Хрюкину, по которому видно, что это был мужчина хоть куда и в полном расцвете сил, волевой и импозантный; рядом с ним грубо сработанный памятник партизану с ППШ наизготовку, целиком вместе с постаментом покрашенный в мерзкий серый цвет.

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

ул. Свердлова, сквер около городской управы Прудик на подворье Время обедать

Да, около аттракционов тоже стоят два памятника — один, довольно милый, местному основоположнику боксёрской школы от благодарных учеников и памятник «Матерям России», представляющий собой эталон безвкусицы.

Помимо парка Горького, есть ещё и парк Поддубного, который раза в три больше и он под завязку забит кафе и развлекательными заведениями — прокатами веломобилей, тирами, картингами, пиратскими кораблями ужасов и т. п. Слева от входа в парк стоит титаническая фигура Ивана Максимовича с валяющимися вокруг гирями.

Вход в парк Поддубного Аллея "Счастливое детство"

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

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

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

Неожиданный апгрейд

Достался тут мне ноутбук HP 15-r062sr 2014-го года выпуска (Core i5 4210U 1700 Mhz/15.6″/1366x768/4.0Gb/500Gb/DVD-RW/Intel HD Graphics 4400/Wi-Fi/Bluetooth) в довольно мизерабельном состоянии — полуразобранным он хранился в квартире не в лучших условиях несколько лет. Винтики прилагались в пакетике. Аппарат включался, но операционка не грузилась, и постоянно при включении выдавалась ошибка контрольной суммы BIOS.

Внешний вид ноутбука. Картинка из интернета: у меня, к сожалению, снимать не было времени.

Эта модель ноутбука не отличается удобством в разборке — нижняя крышка тут сплошная и не имеет отсеков доступа к памяти и жёсткому диску, поэтому нужно разбирать его целиком — выкручивать винтики нижней крышки, снимать угловые пластмасски под экраном — там винтики под клеящимися ножками, снимать клавиатуру, выкручивать винтики под ней (до этого момента уже было разобрано), отключать шлейфы кнопки питания и тачпада, потом выщёлкивать верхнюю крышку, выкручивать жёсткий диск, и только потом демонтировать материнскую плату, под которой прячутся два разъёма памяти и батарейка CMOS.

Нижняя часть

Батарейка вздулась и заржавела, задев своими потёками соседние детали и корпус, также с мясом были выдраны несколько стоек для винтов. Так как железные сердечники стоек сохранились, перекатываясь внутри корпуса, я восстановил их известным способом «суперклей + сода», а батарейку заменил на новую, предварительно очистив посадочное место от окислов. Конечно, я основательно очистил всё остальное — пылесос, кисточка для смахивания пыли, жижа для оргтехники, спирт, тряпочки и т. п., так что аппарат стал выглядеть прилично.

Теперь нужно было выяснить, почему не грузится система и вообще, что с жёстким диском. Я изготовил загрузочную флешку с Xubuntu, полез в BIOS и включил поддержку Legacy boot. При перезагрузке я замешкался, и неожиданно начала загружаться Windows 7. Стало всё понятно — изначально системой на этом ноутбуке была Windows 8, которая грузилась по Secure boot, затем установили Windows 7 и настроили BIOS на старый загрузчик, а батарейка сдохла, BIOS сбрасывался по умолчанию и «семёрка» уже не грузится, т. к. Secure boot она не понимает.

Так как память в этом ноутбуке того же типа, что и в неттопе, который я собирал 5 лет назад, а процессор тут гораздо мощнее, я решил переехать с неттопа на этот ноутбук. Поэтому я поставил в ноутбук планку в 8 ГБ и твердотельник из неттопа, а планку в 4 ГБ и обычный шпиндельный 500-гигабайтный жёсткий диск Toshiba — в обратном направлении. На неттоп я поставил ту самую Xubuntu с флешки с целью возможной последующей продажи вместе с монитором.

В результате получился неплохой довольно шустренький ноутбук как апгрейд неттопа без каких-либо материальных затрат (300 рублей за батарейку и суперклей не в счёт). Аккумулятор у ноутбука, правда, убитый, но это несущественно, можно и новый купить, если что (740715-001).

Спираль времени

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

В интересной, хотя и чрезмерно затянутой книге Алексея Юрчака «Это было навсегда, пока не кончилось» описано, пожалуй, наиболее рациональное поведение обычного человека в такие времена.

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


Инна (1958 года рождения) окончила школу в 1975 году и поступила на исторический факультет Ленинградского университета. В этот момент ее отношение к жизни поменялось. Инна вспоминает:

«Когда я училась в школе, все, естественно, казалось предельно ясным. В восьмом классе я с большим воодушевлением вступила в комсомол. Мне хотелось внести свою лепту в общее дело. Я первой из класса вступила. Но дома, даже тогда, мы уже понемногу слушали Высоцкого и Галича. К девятому или десятому классу [1974–1975 годы] мой энтузиазм начал пропадать. Хотя я, конечно, оставалась законопослушной, потому что я понимала, что так надо. Но после окончания школы я перестала участвовать в этой жизни. Я больше не ходила на комсомольские собрания. Просто знала, что могу этого не делать без особых для себя последствий.»

В университете Инна подружилась с людьми, которые тоже избегали идеологических ритуалов системы:

«Мы никогда не ходили голосовать. Мы просто игнорировали выборы, демонстрации и т. д. Моей единственной связью с советской жизнью была работа [будучи студенткой, Инна подрабатывала в университетской библиотеке] и учеба, хотя в университет я тоже ходила редко — у нас просто не было времени.»

Инна подчеркивает, что ни она, ни ее друзья не ассоциировали такое существование с чем-то «антисоветским». По ее словам, им были одинаково безразличны как поддержка советского режима, так и сопротивление ему. Она рассказывает:

«Никто из моих друзей не был антисоветчиком… Мы просто не говорили друг с другом о работе, или учебе, или политике. Вообще не говорили. Что вполне понятно, если учесть, что мы не смотрели телевизор, не слушали радио и не читали газет примерно до 1986 года [до начала перестройки].»

В диссидентский политический дискурс этот круг тоже не особенно вникал, хотя литературу неполитического самиздата почитывал. Инна объясняет: «Мы никогда не разговаривали о диссидентах. Всем и так все было ясно, зачем об этом говорить? Это было не интересно».

Последнее замечание отсылает нас к уже знакомому понятию перформативного сдвига авторитетного дискурса. Поскольку буквальная интерпретация авторитетных высказываний, символов и практик чаще всего уже не предполагалась (их констатирующий смысл в большинстве случаев потерял важность), рассуждать о том, насколько эти смыслы верны или неверны, многим, включая этот круг людей, казалось пустой тратой времени. Они считали, что разумнее и интереснее использовать возможности, которые открывались в результате формального и невовлеченного воспроизводства авторитетных символов. Это давало возможность наделять свое существование новыми смыслами, которые система не могла до конца проконтролировать. Именно поэтому Инна и ее друзья предпочитали невовлеченность в буквальные смыслы практик и высказываний системы, как положительных, так и отрицательных, молча отстраняясь и от дискурса активистов, и от дискурса диссидентов:

«Как мы к ним относились? В общем-то, никак. Мы были другими. Мы были тут, а они были там… Мы это особенно не обсуждали, но всем нам казалось, что нет особого отличия между человеком, который выступает за систему или против нее. Просто знаки меняются. И те, и другие были советскими людьми. А я советским человеком себя никогда не считала. Мы от них отличались органически. Это правда. Мы просто были вне.»

Характерен язык, которым Инна описывает свою позицию. Употребляя местоимение «они» и фразу «советские люди», она включает в них не только партийных и государственных чиновников или людей, поддерживающих партию, но и ее противников. С этой позиции дискурс диссидентов и авторитетный дискурс партии рассматриваются как часть одного дискурсивного режима, несмотря на то, что первый противостоит второму. […]

Следует подчеркнуть, что Инна и ее круг были в курсе оппозиционного дискурса и не игнорировали его вовсе. Они читали самиздатовскую литературу, включая «Архипелаг Гулаг» Солженицына, однако это чтение было особенным. Оно помогало им выработать понятие «советскости» (включавшее как авторитетный дискурс партии, так и контрдискурс диссидентов), для того, чтобы дистанцироваться от этого понятия. Инна говорит: «Мы не считали Солженицына своим. Это было важно… Мы не были противниками системы, как он». По ее словам, оппозиционная литература была важна как позиция, в сравнении с которой можно было определить свою место: «Было важно понять, где мы на самом деле находимся — не относительно власти, а вообще». Инна относилась к Солженицыну с уважением, но его призывы занять активную моральную позицию по отношению к советской системе казались ей неактуальными. […]

Смысл существования вне системы — одновременно внутри и за пределами — можно проиллюстрировать фразой «вне поля зрения». В ней подразумевается, что какой-то предмет находится здесь, мы знаем о его присутствии, но он скрыт от нашего взгляда (другими объектами, своей миниатюрностью или сфокусированностью нашего внимания на другом). Субъектное состояние вне системы тоже подразумевает выпадание из поля зрения системы или, точнее, ее «режима видимости» (или «режима видимого»). Такой субъект, продолжая существовать внутри системы, может не следовать ее символическим, легальным, языковым или другим параметрам (действовать непонятным для окружающих образом, говорить на непонятном им языке, не вникать в смысл фактов окружающей реальности, интерпретировать происходящее ему одному понятным образом и так далее).

Тезис данной главы заключается в том, что в условиях позднего социализма взаимоотношение большинства субъектов и публик с государством строилось, в меньшей или большей степени, именно по этому вне-принципу. Более того, это отношение не ограничивалось неким «альтернативным» способом существования — напротив, это отношение стало центральным принципом существования и воспроизводства всей позднесоветской системы как таковой. Хотя такое отношение субъекта к системе не является отношением сопротивления государству, оно постепенно изменяло систему, делая государство потенциально хрупким и готовым (в определенных условиях) к неожиданному обвалу, поскольку государственно-партийный аппарат не был в состоянии полностью распознать, понять, а значит, и проконтролировать это отношение.

И. С. Бах - Иисус остается моей радостью

Самый известный номер из кантаты «Устами, сердцем, нашими делами, всею жизнью», написанной в 1723 году.

Оригинальное название на немецком — Jesus bleibet meine Freude, английское название — Jesu, Joy of Man’s Desiring. Переложение для фортепиано Майры Хесс.

Что сделал - 10

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

Авторесет виртуальной машины при недоступности HTTP или если она не отвечает на пинг

Есть виртуальная машина на Ubuntu 8.04, перевезённая мной на Hyper-V с железки несколько месяцев назад, где крутится веб-сервис, управляемый CMS отечественного производства RBC Contents 4.0. В каталоге веб-сервера находится более миллиона файлов. Операционная система старая, несовместимая с виртуальной средой, поэтому сетевые адаптеры там пришлось ставить не современные синтетические, а старые эмулируемые (100 Мбит). Мало того, что версия системы управления контентом античных времён — она уже больше 10 лет вообще не существует в природе, как и компания, её выпускавшая. Инструкций тоже нет, в интернете нашлись два документа по три странички, писанных на коленке и совершенно бесполезных. В общем, классический «чёрный ящик», который невозможно тронуть, чтобы он, чего доброго, не развалился, но, вместе с тем, необходимо поддерживать его работоспособность.

Ящик время от времени по неизвестным причинам либо перестаёт отвечать по сети, либо вешается намертво; особенно радует, когда он это делает в три часа ночи. В журналах пусто. Так как всегда решением проблемы является нажатие кнопки сброса, я написал скрипт, который в нерабочее время каждые 10 минут проверяет доступность ящика по сети и порта HTTP. Если что-то не отвечает, скрипт ищет машину в кластере и жмёт ей на ресет, после чего пишет мне письмо, почему он это сделал.

$name = "webserver"
$ip = "192.168.1.10"

if (!(Test-Connection $ip -Count 4 -Quiet -OutVariable ping) -or `
!(Test-NetConnection $ip -Port 80 -OutVariable http).TcpTestSucceeded) {
$vm = Get-Clustergroup |? {$_.grouptype -eq 'VirtualMachine' -and $_.name -eq "$name"} |get-vm

  if ($vm -and $vm.State -eq "Running") {

  $vm |Restart-VM -force

  $body = "<p>Причины:</p>"
  $body += "<ul>"
    if (!$ping) {$body += "<li>Нет сетевого соединения</li>"}
    if (!$http.TcpTestSucceeded) {$body += "<li>Нет ответа по HTTP</li>"}
  $body += "</ul>"

  Send-MailMessage -SmtpServer mail.domain.ru -From support@domain.ru -Subject "Hyper-V - сервер $name был принудительно перезагружен" `
  -To admin@domain.ru -Body $body -BodyAsHtml -Encoding utf8
  }
}

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

Нужно, конечно, сделать поизящнее — привязать срабатывание скрипта к Zabbix, это дело ближайшего будущего.

Группы рассылки на базе групп подразделений компании

Обратились в просьбой сделать группу рассылки на один из отделов компании. Чтобы не возвращаться больше к этой теме в будущем, решили сделать такие группы сразу для всех отделов (кроме руководства, конечно).

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

Пришлось создать обычные группы рассылки, а членство в группах спрашивать у домена.

function Get-ADGroupMemberEnabledAndMail {
param(
[parameter(mandatory=$true)]
$group
)
Get-ADGroupMember "$group" -Recursive |? objectclass -eq 'user' |% {
    Get-ADUser -filter "name -eq '$($_.name)' -and enabled -eq 'True'" -Properties mail
    }
}

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

По результатам работы скрипт шлёт отчёт, причём, я распробовал всякие html-символы, чтобы сделать его более читаемым и лаконичным. Примерный вид:

Отдел по развитию (группа рассылки)
Управление по повышению (группа рассылки)
Бумажкин Иван Ильич Дирекция по улучшению (группа рассылки)
Бюрократов Тихон Тарасович Группа по превозмоганию (группа рассылки)

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

Обнаружение лишних объектов в корне DFS

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

Удалить этот скапливающийся хлам вручную бывает непросто — нужно искать, на каком конкретно сервере он лежит и удалять уже оттуда, потому что если админ подключен к DFS на одном сервере, а хлам лежит на другом, то через DFS админ удалить хлам не сможет, даже имея все полномочия — система пишет, что файлы не найдены. Ещё нюанс — из команд Powershell, относящихся к DFS, я не смог получить путей к его корням на локальных серверах, т. е., элегантно извлечь данные из одного источника не вышло. Пришлось просто перечислить все локальные пути в явном виде в скрипте, благо, их немного.

А как вообще отделить хлам от легитимных папок? Оказывается, папки в DFS имеют атрибут d----l (reparse point), то есть, это даже и не папки, а ссылки. Поэтому, вычислить хлам можно так:

dir `
"\\server1\c$\DFS_roots\*\*",
"\\server2\c$\корни_DFS\*\*",
"\\server3\c$\DFS_roots\*\*" |
? mode -ne 'd----l'

Скрипт, конечно, данные сам не удаляет (мало ли что может туда попасть?), а шлёт письмо, где перечислены потенциально лишние объекты, обёрнутые в команды для их удаления.

Автодобавление разрешения на почтовые ящики для группы

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

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

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

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

$accessNotGranted = $allUserMbxes |? {!((Get-MailboxPermission $_).user -match "$fullControlGroup")}
if ($accessNotGranted) {
    $accessNotGranted |
    Add-MailboxPermission -User "$fullControlGroup" -AccessRights FullAccess -InheritanceType All
}