• Как из одной локальной сети сделать запрос в другую локальную сеть через SSH?

    byte916
    @byte916
    Предположу, что сеть как на схеме
    spoiler
    663385f597524434273835.png
    Так же предположу, что каждый роутер работает как роутер и является DHCP сервером, раздаёт ip адреса.
    Стало быть, на роутере #2 имеется два IP адреса - 192.168.2.1 и внешний, данный ему роутером #1.
    Пакеты не проходят на роутер #2 потому что роутер #1 не в курсе, куда эти пакеты слать.
    Чтобы решить эту проблему, надо на роутере #1 создать статический маршрут, по которому пакеты будут перенаправляться на роутер #2
    Пример настроек
    6633896fb1def928046497.png
    Так же, роутер #2 нужно настроить на пропуск пакетов внутрь (настроить фаервол и прочее)

    Вариант с отключением DHCP и работой роутера как свитч тоже возможен.
    Ответ написан
    1 комментарий
  • Как изменить строчку кода HTML на чужом сайте tampermonkey?

    byte916
    @byte916
    1. Установите в браузер дополнение, которое делает js-иньекции в сайт. Например, в Firefox первое что нашлось - JS Injector.
    2. Добавьте в этом приложении, для нужного сайта такой код:
    document.querySelector('[placeholder="Employee ID"]').type='';
    Ответ написан
    1 комментарий
  • Почему не срабатывает prototype reverse на строке?

    byte916
    @byte916
    Функция Array reverse не создаёт новый массив а изменяет исходный.
    Строки являются неизменяемым типом.
    Применение к строке этой функции пытается изменить порядок букв в строке и возникает исключение.
    Ответ написан
    Комментировать
  • Как максимально оградить данные от потери?

    byte916
    @byte916
    Всё зависит от бюджета и фантазии.
    Все эти флешки, внешние диски и прочее - это ручная работа, которую можно забыть, не успеть сделать, да и в целом надо помнить.

    Проще и дешевле всего (в плане денег и автоматизации) и достаточно надежно - завести отдельно стоящий компьютер с софтовым (mdadm) рейдом 6 (когда два диска могут вылететь и ничего не исчезнет). И иметь один запасной диск на случай вылета, чтобы сразу заменить. Систему тоже на отдельном рейде, можно на зеркальном. И не забыть загрузчик тоже отзеркалить.
    Второй уровень надеожности - добавить второй компьютер. Можно без рейда. Например, свой личный или опять же отдельно стоящий. И настроить автоматическую синхронизацию, например через Syncthing.
    Третий уровень - разнести компьютеры географически. Один дома, второй на работе. Или в дата центре. Или два в разных дата центрах.
    Ответ написан
    Комментировать
  • Как логгировать в EntityFramework штатными средствами net core?

    byte916
    @byte916 Автор вопроса
    Если кратко, то логгер, судя по всему, синглтон, а БД по умолчанию не синглтон, и из-за этого возникает описанная проблема.
    В общем, вот решение задачи.
    Вместо контекста бд пробрасываем ServiceProvider
    Startup.cs

    loggerFactory.AddProvider(new DbLoggerProvider(app.ApplicationServices));


    В логгере создаем scope и получаем из сервиспровайдера экземпляр БД
    DbLogger.cs

    using (var scope = _serviceProvider.CreateScope())
    {
       var db = scope.ServiceProvider.GetRequiredService<CuDb>();
    
       db.Logs.Add(new CheckUpDb.Log() { Date = DateTime.UtcNow, LogLevel = logLevel, Message = formatter(state, exception) });
       db.SaveChanges();
    }

    Ответ написан
    Комментировать
  • Как правильно хранить секреты C# на линуксе?

    byte916
    @byte916 Автор вопроса
    В общем, оказалось это просто
    В файле сервиса просто прописать
    Environment=KEY=VALUE
    При этом, вложенные поля отделяются двойным подчёркиванием
    К примеру, ConnectionString превращается из
    {
      "ConnectionStrings": {
        "DefaultConnection": "SomeString"
      }
    }

    в
    Environment=ConnectionStrings__DefaultConnection='SomeString'


    Либо, использовать файл с переменными EnvironmentFile
    Ответ написан
    2 комментария
  • Как связать Angular и яндекс карты?

    byte916
    @byte916 Автор вопроса
    Косяк в том, что привязанные к карте события
    this.myMap.events.add('click' function(e){...}.bind(this))

    выполнялись вне ангулара, и, хоть значение переменных изменялось, ангулар не производил ChangeDetection (и принудительный вызов
    this.changeDetection.detectChanges()
    так же не приводил к обновлению View.
    И, как я уже писал, вынесение карты в отдельный компонент, а так же попытка хранить адрес внутри объекта, и попытка менять ссылку на объект, менять стратегию на OnPush - ничего не приводило к желаемому (кажется, от безысходности я перепробовал все возможные комбинации). То ли лыжи не едут, то ли со мной что-то не так)

    Моё решение
    1. Добавить в импорт и в конструктор ссылку на ngZone
    import { ... NgZone ... } from '@angular/core';
    constructor(... public zone: NgZone ...) { ... }

    2. Выполнять функцию внутри клика внутри этой самой zone
    this.myMap.events.add('click', function (e) {
      this.zone.run(() => {
    ... // <- всё что будет написано тут выполнится внутри ангулара и его контекста, и вызовет ожидаемое изменение view
    }.bind(this));

    Подробнее можно почитать в документации, на хабре, и вообще есть миллион статей на тему ngZone.

    p.s. Angular 9.1.7, Yandex Maps на текущий момент 2.1.79
    Ответ написан
    Комментировать
  • Как исправить ошибку прыжка в этом коде?

    byte916
    @byte916
    Большая буква Т
    Time.deltaTime
    Ответ написан
    Комментировать
  • Почему компьютер не работает после сборки?

    byte916
    @byte916
    Попробовать pci post card чтобы узнать точно в каком месте зависание
    Но вообще 99% что оперативка. Нет в списке совместимой оперативы HyperX
    Ответ написан
  • Как найти в строке слово и удалить его?

    byte916
    @byte916
    Вот пять способов, как это можно сделать. Компилируется ли код - не проверял

    Возможно, самый медленный способ
    foreach (var punctuationMark in punctuation_marks)
                {
                    str = str.Replace(punctuationMark, "");
                }


    Способ через string.Split/Join
    str = string.Join("", str.Split(punctuation_marks, StringSplitOptions.RemoveEmptyEntries));


    Через StringBuilder. Проверка что это знак пунктуации идёт через char.IsPunctuation, возможно, это не то, что надо
    StringBuilder sb = new StringBuilder();
                foreach (var c in str.ToCharArray())
                {
                    if (!char.IsPunctuation(c)) sb.Append(c);
                }


    Еще через StringBuilder. Тут проверка идёт по вашему массиву
    StringBuilder sb = new StringBuilder();
                foreach (var c in str.ToArray())
                {
                    if (punctuation_marks.All(p=>p != c.ToString())) sb.Append(c);
                }


    С помощью регулярного выражения
    var regexp = new Regex(@"/\.,;:]\[<>\{}\|!\?");
                regexp.Replace(str, "");
    Ответ написан
    1 комментарий
  • Какие библиотеки есть для работы с PDF в .Net Core?

    byte916
    @byte916 Автор вопроса
    Попробовал следующие варианты

    PDFSharp – не совместим с .Net Core
    Aspose.PDF – платная
    Nreco PdfGenerator — лицензионные ограничения
    DinkToPdf – библиотека трехлетней давности, не поддерживается
    Select.HtmlToPdf — хороший вариант, но работает только под виндой и не работает под линуксом
    IronPDF - платная
    EvoPDF - платная
    EO.Pdf - платная
    Spire.Pdf - есть бесплатная версия, но не совместима с core
    OpenHtmlToPdf - старая, не совместима с core
    ExpertPdfHtmlToPdf - платная

    Продолжаю поиски
    Ответ написан
    4 комментария
  • Почему Visual studio не выдает подсказки?

    byte916
    @byte916
    Добавлением снипетов вроде как занимается решарпер. Возможно, вы его не установили или, если он установлен, требуется переустановка.
    Ответ написан
    Комментировать
  • Как моментально остановить вертикальную прокрутку страницы?

    byte916
    @byte916
    А зачем вам бесконечная прокрутка, если вам надо убрать её после того как верхушка блока окажется сверху страницы? Просто разместите блок так, чтобы его высота была равна высоте экрана минус 100 пикселей.
    Ответ написан
    Комментировать
  • Как обновить анимацию у элемента?

    byte916
    @byte916
    Если минимально изменять ваш код, то вам нужно при повторном нажатии на кнопку и до выхода из .notice each перезапускать таймер. Сделать это можно с помощью метода stop(), очистки ширины полоски и нового запуска анимации. Вот пример. Обратите внимание на строку 20-21 скрипта.
    Но вообще, я бы вам посоветовал создание полоски загрузки вынести в отдельную функцию, и вызывать её для создания и перезапуска анимации.
    А еще, я полагаю, вы пытаетесь сделать что-то вроде этого (нажмите синюю кнопку show toastr). Можете поставить там галочку Progress Bar чтобы увидеть полоску загрузки.
    Ответ написан
  • Какую взять беспроводную гарнитуру для ПК (Windows10)?

    byte916
    @byte916
    "Насколько понимаю, с bluetooth гарнитурами так или иначе такое будет " - неправильно понимаете.
    Они могут не подключиться если вы используете наушники со вторым устройством (с телефоном, например).
    Т.е. если вы поработали за компом, выключили его, подключили уши к телефону, потом отключили уши от телефона, включили компьютер. Тогда ваши наушники скорее всего к компьютеру сами не подключатся.

    Чтобы решить эту проблему - просто купите отдельные наушники для компьютера. Канал связи в переподключении после ребута роли не играет.
    Ответ написан
    Комментировать
  • Как суммировать значения из getElementById и getElementsByClassName?

    byte916
    @byte916
    Во-первых, для выкладывания кода можно пользоваться такими сервисами, как jsfiddle.net
    Во-вторых, если вы точно значете что у вас только каждого элемента только по одному экземпляру, то не обязательно проходить циклом по ним.
    В-третьих, чтобы ваши цифры были цифрами с точки зрения javascript, нужно конвертировать их в цифры (например, parseFloat)
    И тогда всё получится. Вот рабочий пример (последние две строчки - чтобы функция срабатывала при вводе текста)

    update: решение для нескольких выводимых элементов
    Ответ написан
    2 комментария
  • Нужно ли преобразовывать ссылки к валидному виду, если ссылка будет в href?

    byte916
    @byte916
    С кириллическими символами нынче проблем нет, разве что, может быть какие-нибудь старые браузеры или серверы могут некорректно с ними работать.
    А вообще эта функция в первую очередь нужна для кодирования специальных символов, например амперсанд (&), равно (=), слеш (/) итд. Их вы не передадите напрямую.
    Ответ написан
  • Сборка домашнего сервера. не понятно какой корпус выбрать?

    byte916
    @byte916
    Лучше взять такой корпус, чтобы влезли все диски.
    Кулер лучше взять подходящий под задачи сервера. Если высоконагруженный, то можно взять помощнее, если слабонагруженный, то можно взять послабее или вообще без вентилятора (если файлопомойка, например).
    Если сервер будет стоять дома, то лучше взять что-то потише, можно даже воду.
    Ответ написан
    Комментировать
  • Почему тормозят браузер и Visual Studio 2008?

    byte916
    @byte916
    Самое узкое место - оперативка, на втором месте ЦПУ.
    99% что с таким процессором у вас по материнке ограничение оперативной памяти в 4гб - жить можно, но это тоже не фонтан.
    Если денег нет, можно просто докупить памяти, но в перспективе нужно будет его апгрейдить.
    Ответ написан
    Комментировать