Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

Евгений Гл

  • 13
    вклад
  • 14
    вопросов
  • 51
    ответ
  • 22%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Мое приложение весит больше 150 мб, и я не могу выставить его на всеобщее обозрение в Play Market, что мне делать?

    Евгений Гл @GLeBaTi
    https://qna.habr.com/q/1030054
    Ответ написан 12 мая
    Комментировать
    Комментировать
  • Как убрать разрывы?

    Евгений Гл @GLeBaTi
    GUIStyle myStyle = new GUIStyle (GUI.skin.label); 
     myStyle.margin = new RectOffset(11,22,33,44);

    Можно попробовать создать и применять собственный стиль.
    Ответ написан 17 мар.
    Комментировать
    Комментировать
  • Ошибка при билде для Play market?

    Евгений Гл @GLeBaTi
    Была такая, потом со-временем пропала. Но не помню точно что сделал. Что-то из этого:
    - выключил режим отладки в юнити (жук снизу-справа)
    - перезагрузил юнити
    - перезагрузил комп
    - удалил папку Library
    Ответ написан 04 мар.
    Комментировать
    Комментировать
  • Как узнать список файлов которыми пользуется программа?

    Евгений Гл @GLeBaTi
    Диспетчер задач -> производительность -> Открыть мониторинг ресурсов (снизу):
    Вкладка "Диск", поставить галочку на интересующий процесс и снизу отобразятся все чтения/записи в файлы.
    Ответ написан 14 февр.
    Комментировать
    Комментировать
  • Как построить дальнейшее обучение c#?

    Евгений Гл @GLeBaTi
    Вот отличный курс.
    1007099424.jpg
    Ответ написан 23 дек. 2021
    Комментировать
    Комментировать
  • Отправка данных из формы?

    Евгений Гл @GLeBaTi
    У вас метод как POST, а ajax запрос делаете через GET (по-умолчанию).
    Попробуйте добавить new AjaxOptions { HttpMethod = "Post" }
    Ответ написан 02 дек. 2021
    Комментировать
    Комментировать
  • Как использовать в одном проекте разные версии nuget пакетов?

    Евгений Гл @GLeBaTi
    Создайте свою DLL которая будет использовать пакет B. Тогда не будет коллизий.

    Т.е. App.exe использует пакет А и MyLib.dll
    а MyLib.dll использует пакет B
    Ответ написан 18 нояб. 2021
    1 комментарий
    1 комментарий
  • Как защититься от двойного списания в многопоточном приложении?

    Евгений Гл @GLeBaTi
    1) Использовать уровень изоляции транзакций: serializable
    но производительность Update упадет, поэтому лучше делать замеры и смотреть, подходит или нет. Обычно Update-ов не так много как чтений.
    Преимущество: не надо будет танцевать с бубном.

    2) Сделать эту операцию через класс, который контролирует. Т.е. если мы делаем запрос второй раз, это класс смотрит, завершился ли первый.
    А тут уже 2 варианта:
    - ответить пользователю отказом (типо: "дождитесь окончания предыдущей операции")
    - дождаться выполнения первой и приступить к выполнению второй. Но если после первой, баланс <0, то сказать об этом пользователю.
    Ответ написан 18 нояб. 2021
    Комментировать
    Комментировать
  • Не пойму как написать программу на C#, которая будет проводить операции с двумя введенными тригонометрическими функциями?

    Евгений Гл @GLeBaTi
    Примерно такой псевдокод:

    public static void Main()
    {
        Console.Write("Введите первую тригонометрическую функцию (sin, cos, tan, cot): ");
        string trig1 = Console.ReadLine();
        Console.Write("Введите значение угла: ");
        int degree1 = int.Parse(Console.ReadLine());
        Console.WriteLine();
        Console.Write("Введите вторую тригонометрическую функцию (sin, cos, tan, cot): ");
        string trig2 = Console.ReadLine();
        Console.Write("Введите значение угла: ");
        int degree2 = int.Parse(Console.ReadLine());
    
        var trigValue1 = GetTrigValue(trig1, degree1);
        var trigValue2 = GetTrigValue(trig2, degree2);
    
        Calc(trigValue1, trigValue2);
    }
    
    
    private static double GetTrigValue(string trigFunc, int degree){
        switch(trigFunc){
            case "sin": return Math.Sin(degree);
            case "cos": return Math.Cos(degree);
            case "tan": return Math.Tan(degree);
            case "cot": return Math.Cot(degree);
            default: return 0.0d;
        }
    }
    
    private static void Calc(double val1, double val2){
        Console.Write($"{val1} - {val2} = {val1 - val2}");
        Console.Write($"{val1} + {val2} = {val1 + val2}");
        ...
    }
    Ответ написан 16 нояб. 2021
    Комментировать
    Комментировать
  • Нужно вывести в поле label1 номер столбца матрицы с наименьшей суммой. Как это сделать?

    Евгений Гл @GLeBaTi
    Создаем отедельный массив `sum`, в котором будем хранить/считать сумму каждого столбца:

    int[] sum = new int[5];
    int max = Int32.MinValue;
    int maxColumnIndex = 0;
    for (int k = 0; k < dataGridView1.Rows.Count; ++k)
    {
        for(int j = 0; j < dataGridView1.Rows[k].Cells.Count; j++)
        {
            var colSum = sum[j] + Convert.ToInt32(dataGridView1.Rows[k].Cells[j].Value);
            sum[j] = colSum;
            if(colSum > max){
                max = colSum;
                maxColumnIndex = j;
            }
        }
    }
    
    label1.Text = maxColumnIndex.ToString();
    Ответ написан 16 нояб. 2021
    Комментировать
    Комментировать
  • Вывод среднего double числа в textBox?

    Евгений Гл @GLeBaTi
    var gridNum = ...from grid
    var rnd = new Random();
    var prev = double.Parse(textBox3.Text);
    var next = prev + ((gridNum - prev) * rnd.NextDouble());
    textBox3.Text = next.ToString();


    Как-то так. Это при условии, что grid value >= textBox3 value
    Ответ написан 07 окт. 2021
    Комментировать
    Комментировать
  • Какие плюсы и минусы у Task и Thread?

    Евгений Гл @GLeBaTi
    Простыми словами:

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

    Task - это обертка над Thread которая позволяет переиспользовать созданные потоки (Пул потоков).
    Переиспользовать потому-что создавать каждый раз Thread это очень долго и дорого.

    Task-и так же предоставляют дополнительный фишки как:
    - асинхронная модель (async/await),
    - учёт количества ядер процессора,
    - учёт простоя во время системных вызовов (сеть, файловая система и т.п.)

    В любом случае Task-и это лучшее решение.
    Ответ написан 23 сент. 2021
    Комментировать
    Комментировать
  • Что лучше использовать, WPF или Winforms?

    Евгений Гл @GLeBaTi
    Все visual studio от 2010 версии используют WPF. Думаю, технологии можно доверять,
    Windows forms лучше выбирать для приложений которые планируете запускать на старых системах. На новых, лучше WPF.
    WPF сложнее в изучении, но более гибкий в плане построения интерфейса + удобные биндинги.
    Технология развивается с 2006 года. За это время уже много для неё написали (контролы).
    Ответ написан 09 сент. 2021
    Комментировать
    Комментировать
  • Почему изменения в реестре происходят только один раз?

    Евгений Гл @GLeBaTi
    Попробуйте вручную сделать flush:
    RegistryKey wKey = ...
    wKey.SetValue(...);
    wKey.Flush();
    wKey.Close();
    Ответ написан 19 авг. 2021
    Комментировать
    Комментировать
  • Как организовать Update в window forms?

    Евгений Гл @GLeBaTi
    В windows forms аналогом unity update является метод OnPaint (переопределите его):

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        Pen pen = new System.Drawing.Pen(System.Drawing.Color.Red, 2);
        e.Graphics.DrawLine(pen, 0, 0, 150, 150);
        pen.Dispose();
    }
    Ответ написан 19 авг. 2021
    Комментировать
    Комментировать
  • Чем плохо использование статических функций в проекте для архитектуры?

    Евгений Гл @GLeBaTi
    Нет никаких проблем, если вы не храните состояние/данные в статическом классе.

    Но нужно смотреть в будущее:
    1) Могут появиться транзакции , которые вызывают сразу несколько разных методов и где-то нужно хранить подключение (чтобы в каждом методе не подключаться). (что очень часто)
    2) Может понадобится несколько реализаций под каждую СУБД (что очень редко)
    3) ...
    Ответ написан 12 авг. 2021
    Комментировать
    Комментировать
  • Как выложить игру выше 150 Мбайт?

    Евгений Гл @GLeBaTi
    1) Попытаться уменьшить размер (сжатие, удаление ненужного):
    https://docs.unity3d.com/Manual/ReducingFilesize.html

    2) Поделить приложение (с догрузкой сделать) на бандлы (AssetBundle):
    https://docs.unity3d.com/Manual/AssetBundlesIntro.html
    Ответ написан 12 авг. 2021
    Комментировать
    Комментировать
  • Почему не меняется сцена после билда?

    Евгений Гл @GLeBaTi
    Скорее всего в билде объекты сцены обнуляются (смотрите логи или поставьте Debug.Log(_nextScenes[rand]))

    Не нашел как прикрепить сцену к скрипту.
    Вот другие варианты:

    1) Uрузить последовательно, как ты выбрал в BuildSettings:
    SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);


    2) Вбивать имена сцен в список:
    [SerializeField] private string[] _nextScenes;
    SceneManager.LoadScene(_nextScenes[rand]);


    3) Использовать кастомный PropertyDrawer:
    answers.unity3d.com/questions/242794/inspector-fie...
    Ответ написан 05 авг. 2021
    Комментировать
    Комментировать
  • Как убрать отскок GameObject`ов в unity?

    Евгений Гл @GLeBaTi
    Не трогая физ. материал
    Снизить скорость до 0 при прикосновении:

    void OnCollisionEnter(Collision collision)
    {
       //тут нужные условия
       rigidBody.velocity = Vector3.zero;
    }
    Ответ написан 05 авг. 2021
    Комментировать
    Комментировать
  • На чем написать кроссплатформенный GUI?

    Евгений Гл @GLeBaTi
    C++:
    GTK+ и QT (НО! есть биндинги для многих языков)
    C#:
    - GtkSharp,
    - Avalonia, Xamarin/MAUI
    - Unity (но мало готовых контролов)
    Delphi
    RAD Studio
    JS:
    - Electron, React native
    Python
    - Tkinter
    Ответ написан 29 июл. 2021
    2 комментария
    2 комментария
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • Следующие →
Самые активные сегодня
  • vabka
    Василий Банников
    • 7 ответов
    • 0 вопросов
  • gogowq
    gogowq
    • 5 ответов
    • 2 вопроса
  • Drno
    • 6 ответов
    • 0 вопросов
  • SagePtr
    SagePtr
    • 5 ответов
    • 0 вопросов
  • Alexandroppolus
    Alexandroppolus
    • 5 ответов
    • 0 вопросов
  • GavriKos
    GavriKos
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации