Задать вопрос
  • Каким образом передавать данные от приложения WinForm к веб-серверу на asp.net mvc?

    Nipheris
    @Nipheris Куратор тега C#
    Да какой уж DDE)
    У сервера API для приема данных есть? Если нет, почему бы не взять WebAPI и не написать его, раз уж основное веб-приложение на ASP.NET MVC? Будет самым простым, логичным и совместимым вариантом, просто опубликуете вебапи рядом с приложением (не забудьте авторизацию сделать).
    Есть конечно и масса других вариантов, например если данные приходят часто и много (постоянный поток), то может лучше и какой-нибудь protobuf поверх обычного TCP соединения или веб-сокетов.
    Если нельзя взять и написать такой веб-сервис для приема данных, то что тогда можно? Какие у вас ограничения?
    Ответ написан
    2 комментария
  • Нужен ли сейчас Си?

    Nipheris
    @Nipheris Куратор тега C++
    Си как язык и экосистема, безусловно, нужны много где. Вопрос в том, нужны ли ВЫ этой экосистеме. Любой специались ценен не только знанием языка, но еще и знанием экосистемы и, самое главное, умением решать задачи, где вышеуказанный язык даёт наибольшую эффектиновсть с точки зрения бизнеса.
    Мало кому сегодня нужен человек, знающий PHP, но не знающий ничего о веб-разработке. С Си (да и с C++) то же самое. Чтобы вам давали те задачи, для решения которых имеет смысл использовать именно Си, вам нужно расти как специалист и в других областях. Например, хорошо разбираться в структурах данных. В управлении памятью. В машинной арифметике.
    Сравните например, человека, который просто знает, что в языке Си есть тип float, и человека, которому известно, что в Сишный float не запишешь значение 0.13, не потеряв в точности. А также человека, который понимает, почему точность теряется. И еще человека, который знает, что можно предпринять, если все-таки нужно как-то оперировать с десятичными дробями без потери точности.

    Этот ответ должен вас мотивировать на рост как IT-специалиста в целом, уделяющего дополнительное внимание принципам работы вычислительной техники и различным низкоуровневым вещам.
    Ответ написан
    2 комментария
  • Как сгенерировать CMakeList.txt?

    Nipheris
    @Nipheris Куратор тега C++
    Вообще CMake-файлы пишутся руками. Генерируются потом проекты/билд-файлы для конкретных тулчейнов. Возможно есть какие-либо конвертеры в CMakeLists.txt, но я не уверен, что они дадут вам хороший результат. Если проектом заниматься собираетесь серьезно, лучше самому разобраться.
    Да, для CLion наличие CMakeLists критично, эта IDE очень тесно интегрирована с CMake и в этом одна из ее киллер-фич. Поэтому, если нет возможности/желания/времени переводить проект на CMake (или вы просто не можете на это повлиять), то либо сами пишите CMake-скрипты лично для себя, либо пользуйтесь другой IDE/редактором. Более конкретные советы сложно дать, не зная проекта и задач, которые вы собираетесь в нем решать.
    Ответ написан
    3 комментария
  • Как посчитать до какого значения заполнен массив по каждому из измерений?

    Nipheris
    @Nipheris Куратор тега C#
    И этот массив заполнен некоторыми строковыми значениями, но не полностью, а только до некоторых значений.

    Это предположение неверно. Массив не бывает заполнен частично, до некоторых значений. В массиве всегда есть все значения, просто при создании массива они устанавливаются в дефолтовые.
    Вам нужно хранить ваши значения в структуре переменного размера, например в списке (List).
    Либо, раз уж у вас значения строкового типа, вы можете воспользоваться тем фактом, что строка - это ссылочный тип, и поэтому может иметь значения null. Вы можете идти по элементам массива до первого встретившегося null и считать его первым "незаполенным" элементом, если это подходит для вашей задачи (правда, тогда это придется делать каждый раз заново).
    Ответ написан
    Комментировать
  • Какую книгу лучше взять для изучение программы visual studio?

    Nipheris
    @Nipheris Куратор тега C++
    Для "изучения" вещей, таких как IDE, в которых и изучать то нечего, есть официальная документация. Официальная документация к продуктам Microsoft, имеющих отношение к разработке ПО (VS, TFS, библиотеки и прочее), находится на специальном портале, называемом Microsoft Developer Network (MSDN).
    Ответ написан
    Комментировать
  • Одна обратная косая черта в C#?

    Nipheris
    @Nipheris Куратор тега C#
    Вторую обратную косую черту вам ставит сериализатор JSON, т.к. обратная косая черта есть спец. символ в JSON и должна быть заэкранирована. Если вам надо в САМОМ JSON такую вещь: "\/", не добавляйте обратную косую черту в путь вообще. Сериализатор JSON добавит вам её сам, когда заэкранирует ПРЯМУЮ косую черту. Т.е. отдавайте сериализатору как есть, path="Path1/Path2".
    Ответ написан
    Комментировать
  • Как правильно написать sql-запрос?

    select route.name, departure_city.name, arrival_city.name
    from
        route
        join city departure_city on route.departure_city_id = departure_city.id
        join city arrival_city on route.arrival_city_id = arrival_city.id
    Ответ написан
    Комментировать
  • Какие многопользовательские субд с последовательным доступом вы знаете?

    Читать про следующее:
    1) Изоляция транзакций
    2) MVCC
    3) Snapshot isolation

    И какую-нибудь книжку по БД. Сейчас вы ничего не понимаете в работе многопользовательской БД.
    Сайт вы нашли совершенно невероятный. Задумайтесь о поисках других источников.
    Ответ написан
    Комментировать
  • В какую сторону приведет развитие asm.js / Native Client?

    Я считаю, что развитие идет в сторону превращения браузера в целевую платформу (пусть и урезанную) общего назначения, чему должен способствовать WebAssembly, как независимый от вендора низкоуровневый стандарт. Только такой стандарт имеет шансы снять с плеч JavaScript бремя целевого языка построения веб-клиента (т.е. языка, на котором либо все разрабатывается, либо компилится в него из других языков) и положить конец этому идиотизму. Я считаю JS рано или поздно должен стать языком только разработки, и перестать быть еще и "ассемблером для веб-браузера".
    Ответ написан
    Комментировать
  • Как кратко назвать RESTful API, которое, оказывается, никакое и не RESTful, ибо возвращает JSON/XML, кодов HTTP-ошибок не использует, да и URLы не те?

    вижу какие-то статьи, где пишут, будто если с JSON, то это вообще не REST API!

    если REST API - это когда без JSON и XML (т.е. на HTML), то какое же оно тогда API?!

    Ссылки на статьи пожалуйста. Там либо автор фантазирует, либо его неправильно понимают. Единственная причина, по которой автор мог так заявить, это то, что большинство современных RESTful API не гипермедийные. Но это не значит, что не стоит в принципе использовать тот же JSON, это лишь значит, что нужно стремиться включить в него гипермедийные возможности (см. JSON-LD, HAL, Siren) и сам API также строить на этой идее, которая заключается в том, что у вас есть одна "точка входа", а на все остальные ресурсы, имеющиеся в API, вы попадаете, переходя по ссылкам внутри других возвращаемых ресурсов, точно также как вы заходите на сайт, зная его доменное имя, и дальше ходите по ссылкам.

    Однако на практике пока этим пользоваться никто не умеет, гипермедийных апи сейчас единицы. Большинство апишек подразумевает чтение документации с жестко заданными URL ресурсов, по которым нужно обращаться. Ссылки же одних ресурсов на другие используются редко.

    не использующее (или почти не использующее) HTTP-кодов ошибок

    А вот ошибками все-таки стоит пользоваться.

    какие-то паттерны URL наподобие /images/ и /images/1, про какие-то PUT и DELETE, про коды ошибок...

    RESTful API и MVC — что это?
    Основной посыл использования RESTful API - применение основной идеи Паутины для взаимодействия автоматических агентов (приложений), а не только людей.

    Основная идея Паутины - построение распределенной информационной системы путем публикации неких абстрактных ресурсов, выдачи им идентификаторов (в сегодняшнем вебе - иерархических), определения ряда простых и широко известных операций над ними, не зависящих от содержимого ресурса (те самые GET, POST, PUT и т.д.), и связывания этих ресурсов ссылками (это называется гипермедиа, и в частности, гипертекст, если речь идет о текстовой информации).

    Таким образом, если вы хотите какую-то информацию опубликовать как RESTful API, вам необходимо представить ее как набор ресурсов, а все операции над этой информацией выразить через набор предопределенных операций. Фишка в том, что во многих задачах этих предпопределенных операций вполне достаточно, главное правильно определить ресурсы.

    Также важной чертой REST является отсутствие состояния, сохраняемого между запросами к ресурсам. Это очень важно для масштабирования системы.


    Видел слово "JSON-pure API"

    Это уже вкусовщина. Люди не любят XML в API за то, что его модель подходит для описания иерархических данных и документов, но не для привычных объектно-ориентированных отношений между сущностями (он-то и создавался для представления документов, а не для веб-сервисов). Поэтому популярность JSON растет до упора. Многие старые API до сих используют XML, и JSON-pure - способ похвалиться, что ваше API полностью JSON. Сама идея RESTful ничего не говорит о форматах ответа, за исключением того, что формату желательно быть гипермедийным.
    Ответ написан
    4 комментария
  • Как создать проект на С# в MS VS 2015?

    Nipheris
    @Nipheris Куратор тега C#
    Поищите книгу, где C# изучить можно на простейших вариантах приложений, например на консольных. Windows Store возможно вам нафиг не сдался, тем более что для 10-ки это уже UWP.
    Ответ написан
    Комментировать
  • Как сделать Bind по аналогии с QtSignal?

    Nipheris
    @Nipheris Куратор тега C++
    std::placeholders
    btn->onClick = bind(&Player::play, this, std::placeholders::_1);
    Ответ написан
    1 комментарий
  • Как отрисовать большое кол-во точек с помощью WPF 3D?

    Nipheris
    @Nipheris Куратор тега C#
    1) вы так легко считаете память, выделяемую под ваши кубы). Я думаю это весьма далеко от истины, т.к. лично я даже предположить не смогу, что конкретно происходит при создании дотнетовского объекта и сколько конкретно он потребует памяти;

    2) вы используете инструмент не по назначению. WPF - это для относительно малого числа граф. объектов (десятки, сотни) с высоким уровнем интерактивности для каждого из них. Иными словами - для интерфейсов. В интерфейсах есть небольшое количество высокоинтерактивных объектов - кнопок, скроллов, комбобоксов, и именно для таких сценариев WPF и оптимизирован. Вам с 10К кубами уже давно пора брать Direct3D и не мучаться. Это я вам не с потолка говорю, мы тоже когда-то пытались использовать WPF-шную двухмерную графику для двухмерной отрисовки, но быстро поняли, что его инфраструктура слишком тяжелая для нашей задачи. Вы замучаетесь в попытках это все оптимизировать.
    Ответ написан
    Комментировать
  • Как автоматизировать сборку программ (php компонент+soap+git+cmake+vc11+ftp)?

    Nipheris
    @Nipheris Куратор тега C++
    Если прога кроссплатформенная, то https://travis-ci.org/
    Вот мануалы для плюсовщиков: https://docs.travis-ci.com/user/languages/cpp . Можно запускать CMake. Бесплатно - только open-source проекты.
    Генерируется CMake файл

    Странное желание)
    Ответ написан
  • Неявное наследование private ?!?

    Nipheris
    @Nipheris Куратор тега C++
    Вы невнимательно читали про наследование (или читали в плохом источнике).

    Логически (т.е. с точки зрения самой идеи) наследование (причем, любое, public и другие) подразумевает, что реализация базового класса станет частью реализации дочернего. Приватные поля класса - это часть его реализации.

    Технически, наследование в C++ подразумевает наличие подобъекта базового класса в объекте класса-наследника. Т.е. у вас в каждый объект Two помимо его собственных полей (в вашем примере их нет) запихиваются все поля Base (и так с каждым базовым классом, если их несколько), по принципу матрешки. НЕВАЖНО, как указали уже в первом ответе, что вы не имеете к ним доступ из класса-наследника. Важно, что они есть, и методы класса Base могут ими спокойно пользоваться, чтобы выполнять свою работу.
    Ответ написан
    Комментировать
  • Как создать круглую кнопку button со вставленным в неё SVG-изображением, на языке XAML?

    Nipheris
    @Nipheris Куратор тега C#
    1) переделайте/сконвертируйте изображение так, чтобы это был Drawing:
    <GeometryDrawing Brush="#FF8B0000">
          <GeometryDrawing.Geometry>
            <PathGeometry ....... />
          </GeometryDrawing.Geometry>
        </GeometryDrawing>

    Если PathGeometry несколько, используйте DrawingGroup.
    2) поместите полученный XAML в ресурсы;
    3) попробуйте мой велосипед для того, чтобы поместить изображение в кнопку:
    <Image Source="{Binding Source=путь_к/картинке.xaml, Converter={StaticResource ResourceUriToDrawingImageConverter}}" />

    Код конвертера:
    public class ResourceUriToDrawingImageConverter : IValueConverter
    	{
    		public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    		{
    			Uri uri =
    				value is Uri ?
    					value as Uri :
    				value is string ?
    					new Uri(value as string, UriKind.RelativeOrAbsolute) :
    					null;
    
    			if (uri == null)
    			{
    				throw new Exception("Invalid URI value");
    			}
    
    			StreamResourceInfo sri = Application.GetResourceStream(uri);
    			if (sri == null)
    			{
    				throw new Exception("Resource not found");
    			}
    
    			using (Stream stream = sri.Stream)
    			{
    				var drawing = XamlReader.Load(stream) as Drawing;
    				if (drawing == null)
    				{
    					throw new Exception("Resource cannot be converted to drawing");
    				}
    
    				return new DrawingImage(drawing);
    			}
    		}
    
    		public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    		{
    			throw new NotImplementedException();
    		}
    	}

    P.S. Следите за репой https://github.com/Nipheris/SharpVectors.MSBuild - там скоро появятся MSBuild-таски для конвертирования SVG прямо во время сборки проекта.
    Ответ написан
    Комментировать
  • "switch case" - плохо?

    Nipheris
    @Nipheris Куратор тега C#
    О неписанных правилах по написанию какого-либо кода нужно уточнять сначала у того, кто этот код писал или кто его поддерживает сейчас. У конкретного разработчика/команды могут быть свои неписанные правила, которые нужны лично им.
    А сам switch используется достаточно часто, чтобы не считать его злом. Уж гораздо чаще, чем goto. Тем более, switch в шарпе гораздо "безопаснее", чем в том же С++, например компилятор следит, чтобы вы поставили break, если у вас есть код после case.
    Почитайте код популярных библиотек на codeplex или гитхабе, чтобы самому все увидеть.
    Ответ написан
    Комментировать
  • Как преобразовать 1 байт и 0,5 байта в 1,5 байта(Более подробно в описании)?

    Nipheris
    @Nipheris Куратор тега C++
    Я предполагаю нужно выделить 2 байта и записать туда их как-то.

    Вам нужно считать эти два байта как единое целое (например, если вы используете потики, то считать нужно в short int), либо, если это невозможно, то тогда считать байты по отдельности и объединить их в int16_t, как советует Denis Zagayevskiy . И в том и в другом случае вам нужно понимать, что такое порядок байт в записи числа. Когда вы поймете, что такое порядок байт, то поймете, в чем суть вашего вопроса. Следить за ним нужно, т.к. в файле этот порядок байт может быть одним (и он определяется форматом файла), а на вашей машине он, в теории может быть другим, и вам нужно это понимать, когда вы будете склеивать вам int16_t. Если вы не будете его склеивать, а будете считывать сразу в int16_t, то вам нужно сверить порядок байт на вашей архитектуре и в формате файла.

    И да, числа в современной выч. технике:
    а) хранятся в двоичной системе счисления - т.е. все, что вы видите в дебаггере или в вашей программе - это целиком зависит от того, как функция преобразования числа в строку (которую вы потом видите) выбирает символы для записи числа. В большистве таких функций можно указывать систему счисления. Напишите сами такую функцию,чтобы понять, о чем речь;
    б) их размер в памяти/регистрах процессора выровнен на размер байта (как правило это 8 бит). Байт - это квант адресации и обработки данных, поэтому говорить, что число занимает 0.5 байта не вполне корректно с практической точки зрения, т.к. байт занять можно только целиком.

    Т.к. про 0.5 байт вы упомянули скорее по ошибке, я думаю битовые поля вам не нужны.
    Ответ написан
    1 комментарий