• Как найти неправильно поставленные скобочки { и } в C++?

    Olej
    @Olej
    инженер, программист, преподаватель
    В коде куча строк, но вот как найти среди них одну скобочку, которая ломает весь код...

    1. Куча - это сколько? 5000? 10000? ... а не нужно писать код простынями в один файл.
    2. Либо загнать код в редактор/IDE с разметкой (я люблю Geany), чтобы он вам показал разметку.
    3. Либо комментариями исключать внутренние блоки {} пока на верхнем уровне не выявится непарность.
    Ответ написан
    Комментировать
  • Как учить что-то новое и быстро не забывать?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Пишите код.
    Только попытка создать работающий продукт, проведет вас по всей цепочке. Просмотр видеолекций помогает для освоение примитивного базиса, и помогают подметить какие-то моменты из чужого опыта, когда ты уже сам шаришь.
    Но запоминание информации не означает установление логических связей о том, как оно работает в разных условиях. Тут только собственная многочисленная практика.
    Заставьте себя на каждую прочитанную статью, книжку написать несколько рабочих примеров. Собственных. Усложняйте свои примеры.
    Ответ написан
    Комментировать
  • Как посчитать сумму чисел в файле?

    @Mercury13
    Программист на «си с крестами» и не только
    Пока вижу вот что.
    1. a += buff[i]; Вы суммируете коды символов, а не их числовые значения. Правильно a += buff[i] - '0';

    2. Эти строки дублируют друг друга.
    fin >> buff;
      fin.getline(buff, 11);

    Сначала получаем 0123456789, потом файл кончился и на место 0 записываем нулевой символ (NUL).

    3. for (int i = 0; i < 11; i++) — неуниверсальная конструкция. Плюс цифр в строчке всего 10, поэтому надо i < 10.

    4. Так сумму чисел или сумму цифр?
    Ответ написан
  • Отказаться от group by и sort by?

    savostin
    @savostin
    Еще один программист
    У Вас быстро закончится память, т.к. вся таблица (а скорей всего не одна) будет сохраняться в ОЗУ.
    Ответ написан
    Комментировать
  • Angular 2 typesript или es6?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Он заточен именно под TS. Выбор очевиден, да TS сам по себе очень хорош для серьезных проектов.
    Ответ написан
    Комментировать
  • Как написать функцию которая может не вернуть значение?

    @Mercury13
    Программист на «си с крестами» и не только
    Object* find (const Object& o)
    {
        /* Поиск, если нашли */
       return link;
       /* Если не нашли? */
       return NULL; // Теперь можно
    }
    Ответ написан
    5 комментариев
  • Большой проект на С. Как строить работу чтобы не завалило кодом?

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

    Это потянет за собой новые проблемы и необходимость содержать системного архитектора, но рано или поздно все равно потребуется при таком объеме кода.
    Ответ написан
    Комментировать
  • Большой проект на С. Как строить работу чтобы не завалило кодом?

    @koronabora
    Человек
    1) Разбиваем по категориям, каждую категорию - в свою папку. Если надо - еще подпапки.
    2) Общий или старый код вынести в библиотеку, подключать только .h + .lib
    3) Использовать систему контроля версий.
    4) Ввести лимит по количеству строк на файл, перераспределять код таким образом, чтобы в одном .c файле было не больше 1000 строк (имхо даже 500 на с уже много. )
    Ответ написан
    Комментировать
  • Почему в интерфейсе нельзя использовать protected или private?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Интерфейс предназначен для декларирования внешнего API без уточнения реализации. В нем должны быть лишь публичные члены.

    Вообще говоря, это искусственное ограничение, принятое для удобства. В том же C++ в качестве интерфейсов используются чисто виртуальные (абстрактные) классы без состояния. Наличие же специальной синтаксической конструкции (интерфейсов, как в C# или Java) позволяет явно подчеркнуть, что программиста там не ждет никакого сюрприза и этот тип используется как "клей" между другими классами.
    Ответ написан
    Комментировать
  • Исчезли кнопки свернуть и развернуть?

    @JFirefly
    Junior Developer
    this.MaximizeBox = true;
    this.MinimizeBox = true;

    а вообще учитесь пользоваться гуглом.
    Ответ написан
    Комментировать
  • Как сделать оконное приложение на c++?

    PavelK
    @PavelK
    Qt
    Ответ написан
    Комментировать
  • На чем можно написать автоматическую кормилку для кота?

    @SergeyZelensky-Rostov
    ПО для кормушки, такими темпами скоро появиться считыватель туалетной бумаги, лазерный пи*ькокомерт и т.д.
    ,а не проще сделать кормушку с дозатором и котик сможет сам себе еду добывать, в таком случае у вас будет полная увереность что он поест,а так навернется что нибудь в вашей высокотехнологичной кормушке и кот с голоду помрет.
    Хотя если кот-ученый то разберется что да как
    Ответ написан
    Комментировать
  • Помогает ли PDO для защиты?

    peredozo
    @peredozo
    Мне кажется тут проблема не при вносе данных в базу, а при выдаче.
    Где-то htmlspecialchars_decode срабатывает или что-то типа того.
    Если в самой базе посмотреть, данные туда вбиваются с отработанным htmlspecialchars или как есть?
    <script> код prompt("92923") код</script>
    Такая запись в самой БД?
    &lt;script&gt; код prompt(&quot;92923&quot;) код&lt;/script&gt;gt;

    Или такая?
    Ответ написан
    Комментировать
  • Помогает ли PDO для защиты?

    nazarpc
    @nazarpc
    Open Source enthusiast
    PDO защищает только от mysql инъекций а от этого нет?

    Совершенно верно. Prepared statements (не PDO) используются для безопасной вставки данных в БД. А если сами данные небезопасны - это уже совсем другой вопрос и решается совсем другими инструментами.
    Ответ написан
    Комментировать
  • Как разрабатывали не офф. сервер для gta 5?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    я не буду думаю писать какой то мультиплеер для gta 5 :D
    Ну, судя по этой строчке, вопросу и тегам - мы даже и не сомневались ни на минуту!

    Неоф. сервер - 3 варианта:
    1. Скачать сервер с сайта разработчика игры (обычно выкладывают) или игра имеет возможность становиться сервером при запуске с определёнными ключами в командной строке и т.д..
    2. Анализ протокола обмена данными с оф. игровым сервером и его дальнейшая реализация своими силами (повтор АПИ 1-в-1).
    3. Проксирование трафика через себя на оф. сервера, с частичным мониторингом (sniffing) трафика для ведения учёта побед/поражений, проведения турниров, составления таблицы игровых достижений.
    Ответ написан
    4 комментария
  • Нужна ли точка в конце NS адреса?

    opium
    @opium
    Просто люблю качественно работать
    Точка говорит о том что адрес абсолютный а не относительный
    На деле в браузере у нас после домена всегда стоит точка просто браузер ее не показывает
    Ответ написан
    Комментировать
  • Архитектура системы личных сообщений?

    @nirvimel
    Стоит ли использовать для этих целей MongoDB/MySQL?

    PostgreSQL или MySQL, но не в коем случае не NoSQL, который выглядит как панацея только поначалу.
    Правильная проектировка структуры БД - залог производительности и нормальной разработки.
    Ошибки в структуре БД - бомбы, подложенные под развитие проекта и дальнейшую разработку.

    Хранить все сообщения в одной таблице в виде текста?

    Все сообщения в одной таблице. Но в базе у вас в итоге окажется 10-20 или больше таблиц с разными метаданными, без которых тексты сообщений не имеют смыла.

    Если разбивать данные на шарды,

    Не надо этого делать.

    Что думаете про Node.js + Websockets для этих целей?

    Node.js - тех, кто начинал свою программистскую карьеру с фронтенда, надо на пушечный выстрел не подпускать к принятию архитектурных решений в крупных проектах. Архитектура для архитекторов, js для фронтендеров.
    Websockets - чат предполагает push данных с сервера на клиент, а для этой задачи websockets почти не имеет реальных альтернатив на сегодняшний день. То есть все альтернативы - это костыли из времен до websockets.

    Как правильно хранить сообщения пользователей на разных серверах?

    Для начала нужно определиться с тем зачем это нужно. Потом постараться избавиться от этой опасной идеи.

    чтобы не пришлось потом переделывать на реальных пользователях.

    Переделывать все равно придется. Такова суровая реальность жизни.
    Ответ написан
    2 комментария
  • На сколько ресурса затратно операция получения даты - микросекунд с 1970 в современных языках?

    @nirvimel
    На большинстве (всех?) современных ОС получение времени - это функция ядра. Следовательно для пользовательского процесса в userspace это требует ровно один вызов в ядро, который представляет собой syscall, то есть программное прерывание. На стороне ядра код обычно тривиальный и заключается в получении значения переменной, в которой хранится время (эта переменная инкрементируется из обработчика прерывания таймера), и возврате этого значения через sysret, то есть возврат из прерывания. Поэтому основные временные затраты сводятся к исполнению syscall/sysret и сохранению/восстановлению контекста пользовательского процесса при входе/выходе в/из ядра.
    От единиц измерения (нано/мирко/милли) скорость вызова практически не зависит. Конвертация одних единиц в другие происходит на стороне пользовательского процесса, за это отвечают библиотеки и окружение конкретного языка, но эти вычисления составляют всего несколько машинных инструкций и не вносят значительный вклад общее время вызова.

    В Linux существуют несколько таймеров в ядре: высокого/обычного разрешения и переводимые/непереводимые назад, но получение времени происходит через одну функцию clock_gettime как бы по-разному это не выглядело в разных ЯВУ.

    В Windows стандартные механизмы GetSystemTime и GetTickCount выдают время только с миллисекундной точностью. А таймер высокого разрешения QueryPerformanceCounter предназначен только для измерения временных интервалов, его абсолютное значение не имеет смысла.

    Историческая справка: В реальном режиме работы x86 до тех пор, пока BIOS владеет аппаратным прерыванием таймера и таймер настроен по умолчанию (его еще можно перенастраивать), то есть с интервалом в 55ms и частотой в 18.2 герц, на каждый тик таймера инкрементируется четырехбайтное значение по абсолютному адресу 0:046C. Так что пользовательская программа (термин процесс тут не совсем применим) может получить значение времени мгновенно простым считыванием этого значения из памяти без каких-либо вызовов.
    Стоит отметить, что данный функционал не имеет никакого отношения к DOS или какой-либо ОС вообще, а прошит в BIOS любого x86-совместимого (даже современного) компьютера и действителен каждый раз при загрузке машины вплоть до момента перевода процессора в защищенный режим в момент загрузки ядра современной ОС.
    Ответ написан
    Комментировать
  • Что я сделал не так после объединения томов жесткого диска?

    Jump
    @Jump Куратор тега Системное администрирование
    Системный администратор со стажем.
    Да, это нормально.
    Так и должно быть.
    Ответ написан
    Комментировать