• Почему C# не кроссплатформенный?


    Почему C# не кроссплатформенный?

    На этот вопрос нельзя ответить сразу по двум причинам:
    1. C# - это язык, а язык не может быть кросс-платформенным, так как платформы в разрезе языка и нет.
    2. .NET уже много лет как кросс-платформенный.
    Начиная с уже мейнстримного .NET 8, заканчивая mono и всякой экзотикой типа nano framework


    но при этом, это не так

    Ничто нельзя запустить на "чём угодно"


    но в неё вопрос кроссплатформенности решена абсолютно полностью

    Если вопрос "абсолютно полностью" решён, то почему я не могу запускать программы, написанные на Java, на любом железе?
    Ответ написан
    Комментировать
  • Насколько опасно использование конструктора Function?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    И конструктор Function, и eval, в теории позволяют без каких-либо проверок выполнить код, который мы не контролируем. Мы не можем проверить его на этапе разработки и не можем быть уверенными, что у пользователя будет выполняться именно он. Он прилетает откуда-то. И весь вопрос в доверии к источнику. Если кто-то (пользователи, контент-редакторы, или кто там еще может быть) может влиять на то, что прилетит - возникает простор для потенциальных атак на пользователей системы. Кто-то что-то куда-то написал, скопипастил, а потом это что-то у пользователя выполнилось. И кто знает, что оно с данными пользователя сделает. Тут каждый оценивает риски сам, но в общем случае выполнять непроверенный код действительно не рекомендуется.

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

    @alexalexes
    такой способ представляет угрозу для безопасности

    Потому, что если злоумышленник будет иметь возможность статично внедрять HTML-фрагменты в тело документа, не имея доступа к интерпретатору JS пользователя, то с помощью атрибута data-format-value он эту возможность получит напрямую, так как может вставлять любой код JS в этот атрибут, получая доступ к локальному хранилищу, кукам. Если по кукам он не угонит сессию пользователя, то хотя бы сможет составить его фингерпринт.
    Ответ написан
    7 комментариев
  • Как скрыть консоль в консольном приложении C#?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Смени тип выполняемого приложения с консольного приложения на оконное.
    В свойствах проекта с `Console Application` на `Windows Application`
    Ответ написан
    Комментировать
  • Как передать вес одного сайта другому?

    pro100taa
    @pro100taa
    1. Как правильно склеить домены?


    301 редирект - это основной инструмент. Еще, в Гугл Серч консоли войдите в Настройки - Изменение адреса - Выберите новый сайт. Это даст дополнительный сигнал Гугл.

    2. Если через год домен site-moscow.ru кто-то другой зарегистрирует и восстановит его из вебархива, не вернется ли вес сайта к этому домену?


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

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Купить Code Signing certificate\Выпустить self signed и подписать exe файл с помощью MS SignTool.
    В гугле забанили?
    Ответ написан
    1 комментарий
  • Как получить метку проверенного издателя при запуске своего приложения?

    @Kypidon4ik
    Фрилансер, Wordpress developer
    Ответ написан
    Комментировать
  • Как реализовать фон на шапку и блок ниже?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    градиентом на body или обертке
    Ответ написан
    1 комментарий
  • Как импортировать данные из .docx файла в JavaScript логику?

    Vindicar
    @Vindicar
    RTFM!
    Технически, DOCX можно прочитать - это ZIP архив, в котором лежат XMLки. Библиотека для чтения ZIP архивов под JS (в т.ч. браузерный) есть.
    Но реально проще будет использовать расширенную поиск-замену в Word, чтобы заменить красный цвет на уникальный символ или комбинацию символов перед текстом. Комбинация ^& означает "искомый текст", т.е. приведённый ниже пример вставляет знак процента перед текстом, написанным красным цветом.
    659eee532a796683149306.png
    А потом уже вставить в веб-страницу текст без форматирования и разбирать его.
    Ответ написан
    Комментировать
  • Что такое культура программирования?

    rqdkmndh
    @rqdkmndh
    Web-разработчик
    А что тут непонятного?
    -Поклонение богу программирования
    -Умение чистить программистскую карму
    -Умение проводить обряды (вроде танцев с бубном)
    -...
    Ответ написан
    Комментировать
  • Что такое культура программирования?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Все, что можно отнести, к "делай как надо, а как не надо - не делай"
    Ответ написан
    Комментировать
  • Что такое культура программирования?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Не слышал о таком понятии. Скорее всего это HR развлекается
    Ответ написан
    Комментировать
  • Как сделать шаблонный метод для мат операций с числами и Типом Vector2?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Интерфейсов чисел он не реализует. Есть 2 костыля:
    1. Вести словарь функций сложения
    var typeToFunc = new Dictionary<Type, AddFunc>() {{typeof(int), IntAdd}, {typeof(Vector2), Vector2Add}};
    
    var left = 123;
    var right = 14455;
    var result = Add(left, right);
    Console.WriteLine($"Результат сложения {left} и {right} = {result}");
    
    var leftVector = new Vector2(123, 55);
    var rightVector = new Vector2(55, 111);
    var resultVector = Add(leftVector, rightVector);
    Console.WriteLine($"Результат сложения {leftVector} и {rightVector} = {resultVector}");
    
    T Add<T>(T left, T right)
    {
        return ( T ) typeToFunc[typeof(T)](left, right);
    }
    
    object Vector2Add(object left, object right)
    {
        return ( Vector2 ) left + ( Vector2 ) right;
    }
    
    object IntAdd(object left, object right)
    {
        return (int) left + (int) right;
    }
    
    delegate object AddFunc(object left, object right);

    2. Создай монаду с int и Vector2
    var number = NumberOrVector2<int>.FromNumber(123);
    var newNumber = number.Add(() => 23, () => throw new InvalidOperationException("хранится число"));
    if (newNumber.TryGetNumber(out var result))
    {
        Console.WriteLine($"Получился результат: {result}");
    }
    else
    {
        Console.WriteLine($"Ошибка - хранился вектор");
    }
    
    public readonly struct NumberOrVector2<TNumber> where TNumber: unmanaged, INumber<TNumber>
    {
        private readonly TNumber _number;
        private readonly Vector2? _vector;
    
        private NumberOrVector2(TNumber number, Vector2? vector)
        {
            _number = number;
            _vector = vector;
        }
    
        public bool TryGetNumber(out TNumber number)
        {
            number = _number;
            return !_vector.HasValue;
        }
    
        public bool TryGetVector(out Vector2 vector)
        {
            vector = _vector.GetValueOrDefault();
            return _vector.HasValue;
        }
    
        public NumberOrVector2<TNumber> Add(Func<TNumber> numberAdd, Func<Vector2> vectorAdd)
        {
            if (_vector is {} vector)
            {
                return new NumberOrVector2<TNumber>(_number, vector + vectorAdd());
            }
    
            return new NumberOrVector2<TNumber>(_number + numberAdd(), null);
        }
        
        public static NumberOrVector2<TNumber> FromNumber(TNumber number)
        {
            return new NumberOrVector2<TNumber>(number, null);
        }
        
        public static NumberOrVector2<TNumber> FromVector(Vector2 vector)
        {
            return new NumberOrVector2<TNumber>(default, vector);
        }
    }
    Ответ написан
    Комментировать
  • Получил ошибку при парсинге json, но не могу найти где в json не такое поле. Как решить?

    IvanU7n
    @IvanU7n
    nothing interesting here
    а зачем уже спарсенный результат ещё раз парсить?
    или
    const tasks = JSON.parse(await response.text());
    или
    const tasks = await response.json();
    Ответ написан
    1 комментарий
  • Получил ошибку при парсинге json, но не могу найти где в json не такое поле. Как решить?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    -     const tasks = JSON.parse(await response.json());
    +     const tasks = await response.json();
    Ответ написан
    Комментировать
  • Получил ошибку при парсинге json, но не могу найти где в json не такое поле. Как решить?

    @historydev Куратор тега JavaScript
    Редактирую файлы с непонятными расширениями
    Ты пытаешься спарсить js объект.

    Здесь уже НЕ json.
    await response.json()
    Ответ написан
    2 комментария
  • Как сменить шрифт в css?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    @font-face {
    -    font-family: 'Rubik Doodle Shadow', system-ui;
    +    font-family: 'Rubik Doodle Shadow';
        src: url(fonts/RubikDoodleShadow-Regular.woff2) format('woff2');
    }
    Ответ написан
    3 комментария
  • Актуален ли ассемблер на сегодняшний день?

    Steel_Balls
    @Steel_Balls
    0L3QsNGH0LjQvdCw0Lsg0YEgQkFTSUMg0L3QsCDQo9Ca0J3Qpi
    Да, актуален.
    Он применим во всех областях.
    Почитай что такое ассемблер и вопросы отпадут сами собой
    Ответ написан
    Комментировать
  • Как полностью убрать приветственную страницу nginx?

    @Drno
    Ну удали её…
    Файл с диска на сервере
    Ответ написан
    5 комментариев