Задать вопрос
  • MVP как правильно вернуть переменную во ViewModel прогрессбара?

    Nipheris
    @Nipheris Куратор тега C#
    Посмотреть бы на код, который регулярно считывает progressVal из модели и пихает в прогресс-бар. Иными словами, SetValProg откуда еще вызывается, кроме как при старте? Лично я пока не вижу никакой проблемы с потоками, про которую говорит tex0, т.к. из другого потока устанавливается только интовое поле у Model.
    Ответ написан
    Комментировать
  • C++, объявления функций и их расположение в памяти, как обстоят дела?

    Nipheris
    @Nipheris Куратор тега C++
    Является ли пример 2 примером того, как лучше не делать в больших проектах?


    Большинство компиляторов будут инлайнить функцию в этом случае.

    Разница очень простая - в первом случае вы сможете вынести реализацию в отдельную единицу компиляции, а во втором - нет. Зачем это делать - читайте внимательно про compilation unit. Особенно, если вы пришли из языка, где такой задачи, как разделение include-файлов и файлов реализации нет в принципе.
    Конечно, есть случаи когда вынести реализацию в отдельный cpp-шник невозможно. Стандартный пример - шаблонные классы. Для них реализации всех функций все равно придется указывать в файле, который будет инклудиться. Поэтому особой разницы между 1 и 2 в этом случае нет.

    это как-то связано с компилятором и тем, как он выделяет под функцию память.

    Тогда почитайте про inlining функций, это видимо то, что вы слышали.
    Ответ написан
    1 комментарий
  • Как построить сбалансированное бинарное дерева поиска, в котором данные хранятся в листах?

    Nipheris
    @Nipheris Куратор тега C++
    Если хотите хранить данные только в листах, храните в нелистовых вершинах интервал. Например, в дереве на рисунке вместо нелистовой вершины 37 храните интервал [30, 49]. Подобная идея используется в https://en.wikipedia.org/wiki/R-tree - почитайте про него тоже, если вам нужно для точек. Это как раз дерево для пространственной индексации.
    Ответ написан
  • Как считывать символ нажатой клавиши?

    Nipheris
    @Nipheris Куратор тега C#
    Ответ написан
    Комментировать
  • Извлечение данных из sqlite c#?

    Nipheris
    @Nipheris Куратор тега C#
    "SELECT * FROM 'peoples';"

    select name, year, age, city from peoples
    Делать плановые запросы со звездочкой - моветон, оставьте звездочку для административной консоли.

    object getname = people[0];

    string name = peopleReader.getString(peopleReader.getOrdinal("name"));
    Ответ написан
    4 комментария
  • Как лучше реализовать историю действий?

    Например - человек купил карандаш, потом он ее обменял на цветной карандаш, потом он обменял на шариковую ручку и так далее.


    Это обычно называют история действий, "история" - ключевое слово. Вот вам вариант записи таблицы истории действий:
    [<субъект> | <номер последовательности> | <датавремя>] | <объект> | <действие>
    То, что в кв. скобках - ключ записи.
    Если скажете подробнее, что делаете - кто субъект, какие действия выполняет - предложим и более конкретную схему таблицы.
    Ответ написан
    3 комментария
  • Как научиться писать системные программы для компьютера?

    Nipheris
    @Nipheris Куратор тега C++
    Автору вопроса для начала посоветую понять и осознать, что C++ это такой язык, где стандартная библиотека обеспечивает лишь базовые нужды, а все остальное обеспечивается бесчисленным количеством сторонних библиотек (как Сишных, так и плюсовых), написанных на данный момент.
    Безусловно, WinAPI это системный интерфейс, также как и стандарт POSIX, но я не понимаю почему тут все его начали советовать. Правильно заметил Дмитрий Ковальский - для записи в файл скорее всего будет достаточно файловых потоков в стандартной библиотеке. Для многого другого хватит Буста. Именно с них и надо начинать. Использовать непосредственно винапи без веской причины сегодня не стоит. Лучше сначала поискать кроссплатформенные библиотеки.
    Ответ написан
    5 комментариев
  • Почему происходит выход за пределы массива?

    Nipheris
    @Nipheris Куратор тега C++
    // cats[9][2] // queue имеет 18 чисел

    у вас cats это массив из двух string-ов, но вы его индексируете от 0 до 8:
    cats[i][0]

    вы точно понимаете, что пишете? не вижу, чем бы вам тут мешала строгая типизация, на js это было бы также непонятно что
    Ответ написан
  • Можно ли использовать один порт для виртуальных хостов Nginx?

    > Можно ткнуть на мануал, где посмотреть)
    В HTTP/1.1 и выше есть обязательный заголовок Host, в котором указывается доменное имя на сайта, к которому делается запрос. По нему веб-сервер всегда может определить, на какой виртуальный хост пришел запрос:
    The "Host" header field in a request provides the host and port information from the target URI, enabling the origin server to distinguish among resources while servicing requests for multiple host names on a single IP address.
    .....
    A client MUST send a Host header field in all HTTP/1.1 request messages.


    Порты кроме 80-го в публичной Сети почти не используются.

    Если с точки зрения nginx - смотрим директиву server_name, она именно для этого и сделана.
    Ответ написан
  • Какой должна быть ORM?

    > И меня несколько удивило отсутствие каких-либо наработок в этой области в Rust (хотя бы начальных версий).
    1) язык в релизе несколько месяцев, чего вы хотите-то;
    2) не во всех языках ORM смотрится естественно. В C++ нормальной ORM нет до сих пор, есть некоторые библиотеки на базе Qt, но де-факто стандарта нет просто потому, что в языке недостаточно силен уровень метаданных. Но в этом нет проблемы просто потому, что на плюсах редко пишутся приложения, где нужен такой уровень;
    3) А может повсеместное использование ORM это только удел web?
    Я бы сказал что ORM это удел бизнес-приложений и языков высокого уровня (Java/.NET/Ruby). Другое дело, что веб-приложения в 99% случаев пишут на всяких asp.net и Рубях, а не на плюсах, поэтому и такая корреляция. Внутрикорпоративных десктопных приложений по прежнему достаточно, и как раз там ORM тоже любят.

    > Подскажите, на сколько высокоуровневой должна быть ORM?
    Это вам решать, ORM-ки разные бывают, кто-то где-то используют потолще, кто-то - потоньше. Лично я особого смысла в тонких не вижу для большинства задач, поэтому на мой вкус в ORM обязательно должны быть следующие вещи:
    1) martinfowler.com/eaaCatalog/identityMap.html
    2) martinfowler.com/eaaCatalog/unitOfWork.html
    3) martinfowler.com/eaaCatalog/inheritanceMappers.html

    Вообще, озакомьтесь для начала со всеми Object-Relational паттернами: martinfowler.com/eaaCatalog, а то наверняка напишете парк велосипедов.
    Ответ написан
    2 комментария
  • Как попасть в backend-разработку?

    > Кто виноват понятно, а вот что делать? Как стартовать в моем положении? Куда податься?
    Я бы на вашем месте доучил Джангу, и написал бы себе блог на ней (минимум JS, можно вообще без него, некоторое количество кода на серверной стороне, немножко с базой поработаете). Неплохой вариант, чтобы показать свою самостоятельность. На фирмах бывают мелкие проекты, которые хочется отдать одному-двум разработчикам на полную поддержку (от верстки до деплоя на сервер).

    > Насколько критично знание фреймворков при устройстве на работу, насколько глубоко, и какие обязательны?
    Ну вот таки доучите Django, раз начали. Конечно от совсем начинающего этого требовать не должны, но такие вакансии будут называться "стажер". Если вы доучите, то будете Junior-ом.

    > Существуют ли альтернативы web-backend'у, позволяющие не терять накопленный опыт в сетях (разработка каких-либо сетевых сервисов и т.п.)?
    На мой вкус и ваши требования идеальная альтернатива такая: https://moikrug.ru/vacancies/1000014166 . Еще интереснее вакансии в совсем крупных фирмах, например у Близзов - там часто требуются именно сетевые программисты для разработки большого числа нагруженных сервисов, которые у них есть. Например, вот, прям по вашему описанию (protobuf, wireshark), но на такие позиции конечно нужен конкретный опыт, потому что берут лучших. Возможно стоит подтянуть и C++ в пару к Питону - раз вы работаете с сетями, то низкоуровневых вещей бояться не должны)
    Ответ написан
    1 комментарий
  • Как запустить C# код через браузер?

    Nipheris
    @Nipheris Куратор тега C#
    Так или иначе вам нужно выставить веб-сервис наружу. amf1k предложил один из вариантов. Можно WebAPI, можно WCF, можно и Nancy взять. Если код программы недоступен для модификации, тогда вызывайте ее из ком. строки (хотя так будет менее гибко - сложно будет получить, например, текущий статус операции с файлами).
    Ответ написан
    1 комментарий
  • Какие посоветуете библиотеки для парсинга исходного кода?

    Nipheris
    @Nipheris Куратор тега C++
    Странный вопрос - логично, что нужно использовать парсеры конкретных языков.
    В принципе, если нужен только разбор в дерево - попробуйте взять ANTLR и грамматики известных языков: https://github.com/antlr/grammars-v4
    Ответ написан
    1 комментарий
  • Как проверить все биты в байте?

    Nipheris
    @Nipheris Куратор тега C#
    Такие конструкции if надо заменять на словарь.

    Если у вас индексы последовательные и начинаются с нуля, то роль словаря может сыграть список или массив.
    В любом случае, вам нужно сделать отображение "номер бита" => "сообщение".

    Номер бита предлагаю сохранять, чтобы было удобнее записывать таблицу и идти по ней циклом. Оператор сдвига даст вам нужную константу для операции "И".
    Итого:
    using System;
    using System.Collections.Generic;
    
    public class Test
    {
    	private static void AddMessage(Tuple<string, string> message)
    	{
    		Console.WriteLine("{0}, {1}", message.Item1, message.Item2);
    	}
    	
    	public static void Main()
    	{
    		byte val = 176;
    		
    		for (int i = 0; i <= 7; i++)
    		{
    			if ((val & (1 << i)) != 0)
    				AddMessage(messageByBitIndex[i]);
    		}
    	}
    	
    	private static Tuple<string, string>[] messageByBitIndex =
    	{
    		Tuple.Create("1", "А1"),  // 0
    		Tuple.Create("1", "А2"),  // 1
    		Tuple.Create("2", "Б1"),  // 2
    		Tuple.Create("2", "Б2"),  // 3
    		Tuple.Create("1", "АА1"), // 4
    		Tuple.Create("1", "АА2"), // 5
    		Tuple.Create("2", "ББ1"), // 6
    		Tuple.Create("2", "ББ2"), // 7
    	};
    }


    ideone.com/vbLapl
    Ответ написан
    1 комментарий
  • Как зарезервировать n-ое место (GB) на жёстком диске (по моему описанию)?

    Почитайте уже наконец Таненбаума, почитайте про файловые системы. Зачем вы задаете вопросы с одной и той же картинкой, ну понятно же что вам надо познакомиться с устройством ОС.
    Ответ написан
    2 комментария
  • Воспроизведение музыки WPF?

    Nipheris
    @Nipheris Куратор тега C#
    Есть еще либа на свете - NAudio. Можно ей попробовать. Возможно, она сама не умеет качать по урлу, тогда скачайте сами WebClient-ом и отдайте либе.
    Ответ написан
    Комментировать
  • Как создать новоге окна используя паттерн MVVM, используя существующий ViewModel?

    Nipheris
    @Nipheris Куратор тега C#
    > PersonsList
    советую форму назвать PersonsListWindow.

    Потом вам надо создать еще одну вьюмодельку - PersonsListViewModel, которая будет вьюмоделью для ВСЕЙ ФОРМЫ в целом, и у которой будет свойство Persons/PersonViewModels типа IObservableCollection. В этой коллекции у вас будут все вьюмодельки для каждого человека. Тогда вы вашей форме PersonsListWindow должны будете назначить PersonsListViewModel в качестве DataContext, а уже ваш контрол списка (ListView например, или DataGrid, смотря что там у вас) забиндить на свойство Persons/PersonViewModels. Это будет что называется, "по паттерну". Итого:
    1) personsListWindow.DataContext = new PersonsListViewModel();
    2) в XAMLе контрол-список (его свойство ItemsSource) биндите на свойство PersonViewModels
    3) каждый элемент списка автоматически сопоставляется с вьюмоделькой из ObservableCollection.

    Если потом на форму добавите еще контролы, то и во вьюмодельку для формы (PersonsListViewModel) сможете добавить еще данные для показа/модификации. Например, захотите в этом списке выбирать ответственного за работу человека - тогда можно сделать в PersonsListViewModel свойство Leader типа PersonViewModel. Или если у вас там будут кнопки Создать/Удалить - то можно выставить соответствущие ICommand-объекты.
    Ответ написан
  • Есть русскоязычные книги по Entity Framework?

    Если посвежее, то вот это: www.apress.com/9781430257882
    На русском искать не советую, будет в лучшем случае устаревшее.
    Вообще, если хотите чего-то толкового, тем более на русском, почитайте про РБД чего-нибудь и про решение реальных задач с их использованием. Если вы хорошо представляете, что такое реляционная база и что такое объект в ООП, то вы и сами уже будете знать, ЧТО примерно должно быть в такой библиотеке. После этого будет достаточно документации. Можете еще посмотреть ORM паттерны у Фоулера: martinfowler.com/eaaCatalog , разделы Object-Relational Structural Patterns и Object-Relational Metadata Mapping Patterns. По своей сути, любая "толстая" ORM это реализация всех или части этих паттернов.

    > желательно применимо к WinForms.
    Используемая UI-подсистема максимально не зависит от Entity Framework. Ищите книгу по нужной интерфейсной технологии и изучайте.
    Ответ написан
    Комментировать
  • Как можно подменить вызов функции в классе?

    Nipheris
    @Nipheris Куратор тега C++
    Вызывать обе с помощью указателя на метод. Вы в вопросе уже ответ написали.
    Ответ написан