• Как писать микросервисную архитектуру?

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

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

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

    Eugene-Usachev
    @Eugene-Usachev
    struct User {
        id int
        name string
        level int
        currentExp int
        maxExp int
    }
    
    var user User
    
    row := ... // Ваш запрос
    if err := row.Scan(&user.id, &user.name, &user.level, &user.currentExp, &user.maxExp); err != nil {
        // обработайте ошибку
    }
    
    // тут поля у user заполнены


    Вы не приложили структуру, поэтому мне пришлось её выдумать. Используйте метод Scan у row. Он принимает ссылки на переменные для вставки значений. Значения вставляет в том порядке, в котором они возвращаются, за этим нужно следить.

    Также уберите картинку или спрячьте её в спойлер. Я уже не помню номер правила, но Вы его нарушаете. У некоторых людей слабый интернет.
    Ответ написан
    Комментировать
  • Как вытащить поля из запроса в pgx?

    https://pkg.go.dev/github.com/jackc/pgx
    Самый первый пример из верха документации
    var name string
    var weight int64
    err := conn.QueryRow("select name, weight from widgets where id=$1", 42).Scan(&name, &weight)
    if err != nil {
        return err
    }


    Только поля замените на свои

    В пятой версии добавились еще другие способы https://pkg.go.dev/github.com/jackc/pgx/v5#hdr-Que...
    Ответ написан
    Комментировать
  • Если в glang перемнная передана в func, то она там живёт сомостоятельно или в пямяти 1 адрес?

    В Го по-умолчанию переменные передаются по значению (то есть, копируются на стеке), но есть нюансы.

    1. Мапы и каналы всегда передаются по указателю.
    2. У слайса на стеке только дескриптор, так что он копируется, но данные, на которые слайс указывал, остаются там же в памяти, где и были.
    3. Если вы явно передаете указатель, то тут все очевидно.
    4. У интерфейсов копируется дескриптор, но т.к. в дескрипторе указатель, то тут все как со слайсами.
    Ответ написан
    Комментировать
  • Как компилировать общие файлы двух бинарников один раз?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Из компилируешь a.cpp и b.cpp, а затем просто используешь их объектные файлы

    пример на Makefile

    a.o: a.cpp
         gcc -c a.cpp -o a.o
    
    b.o: b.cpp
         gcc -c b.cpp -o b.o
    
    tests.exe: a.o b.o
         gcc a.o b.o test_main.cpp -o tests.exe
    
    app.exe: a.o b.o
         gcc a.o b.o app_main.cpp -o app_main.exe


    как-то так

    UPD: если про CMake, то используй OBJECT библиотеку

    add_library(common OBJECT a.cpp b.cpp)
    add_executable(tests PRIVATE tests_main.cpp $<TARGET_OBJECTS:common>)
    add_executable(app PRIVATE app_main.cpp $<TARGET_OBJECTS:common>)
    Ответ написан
    Комментировать
  • Сколько вообще целых и дробных чисел с неповторяющимися цифрами существует?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Давайте прикинем.
    Для дробных чисел, имеющих хоть один значащий разряд перед запятой и один после мы должны выбрать первую цифру из девяти (ноль исключаем), последнюю из восьми (исключаем уже выбранную и ноль), третью из восьми оставшихся, четвёртую из семи и т.д. Кроме того, точка может стоять в одной из n-1 позиций, где n - количество цифр.
    Получаем:
    Чисел из 10 цифр: 9 * 8 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 * 9 = 26'127'360
    Чисел из 9 цифр: 9 * 8 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 8 = 23'224'320
    Чисел из 8 цифр: 9 * 8 * 8 * 7 * 6 * 5 * 4 * 3 * 7 = 10'160'640
    ...
    Чисел из 2 цифр: 9 * 8 * 1 = 72
    Просуммировав, получим 63'130'248
    Добавим сюда числа вида 0.xxx. Поскольку ноль фиксирован, первую цифру после него мы можем выбрать из девяти, вторую из восьми оставшихся и так далее.
    Чисел из 10 цифр: 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 362'880
    Чисел из 9 цифр: 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 = 362'880
    Чисел из 8 цифр: 9 * 8 * 7 * 6 * 5 * 4 * 3 = 181'440
    ...
    Чисел из 2 цифр: 9
    Сумма 986'409
    Теперь возьмём целые числа. В первой позиции не может быть нуля, поэтому первую цифру выбираем из девяти. Вторую из девяти оставшихся, третью из восьми и т.д.
    Чисел из 10 цифр: 9 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 3'265'920
    Чисел из 9 цифр: 9 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 = 3'265'920
    Чисел из 8 цифр: 9 * 9 * 8 * 7 * 6 * 5 * 4 * 3 = 1'632'960
    ...
    Чисел из 2 цифр: 9 * 9 = 81
    Чисел из 1 цифры: 9
    Сумма 8'877'690
    Сложим всё, добавив ноль, получим 72'994'348.
    Ответ написан
    5 комментариев
  • Какие есть нейронные сети которые можно обучить на исходном коде?

    @rPman
    Ни одна gpt не сможет полноценно решать такую задачу
    скормить исходники движка Unreal Engine

    потому что это НОВАЯ информация, ее не получится добавить в виде обучающей выборки и finetune. Так как это заставит модель больше галлюцинировать.
    В теории это возможно
    но потребуется переобучение (пусть и с использованием уже pretrained модели на старте) на данных, на которых эту сеть обучали! это наиважнейшее условие, с некоторой эффективностью можно проредить исходные данные, буквально на днях читал об исследованиях, как можно оценить, какие данные можно использовать для дообучения а какие нет.

    Стоимость этого будет сравнима со стоимостью полного обучения - миллионы баксов, без преувеличения!

    После этого потребуется еще доводка с помощью алгоритмов RLHF (нужны серии специально подобранных вопросов, так же это очень связано с тем какая была обучающая выборка, иначе модель будет низкого уровня и способна только для задач completion и очень слабо для chat, а тебе нужны instruction

    GPT умеет легко обучаться только на данных, которые влезают в контекстное окно. У лучшей открытой сетки llama3-70b это 8к токенов (обычно это +-1 файл исходников) да и у других от силы 16к и 32к но они слабые и способности запоминать данные во всем окне очень слабые.
    Если что, советую mixtral 8x22b, требует 85гб для 4бит квантизации (в этом случае незначительно теряется качество) или лучше 96гб для 5битной. 64к размер контекста, работает несколько токенов в секунду на процессоре, т.е. будешь ждать но не критично долго

    Но это не значит что совсем нельзя. Привожу пример сессии моей беседы с бесплатным anthropic claude (у них большое окно контекста, влезает несколько исходных файлов), скармливал исходники приложения на c# для поиска дубликатов видео.

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

    Дополнительно в процессе беседы дублирую информацию из основных вопросов, либо задаю наводящие вопросы, если ответ получил не полный

    Сеть поняла написанный код, как он работает и смогла ответить на нетривиальные вопросы.

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

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

    Для новых вопросов начинай новую сессию, заново заливая файлы. Чем больше файлов в контексте тем хуже сеть их понимает.

    p.s. 'точно и без ошибок' не будет!
    Ответ написан
    Комментировать
  • Какие есть оптимальные способы хранения и передачи изображений из MongoDB?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Да, есть: хранить сами изображения не БД, а в отдельном файловом хранилище с внешним доступом по ссылке-идентификатору. В самой же БД хранить только идентификаторы изображений в хранилище. Это стандартная практика работы с файлами и БД.
    Ответ написан
    Комментировать
  • Адрес сайта с нормальными гайдами по алгоритмам?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Есть русский сайт e-maxx.ru/algo
    Есть сборник кучи алгоритмов, но там мало объяснений: https://rosettacode.org/wiki/Rosetta_Code
    Ответ написан
    2 комментария
  • Как удалить записи с базы используя limit?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    PostgreSQL?
    DELETE FROM order_clients
      WHERE ctid IN (
        SELECT DISTINCT o.ctid 
          FROM order_clients AS o
          JOIN order_clients AS t
            ON t.client_id = o.client_id AND t.order_id = o.order_id
              AND t.linked_at < o.linked_at
          LIMIT 1000
      );
    Ответ написан
    3 комментария
  • Как добавить количество wc -l в конец строки в виде значения?

    @null_object
    echo -n "текущее количество нескрытых файлов и директорий в /usr/bin равно:" > results.txt | ls /usr/bin  | wc -l >>  results.txt
    Ответ написан
    3 комментария
  • Как привязать домашнюю папку к пользователю?

    vabka
    @vabka
    Токсичный шарпист
    usermod -d /home/B A
    Ответ написан
    Комментировать
  • Всегда ли нужно использовать последнюю версию JDK?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Половина всех проектов в мире сидит на Java 8 И. это по оптимистичным оценкам, может быть и больше. До сих пор есть места, где используется Java 1.4. Но это абсолютно не проблема, у Java отличная обратная совместимость, и за годы прошедшие с выхода восьмёрки язык существенно не менялся.
    Ответ написан
    Комментировать
  • Что означает запись [4]byte в языке Go?

    @calculator212
    а как понять, то что перед типом указано - [4] ?
    В го конкретно в данном случае это будет частью типа, по сути это означает, что массив (именно массив а не слайс) - это отдельный тип, который представляет из себя последовательность из 4 элементов.
    Массив считается отдельным типом сам по себе, т.е. [4]byte, [3]byte, []byte это три разных типа.
    Ответ написан
    1 комментарий
  • Как оптимизировать код с++ с рекурсией в времени?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Можно попробовать сделать микрооптимизации: функция F реализуется одним циклом (делите, пока делится на 10, потом берите последнюю цифру). S тоже можно считать циклом, а не рекурсией.

    Но скорее всего, этого не хватит. Это решение за O(q*log(q)). Ограничения на числа в условии не видно, но если там что-то порядка 2000000000, то ваша программа будет считать несколько секунд.

    Надо хорошенько подумать и применить математическую хитрость. Надо как-то считать числа в интервале p...q пачками, а не каждое отдельно.

    Что такое функция F? Это последняя ненулевая цифра в числе. Давайте вместо суммы значений F счиатать, сколько чисел из интервала дадут вот такое вот значение? Ну просто по последней цифре сложно сказать, сколько там чисел, а вот если еще зафиксировать количество пропущенных в конце нулей, то уже становится понятно, как подсчитать это. Вот допустим, вы считаете последнюю цифру d и там должно быть 3 нуля. Тогда вы ищети числа вида "xxxd000". Или их можно представить в виде d*1000+x*10000 для произвольного неотрицательного x. И вот вам надо подсчитать сколько таких чисел в интервале [p,q]. Ну решите 2 уравнения: d*1000+x*10000 >= p и d*1000+x*10000 <= q

    Таким образом вы за несколько арифметических действий и одну проверку можете подсчитать, сколько чисел вида "xxxd000" будут в интервале. Осталось циклом перебрать d от 1 до 9 и количество нулей от 0 до длины q. И вот у вас решение за O(log(q)).

    Edit:
    Вот код быстрого решения:
    int S(int p, int q) {
      int sum = 0;
      for (int d = 1; d < 10; ++d) {
        for (int tens = 1; tens <= q; tens *= 10) {
          int left = p - d*tens;
          if (left < 0) left = 0;
          else left = (left + 10*tens-1)/(10*tens);
          int right = q - d*tens;
          if (right < 0) right = -1;
          else right /= 10*tens;
          sum += d*(right - left + 1);      
         }
      }
      return sum;
    }
    Ответ написан
  • Как вывести значение указателя без иннициализации?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    В настройках проекта отключи проверку SDL - https://stackoverflow.com/a/38445156/14109140
    Ответ написан
    Комментировать
  • Как в Powershell загрузить изображение в переменную и освободить файл?

    @MaxKozlov Куратор тега PowerShell
    Используйте FromStream
    $content = Get-Content -Path "C:\temp\logo.jpg" -Encoding byte
    $ms = New-Object System.IO.MemoryStream
    $ms.Write($content)
    $img = [System.Drawing.Image]::FromStream($ms)
    Ответ написан
    2 комментария
  • Какое ядро использует Debian?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В оригинальном ядре linux есть несвободные прошивка и блобы

    Это неверное заявление. Ядро Торвальдса (вы же его называете "оригинальным"?) доступно в виде исходников под набором свободных лицензий. Но часть этих исходников -- это драйвера устройств, для работы которых требуется firmware, возможно проприетарное. Если собрать такое ядро, то оно будет полностью свободным, но ряд устройств для работы потребует проприетарных блобов, не являющихся частью ядра. Несвободные компоненты в принципе не могут стать частью этого ядра из-за конфликта лицензий.

    какое ядро всё-таки использует Debian ?

    Можно тупо взять и посмотреть, например для debian 12: https://packages.debian.org/source/bookworm/linux
    Внизу страницы есть ссылки на архив с исходниками ядра (это копия ядра из ветки stable) и на архив исходников debian-пакета, а также ссылка на git последнего.
    Ответ написан
    Комментировать
  • Как сделать на PHP редирект на другой сервер с сохранением домена?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    никак !!! PHP здесь не нужен.
    https://habr.com/ru/companies/cloud_mts/articles/7...
    например как это делается через DNS и потом глубже погружаетесь в тему

    https://habr.com/ru/companies/first/articles/683870/
    или через nginx раскидывать на несколько бакендов
    Ответ написан
    Комментировать