Задать вопрос
  • Почему не удаётся подключиться к PhpMyAdmin?

    phpmyadmin - это не база, а только панель управления базой.
    Тебе же нужно узнать адрес и порт mysql, и использовать их.

    PS:
    1. Лучше пересмотри свою идею использования DbUtils и посмотри, как в других проектах работают с базой. На том же metanit есть примеры работы с Dapper и EF Core. Иначе он у тебя превратится со временем в сотню утилит и твой код в лучшем случае будет выглядеть как какая-то процедурщина а-ля 1С, а в худшем случае - как спагетти. И это не говоря об эффективности.
    2. Вместо поделия Oracle под названием MySql.Data лучше использовать библиотеку MySqlConnector (причины тут: https://mysqlconnector.net/)
    Ответ написан
    1 комментарий
  • Что нужно для подключения и работы антенны усиления интернета?

    В наборе явно не хватает модема, в который будет втыкаться антенна.

    Ну и пассивная антенна физически не может ничего усилить, и тем более интернет.
    Ответ написан
    9 комментариев
  • Npm not found docker?

    По вполне понятным причинам, внутри alpine образа нет npm, как nodejs.
    Тебе нужно их отдельно доустановить через
    RUN apk add --update nodejs npm
    Ответ написан
    Комментировать
  • Какой фреймворк использовать чтоб получить похожий интерфейс?

    Для графиков - chart.js
    Меню слева и всякие тултипы - tippy.js
    Стили - tailwind

    Но похожий интерфейс можно на чём угодно сделать.
    Какого-то прям UI-фреймворка с готовыми компонентами тут нет (хотя может есть на стороне livewire. Не буду утверждать)
    Ответ написан
    Комментировать
  • Как отменить несколько коммитов в форкнутом репозитории?

    git clone <адрес твоего форка>
    cd <...>
    git reset <commit hash того коммита, до которого хочешь откатиться>
    # можно оставить всё в мастере, но тогда надо предыдущую команду вызывать с --hard и сделать потом git push --force
    # а можно создать новую ветку через git branch и git checkout и потом запушить её через git push
    Ответ написан
    1 комментарий
  • Существуют ли в природе GUI-клиенты (на локальной Ubuntu) для работы с удаленным Git на VPS?

    А зачем работать с удалённым гитом?
    Просто выставляешь в своём локальном гите origin, всю работу делаешь локально, а потом пушишь.
    Ответ написан
    5 комментариев
  • В чем отличие реляционных от нереляционных БД?

    Секунда факт-чекинга:

    Кассандра хранит данные не в таблицах, а в семействах столбцов aka в разреженной матрице.
    + В ней нельзя просто так заджоинить или отфлитровать по какому-нибудь полю.
    + Соответственно нет никакой гарантии целостности на уровне ссылок на сущности из другой таблицы.

    А NoSQL это не только реляционное/нереляционное, но и про нарушение ACID и использование самого по себе SQL
    Ответ написан
  • Как присвоить массиву 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
    Ответ написан
    Комментировать