Ответы пользователя по тегу C++
  • Какой ноутбук для програмирования лучше?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    ноутбучные процы тормозные, амд не берите, ноуты - это поле интела

    У меня asus n550jk - матовый ips 15'' фуллхд дисплей, коре i7 4710hq, 8 gb рам, поставил ssd, кодить одно удовольствие! Но только при работе от сети. При работе от аккумулятора тактовая частота понижается и ноут уже не так быстро соображает
    Ответ написан
  • Как создать UI?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Во всех перечисленных библиотеках можно сделать то, что вы хотите.
    Ответ написан
    Комментировать
  • Почему CLANG/GCC не компилируют код код который компилируется MSVC++?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Вы всё врёти.

    ideone.com/TbYMyy - gcc
    ideone.com/GkOxM8 - clang
    Ответ написан
    Комментировать
  • Как создать REST API на C++?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    https://github.com/civetweb/civetweb
    недостаток - сколько тредов столько и соединений
    Ответ написан
    Комментировать
  • Какие интересные блоги и другие ресурсы по C++ вы читаете?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Ответ написан
    Комментировать
  • Какие задачи на C / C++ сейчас востребованы?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Задачи, связанные с компьютерным зрением, opencv
    Параллельные вычисления
    Вычисления на GPU
    Драйвера
    Кросс-платформенное ПО для компьютеров и мобильных устройств
    Программирование микроконтроллеров
    Ответ написан
    Комментировать
  • Для чего нужен данные предикаты?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Для поиска собак по кличке или породе?

    Предикаты- подмножество функторов, в которых тип возвращаемого значения operator() bool. Предикаты используются в алгоритмах сортировок, поиска, а также во всех остальных, имеющих на конце _if. Смысл в том, что объект-функция в случае использования предиката возвращает истину или ложь в зависимости от выполнения необходимого условия. Это либо удовлетворение объектом неких свойств, либо результат сравнения двух объектов по определенному признаку.
    Ответ написан
    Комментировать
  • Как воспроизвести видео C++ под Win32?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Комментировать
  • Как узнать, что панель задач Windows переместилась или поменяла свой размер?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    WM_SETTINGCHANGE
    SPI_SETWORKAREA
    Ответ написан
    Комментировать
  • Как загрузить фото на сервер VK (c++, curl)?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Так выглядит запрос (правда у меня загрузка не на стену а в альбом, но суть та же)
    POST http://cs62xxxx.vk.com/upload.php?act=do_add&mid=6xxxxxxx&aid=213651645&gid=0&hash=1b88ccc2a73467387614fdc740241ec3&rhash=af7e667ec013e00d6b7a42234018xxxx&swfupload=1&api=1 HTTP/1.1
    Host: cs62xxxx.vk.com
    User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0
    Accept: */*
    Accept-Encoding: deflate, gzip
    Connection: Keep-Alive
    Cookie: remixlang=0
    Content-Length: 12573
    Content-Type: multipart/form-data; boundary=------------------------23512563ad262e45
    
    --------------------------23512563ad262e45
    Content-Disposition: form-data; name="file1"; filename="screenshot 2015-03-09 001_en.png"
    Content-Type: image/png
     PNG....содержимое файла
    --------------------------23512563ad262e45--


    это делается грубо говоря так:
    struct curl_httppost *formpost=NULL;
    struct curl_httppost *lastptr=NULL;
    
    curl_formadd(&formpost,
                                &lastptr,
                                CURLFORM_COPYNAME, "file1",
                                CURLFORM_FILENAME, "screenshot 2015-03-09 001_en.png",
                                CURLFORM_FILE, "D:\\screenshot 2015-03-09 001_en.png",
                                CURLFORM_CONTENTTYPE, "image/png",
                                CURLFORM_END);
     curl_easy_setopt(curl_handle, CURLOPT_URL, upload_url);
     curl_easy_setopt(curl_handle, CURLOPT_HTTPPOST, formpost);
     curl_result = curl_easy_perform(curl_handle);


    В ответ получаете json с данными, которые надо будет передать для сохранения фото.

    Взял отсюда https://github.com/zenden2k/image-uploader/blob/ma...
    это не C++, но нижележащие вызовы curl (https://github.com/zenden2k/image-uploader/blob/1....)

    Если хотите можете заюзать мою обертку в своем проекте, чтобы не мучаться с сишным апи
    https://github.com/zenden2k/curl-cpp-wrapper
    Ответ написан
    5 комментариев
  • Можно ли в C++ организовывать такой массив (Как в JS)?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Если брать общий случай то

    boost::any
    boost::variant
    QVariant
    Ответ написан
    Комментировать
  • Как отловить момент, когда окно помещается в одну из сторон экрана (прилипает как бы), при нажатии WIN + LEFT?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    >Интересует, как узнать об этом.
    К сожалению, Windows не посылает специального сообщения при этом. Можно обрабатывать сообщение WM_SIZE и при этом ранее не было получено сообщение WM_SYSCOMMAND.

    >Ну или как программно прилепить

    Костыльный способ:
    RECT rc, originalRect;
    SystemParametersInfo(SPI_GETWORKAREA, 0, &rc, 0);
    GetWindowRect(hwnd, &originalRect);
    SetWindowPos(hwnd, 0, rc.left, rc.top, (rc.right - rc.left) / 2, originalRect.bottom - originalRect.top, 0);
    PostMessage(hwnd, WM_NCLBUTTONDBLCLK, HTTOP, 0);

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

    zenden2k
    @zenden2k
    PHP & C++ programmer
    ой да кроме синуса и косинуса и перемножения матриц там ничё не нужно. так что ничё сложного не бойся
    Ответ написан
    Комментировать
  • Что нужно знать для свободного владения C++ или C#?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    1. C++, стандарт, Страустрап/D&E/Джосаттис/Вандервуд, Дьюхэрст/Мейерс/Саттер, RAII, правило трех, exception-

    safety, Александреску/Абрахамс-Гуртовой, type erasure, CRTP, NVI, SFINAE, Koenig lookup, Duff's device, Boost, Сик-Ламсдейн/Карлссон, TR1, TR on C++ performance, тест Степанова, forwarding problem, SPECS, C++0x

    2. Компиляторы, особенности реализации стандарта, ограничения реализации, интринсики, отличия стандартных библиотек (контейнеры, rand), ABI, реализация виртуальных функций, виртуального наследования, исключений, RTTI, switch, указателей на функции и методы; оптимизации, copy elision (RVO, NRVO), sizeof на различных платформах, дефайны компилятора и среды, __declspec, ключи компилятора, empty-base optimization, статическая и динамическая линковка, манглинг, распределенная компиляция, precompiled header, single compilation unit, (strict) aliasing/restrict, inline/_forceinline, volatile

    3. Мультитредность, обедающие философы, deadlock/race condition/starvation, атомарность, lock инструкции процессора, CAS или LL/SC, wait/lock/obstruction-free, ABA problem, написание lock-free контейнеров, spin-lock, TLS/per-thread data, OpenMP, MPI, map-reduce, critical section/mutex/semaphore/condition variable, WaitForSingleObject/WaitForMultipleObjects, green thread/coroutine, pthreads

    4. Язык ассемблера x86, Зубков/Хайд/Дреппер/Касперски/Фог/Абраш, AT&T и Intel-синтаксис, masm32, макросы, стек, куча/менеджеры кучи, соглашения вызова, hex-коды, машинное представление данных, IEEE754, little/big endian, SIMD, аппаратные исключения, прерывания, виртуальная память, реверсинг, срыв стека и кучи, return oriented programming, alphanumeric shellcode, L1/L2/RAM/page fault и их тайминг

    5. Аппаратное обеспечение, Хоровиц-Хилл, полупроводниковая электроника/спинтроника/фотоника, транзистор, схемотехника, микрокод, технология создания процессоров, VID/PID, Verilog/VHDL/SystemC, Arduino, устройства памяти (ROM → EEPROM, RAM, SSD, HDD, DVD), RISC/CISC, Flynn's taxonomy ([SM]I[SM]D), принстонский и гарвардский подход, архитектуры процессоров, архитектуры x86

    6. Процессоры, конвейеризация, hyper-threading, out-of-order execution, спекулятивное исполнение, branch predict, префетчинг, множественный ассоциативный кэш, кэш-линия/кэш-промах, такты, кольца защиты, память в мультипроцессорных системах, тайминг памяти

    7. Дискретная математика, K2, теорема Поста, схемы, конечные автоматы, клеточные автоматы, ДКА и НДКА

    8. Вычислимость, машина Тьюринга, нормальные алгоритмы Маркова, машина Поста, диофантовы уравнения Матиясевича, лямбда-функции Черча, частично рекурсивные функции Клини, комбинаторное программирование Шейнфинкеля, Brainfuck, эквивалентность тьюринговых трясин, проблема останова и самоприменимости, счетность множества вычислимых функций, RAM-машина, алгоритм Тарского, SAT/SMT-солверы, теория формальных систем

    9. Языки программирования, грамматики, иерархия Хомского, теорема Майхилла-Нероуда, лемма о накачке и лемма Огдена, алгебра Клини, НДКА -> ДКА, алгоритмически неразрешимые задачи в формальных языках, Драгонбук, Фридл, регекспы и их сложность, PCRE/POSIX RE, БНФ, Boost.Spirit + Karma + Qi/Ragel, LL, LR/SLR/LALR/GLR, PEG/packrat, yacc/bison/flex/antlr, статический анализ кода, компиляция/декомпиляция/обфускация/деобфускация, Clang/LLVM/XMLVM, GCCXML, OpenC++, построение виртуальных машин, JiT/AoT/GC, DSL/DSEL

    10. Алгоритмы и комбинаторная оптимизация, Кормен/Скиена/Седжвик/Кнут/Ахо-Хопкрофт-Ульман/Пападимитриу/Шрайвер-Голдберг/Препарата-Шеймос, структуры данных, алгоритмы, сложность и символы Ландау, классы сложности, NP-полные задачи, графы и деревья, потоки в сетях, матрица Кирхгофа, деревья поиска (особенно RB-дерево и B-дерево), occlusion detection, куча, хэш-таблицы и идеальный хэш, сети Петри, алгоритм русского крестьянина, метод Карацубы и матричное умножение Винограда-Штрассена, сортировки, жадные алгоритмы и матроиды, динамическое программирование, линейное программирование, diff-алгоритмы, рандомизированные алгоритмы и алгоритмы нечеткого поиска, псевдослучайные числа, нечеткая логика

    11. Машинное обучение, машинное зрение, OpenCV, image processing, OCR, фильтры Собеля, каскад Хоара, введение в психофизиологию зрения, TreeNet, нейросети, сети Кохонена, генетические алгоритмы, муравьиные алгоритмы, information retrieval/data mining/natural language processing, алгоритмы оптимизации, SVM, gradient boosting, метод отжига, hill climbing, подходы к моделированию AI

    12. Численные методы, метод Гаусса, интер- и экстраполяция, сплайны, МНК, метод Эйлера и Рунге-Кутты, дихотомия/метод Ньютона, метод Симпсона, метод Монте-Карло, метод Галеркина, QR и LU-декомпозиция, FFT/STFT, сходимость и устойчивость

    13. Теория информации, сжатие, Хаффман, RLE, LZ, коды коррекции ошибок, информационная энтропия, формула Шеннона, сложность Колмогорова

    14. Криптография, Ященко, симметричная, асимметричная, Диффи-Хеллман, RSA, DES, AES, эллиптические кривые, хэширование (MD5, SHA, CRCn), DHT, криптостойкость, криптоатаки, WEP/WPA/WPA2 и атаки на них, цифровая подпись и сертификаты, HTTPS/SSL, доказательство с нулевым разглашением

    15. Математика, Кнут-Грэхем-Паташник/Зорич/Винберг, матан, линал, комплан, функан, диффгем, теория чисел, дифуры/интуры/урчпы/вариационное исчисление/оптимальное управление, производящие функции, ряды, комбинаторика, теорвер/матстат/слупы/теория массового обслуживания, цепи Маркова, интегральные преобразования (Фурье, Лаплас, вейвлет), NZQRCHOS, матпакеты (Mathematica, Maple)

    16.Архитектура и стиль кода, Макконнелл/Фаулер/Лебланк/Гамма/Александреску-Саттер, защитное программирование, паттерны, GRASP, UML, OOP/OOD/OOA, правило Лисков, метрики кода

    17. Тестирование, юнит-тесты, функциональное, нагрузочное, интеграционное тестирование, тестирование UI

    18. Инструментальные средства разработки, IDE, IntelliSense, отладчики (VS/Olly/WinDbg/kdb/gdb) и трейсеры (strace/ltrace), valgrind, системы контроля версий (SVN, GIT), merge/branch/trunk, системы именования файлов и бранчей, continuous integration, ant, code coverage, статический анализ, профайлинг, lint, багтрекеры, документирование кода, сборщики кода типа cmake

    19. Фреймворки, Qt, moc и метаинформация, концепция слот-сигнал, Саммерфилд-Бланшет/Шлее, PoCo, промышленные библиотеки: GMP, i18n, lapack, fftw, pcre

    20. Операционные системы, Рихтер/Соломон-Руссинович/Робачевский/Вахалия/Стивенс/Linux Kernel Internals, менеджер памяти, менеджер кучи и ее устройство (LAL/LFH/slab), менеджер процессов, context switch, реальный и защищенный режим, исполнимые файлы (PE/ELF/Mach), объекты ядра, отладочные механизмы (strace/ptrace/dtrace/pydbg, Debug API) и минидампы, bash, сетевой стек и высокопроизводительные сервера, netgraph, CR0, IPC, оконная подсистема, система безопасности: ACE/ACL и права доступа, технологии виртуализации, RTOS (QNX), программирование драйверов, IRQL, IRP, файловые системы, BigTable, NDIS/miniport/FS drivers/filter driver, Mm-, Io-, Ldr-функции, DKOM и руткиты, GDT/IDT/SDT, ядра Windows/Linux/BSD, POSIX

    21. COM, OLE/ActiveX/COM+, ATL, Роджерсон/Таварес, апартменты, моникеры, дополнительные ключевые слова VC++, DCOM RPC, CORBA, TAO

    22. Сеть, OSI, Ethernet, TCP/IP, TCP window, алгоритм Нейгла, сокеты, Protocol buffers/Thrift/Avro/ASN.1, AMQP, ICMP, роутинг, ARP, атака Митника, syn flood, HTTP/FTP, P2P, DHCP, SMB/NBNS, IRC/XMPP, POP3/SMTP/ESMTP/IMAP, DNS, WiFi/WiMax/GSM/CDMA/EDGE/Bluetooth, ACE, Wireshark

    23. Графика, алгоритм Брезенхема, цветовые модели, трассировка лучей vs полигональная графика, OpenGL/GLSL/Open Inventor, DirectX/DirectShow/DirectAudio/HLSL, stencil/depth/alpha-test, графический конвейер в DirectX 11, шейдеры, модели освещения (Фонг), пропускная способность, fillrate, OpenCL/CUDA, ландшафты, лоды, тени, текстурирование и фильтрация, антиалиасинг, HDR, tone mapping

    24. Базы данных, Грубер, ANSI SQL, T-SQL, ODBC, MySQL/PostgreSQL/MS SQL/BDB/SQLite/Sphinx, хранимые процедуры, триггеры, алгебра Кодда/А, Tutorial D, нормальные формы, оптимизация и выполнение запросов, структуры данных индексов, транзакции и ACID, CAP-теорема Брюера, NoSQL, key-value storage, шардинг, ORM (C++ ODB), ERD, OLAP

    25. Прикладное программирование, C#/F#/Nemerle, Шилдт/Троелсен/Рихтер, генерики, yield, linq/plinq, рефлексия, AST, WCF, WinForms/WPF/Silverlight, AOP, фреймворки логгирования, .NET assembly

    26. Функциональное программирование, Haskell/Ocaml/Scheme/Alice или Oz, SICP/TaPL/YAHT/Purely Functional Data Structures/Харрисон-Филд, HOF (map/fold/filter), монады, тайпклассы, АТД, система типов Хиндли-Милнера, ленивость/энергичность, логическое программирование (Prolog или Mercury), конкурентное программирование (Erlang или Oz)

    27. Проектирование GUI, Раскин, юзабилити, основы дизайна и типографики, закон Фиттса, основы верстки, LaTeX
    Ответ написан
    1 комментарий
  • Хронология познания программирования, или как вы учили C++?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    С++ невозможно выучить, даже не пытайтесь.

    Я уже 12 лет учу.
    1. Начинал с книги "Borland C++ 5.02" для чайников (моя первая книжка по программированию).
    Благодаря ней я написал два класса Foo и Bar. Там еще было описание GUI библиотеки OWL.
    2. Много читал rsdn.ru (ныне полумертвый), borland.xportal.ru, впитывал.
    Практически никогда сам не задавал вопросов, потому что умел пользоваться поиском, да и с английским проблем не было. Отвечал на вопросы других на разных форумах, помогая другим, набирал знания.
    3. Начал изучать разработку GUI приложений в C++ Builder.
    5. Прочитал множество книжек. Уже точно названий не помню, мне понравилась книжка, где давались практические советы и примеры правильного/неправильного использования C++, кажется "Эффективное использование С/C++".
    6. Писал в школе на уроках информатики реализацию всяких линейных списков/деревьев/вычислений интегралов/производных/простых уравнений/минимумы функции, правда, на паскале (нас заставляли)
    7. Научился работать с потоками (thread). Написал кучу небольших проектов для себя, в основном Winapi + WTL.
    Пробовал писать на С++ "игры" на OpenGL/DirectX.
    Писал программы для себя и для других на С++ Builder, Delphi, Visual C++, C#, Java.
    8. Еще в школе начал писать open-source проект на C++ (сейчас там около 70 тыс. строчек, частично кроссплатформенный, познакомился с особенностями разных компиляторов). https://github.com/zenden2k/image-uploader . Написал много других проектов поменьше.
    9. Писал в универе лабы/курсовые/диплом на С++, C#, Java, Fortran, ASM, Bash, VHDL, Wolfram Mathematica, mssql.
    У нас был курс С++ длящийся 2 семестра. Нас заставляли реализовывать самостоятельно стандартный контейнер (кажется std::vector). Еще писали какую-то базу данных на текстовых файлов с gui интерфейсом.
    Изучил дискретку/теорию графов/матлогику/теорию компиляторов и формальных языков. Написал простой компилятор рекурсивного спуска на С++. Написал модель RTOS на C++. Написал какую-то непонятную систему массового обслуживания (СМО) сначала на паскале, потом на C++. Изучил межпоточную синронизацию на примере Winapi/Posix threads/java threads.
    10. Изучил веб-программирование, PHP, Javascript, mysql/postgres. Написал кучу сайтов/веб-приложений.
    Любимым сайтом стал stackoverflow.com
    11. Прочитал книжку "Совершенный код." - та еще водичка.
    Изучил книгу "Thinking in Java" и C# Дж. Рихтер. Хорошее знание других языков не помешает.
    Открыл для себя Google C++ Style Guide. Начал частично следовать ему.

    Но до сих пор я не могу сказать, что знаю C++ достаточно хорошо. Наверно, я просто тупой, никчемный программист.

    Ошибки при компиляции шаблонов, и особенно ошибки линковки могут заставить меня зависнуть на некоторое время. Эти ошибки ну "очень информативные". Но благодаря опыту и интуиции я с ними справляюсь, а вот начинающему будет нелегко.
    Ответ написан
    2 комментария
  • Работающий вариант C++ thunk (указатель на функцию-член класса как C-style callback)?

    zenden2k
    @zenden2k Автор вопроса
    PHP & C++ programmer
    Чувствую, что ответа я не дождусь, пока остановился на этом:
    p-nand-q.com/programming/cplusplus/using_member_fu...
    Ответ написан
    Комментировать