Задать вопрос
  • Как присвоить массиву int значение символа из строки в строковом массиве?

    Ошибка возникает из-за того что Convert.ToInt32(char) выдаёт код символа, а не число.
    В твоём случае нужно так:
    var text = "123 321";
    var statistics = new int[10];
    var arrStr = text.Split(' '); // И не надо ничего предполагать. Под индексом 0 лежит 123
    
    Console.WriteLine(arrStr[0][0]); // выдаст 1 
    // Ошибка из-за того что Convert.ToInt32(arrStr[0][0]) == 49 - это код символа '1'
    // statistics[Convert.ToInt32(arrStr[0][0])] = 1; // ошибка переполнение массива
    
    // Гарантируем, что arrStr[0][0] - цифра и парсим её.
    var digit = arrStr[0][0];
    var idx = digit is >= '0' and <= '9'
      ? digit - '0'
      : throw new InvalidOperationException("Not a digit");
    statistics[idx] = 1; // Нет ошибки
    Ответ написан
    Комментировать
  • Как передать картинку телеграмм-боту?


    что я делаю не так подскажите пожалуйста?

    Ты пытаешься вызывать методы по цепочке там, где это не доступно.
    Методы set* тут возвращают void, по тому и нельзя написать так, как ты написал.

    Нужно так:

    SendPhoto msg = new SendPhoto();
    msg.setChatId(chatId);
    msg.setPhoto(id);
    msg.setCaption(caption);
    Ответ написан
    1 комментарий
  • Можно ли использовать .net пакеты в godot?

    Mono это тоже .net, так что не должно быть проблем.

    Но в случае с nlua проблемы будут, тк он нацелен на net6, а не netstandart
    Ответ написан
  • Стоит ли адаптировать сайт под IE 10 в 2022-м году?

    Верстать под те, которые нужны заказчику.
    Если заказчик не знает и вроде не должно, то под IE можно не верстать.
    Кому-то может даже IE6 всё ещё нужен
    Ответ написан
    Комментировать
  • Как правильно описать метод на rust?

    vabka
    @vabka Куратор тега Rust
    У тебя проблема не в трейтах, а в том что ты пытаешься обращаться к полям структуры, которая передаётся как T.
    Решить эту проблему можно добавлением ещё одного трейта и ограничением женерика.
    Вот так должно работать:
    pub struct Animal {
        pub name: String,
        pub age: i32,
        pub strength: i32,
    }
    
    pub struct Person {
        pub name: String,
        pub age: i32,
        pub strength: i32,
    }
    // Выделяем новый трейт, который позволяет получить силу
    trait Strength {
        fn strength(&self) -> i32;
    }
    
    trait BaseTrait {
        fn init(&self);
        
        // В старом трейте принимаем target по ссылке и ограничиваем, что принимаем только такой target, который реализует trait Strength
        fn stronger_than<T>(&self, target: &T) -> bool
        where
            T: Strength;
    }
    
    impl Strength for Person {
        fn strength(&self) -> i32 {
            self.strength
        }
    }
    
    
    impl Strength for Animal {
        fn strength(&self) -> i32 {
            self.strength
        }
    }
    
    impl BaseTrait for Person {
        fn init(&self) {
            println!("Hello, im Person: {}", self.name);
        }
    
        fn stronger_than<T>(&self, enemy: &T) -> bool
        where
            T: Strength,
        {
            self.strength > enemy.strength() // вызываем метод, вместо обращения к полю
        }
    }
    
    impl BaseTrait for Animal {
        fn init(&self) {
            println!("Hello, im Animal: {}", self.name);
        }
    
        fn stronger_than<T>(&self, enemy: &T) -> bool
        where
            T: Strength,
        {
            self.strength > enemy.strength()
        }
    }
    
    fn main() {
        let person = Person {
            name: String::from("John"),
            age: 25,
            strength: 12,
        };
        let animal = Animal {
            name: String::from("Elephant"),
            age: 5,
            strength: 360,
        };
    
        person.init();
        animal.init();
        
        if person.stronger_than(&animal) {
            println!("Person is stronger than animal");
        }
        if animal.stronger_than(&person) {
            println!("Animal is stronger than person")
        }
    }

    Либо можно вынести функцию stronget_that в отдельный трейт и реализовать его для каждого T, по аналогии с ответом Василий Дёмин, но тогда реализаций придётся писать целую гору.
    Ответ написан
    Комментировать
  • Насколько большую роль в IT-карьере играют связи?

    Нет связей - тебе придется трудно.

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

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

    Подобным занимаются всякие компании, которые занимаются арбитражем трафика.
    В G Play / App Store загружают нормальное приложение, а потом распространяют реферральные ссылки, при скачивании по которым этого приложения, вместо оригинального контента будет показано казино или что-нибудь ещё подобное.
    При этом сама компания эта к казино отношения не имеет - казино платит за привлечение клиентов.

    Кто с подобным сталкивался?

    Работал в такой компании, которая и таким занималась, и ещё делали сайт, на котором можно будет удобно менеджить такие ссылки и приложения.

    В принципе, обычно, всё честно платят, но работали по ГПХ (в моём случае всё было честно).
    Если у вас всё будет по договору, то бояться нечего - вопрос только к тому, хотите ли вы таким заниматься.
    Ещё подобные компании часто не очень стабильны и в один день вам могут сказать, что они сокращаются и ваши услуги больше не нужны.
    Ну и возможности роста, как мобильного разработчика, у вас не будет.
    + С менеджментом могут быть сложности. Сам со стороны наблюдал, как начальник десятка таких бедолаг ругался на одного из разрабов, который делает всё очень хорошо, но делал за день максимум два таких приложения, в то время как некоторые коллеги делали их по 10 штук.
    Короче нервно достаточно

    PS: А как компания называется?
    Ответ написан
    Комментировать
  • Может ли прошивка телефона андроид помочь от взлома,удаленного доступа к нему?

    "прошивка" - это точно такой же андроид. Так что все "дыры", которые актуальны для Android в целом - будут актуальны и для большинства альтернативных прошивок.

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

    Но чисто теоретические никто не запрещает завести бэкдоры сразу в прошивку, наподобие с тем, как делали с Anom
    Ответ написан
  • Юнити ошибка cs0120 как исправить?

    Найти место (файл Assets/DamageScript.cs, строка 11), где вызывается метод PlayerManager.Damage
    И вызывать его на конкретном экземпляре класса PlayerManager, тк метод не статический и его нельзя вот так вызвать.
    Получить конкретный экземпляр можно при помощи new PlayerManager или при помощи GetComponent

    Либо сделать метод Damage статическим, если это допустимо (скорее всего не допустимо, тк он скорее всего должен иметь доступ к состоянию конкретного объекта).
    Ответ написан
    1 комментарий
  • Есть ли реклама в мобильной вебверсии вк?

    Да. Есть рекламные блоки в ленте и посты в сообществах с пометкой "реклама" (из рекламной сети)
    Ответ написан
    7 комментариев
  • Как использовать вк для предачи данных?

    Чисто в теории можно использовать видеозвонки/аудио звонки, но хз, на сколько это применимо.
    Нужно будет как-то в цифровой вид кодировать информацию (что-то наподобие тонов для аудио и qr-кодов в видео).
    Быстрее чем диалап в плане пропускной способности врядли получится, тк нужно бороться с потерями пакетов, сжатием, и добавлять какую-то избыточность, чтобы защититься от больших потерь.
    API для звонков вроде нет, так что придётся самостоятельно реверсить (в открытом доступе готовую реализацию не видел)

    В общем если учитывать все нюансы и гарантировать получение, то задача по сложности даже выше будет, чем реализация своего QUIC.
    Использовать эту штуку, кмк, можно только для того, чтобы получать безлимитный канал у опсосов, которые дают безлимит только на соцсети. Но с учётом трудозатрат - выгоднее доплатить 500р в месяц (а может даже больше) за полноценный безлимит.
    Больше задач для такой штуки я придумать не могу
    Ответ написан
    Комментировать
  • Как загрузить и запустить бота на сервер с ос Ubuntu 20.04 LTS "Focal Fossa"?

    "Бот" - это, как правило, обычная программа, которую можно запустить как и любую.

    В минимальном варианте тебе нужно просто запустить её из консоли.
    Чуть правильнее - через systemd (лучше прочитать полноценную статью про это)
    Вариант со звёздочкой - собрать Docker-контейнер и тогда не придётся особо думать о том, какая ОС стоит на сервере
    Ответ написан
    Комментировать
  • Как преобразовать/скачать книгу с сайта "онлайн-библиотеки"?

    Так как на сайте не предусмотрена такая возможность - только реверсить.
    На сайте нет никаких защит от пиратства, так что можешь зайти во вкладку network и увидеть, какие отправляются запросы.
    В данном случае используется graphql и для получения списка страниц используется такой запрос:
    query Book($id: ID!) {
      book(id: $id) {
        id
        title
        authors {
          full_name
          __typename
        }
        docviewer_htmls_urls
        docviewer_thumbnails_urls
        outline
        is_on_shelf
        bookmarks {
          page
          text
          ts
          __typename
        }
        search_index_url
        text_by_pages_url
        last_read_page
        __typename
      }
      me {
        uid
        __typename
      }
    }

    Где id - Id книги.
    В ответ приходит такое:
    {
        "data": {
            "book": {
                "id": "14137",
                "title": "\u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430\u0440\u043e\u0434\u0430 \u0441\u0430\u0445\u0430 \u0438 \u0435\u0433\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u044b",
                "authors": [
                    {
                        "full_name": "\u0413\u043e\u0433\u043e\u043b\u0435\u0432 \u0410\u043d\u0430\u0442\u043e\u043b\u0438\u0439 \u0418\u0433\u043d\u0430\u0442\u044c\u0435\u0432\u0438\u0447",
                        "__typename": "Author"
                    }
                ],
                "docviewer_htmls_urls": [
                    "https:\/\/e.nlrs.ru\/online2\/view\/14137\/page_1.html"
                ],
                "docviewer_thumbnails_urls": [
                    "https:\/\/e.nlrs.ru\/online2\/view\/14137\/thumbnails\/256\/bg1_thumb_256.jpg"
                ],
                "outline": "[{\"text\":\"\u041e\u0431\u043b\u043e\u0436\u043a\u0430\",\"href\":\"#pf1\",\"children\":null},{\"text\":\"\u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u044d\u043d\u0442\u043e\u0433\u0435\u043d\u0435\u0437\u0430 \u044f\u043a\u0443\u0442\u0441\u043a\u043e\u0439 \u043d\u0430\u0440\u043e\u0434\u043d\u043e\u0441\u0442\u0438\",\"href\":\"#pf4\",\"children\":null},{\"text\":\"\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435\",\"href\":\"#pf5\",\"children\":null},{\"text\":\"\u0413\u043b\u0430\u0432\u0430 \u043f\u0435\u0440\u0432\u0430\u044f. \\n\u0418\u0421\u0422\u041e\u041a\u0418 \u042d\u0422\u041d\u041e\u0413\u0415\u041d\u0415\u0417\u0410 \\n(\u0441\u043a\u0438\u0444\u043e-\u0445\u0443\u043d\u043d\u0441\u043a\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432 \u044f\u043a\u0443\u0442\u0441\u043a\u043e\u0439 \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u0435)\",\"href\":\"#pf5\",\"children\":null},{\"text\":\"\u0413\u043b\u0430\u0432\u0430 \u0432\u0442\u043e\u0440\u0430\u044f. \u0414\u0420\u0415\u0412\u041d\u0418\u0415 \u0418 \u0421\u0420\u0415\u0414\u041d\u0415\u0412\u0415\u041a\u041e\u0412\u042b\u0415 \u0422\u042e\u0420\u041a\u0421\u041a\u0418\u0415 \u041f\u041b\u0415\u041c\u0415\u041d\u0410 \u042e\u0416\u041d\u041e\u0419 \u0421\u0418\u0411\u0418\u0420\u0418, \u0426\u0415\u041d\u0422\u0420\u0410\u041b\u042c\u041d\u041e\u0419 \u0410\u0417\u0418\u0418 \u0418 \u041f\u0420\u0418\u0411\u0410\u0419\u041a\u0410\u041b\u042c\u042f \\n\u0412 \u042d\u0422\u041d\u041e\u0413\u0415\u041d\u0415\u0417\u0415 \u042f\u041a\u0423\u0422\u041e\u0412.\\n\u0421\u041b\u041e\u0416\u0415\u041d\u0418\u0415 \u041e\u0421\u041d\u041e\u0412 \u0414\u0420\u0415\u0412\u041d\u0415\u042f\u041a\u0423\u0422\u0421\u041a\u041e\u0419 \u041a\u0423\u041b\u042c\u0422\u0423\u0420\u042b\",\"href\":\"#pf1c\",\"children\":null},{\"text\":\" \u0413\u043b\u0430\u0432\u0430 \u0442\u0440\u0435\u0442\u044c\u044f. \u0418\u0421\u0422\u041e\u0420\u0418\u041a\u041e-\u041a\u0423\u041b\u042c\u0422\u0423\u0420\u041d\u042b\u0415 \u0421\u0412\u042f\u0417\u0418 \u042f\u041a\u0423\u0422\u041e\u0412 \u0421 \u0421\u041e\u0412\u0420\u0415\u041c\u0415\u041d\u041d\u042b\u041c\u0418 \u0422\u042e\u0420\u041a\u041e\u042f\u0417\u042b\u0427\u041d\u042b\u041c\u0418 \u041d\u0410\u0420\u041e\u0414\u0410\u041c\u0418 \u042e\u0416\u041d\u041e\u0419 \u0421\u0418\u0411\u0418\u0420\u0418 \u0418 \u0411\u0423\u0420\u042f\u0422\u0410\u041c\u0418\",\"href\":\"#pf30\",\"children\":null},{\"text\":\"\u0427\u0430\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f. \u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u044d\u0442\u043d\u043e\u0433\u0435\u043d\u0435\u0437\u0430 \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u044b \u043d\u0430\u0440\u043e\u0434\u0430 \u0441\u0430\u0445\u0430 \u043d\u0430 \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u041b\u0435\u043d\u0435\",\"href\":\"#pf5b\",\"children\":null},{\"text\":\"\u0413\u043b\u0430\u0432\u0430 \u043f\u0435\u0440\u0432\u0430\u044f. \u0410\u0420\u0425\u0415\u041e\u041b\u041e\u0413\u0418\u0427\u0415\u0421\u041a\u0418\u0415 \u041f\u0410\u041c\u042f\u0422\u041d\u0418\u041a\u0418 \u0426\u0415\u041d\u0422\u0420\u0410\u041b\u042c\u041d\u041e\u0419 \u042f\u041a\u0423\u0422\u0418\u0418 \u0421\u0420\u0415\u0414\u041d\u0415\u0412\u0415\u041a\u041e\u0412\u042c\u042f, \u0421\u0412\u042f\u0417\u0410\u041d\u041d\u042b\u0415 \u0421 \u041f\u0420\u041e\u0418\u0421\u0425\u041e\u0416\u0414\u0415\u041d\u0418\u0415\u041c \u042f\u041a\u0423\u0422\u041e\u0412 (\u0420\u0423\u0411\u0415\u0416 XIII-XIV -  XVI \u0432\u0432.)\",\"href\":\"#pf5c\",\"children\":null},{\"text\":\"\u0413\u043b\u0430\u0432\u0430 \u0432\u0442\u043e\u0440\u0430\u044f. \\n\u0410\u0420\u0425\u0415\u041e\u041b\u041e\u0413\u0418\u0427\u0415\u0421\u041a\u0418\u0415 \u041f\u0410\u041c\u042f\u0422\u041d\u0418\u041a\u0418 \u042f\u041a\u0423\u0422\u0418\u0418 XVI-XVIII \u0432\u0432. \u0418 \u0417\u0410\u0412\u0415\u0420\u0428\u0415\u041d\u0418\u0415 \u0424\u041e\u0420\u041c\u0418\u0420\u041e\u0412\u0410\u041d\u0418\u042f \u0422\u0420\u0410\u0414\u0418\u0426\u0418\u041e\u041d\u041d\u041e\u0419 \u041a\u0423\u041b\u042c\u0422\u0423\u0420\u042b \u041d\u0410\u0420\u041e\u0414\u0410 \u0421\u0410\u0425\u0410\",\"href\":\"#pf6a\",\"children\":null},{\"text\":\"\u0413\u043b\u0430\u0432\u0430 \u0442\u0440\u0435\u0442\u044c\u044f. \\n\u0421\u041e\u041e\u0422\u041d\u041e\u0428\u0415\u041d\u0418\u0415 \u041f\u0420\u0418\u0428\u041b\u042b\u0425 \u0418 \u0410\u0411\u041e\u0420\u0418\u0413\u0415\u041d\u041d\u042b\u0425 \u042d\u041b\u0415\u041c\u0415\u041d\u0422\u041e\u0412 \u0412 \u0422\u0420\u0410\u0414\u0418\u0426\u0418\u041e\u041d\u041d\u041e\u0419 \u041a\u0423\u041b\u042c\u0422\u0423\u0420\u0415 \u042f\u041a\u0423\u0422\u041e\u0412\",\"href\":\"#pf7b\",\"children\":null},{\"text\":\"\u041b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430\",\"href\":\"#pf8e\",\"children\":null},{\"text\":\"\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\",\"href\":\"#pf91\",\"children\":null}]",
                "is_on_shelf": true,
                "bookmarks": [],
                "search_index_url": "https:\/\/e.nlrs.ru\/get-online2-search-index\/14137\/full",
                "text_by_pages_url": "https:\/\/e.nlrs.ru\/get-online2-text-by-pages\/14137\/full",
                "last_read_page": 8,
                "__typename": "Book"
            },
            "me": {
                "uid": "163217",
                "__typename": "User"
            }
        }
    }

    Слать нужно на https://e.nlrs.ru/graphql
    Ответ написан
    Комментировать
  • Ошибка CS0200 - Unity?

    Комментировать
  • TypeScript делает из JS СИ подобный язык?

    JS и так си-подобный.
    TS только даёт ему статическую типизацию.

    php не нужны расширения наподобие ts, тк у него вроде и так уже появилась опциональная статическая типизация.

    Python кстати тоже си-подобный, не смотря на то что фигурные скобки в нём заменены на отступы
    Ответ написан
    Комментировать
  • Какое существует ПО для построения информационно-аналитической системы?

    Вы описываете какое-то волшебное приложение, которое умеет работать с любыми данными и делать с ними что угодно.

    Такие продукты не совсем существуют.

    Скорее всего вам нужна какая-то платформа типа 1С, в которой вы сможете писать свой код для обработки данных.
    Но ИМХО смысла в этом нет и вы зря сразу так взяли требование

    минимальное количество самописного кода, вместо этого использовать готовые продукты

    Брать готовую ОС, СУБД, и веб-сервер - это нормально.
    Искать готовое решение прикладных задач - бессмысленная трата времени.
    Ответ написан
    2 комментария
  • Каким будет оптимальный вид представления комплексных данных (таблица/json)?

    Если GameProfile - уникальная и самостоятельная сущность, которая много где ещё используется, и при этом может существовать без пользователя, то новую таблицу лучше сделать, и дать ей свой Id

    Если GameProfile - value object (как дата например), то лучше сделать две дополнительные колонки в таблице с пользователями. Аналогично, если GameProfile не может существовать без пользователя и он всегда будет ровно один на одного пользователя
    Ответ написан
    Комментировать
  • Греется ли БП сверху?

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

    Во многих СУБД есть расширения для работы с пространственными и гео-данными.
    Например в postgres - PostGIS.
    Тебе нужно просто для каждого пользователя определить геолокацию как широту-долготу, а поиск в определённом радиусе уже будет реализован в postgis.

    Это будет сильно быстрее чем "сравнить всех со всеми" благодаря специальным индексам
    Ответ написан
    Комментировать
  • Предопределено ли присвоение типу данных значения, не помещающегося в этот тип данных?

    Да, если исходное значение не помещается в новый тип - поведение будет зависеть от реализации.

    Где-то может отбросить байты, а где-то может упасть с ошибкой
    Ответ написан
    Комментировать