• С чего начать обучение prompt engineering?

    @ivanuhka
    Для начала обучения prompt engineering следует определить задачу, которую вы хотите решить. Это может быть задача классификации, генерации текста, извлечения информации из текста и т. д.

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

    После этого вам нужно будет настроить некоторые параметры модели, такие как количество токенов в выходном тексте, количество шагов генерации и т. д.

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

    Обратите внимание, что prompt engineering - это процесс, требующий опыта и навыков, поэтому может потребоваться обучение в образовательных учреждениях Москвы, чтобы добиться хороших результатов.

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

    При запуске ide, сначала нужно собрать: shift + f10, следом каждый раз мне нужно нажимать ctrl + f5.

    В гугле file watcher - там я могу указать только путь до .exe файла, это не то.

    dotnet watch run есть и hot reload.
    https://www.jetbrains.com/help/rider/Hot_Reload.html
    https://blog.jetbrains.com/dotnet/2022/09/12/jetbr...
    https://learn.microsoft.com/en-us/dotnet/core/tool...
    Ответ написан
    1 комментарий
  • Что же такое Scoped жизненный цикл в ASP.NET?

    И как эти scoped объеты существуют в background сервисах?

    Никак. В рамках IHostedService никакой скоуп не создаётся - надо руками его создавать.
    Как подтверждение - при попытке зарезолвить Scoped - будет ошибка

    "Создается один объект при его запросе в рамках некой области, например http запроса, и в последующем выдается уже созданный в рамках этой области". Часто получал утверждение что неправильно, и непонятно что за область

    Странные челы какие-то. Вроде вполне корректный ответ, хоть и странно сформулированный.


    Scoped
    For web applications, a scoped lifetime indicates that services are created once per client request (connection). Register scoped services with AddScoped.

    In apps that process requests, scoped services are disposed at the end of the request.

    When using Entity Framework Core, the AddDbContext extension method registers DbContext types with a scoped lifetime by default.

    Note

    Do not resolve a scoped service from a singleton and be careful not to do so indirectly, for example, through a transient service. It may cause the service to have incorrect state when processing subsequent requests. It's fine to:

    • Resolve a singleton service from a scoped or transient service.
    • Resolve a scoped service from another scoped or transient service.

    By default, in the development environment, resolving a service from another service with a longer lifetime throws an exception. For more information, see Scope validation.
    Ответ написан
    Комментировать
  • Почему 0,5 округляется до чётного числа?

    Это банковское округление называется.
    Нужно оно для повышения точности при обработке большого количества околослучайных чисел (когда количество чётных и нечётных +0.5 примерно равно)

    Если тебе такое поведение не нужно, то тогда просто передавай третий аргумент - там можно выбрать, как стоит округлять в такой ситуации.
    Ответ написан
    1 комментарий
  • Почему 0,5 округляется до чётного числа?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Округляет до четного, потому что так написано в документации к функции:

    The integer nearest a. If the fractional component of a is halfway between two integers, one of which is even and the other odd, then the even number is returned. Note that this method returns a Double instead of an integral type.


    Если нужное другое округление, то есть перегрузки:
    Math.Round(4.5, MidpointRounding.ToEven);
    Math.Round(4.5, MidpointRounding.ToZero);
    Math.Round(4.5, MidpointRounding.AwayFromZero);
    Math.Round(4.5, MidpointRounding.ToNegativeInfinity);
    Math.Round(4.5, MidpointRounding.ToPositiveInfinity);
    Ответ написан
    2 комментария
  • Какие есть бинарный сериализаторы для React?

    cbor? https://www.npmjs.com/package/cbor
    bson? https://www.npmjs.com/package/bson
    protobuf? https://www.npmjs.com/package/protobufjs

    А может всё-таки msgpack? Почему он не подходит?
    Ответ написан
    Комментировать
  • Какие есть бинарный сериализаторы для React?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Protobuf - https://github.com/protobufjs/protobuf.js
    Avro - https://github.com/mtth/avsc
    Parquet - https://github.com/ironSource/parquetjs (проект давно не обновлялся)
    Thrift - https://thrift.apache.org/tutorial/js

    P.S. React или нет без разницы - тут js главное
    Ответ написан
    Комментировать
  • В чём разница между DI, DI-контейнером и сервис-локатором?

    delphinpro
    @delphinpro
    frontend developer
    DI - Внедрение зависимостей.
    DI-container – хранилище зависимостей
    Service Locator - механизм, обеспечивающий неявное извлечение "зависимости" (то есть некоторого объекта) из хранилища зависимостей.
    Ответ написан
    1 комментарий
  • В чём разница между DI, DI-контейнером и сервис-локатором?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    DI, Dependecy Injection - это сам процесс внедрения зависимостей (например, когда ты зависимости через конструктор получаешь)
    Пример:
    class User
    {
        IService _service;
        
        // DI
        User(IService service)
        {
              _service = service;
        }
    }


    DI-Container - это специальный контейнер, который может необходимую зависимость предоставить. Сначала ты в него регистрируешь все зависимости, а потом вызываешь метод по типу .getService("UserService") и он сам понимает какой сервис ты хочешь, какая у него реализация и как его создать (возможно для него нужны другие зависимости)
    Пример
    // DI-контейнер
    var container = new DependencyContainer();
    container.Register(typeof(IService), new ConcreteService());
    
    var service = container.Get<IService>();


    Сервис-локатор - это (анти) паттерн, когда, грубо говоря, у тебя есть статический класс этого DI контейнера, к которому обращаются все сервисы. Т.е. вместо того, чтобы использовать тот же самый DI или передавать интерфейс DI контейнера они напрямую обращаются к конкретному DI-контейнеру. Так делать не надо - будут трудности с тестированием, обновлением и всем сопутствующим
    Пример
    // Сервис-локатор
    class ServiceRegistry
    {
         IService Service;
         static IService GetService()
         {
               return Service;
         }
    }
    
    class User
    {
         void DoSomething()
         {
               var service = ServiceRegistry.GetService();
               service.MakeStuff();
         }
    }
    Ответ написан
    2 комментария
  • Есть ли хороший курс/книга про использование паттерна page object на C#?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Курс/книга ради одного паттерна - вряд ли можно найти хорошие.
    Page Object паттерн из GUI тестирования, поэтому искать там. Рекомендую курс от Selenium - https://www.seleniumtraining.com/selenium-c-sharp-...
    Там как раз есть 6 часовой туториал с проектом по Page Object, но он в платной подписке.

    Также по тестированию на C# есть книга Selenium with C# - в 12 главе описывается Page Object

    Есть статья на хабре, но думаю она только описывает этот паттерн, только для знакомства
    Ответ написан
    1 комментарий
  • Фреймворки для кросс-платформенной разработки. Практикуют ли переписывание под разные платформы?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Windows Forms - это только Windows, т.к. он построен вокруг нативных системных вызовов Windows. Вообще-то я однажды писал Windows Forms для Linux, но там очень много было костылей и багов, поэтому - нет, не надо.

    Что касается кросс-платформенной разработки на C#.
    Если речь идет про разработку оконных приложений, то тут 2 варианта:
    - Avalonia UI - это кросс-платформенный фреймворк, разрабатываемый сообществом (не майкрософтом), очень похож на WPF. Есть почти все платформы
    - MAUI - это новый кросс-платформенный фреймворк, разрабатываемый майкрософтом. Он довольно новый, поддерживает множество платформ (по странице документации даже Linux (GTK#)). Но он довольно сырой и по отзывам очень много багов
    - WebAssembly/Blazor - фреймворк для создания PWA, веб-приложений, но можно и для мобильных приложений
    Ответ написан
    3 комментария
  • Почему у черной дыры есть электрический заряд?

    Vindicar
    @Vindicar
    RTFM!
    Причина раз: правило сохранения заряда. Электрический заряд нельзя создать и уничтожить, только перераспределить в пространстве.
    Причина два: с точки зрения внешнего наблюдателя тело будет падать в чёрную дыру за бесконечное время. Его влияние на окружающую вселенную - например, испущенный свет - будет бесконечно ослабевать, но никогда не станет нулевым. При этом с точки зрения падающего тела, падение займёт очень даже конечное (и не слишком большое) время. Относительность - она такая.
    Ответ написан
  • Как отследить то, что самопроизвольно закрывает приложения NET в Ununtu?

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

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Автономные приложения под линуксом надо запускать как сервисы через systemd.
    Как это сделать можно почитать тут - https://habr.com/ru/companies/timeweb/articles/759966/

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

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

    Могу также порекомандовать запускать это все в докере. Немного замороченно, но та же самая функциональность (логи и рестарт), что и в systemd сервисе.
    Ответ написан
    1 комментарий
  • Как правильно вызвать функцию на клиенте через SignalR за учётом авторизации?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Получается что нужен список клиентов (браузеров), на которых открыт определённый блог.
    И при добавлении поста рассылку нужно выполнять только на них. В этом случае возможно решением будет использование групп SignalR
    При открытии страницы, клиент подписывается на группу (блог) и получает оповещения вместе с другими подписчиками.
    О группах также можно почитать здесь.
    Ответ написан
    1 комментарий
  • Как создать hover поверх элемента?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Нужно, чтобы при наведение на любую из кнопку верхний и нижний бордер меняли цвет.

    Ответ написан
    2 комментария
  • Разработчик недисциплинированно трекает время. Что делать?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Вы рассмотрели возможные причины "со своей колокольни" и сами дали на них ответ. Что показывает Ваш авторитарный (директивный) стиль управления.
    Постарайтесь быть ближе к подчинённым, разговаривайте с ними, вникайте в их проблемы. Тогда они сами расскажут - почему они не трекают, а Вы поймёте как это решить.
    Сейчас у Вас нет обратной связи.
    Ответ написан
    Комментировать
  • Как сделать функцию ping?

    Get-Web
    @Get-Web Куратор тега JavaScript
    Front-End Developer
    setIntrval не самое лучшее решение так как, если пользователь перейдет на другую вкладку или свернет браузер, то вызовы могут накапливаться и выполняться одновременно, когда пользователь вернется.

    Лучше использовать setTimeout:
    function ping(url, fn) {
      fetch(url);
      setTimeout(fn, 10000, url, fn);
    }
    
    ping("https://google.com", ping);

    Можно сделать повторный вызов уже после ответа с сервера, причем не важно удачный или нет:
    function ping(url, fn) {
      fetch(url).then((response) => {
        setTimeout(fn, 10000, url, fn);
      });
    }
    
    ping("https://google.com", ping);
    Ответ написан
    2 комментария
  • Как сделать функцию ping?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1 комментарий
  • Какой лучший способ передать объект с приватными полями?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Если на обоих концах у вас dotNet или на одном JS, то можно попробовать MemoryPack - он умеет работать с приватными полями. Но есть нюанс: он хочет partial класс и сам генерирует основной класс с нужными ему статическими полями. Ну и для передачи по сети можно архиватором упаковать с контрольной суммой.

    spoiler

    Небольшой класс для упрощения упаковки/распаковки - наследуем от этого класса целевой объект и через расширение вызываем методы упаковки/распаковки:
        /// <summary>
        /// Класс [де]сериализуемый MemoryPack
        /// <br />Необходим для добавления всем наследуемым классам метода сериализации через расширение
        /// <br />Наследование данного метода не работает из-за каста в целевой класс
        /// </summary>
        public class Packable { }
    
        /// <summary>
        /// Расширение для [де]сериализуемых классов MemoryPack
        /// </summary>
        public static class PackableExtension
        {
            /// <summary>
            /// Сериализовать класс в массив байтов
            /// </summary>
            /// <typeparam name="T">Целевой класс</typeparam>
            /// <param name="data">Объект целевого класса</param>
            /// <returns></returns>
            public static byte[] Pack<T>(this T data) where T : Packable
                => MemoryPackSerializer.Serialize(data);
    
            /// <summary>
            /// Десериализовать класс из массива байтов
            /// </summary>
            /// <typeparam name="T">Целевой класс</typeparam>
            /// <param name="data">Массив байт</param>
            /// <returns></returns>
            public static T Unpack<T>(this byte[] data) where T : Packable
                => MemoryPackSerializer.Deserialize<T>(data);
        }
    Ответ написан
    1 комментарий