Regex engine internals as a library [full]
Это полный перевод большой статьи по внутреннему устройству крейта regex свежей версии. Если вам всегда было интересно, как оно там под капотом устроено, а в книге Фриддла или в книге дракона вы не нашли подробностей, то добро пожаловать — будет интересно и очень сложно.
«Привет, Хабр! Наконец-то я снова выбрался на барахолку рядом с Валенсией. Не был больше месяца, поскольку сейчас очень жарко, поэтому удовольствие посещения такого огромного блошиного рынка то ещё. Продавцов чуть меньше, чем в более прохладные месяцы, но интересные вещи всё же встречаются. Что-то я приобрёл, что-то — просто сфотографировал»
Клавиатуры, роботы-пылесосы и новые странные штуки с испанской барахолки
Самое ценное в сезоне Java One Love — это обмен опытом!
Джуны пишут свои первые статьи о реализации Java-приложений, ищут советы и рекомендации, а опытные джависты демонстрируют редкие решения для серьёзной промышленной эксплуатации:
📦 Поднимаем кластер PostgreSQL в Docker и Testcontainers
🤳 Авторизация в приложении Spring Boot с Spring Security 3.1.0 и PostgreSQL
💥 Использование Kotlin и WebFlux для выполнения задач ML в Apache Spark на GPU
🌱 Магия Spring Framework своими руками
📋 Исчерпывающее руководство по одномерным массивам в Java
⚡️ Новый взгляд на Maven-plugin для IDEA — GMaven
Сезон Java One Love мы проводим вместе со спонсором — Мир Plat.Form. Сезон идёт до 15 сентября. Если у вас есть Java-опыт — делитесь им на Хабре и получайте призы.
«Я делал много вещей с компьютерами, но в моих знаниях всегда был пробел: что конкретно происходит при запуске программы на компьютере? Я думал об этом пробеле — у меня было много низкоуровневых знаний, но не было цельной картины. Программы действительно выполняются прямо в центральном процессоре (central processing unit, CPU)? Я использовал системные вызовы (syscalls), но как они работают? Чем они являются на самом деле? Как несколько программ выполняются одновременно?
Наконец, я сломался и начал это выяснять. Мне пришлось перелопатить тонны ресурсов разного качества и иногда противоречащих друг другу. Несколько недель исследований и почти 40 страниц заметок спустя я решил, что гораздо лучше понимаю, как работают компьютеры от запуска до выполнения программы. Я бы убил за статью, в которой объясняется все, что я узнал, поэтому я решил написать эту статью»
Как работает компьютер: глубокое погружение на примере Linux
«Я очень люблю ламповые радиоприёмники, мне нравится изучать их устройство, любоваться внешним видом и даже просто созерцать в сумерках магические огоньки за задней стенкой, излучающие тепло, уют, романтику и добрый душевный голос из громкоговорителя… Но к сожалению, в наше время возможно принимать в основном зарубежные станции и только ночью. Поэтому иногда я развлекался тем, что слушал музыку подключаясь к усилителю радиоприёмника. Так и возникла идея сделать портативную Bluetooth-колонку в ретростиле с ламповым усилителем без всяких претензий на High End»
Портативная Bluetooth-колонка «Ламповичок» на радиолампах 30-х годов
«У нас большой парк устройств, плюс одни и те же устройства работают в разных корпусах. Это требует настройки антенны для каждого типа продукта. Обращаться каждый раз к специалистам слишком дорого, поэтому несколько лет пытаемся научиться делать сами. Далее расскажу о процессе настройки антенны для одного из наших устройств с антенной из провода (ground plane)»
Пора улучшать согласование
«Что такое архетип? Это — образец набора вариантов поведения или поведенческих сценариев, типичных для определённой роли. <...> Сегодня мы поговорим о 12 архетипах программных архитекторов, все из которых, за исключением двух, выявлены мной»
Архетипы программных архитекторов
«Посмотрите вокруг, квартиры большей частью 1-2-3-комнатные, то есть рассчитаны максимум на семью с двумя детьми. Стандартная машина в кузове седан вмещает спереди двух родителей, а сзади два детских кресла. Купе в поезде четырёхместное, семья с тремя детьми-школьниками в нём не поместится. И таких мелочей полно. Причины кризиса депопуляции слишком фундаментальны, они не исчезнут и не рассосутся»
Что происходит с рождаемостью в России и мире. И как это может отразиться на каждом из нас
«Всегда мечтал управлять процессами, работать с людьми. Казалось, что я «знаю, как правильно», как изменять процессы или учить ребят, чтобы они работали лучше. Хотелось помогать ребятам жить в лучшем мире. Мечта сбылась. Но, как говорится, есть нюанс.
Поговорим о том, что вас ждёт, когда вы станете руководителем»
Как стать руководителем и не помереть
«Я лечу людям глаза, и у меня есть много пациентов, которые не знают совершенно обычные базовые вещи. Как умываться, что можно, что нельзя, от чего бывает плохо глазам.
Например, приходит взрослый уже человек, у которого в анамнезе 7 лет ношения линз, и говорит: «Что-то я видеть стал хуже». А у него там красивый гнойный конъюнктивит. Я прошу его снять линзы, чтобы всё это рассмотреть, так он плюёт на палец и собирается лезть им в глаз. С причинами воспаления сразу всё становится понятно.
Или вот очки. Часто пенсионеры обращаются, мол, видеть стали хуже, наверное, катаракта. Бывает и катаракта, а бывает — надо просто поменять стёкла в очках. Если покрытие дешёвое, то при протирании бумажной салфеткой или тряпкой со стола очки за год где-то «матируются», стирается антибликовое покрытие. Видеть действительно становится хуже.
В общем, дальше — ликбезы»
Ковры и зрение, как умываться, чистить очки и гладить кошку
#хабраархив
«Говорят, собственный пример — это самое лучшее обучение для ребёнка. Рассказываю, как я проверил справедливость этого высказывания на себе, с нуля погрузился в робототехнику и в итоге у меня даже получилось сконструировать нечто стоящее. А ещё в процессе я поднаторел в вопросах экономии средств на покупке довольно дорогостоящих деталей для такого вида хобби»
Как воспитать в своей семье юного инженера и не разориться
«Когда я впервые столкнулась с Linux, я и не представляла, что буду делать видеоролики в этой системе. И вот сейчас я использую различные инструменты работы с видео в операционной системе Альт. В этой статье поделюсь личным опытом»
Монтаж видео в Linux: обзор свободных редакторов
Руководство по Jobs To Be Done и Desired Outcomes для дизайна интерфейсов
JTBD — прекрасный инструмент для разработки цифровых продуктов, но применимый только совместно с Desired Outcomes. Без них нет достаточной детализации, чтобы «взять и сделать».
«Проблема ноутбука, который я купил — вылетевшие петли экрана. Они просто отвалились от крышки — пластик в местах крепления просто рассыпался. Проблема этих ноутбуков — очень тугие петли экрана, вследствие чего через несколько лет эксплуатации пластик рассыпается. Думаю, эта проблема знакома очень многим здесь, я как-то видел целую ветку комментариев с обсуждением, как всё это можно починить. Сегодня и починим»
Отлетели петли экрана ноутбука? Починим. Эпоксидка не нужна, главный инструмент — клеевой пистолет и паяльник
⚡️ Новости к этому часу
🎮 Появились первые фото конкурента Steam Deck от Lenovo с намёком на Switch
📲 Платформа «Антифрод» с момента запуска заблокировала 391,3 млн звонков с подменных номеров
⛔️ Linus Tech Tips приостановил производство нового контента из-за проблем внутри команды
📱 Появились первые фотографии и детали о смартфоне «Р-ФОН» на базе российской мобильной ОС Rosa Mobile
☝️ Физики на шаг приблизились к созданию спинтронных устройств
🙅🏻♂️ Учёные отказываются от X (Twitter) и ищут альтернативы
📜 Минпросвещения убрало из списка профобучения профессию кучера, но добавило оператора дронов
🐷 Исследователям впервые удалось пересадить работающие почки от свиньи к человеку
🛰 «Роскосмос» показал первое детализированное фото Луны с «Луны-25» (ФОТО)
#новости
Как iMac спас компанию Apple
После бурных дней революции персонального компьютера в середине 1990-х возник застой. Apple десяток лет транжирила преимущества Mac и, наконец, после громкого появления Windows 95 от них почти ничего не осталось. Это была эпоха бежевых десктопных компьютеров, подключённых к большим ЭЛТ-дисплеям и другой периферии.
В 1997 году Стив Джобс вернулся в Apple, находившуюся на пороге смерти, и быстро оценил пассивы и активы компании. У Apple не было ни волшебной палочки, ни курицы, несущей золотые яйца, зато имелся молодой промышленный дизайнер, который экспериментировал с цветами и прозрачным пластиком.
Мозг Джобса, дизайны Джони Айва и новый чип PowerPC G3 компании Motorola позволили компании начать придумывать план. По сути, Джобс вернулся к своей исходной концепции «компьютер для всех остальных», к продаже простоты. Графический интерфейс Mac с управлением мышью, возможно, и изменил направление движения мира PC, но его дизайн «всё в одном» не сработал. Джобс решил, что настало время повторной попытки.
«О, Bioshock, как много в этом слове! Страх от неизведанного и нового мира, эстетический восторг от Восторга и вывернутая наизнанку душа по ходу прохождения — в далёком 2007-м эта игра конкретно встряхнула моё юное и неокрепшее сознание. И таким же образом Bioshock перевернул и игровую индустрию, став первым за долгие годы представителем жанра immersive sim, который смог не просто стать успешным, а буквально захватить мир. Как студии Irrational Games удалось буквально невозможное? Насколько тернистым оказался их творческий путь? Об этом и не только сегодня и поговорим»
Как создавалась Bioshock
Как в «МойОфис» за один день наняли много C++-разработчиков: рекомендации для нанимающих менеджеров
Уже как минимум пару лет формат быстрого найма сотрудников набирает популярность в ИТ-компаниях. У него есть неоспоримые плюсы для всех участников: всего за один день работодатель закрывает вакансию (а то и несколько), а кандидат получает ответ (и, возможно, предложение о работе). 17 июня ребята из «МойОфис» провели ряд онлайн-собеседований c C++-разработчиками уровня middle и senior — и в итоге пополнили команды сразу нескольких отделов.
В этом посте вы найдёте ценные наблюдения по итогам проекта и важные инсайты
⚡️ Новости к этому часу
🎮 Новая игра The First Descendant от Nexon будет поддерживать технологию Samsung HDR10 Plus Gaming
🤖 «Яндекс Маркет» создал складского робота Dilectus
🧑🏻🔧 Учёный заявил, что проблемы с «Луной-25» заметили ещё до попытки перейти на орбиту
🎲 Roblox обвинили в содействии детским азартным играм
🔎 Вышел браузер с минималистичным графическим интерфейсом qutebrowser 3.0 (ФОТО)
🛰 Гендиректор «Роскосмоса» Юрий Борисов заявил, что основной причиной крушения станции «Луна-25» стал сбой при отключении двигателя
#новости
«Это гораздо хуже пузырьковой сортировки (с её квадратичной асимптотикой) не только из-за ужасающе долгой работы, но и ещё в добавок нам для массива каждой длины надо писать отдельную функцию. Жуть»
Пишем самую тупую на свете сортировку
Nintendo Switch Lite не включается и не заряжается: чиним портативную консоль. Основные причины «окирпичивания»
На днях автор купил «мёртвую» Nintendo Switch Lite на испанском аналоге «Авито» за 40 евро. Купил её с диагнозом «не включается и не заряжается». Причём продавец утверждал, что экран целый, а консоль не заливалась. Что ж, давайте посмотрим, что можно сделать.
Сапог Шварца — парадоксальный «цилиндр», который может иметь бесконечную площадь
Архимед приближенно определял длину окружности с помощью длин сторон вписанных и описанных правильных многоугольников. В общем смысле, длину любой кривой можно выразить как наибольшее значение длин вписанных ломаных. Однако для корректной работы этого метода вершины ломаных должны находиться на самой кривой, а не просто рядом с ней.
Сапог Шварца приводит аналогичный контрпример для площади поверхности, демонстрируя, что для точного приближения площади требуется ещё больше, чем просто условие, что вершины лежат на искомой поверхности
⚡️ Новости к этому часу
📱 Apple выпустила рекомендации по безопасному обращению с iPhone
🗄 В WinRAR версии 6.23 устранена критическая уязвимость CVE-2023-40477, позволяющая запускать в системе вредоносный код
🛰 Первые результаты работы научных приборов «Луны-25» на окололунной орбите
🇮🇳 Посадочный модуль «Чандраян-3» провёл второй манёвр по снижению орбиты перед посадкой
⚖️ Суд в США отказал в защите авторских прав автору произведения, сгенерированного при помощи ИИ
👨💻 Хакеры в ходе кибератаки парализовали IT-системы 10 научных обсерваторий в Чили и на Гавайях
😞 «Роскосмос» объявил о потере «Луны-25» (ФОТО)
🎮 Вышла демоверсия игры в стиле PS1 по мотивам сериала «Твин Пикс»
🆕 Представлен язык программирования Moonbit, оптимизированный для создания приложений, компилируемых в WebAssembly
#новости
Графическое программирование конечных автоматов для Arduino
Как только сложность программы выходит за пределы «Hello Word!», у начинающих ардуинщиков появляются проблемы. Самая тяжелая из них — удержать в голове структуру программного кода. Нельзя сказать, что у опытных программистов встраиваемых систем этой проблемы нет. Достаточно попытаться реанимировать собственный проект двухлетней давности, если он недостаточно документирован, то включиться в работу будет очень трудно.
Решение существует — представление в графическом виде. При этом программа разбивается на секции кода, которые имеют одну точку входа и одну точку выхода. Эти секции образуют состояния или иначе вершины, по терминологии теории графов. Вершины соединяются между собой условными переходами, также содержащими программный код. Получается наглядно и очень надёжно.
Всё это хорошо, но новичку просто лениво. Зачем что-то рисовать, если того же результата можно добиться несколькими строчками кода? Ответ: макрокоманды. Такие, например, как WAIT(Time,Counter), она позволяет с лёгкостью организовать временную задержку. И это будет вовсе не Delay(Time) от Arduino, которая остановит выполнение всего остального пользовательского кода. Нет. По предоставляемым возможностям ближайшей аналогией будет RTOS — операционная система реального времени. Если один автомат замер в ожидании отсчёта времени, то остальные автоматы проекта будут продолжать работать.
Рассмотрим практическое использование графических конечных автоматов под Arduino на примере часов-метеостанции
Avito: work hard, pay less
В 2022 году около 100 тысяч айтишников уехало из России. Для сохранения многомиллиардного бизнеса в «Авито» хотели сохранить сотрудников. Компания вышла из положения, открыв в июле 2022 года офис в Армении, куда устраивала желающих работать из-за границы.
Договоры заключались в армянских драмах и без привязки к рублю. Офферы пересчитывались по внутреннему курсу компании, который был зафиксирован на 1 год. Несмотря на расхождения с реальным курсом рубля, руководство уверяло, что условия для уже устроенных сотрудников не изменятся.
К июлю 2023 года «КЕХ Армения» заключила более 600 таких договоров. Рубль слабел, и филиал в Армении обходился компании всё дороже. Перемены не заставили себя долго ждать.
Магнитный левитатор-ночник
Левитирующие предметы всегда выглядят захватывающе, тем более если они ещё и светятся. О таком устройстве и пойдёт речь. Следуя этой инструкции, можно изготовить очень необычный ночник.
⚡️ Новости к этому часу
🌐 Бывший генеральный директор Google Эрик Шмидт создаёт глобальный проект, в котором объединит ИИ и научные исследования
💰 Минобрнауки РФ направит ₽29,4 млрд на цифровые сервисы по анализу и прогнозированию кадровой ситуации для вузов
⬛️ Глубокий космос оказался не таким тёмным, как ожидали астрономы
🪱 Бóльшая часть живых существ на Земле живёт под землёй
🛰 Индийское космическое агентство сообщило об отделении посадочного и двигательного модулей «Чандраян-3» на орбите Луны (ФОТО)
🖼 В WhatsApp появилась возможность обмениваться фотографиями в HD-качестве
🏴☠️ Группа по борьбе с пиратством добилась запрета на популярный набор данных Books3 для обучения ИИ
#новости
Подводные камни C++. Решаем загадки неопределённого поведения. Часть вторая
Продолжаем цикл статей, посвящённых теме undefined behavior. Ранее мы исследовали предпосылки неопределённого поведения в C++, предоставили формальные определения и рассмотрели несколько примеров. Сегодня углубимся в проблему: сосредоточимся на случаях UB при многопоточности и неправильном использовании move-семантики.
Подобные ситуации могут казаться тривиальными на первый взгляд. При этом они служат основой для более сложных и реальных сценариев, с которыми разработчики порой сталкиваются в своей практике.
Первые новинки C++26: итоги летней встречи ISO
На недавней встрече комитет C++ активно взялся за C++26. Уже есть первые новинки, которые нас будут ждать в готовящемся стандарте C++. О них и поговорим.
Пожарная сигнализация из московского метро
Поговорим про центральный блок управления системы пожаротушения «Игла». По сути это один из немногих представителей транспортной электроники, что можно увидеть в работе без какого-либо дополнительного оборудования. Узнаем, как он устроен и работает, а также можно ли ещё где-то его использовать.