Задать вопрос
  • Простой счётчик без БД (допустим на основе txt файла)?

    @alexalexes
    Простое решение - ничего не добавлять, а просто правильно смотреть access_log, группируя ip адреса при просмотре и сортируя по частоте появления в логе.
    Ответ написан
    2 комментария
  • Раздвоение интернет кабеля провайдера. Можно ли разделить интернет кабель провайдера на два разных WI-FI роутера?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Протянуть кабель от второго дома до первого и разместить в нём второй роутер в режиме стандартного ретранслятора/свитча, а кабель в первом доме подключив кабель в первый, основной роутер.
    Кабель провайдера -> Роутер 1 в доме 2 -> Свой кабель между домами -> Роутер 2 в доме 1

    Протягивать кабель лучше всего под землёй в стандартной ПНД трубе - 30 метров всего ничего. Глубины достаточно на два-три штыка лопатой и желательно хоть немного песочком присыпать - как снизу так и сверху. Легко за день копается в неспешном темпе, если грунт не каменистый или не глина, конечно же.
    Ответ написан
    3 комментария
  • Не будет ли конфликтов между виндой и линуксом, если линукс поставить второй системой?

    VoidVolker
    @VoidVolker Куратор тега Windows
    Dark side eye. А у нас печеньки! А у вас?
    Если вам для учебных целей или просто пощупать - то ставьте VirtualBox, в него устанавливайте линукс и будет у вас прекрасная игровая площадка, которую не жалко сломать и от которой не зависит ваша основная система. А вот ставить линукс второй системой имеет смысл только если вам в линуксе нужен 3D и графика. А ещё лучше ставить только в случае, если вы знаете или хотите изучить механизмы работы загрузки нескольких разных ОС и их взаимодействие на собственном опыте. Или есть хороший знакомый, который это всё знает и умеет чинить. Проблема двух ОС в том, что у разных разработчиков разных ОС и разных дистрибутивов свои понятия о том, как должны взаимодействовать несколько ОС, плюс разные конфигурации оборудования - всё вместе это даёт такой дикий коктейль возможностей, что никогда не угадаешь, что может пойти не так. При установке ОС установщик может: проигнорировать существующий загрузчик и добавить его запись в свой загрузчик, добавить запись о новой ОС в существующий загрузчик, заменить его своим и добавить запись о старой ОС в свой список (или не добавить), не ставить вообще никакой загрузчик для целевой ОС, может просто удалить его, может полностью удалить существующую ОС и т.п. Плюс существует еще куча всяких конфигураций железа и ПО: BIOS, UEFI, MBR, GPT, SATA, NVME, разные виды разделов, установка ОС на один диск или на несколько, может быть больше двух разных ОС и т.п. и т.д. А ещё современные ОС периодически при обновлении лезут в загрузчики свои и как результат, при любом обновлении любой ОС всё может поломаться (увы, реальный факт из практики - что винда, что линукс уже не раз так делали).

    В целом рекомендация будет следующая:
    1. Отключить в винде быструю загрузку (FastBoot)
    2. Физически отключить диск с виндой от ПК
    3. Выбрать в БИОС загрузку с диска, куда будете ставить линукс
    4. Установить линукс
    5. Подключить диск с виндой обратно
    6. В загрузчик линукс добавить запись загрузчика винды
    7. Загрузиться в винду
    8. Добавить в загрузчик винды запись линукса
    9. В BIOS выбрать загрузочный диск основной ОС

    Т.о. у каждой ОС будет свой независимый загрузчик на своём диске и когда одна из ОС или диск сломается - у вас будет вторая независимая ОС, которая всё ещё будет работать.

    Альтернативный вариант - использовать как основной загрузчик что-то типа Clover. Но там тоже есть свои нюансы.
    Ответ написан
    4 комментария
  • Как интегрировать python код в tauri?

    fenrir1121
    @fenrir1121
    Начни с документации
    Есть два пути
    - Использовать pyo3
    - Использовать sidecar в tauri (пример с питоном)

    Оба способа на мой взгляд сложнее и труднее поддерживаются, чем переписать. Код для авторизации лежит прямо в examples в oauth2-rs
    Ответ написан
    Комментировать
  • Возвращение двух типов Rust?

    fenrir1121
    @fenrir1121
    Начни с документации
    В вашем случае достаточно возвращать Result<Client>. А вообще вернуть несколько значений можно при помощи кортежа.
    Ответ написан
    Комментировать
  • Неправильный тип данных Rust?

    vabka
    @vabka Куратор тега Rust
    Мне кажется, тебе достаточно явно написали в сообщении, что тебе пришёл Result, а не str, как того ждёт serde_json.
    Обработай ошибку, достань Message, и из него уже строку доставай.

    Я понимаю, возможно мой вопрос глупый. Но разве сложно рассказать как это делается или дать ссылку на соотвествующие материалы. Спасибо.

    Да пожалуйста) https://doc.rust-lang.org/book/ch09-02-recoverable...
    Ответ написан
  • На чём создать прогу для обработки больших данных?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Лучше для чего именно? В общем случае - на том, что знаете или что интересно было бы изучить.
    Ответ написан
    2 комментария
  • Какая точность у float чисел IEEE754? Значение какое, число какое, без текста?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    У 32-битового вещественного числа в IEEE754 точность ~7 десятичных разрядов. То есть, для числа 500 это будет 499.9999 и 500.0001.
    Значение ε при сравнении вещественных надо вычислять исходя из значений самих чисел. Примерно так:
    bool function isEqual(float a, float b) {
        float eps = 1e-6 * max(fabs(a), fabs(b));
        return fabs(a - b) < eps;
    }
    Ответ написан
    Комментировать
  • Как получить доступ к локальной переменной?

    @Everything_is_bad
    Я понимаю, что нет доступа к переменной signup, пытался сделать её глобальной - ничего не меняется. Что я упускаю?
    нет, ты вообще не понимаешь причину. А причина проста, что будет в signup, если self.cursor.execute вернул в result пустой итератор? Поэтому всем ботописцам и тыкаем, учи сначала основы питона, порешай простые задачи, а только потом пиши ботов.
    Ответ написан
    8 комментариев
  • Как открыть локальный проект с телефона?

    @rPman
    запускай веб сервер
    php artisan serve --host=0.0.0.0
    а подключайся по ip адресу компьютера, на котором стоит веб сервер
    Ответ написан
    Комментировать
  • Как открыть локальный проект с телефона?

    dev server надо на адрес 0.0.0.0:8000 (или на адрес ноутбука в локальной сети), а подключаться к нему по адресу ноутбука.
    Ответ написан
    Комментировать
  • Как правильно собрать сеть в квартире?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Нужен один мощный роутер Keenetic на arm64, можно на даже входе, лучше конечно в комнате в центре квартиры. И от него несколько жгутов витой 6 категории, либо если дешевле, то 5е. Главное, чтобы от роутера была витая пара в другие концы квартиры, чтобы подключить один или два ретранслятора в mesh сеть. Скорее всего они вообще не понадобятся.
    Идея с коммутатором и 3 роутерами выглядит донельзя странной. Либо вы что-то не договорили, либо есть фундаментальное непонимание. Ибо как минимум загадить и так забитые в МКД диапазоны WIFI, особенно 2.4 тремя источниками на разных каналах вместо одного - очень и очень плохая идея.
    Ответ написан
    9 комментариев
  • Реально ли студенту найти работу, связанную с сетями?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Да, вполне реально. Находите подходящую вакансию, проходите собеседование, начинаете работать. Самый простой вариант - линейный монтажник любого провайдера вашего города или ближайшего крупного города/райцентра к вашему частному дому, если живёте за городом. Там даже опыт обычно не требуется.
    Ответ написан
    Комментировать
  • Почему массив с undefined не работает с методом map?

    Lynn
    @Lynn
    nginx, js, css
    методы map/foreach/filter и т.п. не работают с несуществующими элементами массива. Это явно написано в спецификации.

    https://developer.mozilla.org/en-US/docs/Web/JavaS...
    callbackFn is invoked only for array indexes which have assigned values. It is not invoked for empty slots in sparse arrays.


    Используй метод fill или статический метод Array.from (хотя это больше похоже на хак)

    const a = Array(1000).fill(1);
    или
    const a = Array.from({length:1000}, () => 1);
    Ответ написан
  • Нормально ли это часто менять языки?

    CityCat4
    @CityCat4
    Жил да был черный кот за углом...
    Язык для программиста - средство выражения своих мыслей :) Это примерно как автомеханику иметь такой ключ, сякой ключ, да еще растакой набор ключей - каждый под свой случай. Знать два-три языка неплохо - инструмент под задачу, а не наоборот.
    Ответ написан
    Комментировать
  • Нормально ли это часто менять языки?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    В начале профессионального пути это даже хорошо, позволяет расширить кругозор и стимулировать интерес. Конечно, все хорошо в меру, не стоит учить два языка одновременно или бросать один ради другого на полпути.
    Ответ написан
    Комментировать
  • Нормально ли это часто менять языки?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    ЯП — это всего лишь инструмент. Какой нравится — такой и используйте. Хотите попробовать какой-то новый — пробуйте. Ничего такого в этом нет. А уж ужасного — тем более, так что бред эти все статьи.
    Ответ написан
    Комментировать
  • TS - почему строка обрабатывается по разному в варианте с дженериком и просто строкой в mapped types?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Если кратко - "потому что так мир устроен".

    {[K in keyof T]: ...} - это специальный особый паттерн, где ты итерируешься по ключам "локального типа" внутри генерика (аналог локальной переменной внутри функции). Важен тот факт, что тип именно локальный - либо параметр генерика, либо что-то, извлеченное с помощью infer.

    В этом случае, во первых, игнорируется обработка примитивных типов, во вторых, если в T окажется массив или кортеж (если убрать ограничение на строку), то результат будет аналогичным массивом/кортежем той же конструкции, в третьих, если в T передать объединение типов, то происходит их дистрибуция, аналогичная этой, когда каждый элемент в объединении обрабатывается отдельно.

    Если чуть изменить MappedGenericStringType, то паттерн разваливается и вся вышеописанная магия исчезает:
    type MappedGenericStringType1<T, Keys extends keyof T = keyof T> = {
      [K in Keys]: any;
    };
    
    // или так
    type MappedGenericStringType2<T> = keyof T extends infer Keys extends keyof T ? {
      [K in Keys]: any;
    } : never;
    Ответ написан
    Комментировать
  • Почему не работает JSON.parse?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    - let text = `{"content":"<svg width=\"133\" height=\"510\" viewBox=\"0 0 133 510\">"}`
    + let text = '{"content":"<svg width=\\"133\\" height=\\"510\\" viewBox=\\"0 0 133 510\\">"}'

    Как получить правильный JSON:
    console.log(JSON.stringify({content: '<svg width="133" height="510" viewBox="0 0 133 510">'}))
    // '{"content":"<svg width=\\"133\\" height=\\"510\\" viewBox=\\"0 0 133 510\\">"}'
    Ответ написан
    2 комментария
  • Нужно ли ехать в Москву из региона если устраиваешься удаленно программистом?

    Если в компании нормально кадровый процесс построен и нет требования «познакомиться лично», то не нужно. Документы либо электронно подписываются, либо пересылаются почтой.
    Ответ написан
    2 комментария