• Как реализовать переход по ссылке силами CSS?

    @alexalexes
    Нужно помнить, что у тега a и button по умолчанию поведение display: inline - строчные элементы.
    Если хотите, чтобы они служили там, где используются блочные элементы (display: block) и блочно-строчные (display: inline-block), как div в вашем примере. Так обеспечьте их этим свойством - указав его явно.
    Зная это, можно спокойно заменить div на a и решить вашу проблему.
    Ответ написан
    Комментировать
  • Почему две строки при загрузки linux?

    IvanU7n
    @IvanU7n
    это, на удивление, меню загрузчика
    избавиться скорее всего никак, т.к. первая по умолчанию должна загружаться, а вторая на всякий случай для восстановления
    Ответ написан
  • Как поделить api на части с различным функционалом?

    vabka
    @vabka
    Токсичный шарпист
    Лучше это не через поля, а через методы реализовывать - тогда будет более дёшево, да и женерик лишний можно будет убрать.

    Что-то типа
    struct Api {
      key: String
    }
    struct ApiPart<'a>{
      api: &'a Api
    }
    
    impl Api {
      pub fn part<'a>(&'a self) -> ApiPart<'a> {
        ApiPart {api: self}
      }
    }


    PS:
    Вот так делать точно не нужно:
    Не надо на ровном месте городить указатели и unsafe.
    У тебя из-за unsafe получился dangling pointer.
    fn new(api_key: *const String) -> Self {
            let api_key = unsafe { &*api_key };
            return Self {
                api_key,
            };
        }


    Норм практика делать вот так, в случае строк:
    fn new(api_key: impl Into<String>) -> Self {
            let api_key = api_key.into();
            return Self {
                api_key,
            };
        }


    Боксить строки также не нужно - они и так в куче лежат.
    Ответ написан
    6 комментариев
  • Как создать скрытый input для передачи технической информации на другую страницу?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Тип hidden не подходит, потому что его можно редактировать? А что из html вы вообще можете НЕ редактировать?

    Вам тут стоит понять одну очень важную штуку: html/css/js образуют client side. Вы должны понимать, почему это называется вообще "Клиентом"? Потому что эта вся информация полностью загружается на клиента и он имеет к ней доступ.

    По этому существует server side - часть программной системы, к какой конечный пользователь не имеет доступа, в отличии от клиентской части.

    Цель сервера - обрабатывать запросы с клиента. Первое, что делает сервер с данными, которые ему отправил клиент - ВАЛИДИРУЕТ. Соответственно, если данные не валидны - запрос разворачивается обратно на клиента и отдаёт ему какую-то ошибку

    Это всё так, к слову. Вам важно понять, что клиент может редактироваться, вы никак не сможете этого избежать. Но этого не стоит бояться, т.к. то, за что вы переживаете должно обрабатываться на сервере.

    Client side должен обрабатывать данные перед отправкой на сервер (Но сервер обязан их повторно валидовать) и после получения данных от сервера для наилучшего представления ИХ конечному пользователю

    UPD: для справки. Вы можете полностью редактировать html в режиме реального времени, но он не будет сохранён для всех пользователей, а только для вас, т.к. эта часть загружается только два вас как для конечного пользователя. Сам html хранится на сервере и является результатом работы сервера. Эту часть html, что вы видите в браузере вы можете редактировать.

    Вы можете динамически подключать стили или их удалять. Можете менять скрипты, удалять их из сайта (Тогда отправка вообще работать не будет и, соответсвенно, отключится весь функционал, за который отвечаел скрипт) или добавить новые скрипты. А можете вообще написать свой скрипт прямо в консоли браузера и он будет работать.

    Проблема в том, что даже после элементарной перезагрузки страницы (Через Ctrl + R или другими способами) это всё будет утеряно и вам загрузится тот самый html/css/js, который является результатом рабыты сервера того сайта, который вы просматриваете
    Ответ написан
    1 комментарий
  • Как сжать диск на Linux?

    @SunTechnik
    90%, то что Вы хотите - у Вас не получится.

    Расширить раздел в Windows можно только если свободное место следует сразу после текущего тома. В Linux вы освободить сможете (если сможете), только конец диска.

    Судя по именам - у Вас LVM. Уменьшить размер LVM группы - отдельна задача.

    Логичнее - бэкапить linux, после чего растягивать Windows, разворачивать из бэкап Linux.
    Ответ написан
    2 комментария
  • Персональный гугл, если ли?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Google - это прежде всего инфраструктура, а не софт. Как только сможете позволить себе потратить десятки миллиардов долларов на постройку ЦОДов, можно и персональный Google будет завести.
    Ответ написан
    3 комментария
  • Датаграмма UDP может прийти в неверном порядке. Как это?

    @pfg21
    ex-турист
    такое невозможно, внутри пакета UDP последовательность данных изменится не может.
    датаграмма UDP упаковывается в пакет IP, который может фрагментироваться.
    перед передачей данных в драйвер UDP, драйвер IP восстановит правильную последовательность данных, либо дропнет весь пакет, если все фрагменты не придут в течении тайм-аута.
    для прямого запрета фрагментации пакета IP нужно устанавливать флаг DF (don't fragment) в пакете IP.

    а в случае когда 012 и 345 посланы в разных пакетах UDP вполне. восстановление последовательности пакетов в UDP нет и последний по отправке пакет может прийти раньше первого посланного.
    Ответ написан
    Комментировать
  • Как в KDE Plasma поставить русскую локаль, но оставить английский язык интерфейса?

    @xibir
    язык интерфейса устанавливается в
    System Settings -> Regional Settings

    переключение языков ввода
    System Settings -> Input Devices -> Keyboard -> Layouts

    локаль прописывается в /etc/default/locale

    При изменении языка интерфейса plasma прописывает переменные окружения в $HOME/.config/plasma-localerc и они переопределяют /etc/default/locale. Вообщем надо или удалить plasma-localerc и тогда будет локаль из /etc/default/locale, или прописать в plasma-localerc что надо. Ну и перелогиниться.
    Ответ написан
    1 комментарий
  • Какие инструменты есть, чтобы организовать "песочницу" для запуска скриптов?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Как минимум три варианта (точнее два в одном и один)
    - libvirt - полностью изолированная виртуалка
    - контейнеры:
    - docker
    - или lxc/lxd
    Ответ написан
    Комментировать
  • В C++ есть TCP и UDP?

    @res2001
    Developer, ex-admin
    Базовый функционал сети предоставляет операционная система, там то же есть разделение на TCP и UDP (точнее на SOCK_STREAM и SOCK_DGRAM). Любое приложение, не зависимо от языка программирования, использует функционал, предоставляемый ОС, если каким-то образом не реализует его самостоятельно.
    В стандартной библиотеке С++ нет никаких оберток над базовыми функциями ОС. Но из коробки вы легко можете использовать базовые функции ОС, ничего отдельно ставить не нужно, все доступно в рамках системных библиотек и заголовочных файлов.
    Но для удобства можно использовать какую-нибудь библиотеку, обертку.
    Ответ написан
    Комментировать
  • Как создать абстрактную фабрику, не ссылаясь на реализацию?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    В приложении, которое использует Dependency Injection можно выделить 2 "области":
    - Composition Root
    - Остальное приложение

    Composition Root - это место в котором собираются все зависимости воедино. О всех реализациях зависимостей должен знать только он.
    Остальное приложение - это (тафтология) все остальное приложение. Они используют только интерфейсы и другие абстрации.

    Обычно Composition Root - это входная точка приложения. В нем создается эта самая ServiceFactoryImpl (стандартные реализации, из конфигурации могут быть прочитаны флаги, создан в зависимости от платформы и т.д.), а затем как интерфейс IServiceFactory, передается в остальные места.

    Т.е. в коде это будет как-то так
    #include <IServiceFactory.h>
    
    class Sample {
    private:
        IServiceFactory _factory;
    public:
        Sample(IServiceFactory factory): _factory(factory) { }
        DoSomething() { 
            auto service = _factory.CreateService();
            service.MakeStuff();
        }
    }
    
    int main() {
        auto factory = ServiceFactoryImpl(); // Читаем конфигурацию, параметры ОС и др.
        auto sample = Sample(factory);
        sample.DoSomething();
    }
    Ответ написан
    1 комментарий
  • Как создать абстрактную фабрику, не ссылаясь на реализацию?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Да, где-то в "верхних слоях кода" тебе всё равно надо будет явно сослаться на ServiceFactoryImpl, от этого не уйти. Но это совсем маленький "грязный" участок. А в остальном коде ты спокойно работаешь с этим экземпляром IServiceFactory и создаваемыми с помощью него имплементациями IService
    Ответ написан
    Комментировать
  • Не получается установить библеотеку, что делать?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Перевести ошибку, можно со словарем - и понять что возможно дело в правах пользователя.
    А еще лучше - почитать про виртуальные окружения, и работать с ними.
    Ответ написан
    Комментировать
  • Как получить случайные числа в C++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    srand вызывайте только один раз где-нибудь в начале программы. А потом сколько угодно раз используйте rand.

    srand устанавливает состояние генератора псевдослучайных чисел. В качестве seed вы там используете количество миллисекунд, которое целую миллисекунду одинаковое, поэтому состояние генератора у вас в каждой функции rand_offer одно и то же - поэтому числа и генерируются одни и теже. sleep(1) лечит проблему потому, что следующий вызов посчитает другое значение count_ms.
    Ответ написан
    Комментировать
  • Что делает единичная звездочка в аргументах метода Python?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Что делает единичная звездочка в аргументах метода Python?

    namedtuple(
    typename,
    field_names,
    *,
    rename=False,
    defaults=None,
    module=None,
    )

    Ни разу не встречал такое раньше, в документации тоже не смог откопать

    PEP 3102
    Ответ написан
    Комментировать
  • Что делает единичная звездочка в аргументах метода Python?

    @IvanTRG
    В Python звездочка (*) в списке аргументов метода используется для указания, что все аргументы после звездочки должны быть переданы как именованные аргументы. Это означает, что после звездочки все аргументы должны быть указаны с использованием их имен.
    Ответ написан
    Комментировать
  • Какую книгу выбрать для изучения алгоритмов и структур данных?

    Adamos
    @Adamos
    Бестселлер "101 вопрос на Тостере, которые новички даже не пытаются поискать".
    Ответ написан
    Комментировать
  • Как посмотреть массив до применения map?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    И что тут особенного? Объекты в JS копируются по ссылке.
    const a1 = [{ "id": "1" }, { "id": "2" }, { "id": "3" }];
    Здесь создаётся массив, в котором три ссылки на объекты.

    let a3 = [...a1];
    Здесь производится декомпозиция массива и из этих трёх ссылок формируется новый массив. Сами ссылки при этом остаются неизменными.

    let a4 = a1.slice();
    Опять таки, ссылки не меняются и ведут на те же самые объекты.

    const a2 = a1.map(i => {
        i["name"] = "Name" + i["id"];
        return i;
    });
    Здесь в объекты по ссылкам добавляется новое поле и как результат каллбэка возвращается ссылка на объект. Соответственно в a2 те же самые ссылки.

    В результате имеем четыре массива, в которых ссылки на одни и те же объекты.

    Чтобы не менять исходные объекты, надо из них строить новые:
    const a2 = a1.map((o) => ({ ...o, name: `Name${o['id']}` }));
    Ответ написан
    1 комментарий
  • Как можно сделать перенаправление с HTTPS на SSH в Git?

    Vapaamies
    @Vapaamies
    Разработчик будущей ОС для ПК размером 250 МБ
    Если SSH нужен именно для push, в Git поддерживается отдельный pushurl (качать по одному пути, толкать по другому):
    git remote set-url --add --push origin git@github.com:Username/repository
    Ответ написан
    Комментировать
  • Какой смысл ставить мощный Wi-Fi модуль в ограниченный роутер?

    vabka
    @vabka
    Токсичный шарпист
    Как минимум из-за того что не всякий роутер будет подключен к интернету кабелем.
    Конкретного у этого заявлена поддержка mesh-сетей. => К кабелю можно подключить роутер подороже и с нормальными портами, а вот этот недорогой использовать для расширения покрытия.

    мощный Wi-Fi модуль

    А кто тебе сказал, что там мощный wifi модуль?

    PS:

    Как показывает практика, даже в роутерах с WAN/LAN портами скоростью до 100 Мбит/с (если по тарифу 100 Мбит/с) есть смысл в поддержке стандарта 802.11ac Wi-Fi 5 GHz. Так как по Wi-Fi в диапазоне 2.4 GHz практически нереально выжать 100 Мбит/с. А в диапазоне 5 GHz без проблем можно получить эту скорость.


    А ещё тут другие отвечающие правильно заметили, что в локальной сети устройства между собой тоже могут общаться, хотя лично мне кажется, что для дома это не очень актуально (тот же nas я ни разу не видел, чтобы подключался по wifi, а не кабелем)
    Ответ написан
    Комментировать