![](https://habrastorage.org/r/w780/getpro/habr/upload_files/d45/319/625/d4531962516af920966ed4e380cac93f.jpeg)
Пользователь
Выбираем между инструкциями RUN, CMD и ENTRYPOINT
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/ffa/2c0/5b0/ffa2c05b026e432d9e261d402c6a6378.png)
Для выполнения похожих задач в Docker нередко есть несколько решений. Одна запутанная область касается инструкций RUN, CMD и ENTRYPOINT Dockerfile. В этом переводе обсуждаются различия между этими инструкциями и показываются примеры их использования в форматах shell и exec.
Occlusion masking: просвечиваем стены в Unreal Engine
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/43d/6c7/c8c/43d6c7c8c65b9375ea45240b5e3953ef.png)
В этом туториале рассмотрим создание эффекта Occlusion Masking — просвета стен, за которыми находится персонаж. Постарался структурировано изложить свой опыт по этому вопросу, включая разбор существующих решений, реализацию основного и дополнительного функционала, а также решения проблем, с которыми пришлось столкнуться. В общем, это та статья, которой мне очень не хватало, когда я работал над подобным эффектом.
Docker для Angular-приложений: от простого к несложному
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/1df/6be/aa8/1df6beaa86759840acc9f83108f80895.jpeg)
Привет, Хабр! Меня зовут Артём, я разрабатываю фронтенд систем управления сетью в YADRO. С Docker знаком давно и часто его использую. Но когда столкнулся с задачами, где недостаточно просто скопировать шаблонный Docker-файл и подправить пару строчек, решил больше погрузиться в эту тему.
В статье я разберу типовые вопросы, связанные с запуском Angular-приложений в контейнерах, — это поможет в дальнейшем справиться с более замысловатыми задачами. Текст будет полезен тем, кто уже что-то знает про Docker, но не углублялся в детали или хочет освежить знания на практике.
Как работают языковые модели
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/577/b54/304/577b54304d8a778e84d409c95b86c98b.jpg)
Если мы хотим использовать большие языковые модели (БЯМ) в своей работе и при этом называть результаты творческими, нам придётся понять, как они работают — по крайней мере, на высоком уровне.
Существует множество отличных руководств о внутренних механизмах языковых моделей, но все они довольно техничны. (Заметным исключением является статья Нира Зичермана в журнале Every о том, что БЯМ — это еда.) Это обидно, потому что есть всего несколько простых идей, которые нужно понять, чтобы получить базовое представление о том, что происходит под капотом.
Я решил изложить эти идеи для вас — и для себя — в максимально свободной от жаргона форме. Приведённое ниже объяснение намеренно упрощено, но оно должно дать вам хорошее представление о том, как всё работает. (Если вы хотите пойти дальше упрощений, я предлагаю поместить эту статью в ChatGPT или Claude).
Готовы? Приступим.
Деплой .NET приложений для самых маленьких. Часть 1. Jenkins
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/603/fde/4e8/603fde4e87428524bad4d9d4894284a9.png)
В прошлой статье мы рассмотрели способы запуска наших проектов на удаленном VPS. Для этого мы арендовали хостинг, создали шаблонное приложение, перенесли его на хостинг через простое копирование через ssh и через git clone, запустили через dotnet run / dotnet publish
, а также развернули приложение в докере.
Действительно, такой подход сложно назвать правильным даже для учебных целей, уж тем более его вряд ли можно назвать хорошим для реальных рабочих проектов. Поэтому предлагаю рассмотреть сценарий развертывания контейнеризированного .NET приложения с использованием Jenkins.
Осваиваем DOM Invader: ищем DOM XSS и Prototype Pollution на примере пяти лабораторных и одной уязвимости на Хабре
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/555/81f/ca0/55581fca0507457987fe1229ec464597.jpg)
Привет, Хабр! Сегодня мы познакомимся с DOM XSS и Prototype Pollution, рассмотрим примеры уязвимостей на Bug Bounty и научимся использовать инструмент DOM Invader, который заметно упростит поиск таких уязвимостей.
Материал будет интересен специалистам, которые уже сталкивались с DOM XSS и Prototype Pollution. Если вы еще не знакомы с этими уязвимостями, стоит обратить внимание на лабораторные PortSwigger и теорию и только потом приступать к изучению DOM Invader. А если знакомы, то быстро вспомним основные понятия и объясним, а в чем же, собственно, состоит опасность.
Переход на .NET Aspire из отдельных проектов. Часть 1. Перевод приложений в Aspire
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/106/0e3/49a/1060e349a5d709b9454c9bce647f3560.png)
Не так давно в свет вышел .NET Aspire - продукт для упрощения создания и публикации микросервисных приложений от Microsoft. В рамках данной статьи будет рассмотрен ручной переход на Aspire в "игрушечном" случае: пара небольших проектов, один из которых обращается к Postgres'у.
Жанры видеоигр: всё, что вам нужно знать
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/3e4/4f9/bf3/3e44f9bf347a7d46f231e1c3f97408b3.jpeg)
В мире видеоигр существует бесконечное разнообразие жанров. От экшенов и шутеров до ролевых игр и стратегий - каждый жанр предлагает уникальный геймплей, насыщенный сюжетом и возможностью полностью погрузиться в виртуальную реальность.
Один из наиболее распространенных жанров видеоигр – это экшены. Они характеризуются динамичными сражениями и высокой интенсивностью игрового процесса. Экшены подразумевают активное участие игрока в событиях, когда ему необходимо принимать мгновенные решения и использовать разнообразные навыки для достижения цели. Эти игры часто предлагают захватывающие сюжеты, эффектную графику и возможность испытать адреналин от противостояния опасным противникам.
Но экшены - лишь один из множества жанров, доступных для игры. Ролевые игры (RPG) позволяют глубже погрузиться в фантастический мир, стать его частью и прожить интересные приключения в роли выбранного персонажа. Стратегии требуют тактического мышления и способности строить планы на долгосрочной основе для достижения успеха. А приключенческие игры помогут раскрыть тайны загадочных местностей или разгадать запутанные головоломки.
В этой статье мы рассмотрим самые популярные жанры видеоигр подробнее, обратимся к их особенностям и узнаем о том, как выбирать игру по своему вкусу. Узнайте больше о любимых жанрах или откройте что-то новое для себя! Ведь всегда есть возможность отправиться в другой мир благодаря удивительному разнообразию видеоигровых жанров.
Виртуальный аватар без мокап-костюма или сказ о том, как Unreal Engine не хотел с API работать
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/d87/d9c/55c/d87d9c55c3da76ccd3b13ad6dc04fcfa.png)
В этой статье мы расскажем Вам идею о том, как заставить манекена в Unreal Engine 5 повторять движения за человеком в кадре при помощи Python, нейронных сетей и API-запросов, а также поделимся наработками проекта “Виртуальный аватар без мокап-костюма”.
Игровые паттерны программирования: Game Loop
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/971/884/5f4/9718845f4053b117122a13b7ea678a36.png)
Это перевод одной из глав книги Game programming patterns Роберта Найстрома. Так как книга по сути состоит из подробного описания шаблонов проектирования, каждая глава может рассматриваться как самостоятельная статья, чем я и воспользовался и перевел, как мне кажется, статью с самым важным паттерном в игростроении — Game loop.
Как Apple на самом деле следит за вами
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/382/4bf/e72/3824bfe720f6ec091eebf185cb29f3e4.png)
По счастливой случайности я оказался резидентом Евросоюза, а значит, на меня также распространяется GDPR. Он позволяет мне запросить копию информации, которая хранится обо мне у всяких разных компаний. Я решил сделать это у Apple, и был неприятно удивлен.
Apple старается собирать как можно меньше данных.
Скрытый потенциал функции inject в Angular
Привет! В этой заметке покажу, как можно использовать функцию inject
на сто процентов.
Обычно ведь как: если функцией inject
и пользуются, то только для того, чтобы заменить инжект через конструктор. Удобно, конечно. Но что, если я скажу, что это не всё, на что способна функция inject
? Давайте посмотрим на паре примеров, как ещё её можно использовать.
Чек лист переноса сайта с одного домена на другой
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/460/01b/2a2/46001b2a25ac5d128d25c1804620d21e.jpg)
Владельцы и администраторы корпоративных сайтов иногда сталкиваются с необходимостью переноса своего сайта на новый домен. Такая необходимость может возникнуть по ряду причин, включая изменение бренда компании, смену сферы деятельности или обнаружение более подходящего имени для домена.
Однако ошибки в процессе переноса сайта могут серьезно сказаться на его позициях в поисковой выдаче и значительно снизить органический трафик поисковых систем, что, в свою очередь, может повлечь за собой значительные финансовые потери и утрату контакта с целевой аудиторией для корпоративных сайтов.
Неожиданные последствия запуска PostgreSQL в Docker: замедление запросов в 100 раз
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/23b/1a5/265/23b1a5265e81ef2f178e313326b0a815.png)
У одного из клиентов нашей системы мониторинга PostgreSQL серверов возникла проблема сильного замедления запросов при запуске базы в Docker. В этой статье расскажем о возможных последствиях использования PostgreSQL в Docker с конфигурацией по умолчанию.
Вы кто такие, я вас не знаю, или Как мы делаем JWT-аутентификацию
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/f06/188/3ba/f061883bac9b232aa95c355aaf154f1c.png)
Привет! Меня зовут Данил, я backend-разработчик в Doubletapp. Почти во всех наших проектах есть пользователи, которые могут войти в систему. А значит, нам почти всегда нужна авторизация. Мы используем авторизацию, построенную на JSON Web Token. Она отлично сочетает в себе простоту реализации и безопасность для приложений.
В интернете есть много разных материалов с объяснением, что такое JWT и как им пользоваться. Но большинство примеров ограничиваются выдачей токена для пользователя. В этой статье я хочу рассказать не только о том, что такое JWT, но и как можно реализовать работу с access и refresh токенами и решить сопутствующие проблемы. Будет немного теории и много практики. Присаживайтесь поудобнее, мы начинаем.
Путеводитель:
• Что такое JSON Web Token?
• Использование и реализация
• Простая реализация JWT
• Access и refresh tokens
• Как отозвать токены
• Доступ с нескольких устройств
• Удаление старых данных
• Резюмируем
Сила композиции
Функциональное программирование может отпугивать сложностью и непрактичностью: «Я далек от всех этих монад, пишу на обычном C#, в докладе про функциональщину ничего не пойму. А если даже напрягусь и пойму, где мне потом это применять?»
Но когда объясняет Скотт Влашин, все совершенно не так: его доклад о композиции с конференции DotNext 2019 Moscow — пример того, как можно доносить функциональные идеи простыми словами. Он за час перешел от бананов к монадам так, что второе кажется немногим сложнее первого. А в конце объяснил, почему осмыслить композицию полезно даже тем, кто не собирается покидать мир ООП. Примеры кода в докладе как на F#, так и на C#.
Уже завтра начнется новый DotNext, где я помогу Скотту выступить с другим докладом, а пока что публикую перевод его выступления про композицию. Далее повествование будет от лица Скотта.
Чем различаются Kafka и RabbitMQ: простыми словами
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/35f/223/470/35f2234702e411abf41bd0347988e731.png)
Программные брокеры сообщения уже стали стандартом при построении больших и сложных систем. Однако до сих пор не все ИТ-специалисты понимают, как работают эти инструменты. Главный системный аналитик «Иннотех» Павел Малыгин помогает разобраться в брокерах сообщениях и их работе.
Основные архитектурные шаблоны построения ПО
Рентабельный код 2: крадущийся DDD, затаившийся CQRS
![](https://habrastorage.org/files/fa2/152/377/fa21523771534f1fa7c924421d320a12.jpg)
Трем программистам предложили пересечь поле, и дойти до дома на другой стороне. Программист-новичок посмотрел на короткую дистанцию и сказал, «Это не далеко! Это займет у меня десять минут». Опытный программист посмотрел на поле, немного подумал, и сказал: «Я мог бы добраться туда за день». Новичок посмотрел на него с удивлением. Гуру-программист посмотрел на поле и сказал. «Кажется минут десять, но я думаю пятнадцати будет достаточно». Опытный программист рассмеялся.
Программист-новичок двинулся в путь, но в течение нескольких мгновений, начали взрываться мины, оставляя после себя большие ямы. От взрывов он отлетал назад, и ему приходилась начинать сначала снова и снова. У него ушло два дня чтобы достичь цели. К тому же он весь трясся и был ранен, когда пришел.
Опытный программист пополз на четвереньках. Осторожно щупая землю и ища мины, двигаясь только если был уверен, что это безопасно. Медленно и осторожно он пересек поле в течение дня. Только задев пару мин.
Гуру программист пустился в путь, и пошел прямо через поле. Целеустремленно и прямо. Он достиг цели всего за десять минут.
«Как тебе это удалось?» — спросили двое других — «Как ты умудрился не зацепить ни одной мины?»
«Легко» — ответил он. «Я не закладывал мины на своем пути».
Как ни прискорбно, придется признать – мы сами закладываем себе мины. В первой части я подробно разобрал основные риски в разработке ПО и описал технологические и методологические способы ослабления этих рисков. За прошедший год я получил множество комментариев, основной смысл которых сводился к следующему: «все круто, но с чего начать и как все это будет выглядеть в реальном мире». Действительно, первый текст носит скорее теоретический характер и представляет собой каталог ссылок. В этой статье я постараюсь привести как можно больше примеров.
Information
- Rating
- 4,760-th
- Location
- Biała, Tarnow, Польша
- Date of birth
- Registered
- Activity