Задать вопрос
  • ThreadPool vs Thread - многопоточный TCP сервер?

    @kttotto
    пофиг на чем писать
    Используя в чистом виде thread Вам придется руками контролить множество нюансов, когда в TPL это все сделается за Вас. Рекомендуется использовать TPL.
    Ответ написан
    Комментировать
  • Ошибки jQuery - формируются запросы на версию самой jQuery. Как исправить?

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

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

    @kttotto
    пофиг на чем писать
    Проблема может быть в почтовике, он может письмо с html вложениями интерпретировать как спам, опасное и т.д. В настройках своей почты попробуйте поснимать галочки всяких проверок и фильтров. Можете поискать письмо в папке со спамом.
    Ответ написан
    1 комментарий
  • Вопросы по авторефакторингу в Visual Studio 2017 Community. В чем разница?

    @kttotto
    пофиг на чем писать
    Никакого, это даже не лямбда выражение, это просто синтаксический сахар для стиля написания. Так же как и в свойствах Prop {get;set;} => "..."
    Ответ написан
    Комментировать
  • По какой причине не работает скрипт?

    @kttotto
    пофиг на чем писать
    Поставьте брейкпоинт внутри onclick и посмотрите что он вообще туда заходит по клику и дальше пошагово смотрите где и что не отрабатывает.
    Я на странице сайта вообще не нашел этого участка кода. Он там есть?
    Ответ написан
    1 комментарий
  • Что имеется ввиду под "Работа в нескольких потоках(веб-приложение)"?

    @kttotto
    пофиг на чем писать
    В первую очередь надо понимать разницу между аснихронностью и паралельностью.
    Во вторых, чтобы и то и другое иметь возможность использовать, надо знать жизненный цикл приложения, в частности asp mvc.
    В третьих, под знанием многопоточности понимается знание примитивов синхронизации и когда в каких задачах их использовать.
    В четвертых, под умением распаралеливать задачи в .net, подразумевается знание библиотеки TPL и умение ею пользоваться.
    Ответ написан
    Комментировать
  • Создать условие в форме запроса с помощью jquery. А именно флагов?

    @kttotto
    пофиг на чем писать
    По сути, условие первого чекбокса никогда не заблокирует кнопку, только разблокирует. Допустим, Вы сняли галочку с первого чекбокса и поставили галочку на втором чекбоксе - кнопка разблокируется.
    Вам нужно нормально проверку условия сделать, при такой Вашей проверке кнопка мигать будет дизейблить-раздизейблить.
    if(reg_status1 == "on" && reg_status2 == "on" && uslovie == "on") {
    	$('#submit_r').removeAttr('disabled');
    }
    else {
    	$('#submit_r').attr('disabled', 'disabled');
    }
    Ответ написан
  • Как избавится от A call to PInvoke function unbalanced the stack?

    @kttotto
    пофиг на чем писать
    Надо смотреть как Вы скомпилировали саму функцию. Думаю разница в соглашениях, CallingConvention.Cdecl. Может она скомпилирована как stdcall?
    Вот подобный вопрос
    Ответ написан
    1 комментарий
  • Как провести удаление функции в c#?

    @kttotto
    пофиг на чем писать
    Я думаю не совсем верно вопрос задан.

    Если Вы хотите именно добавлять и удалять методы на объекте, то Вам нужны делегаты. Сделаете поле у карты типа делегата, который объявите и потом этому полю меняйте методы, либо обнуляйте на метод, который ничего не делает. Можете взять готовые типы делегатов тут.

    Если же Вам надо, чтобы объект просто делал или не делал один заранее определенный метод, то делаете у объекта буловский флаг и метод, который будет этот флаг переключать. А внутри нужного метода, сначала проверяете состояние этого флага, прежде чем что-то сделать. Этот вариант Вам показали постами выше.
    Ответ написан
    Комментировать
  • JS - При выборе файла после клика по input как узнать, что пользователь не выбрал файл, а нажал отмена (закрыл окно)?

    @kttotto
    пофиг на чем писать
    У меня это примерно так делается
    $("input[id='uploadFile']").change(function(e){
    	var tgt = e.target || window.event.srcElement;
    	var files = tgt.files;
    
    	if (FileReader && files && files.length) {
    		var newImg = "<img id='new-img' src='#' alt='' class='img-thumbnail'/>";
    		var selectedFile = files[0];
    		
    		var fr = new FileReader();
    		fr.onload = function () {
    			newImg = newImg.replace("#", fr.result);
    		}
    		fr.readAsDataURL(selectedFile);
    		
    		var fdata = new FormData();
    		fdata.append("file", selectedFile);
    		....
    	}
    });
    Ответ написан
  • Как взять значение из массива?

    @kttotto
    пофиг на чем писать
    Обычным if-else эта задача не решится. Это попадание точки в полигон. Если полностью описывать алгоритм, то нужно перебрать вектора (два соседних элемента в массиве, это один вектор) и смотреть с какой стороны вектора эта точка находится. Иначе говоря, при движении по оси Х пересекает она вектор или нет. Для этого используется косое умножение векторов. Суммируем и смотрим, если точка пересекла четное количество раз векторы, то она не входит в полигон, если не четное - попадает в площадь полигона.

    Это мой работающий код, модели из GeoJSON.Net
    public bool IsBelong(Point point, IGeometryObject geoGeometry)
    {
    	var polygon = ((Polygon) geoGeometry).Coordinates;
    
    	var inPolygon = false;
    
    	var x = point.Coordinates.Latitude;
    	var y = point.Coordinates.Longitude;
    
    	var points = polygon[0].Coordinates;
    
    	for (var i = 0; i < points.Count - 1; i++)
    	{
    		if (((points[i + 1].Longitude > y) != (points[i].Longitude >= y)) 
    				&& 
    			(x < (points[i].Latitude - points[i + 1].Latitude) * (y - points[i + 1].Longitude) / (points[i].Longitude - points[i + 1].Longitude) + points[i + 1].Latitude))
    		{
    			inPolygon = !inPolygon;
    		}
    	}
    	return inPolygon;
    }
    Ответ написан
    Комментировать
  • Два одинаковые массива не равны?

    @kttotto
    пофиг на чем писать
    Потому, что Вы сравниваете не элементы массива, а ссылки на объекты. А так как это разные объекты, то и ссылки будут отличаться. Если хотите поэлементно сравнить массивы, то используйте другие способы.
    Ответ написан
    Комментировать
  • Как работает рекурсия при итерации?

    @kttotto
    пофиг на чем писать
    yield return всего лишь запоминает текущее положение итератора. Поэтому yield return current.value будет возвращать одно и тоже значение, первое, т.к. Вы не итерируетесь по коллекции traverse(node), нет методов, которые сделают MoveNext(). Посмотрите на вариант Михаил Макаров, там итерация происходит с помощью foreach.
    Ответ написан
    Комментировать
  • C# Replace по порядку?

    @kttotto
    пофиг на чем писать
    Дарю! И вообще учи мат часть, за счет халявы на тостере долго не протянешь.
    static void Main(string[] args)
    {
    	var str = "{1|2|4}{1|3|3}{2|2|3}{1|1|3}";
    	var number = new [] { "3", "2", "1", "2" };
    
    	var temp = str
    		.Trim('{', '}')
    		.Split(new []{ "}{" }, StringSplitOptions.None)
    		.Select(x => x.Split('|').ToArray())
    		.ToArray();
    
    	var result = new StringBuilder();
    	for (var i = 0; i < temp.Length; i++)
    	{
    		var isParse = int.TryParse(number[i], out int index);
    		if (isParse)
    		{
    			result.Append(temp[i][index - 1]);
    		}
    	}
    
    	Console.WriteLine(result);
    	Console.ReadKey();
    }
    Ответ написан
    8 комментариев
  • Наследование, или же как использовать переменную одного наследует ого класса в другом наследует классе?

    @kttotto
    пофиг на чем писать
    Передать его как параметр либо через конструктор второго класса, либо через один из его методов.
    abstract class A
    {
    	protected string _value;
    }
    
    class B : A
    {
    	// Через общее отнаследованное поле
    	public string ValueB { get { return _value; } set { _value = value; } }
    }
    
    class C : A
    {
    	private string _valueC;
    	
    	public C(string any)
    	{ }
    	
    	// Через конструктор
    	public C(string any)
    	{
    		_valueC = any;
    	}
    	
    	public string ValueC { get { return _value; } set { _value = value; } }
    	
    	// Через метод
    	public void SetMethod(string any)
    	{
    		_valueC = any
    	}
    }
    
    var b = new B();
    var c = new C();
    b.ValueB = "any"; // c.ValueC = "any"
    // так же как и
    c.ValueC = "any"; // b.ValueB = "any"
    
    b.ValueB = "any";
    // Через конструктор
    var c = new C(b.ValueB); 
    // Через метод
    c.SetMethod(b.ValueB);
    Ответ написан
    1 комментарий
  • Как удалить символы в строке?

    @kttotto
    пофиг на чем писать
    Потому что replace заменяет только первое вхождение. Если необходимо удалить все вхождения, то нужно использовать регулярные выражения.
    text = text.replace(/,/g, '');
    Ответ написан
    3 комментария
  • Как правильно настроить smtp для email рассылок?

    @kttotto
    пофиг на чем писать
    Если конкретно по Вашему коду, то
    1. Если Вы так жестко прописываете все настройки в коде, то сделайте список настроек. Сначала сам класс
    class SmtpSetting
    {
    	public string Host {get; set;}
    	public string Server {get; set;}
    	public string Port {get; set;}
    }

    Потом сам список
    var smptSettings = new List<SmptSetting>
    {
    	new SmptSetting
    	{
    		Host = "mail.ru",
    		Server = "smtp.mail.ru",
    		Port = 587
    	},
    	new SmptSetting
    	{
    		Host = "yahoo.co",
    		Server = "smtp.yahoo.co",
    		Port = 465
    	},
    	...
    }

    И тогда Вам не придется использовать switch
    var currentSmtp = smptSettings.FirstOrDefault(x => x.Host == host);
    if(currentSmtp != null)
    {
    	var smtp = new SmtpClient(currentSmtp.Server, currentSmtp.Port);
    }

    Вы сказали, что у Вас есть бд, где храните аккаунты. Храните там же и настройки smtp, в том же виде (Id,Host,Server,Port), тогда из бд Вы будете получать весь список серверов и при изменении списка настроек smtp, не придется лезть в код и пересобирать проект.

    2. И для того, чтобы Вы могли вставлять html разметку в письмо, у MailMessage есть настройка IsBodyHtml, установите ее в true.
    Ответ написан
    1 комментарий
  • Как быть с двойным циклом for jquery?

    @kttotto
    пофиг на чем писать
    Добавьте в "/api/backend/get_values" параметр async: false .
    Из-за того, что запрос асинхронный, он не дожидается ответа от запроса и делает properties.appenTo(line);
    Еще вариант, учесть, что аякс метод возвращает промис, а значит можно сделать что-то подобное $.ajax({...}).then(function(){ properties.appenTo(line); })
    Ответ написан
    Комментировать