Задать вопрос
  • Как исправить ошибку 404 при доступе к серверу по белому IP?

    karabanov
    @karabanov Куратор тега Linux
    Системный администратор
    Ответ написан
    Комментировать
  • Почему gpu вычисления ILGPU медленнее в 10 раз чем CPU?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Вот из-за этого:
    // Initialize ILGPU.
         Context context = Context.CreateDefault();
         Accelerator accelerator = context.CreateCLAccelerator(1);//context.GetPreferredDevice(preferCPU: false)  .CreateAccelerator(context);
    
         // Load the data.
         using  MemoryBuffer1D<float, Stride1D.Dense> deviceData = accelerator.Allocate1D(input);
         using MemoryBuffer1D<float, Stride1D.Dense> deviceOutput = accelerator.Allocate1D<float>(output);
    
         // load / precompile the kernel
         Action<Index1D, ArrayView<float>, ArrayView<float>> loadedKernel =
             accelerator.LoadAutoGroupedStreamKernel<Index1D, ArrayView<float>, ArrayView<float>>(Kernel);
    
    
         // finish compiling and tell the accelerator to start computing the kernel
             loadedKernel((int)deviceOutput.Length, deviceData.View, deviceOutput.View);
             accelerator.Synchronize();


    Объяснение: ты в каждом тесте постоянно создаешь новые объекты, которые необходимы для работы фреймворка. Это должно быть тяжелые объекты (много содержат, тяжело инициализируются).
    Вынеси их инициализацию из-вне метода в какой нибудь Setup метод. Раз уж ты пользуешься BenchmarkDotNet, то вот помощь с этим

    UPD: оптимизировал бенчмарк - теперь GPU быстрее
    public class SampleBenchmark
    {
        static void Kernel(Index1D i, ArrayView<float> data, ArrayView<float> output)
        {
            output[i] = data[i % data.Length];
        }
        public static IEnumerable<object[]> Arguments => new[] {new object[]{new float[1000000], new float[1000000]} };
        private float[] _outputBuffer = new float[1000000];
        private float[] _inputBuffer = new float[1000000];
        
        private Context? _context;
        private Accelerator? _accelerator;
        private Action<Index1D, ArrayView<float>, ArrayView<float>>? _loadedKernel;
        private MemoryBuffer1D<float, Stride1D.Dense>? _deviceData;
        private MemoryBuffer1D<float, Stride1D.Dense>? _deviceOutput;
        
        [GlobalSetup]
        public void Setup()
        {
            var random = new Random();
            for (var i = 0; i < _inputBuffer.Length; i++)
            {
                _inputBuffer[i] = random.NextSingle();
            }
            
            _context = Context.CreateDefault();
            _accelerator = _context.GetPreferredDevice(preferCPU: false).CreateAccelerator(_context);
            _loadedKernel = _accelerator!.LoadAutoGroupedStreamKernel<Index1D, ArrayView<float>, ArrayView<float>>(Kernel);
            _deviceData = _accelerator!.Allocate1D(_inputBuffer);
            _deviceOutput = _accelerator!.Allocate1D(_outputBuffer);
        }
    
        [GlobalCleanup]
        public void TearDown()
        {
            _context?.Dispose();
            _accelerator?.Dispose();
            _deviceData?.Dispose();
            _deviceOutput?.Dispose();
        }
        [ArgumentsSource(nameof(Arguments))]
        [Benchmark]
        public void GPUTest(float[] input, float[] output)
        {
            // finish compiling and tell the accelerator to start computing the kernel
            _loadedKernel!((int)_deviceOutput.Length, _deviceData.View, _deviceOutput.View);
            _accelerator!.Synchronize();
        }
    
        [Benchmark]
        [ArgumentsSource(nameof(Arguments))]
        public void CpuTest(float[] input, float[] output)
        {
            for (var i = 0; i < input.Length; i++)
            {
                output[i] = input[i];
            }
        } 
    }


    | Method  | input           | output          | Mean      | Error    | StdDev   |
    |-------- |---------------- |---------------- |----------:|---------:|---------:|
    | GPUTest | Single[1000000] | Single[1000000] |  61.18 us | 0.101 us | 0.095 us |
    | CpuTest | Single[1000000] | Single[1000000] | 243.54 us | 3.114 us | 2.600 us |
    Ответ написан
    2 комментария
  • Какую программу/расширение_браузера использовать для автоматической выдачи интересующих статей с определенного сайта?

    @Vlad_hex Автор вопроса
    Всем привет!
    Вижу что вопрос оказался непраздным и некоторым людям интересно узнать какие инструменты я в итоге нашел для выполнения данной задачи.
    Собственно попробовав всякое разное я выделил для себя 2 основных сервиса. Это Google alerts и Distill.
    С Google alerts все более менее понятно. Идете по адресу https://www.google.ru/alerts и настраиваете сбор данных с поисковика на интересующие темы. Сервис крайне полезный, например с помощью него я оперативно узнал что японцы начали сброс зараженной воды с аварийного реактора в океан, хотя первые слухи об этом поползли еще в 2019 году и именно тогда я поставил запрос на сбор информации по теме.
    Но у гугл алертс есть на мой взгляд очень существенный недостаток в виде негибкой настройки времени поступления новостей на почту либо раз в неделю, либо раз в день, либо по мере поступления, ну и высылают ссылки только на почту, хотя кмк в 2024 году можно было добавить хотя бы Телеграм. Сервис выглядит полузаброшенным и не развивается, хотя со своей основной функцией в принципе справляется.
    Distill - сервис подсказал ChatGPT. Как следует из названия он поставляет "дистилированную" информацию с интересующих сайтов, можно выбрать конкретный блок сайта, и добавить условие текстовое.
    Писал сервис скорее всего тоже ChatGPT потому что при начальной хорошей задумке он имеет не очень внятную реализацию и запутанный внутренний интерфейс, видно что авторы старались как могли, но их познания в UX не продвинулись дальше интерфейса Norton Comander. Для того чтобы пользоваться этим сервисом крайне желательно иметь познания в области CSS и уметь ковырять консоль браузера, а так же иметь представление о синтаксисе регулярных выражений.
    В принципе имеет довольно гибкие настройки, наверняка отлично подойдет тому кто хочет отслеживать цены на Авито или какие-нибудь акции с бесплатными раздачами и ограниченным количеством.
    Для того чтобы им пользоваться установите расширение браузера из хромстор и зарегистрируйтесь на сайте Distill https://distill.io/ . Есть версия и для Android, но я не пользовался.
    Ответ написан
    Комментировать
  • Почему C# не кроссплатформенный?

    @Jhayphal
    Посмотрите Avalonia UI, Asp.net 8, Maui, etc. Ещё как кроссплатформенный. Более того, при этом высоко производительный. Особенно если юзать native aot.
    Ответ написан
    Комментировать
  • Как практиковаться в программировании?

    delphinpro
    @delphinpro
    frontend developer
    На мой взгляд лучший вариант изучения языка - писать то что именно тебе нужно, или хотя бы интересно.

    Я начал изучать программирование лет двадцать назад, поэтому мой опыт может показаться странным, но все же. В моем распоряжении был компьютер на 386 процессоре и монохромный монитор с 4 градациями цвета (белый, серый, темный и черный). Конечно я видел и цветные мониторы и 95 винду на них. Мне тоже хотелось окошечки, графический интерфейс и все такое прочее. Хочется - сделаем. Книжки в зубы (в библиотеке O_o), редкие походы в компьютерные клубы, за инфой из интернета (сколько поместится на дискету?) - и вперед, пилить оконный менеджер под ДОС на турбопаскале.
    Конечно, свою винду я не написал =) Но зато паскаль выучил, объектное программирование, детально разобрался как работает компьютер и операционная система, что такое резидентные программы в досе.
    А потом купил нормальный комп =)

    К чему я это всё? А к тому, что если у тебя есть желание научится программировать, ты возьмешь и научишься, даже на калькуляторе.
    Ответ написан
    1 комментарий
  • Как практиковаться в программировании?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Забей на программирование, это не твое.

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

    Найди ту деятельность, где у тебя глаза горят.
    Ответ написан
    4 комментария
  • Как использовать webapp проект как библиотеку?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Во-первых, почти любое веб приложение - консольное. Т.е. не оконное, не служба.
    Во-вторых, если тебе нужен WebHook, то у Telegram.Bot есть пример, как это сделать (используется ASP.NET Core) - https://github.com/TelegramBots/Telegram.Bot.Examp...
    В-третьих, не стоит делать выполняемые приложения (консольные, веб, сервисы) зависимыми от других - это плохо.
    Ответ написан
    3 комментария
  • Откуда происходит затухание при моделировании падения частицы?

    Ocelot
    @Ocelot
    Не важно, где имненно находится точка отскока, шарик должен подниматься на одну и ту же высоту. Можно сделать так: как только заметили, что шарик зашёл под границу, инвертируем его скорость, не меняя координаты.
    if (p.Pos.Y >= maxH && p.Velocity.Y > 0)
    {
        p.Velocity.Y *= (-1);
    }
    Ответ написан
    1 комментарий
  • Откуда происходит затухание при моделировании падения частицы?

    @CBET_TbMbI
    Код анализировать лень, но если хочешь копаться, то изучай проблемы численных методов (сходимость, устойчивость и т.п.).
    Хитрость в том, что ты хочешь заменить плавно-изменяющуюся функцию на кусковую, якобы из прямых отрезков на твоём dt. Но на самом деле на этом dt ускорение тоже изменяется. В итоге есть риск накапливать ошибка с каждым шагом. И это не считая проблем граничных частей, которые ты сам описал.
    Тут картинки есть: stratum.ac.ru/education/textbooks/modelir/lection1...
    А вообще книг по этим вопросам хватает.
    Ответ написан
    1 комментарий
  • Как удалить программу без обращения к пользователю?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Отследить трекерами реестра и файловой системы - что создается, обычно это папка в program files, ключи реестра в HKEY_LOCAL_MACHINE и ярлыки - и удалить это все скриптом, не забыв перед этим прибить возможно запущенный процесс этой программы.

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

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    У вас виндузятников там есть вроде консольная команда driverquery
    Можно её выполнять из питона и парсить результат. Там есть в выхлопе нужное устройство?
    Можно попробовать подключаться перебирая все порты, если есть возможность определить при успешном подключении нужное это устройство или нет.
    Искать нужно как найти нужные данные через консоль, а потом искать как выполнить консольную команду из питона и получить консольный выхлоп, а потом искать нужную строчку в выхлопе.
    Примерно такой путь.
    Ответ написан
    Комментировать
  • Как правильно инициализировать библиотеку классов в .NET?


    Чтобы данный сервис был доступен в окружении Lib.Controls, я реализую в этой библиотеке статический класс:

    Фатальная ошибка.


    Является ли такая архитектура единственно возможной или у нее есть достойные альтернативы?

    Раз у тебя уже есть DI, то следующий шаг прямо напрашивается. Создавать формы тоже при помощи DI и прокидывать все такие зависимости через конструктор.
    Ответ написан
    2 комментария
  • Как в Windows 10 выставить НЕПРАВИЛЬНОЕ время?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    А что за система виртуализации?
    В ней случайно нигде (в свойствах машины или биосе) не стоит галочка "синхронизировать с временем хоста"?
    Ответ написан
    Комментировать
  • Почему gRPC подменяет исключения?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    А откуда другой сервис знает, какие КЛАССЫ/ОБЪЕКТЫ есть в другом сервисе?
    Если нужно кидать такое-же исключение на сервисе клиенте, то нужно это исключение там и создать.

    А вообще, для своих типов исключений необходимо использовать GRPC_STATUS_UNKNOWN. В документации так и написано:
    Server threw an exception (or did something other than returning a status code to terminate the RPC)


    Решение только одно - в каждом сервисе писать свои обработчики таких исключений и свои классы исключений
    Ответ написан
    2 комментария
  • Почему возникает ошибка Fatal error. System.Runtime.InteropServices.SEHException?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Проблема в том, что библиотека бросила исключение. В ней какая-то ошибка. Это не проблема сборки или компиляции - это проблема в логике. Что-то вы не то библиотеке передаете. И там, допустим, деление на ноль. Или обращение по нулевому указателю.

    Просите у пользователей все данные, чтобы воспроизвести проблему. Или может оно минидамп создает, тогда можно будет его в отладчике открыть.

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

    Судя по сигнатурам функции, возможно вы пустой массив туда передаете вместо чего то осмысленного.
    Ответ написан
    7 комментариев
  • Как выйти из двух пользователей в Linux, и при этом выполнить команду один раз?

    karabanov
    @karabanov Куратор тега Linux
    Системный администратор
    Ctrl+d
    Ctrl+d

    Ну или по хардкору (убить ssh сессию):
    Enter
    ~
    .
    Ответ написан
    Комментировать
  • Как выйти из двух пользователей в Linux, и при этом выполнить команду один раз?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    И не будет, ведь такая команда будет исполняться в одном shell, а не в двух разных. После первого exit дальше уже всё, остаток будет проигнорирован.

    Способы есть:

    1. Из суперпользователя убить shell пользователя. Некрасиво и неудобно, но закроет оба шелла.

    2. Переключение в суперпользователя оформить сразу с выходом, тогда выход из внутреннего сделает выход и из внешнего, например:

    sudo -i; exit

    Недостаток - если не удастся правильно ввести пароль - сразу же и выкинет. Ну, можно поразбираться с кодами возврата, чтобы не делать exit.

    3. Вместо предыдущего можно сделать exec, тогда запускаемая команда заместит текущий shell, а не будет запущена как дочерний процесс:

    exec sudo -i

    Недостаток тот же - если не ввести правильно пароль, то выкинет.

    Но в целом я не вижу во всём этом смысла. Выход можно делать комбинацией Ctrl-D. Нажать дважды Ctrl-D ничто не мешает, это даже удобнее.
    Ответ написан
    2 комментария
  • Как намекнуть начальству, что agile не избавляет от тз?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    им всё равно нужно самостоятельно планировать работу и отвечать за неё?

    Этот момент мне не до конца понятен. Т.е., грубо говоря, начальство должно полностью разбираться в программировании, устройстве продукта, самостоятельно оценивать задачи и ганта строить?

    Если есть JIRA таски и что-то не понятно, то возвращайте и говорите, чтобы уточнили эти моменты.
    Лично я НЕ сторонник подхода, когда разработчику дают полностью готовую задачу и он должен только постучать по клавишам, чтобы это все закодировать. В вашем случае, получается, что разработчик такой же стекхолдер, он тоже участвует в развитии продукта, а не просто маленькая шестеренка.
    Ответ написан
    7 комментариев
  • Как намекнуть начальству, что agile не избавляет от тз?

    1. Agile - это про то что люди должны договариваться. По тому надо не намёки делать, а говорить прямо и предметно.

    2. Вот вы говорите, что вам нужно ТЗ. А зачем вам оно нужно?
    Вам не понятна та постановка, которая описывается в карточках?
    Есть неоднозначность?
    Уже есть примеры, когда от этой неоднозначности пострадал продукт (например из-за необходимости переделывать)?

    Или вам нужно не ТЗ, а виденье того, чем в итоге должен стать продукт?
    Не понятно, для чего вообще все эти карточки перекладываются?
    Если так, то, вероятно, вам нужно не ТЗ, а какие-то OKR-ы, чтобы можно было от них отталкиваться при составлении задач.

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

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    1. Создаешь свою базу данных городов (названия, расположения)
    2. Находишь API, которое по положению отдает погоду в нем
    3. Делаешь окно выбора города
    4. Когда пользователь выбрал город делаешь запрос на API (шаг 2) и показываешь результат

    На твое усмотрение:
    - Как будет выглядеть морда (UI)
    - Где хранится БД городов будет (загружаться во время старта, в txt/json файле, отдельная БД (sqlite, postgres))
    - Какой API погоды использовать
    Ответ написан
    9 комментариев