Задать вопрос
Люблю Erlang, кёрлинг, группу Слот, мультики Миядзаки и другие странные вещи.

Проектирую приложения, пишу и проверяю код.
Налаживаю и контролирую процессы.
Если не мешают.
Контакты
Местоположение
Россия, Москва и Московская обл., Москва

Наибольший вклад в теги

Все теги (7)

Лучшие ответы пользователя

Все ответы (15)
  • Почему несмотря на устаревание HTML, CSS и JavaScript не делается шагов в сторону альтернатив, отвечающим спросу рынка веб-разработки?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Странный вопрос. Скорее всего потому что имеющиеся инструменты полностью покрывают потребности. Если Вам не нравится работать с HTML, посмотрите, например, на Flutter и его возможность компилироваться в браузерное приложение, там Вы полностью абстрагируетесь от «устаревших» технологий, ибо использует вся эта радость свою систему виджетов (это не то же самое, что компоненты, например, в React) и свою отрисовку в том числе на Canvas. Всё хорошо, но при возникновении каких-то траблов можно застрелиться...
    Ответ написан
    Комментировать
  • Могут ли принять человека на работу .Net программиста без высшего образования?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Работаю программером в том числе и .NET уже, страшно подумать, почти 16 лет, сейчас -- в геймдеве серверным разработчиком.
    Высшего образования нет, точнее, вообще никакого специального нет.
    Ответ написан
    Комментировать
  • Как правильно конвертировать массив?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Эх, вспомнил я первый курс универа...
    Я бы, наверное, сделал как-то так, учитывая, что это всё же учебное задание, если есть вопросы, велкам, отвечу.

    class Program
    {
        private const int MinArrayLength = 2;
        private const int MaxArrayLength = 20;
    
    
        private static int ReadInteger(string prompt)
        {
            while (true)
            {
                Console.Write(prompt);
                
                string input = Console.ReadLine();
    
                if (!int.TryParse(input, out int number))
                {
                    Console.WriteLine($"Значение {input} не является числом");
                    continue;
                }
    
                return number;
            }
        }
    
        private static int ReadArrayLength()
        {
            while (true)
            {
                var number = ReadInteger($"Введите размер массива от {MinArrayLength} до {MaxArrayLength}: ");
    
                if (number > MaxArrayLength || number < MinArrayLength)
                {
                    Console.WriteLine($"Число {number} лежит вне границ интервала [{MinArrayLength}..{MaxArrayLength}]");
                    continue;
                }
    
                return number;
            }
        }
    
        private static int[] ReadArray(int length)
        {
            while (true)
            {
                Console.Write($"Введите до {length} целых чисел через пробел: ");
    
                string input = Console.ReadLine();
                string[] entries = input.Split(' ', StringSplitOptions.RemoveEmptyEntries);
    
                if (entries.Length > length)
                {
                    Console.WriteLine($"Вы ввели более {length} чисел");
                    continue;
                }
    
                if (!TryParseIntegerArray(length, entries, out var array))
                    continue;
    
                return array;
            }
        }
    
        private static bool TryParseIntegerArray(int length, string[] strings, out int[] array)
        {
            array = new int[length];
    
            for (int i = 0; i < strings.Length; ++i)
            {
                if (!int.TryParse(strings[i], out int number))
                {
                    Console.WriteLine($"Строка {strings[i]} (позиция {i}) не является числом");
                    return false;
                }
    
                array[i] = number;
            }
    
            if (length > strings.Length)
            {
                Array.Clear(array, strings.Length, length - strings.Length);
            }
    
            return true;
        }
    
        private static int CountNumberOccurs(int[] array, int targetNumber)
        {
            int occursCount = 0;
            
            for (int i = 0; i < array.Length; ++i)
            {
                if (array[i] == targetNumber)
                    occursCount++;
            }
    
            return occursCount;
        }
    
    
        static void Main(string[] args)
        {
            int arrayLength = ReadArrayLength();
            int[] array = ReadArray(arrayLength);
            int targetNumber = ReadInteger("Введите целое число для поиска повторений: ");
    
            int occursCount = CountNumberOccurs(array, targetNumber);
    
            Console.WriteLine($"Количество вхождений числа {targetNumber} в массив: {occursCount}.");
            Console.WriteLine("Нажмите <ENTER> для выхода.");
            Console.ReadLine();
        }
    }
    Ответ написан
    1 комментарий
  • Что не так с классами в ASP.Net Core?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Если Вы хотите, чтобы экземпляры Ваших классов создавались при старте приложения и оставались доступными всё время его работы, Вам надо либо сделать их статическими полями какого-либо класса, либо использовать паттерн Синглтон (ни разу не антипаттерн при правильном использовании), либо, как Вам говорили выше,использовать Dependency Injection, почитать про него можно, например, здесь: https://docs.microsoft.com/ru-ru/aspnet/core/funda...

    Почему, вообще, происходит то, что Вы описали. Класс Startup создается при старте приложения и используется только для его конфигурации, то есть, он не живёт всё время работы Вашего приложения, а следовательно, все объекты, являющиеся его полями, уничтожаются сборщиком мусора, если не передать владение ими другому объекту, имеющему большее время жизни. Вы же, как я понял, просто создаете эти объекты в методе, в этом случае, опять же, если не передать владение, они станут недоступными сразу после завершения метода и весьма быстро соберутся сборщиком мусора.
    Ответ написан
    Комментировать
  • В чем суть скрипта? Что он делает?

    serafimprozorov
    @serafimprozorov
    Люблю Erlang....
    Очевидно, суть программы (это не скрипт, забудьте это слово в конце концов уже применительно к чему-то не на Python, JS и Unity), запустить как раз-таки скрипт на PowerShell, который реализует вот этот вот эксплоит: https://googleprojectzero.blogspot.com/2016/03/exp...
    Ответ написан
    Комментировать