• Возможна ли рекурсия в js через setTimeout?

    @kttotto
    пофиг на чем писать
    Все правильно, он и будет возвращать undefined. Я думаю, что Вы не верно трактуете выполнение setTimout(). Вот в этом участке
    else {
        setTimeout(function() {
          opacity -= 0.1;
          console.log(opacity);
          return userFadeout2(el,delay,opacity.toFixed(1));
        },delay);
      }

    не будет ожидания выполнения setTimeout, он создаст отложенное выполнение и вернет undefined, т.к. другого ничего не указано. Дальше setTimeout запустит Вашу функцию userFadeout2, но она так же, если opacity будет не равно 0, вернет undefined.
    Лень проверять, но кажется setTimeout возвращает delay и Ваш return userFadeout2 не сработает как Вы хотите. Вам нужно сделать что-то подобие
    else {
    	$.when(setTimeout(function() {
    		  console.log("pause");
    		},delay)
    	).then(function(){
    		opacity -= 0.1;
    		console.log(opacity);
    		userFadeout2(el,delay,opacity.toFixed(1));
    	});
    }

    Это без проверок с ходу, как пример, думаю мысль уловите.
    Ответ написан
  • Как у вас в компании организовано тестирование?

    @kttotto
    пофиг на чем писать
    Часто к тестам относятся как к религии, потому что все вокруг говорят, что они нужны и это полезно. И часто их делают "шоб было". Тесты дают прирост только в долгой перспективе, на больших долгоживущих проектах.

    Против:
    1. Тесты это такая же кодовая часть проекта, на нее тратятся ресурсы (человеко-часы), а их нужно поддерживать так же как и остальную часть кода. Часто думают, что тест один раз написал и о нем можно забыть, но намного чаще приходят изменения, которые могут менять логику ожидания какого то поведения, может происходить рефакторинг, который так же может ломать тесты или делать какие то тесты ненужными или требовать новые и т.д. Если будете бояться сломать тесты, то и код перестанет быть гибким к изменениям.
    2. Часто по неопытности стараются покрыть чуть ли не все 100% кода, получается избыточность, тесты на очевидные вещи. А это все время, а значит деньги.
    3. Есть проекты, у которых срок жизни небольшой, пишется под конкретную одноразовую порцию задач. На них, я считаю, вообще нет смысла писать тесты.

    Тесты имеет смысл делать:
    1. Когда проект собирается жить долго и счастливо, и придет не одна порция изменений.
    2. Над проектом работает не 1-2 человека, надо следить, чтоб кто-то другой не сломал то, что ты написал.
    3. Во время разработки иногда удобнее написать тест на какой-то участок кода и запускать код для дебага через тест, чем каждый раз запускать тяжеловесный проект.
    Ответ написан
    Комментировать
  • Как работать верстальщику со сложным ASP.NET проектом на TFS?

    @kttotto
    пофиг на чем писать
    В этом проблема монолита, как он будет править верстку не запуская проект? cshtml это ж не html, браузер о razor ничего не знает. Без запуска проекта, думаю, не обойтись. Поэтому либо виртуалка, либо локально. Виртуалку Вы не хотите, значит вариант только ставить локально, а бд можно удаленную тестовую подключить.

    У нас верстальщики по RDP работают. Минус, конечно, привязка к инету.
    Ответ написан
    Комментировать
  • Почему не получается обновить одно поле в EF?

    @kttotto
    пофиг на чем писать
    Вы ее присоединили к контексту, но обновления не происходит. Попробуйте явно указать, что модель модифицирована
    this.Db.Entry(Phone).State = EntityState.Modified;
    this.Db.SaveChanges();
    Ответ написан
    Комментировать
  • Visual Studio - JavaScript Отладчик не останавливается на точках в MVC-View (.cshtml файл), как включить отладку во вьюхах?

    @kttotto
    пофиг на чем писать
    Отключить прекомпиляцию вьюшек или ставить брекпоинты до начала сборки и запуска.
    Ответ написан
  • Как десериализовать запрос?

    @kttotto
    пофиг на чем писать
    Вариантов несколько.

    Первый, это как написано постом выше, привести к dynamic. Но у этого варианта есть недостаток - в каждый момент надо знать какое поле пришло, иначе получите эксепшин на уровне рантайма. Но знать это, по видимому, не реально.

    Второй, это преобразовать к
    public string form_name { get; set; }
    public object value { get; set; }

    В принципе это почти тот же вариант что и первый, ибо дайнемик это тот же обжект, просто на уровне компиляции не проходит проверки типов. А затем value приводить к заранее известному типу, сделать switch, чтобы логика была как то так
    response.value = response.value as string;
    if(response.value == null)
    {
         response.value = response.value as SomeClass;
         if(response.value == null)
         {
             response.value =  response.value as OtherClass;
       ....

    Но у этого способа тоже есть недостаток, нужно точно знать какие типы могут приходить в value.

    И третий вариант, это привести value к JObject и уже руками вытягивать нужные узлы со значением.

    PS. И еще, не рекомендовал бы именовать модель подстраиваясь под json. Для этого у newton есть нужные атрибуты
    public class Form
    {
    	[PropertyName = "form_name")]
    	public string FormName { get; set; }
    	
    	[PropertyName = "value")]
    	public string Value { get; set; }
    }
    Ответ написан
    Комментировать
  • Как лучше сделать авторизацию в ASP.NET Core 2.0?

    @kttotto
    пофиг на чем писать
    Я рекомендую Identity брать за основу. Там учтены многие моменты безопасности, которые Вы навряд ли учтете, если будете сами руками все писать.
    Ответ написан
    Комментировать
  • Не приходят письма c сайта на mail.ru?

    @kttotto
    пофиг на чем писать
    Наверное потому, что есть html вставка и в настройках почты google проверки отключены, а в mail нет.
    Ответ написан
    Комментировать
  • Почему такой код работает?

    @kttotto
    пофиг на чем писать
    1. Поставьте брекпоинт в контроллере и посмотрите this.Request.Query, там будут все параметры, что пришли в контроллер, так же они могут быть в Body. Именно для этого и нужны атрибуты FromBody и FromRequest, чтобы точнее указать от куда мапить значения на модель. После того как он спарсит и смапить значения в модель, если есть проверка, он возьмет атрибуты и по ним уже проверит на валидность.

    2. Вы правильно понимаете. Все это реализовано в identity.
    Ответ написан
    Комментировать
  • Можно ли стать pm без коммерческого опыта в разработке?

    @kttotto
    пофиг на чем писать
    Быть pm это только дело опыта, а не книг и видосиков. Хотя бы опыт в управлении своих опенсерс проектах.
    Ответ написан
    Комментировать
  • Десериализация json полей в массив?

    @kttotto
    пофиг на чем писать
    var model = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
    var photos = model.Where(x => x.Key.Contains("photo"));
    Ответ написан
    3 комментария
  • Как начать проект на asp.net?

    @kttotto
    пофиг на чем писать
    Metanit
    Все кратко и по делу, как конспект.
    Ответ написан
    Комментировать
  • Как добавить модель в asp.net mvc?

    @kttotto
    пофиг на чем писать
    Для выпадающий списков в MVC есть хелперы Html.DropDownList и Html.ListBox. Первый для одиночного выбора, второй для множественного. В модели, которую передаете на вьюшку, передаете поле с коллекцией SelectList и поле для выбранного значения (Selection). Вы, я так понимаю, коллекцию передали через вьюбэг, вот поля под выбор нет.
    А дальше сам список создаете через хелпер
    @Html.DropDownList(x => x.Selection, Model.Items)
    При отправке формы выбранное значение уйдет в Selection.
    Если же Вы используете Core, то там tag-хелперы.

    Здесь в ответе есть пример.
    Ответ написан
    Комментировать
  • Как точно посчитать количество изменений например true на false и наоборот false на true?

    @kttotto
    пофиг на чем писать
    privare bool _property;
    private int count;
    public bool Property
    {
    	get { return _property; }
    	set 
    	{ 
    		if(_property != value)
    			count++;
    		_property = value;
    	}
    }
    Ответ написан
    2 комментария
  • Как правильно дождаться выполнения всех потоков, созданных в цикле?

    @kttotto
    пофиг на чем писать
    У Вас не правильный подход. Во первых забудьте про Thread и используйте TPL. Во вторых для распараллеливания запросов в цикле есть замечательный метод Parallel.ForEach. В третьих для ожидания выполнения всех параллельных задач есть Task.WaitAll.
    В общем Вы можете создать список Task-ов и запихнуть их в Task.WaitAll, но лучше пройдитесь параллельным форичем по Вашему периоду и внутри запускайте Ваши методы. Код за форичем будет ожидать завершения всех потоков в цикле.
    Ответ написан
    2 комментария
  • Mysql - Как заморозить доступ к строке чтобы другие потоки не работали с ней?

    @kttotto
    пофиг на чем писать
    Можно попробовать эти проверочные поля вынести в код, сделать этот объект доступным для всех потоков. Поток, прежде, чем сделать запрос, сначала в список заносит id строки, ответ получил - из списка этот id удалил. Другие потоки, прежде чем сделать запрос, проверяют список, если id есть в списке, то в ожидание.
    Тут может быть та же проблема, но с меньшей вероятностью, поэтому проверка должна быть двойная: сначала проверил, что id нет такого, добавил, потом проверил, что их не два в списке и только тогда запрос. Если два, то удалил и с таймаутом пытается опять добавить.
    Я не знаю Ваших объемов бд, но как второй вариант рассмотреть нормальные очереди запросов. Перед запросом проверить есть ли очередь с именем айдишника, если нет, то создать и последующие запросы просто будут добавляться в свою очередь.
    Ответ написан
    Комментировать
  • Какую архитектуру выбрать для SPA?

    @kttotto
    пофиг на чем писать
    Если не имели дело с react/vue, то быстрее будет на js+jq, ангуляр для этого случаю можно отбросить. Я так понимаю сервис сам по себе не большой, поэтому кода много не будет. В виджет отдали селектор, внутри он сгенерировал разметку и обработчики, все запросы аяксом.
    Ну а если есть время и желание, то react/vue будет самое оно, это их дело компоненты стругать, на выходе у Вас будет js с нужным апи.
    Ответ написан
    Комментировать
  • Информация не сохраняется в БД?

    @kttotto
    пофиг на чем писать
    500 может выскочить когда не находит нужный урл. Проверьте тот урл, по которому идет запрос из клиента и что он есть на сервере.
    Ответ написан
  • В каких случаях используют С# и Java в веб-разработке?

    @kttotto
    пофиг на чем писать
    Без разницы на чем писать. На любом из перечисленных можно написать хорошее качественное решение. Стек для веба выбирают в основном из того с чем умеешь работать.
    Ответ написан
    Комментировать
  • Бутстрап хелперы как в asp на yii?

    @kttotto
    пофиг на чем писать
    Они есть. И еще.
    Ответ написан
    Комментировать