Записки IT специалиста
8.53K subscribers
1.95K photos
54 videos
16 files
2.43K links
IT-канал, просто о сложном
https://interface31.ru

Купить рекламу:
https://telega.in/c/interface31
Download Telegram
​​Стандартные расположения данных

Иерархия файловых систем основных ОС предполагают различную структуру хранения данных и одной из частей этой структуры является пользовательская папка. В Linux и UNIX-подобных системах это /home, в Windows - C:\Users.

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

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

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

При этом те же самые люди в Windows как будто специально стараются нарушать соглашение о хранении данных, размещая их буквально где попало.

Отчасти в этом есть вина самой системы, так как в Windows нет общей иерархии файловой системы, то люди привыкли хранить свои данные на дополнительных логических томах (D:, E: т.д.) и делать это так, как удобно им.

Очень часто эта практика сохраняется и в том случае, когда логический том один. Такое чаще всего бывает на ноутбуках или моноблоках, а разбивать на разделы единственный быстрый SSD размером в 250-500 ГБ не имеет смысла.

И вот вместо того, чтобы сложить все в папку пользователя и не париться то тут, то там, чаще всего в корне диска возникают различные пользовательские папки то с играми, то с документами, то с базами 1С (последние почему-то очень не любят размещать в тех же Документах, куда, кстати, сама 1С предлагает по умолчанию).

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

Третьего дня у одного моего знакомого что-то случилось с системой, то ли сделали что-то не так, то ли скачали что-то не то, но загружаться она перестала.

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

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

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

Это чего-то заметила на следующий день его жена. Когда запустила 1С, а та ей бодро сообщила, что информационная база не обнаружена.

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

Изучив то, что утилита сохранила на внешний диск, выяснилось, что туда попали папки Windows, Program Files, Program Data и т.д. для восстановления программ и полностью паки пользователей из C:\Users.

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

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

А ведь все могло быть гораздо хуже. Поэтому храните данные в стандартных расположениях, ну и не забывайте про бекапы.
👍34🥱116
Семь раз отмерь – один отрежь

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

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

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

Научила меня этому одна старая история. Дело было в далеком и светлом 2003 году, я – молодой специалист только-только устроившийся в компьютерную фирму. Система оплаты труда у нас была смешанная: оклад 4 000 рублей на руки + 50% от стоимости выполненных работ.

Для понимания, 4 000 руб. в 2003 году были эквивалентны примерно сегодняшним 30 000 руб., для молодого человека в провинции без семьи, кредитов и ипотек в целом нормально, но сильно не развернешься. Поэтому интерес работать был и интерес неплохой, особенно если урвать заказы подороже.

И вот я взял хороший заказ – переустановить компьютер одной женщине-бухгалтеру, как сейчас принято говорить – на аутсорсе. А была тогда еще «семерка», которая 1С:Предприятие 7.7 и хранила она свой список баз и прочие настройки в реестре.

Это меня и подвело, 1С я знал тогда так себе и просто скопировал весь диск C: в папку OLD_C на диске D: прямо из-под винды и считал, что все хорошо, если что – все найдем. Но реестр, естественно, не скопировался, как и ряд других открытых файлов, но тогда я не придал этому значения.

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

Обратился за помощью к старшим коллегам, но они только присвистнули, мол 1С, ну все пацан, ты попал…

Сами базы 1С были преимущественно на диске D:, но было их там некое запредельное количество, штук, наверное, 150-200. Ну да дурной собаке 100 км не крюк, сейчас открою, посмотрю, впишу, но там почти везде оказались пароли.

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

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

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

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

И этот подход спас мне в последствии множество нервных клеток, когда выяснялось, что все пошло не так и «я забыл вам сказать» или «вы что, сами не видели?». Особенно это касается всякого отраслевого софта со всякими хитрыми схемами лицензирования.

Сегодня, когда доступны быстрые и емкие носители я обычно просто снимаю полный образ системного диска с конвертацией в VHDX через Disk2vhd от Sysinternals.

Если есть место – дополнительно копирую клиенту, нет – храню у себя. Что важно – такой образ можно просто смонтировать как обычный диск в систему и поковыряться в нем без привлечения стороннего софта. А при необходимости можно и прямо с него загрузиться.

Теперь вы всегда можете вернуться к предыдущему состоянию системы и скопировать оттуда то, что вы не скопировали, либо показать клиенту, что он не прав и то, что по его утверждению работало – не работает и работать не могло.
👍6021🤝7
Используем команду sed для работы с текстом

Утилита sed - потоковый текстовый редактор. Широко используется для работы с потоками данных в скриптах и консольных командах. Владение данной утилитой относится к основам администрирования Linux.

В общем случае работа sed задается конструкцией:

команда/вхождение/замена/флаги


Например, результатом работы команды:

echo "Сегодня 1 апреля"  | sed 's/апреля/мая/'


Будет строка “Сегодня 1 мая” , в данном случае s – обозначает действие замены, далее идет вхождение и замена.

Если нужно выполнить несколько действий, то разделяем их точкой с запятой и добавляем ключ -e:

 "Сегодня 1 апреля"  | sed -e 's/сегодня/Завтра/i; s/апреля/мая/'


Так как мы не уверены, как именно может быть написано слово «Сегодня», то мы добавили к первому действию флаг i, который предписывает игнорировать регистр.

Пока что мы работали с потоками стандартного ввода-вывода, но также на вход можно подать файл:

 's/апреля/мая/' file.txt


Тогда будут прочитаны все строки файла и в каждой из них, при совпадении будет выполнена замена. Результат будет выведен в стандартный поток вывода, исходный файл изменен не будет.

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

Другой вариант – использовать флаг w с указанием файла, но в этом случае в него будут записаны только те строки, где была произведена замена:

sed 's/апреля/мая/w out.txt' file.txt


Если нам нужно редактировать непосредственно исходный файл, то следует запустить команду с ключом -i (не следует путать с командой i):

sed -i 's/апреля/мая/' file.txt


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

При работе с файлом можно указывать строки или диапазоны строк для замены, например только вторую строку:

sed '2s/апреля/мая/' file.txt


Или со 2 строки по 5:

sed '2,5s/апреля/мая/' file.txt


Для указания последней строки используйте символ $:

sed '5,$s/апреля/мая/' file.txt


Данная конструкция заменит вхождения с 5 строки по последнюю.

Если не указано иного, то sed заменят только первое вхождение в строке, номер вхождения можно указать при помощи флага или использовать флаг глобальной замены – g, при использовании данного флага с номером будут заменены все вхождения начиная с указанного, например, с третьего:

sed 's/апреля/мая/3g' file.txt


Кроме изменения строк sed можно использовать для удаления строк из потока, для этого просто укажите их номер или диапазон номеров:

sed '2,5d' file.txt


Также можно использовать вхождения, например, удалим все строки со словом «апреля»:

sed '/апреля/ d' file.txt


Можно использовать и несколько вхождений, но будьте осторожны, sed удалит все строки между ними:

sed '/апреля/,/мая/3d' file.txt


Также sed можно использовать для добавления строк в поток, в начало или конец потока, для добавления в начало используйте:

sed 'i\Это первая строка' file.txt


В конец:

sed 'a\Это последняя строка' file.txt


Или явно укажите номер строки от начала или конца:

sed '2i\Это вторая строка' file.txt


Команда с полностью заменит содержимое указанной строки:

sed '3c\Это новое содержимое третьей строки' file.txt


Еще одна возможность sed – замена символов, но при этом область замены нельзя ограничить, будет выполнена обработка всего потока, например заменим a на b, с на d и e на f:

sed 'y/ace/bdf/' file.txt


Это не полный набор приемов и возможностей sed, Телеграм накладывает ограничения на размер заметки, но уже этого достаточно для эффективного применения утилиты и получения новых навыков работы с текстом.
👍40🔥84🥱1
Иван Чёрный, автор Вороньего блога опубликовал статью:

🔹 Поднимаем свой сайт на Hugo с публикацией контента через Obsidian

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

Также он предлагает достаточно оригинальный способ написания заметок через Obsidian.

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

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

Данная заметка написана нами в поддержку начинающих авторов, почему это важно – можно прочитать здесь: https://t.me/interface31/3702
👍344🔥3🤮2
Работаем над новым сайтом, переносим контент и местами не можем себя заставить не перечитать заново...

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

🔹Направленная антенна для Wi-Fi своими руками

Статья, которую специально перевел мой немецкий друг, так как он повторил эту конструкцию и получил положительный результат. И источник - не просто кто-то там, а авторитетный CHIP DE.

А сейчас? А сейчас это вызывает просто улыбку, времена другие, технологии тоже...
9🔥6😢2🤮2👍1
Схема генератора статических сайтов на базе HUGO с автоматической сборкой и развертыванием. Начало

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

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

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

Дело в том, что HUGO в среде Windows и HUGO в среде Linux могут работать несколько по-разному, использовать разные библиотеки, разные параметры окружения. Поэтому важно обеспечить максимальную идентичность локальной и рабочей сборочных сред.

Так как мы используем GitHub Action, который создает виртуальные машины, то и для локальной среды используем виртуальную машину с Ubuntu, если же вы используете GitLab, который оперирует Docker контейнерами, то имеет смысл и локальный контур выполнить по той же технологии.

Но это уже тонкости, главное – у нас есть некоторая локальная установка HUGO с которой мы будем работать. И некоторое дополнительное окружение. В частности, локальный git-репозиторий, в котором мы будем фиксировать все изменения проекта.

Сразу дам простой совет: используйте основную ветку репозитория – main, только для повседневной работы с сайтом – т.е. создания контента, все остальные работы выполняйте в отдельной ветке, например – dev (от developer – разработка). Это немного усложняет работу, зато серьезно упрощает всю следующую эксплуатацию. Мы коснемся этого вопроса позже.

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

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

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

Можно ли такое сделать с HUGO? Можно, чего нельзя, с ним вообще многое можно, если хоть немного код писать умеете, да с нейросетями советуетесь. Но парадигма тут совсем иная.

Что делает HUGO? Собирает статический сайт из файлов проекта и отдельной ценности этот сайт не имеет, в отличие от проекта. Почему? Да потому, что его всегда можно сгенерировать заново.

Таким образом, если мы переложим конвертацию изображений на уровень HUGO, то он будет это делать каждый раз при сборке проекта, а процесс этот не быстрый и ресурсозатратный.

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

Также важно, что скрипты эти, как неотъемлемая часть проекта тоже попадут в git, что обеспечит им версионирование и децентрализацию.

Последняя достигается синхронизацией локального репозитория с GitHub, GitLab или любой иной публичной службой, не важно какой. Дополнительно это выполняет роль первого уровня резервного копирования.

Потому что представить себе, что тот же GitHub неожиданно накроется со всем пользовательским добром сложно. А при выходе из строя локального контура, даже всего полностью и безвозвратно, вы всегда можете заново клонировать git-репозиторий и просто настроить локальную среду. Максимум, что вы потеряете – это не синхронизированные изменения.
2👍23🥱51
Ходи, да оглядывайся. Новые реалии

А вот и свежие новости подоспели, в городе Каменск-Уральский в Свердловской области составили протокол на 20-летнего молодого человека по новой статье об умышленном поиске экстремистского контента (ст. 13.53 КоАП, предусматривает штраф от 3 тыс. до 5 тыс. руб.)

Источник: https://ura.news/news/1053030611

Молодой студент-медик 20 лет от роду ехал в маршрутке и залипал в телефоне. Ну и случайно наткнулся на то, что попадает под характеристику «экстремистских материалов», причем действительно экстремистских, там речь шла о действительно запрещенных организациях.

Не подозревая об этом, юноша перешел по ссылке и ознакомился с содержимым страницы. Как и почему у него это получилось без VPN – вопрос отдельный, но провайдер проявил бдительность и сообщил «куда надо».

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

Но что-то подсказывает мне, что это совсем не конец и не всем так повезет с адвокатом.

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

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

В общем, дорогие друзья, ходите, да оглядывайтесь. По нашим временам привычка полезная.
👍20👀14🤷‍♂1😁1🤡1
Куда идет современный корпоративный Linux?

Кто только не ругал компанию Microsoft за ее «минимальные системные требования», когда при выпуске очередной системы она умышленно ограничивала ее использование определенными ограничениями, часто исключительно программными.

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

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

Нет, будут энтузиасты – флаг им в руки, но основное внимание должно быть уделено мейнстримным вещам. В этом плане показателен список изменений вышедшего пару дней назад SUSE Linux Enterprise Server 16:

🔹 Прекращена поддержка скриптов инициализации SysV. Возможно использование только unit-ов systemd.

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

🔹 По умолчанию предложены только среды рабочего стола, использующие Wayland. X.org Server удалён из поставки. Поддержка запуска приложений на базе X11 сохранена при помощи XWayland.

Здесь тоже видно стремление перестать сидеть на двух стульях, хотя у Wayland есть еще замечания, но в целом это уже достаточно зрелая среда и такой шаг добавить внимания именно к Wayland, потому как наличие альтернативы в виде X11 позволяло многим разработчикам игнорировать проблемы Wayland.

🔹 Прекращена поддержка архитектуры x86-64-v1. Работа возможна только на системах x86 с архитектурой x86_64-v2, которая поддерживается процессорами примерно с 2009 года (начиная с Intel Nehalem).

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

🔹 По умолчанию в ядре отключена поддержка 32-разрядных систем x86 и запуска 32-разрядных исполняемых файлов.

Тоже вполне в духе времени, хотя и более радикально чем в других дистрибутивах. Нет, время от времени запуск x32 тоже требуется, но чаще всего это какая-либо отраслевая экзотика (привет ЕГАИС), а такой подход как раз может сподвигнуть разработчиков пересмотреть свое понимание прекрасного.

🔹 Вместо традиционного стека YaST для управления системой задействован пакет Cockpit.
🔹 Сетевой конфигуратор wicked заменён на NetworkManager.
🔹 В качестве пакетного фильтра вместо iptables по умолчанию задействован NFTables.
🔹 Осуществлён переход с DHCP-сервера ISC DHCP на KEA DHCP.

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

🔹 Прекращена поставка гипервизора Xen - в качестве основного гипервизора для виртуализации задействован KVM.

Аналогично и очень разумно. Доля пользователей Xen достаточно мала и использовать непопулярный продукт по умолчанию была не очень хорошая идея, точнее очень плохая. Зачем использовать и учить то, что после больше не пригодиться? И по чему трудно найти помощь и поддержку?

В целом тренд понятен и ожидаем. Linux давно перестал быть маргинальной системой, дешевой альтернативой или догоняющим. Поэтому он должен быть понятным и предсказуемым, соблюдать стандарты и не допускать скатывания в зоопарк технологий, что сейчас и происходит.
👍3810🫡1
Forwarded from Linux Club
🐧 Быстрый совет Linux

Хочешь видеть, когда именно ты запускал команды в терминале?
Включи временные метки в истории bash — это удобно, если нужно вспомнить, над чем ты работал и когда.

Просто добавь переменную окружения:


export HISTTIMEFORMAT="%F %T "


Теперь при просмотре истории ты увидишь дату и время выполнения каждой команды:


history | tail -n 5


или короче:


history 5


Формат "%F %T" показывает дату и время, но ты можешь настроить его под себя.
Обрати внимание: метки применяются только к новым командам и работают только в bash.

#linux

🐧 Linux Club ©

Реклама. Лисайчук Ф.В. ИНН 504207767290. erid: 2W5zFHhnA1v
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥21👍143🤮1
Современные форматы изображений

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

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

Начнем с теории, сегодня, кроме привычных JPG и PNG мы можем выбрать более современные форматы, такие как AVIF и WebP. В чем их преимущества? Если коротко – в меньшем размере изображения при сохранении визуального качества.

Это очень важный параметр для любого сайта, особенно в наше время, когда размеры и разрешения изображений существенно выросли. Сегодня мало кто захочет рассматривать картинки меньше, чем 1000 px, а еще лучше если это будет хотя бы FHD.

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

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

🔹 WebP – формат предложен Google в 2010 году, поддерживает сжатие с потерями и без, прозрачность, анимацию. В настоящий момент поддерживается всеми актуальными браузерами, поэтому вопрос совместимости практически не стоит на повестке дня.

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

🔹 AVIF – гораздо более современный формат на основе кодека AV1, разработан в 2019 году и начал поддерживаться в браузерах примерно с 2021 года, позволяет достичь еще более высокой степени сжатия чем WebP при сохранении качества исходного изображения.

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

👆 Все это хорошо, а что на практике? А практика показала следующее – WebP действительно быстрый, но степень сжатия для него не должна превышать 80%, но даже в этом случае на изображении начинают появляться артефакты.

Обычно они не сильно бросаются в глаза и обнаружить их можно только сравнением с исходным изображением, но в некоторых случаях могут быть даже сильно заметны. Полностью избавиться от них можно только при степени сжатия 90-95%, что ведет к увеличению размера файла в 2-4 раза.

Так, например, один и тот же файл со степенями сжатия 85-90-95% будет иметь размеры 80 КБ, 140 КБ и 250 КБ. Что уже достаточно существенно. На результаты такого сжатия можно посмотреть на первых двух изображениях, представлены файлы с 85% и 95% сжатия.

AVIF конвертируется гораздо дольше, но результаты получаются гораздо более высокого качества. Так для приведенного выше изображения артефакты начали проявляться при степени сжатия 40% и то грубых огрехов изображение не содержит. А на уровне 60% выглядит практически неотличимо от оригинала. Размеры тоже радуют 17 КБ и 30 КБ.

Две последние картинки, это как раз AVIF со сжатием 40% и 60%.

Таким образом лидер вырисовывается явно – AVIF и его следует использовать во всех возможных случаях, даже следует WebP, приоритет которому нужно установить таким образом, чтобы он отображался только в том случае, если браузер не поддерживает AVIF.

Для себя мы остановились на 60% для AVIF и 80% для WebP (учитывая, что он используется только как замещающий формат). В итоге получили такие результаты:

Общий размер исходных (.jpg/.png): 134.87 MB
WEBP: 35.65 MB Экономия: 73.57%
AVIF: 38.29 MB Экономия: 71.61%


С одной стороны вроде бы большой разницы нет, но при одинаковом размере мы получаем отличное качество у AVIF и незначительное ухудшение при WebP.
👍429🤔1
​​Проблема медленного клиента в Wi-Fi сетях

Многие читатели высказывают скептическое отношение к современным стандартам Wi-Fi, мол все это ни к чему, когда есть старый-добрый 802.11n, да и 2,4 ГГц добивает дальше. Но не все так просто и в этой заметке постараемся коротко рассказать об этом.

Начнем с того, что канал Wi-Fi – это разделяемая среда и пропускная способность канала делится поровну между всеми ее участниками.

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

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

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

Для примера возьмем квадрат определенного размера и разметим его сеткой 2х2 – получим 4 ячейки, если же возьмем сетку 4х4 – то ячеек уже будет 16, а при размере сетки 8х8 целых 64. Исходный квадрат у нас будет обозначать доступную полосу, а сетка – модуляцию.

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

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

Все стандарты до 802.11n (Wi-Fi 4) включительно предусматривают работу по принципу «один говорит – остальные молчат», т.е. точка одновременно работает только с одним клиентом.

Начиная со стандарта 802.11ac (Wi-Fi 5) предусмотрен режим многопользовательского MIMO, когда точка может передавать данные одновременно сразу нескольким клиентам (но не наоборот).

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

В 802.11ax (Wi-Fi 6) добавили исходящие потоки и теперь точка может не только передавать, но и принимать данные от нескольких клиентов одновременно.

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

Начнем с устаревших, эта проблема наиболее характерна для диапазона 2,4 ГГц, даже если точка поддерживает все современные стандарты, например, как в новых Mikrotik 802.11b/g/n/ax (Wi-Fi 6), то в такой сети у нас всегда найдутся устройства 802.11n.

Что это значит? А это значит, что во время работы такого устройства все клиенты 802.11ac/ax будут молчать и точка не будет передавать им данные даже если могла бы это сделать.

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

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

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

Т.е. если ваша бабушка слушает музыку с высоким качеством пропалывая грядки на краю участка страдать будет производительность и вашего нового и крутого смартфона в паре метров от точки доступа.

Поэтому самым разумным способом на сегодняшний день является использование двух диапазонов: 5 ГГц и 2,4 ГГц.

В первом будут собраны преимущественно современные устройства и работать будут как минимум на уровне 802.11ac, а все старые устройства сбросим на 2,4 ГГц на 802.11n.

Туда же будут переключаться и все устройства со слабым сигналом, и более низкая дальность 5 ГГц здесь только играет в плюс.
100👍53🤝64🤷‍♂1
​​Почему не следует использовать ретрансляторы Wi-Fi

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

Ну а что, просто, дешево и сердито. Воткнул в розетку и Wi-Fi снова появился. При этом мало кто задумывается над неочевидными подводными камнями данного решения.

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

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

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

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

Но что произойдет, когда у нас появится повторитель? С точки зрения беспроводной сети повторитель – это еще один клиент, причем для обеспечения стабильного покрытия его следует размещать в пределах уверенного приема от точки доступа (50% перекрытия).

К чему это приводит? Как мы помним Wi-Fi работает по принципу – один говорит, остальные молчат. А повторитель у нас говорит два раза, как клиент основной точки и как точка для своего клиента. Т.е. занимает дополнительные слоты передачи.

Т.е. вместо одного устройства у нас как-бы появляется два. Вместо двух – четыре и т.д.

При этом сами устройства, подключенные через повторитель, потеряют где-то 50% полосы, так как одни и те же данные потребуется передавать в одном радиоканале два раза: от клиента к повторителю и от повторителя к точке (и точно также в обратном направлении).

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

Простой и очень грубый пример: 4 устройства поделят между собой беспроводную полосу примерно поровну – по 25% на каждого.

Теперь берем 2 устройства напрямую и два через репитер. В результате полоса поделится уже на 6 устройств (два за репитером удваивают используемую полосу).

И опять-таки в идеальных условиях мы уже получим не 25, а 16% полосы на устройство.

До поры до времени, особенно если беспроводные устройства представлены нетребовательными клиентами и общей полосы хватает с запасом – это не заметно.

Но если мы начнем подключать к беспроводной сети требовательные устройства, например, телевизоры 2К – 4К, то это очень быстро станет заметно. Особенно если за репитер переместится несколько медленных клиентов, которые начнут отравлять жизнь всем остальным в два раза активнее.

Про цепочки из нескольких повторителей мы и говорить не хотим, фактически это приведет к кратному увеличению дублирующегося трафика и приведет к катастрофическому падению производительности сети.
👍1816🤔9🤝9🔥2
Беспроводные Mesh-сети

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

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

Альтернатива этому – управляемые сети на базе контроллера, но это в первую очередь дорого, плюс достаточно сложно в развертывании. Поэтому для дома и SOHO применяется промежуточное решение – Mesh-сети, которые находятся примерно посередине по возможностям и позволяют создать управляемую сетевую инфраструктуру.

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

Оптимальным вариантом является проводной бекхол – в этом случае мы получаем структуру максимально приближенную с управляемой беспроводной сети с контроллером и все точки будут использовать свой радиочастотный диапазон только на обслуживание клиентов.

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

🔹 Single-Radio Mesh – одноканальный Mesh, когда один и тот же радиоканал используется и для обслуживания клиентов и для связи точек между собой. Здесь сразу вспоминаем про повторители. Емкость канала конечна и разделяется между всеми устройствами. И если репитер принял по радиоканалу сигнал от клиента А, то ему нужно по тому же самому каналу отправить его точке С. Т.е. пропускная способность канала уменьшается в два раза.

Кроме того, такие Mesh-системы сразу делят полосу пополам: половину клиентам, половину на канал к другим точкам (бекхол). Таким образом в простейшей меш системе с одним репитером пропускная способность беспроводной сети сразу упадет вдвое.

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

Берем для примера AC (Wi-Fi 5) как наиболее массовый стандарт с полосой 1200 Мбит/с, в этом случае на бекхол первого хопа у нас придется 600 МБ/с, второго – 300 Мбит/с, третьего 150 Мбит/с. В общем для расчета доступной ширина канала можно использовать формулу (1/2)^n, где – n, число хопов.

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

🔹 Dual-Band Mesh – более продвинутые системы, когда один диапазон используется для обслуживания клиентов, второй для связи точек между собой. Так, при использовании для бекхола того же AC 1200 на 5 ГГц мы начинаем делить полосу сугубо между точками и вполне можем обеспечивать стабильные 300 Мбит/с на 2,4 ГГц даже на глубину трех хопов.

Более современный вариант такого Mesh – использование двух полос в сети 5 ГГц, одну для клиентов, вторую для бекхола, но проблемы остаются те же, уменьшение вдвое пропускной способности на каждом хопе.

🔹 Multi-Radio Structured Mesh – современные решения, использующие несколько каналов. Один для обслуживания клиентов, два – для бекхола. За счет этого появляется возможность избежать деградации и использовать полную ширину канала.

Такой Mesh практически не деградирует на разумном количестве хопов (до 10) и позволяет развертывать полностью беспроводные производительные сети. Но есть и обратная сторона медали, такая система будет практически полностью утилизировать доступный диапазон 5 ГГц, т.е. в плотной многоэтажной застройке будет активно ставить помехи соседям, и сама страдать от соседних передатчиков.
👍302
Протоколы быстрого роуминга Wi-Fi 802.11k/v/r

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

В самом простейшем случае роуминг представляет собой обычное переподключение, когда клиент обнаружив слабый сигнал от точки доступа (обычно -75 дБи и ниже) начинает поиск альтернативных точек и подключается к той, которая предоставляет наиболее сильный сигнал.

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

Чтобы избежать этих ситуаций были разработаны и внедрены протоколы 802.11k/v/r, которые используются совместно, как минимум в связке 802.11k/v.

🔹 802.11k: Radio Resource Measurement - позволяет точкам и клиентам динамически обмениваться информации о состоянии среды передачи, что позволяет клиенту быстрое и проще понять куда можно переподключиться.

Так клиент может запросить у точки Link Measurement Report – отчет об измерении канала, в ответ точка ему пришлет параметры приема клиента, что позволит последнему вовремя понять, что точка его не слышит из-за асимметрии мощности или помех, хотя он слышит ее хорошо.

Также точка может попросить у клиента Beacon Reports – отчет о всех точках, которые он видит и качестве сигнала каждой из них, это позволяет контроллеру сети понять положение клиента относительно точек и то, как выглядит радиочастотная среда со стороны клиента.

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

Последнее имеет важное значение для быстрого переключения, так позволяет избегать полного сканирования диапазона и проверить только рекомендованные точки, что уменьшает время сканирования с 0,5 -2 с, до 0,1 с и менее.

🔹 802.11v: Wireless Network Management – протокол, используемый в связке с 802.11k и позволяющий проактивно управлять беспроводной сетью.

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

Также если точка доступа перегружена или видит, что качество связи с клиентом ухудшилось, то она проактивно отправляет клиенту BTM Request с рекомендацией переключиться.

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

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

🔹 802.11r: Fast BSS Transition – протокол быстрого переключения, который позволяет ускорить этот процесс за счет предварительной аутентификации и генерации сессионных ключей.

Обычно переключение происходит следующим образом: клиент отличается от одной точки, аутентифицируется на второй, подключается, формирует ключи и производит рукопожатие.

Это может занимать до 0,7 – 1 с, что приводит к разрывам VoIP соединений, зависанию видеоконференций, лагам в онлайн-играх и т.д.

802.11r предлагает выполнять предварительную аутентификацию и генерацию ключей для подключения к другой точке еще до разрыва старого подключения, что позволяет радикально сократить время переключения до 15-50 мс.

Однако для ее поддержки требуется WPA2-Enterprise или WPA3, что делает технологию пока недоступной большинству домашних и SOHO пользователей.
3👍42🤝54🔥3
​​Виртуальные флешки в Windows

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

Для этого есть ряд решений, и они достаточно освещены в интернете. Из всего множества мы чаще всего используем следующие программы:

🔹 ImDisk - это драйвер виртуального диска для Windows. Он может создавать виртуальные жесткие диски, флешки, дискеты или приводы CD/DVD, используя файлы образов или оперативную память. Пакет устанавливает консольную утилиту и оснастку панели управления.

🔹 OSFMount – программа от PassMark, позволяет монтировать файлы образов виртуальных дисков различных форматов, а также создавать их в виде образов или RAM-дисков.

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

🔹 VeraCrypt – известное ПО для создания зашифрованных контейнеров, также позволяет подключать контейнер как виртуальный флеш накопитель. Учитывая, что основная функция данного ПО – это шифрование его использование становится интересным для работы с ЭП.

Фактически на его базе можно создать виртуальный аналог токена, который будет хранить ваши подписи в зашифрованном виде и будет эффективно защищать от возможной утечки файла-образа.
👍44🔥7
​​Работаем с репозиториями PowerShell

PowerShell – это мощное средство автоматизации, но его возможности можно еще сильнее расширить при помощи различных модулей. Но где их взять? В репозитории.

Для этих целей у Microsoft создан отдельный проект PowerShell Gallery, который уже подключен в качестве репозитория в PowerShell.

В этом несложно убедиться:

Get-PSRepository


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

Одна из первых задач – поиск необходимого модуля, для этого используйте команду:

Find-Module -Name MyPSModule


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

Find-Module -Name *MyPSModule*


После того, как вы нашли требуемый модуль, то установите его командой:

Install-Module -Name MyPSModule


Также вы можете использовать опцию -RequiredVersion для указания точной версии модуля, которую вы хотите установить, либо -MinimumVersion и -MaximumVersion для более гибкого указания ограничений.

Например, указанная ниже команда установит самую последнюю версию модуля, но не новее, чем 2.4:

Install-Module -Name MyPSModule -MaximumVersion 2.4


Посмотреть все установленные модули можно командой:

Get-InstalledModule


Установленные модули можно и нужно обновлять, для этого используйте команду:

Update-Module


Без аргументов она обновит все установленные модули, чтобы подавить запросы на подтверждение добавьте ключ -Force.

Чтобы обновить отдельный модуль просто укажите его имя:

Update-Module -Name MyPSModule


Для удаления ненужного модуля используйте:

Uninstall-Module -Name MyPSModule


Также есть возможность проверить действие команды без ее выполнения, для этого добавьте к ней ключ -WhatIf.
👍24🤝6🔥42
Это я точно на Хабр попал? 🙀
🤯32😁28🤬2
​​В чем основное отличие apt upgrade от apt full-upgrade

Начнем с того, что обе команды делают в общем одно и тоже – обновляют пакеты. Ни одна из них не предназначена для обновления дистрибутива на новую версию.

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

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

Поэтому обновляться через apt upgrade достаточно безопасно, особенно если у вас подключены сторонние репозитории или установлены сторонние пакеты вручную. В любом случае работающую систему вы не сломаете.

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

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

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

Если же у вас в системе сборная солянка и особенно есть добавленные руками пакеты, то обновляться лучше в два этапа: сначала через apt upgrade, после чего внимательно изучить список пакетов, оставшихся без изменений и аккуратно обновить их вручную, убедившись, что при этом вы ничего не сломаете.
👍435👌4🤮1👨‍💻1