Задать вопрос
  • Стоит ли доверять?

    Увидел на сайте по продажам бу вещей, бесплатный товар разбитый но рабочий планшет, автор просит в замен шиколадку,

    Ну вот за шоколадку и забирай.

    либо автор добрый, либо он хочет както обмануть меня на доставке товара

    Если боишься по поводу доставки, то забирай самовывозом.
    Ответ написан
    Комментировать
  • Использование VPS SSH с GitHub?

    по-идеи, если юзать с судо, то должно браться же с домашней папки рута, а там как раз есть этот ключ..

    Нет.
    Ответ написан
  • Почему экземпляр производного класса приводят к базовому абстрактному типу?


    Говорят, что экземпляр производного класса, наследующийся от абстрактного (класса, интерфейса), принято приводить к базовому типу. Почти всегда.

    Ни разу о таком не слышал. Мне кажется, это какой-то бред сумасшедшего, который ни разу не написал ни одной строчки кода.

    На C# очень многие используют стиль VIP (var if possible), в таком стиле ваш код будет выглядеть так:
    var instance = new  DerivedClass();
    instance.Method1(); // Красиво, компактно, никаких проблем.
    instance.Method2();


    В коде выше, из за приведения к базовому абстрактному типу, мы вынуждены создавать 2 экземпляра класса.

    Нет. Можно написать так:
    DerivedClass instance= new DerivedClass(); // только 1 экземпляр
    Interface1 instance1 = instance; // Но всё равно очень громоздко.
    Interface2 instance2 = instance;


    Не нужна "лишняя" операция приведения (апкаст).

    Апкаст - это бесплатная операция.

    Единтвенный лучай, когда нужно приводить класс к интерфейсу - это явная реализация интерфейса (без апкаста тупо не получится вызвать его методы)
    PS: простой код лучше сложного.
    Ответ написан
    5 комментариев
  • Как обновить значение переменной?

    Каждый тик таймера вы устанавливаете определённое значение переменной.
    В вашем случае нужно где-то сохранять данные об оставшемся количестве.
    Предлагаю вам завести класс, который хранит количество всего и поместить их в словарь.
    Будет что-то наподобие
    private Dictionary<string, Item> Inventory = new () {
        ["Дробовик"] = new () { Damage = 36, Clip = 30, Stock = 60 },
        ["Автомат"] = new () { Damage = 30, Clip = 30, Stock = 60 },
        ["Базука"] = new () { Damage = 51, Clip = 1, Stock = 2 }
    };
    public Item SelectedItem {get; set;}
    private void timer1_Tick(object sender, EventArgs e) {
      SelectedItem = Inventory[combobox.Text];
    }

    А потом там где вы выводите текст:
    label1.Text = SelectedItem?.Clip.ToString() ?? "";
    Ответ написан
    Комментировать
  • Как защититься от SQL инъекции в asp.net core? правильно ли я пишу?

    Сначала по пунктам, как ты делаешь:
    1. Кривое именование. Dapper позволяет маппить имена колонок к именам свойств.
    2. Похоже на ок, но стоит разбить интерфейс. Тк, скорее всего, не для всех сущностей будут нужны все эти методы.
    Именование не ок.
    dbConnection стоит переиспользовать.
    dbConnection.Dispose руками писать не нужно, тк dbConnection и так завёрнут в using
    SELECT * лучше не использовать
    Правильно ли я делаю?

    Не совсем

    Нет ли ошибок?

    Есть

    Как можно защититься от инъекции?

    Валидировать ввод.
    Не уверен, проверяет ли даппер сам параметры, но вы используете параметризованные запросы - так что должно быть ок.
    Если что - можете сами попытаться провести инъекцию (сами состаьте запрос или через burp suite)

    Например, в php экранировали вводимую пользователем форму например htmlspecialchars, надо ли на net core так же делать?

    Dapper сам должен это делать.
    Ответ написан
    Комментировать
  • Как осуществить контроль и статус ASIC'ов с помощью telegram бота на Python?

    1. Если готовая инфа есть, то уточнять её надо у производителя асика - возможно, у него есть апи, а может и нет.
    2. Посмотреть, какие запросы делает фронтенд, чтобы узнать температуру и прочее. Из питона надо будет эти запросы имитировать. Если там нет апи, то надо будет парить html
    3. Если они находятся в одной сети, то надо будет просто обращаться по ip. Если бот и асики будут в разных сетях, то сети надо будет объединить по VPN
    3.1 - есть технология mDNS (вроде так называется, но я не уверен) - можно с помощью неё узнавать актуальный адрес, если асики её используют. Другой вариант - привязать IP к MAC-адресу асиков.
    Ответ написан
    4 комментария
  • Параметры функции?

    Зачем передавать переменные-параметры в функцию, если можно писать глобальное объявление переменных?

    1. Чтобы избавлять от дублирования (ну вообще это сам смысл функций)
    2. Чтобы удобнее работать с этими функциями (сразу видишь, что функция от тебя ждёт)
    3. Чтобы нормально работало в многопоточной среде. (глобальные переменные и многопоток не совестимы)

    Ну вот например менее абcтрактный пример:
    int sum(int a, int b) { // всё отлично, всё понятно
      return a + b;
    }
    
    int a,b;
    // Каким образом мы поймём, что надо перед вызовом sum задать какое-то значение переменным a и b?
    // sum и её "параметры" a и b никак не связаны
    int sum() {
      return a + b;
    }
    
    int sum() { // а как в этом случае нам сложить две переменные? Как задать значения a и b??????
      int a,b;
      return a + b;
    }
    Ответ написан
    Комментировать
  • Как сделать ссылку на проект?

    Ссылку на проект - это в csproj надо написать
    <ItemGroup>
      <ProjectReference Include="../OtherProject/OtherProject.csproj"/>
    </ItemGroup>

    А то что "Ссылки: 0" - это то, в каких местах идёт явное обращение к подсвеченному методу.
    Ответ написан
    Комментировать
  • Запрет на редактирование строки в Mysql по ID?

    Что-то постоянно меняет эти ссылки на свои, в итоге на сайте появляются вирусные редиректы. Когда меняю ссылку на реальную ссылку сайта, он работает нормально.

    Осмелюсь предположить, что надёжнее будет найти то, что подменяет ссылки и удалить, заодно заняться безопасностью сайта.
    Ответ написан
    Комментировать
  • Как подавить автогенерацию метода ToString у record в c#?

    В record'е можно реализовать ToString явно - тогда не сгенерируется его дефолтная версия.
    Или можно тупо не использовать рекорды

    UPD: Поэкспериментировал с рекордами и вот вывод:
    1.
    sealed override string ToString()
    Так можно делать только в sealed record
    2. Рекорд не наследует ToString от родителя - вместо этого он определяет свой собственный
    3. В рекоде можно спокойно переопределить ToString
    Если вы не хотите переопределять ToString во всех рекордах, то, возможно, вам нужны не рекорды, а обычные классы.
    Ответ написан
    2 комментария
  • Как раскодировать файл в неизвестном формате?

    1. Убедитесь, что оно не зашифровано
    2. Если зашифровано, то перехватить трафик заново через Fiddler/ Charles/ mitmproxy
    После второго шага у вас будет расшифрованное и разжатое сообщение - тогда может сразу увидите, если это json или другой текстовый формат.

    Если оно не зашифровано, то можете посмотреть в заголовке Content-type, что там за формат.

    UPD: вам может помочь это:
    https://habr.com/ru/post/321790/
    https://github.com/mildsunrise/protobuf-inspector
    Ответ написан
  • Как войти в сферу и переехать (не знаю, что делать и сильно отчаялся)?

    учить нон-стоп все, чтобы устроиться тут в айти компанию

    Если сможете
    только с опытом перебираться (много лет, конечно займет, очень много)

    Возможный вариант. Но после обучения придётся ещё официально поработать 3+ лет.
    Зато зп будет выше, чем у вчерашнего студента.
    же накопить денег как можно больше и поехать учиться на computer science прям в Норвегию и стать студентом снова лет в 25-26

    Если для вас это выгоднее, то да + лучше сможете адаптироваться к местному языку и культуре, быстрее сможете подать на ПМЖ.
    без опыта подавать резюме через какое-то время.

    Без диплома и опыта вас, скорее всего, миграционная служба не пустит, но нужно уточнять этот момент для каждой страны отдельно.
    + Врядли какой работодатель решит вас принять без опыта и диплома.

    и знакомых кейсов тоже,

    В интернете есть достаточно много интервью с людьми, которые так поступили.
    Ответ написан
    2 комментария
  • Как из inputField получить int?

    InputField input = ...;
    int number = int.Parse(input.text); // если в input.text будет лежать не число, то будет FormatException

    либо

    InputField input = ...;
    if(int.TryParse(input.text, out var number) {
      // используем number. В этом случае FormatException не выпадет, но тогда будет возникать ощущение, будто ничего не работает.
    }
    Ответ написан
  • Как решить ошибку FormatException: Input string was not in a correct format. unity?

    str = int.Parse(inf_ot.text);
    str2= int.Parse(inf_do.text);

    У вас в inf_ot и ind_do не числа.
    Приведите пример текста, который хотите спарсить.

    PS: Но вообще код какой-то дикий. Я советую вам отложить юнити на потом и пока учить чистый C#.
    Замечания по коду

    public void Random()
    {
        str += str2 = otv; // Не будет работать, либо будет работать не так, как вам нужно.
    }

    R_Main - какое-то дикое сокращение, которое ничего не говорит о смысле скрипта. + В C# принято использовать PascalCase - никаких нижних чёрточек
    inf_ot, inf_do - То же самое, но ещё и транслит "от" "до"
    otvet - то же самое
    int str, str1 - лишнее сокращение + обман читателя. str большинство людей расшифровывают, как string, но тут числа
    otv - сокращение + транслит.
    Ну и парсинг чисел в апдейте - это жирноватая операция.

    PPS: вероятно, вам нужно это:

    Валидация - сюда можно ввести код, который не позволит пользователю вводит не-числа:
    https://docs.unity3d.com/ru/530/ScriptReference/UI...

    Событие ввода - чтобы не проверять текст каждый кадр:
    https://docs.unity3d.com/ru/530/ScriptReference/UI...

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

    Да. Официальный аккаунт Telegram (который "служебные уведомления") примерно это и делает
    Ответ написан
    Комментировать
  • Как вызвать метод на блейзор клиенте?

    Ошибка говорит, что HttpClient в блазоре не поддерживает Proxy
    А в коде вашей либы есть такой код
    public RestClient(Uri baseUrl, JsonSerializer serializer, IWebProxy proxy = null)
            {
                BaseUrl = baseUrl;
                Serializer = serializer;
                DefaultQueryString = new List<KeyValuePair<string, string>>();
    
                MaxRetryCount = 0;
                Proxy = proxy;
    
                HttpClient = new HttpClient(new HttpClientHandler
                {
                    Proxy = proxy // Вот из-за этой строчки происходит падение.
                });
            }


    Есть три варианта решения:
    1. Сделать форк либы и поправить эту строку.
    Но не факт, что это единственная строчка, которая вызывает несовместимые API
    2. Вызывать этот код на сервере, а клиенту передавать только данные.
    3. Написать собственный клиент для imdb
    Ответ написан
    Комментировать
  • Как это называется?

    Вы открыли exe-шник или библиотеку в блокноте видимо. Читайте про portable executable
    Ответ написан
    Комментировать
  • Возможно ли работать с 3d графикой Java?

    Да, через Opengl, например.
    https://coderlessons.com/tutorials/java-tekhnologi...
    Ответ написан
    Комментировать
  • Как решить проблему в visual studio 2019 c++?

    std::out_of_range - значит, что твой код обратился к индексу, который находится за пределами какого-нибудь списка (например)
    Крестик и подсветка строки - это студия тебе показала конкретную строку, на которой эта ошибка возникла.
    Смотри код, отлаживай - тогда сможешь найти причину ошибки.
    Ответ написан
  • Как работает gitlab pipeline?

    Вопрос - это какой-то дикий поток мыслей, по тому я скину ссылку на статью, как настроить gitlab ci для .net core
    https://dev.to/denolfe/build-net-core-applications...
    И ссылку на документацию:
    https://docs.gitlab.com/ee/ci/
    Ответ написан
    Комментировать