• Как автоматически выбрать тип данных?

    Nipheris
    @Nipheris Куратор тега C#
    Воспользоваться благом C# "все есть объект":
    1) заменить List<List<string>> на List<List<object>>;
    2) dt.Rows[i].Field<string>(dt.Columns[j].Caption) заменить на dt.Rows[i][dt.Columns[j]];

    3) объяснить назначение всего данного кода, ибо он напоминает переливание из пустого в порожнее, и List<List<object>> это бомба по определению.
    Ответ написан
    Комментировать
  • Как называются "не точности" в двух строках в информационных системах?

    Если описанное вами уже имеет место, и вам надо с этим жить, то ответ на ваш вопрос - Data integration, и, в частности, Semantic integration - у вас один из простейших вариантов семантической интеграции - когда используются разные терминологические алфавиты.

    Схожие термины:
    Ответ написан
    Комментировать
  • Удобный способ вывода информации из MySQL?

    Почитайте, что такое веб-сервис, и в частности - REST-сервис, или REST API. Почитайте про то, как с помощью JSON можно обмениваться данными между веб-сервисом (т.е. бэкендом) и веб-клиентом (в том числе фронтендом в браузере).
    Сейчас для вас это другое измерение, если вы задаете такой вопрос.
    Ответ написан
    Комментировать
  • Где следует использовать умные указатели?

    Nipheris
    @Nipheris Куратор тега C++
    Когда их стоит использовать

    Умные указатели? - задан сегодня утром.

    Нужно ли, например, объявлять массив при помощи std::unique_ptr и т.д.

    В большинстве случаев лучше std::array для массивов размера, известного во время компиляции, и std::vector - если размер становится известен только при выполнении программы. Исключение - необходимость взаимодействия с кодом, использующим обычные указатели на массивы (в частности, с Сишным кодом).

    и какой из них?

    std::unique_ptr подразумевает одного владельца в один момент времени, и переход владения от одного умного указателя к другому (ownership transfer). std::shared_ptr использует подсчет ссылок, чтобы у объекта было несколько владельцев. Объект будет уничтожен, когда последний shared_ptr, указывающий на этот объект, будет уничтожен.

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

    Отдельно добавлю, что unique_ptr это один из способов моделирования композиции объектов (когда умирает владеющий объект, умирают и те, которыми он владеет), а shared_ptr - агрегации (если владеющий объект умирают, те, которыми он владел, продолжают жить, пока они нужны кому-то еще).
    Ответ написан
    3 комментария
  • Зачем google и yandex делают редирект на www?

    Холиварить сюда пожалуйста. Девочки налево, мальчики направо (что такое лево и право решите сами, мне без разницы):

    no-www.org
    www.yes-www.org
    Ответ написан
    1 комментарий
  • Учебник по MVVM+WPF с примерами/заданиями?

    Nipheris
    @Nipheris Куратор тега C#
    Raffaele Garofalo, "Building Enterprise Applications with Windows Presentation Foundation and the Model View ViewModel Pattern"

    www.oreilly.com/pub/pr/2761
    Ответ написан
    Комментировать
  • Умные указатели?

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

    Видите ли, в языке, где есть какая-либо ОО-модель, неизбежно будут выделяться две категории типов данных - типы данных, экзмепляры которых ведут себя как значения (values), и типы данных, экземпляры которых ведут себя как переменные/объекты (если тут непонятно, опишу подробнее).

    Отличительной особенностью объекта с теоретической точки зрения является identity - некий ключ или признак, с помощью которого этот объект уникальным образом идентифицируется. В ОО базах данных в качестве identity используется т.н. OID. В C++ в качестве identity объектов используются указатели. Это удобно, т.к. место объекта в памяти однозначно идентифицирует его (тут как раз и прослеживается тот факт, что объекты в C++ - это суть переменные, изменять состояние которых можно только строго определенным образом).

    Хотя язык C++ позволяет в теории работать с любым типом как "по значению", так и посредством указателей, реальные классы обычно проектируются так, чтобы подчеркнуть их семантику значение/объект. Например, для типов которые ведут себя как "значения" пишется конструктор копирования и разрешаются операции присвоения. Для типов-"объектов" наоборот, операция присвоения и конструктор копирования запрещаются. Конечно, ничто не мешает превратить указатель в ссылку и работать по ссылке, однако использование ссылки "прячет" от нас информацию об identity объекта. Например, для сравнения одинаковости двух объектов (если это именно "объекты", а не "значения") достаточно сравнить лишь их identity, в терминах C++ - указатели. Если вы превратили их в ссылки, вам придется использовать операцию взятия адреса: &a == &b, что менее логично и удобно, чем сравнить обычные указатели: a == b. Кроме того, важным отличием указателя является то, что одним из его допустимых значений является nullptr, что также может быть удобным (а может и нет).

    Однако, обычные указатели хоть и являются удобным способом моделирования понятия identity, они не предоставляют какой-либо помощи для управления жизненным циклом динамических переменных (коими являются большинство объектов). В результате, программисту гораздо менее удобно использовать динамические переменные, нежели автоматические. И чтобы убить двух зайцев сразу - иметь динамические переменные-объекты с гибким временем жизни и с уникальным identity, и управлять ими удобным способом - придумали умные указатели. По сути эти указатели привязывают тем или иным образом время жизни динамической переменной к структуре программы и к местам использования этих переменных путем реализации концепций владения переменной.
    Ответ написан
    Комментировать
  • Конструкторы и приравнивание в Си подобных языках?

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

    В C++ жизненный цикл объекта, место и способ его существования определяется кодом, создающим объект. Иными словами, тот код, который ИСПОЛЬЗУЕТ класс, определяет, автоматическая ли будет создана переменная (Example a(..)), или динамическая (new Example(..)). Да, в коде класса можно ограничить использующий код, запретив использование конструктора копирования и оператора присваивания, но изначально дизайн языка подразумевает принятие решения не "создателем" класса/структуры, а её "пользователем".

    В C# поведение переменной типа класса/структуры зависит прежде всего от самого класса/структуры. Экземпляры классов, т.е. reference-типов, создаются с динамическим жизненным циклом, и для них работает механизм подсчета ссылок и сборка мусора. Экземпляры структур создаются с автоматическим жизненным циклом, переменные структур хранят значения структур, а не ссылки на них.

    Иными словами, выражение new T(...) - это просто унифицированный синтаксис создания экземпляра типа, независимый от природы этого типа. Удобно это или не очень - отдельный разговор, однако в текущем дизайне языка это достаточно логично (особенно в контексте generic-ов). Аналогично, T a - унифицированный синтаксис объявления переменной типа.

    Нельзя слепо сравнивать то, что происходит в C# и в C++.
    Ответ написан
    1 комментарий
  • Как использовать шаблоны проектирования на практике?

    В общем, вроде бы хорошо, но чувствую, что чего-то не хватает...

    Так все хорошо или все же чего-то не хватает?

    Может быть мне нужно прочитать какую-то книгу, которая проведет нужные изменения в мозгу, или посмотреть примеры кода на гитхабе?

    Примеры кода можно посмотреть, главное найти достаточно большой проект с высоким качеством кода. По PHP и JS не могу таких посоветовать, не в теме. Еще лучше - поработать над большим проектом. Видите ли, многие практики разработки ПО имеют смысл только в проектах больше некоторого критического размера, и в командах с достаточно большим числом человек.
    Почитать можете Банду Четырех, но не удивляйтесь, если изложенное там покажется вам излишеством.
    Ответ написан
    Комментировать
  • Возможно ли как-то БД 1С интегрировать в Qt?

    Nipheris
    @Nipheris Куратор тега C++
    Если 1C хранит данные в SQL, то в общем-то проблем нет, надо только выяснить какая СУБД используется.
    Если 1C хранит данные в sdf-ках, то в принципе тоже можно, но я бы не стал открыть этот ящик Пандоры.
    Ответ написан
    2 комментария
  • Где хранить конфигурацию программы C#.NET?

    Nipheris
    @Nipheris Куратор тега C#
    Проблема в том, что нужно не допустить изменения конфигурационных файлов пользователем.

    1) запускаем сервис на другой, защищенной от юзера машине, или на этой же машине, но под системным аккаунтом (если у юзера нет прав администратора);
    2) обращаемся за конфигурацией к сервису;
    3) профит
    Ответ написан
    Комментировать
  • Можно ли писать серверную часть на С#?

    Nipheris
    @Nipheris Куратор тега C#
    Если REST - то знакомьтесь: www.asp.net/web-api .

    WCF не умер, просто на нем SOAP-сервисы лучше получаются, чем REST-сервисы (хотя, WebGet никто не отменял).

    Вообще удивительно, что вы это спрашиваете. Сегодня ASP.NET - самое рекламируемое применение C#.
    Ответ написан
    Комментировать
  • Каким образом с технологией ASP.NET MVC соотносятся языки программирования С# и VB.NET?

    Nipheris
    @Nipheris Куратор тега C#
    Ничего сложного.
    C# и VB.NET - языки программирования общего назначения, работающие поверх CLR (т.е., грубо говоря, на платформе .NET).

    ASP.NET MVC - веб-фреймворк для платформы .NET. По сути такая же библиотека классов, как и WinForms или WPF. Фишка ASP.NET в том что это поддерживаемый и развиваемый MS инструмент продакшн-уровня. Однако под дотнет есть и другие фреймворки, например Nancy или ServiceStack.

    Как уже упомянул Dmitry Pavlov , ASP.NET относится к C# как Rails к Руби, Django к Питону, и Spring к Джаве.
    Ответ написан
    Комментировать
  • Как создать копию объекта по указателю?

    Nipheris
    @Nipheris Куратор тега C++
    Для получения копии объекта его же средствами, необходимо вызвать конструктор копирования, если таковой определен:
    T *src = .... ;
    T *dst = new T(*src);

    Если конструктор копирования не определен, то копировать объект придется вручную.
    Ответ написан
  • На что ругается, не пойму?

    Nipheris
    @Nipheris Куратор тега C#
    Язык надо подучить сначала. Обратная косая черта должна экранироваться в строках (т.к. сама является escape-символом). Или используйте verbatim-строку, поставив в начале символ @.
    Ответ написан
    Комментировать
  • Что думаете насчет идеи создать такой сайт, который объединяет разные социальные сети, точнее профили пользователей?

    Также появилась идея слить сюда еще и почту

    Не надо мою почту никуда сливать.

    Вся проблема таких проектов - доверие.
    Вы собираетесь держать столько критичных данных у себя на сервере, что будь вы хоть семи пядей, я бы эти данные вам доверять не стал.

    А те, кто о таких вещах не задумывается, пользуются одной-двумя социалками, и одной почтой (и то редко). А кто задумывается, тот прекрасно понимает - разные почты/аккаунты они на то и разные, чтобы никто их не мог увязать друг с другом.

    А вообще, посты с лент можно было бы читать в RSS-читалках, если бы социалкам было выгодно отдавать RSS-стримы. Однако, они этого почему-то не делают.
    Ответ написан
    Комментировать
  • Какой ЯП больше подойдет для создания ИНС?

    Любой язык, где есть возможность реализовать связные структуры данных (ваша нейросеть) и проводить вычисления с плавающей точкой (чтобы моделировать прохождение импульсов по связям в нейросети).

    Сейчас под эти критерии подходит любой развитый ЯП общего назначения.

    Скорее всего, другие критерии - требуемая производительность, ваши знания, имеющееся у вас время для реализации идеи, знания ваших коллег по проекту, фреймворк или библиотеки, которые вы собираетесь использовать, аппаратные платформы - значительно сузят круг подходящих ЯП.
    Ответ написан
    Комментировать
  • Каким образом передавать данные от приложения 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 комментария