• Не могу решать задачи по программированию?

    rqdkmndh
    @rqdkmndh
    Web-разработчик
    но когда доходит до задач, у меня появляются проблемы

    Просто, наверное никто не сказал вам, что правильная постановка задачи - это уже половина решения. Помню физичка, на меня дико орала в школе, когда я на доске сразу начинал писать решение - она требовала, чтобы сначала я писал секцию: 'Дано:'. Потом, я понял насколько это было важным. Перед решением любой задачи, сначала необходимо осмыслить все исходные данные и четко прописать их. Почему, это нужно делать? - потому что некоторые важные условия могут быть заданы неявно и ускользать от внимания. К примеру, в условиях пишут: 'машина начала двигаться и достигла скорости 70км/ч' - если вы просто прочитаете это, то в голове у вас будет вертеться только одна цифра (скорость 70). Но если обратить внимание на фразу начала двигаться - можно записать что начальная скорость была 0. И уже имеем: v0 = 0км/ч, v1 = 70км/ч После того как все исходные данные выписаны и установлены - остается протоптать из них дорожку к результату - это и будет решение, которое обычно само напрашивается при таком подходе.
    Ответ написан
    3 комментария
  • Как возвращать ошибки в REST API?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    И вообще, стоит ли так слепо следовать правилам из приведённой в начале статьи?

    Разумеется не стоит. Делайте как того требует задача. Формат ошибок придумывать не надо. Мы например пришли к тому, что используем problemJson для ошибок.
    Ответ написан
    Комментировать
  • В чем суть приватных IP адресов, если можно выдавать любые IP и затем их Натить?

    @Drno
    Когда тебе понадобится зайти на белый IP из этой подсети, ты на него не попадешь, т.к. он будет искаться в первую очередь у тебя в локалке
    Ответ написан
    1 комментарий
  • Не понимаю, почему данные в разных строках?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Потому что нужно выучить хотя бы базовый синтаксис SQL! Одна строка вставляется одним запросом, каждый инсерт вставляет новую строку!
    execute('INSERT INTO table (FIO, Address, Email) VALUES (?, ?, ?)', ('ФИО', 'Your Address', 'your@email.com'))
    Ответ написан
  • Как подключиться к Wifi на C++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе работать с Wifi на С++ нужно будет только в одном случае - когда ты разработчик драйвера Wifi устройства.

    В остальных случаях - ты пишешь обычные приложения на С++ которые используют сокеты TCP/UDP, которые (сокеты) в свою очередь работают через стек технологий ОС для кидания пакетов в Wifi интерфейсы в соотвествии с правилами таблиц маршрутов.
    Ответ написан
    2 комментария
  • Кто создает .htaccess для сайта?

    @0x131315
    .htaccess - это часть сервера, сфера ответственности команды эксплуатации
    Обычно его создает/правит админ или бек-разработчик
    Работает этот файл только с веб-сервером apache/httpd, к nginx отношения не имеет
    Фронтенд-разработчики по идее никак с этим не связаны, это и близко не их сфера ответственности. Могут столкнуться, только если сами настраивают свое рабочее окружение и каким-то образом им помешал дефолтный .htaccess
    Управление кешем с серверной стороны точно не относится к фронтенд-разработке
    Ответ написан
    Комментировать
  • Как сделать так, чтобы данные, которые я пишу в тг бота, заполняли сперва первую строчку в таблице postgre?

    Vindicar
    @Vindicar
    RTFM!
    Почитай хотя бы про основы реляционных БД.
    У каждой таблицы должен быть первичный ключ - иными словами, такое поле/комбинация полей, которая будет уникальной для каждой записи.
    Тогда алгоритм будет такой: спрашиваешь пользователя, какую запись он хочет редактировать, запоминаешь её ключ, затем переходишь в режим редактирования, где поочерёдно спрашиваешь значения столбцов.
    Подразумевается, что ты знаешь, как сделать сценарий, чтобы бот последовательные сообщения обрабатывал по-разному. Если не знаешь - читай, как реализуется finite state machine (FSM) в выбранной тобой библиотеке.
    Ну и да:
    data = message.text.strip()
    cur.execute(f"INSERT INTO {tableName} ({column_name}) VALUES ('{data}')")

    Это - готовая SQL инъекция. И если вставку tableName и column_name еще можно оправдать (хотя ты их тоже не проверяешь на допустимость), то данные так вставлять нельзя. Есть правильный способ.
    Ответ написан
    Комментировать
  • Какую базу данных использовать для такого проекта?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут подходит любая реляционная SQL БД потому что нет противопоказаний. Реляционку мы выбираем
    уже более 30 лет как default вариант и почти не ошибаемся.

    Когда задача имеет признаки ярко выраженной high-load системы - мы делаем ей частичную денормализацию
    и раскладываем ее в NoSQL Key-Value решение. Но это не про улучшение а это про неизбежность. У нас нет выхода просто.
    Иначе мы клиенту не сможем быстро отдать какой-то резуальтат.

    Когда задача имеет ярко выраженную документную природу (нет спецификации на values) - мы берем MongoDb/CouchDb.

    Когда задача хранит граф и ищет в графе и вообще требует графовых алгоритмов - то мы берем Neo4j или ей подобные.

    Когда задача хранит данные измерений (телеметрия) - то предпочтительно взять InfluxDb или ей подобные. Здесь-же мы предполагаем что у нас - не будет joins а будет только измерения в диапазоне времени.

    Но в данном ТЗ и на картинке обычная SQL БД (MySQL/Postgres) вполне себе нормально справляется.
    Ответ написан
    Комментировать
  • Какую базу данных использовать для такого проекта?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну, на основной вопрос уже ответили, а я освещу отдельную проблему, которая очень часто волнует умы юных падаванов.

    когда лучше реляционную и нереляционную использовать?

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

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

    Если вдруг проект пройдет стадию "неясные идеи", и выльется во что-то практическое, и даже появится какая-то нагрузка, то можно будет начать думать про использование одного или нескольких подсобных хранилищ в дополнение к базе данных.
    Ответ написан
    2 комментария
  • Как из Lua вызвать функцию C++?

    Google: "lua ffi"
    Ответ написан
    Комментировать
  • Как правильно решить конфликт?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это не про GIT/Gitlab. Это про программирование.

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

    Что там сотворил GitLab - непонятно. Я не готов ничего сказать. Надо смотреть консоль команд которая форсируется самим приложением GitLab. Возможно они были неправильные. Или вы не так описываете
    ситуацию.
    Ответ написан
    2 комментария
  • Какие виды функций есть в C++, и как их различать?

    Функция cout из стандартной библиотеки C++ использует указатель для доступа к объекту ostream, который представляет поток вывода. Указатель используется для работы с методами и свойствами этого объекта, такими как << оператор для вывода данных.

    Обманул тебя ChatGPT.
    cout - это не функция, а объект.
    И конкретно в твоём коде указатели напрямую нигде не используются.
    Ответ написан
    Комментировать
  • Как происходит работа с Git в крупных проектах?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я ни разу не работал с git в команде и в крупных проектах, поэтому не знаю, что нужно делать.

    Тебе и не нужно это знать. И мы не сможем перечислить все роли и задачи участников на проекте и все их возможные комбинации поэтому заранее рассказывать об этом бесполезно.

    Git - это просто инструмент. Но как делается review или кто его делает. Или голосуют. Или мержат или ребейзят.
    Или создают теги или бранчи. Или сколько делают осей разработки master/trunk, dev/stg/prod - это все частные договоренности. GitFlow, GitLabFlow. Интеграция Atlassian. С Gerrit. Это все-все частные случаи управления версиями кода на частных проектах. Нету общих рекомендаций.

    Узнать их можно на проекте. Пришел. Прочитал Developers process guide. И начал работать.

    А управление процессами разработки с помощью Git это большая и частная тема.

    Поэтому оставь в покое крупные проекты. И лучше задай просто про git. Про команды git например.
    Ответ написан
    Комментировать
  • Что эффективней, чтение из файла или массив?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вопрос не глупый а вполне себе хороший.

    Его плавное развитие приводит к концепции баз данных. Самое главное что можно сказать тезисно это
    1) Пока памяти хватает (массив) - используй смело память
    2) Диск - больше и дешевле памяти
    3) С памятью работать легко. С диском - очень неудобно и надо обрабатывать IOExceptions почти всегда.
    Диски внезапно полны сюрпризов. Могут быть сетевыми дисками.
    4) Разные диски имеют скорость на порядки разную.
    5) Диски ведут себя очень плохо на random access. От этого даже метрика IOPS появилась.
    Ее очень любят обсуждать админы баз данных.
    6) Существуют структуры данных которые спецом создавались только для дисков (B+Tree)
    7) Диск - переживает выключение питания.
    8) Самые разумные решения - сочетают в себе и диск и память в тех частях кода где это нужно.
    9) Есть интерфейсы программирования которые виртуализирут диск как память. Этим пользуется
    SQLite например.
    10) Диск может достигать очень высокой последовательной скорости чтения или записи в файл
    при условии отсутствия конкурирующих записей в данный момент. Этим пользуются в БД
    для журналирования событий.

    В принципе если современный программист просто будет использовать только оперативную память
    то никто ему не сможет ударить по рукам или подойти с какой-то метрикой и чего-то там измерив
    сказать что он неправ. Тут уж только падения по OOM и потери информации и performance issues
    могут быть каким-то значимым аргументом.
    Ответ написан
    3 комментария
  • Что такое Docker простыми словами?

    DollyPapper
    @DollyPapper
    Грубо говоря докер это изолированный от системы некий процесс. Можно считать это некий chroot для процесса.
    Представьте себе операционную систему в которой есть некоторое пространство из ресурсов. Память, диск, системное время, сеть, сетевые интерфейсы. И в этом пространстве находятся процессы которые используют эти ресурсы. А теперь представьте что в этой большой системе мы откусили кусок ресурсов и некоторый процесс, например БД изолировали от всей остальной системы. Докер это своеобразная матрица (всмысле как в фильме матрица) для процесса некоторого.
    Ответ написан
    Комментировать
  • Как реализовать взаимодействие нескольких библиотек между собой на c++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Надо системное апи использовать. Вы, похоже, под виндой, так что LoadLibraryEx, GetModuleHandleEx, GetProcessAddress вам помогут. Первой вы открываете библиотеку. Второй можно потом пользоваться чтобы получить доступ к уже открытой библиотеке, если вы HANDLE не сохранили куда-то. Третья позволит вам получить указатель на функцию из библиотеки.

    Можно гуглить "имя функции example" и тогда вы найдете в интеренете готовый код, работающий с этими функциями.
    Ответ написан
    Комментировать
  • Где можно прочитать про всю суть ЯПов под капотом?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В каждом языке детали отличаются.
    Операторы не просто функции, это как бы понятно, ибо некоторые операторы это вообще только часть структуры, и функцией быть не может.

    Что вы вообще спрашиваете? Какой смысл?
    у вас надерганы термины из разных источников, и видимо из источников описывающих разные языки программирования, отсюда и каша.
    Выберите конкретный язык и прочитайте про его терминологию. Потом про другой.
    Прошло уже 100+ лет с начала программирования, появились новые сущности, которые не подпадают под старую классификацию.
    Ответ написан
    Комментировать
  • Где можно прочитать про всю суть ЯПов под капотом?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    5d66774c767f2234030678.png
    Ответ написан
    Комментировать
  • Что за значки под ярлыками на рабочем столе Windows?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Иконки они что то обозначают.
    В вашем случае это группа людей, логично предположить что вы расшарили свой десктоп по сети.
    Впрочем это может быть и какой то улучшатель из сборки от васяна
    Ответ написан
    2 комментария
  • В чëм сейчас пишут документацию?

    Я бы посмотрел в сторону latex, если формул прям много и нужна на выходе адекватная пдфка.

    Схемы - уже зависит от характера схем. Если это какие-то архитектурные диаграммы и блок-схемы с описанием алгоритмов, то я бы взял plantuml и mermaid.

    А про wysiwig бы забыл как страшный сон.
    Ответ написан
    9 комментариев