• Какой будет более правильный вариант при секционировании таблиц?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Тут 2 решения:
    - Ключ партиционирования - "id"
    - Использовать партиционирование по диапазону - BY RANGE ("created_at").
    Ответ написан
    Комментировать
  • Сравнение скорости копирования массивов разными способами?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Ошибки:
    1. В каждом тесте лучше передавать массивы через аргументы, а не словарем - это тоже немного влияет
    2. Циклы внутри не нужны - сам фреймворк запускает это все множество раз под капотом

    вопрос почему

    Разные версии, разные реализации. Мы исходный код платформы не знаем.
    Тем более, на скорость могут повлиять разные факторы:
    - Локальность кэша
    - Загруженность системы
    - Работа ОС (переключение контекста, свапинг)

    на не больших массивах, использование которых в реальной жизни крайне редко.

    Это откуда такие данные?
    - Enumerable с 1 элементом
    - Результат фильтрации выбрал только 2-3 штуки
    - Сериализация примитивных (и не только) типов

    Я вообще молчу, что stackalloc надо вызывать с маленьким размером, а работать с ним через Span

    UPD: запустил бенчмарк у себя и получил примерно такие же результаты. Система: AMD Ryzen 5, Ubuntu 22.04, 16 GB RAM

    Предполагаю, что причина в следующем:
    1. .NET 8 вышел только недавно и нет достаточного кол-ва патчей
    2. Платформа сейчас больше ориентируется на Web и на такие моменты, как оптимизация копирования, времени уделяется мало

    P.S. скорее причина в 1
    Ответ написан
    2 комментария
  • Как использовать webapp проект как библиотеку?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Во-первых, почти любое веб приложение - консольное. Т.е. не оконное, не служба.
    Во-вторых, если тебе нужен WebHook, то у Telegram.Bot есть пример, как это сделать (используется ASP.NET Core) - https://github.com/TelegramBots/Telegram.Bot.Examp...
    В-третьих, не стоит делать выполняемые приложения (консольные, веб, сервисы) зависимыми от других - это плохо.
    Ответ написан
    3 комментария
  • Как сделать исключение в .gitignore?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Используй -f ключ:
    git add -f states/project1/keys/pk1.pub

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

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Если вкратце, то алгоритм следующий:
    1. Находишь какого-нибудь ОРД (оператор рекламных данных)
    2. Регистрируешься у него (договор, можно даже с физ.лицом)
    3. Он выдает тебе инструкцию, как подключить рекламу на сайт

    Он тебе и ERID представит и статистику по кампании в РКН отправит.
    Самое простое, подключиться к яндекс директу - тебе только ставить нужный скрипт на сайт надо будет.

    Если хочешь свое запилить, то никто не мешает - главное, чтобы ERID был виден:
    - В изображении (в углу баннера)
    - В тексте (подпись внизу)
    Сами рекламные кампании создаются ОРД, список которых ведет РКН.

    Вот есть описание этого всего
    https://vc.ru/legal/963878-markirovka-reklamy-erir...

    Например, для яндекса все просто - надо только зарегистрироваться у них, а остальное сделают за тебя (вкладка "Паблишеры") - https://ord.yandex.ru/
    Ответ написан
    Комментировать
  • Как одним словом назвать мессенджеры, социальные сети, почту и т.д?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Коммуникационные платформы/сервисы.
    Лучше дать им определение в ТЗ и указать четкий список того, что в него включается
    Ответ написан
    Комментировать
  • Как узнать реально занятое место файлами?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    запусти df -h, он покажет, где больше всего забито.
    du -h --max-depth=1 может не сработать на корне, т.к. к некоторым путям может не быть доступа (рут).

    UPD: du -sh * | sort -r --human-numeric-sort запусти вот этот скрипт у себя в домашней директории - он покажет какая директория больше всех занимает
    Ответ написан
    Комментировать
  • Почему один запрос работает, а другой нет?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Значит SELECT ничего не вернул - нет таких записей, которые удовлетворяют условию.
    Как исправить - добавить записи, у которых есть json у которого поле 'niches'->'ids' имеет значение 7 или 5.
    Ответ написан
  • На чем лучше запускать сервер Flask с большой нагрузкой на CPU?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Обычно, для CPU-bound задач подходит их вынесение в ОТДЕЛЬНЫЙ ПРОЦЕСС.
    В питоне это через multiprocessing пакет (встроенный) можно сделать.
    Ответ написан
  • Есть ли способ инициализировать репозиторий для дочерней папки?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    в самом /www/sitefolder создать .gitignore в котором будет * (только астериск)
    Тогда никакие файлы из этой и ниже лежащих не будут отслеживаться, но гитом можно будет пользоваться
    Ответ написан
  • Как написать свой SSR?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    SSR - это когда сервер отдает уже готовый HTML без необходимости дополнительной загрузки скриптов и прочего. Т.е. статическая страница с формами.
    Как это работает:
    - Есть изначальная страница
    - Клиент тыкает на кнопку
    - Отправляется запрос на сервер
    - Сервер отдает HTML страницу с уже данными и другой информацией

    Что такое заполненные данные:
    - Если это постраничный вывод списка, то уже готовая страница списка - при нажатии на "Следующая страница" сервер отдает HTML где есть эта следующая страница с захардожеными числами
    - Если это таблица (tr/td/td), то полностью заполненная таблица

    Нет здесь никакой магии.
    P.S. js может быть, но смысл в том, что клиенту отдается уже готовая страница с заполненными данными.

    Это может быть полезно в случаях:
    - Когда выполнение js запрещено (безопасность)
    - Когда конечные пк (пользователей) слабые для js
    - Когда проще сделать так (например, ты не знаешь js)
    Ответ написан
    7 комментариев
  • Почему не могу задать пароль пользователя postgres?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Попробуй заменить двойные кавычки на одинарные (внутри наоборот)
    sudo -u postgres psql -U postgres -c 'alter user postgres with password "A******e!qA"; '
    Ответ написан
  • Рестарт сервиса?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Дополню: можно запустить это все в докере с установкой флага рестарта unless-stopped. Тогда нужный контейнер:
    1. Будет запускаться во время старта системы
    2. Если вручную остановишь (контейнер), то запускаться после старта системы не будет
    3. При завершении с ошибкой контейнер будет перезапущен

    systemd - нормальный вариант для ЛИНУКСОВ (некоторые дистрибутивы его не имеют - их меньшинство поэтому можно не заморачиваться), но не для *nix - например, для mac будет launchd, для bsd - init. Это разные реализации и не совместимы с systemd. (Про винду молчу).
    Поэтому если хочется более-менее кросс-платформы, то стоит:
    1. Заранее создать нужные скрипты для создания конфигов systemd/launchd/bsd/windows service
    2. Установить docker и запускать через него

    P.S. конечно тащить за собой целый докер для одной программы это моветон, но живут же как-то джаваскриптисты со своими node_modules
    Ответ написан
    Комментировать
  • Отличие Сквозного тестирования от Системного?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Если вкратце, то разделить можно следующим образом:
    - Сквозное тестирование - это тестирование пользователем: пишем юз кейсы и проверяем как система отрабатывает.
    - Системное тестирование - это тестирование того, как система работает в целом: не только что наши приложения запускаются, но и то, что работает с БД корректно, с кубернетесом тоже нормально общается (без сетевых неполадок например).

    Подытоживая, могу сказать так: сквозное - ориентировано на пользователя, системное - ориентировано на ТЗ
    Ответ написан
    1 комментарий
  • Автоматическая генерация классов на основе других классов?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Для C# это можно сделать 2 путями (без учета ручного создания):
    - Source Generators
    - Генерация IL кода (динамическая сборка)

    Лично я за 1 вариант, т.к. он будет быстрее в рантайме (все уже скомпилировано).
    Ответ написан
    2 комментария
  • Как правильно будет делать разделение для движения и ввода?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    В InputController держишь ссылку на Person.
    Когда происходит ввод, то просто вызываешь нужный метод у твоего Person
    Ответ написан
    Комментировать
  • Как передать данные в exe файл на C# при загрузке?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    1. Передавать имя пользователя в аргументах к программе, но тогда нужно уметь правильно запускать. Т.е. нужен установщик, который ярлык правильно настроит
    2. Отправлять вместе с программой файл конфигурации, из которого нужно читать имя пользователя.
    3. Скомпилировать с уже встроенным именем.

    Для последнего пункта можно сделать оптимизацию - весь проект (с логикой) хранить уже скопилированными, а при поступлении запроса компилировать exe. В него положить имя пользователя и просто скопировать готовые dll, а сам он просто будет прослойкой для самой программы.

    Также появилась идея о каком-нибудь шаблонном движке (по типу razor), который в потоковой обработке будет отправлять байты программы и в нужном месте подставит строку имени, но не знаю существует такое решение или нет (скорее нет)
    Ответ написан
  • Как передать данные из одного представления в другое?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Url.Action принимает аргумент object? values (последний). В него нужно передать параметры для обработчика MVC контроллера. Передавать в виде анонимного объекта.
    Для твоего случая это будет в виде:
    @foreach (var item in Model)
        {
            <tr onclick="location.href='@Url.Action("ViewOrder", "Home", new { id = item.Id })'">
                <td>@item.Id</td>
                <td>@item.CitySender</td>
                <td>@item.AdressSender</td>
                <td>@item.CityRecipient</td>
                <td>@item.AdressRecipient</td>
                <td>@item.Weight</td>
                <td>@item.Date</td>
            </tr>
        }

    Этот item.Id будет передаваться параметром в обработчик контроллера через параметр, который называется id.
    Например, в этотpublic IActionResult ViewOrder(int id)
    Ответ написан
    1 комментарий
  • Как удалить старый api и сгенерировать новый в openweather?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Заходим на FAQ и читаем:
    You can delete unnecessary API keys but please note that your account with us should have at least 1 API key at any time.
    To find your API key, go to your personal account and click the “API keys” tab
    When you have more than 1 registered API key, there will be an option to delete an API key


    Что значит: удалить ключ можно, когда их больше 1
    Ответ написан
    Комментировать
  • Почему gRPC подменяет исключения?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    А откуда другой сервис знает, какие КЛАССЫ/ОБЪЕКТЫ есть в другом сервисе?
    Если нужно кидать такое-же исключение на сервисе клиенте, то нужно это исключение там и создать.

    А вообще, для своих типов исключений необходимо использовать GRPC_STATUS_UNKNOWN. В документации так и написано:
    Server threw an exception (or did something other than returning a status code to terminate the RPC)


    Решение только одно - в каждом сервисе писать свои обработчики таких исключений и свои классы исключений
    Ответ написан
    2 комментария