Задать вопрос
  • Есть ли статьи, которые приводят наглядные примеры того, как код на rust превосходит код на других языках?

    vabka
    @vabka Куратор тега Rust

    Особенно там, где был использован язык Си или С++

    (если исключить memory safety и fearless concurrency)
    1. Хороших плюсовиков найти всё сложнее, ибо молодые разработчики часто хотят что-то более современное/простое/приятное.
    2. Переход с какого-нибудь более высокоуровнего языка на Rust гораздо легче, чем на C++
    3. DX у Rust на порядо лучше.
    4. Код на Rust на порядок более выразительный, чем код на Си

    За счёт этого поддержка кодовой базы на Rust заметно дешевле выходит

    Например вот что Тинькофф пишет:

    Наш Процессинговый Центр занимается разработкой финансовых систем, критичных к даунтайму и времени обработки. Изначально мы делали все свои продукты либо на чистом Си, либо на плюсах (C++14), однако пару лет назад мы переписали большой кусок нашего бэкенда на Rust, и нам настолько понравилось, что теперь все наши новые процессинговые сервисы пишутся на нём.



    Мне бы хотелось видеть какое-то сравнение, что вот так стало сильно лучше и безопаснее, а вот было так написано изначально на оригинальном языке

    Это можно будет определить только если ведётся статистика по багам и они классифицируются по причинам возникновения, но такую статистику ведут не все.
    В среднем статистика показывает, что багов связанных с неправильной работой с памятью в проектах на Rust на порядки меньше, чем в проектах на C++.


    ну тут все-равно unsafe

    В проектах на Rust он явный и от него можно избавиться, завернув в безопасную обёртку, которая будет гарантировать корректную работу с памятью и ffi.
    В проектах на C++ у тебя по факту всё является unsafe.

    ну, нам еще нужен подсчет ссылок

    В плюсах тоже активно пользуются подсчётом ссылок и всякими умными указателями, если по коду не очевидно, когда можно будет освободить память
    Ответ написан
    6 комментариев
  • Какие необходимы документы для полноценного функционирования сайта?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    152 фз. Европейская и США отмазки того же типа.
    Договор офферты.
    Пользовательское соглашение.

    Отдельно документы для каждого вида деятельности (то есть для продавца, сервиса оценки и так далее)
    Ответ написан
    Комментировать
  • Является ли музыкальный плеер на сайте нарушением авторских прав?

    GavriKos
    @GavriKos
    Сам плеер - нет, не нарушает права. Пока через него не начнут распространять нелицензионный контент. Распространяйте только лицензионный (с открытой лицензией) контент и не будет проблем.

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

    @rPman
    c открытой лицензией

    могла отвечать на вопросы

    из самых крупных открытых мультимодальных языковых моделей (именно они проявили способности близкие к интеллекту), что мне известна, это bloom, размер в 13b даже можно на потребительском железе запустить (следующий размер 170B и для его запуска придется городить кластер с десятками секунд на токен) и ее качество в разы (десятки процентов) ниже llama, а у llama хуже chatgpt35 (да на считанные проценты), и тут такое дело что каждый следующий процент - это почти вселенная. Этой моделью я не игрался, но как я понял она лучшая из открытых мультимодальных (бери с префиксом -mt, они мультиязычные).

    Еще есть facebook/opt

    Оцени модели на самом сложном бенчмарке MMLU, opt66b - 35, bloom175b - 39, llama65b - 68, gpt35 - 70, gpt4 - 86

    Настоятельно рекомендую освоить prompt/p-tuning, lora finetuning и т.п. (например peft) под свою задачу, именно таким образом у модели повышают качество работы на десяток другой процентов (сам я еще не дошел до практического применения, только изучаю). На худой конец используй OneShot/MultiShot (когда к запросу спереди добавляется один или несколько примеров вопрос-ответ, что сильно улучшает ответ но увеличивает нагрузку так как запрос увеличивается кратно).
    spoiler
    Само собой llama - лучшее из доступных решений, но не легальное. Бери минимум 30B лучше 65b, можешь взять оттененную версию от OpenAssistent, 8bit или 4bit quantization вполне себе здраво работает на процессоре с помощью llama.cpp, причем на столько что юзабилити его выше чем штатный питоновский код от huggingface, который мало того что заточен под серверные видеокарты, так еще и не оптимизирован (чего стоит чтение файла с моделью в кеш ОС вместо постоянной загрузки копированием, утилита запускается моментально и не нужно городить сервер с api как это надо в случае с питоном). 6-ядерный i5 12600 пережевывает например 1784b русский текст, а точнее 1981b запрос определить категорию - 239 сек (616.46 ms per token) + ответ в 31токен 32 сек (1055.86 ms per run), требуя для работы 47gb ram

    Что лучше openassistent или оригинальная llama сказать сложно, ассистент затюнен на вопрос ответ, т.е. как инструмент общения он предпочтителен, а у llama больше мусора в ответе, но у меня есть ощущение что finetuning ломает модель, я почти уверен что если ее прогнать по тестам, по которым прогоняли llama, значения будут хуже.
    Ответ написан
    4 комментария
  • Как сделать переход по goto в пустую строку в C#?

    Потому что label должен стоять около какого-нибудь выражения.
    Если выражения нет - это на самом деле return, а не goto
    Ответ написан
    Комментировать
  • Куда можно выложить свою первую игру на Unity?

    WNeZRoS
    @WNeZRoS
    itch.io — онлайн-сервис для размещения, продажи и загрузки инди-игр. Сервис запущен в марте 2013 года и на апрель 2021 года насчитывает более 200 тысяч игр.

    Выложить можно любую игру, но шансов что её скачают больше 10 человек за месяц без дополнительного распространения не много. Чтобы точно нашлись люди поигравшие в игру, и, возможно, даже оставившие отзыв, можно участвовать в геймджемах на том же itch.io.
    Ответ написан
    1 комментарий
  • Куда можно выложить свою первую игру на Unity?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    На ваш сайт. Ну а потом прогоните ее по игровым сообществам. Или зарегистрируйтесь на Steam
    Ответ написан
    1 комментарий
  • Как сделать, чтобы AI меньше фантазировал в своих ответах?

    @rPman
    Известные большие языковые модели не обучались (я не слышал чтобы кто то это делал) с учетом достоверности результата. Т.е. единственное что они умеют делать - это притворяться человеком, писать правильные тексты, как если бы их писал человек. Потому что во время обучения, единственным критерием правильности был текст из обучающего примера. А туда попадает все что угодно. Странно то, что они стали проявлять дополнительные свойства, очень похожие на интеллект...

    А еще для генерации текста алгоритмы обычно используют вероятностную модель (есть разные алгоритмы, ищи параметры типа температура top_k, или еще вот алгоритм - mirostat. Весь смысл в том что если поставить температуру 0 то сеть будет выбирать наилучший следующий токен, а иначе по какому то алгоритму сможет перескакивать на альтернативы

    Чтобы компьютер вместе с текстом тебе выдавал ссылки и вообще какие то корректные данные, необходимо чтобы кто то заранее тебе проиндексировал (классическая база данных) интернет, а вот поиск по этой базе завернул бы через ИИ, чтобы поиск по ней производился не поиском по тексту а по смыслу. Чтобы что то скачать себе на комп и поиграть я такого не видел, на гитхабе есть проекты на основе как chatgpt так и llama, но как я понимаю все это на зачаточном уровне.

    p.s. посмотри perplexity.ai
    а еще посмотри майкрософтовского чат бота (работает только не из россии, только в браузере edge)
    Ответ написан
    2 комментария
  • Чем не угодили 2G и 3G?

    Lapita12
    @Lapita12
    Тесты, тесты?
    2G и 3G устарели, поэтому многие страны убирают их в пользу более современных стандартов связи, например, 4G и 5G. В США 2G и 3G уже полностью отключены, что было связано с освобождением дополнительного спектра радиочастот для более производительной сети. Вероятность отключения 2G и 3G в других странах зависит от развития сетевых технологий и инвестиций в сети.
    Ответ написан
    1 комментарий
  • Как правильно продублировать яндекс карту?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    function init(id) {
      // ...
      let myMap = new ymaps.Map(id, {
          center: [55.921828130219836, 92.31378245197494],
          zoom: 10,
          controls: []
      }, {
      // ...
      return myMap;
    }
    
    ymaps.ready(function(){
      let map1 = init('map1');
      let map2 = init('map2');
    });
    Ответ написан
    Комментировать
  • Открытие новых способностей персонажем в 2д игре на Юнити?

    GavriKos
    @GavriKos Куратор тега Unity
    Как лучше добавлять умения персонажу после подбора скила: вешать на персонажа или активировать уже существующий скрипт в иерархии?


    Лучше вообще не наследовать абилити от MonoBehaviour - делайте систему способностей простыми классами.
    Ответ написан
    4 комментария
  • Снижение разрешения 3D модели unity?

    GavriKos
    @GavriKos Куратор тега Unity
    Идеально - НЕ ипспользовать текст в текстурах вообще, а рисовать поверх объекта в нужных местах текст при помощи той же TMPro.

    Если не вариант - играться с антиалиасингом. Но в любом случае тут чем то придется жертвовать
    Ответ написан
    3 комментария
  • Unity или Unreal Engine для мобильной разработки?

    Lapita12
    @Lapita12
    Тесты, тесты?
    Для мобильных игр лучше всего использувать Unity, потому что это наиболее распространенная библиотека, поддерживающая множество платформ и позволяет легко портировать проекты. Кроме того, Unity имеет широкий спектр инструментов и компонентов для разработки игр, включая графический движок, редактор уровней, систему управления играбельным процессом и многое другое.
    Unity также обладает высокой производительностью благодаря оптимизированному трассированию лучей и использованию multiprocessing, что делает её идеальной для разработки сложных трехмерных игр.
    Однако, если ваш проект фокусируется только на двухмерной графике, то Unreal Engine может показаться излишним роскошью, учитывая, что он основан на трёхмерном движке.
    Важно отметить, что для решения такого вопроса необходимо провести собственные эксперименты, чтобы определить, какая библиотека лучше подходит для вашего конкретного проекта.
    Ответ написан
    2 комментария
  • Что значит цель обработки пд достигнута?

    Цель - это то что ты сам, как оператор ПД, задекларировал в своём соглашении на обработку ПД.
    Это то, зачем тебе вообще эти ПД нужны.

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

    @Nikolae
    Существует несколько способов смешивания множества текстур в шейдерах. Вот некоторые из них:

    1. Миксование текстур на основе градиента: Вы можете создать градиентную текстуру, которая будет определять, какие части вашей модели должны быть смешаны с определенными текстурами. Это может быть сделано с помощью функции smoothstep, которая позволяет создавать градиенты между двумя точками. Затем, используя значения из этой текстуры, вы можете миксовать разные текстуры с помощью функции mix.

    2. Смешивание текстур на основе шума: Вы можете использовать шум для смешивания разных текстур в зависимости от расстояния от центра вашей модели. Это может создать эффект размытия границ между текстурами. Для этого можно использовать шум Перлина или другой алгоритм шума, а затем использовать его значения для миксования текстур.

    3. Смешивание текстур с помощью альфа-канала: Вы можете использовать альфа-канал текстур для создания маски смешивания между текстурами. Альфа-канал может быть использован для определения, какие части текстуры должны быть прозрачными, а какие - непрозрачными. Затем вы можете использовать значение альфа-канала для миксования текстур.

    4. Смешивание текстур на основе расстояния: Если вы хотите создать эффект наложения текстур на большое расстояние, то можете использовать функцию distance для определения расстояния от центра вашей модели. Затем вы можете использовать это расстояние для определения, какие текстуры должны быть наложены на модель.

    5. Смешивание текстур на основе наклона: Если вы хотите создать эффект наложения текстур на уклоненную поверхность, то можете использовать нормали для определения угла наклона. Затем вы можете использовать этот угол для определения, какие текстуры должны быть наложены на модель.


    Некоторые из этих методов могут быть объединены для создания более сложных эффектов смешивания текстур.
    Ответ написан
    5 комментариев
  • Корректно ли в C++ называть стек статической памятью?

    Vindicar
    @Vindicar
    RTFM!
    Кирилл Гусарев, по вашему определению статическая память - это секция инициализированных данных exeшника.
    ЕМНИП, C++ в эту секцию кладёт инициализирвоанные глобальные переменные. Насчёт статических локальных не уверен.

    Вообще программа имеет доступ к четырём видам памяти:
    - секция инициализированных данных выделяется загрузчиком, её содержимое загружается из EXE файла, где оно хранится как образ.
    - секция неинициализированных данных выделяется загрузчиком, её содержимое забивается нулями. В EXE файле хранится только её размер.
    - Насчёт стека не уверен. Вроде со стеком главного потока исполнения то же самое, его размер прописан в экзешнике. Но кто его выделяет - загрузчик или рантайм языка... я подозреваю, что загрузчик. Стеки дополнительных потоков выделяются по запросу программы.
    - куча выделяется по ходу работы программы. Менджер кучи Windows создаёт одну кучу для процесса, дальнейшее управление кучами - дело самого процесса.

    Всё это - только для виндовых EXE. Про линукс я не в курсе.

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

    GavriKos
    @GavriKos Куратор тега Unity
    Если +- известно какое количество надо в итоге получить (или когда уже история не важна) - то.
    Делаешь массив от 1 до N, перемешиваешь его случайно, и собсно дальше берешь последовательно из него числа.
    Да, в какой то момент массив кончится - но возможно это подойдет по условию. Зато у тебя 100% известно время на поиск нового случайного числа - оно постоянно и не зависит ни от чего )
    Ответ написан
    Комментировать
  • Что не так вроде программа написана верно но при запуске просто экран программы без рисунка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    ; инициализация библиотеки Turbo Graphics
        MOV AH, 00h
        INT 10h

    Написано "инициализация библиотеки", а выглядит как просто вызов функции прерывания int 10h BIOS set video mode. Если это и правда инициализация библиотеки, то она (библиотека) должна уже быть загружена на этот момент. Дальше ты вызываешь другие нестандартные функции этого же прерывания, в отсутствие библиотеки они делают совсем не то, что написано в комментариях.

    ; завершение работы с графикой
        MOV AH, 00h
        INT 10h

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

    @furashcka
    Наверняка у вас есть список url из хлебных крошек, если нет то на крайний случай их можно вытащить из html, их можно представить в виде массива: [`site.com/catalog`, `site.com/catalog/sub-catalog`, `site.com/catalog/sub-catalog/item`], имея данный массив находим текущий index по location.href
    let breadcrumbs = [`site.com/catalog`, `site.com/catalog/sub-catalog`, `site.com/catalog/sub-catalog/item`];
    let indexCurrent = breadcrumbs.indexOf(location.href);
    let indexPrev = Math.max(0, indexCurrent - 1);
    let prevURL = breadcrumbs[indexPrev];
    
    location.href = prevURL;


    Как видите вам понадобится массив с url, по которому вы можете возвращаться назад, за счёт currentIndex - 1, пока не дойдёте до главной страницы, у которой обычно index = 0
    Ответ написан
    Комментировать