Вомбатного шаббата!
Шаббатного вомбата, вомбаты!

Кто он?
Конечно же наш дорогой вомбат!
Вот, посмотрите-ка, Прогуливающийся Вомбат - Walkabout Wombat.
Он приветливо машет вам лапкой, на нём нарядные курточка и шляпа, за спиной у него небольшая сумка с перекусом.
Walkabout Wombat появился в 1992 году в австралийском (конечно же) журнале "Women's Weekly", затем его показали в австралийском ситкоме "Kath & Kim", а недавно он был замечен на Reddit.
Всем здравствовать!
Примерно так я планировал проснуться сегодня, ближе к обеду. И неспеша выбраться из логова.
Но жизнь, как обычно внесла свои коррективы. Встал попить (сушнячок, знаете ли), тут глядь! Что-то лежит на полу. Ладно, пришлось открыть второй глаз, и что же я увидел? Ни за что не догадаетесь! Хачапури. Вчера напекли. Жена сложила часть в миску, а часть в пакет, чтобы отнести отцу. Так вот, наша рыжая "леди" раздербанила этот пакет, и понаоткусала две штуки. Разозлила меня, а поэтому пришлось идти за пивом. В девять утра.
Никакой личной жизни, в общем.
С просторов Reddit, местами в видео есть громкая музыка. Но вроде таких тут еще не видел.
Хотел написать про работу системы управления памятью, но понял, что для полноценной статьи у меня не хватает практических знаний. Поэтому кратко
Помимо стека, о котором было рассказано в прошлой статье и который содержит локальные переменные, в "потребительской" программе в среднестатистической ОС еще бывают глобальные переменные и динамическая память. Глобальные переменные описываются внутри сегментов .bss и .data, резервируясь в памяти сразу после загрузки образа программы (по-правильному это называется процессом).
Динамическая память иначе называется кучей, так как представляет из себя кучу динамических данных, который могут появляться и исчезать во время работы.
Для работы с динамической памятью в C существует malloc(size_t), запрашивающий (выделяющий, аллоцирующий) у ОС кусок памяти указанного размера и возвращающий указатель на первый байт, и free(void *), принимающий этот указатель и возвращающий (освобождающий) кусок назад в ОС.
В C++ есть операторы new и delete, они устроены гораздо сложнее и я не буду их рассматривать, ибо не пишу на нем. Помимо запроса памяти у ОС они занимаются ее инициализацией.
Если по какой-то причине стандартной библиотеки языка в наличии не имеется, то в Windows за память отвечает HeapAlloc и устаревшие GlobalAlloc и LocalAlloc из времен Windows 3.11 (malloc к ним и обращается внутри. Еще есть парные HeapFree, GlobalFree и LocalFree). Они предоставляют больше контроля над результатом, но проприетарны для Windows. А полный список функций для работы с памятью в WinAPI есть здесь, их сотни на любой случай жизни. Можно даже внутри контекста чужого процесса выделить или освободить кусок памяти (обычно такое используется вирусами и прочей нечистью).
А что будет, если постоянно выделять, но не освобождать? А еще лучше: выделять, но терять адреса выделенной памяти. ОС достаточно быстро подскажет правильный ответ.
В теории есть несколько возможных выходов, можно даже обработать подобный случай и, к примеру, экстренно освободить всё выделенное (только если не терять указатели) или попытаться спасти нужные данные из разваливающейся программы, но если никаких действий не предпринять, то ОС заставит процесс экстренно прекратить свою деятельность и существование.
Случай с потерей указателей на выделенную память называется утечкой памяти и ее последствия необратимы. Но как только ОС завершает выполнение процесса, то вся его память, даже утекшая, становится снова свободной.
Отслеживание правильности выделения и освобождения памяти является достаточно сложной и опасной задачей, особенно если требуется обеспечивать стабильность и безопасность (лучше даже не думать, что будет, если рукожопый программист забьет на MISRA и устроит утечку памяти в подсистеме тормозов в Тесле), и практически невыполнимой в некоторых парадигмах (особенно в функциональном программировании). Поэтому еще с древнейших времен (с 1959 года) существуют языки со сборкой мусора:
Но несмотря не это, практически все современные языки используют сборку мусора, кроме C++ и Rust. C++ по большей части перешел на умные указатели, которые тоже считают количество активных ссылок, но делают это без сборщика мусора. А Rust использует свой уникальный Borrow Checker, который понимают только растофилы.
На этом вроде у меня всё.
Всем здравствовать!
Я тут кружку получил. Вполне заслуженно, ящитаю))
Но тут дело не в самой кружке. Хотя кружка - огонь!
Хочется поблагодарить всех причастных. Во первых @vombat ты крутой, сам знаешь. @Vombatolog наша пчёлка Майя, трудится не покладая лапок)) @bagira_tora главный логист всея Вомбата))
В общем, всем спасибо, все свободны благодарю всех причастных от всего сердца!
P.S. Итак, открывашка есть, кружка есть, блокнот есть. Осталось только стикеры получить и шоппер (самая сложная задача), но, буду стараться))
В последнее время чё-т я совсем обленился, но продолжаю вивисекцию вомбатных.
Свежий набросок. Не уверен, увидит ли он свет (негде хостить и риск DDoS), но зато теперь я могу читать Вомбат даже в MS-DOS из текстового Links. И в Firefox 2 со всеми картинками (конвертация из WebP на сервере). Вход в аккаунт пока не планируется, хотя и возможен. Видео тоже реализуемы, но проблемно.
Меня достаточно долгое время раздражала нелогичная скругленность интерфейса сайта. Несмотря на то, что так сейчас делают везде, это модно и соответствует передовым принципам дизайностроения, я остаюсь фанатом Windows 8/старых версий Windows 10/Dear ImGui в плане дизайна, с их идеально острыми углами. Некоторым извращенцам еще Windows Phone нравился. Плюс квадратность рож вомбатов определенно намекает, что рожа сайта тоже должна быть квадратной.
Помимо этого были обозначены дополнительные функции: скачивание видео и поиск по тегу. Они есть в TODO сайта и де-факто это можно делать вручную, но неудобно и не все знают/могут.
Первый день начался с... создания нового скрипта GreaseMonkey, вспоминания основ CSS и установки радиуса скругления на всех элементах страницы в 0. Сделано это было довольно быстро, после чего к основным блокам были добавлены рамки. Результат получился довольно неплохим (субъективно), хотя и не без проблем. Круговой индикатор загрузки превратился в 2 шпалы, решил не исправлять. Напоминает предыдущую итерацию дизайна Pikabu (2020) до скругления и удаления рамок.
Следующие две ночи я провел в попытках отследить все видео на странице и окна поиска. Получилось крайне колхозно и ненадежно (вероятно сломается при следующем обновлении), но оно работает. Зато загрузка видео выглядит так, как будто это родная функция. Еще нажатием с Alt можно скопировать прямую ссылку, хотя этого лучше избегать из-за возможного перемещения адреса сервера.
Поиск по тегу помимо уродского дизайна не учитывает одну большую проблему: теги регистрозависимые. То есть "кот" и "Кот" приведут к разным результатам, а еще "вомбат шаббат" и "вомбатшаббат". Решить с клиентской части это невозможно, а с серверной все равно создает много проблем и единственным вариантом я вижу слияние одинаковых тегов в разных регистрах и создание команды модераторов, которые будут приводить теги к единообразию. Но это уже не моя компетенция, в остальном поиск по тегу работает как и должен.
Меню настроек было написано в промежутке с 3 до 6 утра сегодняшнего дня, не вижу смысла заострять внимание. Почему разработчики GreaseMonkey не сделали нормальных штатных функций для этого - ХЗ.
Скачать или полюбоваться на чудеса говнокодостроения можно здесь. Требуется любой менеджер скриптов по вкусу (TamperMonkey (я использую его), GreaseMonkey, ViolentMonkey, т.д.). Chrome умеет устанавливать скрипты как расширения, но у меня используются специфичные функции, которые им напрямую не поддерживаются.
Просьба Он писался человеком, который впервые увидел JS и CSS3 после одиночного знакомства с CSS2 и HTML4 много лет назад. Плюс оно работает, а остальное уже не так важно (есть косяк с тем, что скрипт загружается раньше React и сбивает его с толку, но на работоспособность это вроде не влияет). Еще он должен работать в мобильном Firefox, но я не тестировал. Но поиск по тегам работать точно не будет, исправлю в следующей версии.сильно не бить за качество кода.
Активно поддерживать не обещаю (С), но пока я буду пользоваться сайтом, скрипт должен обновляться. Идеи по новым функциям, исправления или баги можно озвучить в комментариях
Всем хороших выходных!
Как всем прекрасно известно, в телеге есть отличный стикер-пак от ZaTaS. Я время от времени вставляю их и сюда, но до сего дня это были просто снимки с экрана. Ну, а поскольку все используют разные темы, кому-то нравится светлая, кому-то тёмная, но если на светлой теме тёмный фон снимка смотрится нормально, но светлый фон на тёмной теме смотрится очень резко (я сам использую тёмные везде, где это возможно). Поэтому, я решил заморочиться, и сделать снимки стикеров с прозрачным фоном. Если вдруг кому пригодится, пользуйтесь на здоровье!
Да, все снимки в небольшом разрешении, но в формате .png, иначе теряется прозрачность.
Итак, поехали!
А значит и возлежать следует соответствующим образом.
Всех причастных с праздником!
Кормит молочком. Ну, или пивком. Кому что ближе, то и пьём-с))
Читая посты, здесь, на vombat.su заметил, что многие, до сих пор используют термин "лига". Этот термин был приемлем на пикабу, а мы, здесь, на другом ресурсе. Потому предлагаю термин "вомбратсво" (обсуждению не подлежит).
Ну, а поскольку русский язык велик и могуч, предлагаю (опять же, обсуждению не подлежит) добавить несколько слов в наш лексикон.
Вомбатствовать - читать посты на vombat.su (это в частности), в общем же смысле это значит читать/смотреть что-то интересное/познавательное. Просвещаться в общем.
Вомблядствовать - щитпостить на вомбате.
Вомбрадость - крайне интересный/полезный/красивый пост на вомбате. В реальной жизни - радостное событие.
Вомбдохновление - желание/реальное действие вдохновлённое постом/статьёй на вомбате.
На этом, пока, всё, смартфон разрядился. Пишите Ваши предложения в комментариях.
Признавайтесь, кто ещё получил такую ачивку?