• Почему NSFW каналы в Telegram приватны?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    На такой контент обычно не подписываются - заходят, смотрят и уходят. Сиюминутное желание удовлетворяют, т.е. воронка слабо работает.

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

    Ну и да, чтобы бан не получить за распространение сомнительного контента.
    Ответ написан
    Комментировать
  • От чего появляется 405 http code?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Форма отправляется в теле, а ты хочешь ее передать через путь.
    Тег action у form - статический, он не меняется (js тут нет), поэтому он должен быть известен с самого начала.

    Тут 2 решения:
    1. Переделывай все под js (сам все вставляй и прописывай)
    2. Измени способ передачи формы: путь статический (без параметров пути подставляемых), а форма через [FromForm]
    Ответ написан
    Комментировать
  • Есть ли вероятность, что провайдер МТС намеренно урезает скорость интернета?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Немного поискал по интернетам (раз, два, три) и, видимо, - да, урезают.
    Причем, урезают после определенного кол-ва потребленного трафика (200 Гб в примерах).
    Что касается теста скорости, то слышал, что некоторые провайдеры специально подкручивают трафик для сайтов замера скорости, по типу speedtest, поэтому разница с другим сайтом имеется (пруфов нет)
    Ответ написан
    1 комментарий
  • Как собрать такое количество интернет-магазинов в каталог?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Почему так много.
    Это агрегатор. Агрегаторы как правило используют готовый API, либо находят хаки как получить доступ к приложениям. Вот так и парсят/находят. Самих магазинов много - это не Российский рынок, а интернациональный. Грубо говоря, возьми все магазины мира и вот получишь этот рынок.

    Как собрать так много - искать и исследовать.

    Терпение и труд все перетрут, как говорится
    Ответ написан
    Комментировать
  • Как исправить ошибку no matching function to call, в чем может быть ошибка?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    В строке Matrix matr; в main неявно вызывается конструктор без аргументов. Но ты определил только конструкторы перемещения/копирования - пустого у тебя нет.
    Ответ написан
    1 комментарий
  • Видеокарта не работает без драйверов, что делать?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Судя по похожему вопросу на форуме это проблема видеокарты - биос видеокарты неправильно работает.

    Я не знаю, можно ли перепрошить, но даже если можно было - не советовал бы. Тут я предложу 2 варианта:
    1. Оставь как есть, раз проблема больше косметическая - если надо будет то ставь старую видеокарту и чини что нужно
    2. Сдай эту видеокарту обратно в магазин и возьми другую
    Ответ написан
    Комментировать
  • Как сузить диапазон генерации случайных чисел?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Появилась идея алгоритма (по-моему у Кнута видел нечто подобное).
    Идея следующая:
    - Нужно сгенерировать N чисел
    - В диапазоне от L до R

    Тогда запускаем рекурсивную функцию:
    - Вход: начало диапазона (Start), конец диапазона (End), оставшееся кол-во чисел (Left)

    Тело функции:
    1. Берем следующее число из указанного диапазона = Current
    2. Уменьшаем оставшееся число на 1
    3. Вызываем эту же функцию, но с аргументами: начало диапазона = Current + 1, конец диапзона = End - Left, оставшееся число аргументов = Left - 1

    Изначально запускаем с аргументами: L, R - N, N.

    Можно заметить, что с каждой итерацией правая граница сдивигается на 1 - всегда будет возможность получить следующее число, даже если подойдем вплотную
    Ответ написан
    Комментировать
  • Какой подход к разделению страниц на объекты PageObject правильный?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Используй директории для вложенности и названия будут соответствовать каталогу.

    • Attributes
      • Attributes

      • Attribute groups




    Станет

    • attributes
      • attributes

      • attribute_groups




    И в коде будешь обращаться как-то так:
    from attributes.attributes import AdminPage
    
    admin_page = AdminPage()


    Таким образом, структура проекта будет отражать структуру страниц и будет проще понять контекст
    Ответ написан
  • Как исправить запрос без агрегатной функции в Where?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Условие задачи понял так: надо найти индексы записей, которые образуют окно в котором b04 равны тем, что указаны в массиве.
    Записи могут идти в любом порядке, поэтому предположил (из примера), что они должны сравниваться в порядке indx
    with window_table as (
            select array_agg(indx) over prev_rows as indexes, 
                       array_agg(b04)  over prev_rows as vals 
            from tb 
            window prev_rows as (order by indx rows between 2 preceding and current row)
    ) 
    select unnest(indexes) 
    from window_table 
    where vals = ARRAY[60, 119, 58];
    Ответ написан
  • Как правильно тестировать базу данных в .NET?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Решение простое - создаешь мок БД для тестов.
    1. Тест начинается - запускаешь БД и заполняешь данными необходимыми (как сказал Василий Банников можно сделать дамп с удаленными чувствительными данными)
    2. После каждого теста необходимо выполнить откат - если какие-то данные были добавлены/удалены/изменены
    3. При завершении тестирования удаляешь БД

    На мой взгляд, здесь просто много инфраструктурной работы. Полезные инструменты:
    1. Testcontainers - запускаешь БД в контейнере. Сам ей пользовался, есть много шаблонов для разных БД, чтобы с нуля не писать все. Можно также скрипт инициализации (схема, дамп) добавить - вот тебе и настройка
    2. В зависимости от фреймворка есть разные механизмы запуска кода после каждого тест-кейса. Если про xUnit, то:
      1. Тестовый класс реализует IDisposable - выполняется после каждого тест-кейса. Можно тут реализовать логику отката БД
      2. Для инициализации самого контейнера (чтобы каждый раз не запускать заново) - IClassFixture



    Также никто не отменял внешний инстанс БД использовать - просишь дба создать отдельную БД специально для тестов, просто запускать теперь параллельно не получится
    Ответ написан
    Комментировать
  • Как подружить MVC с реляционной базой данных?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Сложные объекты, как раз могут передаваться, просто надо сделать формы другим образом. Скорее всего ты в этот asp-form передаешь всю модель. Предполагаю, что вся модель - это Address.
    Да, из вложенных сложных структур плохо создаются формы. Для решения тебе надо будет форму вручную: все поля и их связь с моделью прописывать самому. Есть шаблонные помощники (Html.EditorFor и другие) - используй их.
    Например, так (внимание, написал по воспоминаниям, может даже не компилироваться)
    @Html.BeginForm() 
    {
          <label>Страна</label>
          @Html.EditorForModel(x => x.Country)
          <label>Город</label>
          @Html.EditorForModel(x => x.City)
    }


    Кроме этого, есть пара других советов:
    1. Создай специальные DTO классы, которые будут потом отображаться в эти объекты БД.
    2. Раз ты делаешь через asp-form, то лушче добавь специальные атрибуты валидации: EmailAddress, Range и т.д.

    P.S. в 1 пункте проблема глубже, чем простой маппинг. Если делать такой подход, который показан:
    - Изменения схемы БД потребуют изменения UI
    - Клиент может передать данные, о которых он знать не должен (например, добавишь новое поле куда-нибудь и оно случайно обновится)
    Ответ написан
    2 комментария
  • C# wpf переход между страницами нагружает систему?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Это больше звучит как утечка памяти.
    Запусти трекинг памяти, выполни эти 10 переходов и возьми снапшот. Там будет видно за кем эти 100+ мб закреплены.
    Тут может dotMemory помочь, сам им пользовался
    Ответ написан
    1 комментарий
  • Как можно сделать линию(нитку) удочки, как в майнкрафте?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Почитай про кривые безье
    Ответ написан
    Комментировать
  • Можно ли с нуля обучится программированию, используя только интернет и не тратив деньги?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Это в хабр эксперты - https://career.habr.com/experts?rid=1
    Ответ написан
    Комментировать
  • Как изменить исходный код Яндекс браузера?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Короткий ответ - никак.
    Длинный - с большими усилиями, да

    Объяснение:
    Тебе надо получить его (браузера) исходный код, но он закрыт. Движок открытый, но это не означает, что и код самого браузера открыт.
    В любом случае, всегда можно провести реверс инжинирг, декомпилировать бинарь, посмотреть ассемблер, понять что происходит, и создать свой патч.
    Ответ написан
    1 комментарий
  • Как снять частотность запроса C++ и C# в yandex wordstat?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Кода нет, но проблема возможно в URL кодирование: + и # если не кодировать будут восприниматься как ключевые/управляющие символы. На вики отдельная секция под это есть - https://ru.wikipedia.org/wiki/URL#Кодирование_URL

    ЯП, который используется не указан, поэтому просто приложу готовые строки, которые надо использовать:
    - C++ - C%2B%2B
    - C# - C%23

    Это все можно в браузере проделать: инструменты разработчика (ctrl + shift + i) -> Консоль -> encodeURIComponent('C++') -> C%2B%2B
    Ответ написан
    1 комментарий
  • Как оптимизировать сервер с большим количеством запросом?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Как понял схема данных следующая:
    - Есть замер времени - отедльный объект со своим ID
    - У каждого замера времени есть список штампов - конкретного времени
    - Эти штампы создают пользователи - отправляют запросы

    Для данного кейса мне видится такое решение:
    - Используем Redis в качестве БД
    - Для ID замеров используем snowflake
    - Тип данных Redis для замеров - list (список)
    - В каждом списке храним эти штампы - строка или unix timestamp (неважно)

    Таким образом, на каждый запрос просто добавляем новый элемент в этот список.

    Redis хорошо выдерживает высокую нагрузку + его можно масштабировать.
    Благодаря snowflake можно горизонтально мастшабировать свои сервисы.
    Также, ты указал websocket - здесь как хочешь. Но в .NET есть реализация Redis которая использует мультиплексирование - здесь он будет уместен.
    Ответ написан
    2 комментария
  • Как посмотреть изменения на сайте?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Зависит от того, что подразумевается в "изменения":
    - Если контент генерируется пользователями (маркетплейсы, блоги, соц.сети) - то каждое мгновение
    - Если если нужно проверять HTML разметку, то тут возникнут проблемы со всякого рода фреймворками генерации сайтов (с их CSS генераторами названий классов, например)
    - Если нужно визуально проверять, то надо уточнить, что является изменением - текст сместился вниз на 1 нанометр это изменение?

    Тут разве что костыли:
    - Заводи демона, который будет делать скриншоты каждый интервал и сверять с последним
    - Проверяй атрибут Last-Modified
    - Используй webarchive
    Ответ написан
    2 комментария
  • Почему у функций нет имени возвращаемого?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Откуда я должен узнать что возвращает printf()?


    man 3 printf
    Ответ написан
    2 комментария
  • Как поменять кодировку так что бы после сохранения файла оставались русские буквы?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Возможно проблема в используемой кодировке для самого файла - вывод-то в консоль:
    - Консоль распознает UTF-8/Unicode
    - Файл открыт в windows-1251

    Тут надо просто поиграться с кодировкой файла в VS. Начни с UTF-8/Unicode, а дальше тыкай, пока не заведется
    Ответ написан