Pull to refresh
0
Василь Бєляєв @VXPread⁠-⁠only

C#, C++, Lua

Send message

Кто реально угрожает C++ (нет, Rust, не ты)

Reading time14 min
Views81K

Привет! Меня зовут Александр Каленюк, и я крепко подсел на C++. Пишу на C++ 18 лет кряду, и все эти годы отчаянно пытаюсь избавиться от этой разрушительной зависимости.

Всё началось в конце 2005 года, когда мне довелось писать движок для симуляции 3D-пространства. В этом движке было буквально всё, чем язык C++ мог похвастаться в 2005 году. Трёхзвёздочные указатели, восьмиуровневые зависимости, C-подобные макросы повсюду. Кое-где – вкрапления ассемблера. Итераторы в стиле Степанова и мета-код в стиле Александреску. В общем, всё. Кроме ответа на самый важный вопрос: зачем?

Читать далее

Как использовать Singleton и не потерять тестируемость

Level of difficultyMedium
Reading time4 min
Views5.3K

Singleton — порождающий шаблон проектирования, гарантирующий, что объект существует только в одном экземпляре, и предоставляющий глобальную точку доступа к нему (современные критики считают, что это паттерн реализации, а не проектирования).

Итак, представим, что у нас есть некоторые данные Info, которые можно получить из базы данных. Эти данные используются в разных частях программы и не изменяются во время её выполнения. Похоже, это идеальный кандидат для кэширования с помощью Singleton.

Читать далее

Памяти Кевина Митника — хакера, ломавшего ФБР, АНБ и Кремниевую долину. Часть 5: призрачный номер и загадочный хакер

Level of difficultyEasy
Reading time14 min
Views18K

Итак, Кевин Митник из-за предательства некстати возбомбившего от проигранного пари друга Ленни ди Чикко угодил в лапы ФБР. В суде ему были предъявлены обвинения в различных действиях, которые он, по крайней мере, как Митник утверждал до своей смерти, не совершал. Однако многие его настоящие правонарушения остались неизвестными в то время. В этот момент перед лицом прокурора, который говорил о его несуществующих преступлениях, включая фразу «Он может насвистеть по телефону и запустить ядерную ракету с базы NORAD!», Кевин начал сомневаться в американском правосудии. В результате он решил сделать всё возможное, чтобы никогда не попасться. Однако законопослушность и отказ от хакерства не входили в его планы…
Читать дальше →

Неожиданности IPv6, или почему тупят Instagram и WhatsApp через прокси и VPN

Level of difficultyEasy
Reading time9 min
Views58K

Довольно часто в последнее время на разных форумах и чатах люди жалуются, что когда они пользуются VPN или прокси, то у них после подключения на устройствах как-то странно начинают работать некоторые приложения. Например, не приходят сообщения в WhatsApp, не загружаютя сторис в Instagram, и другие подобные вещи. Причем нередко проблема чинится сама по себе спустя 10-15 минут после подключения, но после переподключения или переоткрытия клиента начинается снова. Иные жалобы состоят в том, что не смотря на то, что пользователь выходит в интернет через VPN или прокси, некоторые заблокированные сервисы и сайты у него все равно не открываются. И в том и в том обычно винят баги прокси/VPN-клиентов, администраторов серверов, и кого угодно еще. И я вам скажу: зря. Все гораздо проще и гораздо сложнее одновременно.

Читать далее

Презервация и пиратство: как не потерять медиа

Level of difficultyEasy
Reading time12 min
Views8.5K
image

Вы когда-нибудь задумывались о том, что однажды не сможете посмотреть любимый фильм, пройти любимую игру, прочитать любимую книгу, послушать любимую музыку? Если вы думаете, что такого не случится, то вы не правы. The Crew, гоночная аркада от Ubisoft, больше недоступна для прохождения. Многие старые мобильные игры канули в Лету. Многие книги больше не переиздаются в бумажном виде. Кино и музыка, которые распространяются через стриминговые площадки, легко могут исчезнуть, если сервис закроется, либо случится что-то непредвиденное. Но всё же — как сохранить любимый контент, чтобы им пользовались ещё долгие годы?
Читать дальше →

Как починить телефон своими руками

Level of difficultyMedium
Reading time4 min
Views15K

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

Читать далее

Отправляем GC в отпуск и создаем эксзепляры классов .NET сами

Level of difficultyMedium
Reading time6 min
Views7.4K

Придерживаясь великой цитаты "правила созданы для того, чтобы их нарушать", давайте нарушим какие-то основополагающие правила CLR. Как на счет того, чтобы послать GC с его работой в отставку и самим заняться размещением в памяти экземпляров классов? Заодно разберемся, как все это работает где-то там под капотом CLR.

Читать далее

Погружение в метаклассы в Python

Level of difficultyMedium
Reading time16 min
Views17K

Задумывались ли вы, почему функция isinstance(int, object) возвращает True? Объяснение, что все является объектом, которое можно часто услышать, хоть и является правдой, но не дает ответа на вопрос и на самом деле есть профанация, потому что не дает настоящего понимания, а создает только его видимость. Ведь совсем непонятно, почему int (как и любой другой стандартный класс) является непременно экземпляром базового класса. Да, он является подклассом, но почему именно экземпляром? Ответ будет дан по ходу изложения.

Читать далее

И снова о useCallback

Level of difficultyEasy
Reading time5 min
Views7.9K

Привет, Хабр! Так вышло, что на текущем я попал под сокращение, а значит путь к собеседованиям открыт. Как раз вчера случилось одно (видимо, из многих), на котором зашла речь про useCallback.

Читать далее

Паразитные оттенки в фотографии: причины и способы удаления

Level of difficultyMedium
Reading time11 min
Views11K

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

Читать далее

Вступление в мир разработки игр

Level of difficultyEasy
Reading time5 min
Views8.1K

Исследуйте путь профессионала в области машинного обучения и его команды, погружаясь в разработку мобильных игр. Статья рассказывает о переходе от участия в соревнованиях на Kaggle к созданию мобильного приложения «Угадай фильм». Узнайте о проблемах разработки MVP для Android, интеграции техник машинного обучения с использованием OpenCV и различных этапах разработки и публикации приложения. Погрузитесь в процесс использования ИИ для дизайна, выбора кадров из фильмов и включения интересных фактов о фильмах через ChatGPT, завершившись успешным запуском в Google Play.

Читать далее

Как сделать pruning, чтобы потом не плакать

Level of difficultyEasy
Reading time14 min
Views4.8K

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

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

Принцип обрезки можно применять в разных ситуациях. Например, если у нас есть модель, которая обучена для распознавания ста классов объектов, а нам на самом деле нужно только десять, то почему бы не убрать те девяносто лишних? Это позволит нам сделать модель поменьше, но не менее эффективной. А если мы создаем модель с нуля, то обрезка может помочь нам сразу сделать ее компактнее и эффективнее.

Короче, pruning — это для тех, кто хочет сделать свои модели легче и быстрее без потери качества.

Читать далее

Похоже, я придумал свой алгоритм поиска кратчайшего пути (upd: меня опередили...)

Level of difficultyMedium
Reading time17 min
Views38K

Всем привет! Я реализовал, похоже, собственный алгоритм поиска кратчайшего пути с отрицательными ребрами графа.

Почему собственный? Я искал подобное решение, но не нашел, возможно, оно уже было реализовано, просто плохо поискал. Жду Нобелевскую премию =)

Додумался я до него путем модификации классического Дейкстры. Прошу адекватно отнестись к содержимому, ибо это моя первая статья, и, возможно, я ничего не придумывал и, вообще, этот алгоритм не работает вовсе (но по многочисленным тестам он работает правильно).

Читать далее

Каково это — работать с Netscape Composer в 2024 году

Level of difficultyMedium
Reading time6 min
Views5.7K

Как гик из начала 1990-х, который увлекался компьютерами с юных лет, я с почтением вспоминаю технологии конца того десятилетия и начала 2000-х.

Поэтому, когда в мои руки пару месяцев назад попал старый компьютер, я, недолго думая, установил на него Windows 98, чтобы поиграться с программами из моего детства. Среди интересовавших меня жемчужин был Netscape Communicator. Это программный пакет 1997 года, включавший Netscape Navigator — первый браузер, с которым мне довелось работать. В пакет также входил WYSIWYG-редактор Netscape Composer.

Через Netscape Composer я впервые познакомился с веб-разработкой. Ещё подростком я создавал с его помощью свои первые веб-страницы. В онлайн те страницы так и не попали, но я гордо таскал их с собой на дискете, показывая родственникам и друзьям на их компьютерах. Создавая эти страницы, я уяснил, что сайты состоят из простых файлов. Используя Netscape Composer, я также освоил основные веб-термины вроде «страница» и «гиперссылка».

Естественно, веб-ландшафт с тех пор сильно развился, и мне было любопытно снова попробовать это старое ПО, чтобы оценить его ограничения и посмотреть, как будет выглядеть генерируемый им код сегодня, в 2024 году. Первым делом мне нужна была цель. Я решил попробовать воссоздать домашнюю страницу своего личного сайта настолько точно, насколько позволит приложение. Такая цель выглядела разумной, поскольку у моего сайта довольно минималистичный дизайн и очень мало моментов, которые никак не реализуешь с помощью устаревшего инструмента.
Читать дальше →

Проверка игрового движка qdEngine, часть первая: топ 10 предупреждений PVS-Studio

Level of difficultyMedium
Reading time13 min
Views3.2K

Братья Пилоты, qdEngine, PVS-Studio
Баги, которые удалось найти в движке qdEngine, оказались весьма разнообразны, поэтому не хочется мешать всё в кучу в одной публикации. Читатели могут упустить интересные темы, связанные с написанием качественного кода. Поэтому разбор проекта выйдет в виде серии публикаций, первая из которых посвящается наиболее интересным срабатываниям с точки зрения плагина PVS-Studio.

Читать дальше →

Сложнейшая проблема компьютерных наук: центрирование

Level of difficultyMedium
Reading time7 min
Views37K

Заявляю: «Мы, как цивилизация, разучились использовать центрирование». Ну то есть мы, конечно, знаем, как это делать — очень просто:

display: flex;
justify-content: center; /* Горизонтальное центрирование */
align-items: center; /* Вертикальное центрирование */

Не спрашивайте, почему вам нужно запомнить четыре слова вместо просто горизонтальное/вертикальное; всё равно лучше, чем было до этого.

Ещё можно использовать сетку:

display: grid;
justify-items: center; /* Горизонтальное центрирование */
align-items: center; /* Вертикальное центрирование */

Также не спрашивайте, почему выражение justify-content стало justify-items.
Читать дальше →

Месяц назад поставил Linux как основную ОС. Какие проблемы возникли? Рассказываю

Level of difficultyEasy
Reading time3 min
Views83K

Через 1,5 года заканчивается поддержка Windows 10, а 11-я мне не подходит, ибо нельзя вертикально поставить панель задач (см. cнимок экрана, как у меня всё организовано). Поэтому решил попробовать переехать на Linux. Я не использую каких-то хитрых виндовых программ, под “Линуксом” всё оно точно есть: Firefox, Thunderbird, Telegram, Skype, LibreOffice для локальных документов, Гуглодоки для остальных, калькулятор, простенький редактор изображений, OneDrive и Яндекс.Диск; пожалуй, и всё.

Для себя выбрал окружение KDE, как наиболее похожее на “Винду”. Как раз вышло большое обновление - 6.0. Выбрал Fedora в качестве дистрибутива, ибо она внутри одной версии обновляется до более свежего ПО (КДЕ, ядро и пр.), что мне более по душе. Например Kubuntu 23.10 сидит на старой версии КДЕ 5.27.8, хотя давно вышло обновление 5.27.11; и даже только что вышедшая версия “кубунты” 24.04 не получила КДЕ 6.х.

Сначала поставил на старый ноутбук “Федору” 39 с КДЕ 5.27, использовал как кроватный бук для интернетанья. Хотя ноутбук старый и заметно тормозит (даже 1080 видео не тянет), но ради науки я честно страдал. :) Начал изучать как и что устроено, как настроить этот красноглазый “Линукс” и какие могут быть проблемы. На поверку оказалось, что всё настраивается просто и даже без правок в коде и компиляции чего-либо. :)

Как вышла бета “Федоры” 40, сразу обновился, а там уже есть КДЕ 6.0. И на медленном буке КДЕ 6.0 действительно работает пошустрее.

Несколько месяцев попользовался таким образом, понял, что в общем и целом, жить на “Линуксе” можно, хотя и есть неприятные косяки. Решился поставить на отдельный винт на свой настольный компьютер с двумя мониторами и использовать в боевом режиме. И тоже ничего страшного не случилось, вполне можно пользоваться. Если бы не пару косяков описанных ниже, от работы в “Винде” можно и не отличить.

Читать далее

Деплой .NET приложений для самых маленьких. Часть 0

Level of difficultyMedium
Reading time11 min
Views13K

Давным-давно, когда Linux был ещё на ядре 2.6, а PHP5 был глотком свежего воздуха, я впервые заинтересовался миром веб-технологий. Читал учебники, статьи, зависал на форумах, но все равно мало мог понять как код, который я вижу на экране, превращается в волшебные сайты с кнопками, формами и анимациями. Узнал про LAMP и его аналоги для Windows, узнал, что, оказывается, есть хостинги, где такие сайты размещаются. Как только появился внешний интернет без трафика, я поспешил перенести свои локальные поделия во внешний мир, попутно узнав про замечательный протокол FTP. Просто мир волшебных открытий был для меня, особенно когда узнал, что не нужно писать свой форум с нуля, а можно использовать что-то из phpBB, vBulletin и других уже готовых движков.

И когда я много лет спустя переключился в мир .NET, перечисленные ранее умения сыграли со мной злую шутку – я долго не мог понять, как мне найти хостинг для .NET приложений. Почему все известные мне хостинги с лёгкостью предоставляли возможность развернуть PHP приложения, причём даже предлагая какие-то предустановленные версии CMS, но днём с огнём не сыщешь хостинг под .NET. Мое непонимание принципа развертывания приложений усугубляли статьи, которые предлагали их размещать в подходящих сервисах типа Heroku, Digital Ocean или Azure – ведь это так просто и дешево…

Поэтому предлагаю максимально подробно рассмотреть вопрос публикации .NET приложений в арендованном VPS.

Читать далее

Information

Rating
Does not participate
Location
Одесса, Одесская обл., Украина
Date of birth
Registered
Activity