Pull to refresh
0
0.1

User

Send message

Inertia 2.0: Новые возможности для разработчиков

Level of difficultyMedium
Reading time4 min
Views3.9K

На конференции Laracon Тэйлор Отвел, создатель популярного PHP-фреймворка Laravel, представил Inertia.js версии 2.0 — самое крупное обновление с момента запуска этого пакета. Новая версия приносит множество полезных функций, которые значительно упростят разработку приложений на Laravel и Inertia.js.

Читать далее
Total votes 9: ↑8 and ↓1+10
Comments0

Простая нейронная сеть на C++

Level of difficultyEasy
Reading time5 min
Views18K

Всем привет!

При помощи нейронной сети решил проблему классификации фигур на изображениях размера 7 на 7 пикселей. Задача решалась в рамках студенческой лабораторной работы. Статья приводится в качестве руководства для решения подобных академических задач.

Читать далее
Total votes 27: ↑23 and ↓4+27
Comments34

C++ с точки зрения Rust-разработчика: достоинства и недостатки

Reading time8 min
Views14K

Я профессионально программирую на Rust и, признаться, немного этот язык продвигаю. Поэтому можете себе представить глубину моего расстройства, когда моя младшая сестрёнка, почти не умеющая программировать, обратилась ко мне и попросила научить её C++. Я попытался её отговорить, сказав, что однажды она будет сидеть за отладкой ошибок сегментирования, вооружившись Valgrind и вспоминать этот наш разговор, размышляя, а где же она свернула не туда. Но она оказалась ещё упрямее меня и настаивала: хочу выучить язык программирования, которым действительно пользуются люди.

Я не притрагивался к C++ с тех пор, как ещё в старших классах разрабатывал игры на Cocos2D-X, но решил, что сохранившихся у меня туманных воспоминаний о «правиле трёх» (или сколько там было? Пять? Ноль?) и прочих подобных материях будет более чем достаточно, чтобы решить такую задачу. Оказалось, что и мне требуется кое-что подучить, но я с удовольствием узнал, что существует большая аудитория, с которой можно поделиться этими знаниями. Почти любую концепцию из C++ легко понять, если объяснить её в ключе «о, эта как та штука из Rust».

Притом, что C++ местами несимпатичен, этот язык по-своему красив. Я и так это знал, но, когда взялся заново учиться C++, мне стало только яснее: если Rust в какой-то степени и превосходит C++ (допустим, вы верите, что это так), то лишь потому, что сам Rust стоял на плечах такого гиганта как C++.

Так что мы потратили пару недель, проштудировав серию руководств по OpenGL от ютубера под ником TheCherno (кстати, сама серия отличная). Две недели спустя нам удалось на экране единственный статичный голубой квадратик. Я уже стал опасаться, а не начнёт ли моя сестра сомневаться, стоило ли таким образом изучать разработку игр и пытаться изобразить что-нибудь на C++. Так что тогда я решил, что следует отбросить руководства господина Черно и взяться за разработку игры всерьёз.

Читать далее
Total votes 30: ↑24 and ↓6+30
Comments69

Nuclei Fu

Level of difficultyHard
Reading time9 min
Views778

Привет, Хабр! Меня зовут Станислав Савченко, я ведущий эксперт базы знаний в CyberOK. За последний год в Nuclei было несколько крупных обновлений, которые принесли множество фич, таких как кодовая вставка, использование javascript в шаблонах, управление запросами через flow, внедрение подписи шаблонов и пр. Сегодня хотелось бы рассказать о возможных атаках на Nuclei, а именно о клиентских атаках, которые стали доступны благодаря этим нововведениям.

Читать далее
Total votes 5: ↑5 and ↓0+7
Comments0

Ломаем простую «крякми» при помощи Ghidra — Часть 1

Reading time9 min
Views88K
О том, что это за зверь такой — Ghidra («Гидра») — и с чем его едят она ест программки, многие уже, наверняка, знают не понаслышке, хотя в открытый доступ сей инструмент попал совсем недавно — в марте этого года. Не буду докучать читателям описанием Гидры, ее функциональности и т.д. Те, кто в теме, уже, уверен, всё это сами изучили, а кто еще не в теме — могут это сделать в любое время, благо на просторах веба сейчас найти подробную информацию не составит труда. Кстати, один из аспектов Гидры (разработку плагинов к ней) уже освещался на Хабре (отличная статья!) Я же дам только основные ссылки:


Итак, Гидра — это бесплатный кроссплатформенный интерактивный дизассемблер и декомпилятор с модульной структурой, с поддержкой почти всех основных архитектур ЦПУ и гибким графическим интерфейсом для работы с дизассемблированным кодом, памятью, восстановленным (декомпилированным) кодом, отладочными символами и многое-многое другое.

Давайте попробуем уже что-нибудь сломать этой Гидрой!
Читать дальше →
Total votes 58: ↑57 and ↓1+56
Comments32

Auth service без библиотек

Level of difficultyMedium
Reading time8 min
Views7.8K

О чем эта статья: статья посвящена схемам регистрации, аутентификации, авторизации пользователей в веб приложениях, смене паролей, отзыве токенов, и т. п. Мы также рассмотрим, как организовать хранение данных, обсудим, что такое JWT, коротко поговорим о «сервисе для отправки email»

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

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

Читать далее
Total votes 12: ↑12 and ↓0+13
Comments8

Многозадачность — как ничего не упустить без вреда для нервной системы

Reading time5 min
Views6.1K

• Существует ли предрасположенность к многозадачности? 
• Как многозадачность влияет на эффективность? 
• Что рекомендуют специалисты? 

Читать далее
Total votes 34: ↑29 and ↓5+26
Comments16

Gitea и ее безопасность

Reading time4 min
Views4.7K

Рано или поздно, при работе с системой контроля версий Git у разработчиков появляется необходимость в использовании веб интерфейса. Существует несколько различных решений, предоставляющих подобный функционал, разной степени “платности”, однако, у многих разработчиков пользуется популярностью решение Gitea, о безопасности которого мы и поговорим сегодня.

Читать далее
Total votes 8: ↑8 and ↓0+13
Comments4

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

Level of difficultyEasy
Reading time6 min
Views2.1K

Привет! На связи Паша и Даша из Timeweb Cloud. Мы руководим отделом информационной поддержки и развиваем систему чуткого саппорта 24/7/365. За последние годы мы кратно выросли и зарекомендовали себя в числе лучших на рынке. Рост спровоцировал появление новых проблем, поэтому мы решили трансформировать процессы в командах с нуля.

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

Читать далее
Total votes 16: ↑11 and ↓5+13
Comments5

Интервью из мира хостинга: Сергей из ua-hosting.company

Level of difficultyEasy
Reading time20 min
Views5.3K

Всем привет! Меня зовут Леонид, я - владелец сервиса Поиск VPS. Сегодня я представляю вашему вниманию интервью с Сергеем - руководителем ua-hosting.company. В прошлом году состоялось открытие площадки компании в американском ЦОД Iron Mountain в Нью-Джерси. Недавно для меня провели экскурсию по дата-центру, а после мы обсудили нынешние особенности работы хостинга среднего размера и некоторые отличия европейской площадки от американской.

Читать далее
Total votes 31: ↑29 and ↓2+37
Comments14

Реализуем эффективный тупль с помощью C++26

Level of difficultyMedium
Reading time7 min
Views9.5K

Свет видел много любительских реализаций std::tuple, и реализация своих велосипедов — наверное, это действительно действенный способ обучения: вряд-ли можно сказать, что ты что-то по-настоящему понимаешь, если не можешь объяснить, как это что-то устроено.

Многие пытливые умы на протяжении десятилетий задавались вопросом: как же реализован std::tuple, как мне реализовать свой тупль (кортеж)? [1]

И немало было дано ответов на такие вопросы и написано статей ([2]). Однако я берусь утверждать, что все они имеют один фатальный недостаток! Конкретнее, они все рассматривают в основном лишь один (и при этом неэффективный) способ реализации: с помощью множественного наследования или рекурсивного инстанцирования, имеющий в свой очередь множество своих недостатков, главный из которых — неэффективное использование памяти.

В то время как современный C++ позволяет реализовать тупль гораздо проще (без обилия шаблоноты) и эффективнее.

Войти в мир эффективных реализаций туплей
Total votes 33: ↑30 and ↓3+37
Comments69

Разговор с быдло-кодером

Reading time18 min
Views5.6K

Вернемся к одному из проектов дистрибутива программной платформы SimInTeh,  который был рассмотрен в двух статьях(см. [1, 2]). Он же под именем "Управление водонагревательным котлом" включен в раздел "Лабораторные работы по библиотекам" справочной системы SimInTech. Последнее должно предъявлять к нему повышенные требования, как к примеру, поясняющему, рекламирующему те или иные стороны и возможности программной платформы. Одним словом, он должен быть идеальным ...

Только недавно одна из найденных в нем ошибок  была устранена. Но не это знаменательное событие было причиной вернуться к данной теме, а пришедшая примерно в это же время рассылка, рекламирующая возможности "новейшей российской инженерной платформы Engee". В числе прочих ее достоинств описывались включенные в платформу конечные автоматы  (КА)[3], а в видео по ссылке прослеживалась явная любовь к светофорам. Но  нагреватель в этом смысле ни чуть не хуже, а даже предпочтительнее.

Но "спусковым крючком" стал эмоциональный всплеск не самой положительной оценки данной конечным автоматам (подробнее см. [4]). Примечательно, что прозвучал он со стороны тех, кто ранее ввел этот инструментарий в свою платформу и, как можно предполагать, использует. Видимо, они лучше знают возможности своих автоматов? Но, если серьезно, то это, скорее всего, результат отмеченного "всплеска", который за истину воспринимать не стоит. Тем не менее, необходимо что-то уточнить,  чтобы учесть и такое мнение о КА. 

Итак, перед нами проект "Нагреватель" или "Управление водонагревательным котлом". Я не смог сразу найти проект в ВКПа к тем еще статьям, но, если честно, не сильно его и искал, т.к. решил, что проще создать новый. Хотелось проверить, что получится, если повторить в ВКПа автоматы, полностью аналогичные ранее созданным программным автоматам на внутреннем языке платформы SimInTech. А поскольку они были спроектированы согласно концепциям автоматного программирования, то препятствий не предполагалось. Но ... воистину - "не было этого никогда и вот опять".

Читать далее
Total votes 9: ↑6 and ↓3+6
Comments43

Многопоточность в играх

Level of difficultyEasy
Reading time16 min
Views9.1K

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

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

Читать далее
Total votes 24: ↑23 and ↓1+27
Comments15

Чему нас НЕ учат случаи МТС, СДЭК и КБ Радуга или Имитационная Безопасность

Level of difficultyHard
Reading time7 min
Views30K

Утром 17 марта (2024) стали недоступны VDS‑серверы одновременно в двух датацентрах CloudMTS — в 03:30 в 1cloud.ru, в 03:45 в oblako.kz
Сервер в oblako.kz ожил 18 марта в 22:25
Сервер в 1cloud.ru ожил 23 марта в 15:40

Читать далее
Total votes 111: ↑86 and ↓25+80
Comments61

Переход с физического сервера на виртуальный

Reading time5 min
Views13K

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

Но есть случаи, когда виртуальный сервер удобнее домашнего. Например, он удобнее для раздачи файлов в интернете и обслуживания личного веб-сайта, а также для мониторинга и тестирования сервисов (программа должна быть постоянно в онлайне). Для создания дополнительной резервной копии файлового архива, которая будет физически удалена от основного домашнего хранилища. Даже ультрадешёвый сервер за 130 рублей в месяц способен одновременно поддерживать несколько процессов.
Читать дальше →
Total votes 20: ↑19 and ↓1+28
Comments10

Лучшие практики Laravel для разработчиков в 2024 году

Level of difficultyMedium
Reading time16 min
Views8.4K

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

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

Читать далее
Total votes 9: ↑7 and ↓2+7
Comments5

World Composition для игр с открытым миром — Unreal Engine 4

Reading time16 min
Views15K

Всем привет. Меня зовут Ширшов Владимир и я техлид проекта King's Bounty 2. Игра разрабатывается на движке Unreal Engine 4.

King's Bounty 2 - это игра с открытым миром, в котором есть города, поселения, наполненные персонажами, интерактивными объектами и зонами сражений. Персонаж может перемещаться по миру как пешком, так и верхом. Все элементы открытого мира должны помещаться в память, удовлетворять требованиям по производительности и успевать загружаться на всех целевых платформах (PlayStation 4, XBox One, Nintendo Switch), чтобы вокруг игрока всегда были персонажи и детализированные объекты.

Я хочу поделиться опытом использования системы стриминга уровней в Unreal Engine 4 World Composition для создания открытого мира и рассказать об ее плюсах и минусах. Также расскажу о тех изменениях, которые нам потребовалось внести в нее для того, чтобы игра помещалось в память целевых платформ, и уровни успевали загружаться при перемещении игрока по локации.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments8

regexp — большие гонки

Level of difficultyMedium
Reading time3 min
Views8.1K

Так или иначе сталкиваться с регулярными выражениями приходилось большинству разработчиков. Мое первое знакомство произошло с реализацией regex в STL std::regexp. Чаще всего регулярки используются в проверке входных данных, что-то вроде проверки корректности введенного пользователем URL, адреса IPv4, адреса IPv6, телефонного номера и при этом скорость выполнения операции regex не сильно влияет на время отклика от приложения. Но, что если вам приходится проверять сотни, тысячи или даже десятки тысяч правил и все это на постоянно меняющихся наборах входных данных в реальном времени? В этой ситуации вам не просто нужен быстрый алгоритм, вам понадобится лучший из них, вам понадобиться чемпион!

Участвовать в заезде!
Total votes 18: ↑17 and ↓1+23
Comments27

Мы хотим, чтобы серверы падали одновременно

Level of difficultyEasy
Reading time6 min
Views18K

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

Сервера, которые смущали заказчика работали в роли бэкенда для хранения видеофайлов. По сути, это было множество узлов, содержащих десятки терабайт видеофайлов, которые предварительно были нарезаны в разном разрешении конвертерами. Затем, все эти миллионы файлов отдавались во внешний мир с помощью nginx + kaltura, что позволяло перепаковывать на лету mp4 в сегменты DASH/HLS. Это позволяло хорошо переносить даже высокие нагрузки, отдавая плеером только нужные сегменты без резких всплесков.

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

Читать далее
Total votes 41: ↑39 and ↓2+56
Comments36

Information

Rating
3,162-nd
Registered
Activity

Specialization

Security Architect
Lead
From 12,000 $
Negotiation
C++
Qt
OOP
Linux
PHP
SQL
Nginx
High-loaded systems
Designing application architecture