• В чем заключается сакральный смысл .Net Core?

    @kttotto
    пофиг на чем писать
    Любую задачу можно эффективно решить и под core и под java. Но как по мне, то на C# мне надо меньше телодвижений делать и есть моменты, которые работают эффективнее, чем в java (все-таки C# помоложе и учитывал ошибки конкурентов). Плюс java более инертная, .net развивается быстрее, быстрее реагирует на потребности и если говорить об enterprise, то я считаю, что у .net перспектив больше.
    Ответ написан
    3 комментария
  • Насколько бесплатна разработка на ASP.NET для новичка?

    @kttotto
    пофиг на чем писать
    Это абсолютно бесплатный фреймворк. Можете на нем хоть простой, хоть средней, хоть большой руки делать сайты и платить за него не нужно. Если говорить о стеке, то не обязательно использовать mssql, можно и mysql, и postgres и т.д., он отлично работает с разными бд. Тоже самое касается и IIS, есть селфхост, есть кестрел.
    Ответ написан
    2 комментария
  • Как и на чем лучше сделать приложение с таким интерфейсом (пример на windows form)?

    @kttotto
    пофиг на чем писать
    Не понятен вопрос, ибо "проще" понятие растяжимое и субъективное. Если Вы не слышали о WPF, то советую на него обратить внимание. Он не проще винформов, но он умеет решать те задачи, которые Вы описали. Если не найдете внутри нужных контролов, то на просторах инета найдете кучу дополнительных.
    Ответ написан
    Комментировать
  • Насколько актуально сегодня в финансовом плане заниматься геймдевом?

    @kttotto
    пофиг на чем писать
    Одно время интересовался геймдейвом, всевозможные конференции, общался со многими людьми, которые на этом зарабатывают и с теми, которые ушли из того направления. Те, которые зарабатывают, так и говорят, что это фарт. Ты можешь вложиться в игрушку, думая, что она будет революцией, а в итоге окажется никому не нужна. А может быть наоборот - какой то бред дешевый, а будет миллион загрузок по доллару. В общем геймдейв трудно предсказуемая вещь в плане заработка и поэтому один вариант, это конвейер, в ожидании, что какая-то выстрелит.

    Ну это я о мобильной разработке. Если говорить о серьезных играх, то в одиночку и даже 5 человек - это мало рук, т.к. для успеха важны даже не программисты и в реальных проектах они составляют 10% от всей команды, остальные: сценаристы, иллюстраторы, дизайнеры, звукооператоры, менеджеры и т.д.

    И это все при том, что в последние годы, геймдейв по обороту превзошел Голивуд, т.е. денег там крутится немерено и можно попробовать что-то себе урвать. Но опять, из моего общения я вынес, что влезть туда сейчас очень тяжело, рынок устаканился, ниши поделены и новички, без поддержки монстров, обречены на провал. Молодые сейчас в основном сами не продают потребителю, продают тем, у кого есть устоявшиеся выходы на рынки.
    Ответ написан
    Комментировать
  • Какой смысл в boxing/unboxing?

    @kttotto
    пофиг на чем писать
    Иногда есть необходимость работать с чем то обобщенным, абстрагироваться от конкретного типа. Например при сериализации в json для отправки данных клиенту, как то так
    public string ResponseData(object value)
    {
    	retrun JsonConvert.Serialaze(value);
    }

    Теперь мы может одним методом отправить хоть объект, хоть значимый тип. Если бы не было упаковки, пришлось бы писать кучу перегрузок для метода.
    Ответ написан
    1 комментарий
  • От куда берутся пустые отступы в верстке, если в стилях они не заданы?

    @kttotto
    пофиг на чем писать
    Вообще дело немного в другом. Убрать разрывы строк в html это всего лишь трюк.
    Причины и разные варианты решения есть здесь.
    В Вашем случае справляется добавление в .piningation-down font-size: 0px;
    Ответ написан
    Комментировать
  • Как сделать поиск всех мест с базы от точки а до точки б?

    @kttotto
    пофиг на чем писать
    Это называется построение траектории с буфером. Для этого, на основе траектории и буфера строится полигон, а затем уже стандартный алгоритм вхождения точки в полигон.

    Самому писать трансформацию линии в полигон - это гемор еще тот, я пытался). По точкам строятся окружности, потом прямоугольники по линиям, потом делается триангуляция, потом удаляются все внутренние треугольники. Но это еще пол беды, потому что есть разница в расстоянии на градус на севере и юге и учитывать в каждой точке полигона этот коэффициент у меня не получилось, в общем кривой полигон получался. Писал я на C# и я не нашел библиотеки, которая бы это делала. Зато я нашел такую на js turf . Когда клиент строит траекторию, указывает буфер, то при сохранении полигон строится на клиенте и уже трансформированный geojson отправляется на сервер.

    Полигон из траектории с буфером я делал так
    var lineWithBuffer = turf.buffer(line, buffer, 'meters');
    geo.features[i].geometry = lineWithBuffer.geometry;
    Ответ написан
    Комментировать
  • JavaScript: почему не срабатывает функция?

    @kttotto
    пофиг на чем писать
    Ошибка здесь
    if (txt.style.backgroundColor='#fff0f5')
    Вы его здесь присваиваете, а не сравниваете.
    Исправьте на
    if (txt.style.backgroundColor == '#fff0f5')
    Ответ написан
    1 комментарий
  • Как начать чтение файла с определенной строки?

    @kttotto
    пофиг на чем писать
    Вы не указали яп. В C# это решается одной строкой кода
    File.ReadLines(pathToTextFile)
    	.SkipWhile(line => !line.Contains("word"))  // пропустит строки по условию
    	.Skip(count)        // сколько строк пропустить надо
    	.TakeWhile(line => line.Contains("word"))  // берет строки по условию
    	.Take(count)        // сколько строк взять надо

    А так, не зная длины строк, как Вы будете смещение делать? Поэтому, кроме предложенного Вами варианта, вариантов и нет) Всякие метки, хеши и индексы я не учитываю, Вы же не хотите размер файла увеличивать.
    Ответ написан
    2 комментария
  • Как реализовать фильтрацию записей на основе SQL подобного текста?

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

    @kttotto
    пофиг на чем писать
    Все зависит от количества данных. Если в таблице вывел все что есть, то обходишься без запросов на сервер, все делаешь js-ом.
    Есть два варианта. Если это spa, тогда на каждый селект вешаешь обработчик с запросом на сервер, в запросе передаешь параметры фильтра. В ответе получаешь отфильтрованные данные и переписываешь таблицу на клиенте. Что-то подобие
    $(".selectParam").change(function(){
    	var param = {
    		// Заносишь сюда все, что в селектах выбрано
    	}
    	$.ajax{
    		data: param,
    		success: function(data){
    			// отрисовать таблицу с новыми данными
    		}
    	}
    }

    Можно также таблицу сделать в частичном представлении и тогда ее можно переписывать не на клиенте, а делать запрос на сервер, который будет возвращать уже html с таблицей и тогда ее надо будет только вставить
    success: function(data){
    			$("#mytable).html(data);
    		}

    Если не spa, то параметры селектов (фильтра) отправлять через форму по кнопке "фильтровать" и в ответ с сервера получать новую страницу с новыми отфильтрованными данными в таблице.
    Ответ написан
    Комментировать
  • Как я могу превратить код в изображение?

    @kttotto
    пофиг на чем писать
    На base64 это не похоже, значит обычный набор байтов. Значит строку надо конвертнуть в массив байтов. Ну потом это в поток и либо сохранить в файл, либо отдать дальше куда надо. Примерно как то так
    byte[] imageBytes = Encoding.ASCII.GetString(strData);
    using(var str = Image.FromStream(new MemoryStream(imageBytes)))
    {
        str.Save("image.png", ImageFormat.Png);
    }
    Ответ написан
    8 комментариев
  • ASP.NET .NET Core Web Api -- почему параметры всегда null?

    @kttotto
    пофиг на чем писать
    Атрибут FromBody может применяться только к одному параметру. Он нужен, когда Вы в теле передаете параметр простого типа. Если Вам нужно отправить несколько параметров пост запросом, сделайте сложный тип (dto, viewModel, как нравится)
    public class AuthorizeModel
    {
    	public string Login { get; set; }
    	public string Password { get; set; }
    }

    В этом случае атрибут можно не указывать.
    Вот тут подробности.
    Web API reads the response body at most once, so only one parameter of an action can come from the request body. If you need to get multiple values from the request body, define a complex type.
    Ответ написан
  • Является ли хорошей практикой делать интерфейсы даже тогда, когда класс не планируется заменять?

    @kttotto
    пофиг на чем писать
    Нет, не надо. Не нужно усложнят проект там где это не требуется.
    Есть правило первой пули: сначала Вы пишите максимально просто и только когда приходят первые изменения, которые требуют абстракции, тогда только Вы ее выделяете.
    Ответ написан
    2 комментария
  • Какие решения для создания UI вы используете?

    @kttotto
    пофиг на чем писать
    Windows Forms устаревшая технология. Сейчас для десктопа под виндовс разрабатываются на WPF. Там спецом все сделано для возможности гибкого дизайна.
    Ответ написан
    3 комментария
  • Как использовать ASP.NET Identity в CMS?

    @kttotto
    пофиг на чем писать
    В EF core нет model first, только code first и database first, хотя может за последний год что-то и поменялось. Identity настраивается по своему вкусу, все достаточно гибко. Последние годы использовал только кодфёст, собственно это рекомендуемый способ. Бд обновляются миграциями, туториалов в сети полно как, можно самому код написать, можно сгенерировать на основе разницы бд.
    Ответ написан
    Комментировать
  • Как узнать размер изображения?

    @kttotto
    пофиг на чем писать
    Если просто для информации
    Image myImg = Image.FromFile("path here");
    Затем здесь.
    А в общем здесь.
    Bitmap нужен, если Вы с изображением что-то хотите сделать.
    Ответ написан
    1 комментарий
  • Как реализовать роутинг для WebSocketServer?

    @kttotto
    пофиг на чем писать
    Не совсем понятно зачем Вам нужна цепочка обязонностей, если для каждого типа сообщения выполняется строго один хендлер.
    Как только Вы находите первый подходящий, Вы выходите из цикла
    if (handler.CanHandle(socket, messageType, server))
    {
    	handler.Handle(socket, webSocketMessage, server);
    	return;
    }

    Цепочка обязанностей, это по сути конвеер, по которому пройдет сообщение. Этот патерн хорош, что легко можно добавить новое условие обработчика для каких то поступающих данных. Например, первый хендлер расшифровать, второй отформатировать, третий залогировать и т.д. Для этого в каждом Вашем хендлере должен быть список разрешенных для обработки типов сообщений (чтобы каждый хендлер в конвеере знал какие ему нужно типы сообщений обработать) или в самом сообщении должно быть указано какими хендлерами его обрабатывать. Первый вариант получше.
    Но у вас в каждом хендлере указано строго для одного типа. Поэтому можно было обойтись обычным свитчом.
    public BaseHandler HandlerFactory(messageType)
    	switch(messageType)
    	{
    		case ChatMessage.Type:
    			retun new ChatHandler();
    			break;
    		case AuthMessage.Type:
    			retun new AuthHandler();
    			break;
    		...
    	}
    }
    
    var handler = Successor.HandlerFactory(messageType);
    handler.Handle(socket, webSocketMessage, server);

    Ну или на крайняк без этого фора
    var handler = Handlers.FirstOdefault(x => x.CanHandle(socket, messageType, server));
    if(handle != null)
    	handler.Handle(socket, webSocketMessage, server);

    Или сделайте из списка хендлеров дикшинари
    Handlers[messageType].Handle(socket, webSocketMessage, server);

    Лично я бы использовал фабрику, только в данном случае без лишних созданий экземпляров, это выглядит проще и понятнее, добавить в нее еще один хендлер - это две строки кода.
    Если Вас смущает статический класс, сделайте синглтон. По факту фабрики обычно и делают синглтонами.
    Если везде смущает три параметра в конструкторе (socket, messageType, server), оберните их в фасад
    class HandlerParam
    {
    	public IWebSocketConnection socket { get; set; }
    	public string webSocketMessage { get; set; }
    	public IServer server { get; set; }
    }
    
    var handlerParam = new HandlerParam
    {
    	...
    }
    
    handler.Handle(handlerParam);
    Ответ написан
    Комментировать
  • NUnit. Тест не выполняется и зависает - C#!?

    @kttotto
    пофиг на чем писать
    У Вас идет ожидание ввода Console.ReadLine(), это блокирует дальнейшее выполнение.
    Ответ написан
    1 комментарий
  • Уже готовое MVC5 приложение написанное в VS на Ubuntu Server?

    @kttotto
    пофиг на чем писать
    Вы попробуйте его собрать под .NET Core и получите ответ.
    Сам не пробовал, но думаю не выйдет, будут зависимости от библиотек, которые только с .net работают.
    Ответ написан
    1 комментарий