Ответы пользователя по тегу C++
  • Как закрыть TCP-порта (сканер портов) / Qt ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    shutdown + close?

    Что бы закрыть какой-то порт, который использует не ваше приложение, нужно определить PID процесса, использующий этот порт, кильнуть его иии все... Далее все зависит от настроек соединения, которое использовал тот процесс (SO_REUSEADDR был установлен или нет) и операционной системы. В худшем случае даже после убийства процесса порт все еще будет висеть в режиме time-await какое-то время (связано с тем что в момент убийства у нас могут быть не пустыми буферы отправки/приема данных, и т.д.)
    Ответ написан
    3 комментария
  • (C++) Клиент-Серверное взаимодействие. Многопоточность. Когда? Как?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1. Отрисовку точно стоит вынести в отдельный от чтения данных поток

    2. По поводу бесконечного цикла - именно так. При вызове recvfrom у вас будет блокирован ваш поток пока не придут данные, так что ничего страшного от использования бесконечного цикла у вас не будет. Именно по этому и нужно выносить это все дело в отдельный процесс/поток.

    3. Кросплатформенная разработка в вижле? Увы нет, во всяком случае насколько я знаю. Почитайте про cmake и просто make (cmake плохо дружит с вижлой, иногда бывают проблемы и после генерации проекта приходится тратить время еще на настройку, так что чаще проще уж один раз настроить и таскать с собой настройки проекта).
    Вообще тут проще побродить по опенсорсным проектам кросплатформенным и посмотреть как там все это дело реализованно.

    3.5. ну тут все просто. в linux POSIX, в windows - WinApi (или WinRT если вам хватит поддержки win8+). То есть скажем... код сервера работающий с сокетами у вас под эти две платформы будет различаться на 90% так как все завязано на системное api. То есть вам нужно сделать какую-то прослойку инкапсулирующую сетевую часть, и уже ее реализацию подменять при сборке под конкретную платформу. Либо взять готовое решение для этой прослойки. А вот при реализации бизнес-логики различия между платформами зависят только от самой логики.
    Ответ написан
  • Как организовать процесс разработки продукта на C++, используя GIT?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    то что вы описывается называется feature-branch.
    ваши фича-брэнчи должны всегда быть синхронизированны с мастером. У всех разработчиков должна быть актуальная версия кода, с которым они работают. В этом смысле подход с feature-branch, особенно когда речь идет о больших изменениях, может сильно рассинхронизировать код между разработчиками.

    Мне больше нравится подход с Feature Toggle, так как он более соответствует философии git.
    Ответ написан
    Комментировать
  • Как устанавливать виртуальные машины?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    >> Какую ОС выбрать для разработки на C++
    любую, какая у вас целевая платформа?

    Вам сойдет и virualbox.
    Ответ написан
    Комментировать
  • Какого формата файлы нужно создать, чтобы написать код на С++?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вообще никаких ограничений по форматам данных, с которыми вы работаете нету. От расширения файла внутренняя структура файла не изменится. Проще всего для подобного использовать csv.
    Ответ написан
    Комментировать
  • Где найти реализацию эффекта Gaussian Blur на С++ для Cocos2d-x?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    лучше использовать шейдер думаю, и эффект там зависит от ядра свертки.
    Ответ написан
  • Как провести конвертацию изображения в текстовый формат?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Все довольно просто. Берем картинку, перегоняем ее в grayscale, разбиваем ее на сетку (скажем 10*10 пикселей), вычисляем среднее значение яркости для этого куска и определяем, если яркость выше порогового значения (например 128) то это пробел, если же ниже или равно, то наш символ.
    Ответ написан
    2 комментария
  • Что такое предопределенные аргументы в подпрограммах в c++?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Имеется в виду необязательные аргументы или аргументы имеющие значение по умолчанию:
    void Foo::bar(bool enable = true)
    {
        // реализация метода
    }


    подробнее
    Ответ написан
    1 комментарий
  • Десктоп разработка, С++ и перспективы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Что значит "перспективы c++"... для системного программирования он живее всех живых, и по сути в этом ключе альтернатив мало. В купе с qt можно ваять очень приятные прикладные приложения, хотя можно и под gtk и под чем хотите...

    Что за мода на подобные вопросы... неужто сложно хоть как-то поресерчить самому...
    Ответ написан
    Комментировать
  • Как вы искали свою первую работу в сфере IT?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    где взять практику? пишите лабы, придумывайте себе интересные темы для курсовых... Делайте собственные проектики...

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

    А работа - пишите резюме, отправляете в пару мест, проходите собеседование... Причем если вы просто выложите резюме и будете ждать у моря погоды, то это будет не эффективно.
    Ответ написан
    Комментировать
  • Как правильно использовать исключения?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну приведу простой пример. У вас есть функция которая должна открывать соединение с базой данных/читать из файла/подключаться к сокету... словом любая функция возвращающая некий ресурс, при помощи которого в дальнейшем будет осуществляться доступ к чему-то там.

    Функция должна вернуть какой-то результат, причем определенного типа. Что вы будете делать в случае ошибки? А как уведомить разработчика что именно пошло не так?

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

    Если вы используете конструкцию try/catch в использующем эту функцию коде, то вместо крэша у вас вызовется один из обработчиков catch (вы можете спускаться по иерархии классов, задавая различное поведение для разного рода ошибок), возможно произведете какие-то уточнения в данных, переспросите пользователя и программа продолжит работу совершенно нормально.
    Ответ написан
    2 комментария
  • Рабочие процессы в асинхронных серверах

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    если на низком уровне то все просто. Главный процесс слушает сокет и делает accept. Затем есть 2 варианта: мультиплексировать запросы (из массива выбирать сокеты готовые для чтения через select/epoll и делать recv или accept в зависимости от того что за сокет готов предоставить данные) либо запихнуть обработку сокета в отедельный поток/процесс. Процессы надежнее ибо если он упадет то серверу от этого ничего не сделается.

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

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

    вообще погуглите про проблему 10k, можно нагуглить кучу алгоритмов обработки запросов.

    А что касается lighttpd то в документации описаны случаи когда нужно использовать многопроцессорность, и приведены возможные проблемы с модулями. Именно советов "не использовать" там нету.
    Ответ написан
    Комментировать
  • Битовая операция в C++ (n < max_n, тогда n; n == max_n, тогда 0;)

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    один вопрос... зачем? это решается тернальным оператором, и никаких извращений... или же функции вроде max/min.
    Ответ написан
    Комментировать
  • Фреймворк для базы данных изображений

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Я бы остановился и в самом деле на C++/Qt.
    Ответ написан
    2 комментария
  • Удобная библиотека с интерфейсом, похожим на console.* из браузерных API

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Не проще ли записывать логи в YML скажем (реализовать в таком случае перечисленные методы труда не составит, а приличные текстовые редакторы умеют сворачивать ветки).

    Готового решения не припомню.
    Ответ написан
    Комментировать
  • Как устроены гитарные тюнеры?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Захватить аудио с микрофона или lineIn особо проблемы не составляет, а дальше… цифровой звук представляет собой последовательность сэмплов, количество этих сэмплов определяется частотой дискретизации. Каждый сэмпл представляет собой число, описывающее амплитуду в данный момент времени. Частоту звука можно определить по расстоянию между двумя одинаковыми пиками. Ну тобиш как на обычном графике.
    Ответ написан
    1 комментарий