Pull to refresh
-1
0
Евгений Павин @Architekt

c++ developer

Send message

Кроссплатформенный многопоточный TCP/IP сервер на C++

Reading time16 min
Views90K

Решил задаться целью написать простой в использовании и при этом быстрый многопоточного TCP/IP сервера на C++ и при этом кроссплатформенный — как минимум чтобы работал на платформах Windows и Linux без требования как-либо изменять код за пределами самописной библиотеки. Ранее, на чистом C++ без библиотек вроде Qt, сетевым программировнием не занимался, и предвещал себе долгое время мучений с платформо-зависимостью. Но как оказалось всё гораздо проще чем казалось на первый взгляд, ведь в основном интерфейсы сокетов обоих систем похожи как две капли воды и различаются лишь в мелких деталях.

Читать дальше →
Total votes 23: ↑10 and ↓13+5
Comments40

Потоки, блокировки и условные переменные в C++11 [Часть 2]

Reading time7 min
Views164K
Для более полного понимания этой статьи, рекомендуется прочитать ее первую часть, где основное внимание было уделено потокам и блокировкам, в ней объяснено много моментов (терминов, функций и т.д.), которые без пояснения будут использованы здесь.
В данной статье будут рассмотрены условные переменные…
Читать дальше →
Total votes 54: ↑54 and ↓0+54
Comments8

Асинхронные задачи в С++11

Reading time5 min
Views34K
Доброго времени суток, хотел бы поделиться с сообществом своей небольшой библиотектой.
Я программирую на С/C++, и, к сожалению, в рабочих проектах не могу использовать стандарт C++11. Но вот пришли майские праздники, появилось свободное время и я решил поэкспериментировать и по-изучать этот запретный плод. Самое лучшее для изучения чего либо — это практика. Чтение статей о языке программирования научит максимум лучше читать, поэтому я решил написать маленькую библиотеку для асинхронного выполнения функций.
Сразу оговорюсь, что я знаю, что существует std::future, std::async и тп. Мне было интересно реализовать самому нечто подобное и окунуться в мир лямбда-функций, потоков и мьютексов с головой. Праздники — отличное время для велопрогулок.
Читать дальше →
Total votes 38: ↑35 and ↓3+32
Comments21

Кто такой Thread Pool и как его написать своими руками на С++

Level of difficultyEasy
Reading time12 min
Views39K

Thread Pool достаточно популярный паттерн в программировании, с которым рано или поздно сталкивается каждый первый программист. Если вы новичок и не хотите бездумно пользоваться пулом потоков, то эта статья поможет вам разобраться с его устройством и написать наивные реализации с использованием С++ 14 и С++ 17. Так же статья будет полезна всем, кто изучил теорию по многопоточности, но не знает как можно применить свои знания.

Читать далее
Total votes 7: ↑3 and ↓40
Comments9

Многопоточность и Thread Pool в C++

Level of difficultyEasy
Reading time18 min
Views35K

Привет, Хабр! Я неожиданно созрел для написания первой статьи тут. За время работы в сфере IT у меня появилась своя собственная библиотека на языке C++, которая медленно, но верно обрастает различными полезными модулями. Не все включаемые в нее модули написаны мною с нуля, но я всегда стараюсь так или иначе адаптировать их под свои нужды. Сегодня у меня появилось непреодолимое желание поделиться с вами некоторыми фрагментами моей библиотеки.

Читать далее
Total votes 7: ↑5 and ↓2+6
Comments12

Февка — некрупная высокотемпературная горелка почти из ничего. Применение в стеклодувном деле

Level of difficultyEasy
Reading time7 min
Views15K
Февка в стеклодувном деле

Существует целый ряд технических забав, доступ к которым любителям затруднён из-за требующегося изрядного оснащения. Взять то же стеклодувное дело — натурально, огненная мистерия с вашим (нашим) непосредственным участием, да и стеклянные работы как сон наяву. Однако нужна вся эта прорва пугающего специфического оборудования, и в первую очередь — горелки-шланги-баллоны. Без которых, разумеется, не обойтись при более или менее крупных работах и применении тугоплавкого стекла. Для обработки же небольших заготовок из стёкол относительно легкоплавких, например, «платинового», можно с успехом применить простейшую самодельную горелку-февку, оснастив её отражателем пламени. А используя ещё и широкий мягкий подогревный огонь, можно попробовать заготовки покрупнее.
Полюбопытствовать
Total votes 94: ↑93 and ↓1+131
Comments64

Есть ли польза от решения алгоритмических задач на LeetCode?

Reading time8 min
Views86K

Пожалуй каждый программист, который сталкивался с вопросом: "А как устроиться на работу в FAANG?" - получал ответ, что ему нужно разобраться с алгоритмами, со структурами данных и прорешать порядка 300-400 задач на leetcode по алгоритмам.

Однако вслед за этим советом тут же появляются люди, которые говорят, что это никоим образом не делает тебя лучше, как программиста. Да и вообще - просто пустая трата времени.

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

Читать далее
Total votes 51: ↑43 and ↓8+50
Comments182

Как правильно задавать вопросы, если ты начинающий айтишник

Reading time5 min
Views49K
Привет!

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

Давным-давно я прочитал статью 2004-го года авторства Эрика Рэймонда, и всегда в карьере неукоснительно ей следовал. Она довольно большая, и заточена скорее под системных администраторов. Мне же приходится помогать людям, зачастую вообще не имеющим опыта в разработке, стать джуниорами и начать свою карьеру.

Тем, кто уже стал, или еще только мечтает стать начинающим разработчиком, я могу дать следующие рекомендации:

  • Изучайте проблему самостоятельно
  • Сначала сообщайте цель, потом озвучивайте проблему
  • Пишите грамотно и по существу
  • Задавайте вопросы по адресу и делитесь решением
  • Уважайте чужое время
  • Смотрите шире

А теперь подробнее.
Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments32

Лень как признак гениальности. 4 вида лени и нужно ли с ней бороться

Reading time10 min
Views118K
image

Бывало с вами такое, что нужно что-то сделать, но не хочется. Лень.

Лень иногда настолько сильна, что человек сдаётся и подчиняется ей. Лень всевластна и вездесуща, говорят она родилась задолго до нас.
Лень часто называют самым большим пороком человека, но так ли она плоха на самом деле? Давайте разберёмся.
Итак, что же такое лень.
По определю В.И. Даля это
«отвращение от труда, от дела, занятий; наклонность к праздности и тунеядству».

На самом деле лень это такое явление можно рассматривать значительно шире.
Рассмотрим несколько основных вариантов проявления лени:
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments25

Разработана опенсорсная утилита Depix для восстановления паролей с размытых скриншотов

Reading time6 min
Views18K
Разработана опенсорсная утилита Depix для восстановления паролей с размытых скриншотов


Результат работы программы Depix (исходный код)

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

Хотя это невероятно, но научные исследования в этой области идут давно. Ещё в 90-е годы были опубликованы теоретические работы и PoC с восстановлением текста из размытых изображений. В 2012 году Владимир Южиков писал на Хабре о своей программе SmartDeblur для восстановления смазанных и расфокусированных снимков.

Несмотря на достаточно хорошее развитие науки в данном направлении, до сих пор не было специализированного инструмента конкретно для восстановления паролей (текста) после пикселизации. Программа Depix — первый такой инструмент.
Читать дальше →
Total votes 47: ↑45 and ↓2+63
Comments34

Как отучить соседского кота гадить на газон: используем машинное зрение и глубокое обучение

Reading time3 min
Views65K
Чтобы отвадить кота от привычки оставлять «подарки» на газоне, можно использовать разные способы: силки для мелких животных, самодельные ловушки из ящиков с кирпичом на крышке и приманкой внутри, народные методы вроде обмазанных чесноком корок цитрусовых. Наконец, можно сидеть весь день с тапком в руке.

Инженер Nvidia считает, что поступать так с соседскими животными — как-то не по-соседски. К тому же он хотел попробовать нейросети на практике. Поэтому он использовал более продвинутый метод: он взял плату Nvidia Jetson TX1, IP-камеру Foscam, плату для разработки Particle Photon, подсоединённую к реле, и домашнюю систему полива газона. Коты мокрые — но живые и здоровые.

image
Читать дальше →
Total votes 39: ↑37 and ↓2+35
Comments119

Сверхспособность в обучении. Как получить?

Reading time4 min
Views19K

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

Это отвлекает внимание от реальных способов совершить скачок в качестве работы с информацией. И, вместо увеличения эффективности правильных действий, я предлагаю посмотреть в сторону колоссального объема неправильных действий. Устранить этот объем. Что и даст мегаскачок эффективности.

Нам понадобятся 2 вещи:

Читать далее
Total votes 15: ↑13 and ↓2+15
Comments22

Гоним кота: как заставить котов не справлять нужду на лужайке у дома?

Reading time13 min
Views31K
Жил был Роберт Бонд — 65-летний программист из Калифорнии. И была у него жена-садовница, которая очень любила свою чистенькую лужайку. Но это Калифорния, там нет двухметровых заборов с системой защиты от котов. На лужайку ходят соседские коты и гадят!



Проблему нужно было решать. Как же решил её Роберт? Он докупил немного железа к своему компьютеру, подключил к нему камеру наружного наблюдения, смотрящую за лужайкой, и дальше проделал несколько необычную вещь, он загрузил доступный бесплатный Open Source софт — нейросеть, и начинал обучать её распознавать котов на изображении с камеры. И задача в начале кажется тривиальной, ведь если чему-то учить и легко — это котам, потому что котами завален Интернет, их там десятки миллионов. Если было всё так просто, но дела обстоят хуже, в реальной жизни коты ходят гадить в основном ночью. Картинок ночных котов, писающих на лужайке, в Интернете практически нет. И некоторые из котов умудряются даже пить из системы полива во время работы, но всё же потом сваливают.

Читать дальше →
Total votes 56: ↑41 and ↓15+26
Comments59

Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

Reading time7 min
Views724K
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
Читать дальше →
Total votes 212: ↑212 and ↓0+212
Comments352

Потоки, блокировки и условные переменные в C++11 [Часть 1]

Reading time8 min
Views442K
В первой части этой статьи основное внимание будет уделено потокам и блокировкам в С++11, условные переменные во всей своей красе будут подробно рассмотрены во второй части
Читать дальше →
Total votes 67: ↑67 and ↓0+67
Comments14

Окна на чистом WinAPI. Или просто о сложном

Reading time12 min
Views142K
Disclaimer

Казалось бы, что WinAPI уходит в прошлое. Давно уже существует огромное количество кросс-платформенных фреймфорков, Windows не только на десктопах, да и сами Microsoft в свой магазин не жалуют приложения, которые используют этого монстра. Помимо этого статей о том, как создать окошки на WinAPI, не только здесь, но и по всему интернету, исчисляется тысячами по уровню от дошколят и выше. Весь этот процесс разобран уже даже не по атомам, а по субатомным частицам. Что может быть проще и понятнее? А тут я еще…

Но не все так просто, как кажется.
Читать дальше →
Total votes 68: ↑67 and ↓1+66
Comments94

learnopengl. Урок 1.1 — OpenGL

Reading time7 min
Views332K
Здравствуйте. Несколько недель назад я начинал серию переводов статей по изучению OpenGL. Но на 4 статье один хабровчанин заметил, что мои переводы могут нарушать лицензию, по которой распространяются учебные материалы, предоставленные в исходной статье. И действительно, мои переводы нарушали лицензию. Для разрешения этой проблемы я обратился к авторам того набора уроков, но так и не смог добиться нормального ответа. По этой причине я связался с автором другого, не менее (а возможно даже и более) крутого, набора уроков по OpenGL: Joey de Vries. И он дал полное разрешение на перевод его набора уроков. Его уроки гораздо более обширные, чем прошлый набор, поэтому эти переводы растянутся на долго. И я обещаю, будет интересно. Заинтересовавшихся прошу под кат.

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

На счет уроков по Vulkan: к сожалению мне тяжело сейчас написать уроки по данному API по причине скудной видеокарты на данный момент, которая просто не поддерживает Vulkan API, поэтому уроки по данному API будут только после обновления видеокарты.
Читать дальше →
Total votes 45: ↑42 and ↓3+39
Comments9

Создание софтверного движка 2.5D

Reading time11 min
Views24K
В настоящее время интерес к софтверным движкам, как из игр Quake, DOOM или Duke Nukem 3D практически нулевой. Однако, эти движки имели своё очарование и мне, например, очень нравится графика именно таких вот движков с нереалистичными текстурами на стенах. Конечно, такие текстуры можно накладывать без фильтрации и в OpenGL, получая такой же уровень графики, но всё же, написать собственный софтверный движок было весьма интересно. Движок уровня Quake я написать в своё время не смог, так как не удалось создать редактор 3D карты – я просто не представлял, как вообще рисовать в 3D карту. Да и с большой вероятность текстурирование в произвольном случае в моём исполнении (без ассемблера) было бы очень медленно. Но движок уровня DOOM мне покорился. Основу такого движка я написал в 2002 году, пользуясь книжкой Шикина и Борескова “Компьютерная графика. Полигональные модели”. На базе того движка используя графику из Doom я написал некое подобие игры под MS-DOS на Watcom C. Несколько лет назад я решил вынуть из той игры код движка и переработать его под мои текущие знания языка Си++ и представления о том, как стоило бы устроить этот движок. Ну и заодно перенести этот движок под Windows и дополнить наклонами головы, как в Blood или Duke Nukem. О том, что в результате получилось, я и написал в этой статье.
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments48

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Registered
Activity