Задать вопрос
  • Как правильно выбрать фреймворк и яп для проекта, если ты заказчик?

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

    1)Нужно будет выполнять много запросов к БД

    На всех остальных сайтах делается один-два запроса в час.

    2)Важная быстрая скорость работы нашего сайта

    Это очень редкое требование, обычно сайту достаточно возвращать ответ в течение получаса

    3)Безопасность от всяческих XSS и SQL атак.

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

    @rPman
    Если узкое место - разбор огромного json, то тебе нужен потоковый парсер, их огромное количество, гугл для питона выдает к пример ijson.

    Если этого будет мало, попробуй переписать это место на c/c++, там еще быстрее парсеры, например simdjson обещает гигабайты в секунду (и это реально так)

    Эти парсеры пробегают линейно по токенам, а ты в процессе принимаешь решение нужно ли пропустить данный токен (или целый подраздел) или обрабатывать далее, благодаря такому подходу в оперативной памяти не сохраняется ничего из входного json а потоковый подход позволяет даже распаралелить обработку (в отдельном потоке/процессе ты анализируешь json а в другом пишешь в базу данных)
    Ответ написан
    Комментировать
  • Как быстро распарсить много json файлов на python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    А почему ты решил что парсинг это узкое место? Ты пишешь информацию в базу. Тоесть у тебя конвейер операций.
    И я думаю что до того как начинать оптимизацию, надо собрать логи по таймингам. Сколько милисекунд занимет
    чистый парсинг и сколько запись в БД.

    Попробуй еще простой параллелизм. Разбей эти 8000 файлов на 2 фолдера по 4000.
    И запусти 2 python-процесса. Будет допустим не 5 часов а 3 часа. Уже лучше.
    Продолжнай дробить пока удельная скорость обработки не деградирует.
    Ответ написан
    2 комментария
  • Golang нужно делать реконнект к дб или поднимать новое соединение?

    Правильная практика — это использовать пул готовых установленных соединений к базе и раскидывать запросы между ними. Почти все библиотеки для работы с БД делают именно так.

    https://go.dev/doc/database/manage-connections
    Ответ написан
    2 комментария
  • Что быстрее SQL или Javascript?

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

    Во-первых, заголовок у вопроса чудовищно некорректный. Это все равно что спросить, "что быстрее - пылесос или стиральная машина?"
    Во-вторых, ответ на вопрос "производить ли обработку данных в БД или же запросить все данные в клиентское приложение и обрабатывать там" совершенно очевиден: обработку данных следует производить в общем случае только в БД. Она для этого и придумана. Чтобы обрабатывать значительные объемы данных.

    Да, js тоже "может" обрабатывать большие объемы данных.
    Но чтобы значительный объем данных обработать, его сначала надо передать, полностью забив канал между сайтом и базой
    Чтобы значительный объем данных обработать, его надо сначала проиндексировать. Причем делать это каждый раз, а не использовать уже имеющийся набор индексов
    Чтобы значительный объем данных обработать, надо иметь значительный объем памяти или упасть из-за её недостатка
    Чтобы значительный объем данных обработать в многопоточном режиме (а сайт как раз является многопоточной системой), все вышеперечисленное надо умножить на количество посетителей сайта - при каждом запросе перегонять весь массив данных, выделять память, индексировать, считать. Если же вы оставляете все данные в памяти приложения, то их тогда надо как-то синхронизировать с БД. То есть вы себе собираете кучу проблем на пустом месте.

    Несомненно, из любого правила есть исключения. И бывают ситуации, когда приходится считать в приложении.
    Но на вопрос в общем виде ответ будет совершенно однозначный. Не "может так, может сяк", а только в БД.
    Ответ написан
    9 комментариев
  • Как из контейнера docker получить ip и порт, на котором хостится этот контейнер на хостинге?

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

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Любой ноут от 4г оперативки., но лучше 8 или 16, далее не принципиально, если не будете в 3дэ или в видеомонтаж порно, а то и другое вместе.
    И да, не ставьте кали, как минимум до тех пор, пока не научитесь в линукс хоть немного!
    Во всех других дистибутивах есть все тоже самое, что и в кали, а вот геморроя на порядок для новичка меньше.
    У меня нонче 8 гиг, и хватает и на 3дэ и на порно, и на программировать.
    Ответ написан
    Комментировать
  • Ноутбук для инфобеза?

    @ewgenc
    На что деньги есть, то и берите. Нет там каких-то требований к железу. Там больше про умение думать и анализировать.
    Ответ написан
    Комментировать
  • Ноутбук для инфобеза?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ноутбук береться под задачи. Опиши что ты будешь на нем делать. Инфобез - это очень широкое понятие и оно может быть связано просто с чтением почты и документов. Опиши короче свой рабочий день. И какие единицы софта будут нужны.
    Ответ написан
    7 комментариев
  • Можно ли в структуре указать тип данных отличный от того что лежит в базе данных?

    Хорошей практикой является принимать данные из БД в структуру, которая соответствует по типам тому, что лежит в БД.

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

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Вопрос задан час назад. Быстрее было запустить заново))
    По теме: продолжить нельзя, надо заново качать.
    Ответ написан
    Комментировать
  • Как прикрепить в вопрос объёмный код?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Не прикреплять объёмный код, всё равно никто не будет вычитывать, здесь не фриланс. Вместо этого стоит прикрепить минимальный воспроизводимый пример. Часто при попытке создания такового потребность в вопросе вообще отпадает.
    Ответ написан
    Комментировать
  • Как под капотом реализованы интерфейсы в go?

    Когда создаешь переменную типа интерфейс (не пустой, а именованный интерфейс с методами), то под капотом это структура с двумя полями. Указатель на данные и указатель на таблицу виртуальных методов.

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Из всего изученного стало понятно, что процессы - это некие "контейнеры", содержащие id, статус, instruction pointer, значение регистров, открытые файлы и другие данные контекста.

    Вот уже по этому предложению видно, что понятно не стало. instruction pointer и значения регистров -- свои у каждого потока.

    какую роль в планировании играют процессы?

    Никакой.

    Для чего они нужны?

    Для учёта ресурсов и создания изолированных адресных пространств.

    Как планировщик ОС работает с процессами?

    Никак.

    Моя единственная догадка в том, что планировщик как бы "заглядывает" в каждый процесс и уже там работает с потоками.

    Не нужно ему никуда заглядывать. У него есть списки потоков находящихся в разных состояниях, а планирование заключается в перемещении потоков по этим спискам.
    Ответ написан
    9 комментариев
  • Можно ли учить Go первым языком?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Учить можно, а рассчитывать, что это облегчит вам вход - не стоит. Вакансий на Go сильно меньше, а требования к кандидатам выше.
    Ответ написан
    2 комментария
  • Можно ли запустить программу на языке C в операционной системе FreeDOS или MSDOS?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я думаю можно. Поищи такие компилляторы как Watcom C, Borland C.
    Они умеют генерить код для DOS. На ваткоме кажется была написана
    игра Doom for DOS.

    UPD +Линка www.openwatcom.org
    Ответ написан
    Комментировать
  • Как на самом деле работает параллелизм?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ну, книги Вам уже посоветовал @firedragon
    Я же хочу вкратце ответить на этот замечательный вопрос.
    Давайте разберемся с одним CPU без потоков...
    Когда процессоры были большими, а люди... В общем, на заре компухтеров был только один поток, и чтобы получить многозадачность, придумали ОС с вытеснением задач.
    Смысл в том, что когда завершается "программа", то запускается следующая в очереди (очередь с приоритетом). Задача работает до тех пор, пока не завершится.

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

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

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

    Ах, да, молодость процессоров - одно прерывание на все сразу :) И крутись, как хочешь :)
    Ответ написан
    1 комментарий
  • Как на самом деле работает параллелизм?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Хм тут вам помогут книги
    Эндрю Таненбаум
    Торвальдса
    Русиновича
    Helen Custer , David N Cutler
    David A. Solomon
    https://slideplayer.com/slide/6865915/

    Гляньте вот на эту презентацию https://www.hse.ru/data/2010/12/24/1223886397/%D0%...

    А вот тут прикладная часть
    https://basis.gnulinux.pro/ru/latest/basis/15/15._...

    В общем тема большая и гуглить вам много, но основных авторов я дал
    Ответ написан
    1 комментарий
  • Как лучше организовать очередь сообщений для их разбора по графику?

    @66demon666
    Сетевой админ, АТС-админ
    Выглядит как попытка сделать костыль, не в ту сторону смотрите
    Ответ написан
    1 комментарий
  • Как лучше организовать очередь сообщений для их разбора по графику?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Вроде как, такое кол-во запросов вполне по силам современным реактивным серверам. Для тех кто знает Java, пара полезных лекций по реактивщине: раз, два. К сожалению, не нашёл видео с замерами производительности.
    Вопрос можно ли обрабатывать запросы по мере их поступления это не вопрос производительности web-сервера, это вопрос как долго ты будет готовить данные для ответа. Если там нет долгих вычислений или запросов к другим сервисам - обрабатывай в реальном времени.
    Если есть - используй очередь. Какую именно - вопрос о количестве данных. Если одновременно обрабатываемые данные не помещаются в память - используй Kafka, Rabbit и т.п. Если помещаются - организуй FIFO буфер в памяти, коллекция Queue есть во всех нормальных языках (ну, или её можно сделать на основе связного списка).
    Присоединюсь к предыдущим ораторам: надо разбираться с дублями. Ты говоришь что для снижения нагрузки можно отвечать не на все запросы, а только на последний в серии. А как определить что только что прилетевший запрос - последний?
    На чём писать - на том что знаешь. А если не получится - искать программиста на Java :)
    Ответ написан
    Комментировать