Pull to refresh
40
0

Инженер-программист

Send message

60 антипаттернов для С++ программиста, часть 4 (совет 16 — 20)

Level of difficultyEasy
Reading time17 min
Views4.8K

1053_60_cpp_antipatterns_ru/image2.png


Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.

Читать дальше →
Total votes 15: ↑11 and ↓4+7
Comments32

Пора серьёзно поговорить про боль

Level of difficultyEasy
Reading time13 min
Views18K
Боль — это рекомендательная система нашего организма. Она рекомендует наиболее правильное поведение при травме или любом поражении. С точки зрения эволюции, это базовое свойство, которое было развито, ещё когда наши дальние предки были не очень умными. Поэтому обучение правильному поведению вроде «береги ногу и не наступай на неё пока» должно было быть очень быстрым и доходчивым. Результат: боль оказалась успешнее других систем и мы родились именно с ней. И теперь мы страдаем сильно больше, чем нужно для того, чтобы просто передать информацию о повреждении.

Острая зубная боль на вершине хит-парада по неприятности. Близко к ней почечные колики и кластерная головная боль. Родовые боли, перелом пениса и перекрут яичка болезненнее, но не входят в топ, потому что относятся только к половине населения. Так вот, как это ни странно, одна из экстренных стратегий избавления от похожей сильной боли — так называемая отвлекающая терапия. Вот мастер отвлекающей терапии:


Вот так это работает, не повторяйте это без специалиста

Да-да, если у вас болит зуб, можно сломать себе палец, это перераспределит ресурсы продолговатого мозга. Станет терпимее. Но лучше попробовать капсаицин на слизистые (не обязательно рта) — это в некоторых пределах обратимее.

Но прежде чем перейти к практическим опытам, попробуйте другие методы. Возможно, хватит таблеток, осмотических растворов, куска сала или оливкового масла.
Читать дальше →
Total votes 61: ↑59 and ↓2+57
Comments30

Топ-10 докладов на С++ конференциях 2019-2022 года

Reading time3 min
Views9.3K

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

Читать далее
Total votes 21: ↑19 and ↓2+17
Comments3

Автоматическая расстановка мебели: миф или реальность?

Reading time6 min
Views11K

Всем привет! Мы — команда Smart vision в Домклик, и мы предлагаем нашим клиентам различные инструменты для помощи в подборе жилья, чтобы им было как можно комфортнее. Один из таких инструментов — автоматическая расстановка мебели, чтобы наши пользователи смогли посмотреть на трёхмерную квартиру с обстановкой и лучше понимали размеры помещения. Пока программа доступна в тестовом контуре внутри экосистемы Домклик. Мы не рассматриваем этот алгоритм в качестве инструмента для идеальной расстановки мебели, это лишь помощь клиенту в расстановке мебели для дальнейшей работы с ней.

Есть много статей о решении этой задачи: с применением GAN, который генерирует на плане помещения цветовую область для размещения мебели; с помощью классических методов на основе набора правил; или с помощью более редких графовых методов. Но все существующие методы объединяет объединяет то, что все они или не реализованы (либо находятся в закрытом доступе), или не учитывают, например, окна и двери, а также тип помещения (гостиная, спальня, детская, кухня, санузел и т.д.). Мы постарались избавиться от этих недостатков в своём инструменте.

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

C++ магистрали потоков и древо алгоритма

Reading time22 min
Views9.2K

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

Читать далее
Total votes 22: ↑21 and ↓1+20
Comments13

Квест по замещению закрытых сервисов и блокированного ПО на российские аналоги или доступные альтернативы (ver. 03.13)

Reading time4 min
Views105K


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

В этой публикации будут перечисляться зарубежное ПО и сервисы, которые на фоне текущей ситуации, возможно, придется поменять на российские аналоги или их доступные бесплатные или платные альтернативные решения.
Читать дальше →
Total votes 71: ↑61 and ↓10+51
Comments211

Анатомия асинхронных фреймворков в С++ и других языках

Reading time20 min
Views42K
Привет! В этой статье я расскажу об устройстве асинхронных движков с корутинами и без них. Для начала сосредоточимся не на конкретном движке, а на том, почему во всех популярных языках программирования появились корутины и чем они так хороши. Это может быть интересно не только C++-разработчикам, но и всем, кто занимается разработкой сетевых приложений или интересуется архитектурой современных фреймворков.

Пройдёмся по разным архитектурам построения серверов — от самой простой синхронной к более интересным, посмотрим на типичную архитектуру корутинового движка, а после окунёмся в дебри C++ и взглянем на самое страшное на примере нашего фреймворка userver.

Пишем синхронный сервер


Представьте, что у вашего сервиса очень маленькая нагрузка — 100 rps, и вам дали задачу написать простой сервер, понятный каждому второму школьнику. У вас получится что-то наподобие следующего:

void naive_accept() {
  for (;;) {
    auto new_socket = accept(listener);

    std::thread thrd([socket = std::move(new_socket)] {
      auto data = socket.receive();
      process(data);
      socket.send(data);
    });

    thrd.detach();
  }
}
Читать дальше →
Total votes 69: ↑66 and ↓3+63
Comments32

Нейродайджест: главное из области машинного обучения за декабрь 2021

Reading time4 min
Views4.6K

Генерация 3D-моделей из текстового описания и видеозаписей, сделанных на обыкновенный смартфон, конкурент DALL-E, ускоренная GAN-инверсия и многое другое в подборке материалов за декабрь, а также небольшие новости о будущем дайджеста.

Перейти к обзору
Total votes 12: ↑12 and ↓0+12
Comments7

Физическая и математическая реальности

Reading time17 min
Views19K

Эта статья является второй частью конспекта книги «Наша математическая вселенная. В поисках фундаментальной природы реальности» (автор Макс Тегмарк).

Идея, что Вселенная в некотором смысле является математической, восходит по меньшей мере к пифагорейцам и породила многовековую дискуссию физиков и философов. Галилей утверждал, что Вселенная – это «величественная книга», написанная на языке математики. Лауреат Нобелевской премии по физике Юджин Вигнер в 60-х годах XX века настаивал, что «невероятная эффективность математики в естественных науках» нуждается в объяснении.

Если оглядеться. Где вся эта математика, которой мы собираемся заниматься? Разве математика – это не наука о числах? Вероятно, вам на глаза попадется несколько чисел, например, время на часах, но это лишь символы, изобретенные и изображенные людьми, так что вряд ли они отражают математическую сущность Вселенной в каком-либо глубоком смысле.

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

Хранение видео в Yandex.Cloud

Reading time11 min
Views16K

Если вам нужно добавить на свой сайт видео, то может возникнуть вопрос, где его хостить и как потом раздавать. В этом посте разберем варианты и рассмотрим примеры использования Yandex Object Storage.

Формат MP4 знаком, наверное, всем. Но если мы хотим показывать видео на сайте эффективно, то стоит задуматься: лучшее ли это решение для нашей задачи — просто выложить все видео одним файлом MP4?

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

Тихая революция и новый дикий запад в ComputerVision

Reading time7 min
Views33K

Казалось бы, революция с Computer Vision уже была. В 2012 году выстрелили алгоритмы основанные на сверточных нейронных сетях. Года с 2014 они дошли до продакшна, а года с 2016 заполонили все. Но, в конце 2020 года прошел новый виток. На этот раз не за 4 года, а за один. поговорим о Трансформерах в ComputerVision. В статье будет обзор новинок, которые появились в последний год.

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

Судьбы героев

Reading time11 min
Views23K
В конце есть краткое содержание.

Герои – это такие сотрудники. Вы их наверняка видели. Возможно, и вы – герой.

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

Или по-другому. Неуправляемые. Нарушающие все мыслимые и немыслимые правила. Не укладывающиеся в сроки. Требующие к себе особого отношения. Выскочки. Непонятные, пугающие, выводящие из себя.

Отношение к героям внутри компании – всегда разное, и зависит, в первую очередь, от точки обзора. Объединяет героев одно – трагическая судьба в компании. Примеров долгой и успешной карьеры – единицы, а случаев выдавливания из компании любыми способами – масса.
Читать дальше →
Total votes 91: ↑83 and ↓8+75
Comments34

Монады как паттерн переиспользования кода

Reading time24 min
Views68K


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


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


Но ведь в интернете буквально сотни статей про ФП и монады, зачем писать еще одну?


Дело в том, что все их (по крайней мере те что я читал) можно поделить условно на две категории: с одной стороны это статьи где вам объяснят что монада это моноид в категории эндофункторов, и что если монада T над неким топосом имеет правый сопряжённый, то категория T-алгебр над этой монадой — топос. На другой стороне располагаются статьи, где вам рассказывают, что монады — это коробки, в которых живут собачки, кошечки, и вот они из одних коробок перепрыгивают в другие, размножаются, исчезают… В итоге за горой аналогий понять что-то содержательное решительно невозможно.


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


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

Читать дальше →
Total votes 108: ↑104 and ↓4+100
Comments256

9 советов по повышению производительности Vue

Reading time8 min
Views34K
В этой статье собрано девять советов о том как повысить производительность вашего приложения на Vue, увеличить скорость отображения и уменьшить размер бандла.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments19

Простой сервер на Qt/C++

Reading time3 min
Views125K
В последнее время очень часто приходится слушать определенный порт, получать данные от клиента и отправлять соответствующий ответ. Решил поделиться с новичками, как же создать такой сервер и решить некоторые поставленные вопросы.
В этой статье мы рассмотрим:
— Создание tcp сервера.
— Подключение нескольких клиентов к серверу параллельно.
— Отключение клиентов (отключение сокетов).
— Получение и отправку данных.

Исходники: https://github.com/valualit/QTcpServer01

image

Читать дальше →
Total votes 67: ↑45 and ↓22+23
Comments27

Пишем свой драйвер под Linux

Reading time8 min
Views67K
image

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

То, что мы сегодня создадим, корректнее будет назвать LKM (Linux Kernel Module или загрузочный модуль ядра). Стоит сказать, что драйвер – это одна из разновидностей LKM.

Писать модуль мы будем под ядра линейки 2.6. LKM для 2.6 отличается от 2.4. Я не буду останавливаться на различиях, ибо это не входит в рамки поста.

Мы создадим символьное устройство /dev/test, которое будет обрабатываться нашим модулем. Хочу сразу оговориться, что размещать символьное устройство не обязательно в каталоге /dev, просто это является частью «древнего магического ритуала».

Читать дальше →
Total votes 251: ↑240 and ↓11+229
Comments78

Многозадачность в ядре Linux: прерывания и tasklet’ы

Reading time6 min
Views75K
Котейка и младшие братьяВ предыдущей своей статье я затронула тему многопоточности. В ней речь шла о базовых понятиях: о типах многозадачности, планировщике, стратегиях планирования, машине состояний потока и прочем.

На этот раз я хочу подойти к вопросу планирования с другой стороны. А именно, теперь я постараюсь рассказать про планирование не потоков, а их “младших братьев”. Так как статья получилась довольно объемной, в последний момент я решила разбить ее на несколько частей:
  1. Многозадачность в ядре Linux: прерывания и tasklet’ы
  2. Многозадачность в ядре Linux: workqueue
  3. Protothread и кооперативная многозадачность

В третьей части я также попробую сравнить все эти, на первый взгляд, разные сущности и извлечь какие-нибудь полезные идеи. А через некоторое время я расскажу про то, как нам удалось применить эти идеи на практике в проекте Embox, и про то, как мы запускали на маленькой платке нашу ОС с почти полноценной многозадачностью.

Рассказывать я постараюсь подробно, описывая основное API и иногда углубляясь в особенности реализации, особо заостряя внимание на задаче планирования.
Читать дальше →
Total votes 94: ↑93 and ↓1+92
Comments31

Не лечите меня, доктор

Reading time13 min
Views43K
Когда собирали доклады на голосование для участия в одной специализированной конференции, я хотел рассказать такую тему – как подсидеть директора по качеству. Это был бы конъюнктурный доклад про карьерный рост для программиста или ИТ-директора.

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

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

Я не знаю ни одной другой отрасли знаний, в которой трудилось бы такое же количество людей, ничего не понимающих в своей профессии. Это не шутка, не гипербола. Я наблюдаю за этими ребятами больше 15 лет — еще с тех пор, когда сертификат ISO еще был престижной редкостью. Я работал с директорами по качеству и специалистами, консультантами и аудиторами, преподавателями ВУЗов и президентами ассоциаций, студентами и аспирантами. Сколько из них, по-вашему, знают и понимают, что такое управление качеством и как его осуществлять? А, вы же знаете, я выше написал – ноль. Ладно, пусть будет 1 % — наверняка где-то, случайно, или волею небес, есть люди, которые что-то понимают. Ну и вы, если внимательно и без предубеждения отнесетесь к управлению качеством, тоже будете понимать. Так, может, и до 2% дотянем.
Читать дальше →
Total votes 109: ↑96 and ↓13+83
Comments216

Корпоративное интервью

Reading time13 min
Views29K
— Сергей! Сергей!

Сергей встрепенулся, оторвался от компьютера и снял наушники. Сбоку стояла Лена, менеджер по снабжению, с какими-то бумагами в руках и вопросительно на него смотрела.

— Чего? – спросил Сергей.

— Интервью.

— Чего?

— Мы с вами договаривались об интервью для корпоративного журнала.

— Блин, точно… Прямо сейчас? Я тут поработать хотел, специально вышел в каникулы…

— Прямо сейчас. – твердо сказала Лена. – Я, как вы заметили, тоже специально вышла в каникулы, и только ради интервью.

— А, да, точно… — Сергей начал волноваться. – Ладно, давайте. Надолго это?

— Не знаю. – пожала плечами Лена. – Вопросов много, быстрее начнем – быстрее закончим.
Читать дальше →
Total votes 66: ↑47 and ↓19+28
Comments101
1
23 ...

Information

Rating
Does not participate
Location
Россия
Registered
Activity