Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (4)

Наибольший вклад в теги

Все теги (39)

Лучшие ответы пользователя

Все ответы (54)
  • Хочу заняться мобильной разработкой, что правильней изучить в настоящее время - C# и Xamarin или Swift?

    impwx
    @impwx
    Разработчик
    У обоих вариантов есть свои плюсы и минусы.

    На Swift можно комфортно писать только под экосистему Apple. Xamarin же позволяет сделать кроссплатформенное приложение, но только с элементарным интерфейсом. Шаг в сторону от предложенных вариантов - и приложение начинает обрастать уродливыми проверками с платформозависимым кодом. Кроме того, бывают случаи, когда Apple выпускает обновление iOS, которое ломает совместимость с Xamarin и пока в Microsoft не выпустят патч, ваше приложение работать на новой операционке не будет.

    Так что всё зависит от ваших предпочтений. Если знаете C# - то порог вхождения в Xamarin однозначно ниже. Но более применимой на практике технологией мне все равно кажется Swift.

    Кроме того, для публикации приложений под iOS в обоих случаях потребуется физический Mac (или обходные пути для его получения) и платная лицензия разработчика.
    Ответ написан
  • Можно ли выполнять lock на list?

    impwx
    @impwx
    Разработчик
    Допустим, _inner используется у вас во многих местах, и есть некий публичный метод, который его возвращает. Тогда внешний код сможет вызвать этот метод, получить тот же экземпляр объекта _inner и поставить на него свой lock. Так можно случайно словить взаимоблокировку и повесить приложение.

    Подобные моменты бывает очень сложно отследить, потому объект может быть возвращен косвенно, по интерфейсу, или как-либо еще. Отдельное поле _lock - это просто правило хорошего тона, его создают для безопасности: очень маловероятно, что кому-то придет в голову использовать его за пределами инструкции lock и тем более вернуть из метода.

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

    impwx
    @impwx
    Разработчик
    Во-первых, вы можете унаследоваться от Dictionary и не переизобретать методы:

    class AbstractExpressionList<T>: Dictionary<string, Func<T, T>> { }

    Во-вторых, ваш метод Execute уже написан авторами LINQ и называется Enumerable.Aggregate. Внутри он устроен примерно так:

    public T Aggregate(IEnumerable<T> values, T accumulator, Func<T, T> projection)
    {
        var current = accumulator;
        foreach(var value in values)
            current = projection(current, value);
        return current;
    }

    Вам понадобится начальное значение, от которого цикл будет двигаться. Можете использовать первый элемент в списке, или default(T), или передавать пользовательское значение.

    Поскольку ваш класс будет унаследован от Dictionary, который в свою очередь реализует IEnumerable, то вы можете использовать Aggregate напрямую, не реализовывая самостоятельно:

    var data = new AbstractExpressionList<T>
    {
        ["a"] = ...,
        ["b"] = ...
    };
    var result = data.Aggregate(...);
    Ответ написан
  • Почему факториал уходит в нуль?

    impwx
    @impwx
    Разработчик
    Вы можете определить это самостоятельно с помощью пошаговой отладки:
    1. Ставите breakpoint на первой строке в функции
    2. Запускаете приложение в режиме отладчика
    3. Выполняете по одной инструкции (step to next instruction)
    4. Смотрите значения всех промежуточных переменных в каждый момент времени

    Так можно найти момент, в который значение становится неверным, и определить причины, которые к этому привели.
    Ответ написан
  • Как лучше реализовать авторизацию в Web API?

    impwx
    @impwx
    Разработчик
    Да, это хорошая статья. Так оно обычно и делается - bearer token и атрибуты Authorize.

    Кроме обычных токенов есть еще дополнительный тип - refresh token. Они используются в том случае, если срок жизни первого токена истекает и нужно его обновить. Использовать их необязательно - зависит от кейса. Но на всякий почитайте:

    https://leastprivilege.com/2013/11/15/adding-refre...
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (4)