Для подписчиковВ сегодняшней статье мы подробнее разберем работу виртуальной машины установщика InstallShield в динамике при помощи нашего любимого отладчика x64dbg на примере инсталлятора одного технического приложения.
Некоторые из них хорошо известны, другие — достаточно нишевые. Но все они очень полезны разработчикам и менеджерам. Любопытно, какие из них вам известны: Закон Паркинсона. Закон Хофштадтера. Закон Брукса. Закон Конвея (и обратный закон Конвея). Закон Каннингема. Закон Старджона. Закон Завински. Закон Хайрама. Закон Прайса. Эффект Рингельмана. Закон Гудхарта. Закон Гилба. Закон Мёрфи. Поехали. 1. Закон Паркинсона Работа заполняет время, отпущенное на неё. Это знаменитый закон, используемый …
Кажется, уже каждый дизайнер написал свою статью об этом, а мне все еще есть, что сказать. Я не стану повторяться о вежливом общении и важности сетки в макетах. Эта статья о моем личном UX-подходе в повышении юзабилити результатов дизайнерского труда. Всем привет! Это Наташа, проектировщик интерфейсов в Selectel. В этот раз я поделюсь тем, как повысить свою техническую экспертизу, оставаясь дизайнером, и как мне в этом помогли флешбэки из предыдущей профессии инженера-архитектора. Используйт…
Я завершил разработку новой версии прибора для измерения ёмкости любых батареек и аккумуляторов.Прибор прост в использовании, точен и универсален — с помощью него можно измерить ёмкость любого элемента питания — от самой маленькой часовой батарейки до автомобильного аккумулятора.Любой желающий может собрать такой прибор из доступных модулей.О первой версии прибора я рассказывал весной 2024 года. Для тех, кто знаком с ней и, возможно, собрал прибор, начну со списка изменений.Отличия новой версии…
Довольно актуальная тема, согласитесь? Ощущение, что разные приложения, которым ты когда-то доверял, просто перестали адекватно работать. Примером того может быть ваш Nest Hub Max, который способен ответить разве что на самые базовые запросы, хоть и использует передовую модель Gemini от Google. Или же различные социальные сети типа Instagram, Facebook и Twitter — которые раньше заполняли вашу ленту постами друзей и близких, а теперь впихивают в неё «рекомендации», рекламу и сгенерированный ИИ…
Эта статья — не о вечной молодости и не про биохакинг. Это — живая техническая ретроспектива о том, почему некоторые программисты становятся сильнее с возрастом, а не наоборот. Как меняется восприятие кода после 40? Почему опытный разработчик способен «разруливать» архитектурные адские кухни там, где молодёжь сгорает на ревью? И при чём тут ассемблер, собаки и JavaScript? Ответы — внутри. Сорок — это новые двадцать (в коде, по крайней мере)В 20 ты пишешь на скорости света, в 30 ты уже понимаеш…
Lua — это лёгкий, быстрый и гибкий скриптовый язык, который появился в 1993 году. Он написан на C и чаще всего используется не как самостоятельный язык, а как встраиваемый инструмент для других приложений.Если вы играли в World of Warcraft и устанавливали аддоны, вы уже сталкивались с Lua. Redis исполняет Lua-скрипты внутри себя. Nginx использует его для обработки HTTP-запросов. В NeoVim плагины тоже можно писать на Lua. Короче говоря — язык не из популярных топов, но крайне полезен и встраивае…
ИИ-помощники в программировании ворвались в повседневную жизнь разработчиков с невероятной скоростью. Но что стоит за удобством? Ускорение или поверхностное мышление? Разбираем, как меняется стиль программирования, поведение и архитектура кода, когда часть решений принимает нейросеть. Много примеров, кода, субъективных наблюдений и немного философии.ИИ — это не просто автодополнениеВ 2021 году, когда Copilot только начинал свое шествие, многие относились к нему как к новому автокомплиту. Но за …
Привет, Хабр!Глубокое копирование в JavaScript всегда было немного проблемой. До тех пор, пока в языке не появился structuredClone() — метод, который решил многие наши проблемы. Почему structuredClone() — это не JSON.stringify() 2.0Если раньше вы использовали JSON.stringify() + JSON.parse() для глубокого копирования, то вы знаете: работает, но только до первого нестандартного объекта.const data = { date: new Date(), regex: /hello/gi, map: new Map([['key', 'value']]), }; c…