• Почему в моем тесте go быстрее c?

    1. А почему оптимизации в GCC не включены?

    2. Код не эквивалентный. Зачем ты меряешь скорость printf?

    3. Почему всего 1 прогон? Может 3 секунды - входит в твою погрешность?
    Прогони хотябы по 100 раз и посчитай отклонение
    Ответ написан
  • Как посоветуете выполнять развёртывание web сервера Rust на VDS?

    Negezor
    @Negezor
    Senior Shaurma Developer
    Абсолютно так же как и остальными Node.JS, Go и другими языками в современном мире пакуется в контейнер и деплоится в прод. Есть несколько готовых вариантов, но все они будут придерживаться docker и docker compose:

    - ручное: Клонируем репозиторий, билдим на этом сервере docker compose build && docker compose up -d.
    - ручное: Локально билдим докер образ и пушим в регистр докера, на самой машине так же docker compose pull && docker compose up -d но уже только с получением образа из регистра докера в docker compose.
    - полу-автоматически: Пишем .sh скрипт который на git хуки или руками будет делать действия что и в одном из предыдущих вариантов, но без Workflow.
    - автоматически: Используем GitLab/Github Workflow или любой другой, на каждый релиз/коммит/PR запускаем Workflow с билдом, дальше пушит полученный контейнер в регистр, затем последним этапом будет подключение по SSH к серверу и применения условного
    cd /path/to && docker compose pull && docker compose up -d


    Я привёл самые простые варианты. Ещё есть варианты с k8s, ansible и другими вещами, но это не ваш случай судя по всему.
    Ответ написан
    9 комментариев
  • Как правильно и удобно читать данные из БД?

    1. async-await используй
    2. Используй какую-нибудь orm-ку (EF core, Dapper, linq2db). Многие из них как правило явно запрещают параллельные запросы в рамках одной транзакции.

    Но вроде чисто в теории sqlite разрешает конкурентное чтение (но не запись)
    Ответ написан
    Комментировать
  • Почему скорость чтения из файла резко деградирует?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    ну, раз никто не ответил, чуток лекции от меня

    во-первых как сказал ув. Василий Банников -тестировать надо только IO диска
    вот это вот детский сад, так нельзя
    Сначала я прогнал тест на Windows... я и не стал проверять на Windows неделю назад (работал в Docker).
    условия должны быть неизменны

    во-вторых, как говорю я - надо изучить что уже известно по этому вопросу:
    • вот тут товарищи тоже задаются года с 2018
    • а вот и кое-какой продукт

    да, это про IO а не файлы, но - с твоей задачей где-то рядом, если вообще не то что надо , но там много вопросов - ответов, которые расширят твое понимание - например, разное поведение в разных ОС

    в третьих, есть такая штука как кеш диска (а еще есть кеш у харварного рейда, но не всегда), да так что в этой вашей команде DD
    dd if=/tmp/test.img of=/dev/null bs=1M count=1024
    есть спец опция для отклбчения кеша, иначе получается космик цифры

    в четвертых - есть проблема храннеия мелких файлов и вообще файловой системы, тут приведу только два-три слова: самопис ( там почитаешь про суть проблемы), пром1 пром2

    в общем, задачка сильно посложнее чем просто погонять байты
    и, это конечно не мое дело - но "а зачем"? что ты будешь делать с полученной инфой?

    если все же "а зачем" осталось актуальным - я бы делал так:
    1) прогнал прогу для дисков из пример выше
    2) посмотрел бы вдумчиво это видео (увы, не про Rust, но докладчик знает толк в извращениях (с)), в том числе и ввиду твоих проблем с генерацией в памяти

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

    Не известно - не вспомню, чтобы это где-то афишировалось.

    Из-за того что там одни одимпиадники и любви Дурова к велосипедам - можно предположить, что решение у них своё, как раз чтобы обеспечивать геораспрпделённость и независимость от конкретного облачного провайдера
    Ответ написан
    Комментировать
  • Какую базу данных telegram использует?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    там самопис
    бывшие разрабы говорили на конференциях

    вообще база - это и есть Телеграм, их главное ноу-хау, ну, можеи, наряду с шардированием и балансером
    не клиенты с SSL же, в конце концов
    Ответ написан
    Комментировать
  • Как выложыть игру которую сделаю на UE5, бесплатно и как то заработать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    На торренты можно выложить или в свой телеграм канал. А потом ходи и надоедай всем со своей игрой :)
    Надеюсь там можно "грабить корованы".
    Ответ написан
    Комментировать
  • На сколько производительна связка react + django через axios и rest по сравнению с другими связками?

    Вы пытаетесь сравнить тёплое с мягким.

    rest - архитектурный подход.
    Axios - библиотека для отправки http запросов.
    Babel - транспайлер.
    Webpack - сборщик/бандлер.

    Каким боком тут сервер и питон я не понял, тк всё перечисленное работает в браузере.
    Ответ написан
    5 комментариев
  • Какие характеристики ноута для начинающего?

    Alexander_tt0
    @Alexander_tt0
    Интеграл в уме
    Не согласен ни с кем. Программировать можно даже на листочке. Мощный компьютер/ноутбук/макбук/наушники и прочее не нужны.
    1. Хватит экрана среднего размера, точнее любого больше чем у телефона.
    2. 4-8 ГБ оперативной памяти за глаза, если он только начинает (да, IDE по типу JetBrains он не поставит, но NotePad++ или Sublime Text ему хватит)
    3. Вот памяти берите побольше. Всякие курсы, документы, проекты будут занимать достаточное место.
    4. Вы не уточнили бюджет.
    5. Ищите комфортную клавиатуру, дороже 250 рублей, это важный факт.
    6. Процессор Intel Pentium/ Intel Core i3 (если есть возможность)

    P. S. Купите ребёнку в подарок кистевой эспандер, чтобы ручки не болели.
    Ответ написан
    Комментировать
  • Производительность решения SQL like vs join?

    @rPman
    Ты забыл третий вариант, самый быстрый и наиболее предпочтительный если общее количество опций не велико (сотни, например у mysql лимит 1024 колонок максимум) - каждая опция это своя колонка, пустое (null) значение будет значить отсутствие опции у записи.

    Недостаток подхода - если у объекта может быть несколько опций с одним именем, то такой подход не работает (но судя по всему это не твой случай).

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

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

    p.s. если говорить про твои варианты:
    * для 1 используй json сериализацию (опция=значение) в mysql для работы с такими данными есть соответствующие методы
    * для 2 постарайся вместо текстовых наименований опций использовать числовые идентификаторы, заведя соответствующий классификатор либо в базе в отдельной таблице либо в виде констант в коде.

    p.p.s. Ну и еще вариант, если тип значений опций - boolean (либо ограничен небольшим количеством значений, например цвет светофора 4 - выключен, красный, желтый, зеленый) то так же заводи для этих значений числовой эквивалент. В этом случае у тебя появляется еще бонус, упаковывать битовые значения (где количество вариантов 2^x и x это количество бит) и хранить в целочисленном поле сразу несколько (правда не все базы позволяют индексировать операции с битами).
    Ответ написан
    3 комментария
  • Как выбрать базу данных для проекта?

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

    Какую конкретно? Ту, которую лучше знаешь, если не можешь назвать конкретную причину, почему лучше изучить другую и взять другую. Например вот я беру postgres по-умолчанию, но вот у меня проект, который требует минимального жора ресурсов и наиболее простой инфраструктуры - тогда беру sqlite.
    Или наоборот - я понимаю, что у меня какие-то специфичные требования по консистентности и доступности, система у меня будет распределённая, а запросы у меня будут исключительно key-value, да и желательно ещё иметь возможность подписки на изменения каких-то ключей - тогда беру etcd.
    Ответ написан
    Комментировать
  • Как дать перманентный бан за мультиак на сайте?

    vabka
    @vabka Куратор тега Веб-разработка
    По ip точно не получится отследить. А раз тут разные браузеры - по фингерпринтингу тоже не выйдет.
    Так что только по признакам, которые пользователь сам по глупости укажет (одну и ту же почту например) или по поведению.
    Ответ написан
    8 комментариев
  • Поддерживают ли 13 версию next большинство библиотек готовых решений?

    szQocks
    @szQocks
    В среднем, насколько хороша поддержка next13 среди всех библиотек для react/next?
    - всё что работает на реакте, работает и на нексте, в том числе и на 13

    Насколько она готова для production разработки?
    - такое себе, баги есть но не критичные, если не умеешь свой ssr писать и если очень в нём нуждаешься, можешь занырнуть

    Если не 13, то какую версию лучше выбрать?
    - все версии проблемные, идеальных нет, последняя версия с app директорией является самой продвинутой и гибкой, если уж писать на нексте что-то, то писать на последнем 13+
    Ответ написан
    1 комментарий
  • Существует ли обобщение контроллеров?

    Сколько нужно, столько и пишется. В чём проблема?
    Вообще такое, чтобы абсолютно у всех сущностей была одинаковая логика и что сущности 1-в-1 маппятся на контроллеры - это редкий случай.

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

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

    В то время как этот термин может означать несколько разных понятий.
    1. Веб-сервер в вашем, широком понимании. Бэкенд целиком.
    2. Также веб-сервером может называться и сам компьютер, на котором все это крутится.
    3. В более узком смысле - это программа, которая принимает НТТР запросы. Вот это nginx и есть. Но сам по себе, без помощи других программ, он не может полностью представлять услуги веб-сервера. Например, в нем нет базы данных. Это, скорее, как правильно написали в соседнем ответе - такой прокси-сервер, который частично обрабатывает запросы сам (например к статическим файлам), а частично - проксирует запросы на другие программы.

    И вот на Го (или РНР, Питоне, JS, C#) как раз и пишется эта программа, которая, к примеру, обращается в БД, получает нужные данные и отдает их Nginx-у, который уже и возвращает их клиенту
    Ответ написан
    14 комментариев
  • В чем отличие ngnix от golang?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ну раз с фронта пересели, то аналогию понять должны: В чëм отличие Google Chrome от JavaScript?
    Ответ написан
    3 комментария
  • В чем отличие ngnix от golang?

    @deliro
    nginx — это реверс-прокси
    go — это яп.

    в чём вопрос-то?

    то как go может работать на ngnix?

    nginx проксирует запрос в сервер на го, который пишет программист. Цепочка проксей может быть сколько угодно большой. Ты можешь поставить nginx -> nginx -> caddy -> nginx -> gin, никто не запрещает.
    Ответ написан
    3 комментария
  • Может ли Раст полноценно заменить Джаву в сфере финансовых технологий?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    На сколько я знаю, на сегодняшний день у раста проблемы с интеграциями. Брошеные либы, зависимости от версии и платформы и вот это все... (я рад бы ошибаться, возможно, г-н Василий Банников меня поправит).
    В джаве же есть спринг-бут, который умеет интегрировться хоть с чертом лысым, при этом поддерживается, развивается, выходят новые версиии...
    В большом энтерпрайзе это важно.

    Ну и у джавы, нерешаемых проблем довольно мало, чтобы от нее отказываться. На рынке есть много персонала разной квалификации, JVM - прекрасная, развивающяяся платформа.
    На расте же писать никто не умеет (по сравнению с джавой), не понятно какие у технологии перспективы, есть вышеуказанные проблемы. Чем он может заинтересоваться большой бизнес?
    Производительностью? Так и jvm достаточно производительна, во-первых, а во вторых, есть куча приложений, для которых никакой хай-лоад и никакое лоу-латенси не предусмотренно...
    Ответ написан
  • Может ли Раст полноценно заменить Джаву в сфере финансовых технологий?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Раст же вроде планируется как замена С/С++ и является более низкоуровневым.
    Ему прямой путь в системное программирование. А финтех это немного другое
    Ответ написан
    4 комментария
  • Может ли Раст полноценно заменить Джаву в сфере финансовых технологий?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Нет. У них разные области применения. Java проектировалась именно как предельно простой и лёгкий для восприятия язык, максимально препятствующий выстрелу в ногу. Никогда этим параметрам не будет соответствовать язык одновременно пригодный к системному программированию. И это не учитывая тот фактор, что инвестиции в переписывание всего финтеха с Java на Rust потребуются больше, чем планетарный ВВП.
    Ответ написан
    4 комментария