Решил задаться целью написать простой в использовании и при этом быстрый многопоточного TCP/IP сервера на C++ и при этом кроссплатформенный — как минимум чтобы работал на платформах Windows и Linux без требования как-либо изменять код за пределами самописной библиотеки. Ранее, на чистом C++ без библиотек вроде Qt, сетевым программировнием не занимался, и предвещал себе долгое время мучений с платформо-зависимостью. Но как оказалось всё гораздо проще чем казалось на первый взгляд, ведь в основном интерфейсы сокетов обоих систем похожи как две капли воды и различаются лишь в мелких деталях.
c++ developer
Потоки, блокировки и условные переменные в C++11 [Часть 2]
В данной статье будут рассмотрены условные переменные…
Асинхронные задачи в С++11
Я программирую на С/C++, и, к сожалению, в рабочих проектах не могу использовать стандарт C++11. Но вот пришли майские праздники, появилось свободное время и я решил поэкспериментировать и по-изучать этот запретный плод. Самое лучшее для изучения чего либо — это практика. Чтение статей о языке программирования научит максимум лучше читать, поэтому я решил написать маленькую библиотеку для асинхронного выполнения функций.
Сразу оговорюсь, что я знаю, что существует std::future, std::async и тп. Мне было интересно реализовать самому нечто подобное и окунуться в мир лямбда-функций, потоков и мьютексов с головой. Праздники — отличное время для велопрогулок.
Кто такой Thread Pool и как его написать своими руками на С++
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/873/ad2/37c/873ad237c0308fcc287b15b70d035fed.jpeg)
Thread Pool достаточно популярный паттерн в программировании, с которым рано или поздно сталкивается каждый первый программист. Если вы новичок и не хотите бездумно пользоваться пулом потоков, то эта статья поможет вам разобраться с его устройством и написать наивные реализации с использованием С++ 14 и С++ 17. Так же статья будет полезна всем, кто изучил теорию по многопоточности, но не знает как можно применить свои знания.
Многопоточность и Thread Pool в C++
Привет, Хабр! Я неожиданно созрел для написания первой статьи тут. За время работы в сфере IT у меня появилась своя собственная библиотека на языке C++, которая медленно, но верно обрастает различными полезными модулями. Не все включаемые в нее модули написаны мною с нуля, но я всегда стараюсь так или иначе адаптировать их под свои нужды. Сегодня у меня появилось непреодолимое желание поделиться с вами некоторыми фрагментами моей библиотеки.
Февка — некрупная высокотемпературная горелка почти из ничего. Применение в стеклодувном деле
![](https://habrastorage.org/webt/uf/_b/1a/uf_b1agvatbwpqthfg6h9iuufhg.jpeg)
Существует целый ряд технических забав, доступ к которым любителям затруднён из-за требующегося изрядного оснащения. Взять то же стеклодувное дело — натурально, огненная мистерия с вашим (нашим) непосредственным участием, да и стеклянные работы как сон наяву. Однако нужна вся эта прорва пугающего специфического оборудования, и в первую очередь — горелки-шланги-баллоны. Без которых, разумеется, не обойтись при более или менее крупных работах и применении тугоплавкого стекла. Для обработки же небольших заготовок из стёкол относительно легкоплавких, например, «платинового», можно с успехом применить простейшую самодельную горелку-февку, оснастив её отражателем пламени. А используя ещё и широкий мягкий подогревный огонь, можно попробовать заготовки покрупнее.
Есть ли польза от решения алгоритмических задач на LeetCode?
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/50e/9a3/805/50e9a3805425fd56bf3f16c7c6c3b139.jpg)
Пожалуй каждый программист, который сталкивался с вопросом: "А как устроиться на работу в FAANG?" - получал ответ, что ему нужно разобраться с алгоритмами, со структурами данных и прорешать порядка 300-400 задач на leetcode по алгоритмам.
Однако вслед за этим советом тут же появляются люди, которые говорят, что это никоим образом не делает тебя лучше, как программиста. Да и вообще - просто пустая трата времени.
Поэтому, в этой статье я постараюсь дать ответ, насколько это может быть полезным для работы и развития, и как может сказаться на карьере.
Как правильно задавать вопросы, если ты начинающий айтишник
Последние пару лет очень много занимаюсь с людьми, которые только начинают свою карьеру в ИТ. Поскольку и сами вопросы, и манера их задавать у многих людей похожи, я решил собрать свой опыт и рекомендации в одном месте.
Давным-давно я прочитал статью 2004-го года авторства Эрика Рэймонда, и всегда в карьере неукоснительно ей следовал. Она довольно большая, и заточена скорее под системных администраторов. Мне же приходится помогать людям, зачастую вообще не имеющим опыта в разработке, стать джуниорами и начать свою карьеру.
Тем, кто уже стал, или еще только мечтает стать начинающим разработчиком, я могу дать следующие рекомендации:
- Изучайте проблему самостоятельно
- Сначала сообщайте цель, потом озвучивайте проблему
- Пишите грамотно и по существу
- Задавайте вопросы по адресу и делитесь решением
- Уважайте чужое время
- Смотрите шире
А теперь подробнее.
Загрузить и сохранить: алгоритм быстрого и эффективного чтения
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/5bb/4ea/762/5bb4ea76240e74352717ecb24e2d9e21.png)
Моя методика сохранения времени, внимания и социального статуса при помощи парочки хитрых манипуляций с текстом и мозгом.
Лень как признак гениальности. 4 вида лени и нужно ли с ней бороться
![image](https://habrastorage.org/files/e14/bf9/87e/e14bf987e884447d9756b1df7a42f65f.jpg)
Бывало с вами такое, что нужно что-то сделать, но не хочется. Лень.
Лень иногда настолько сильна, что человек сдаётся и подчиняется ей. Лень всевластна и вездесуща, говорят она родилась задолго до нас.
Лень часто называют самым большим пороком человека, но так ли она плоха на самом деле? Давайте разберёмся.
Итак, что же такое лень.
По определю В.И. Даля это
«отвращение от труда, от дела, занятий; наклонность к праздности и тунеядству».
На самом деле лень это такое явление можно рассматривать значительно шире.
Рассмотрим несколько основных вариантов проявления лени:
Разработана опенсорсная утилита Depix для восстановления паролей с размытых скриншотов
![](https://habrastorage.org/webt/cx/eq/am/cxeqampotosrb9ch3iiipmvweow.png)
Результат работы программы Depix (исходный код)
В голливудских фильмах любят преувеличивать. Они зуммируют фотографии в миллион раз — и выводят цифры из одного пикселя.
Хотя это невероятно, но научные исследования в этой области идут давно. Ещё в 90-е годы были опубликованы теоретические работы и PoC с восстановлением текста из размытых изображений. В 2012 году Владимир Южиков писал на Хабре о своей программе SmartDeblur для восстановления смазанных и расфокусированных снимков.
Несмотря на достаточно хорошее развитие науки в данном направлении, до сих пор не было специализированного инструмента конкретно для восстановления паролей (текста) после пикселизации. Программа Depix — первый такой инструмент.
Как отучить соседского кота гадить на газон: используем машинное зрение и глубокое обучение
Инженер Nvidia считает, что поступать так с соседскими животными — как-то не по-соседски. К тому же он хотел попробовать нейросети на практике. Поэтому он использовал более продвинутый метод: он взял плату Nvidia Jetson TX1, IP-камеру Foscam, плату для разработки Particle Photon, подсоединённую к реле, и домашнюю систему полива газона. Коты мокрые — но живые и здоровые.
![image](https://habrastorage.org/getpro/geektimes/post_images/7a0/a0f/254/7a0a0f254f94ba50730a5d8d77dbc106.jpg)
Сверхспособность в обучении. Как получить?
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/a69/f66/a75/a69f66a750a0cc3df4b6a780b0698af6.jpg)
Эффективность в обучении в современном кинематографе часто подается как суперспособность. Спецагенты запоминают кучу нужной инфы. Всякие люди икс анализируют инфу с невозможной для обычного человека скоростью… Думаю, список вы можете продолжить сами.
Это отвлекает внимание от реальных способов совершить скачок в качестве работы с информацией. И, вместо увеличения эффективности правильных действий, я предлагаю посмотреть в сторону колоссального объема неправильных действий. Устранить этот объем. Что и даст мегаскачок эффективности.
Нам понадобятся 2 вещи:
Гоним кота: как заставить котов не справлять нужду на лужайке у дома?
![](https://habrastorage.org/webt/ee/li/u5/eeliu5qcoz1urdayl5mvncwbjzo.jpeg)
Проблему нужно было решать. Как же решил её Роберт? Он докупил немного железа к своему компьютеру, подключил к нему камеру наружного наблюдения, смотрящую за лужайкой, и дальше проделал несколько необычную вещь, он загрузил доступный бесплатный Open Source софт — нейросеть, и начинал обучать её распознавать котов на изображении с камеры. И задача в начале кажется тривиальной, ведь если чему-то учить и легко — это котам, потому что котами завален Интернет, их там десятки миллионов. Если было всё так просто, но дела обстоят хуже, в реальной жизни коты ходят гадить в основном ночью. Картинок ночных котов, писающих на лужайке, в Интернете практически нет. И некоторые из котов умудряются даже пить из системы полива во время работы, но всё же потом сваливают.
![](https://habrastorage.org/webt/0i/uw/_p/0iuw_pgxfmlmkw_w-ztq2t_hbls.jpeg)
Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу
Существует два распространенных типа подключения DPI: пассивный и активный.
Пассивный DPI
Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.Потоки, блокировки и условные переменные в C++11 [Часть 1]
Окна на чистом WinAPI. Или просто о сложном
Казалось бы, что WinAPI уходит в прошлое. Давно уже существует огромное количество кросс-платформенных фреймфорков, Windows не только на десктопах, да и сами Microsoft в свой магазин не жалуют приложения, которые используют этого монстра. Помимо этого статей о том, как создать окошки на WinAPI, не только здесь, но и по всему интернету, исчисляется тысячами по уровню от дошколят и выше. Весь этот процесс разобран уже даже не по атомам, а по субатомным частицам. Что может быть проще и понятнее? А тут я еще…
Но не все так просто, как кажется.
learnopengl. Урок 1.1 — OpenGL
![](https://habrastorage.org/web/c9e/9b2/a3b/c9e9b2a3baf749ab8e2b385c6d93d966.png)
Также я встал на распутье: либо я опишу все основы вроде создания окна и контекста в одной статье, чтобы не плодить статьи, но в таком случае такую огромную статью не всякий осилит; либо я также как и раньше буду переводить, опираясь на иерархию оригинала. Я решил выбрать второй вариант.
На счет уроков по Vulkan: к сожалению мне тяжело сейчас написать уроки по данному API по причине скудной видеокарты на данный момент, которая просто не поддерживает Vulkan API, поэтому уроки по данному API будут только после обновления видеокарты.
Создание софтверного движка 2.5D
Information
- Rating
- Does not participate
- Location
- Новосибирск, Новосибирская обл., Россия
- Registered
- Activity