Задать вопрос
  • Как вызвать функцию на представление с контроллера в mvc паттерне?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Сделай колбэк
    class Ctrl
    {
        Action<int> _callback; 
        public void fun()
        {
             // ...
             _callback(res);
         }
    }
    
    public class View
    {
        void SendResult(int res)
        {
               LayoutUpdate(); 
        }
    }


    P.S. только в случае с GUI надо еще помнить, что обновления нужно делать в UI потоке
    Ответ написан
    Комментировать
  • На сколько популярно и корректно хранить данные в столбце в виде JSON строки?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Если перейти по ссылке на сайте, то можно увидеть, что для хранения используется LowDB.
    Ответ: хранится все в JSON файле в денормализованном виде
    Ответ написан
    Комментировать
  • Можно ли к ноутбуку с одним HDMI слотом подключить 2-а дополнительных монитора?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Из одного HDMI несколько мониторов - только дублирование.
    Насчет Thunderbold 4 не знаю, но у меня есть USB Type-C: купил адаптер USB Type-C - HDMI и смог подключить еще один монитор.
    В итоге у меня сейчас 3 монитора: встроенный, по HDMI кабелю, по USB Type-C кабелю
    Ответ написан
  • Как выйти из двух пользователей в Linux, и при этом выполнить команду один раз?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Вопрос: возможно ли закрыть соединение ssh сразу от суперпользователя?

    Вынуть шнур питания из розетки

    Серьезно - нет. Тем более это не то, что стоит автоматизировать
    Ответ написан
    Комментировать
  • Какой самый простой способ организовать SSO?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Самый популярный фреймворк для SSO - OAuth.
    Про него много где уже писали. Например, вот некоторые ссылки:
    - https://habr.com/ru/articles/77648/
    - https://habr.com/ru/companies/vk/articles/115163/
    - https://oauth.net/2/

    Также есть еще и OpenID Connect. Это фреймворк построенный вокруг OAuth:
    - https://habr.com/ru/companies/nixys/articles/566910/
    - https://openid.net/developers/how-connect-works/

    Поймешь как они решают эту проблему - поймешь как решить свою.
    На вопрос прямого ответа не дам - много букв
    Ответ написан
    Комментировать
  • Как реализовать сопоставление разных слов со схожим значением для использования как одной команды для голосового ассистента?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Для решения этой задачи подходит векторизация.
    Вкратце, слово представляется вектором из других слов (базовых) его описывающих. Тогда близость слов можно описать близостью векторов, его описывающих (косинусная близость). Это была теория.
    Практика здесь:
    - Обзор различных техник этого метода
    - Ссылки на питоновские библиотеки
    - Есть уже готовые фреймворки и предобученные модели
    Ответ написан
    1 комментарий
  • Как запустить сразу несколько скриптов Python в автозапуске?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    ExecStart=sh -c "/usr/local/bin/python3.10 /usr/python/liqb.py && /usr/local/bin/python3.10 /usr/python/liqby.py && /usr/local/bin/python3.10 /usr/python/liqo.py"
    Ответ написан
    4 комментария
  • Как намекнуть начальству, что agile не избавляет от тз?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    им всё равно нужно самостоятельно планировать работу и отвечать за неё?

    Этот момент мне не до конца понятен. Т.е., грубо говоря, начальство должно полностью разбираться в программировании, устройстве продукта, самостоятельно оценивать задачи и ганта строить?

    Если есть JIRA таски и что-то не понятно, то возвращайте и говорите, чтобы уточнили эти моменты.
    Лично я НЕ сторонник подхода, когда разработчику дают полностью готовую задачу и он должен только постучать по клавишам, чтобы это все закодировать. В вашем случае, получается, что разработчик такой же стекхолдер, он тоже участвует в развитии продукта, а не просто маленькая шестеренка.
    Ответ написан
    7 комментариев
  • Нейросети с чего можно начать?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Господа, дамы, что можно запустить из нейронок на 1060 с 6гб?

    Если хочешь потыкаться, то вот тутлежит список из различных нейронок, которые можно запустить локально.
    Какая ОС лучше? win\nix?

    Без разницы
    Или смотреть в сторону теслы к80\м40?

    Если хочешь потыкаться (без обучения и тому подобного), то смысла тратиться нет
    Хотелось бы посмотреть как это работает.

    Вот тут есть визуализатор обучения нейронной сети
    Ответ написан
    Комментировать
  • Влияет ли геолокация на парсинг float?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Влияет скорее не геолокация, а локаль пользователя. В данном случае это влияет на разделитель.
    Вот пример:
    var number = 1.123;
    
    var russian = new CultureInfo("ru-RU"); // Россия
    var american = new CultureInfo("en-US"); // США
    Console.WriteLine($"Россия: {number.ToString(russian)}");
    // Вывод: 1,123
    Console.WriteLine($"Америка: {number.ToString(american)}");
    // Вывод: 1.123


    UPD: TryParse и Parse методы принимают в себя IFormatProvider, который имеет информацию о локали (CultureInfo)
    if (double.TryParse("123.123", russian, out var result))
    {
        Console.WriteLine($"Русский: {result}");
    }
    else if (double.TryParse("123.123", american, out result))
    {
        Console.WriteLine($"Американский: {result}");
    }
    else
    {
        Console.WriteLine($"Ни один не сработал");
    }
    // Выведет: Американский: 123,123
    Ответ написан
  • В чем суть данной леммы из книги Фихтенгольца (том 1)?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    1. Написание e > 0 - почти всегда означает бесконечно малое число. Брать такие большие числа как 10 для данной леммы не имеет смысла.
    2. В лемме ясно говорится о вещественных числах - ты в пример берешь целые. Т.е. дискретные вместо непрерывных

    Суть этой леммы такова - если для каждой пары s и s' , разница между которыми бесконечно мала есть 2 числа, которые всегда окажутся между ними, то эти 2 числа равны.
    Это полезно для чисел с плавающей точкой в программировании (double, float). Проверка равенства для них должна выполняться через эту лемму, но немного измененную: abs(a - b) < eps - означает что a и b равны
    Ответ написан
    1 комментарий
  • Как создать приложение которое будет показывать погоду в любом городе на Win Forms?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    1. Создаешь свою базу данных городов (названия, расположения)
    2. Находишь API, которое по положению отдает погоду в нем
    3. Делаешь окно выбора города
    4. Когда пользователь выбрал город делаешь запрос на API (шаг 2) и показываешь результат

    На твое усмотрение:
    - Как будет выглядеть морда (UI)
    - Где хранится БД городов будет (загружаться во время старта, в txt/json файле, отдельная БД (sqlite, postgres))
    - Какой API погоды использовать
    Ответ написан
    9 комментариев
  • Как сделать ввод через стандартный поток (stdin) и через файл?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    2 варианта:
    - Если аргументов вообще нет, то через poll (либо select) проверяешь событие доступности данных - SO
    - Некоторые Unix программы проверяют, что если передан дефис/тире -, то читать надо из stdin (учитывай)
    Ответ написан
    Комментировать
  • Какой паттерн использовать для БД many-to-many с одним столбцом-источником для двух столбцов many-to-many?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Тут 2 варианта - через View, либо триггеры, т.к. очки меняются часто. Поэтому вариант с таблицей отдельной я отбрасываю. Триггеры привносят непонятки, поэтому тоже убираю.
    View можно сделать так.

    create view points_difference as
        (
            select first.names as name1, second.names as name2, first.points - second.points as points from user_points first 
                join user_points second 
                    on first.id <> second.id
            
        );

    В добавок можно сделать его materialized view, чтобы от лишних перерасчетов избавиться
    Ответ написан
    9 комментариев
  • Как адаптировать итеративный алгоритм обхода бинарного дерева к обходу сильноветвящегося дерева?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Разницы нет. Просто теперь потомки каждого узла лучше представлять в виде массива, по которому нужно итерироваться - без left и right

    void Visit(Node node) {
         for (auto child: node.children()) {
               stack.append(child);
         // Не так
         // if (node.left != nullptr) {
         //    stack.append(node.left);
         //  }
         // if (node.right != nullptr) {
         //    stack.append(node.right);
         //  }
       
    }
    Ответ написан
    1 комментарий
  • Как голосовые ассистенты "понимают" какую команду им необходимо сделать?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Это задача NLP - Natural Language Processing
    Если вкратце, то работа ведется в несколько этапов:
    1. Преобразование звука в текст
    2. С помощью NLP этот текст обогащается:
    - Форматируется
    - Убирается мусор
    - Выделяются ключевые слова
    3. Готовый текст подается на вход другой нейронке, которая используя свою базу данных (история, контекст) понимает немерение

    Собственно, сама работа ведется в последней части. Как эти нейронки работают - другой вопрос. Просто обучают на своих наборах данных
    Ответ написан
    2 комментария
  • Где искать информацию о погоде?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Геокодер от Яндекса в помощь - https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/dg/co...
    Ответ написан
    Комментировать
  • Как считать время у большого количества объектов?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Пусть у каждого объекта будет свой штамп времени - когда он протухает.
    В Update() проверяешь текущее время и время протухания - если превышено (и при этом предыдущее состояние не протухло), то меняешь вид/представление.
    Этакая машина состояний

    P.S. я не unity разраб., возможно во фреймворке уже есть готовые решения для такого
    Ответ написан
  • Правильно ли я понял свойства распределенных систем?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Допускает ли High Availability полный отказ системы или только отказ каких-то компонент с точки зрения функциональности, а не экземпляров?

    Доступность исчисляется относительно внешнего клиента - может или нет получить доступ к сервису. Здесь без разницы, что для этого используется кластеризация, бэкапы, стендбаи и т.д.
    Главное - это то, как систему видит пользователь. Собственно, все SLA на так и рассчитываются.
    Какая правильная и полная формулировка Availability из CAP?

    На сколько я помню, эту теорему в свое время критиковали и продолжают за неясность определения. Но если в кратце, доступность здесь означает, что ты получишь ответ, даже если связь с другими узлами кластера пропадет. Если в кратце, доступность = можешь получить ответ хоть когда-нибудь.
    Пример:
    1. Есть кластер из 2 Postgres мастеров. Связь между ними пропадает и запросы они принимать не могут. Это НЕ Availability, т.к. нам важна консистентность
    2. Если кластер из 2 Postgres узлов - мастер и слейв. Даже если связь между ними пропадет, то запросы они принимать смогут, но данные могут быть в не согласованном состоянии (мастер принял несколько UPDATE/INSERT/DELETE, а слейв о них не знает). Это Availability, но Consistency мы потеряли
    3. Если кластер из 2 Mongo узлов. Там используется свой протокол, который позволяет системе быть доступной, даже если связь между мастерами потеряется. Это Availability, но согласованность может потеряться
    P.S. в последнем используются специальные распределенные структуры данных (чтобы каждый узел мог модифицировать свою версию, а потом смержить с другими узлами)
    Отказоустойчивая система не допускает потери функциональности вообще?

    Отказоустойчивость - это не дискретная (0 или 1), а непрерывная характеристика. Здесь лучше думать в ключе SLA (99, 99.9, 99.999 т.д.), т.к. никакая система не может быть полностью отказоустойчивой. Но в целом да - отказоустойчивость значит, что функциональность должна работать и клиент может ее использовать.
    Как, в двух словах хотя бы, проводится измерение производительности и пропускной способности сервиса?

    1+ слово - тестирование (нагрузочное, объемное и т.д.)
    Здесь нельзя вычислить формулами, сколько и что сможем обслужить. Только экспериментом числа получать.

    UPD: если хочешь призму, чтобы смотреть на распределенные системы, то вот тут скачай "Распределенные системы" от Таненбаума - https://www.distributed-systems.net/index.php/book...
    Ответ написан
    5 комментариев
  • Почему C# не кроссплатформенный?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    С# работает на виртуальной архитектуре

    Правильнее говорить: имеет собственный байт код. Приложения .NET не запускаются в виртуальной машине! Они компилируются JIT'ом и просто могут взаимодействовать с платформой, но нет никакой ВМ (например, песочница как в JVM отсутствует - ты видишь обычный процесс.
    Почему так?

    Потому что C# (и .NET Framework в частности) был ориентирован для работы под Windows и там очень много специфичных для нее деталей есть (взять ту же концепцию COM объектов).
    Java изначально поддерживала другую стратегию + была поддержка Linux (на котором сидели энтузиасты), что в итоге вылилось в то, что эти самые энтузиасты полюбили Java и начали писать на ней везде (а для этого надо было иметь реализацию JVM под нужную платформу)
    Сейчас ситуация меняется: .NET есть под MacOS, Linux и Windows. Это не полная кроссплатформенность, но философия другая: мы будем поддерживать несколько платформ, но делать это качественно. Сейчас упор делается в Linux и веб в частности.
    Дополнительно:
    - Спецификация открытая и ничто не мешает реализовать под свои платформы. Взять тот же .net nanoFramework, mono, unity
    - Mono вышел в 2004 году, а значит еще с тех пор .NET был кроссплатформенным
    Ответ написан
    2 комментария