Задать вопрос
  • Как удалить выбранные элементы в DataGrid (WPF)?

    Nipheris
    @Nipheris Куратор тега C#
    1. Пишете вьюмодель для каждого элемента в таблице.
    2. CheckBox-колонку привязываете к свойству IsSelected вьюмодели.
    3. DataGrid привязываете к ObservableCollection<ВьюМодельДляЭлемента>.
    4. Когда нужно удалить элементы, пробегаете по вьюмоделям в коллекции и удаляете те, у которых IsSelected == true.
    Ответ написан
    Комментировать
  • Семантика типов в Си и C#?

    Nipheris
    @Nipheris Куратор тега C#
    Сходство есть, но и различий достаточно. Указатель хранит адрес в памяти, который в общем-то доступен вам для чтения и записи. Вы можете любой int скастить в указатель и попытаться разыменовать его. Врядли ли вы получите от этого что-то полезное, но суть в том что вы МОЖЕТЕ это сделать. Указатель как тип данных лишь даёт вам удобное средство для адресации и типизированной работы с областью памяти.

    Ссылка в .net - вещь значительно более высокоуровневая. Это скорее object identity, а не адрес в памяти. Ссылка не хранит непосредственно адрес объекта в управляемой куче, она хранит его номер, а конкретным адресом в памяти управляет сборщик мусора (так сделано потому, что сборщик имеет право перемещать объекты в памяти, если они явно не закреплены).

    Как уже сказали выше, указатели в C# тоже есть, и они действительно хранят адрес. Но они доступны только в unsafe контексте и не являются средством для everyday-разработки.

    Ссылки в C# концептуально связаны с объектным подходом, ссылка хранит идентификатор объекта и является "ключом" доступа к нему. Ссылка не может непосредственно ссылаться на типы-значения на уровне платформы .net, для этого нужно сначала выполнить boxing значения.

    Сишкном указателю же без разницы, на что он указывает. Если говорить в контексте C++, то программист по сути сам даёт указателям на объекты семантику object identity.
    Ответ написан
    1 комментарий
  • Как автоматически экспортировать зависимости к проекту, собранному через Cmake?

    О каких системах идёт речь? Если о debian-семействе, то почему бы не собрать пакет? На линуховых дистрах обычно принято динамические зависимости пакетным менеджером удовлетворять.

    Собрать пакет вам поможет CPack. Вот например переменная, куда нужно перечислять пакеты-зависимости: CPACK_DEBIAN_PACKAGE_DEPENDS.
    Ответ написан
  • Что такое REST и RESTful api?

    Комментировать
  • Как реализовать кроссплатформенное ПО с библиотеками для Windows/Linux?

    Nipheris
    @Nipheris Куратор тега C++
    Как это правильно реализовать?

    Если коротко - то написать разные реализации одинаковых хедеров. Можно линковать статически, можно динамически (разумеется, тут всё-таки придётся пошаманить с макросами, чтобы учесть специфичные для платформы вещи).
    Ответ написан
  • Как принято у программистов: использовать для переменной свойство или давать параметр в каждом методе?

    Два примера решения одной задачи

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

    Это настолько разные примеры, что даже непонятно, как вам эту разницу объяснить.
    Ответ написан
    Комментировать
  • Какие ресурсы необходимы для увеличения скорости работы с большой таблицей sql?

    При миллионе записей 1 секунда на подсчёт количества??

    Да у вас вообще индексы есть на эту таблицу и колонку id?

    О каких аппаратных ресурсах может идти речь, научитесь СУБД пользоваться.
    Ответ написан
    4 комментария
  • Что использовать для проектирования и разработки REST API?

    https://github.com/swagger-api/swagger-codegen


    Server stubs: C# (ASP.NET Core, NancyFx), Erlang, Go, Haskell, Java (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, RestEasy), PHP (Lumen, Slim, Silex, Zend Expressive), Python (Flask), NodeJS, Ruby (Sinatra, Rails5), Scala (Finch, Scalatra)


    Сами мечтаем интегрировать генерацию роутинга и DTO-шек по swagger-спецификации прямо в билд-процесс, но пока ещё не можем таким похвастаться)
    Ответ написан
    Комментировать
  • Правильно ли реализовал структуру БД?

    id в book_author не нужен. Сделайте нормальный композитный ключ из book_id и author_id, всем будет хорошо (в том числе СУБД).
    Ответ написан
    Комментировать
  • Как изменить тип параметра в унаследованном методе C#?

    Nipheris
    @Nipheris Куратор тега C#
    То, что вы просите, невозможно сделать по одной простой причине. Наследование в .NET бывает только "настоящее", т.е. когда устанавливается отношение is-a. Ваш MyTCPStream не может быть Stream-ом, если не реализует метод Read (Byte[], Int32, Int32). Спросите себя - что произойдёт, если я скастю объект MyTCPStream к Stream, и попытаюсь вызвать Read(Byte[]...)?

    Вы конечно можете в теле метода бросить InvalidOperationException, но это однозначно признак неверно выбранной абстракции. Лично я не понимаю, зачем вам мог понадобиться TCPStream, из которого вы читаете не байты, а символы.

    Для реализации процесса чтения более сложных объектов (а символ это более сложная штука, т.к. его представление в потоке зависит от кодировки) в дотнете есть TextReader и его наследники. Было бы хорошо, если б вы описали изначальную задачу - возможно мы посоветуем вам что-то полезное, а не странные хаки.
    Ответ написан
    3 комментария
  • Как осуществляется связь между ViewModel и Model в MVVM?

    Nipheris
    @Nipheris Куратор тега C#
    В общем случае способ передачи нотификаций из модели во ViewModel не регламентируется паттерном MVVM. Как это лучше всего осуществлять - зависит от вашей задачи.

    Возможно ViewModel будет сама знать о том, когда и в каком случае какие свойства модели изменяются и сама будет генерировать необходимые события PropertyChanged.
    Возможно в модели будут специфичные для конкретной задачи ивенты (например, модель будет вызывать PlayerMoveCompleted когда игрок сделает ход), на которые будет подписана ViewModel и будет, в свою очередь, генерировать необходимые PropertyChanged.
    Некоторые советуют в модели также реализовать INotifyPropertyChanged, но лично мне этот способ не нравится: во-первых, в модель начинает подмешиваться UI, что обычно нехорошо, а во-вторых - нотификация о смене значений конкретных пропертей это всё-таки задача ViewModel, и я не вижу смысла размазывать её ещё и на модель. Последняя должна содержать только специфичные для предметной области вещи.
    Ответ написан
    2 комментария
  • Какую библиотеку сокетов на c++ лучше использовать для связки клиента на js?

    Nipheris
    @Nipheris Куратор тега C++
    boost.asio
    Ответ написан
    Комментировать
  • C#. Возможно ли инициализировать объект по типу Dictionary (без наследования)?

    Nipheris
    @Nipheris Куратор тега C#
    Добавьте в ваш класс метод Add(T t, U u). Это называется Dictionary Initializer.
    Ответ написан
    Комментировать
  • Как поступить с выбором среды разработки после года работы в C++ Builder?

    Nipheris
    @Nipheris Куратор тега C++
    Как сделать переход с C++ Builder как можно менее безболезненным!

    Если действительно есть время и желание, то попробуйте поработать с "голым" стеком. Сборка - шелл-скриптом, редактирование в редакторе общего назначения. Тогда вы сможете выбрать по отдельности компилятор и редактор.
    Какой компилятор выбрать - вопрос отдельный, зависит от привычной вам платформы и ваших целей в плане изучения технологии. Можно, например, Клэнг попробовать.

    Когда всё это соберёте в кучу сами, можно будет попробовать CMake - инструмент непростой, местами даже замороченный, но не даст вам расслабиться и будет хорошим вложением времени, если вы собрались заниматься C++. В это же время вы можете определиться со своими предпочтениями в плане занятости и платформы на которой хотите работать.

    IDE станет для вас лишь одним из инструментов и вас этот вопрос будет волновать в последнюю очередь.
    Ответ написан
    Комментировать
  • Как найти программиста, чтобы он не украл идею?

    malbaron прекрасно расписал в деталях, а вот я попробую подчеркнуть главную мысль:

    Чтобы вашу идею не украли, вы сами должны быть менеджером проекта и уметь разбивать задачу на позадачи.

    Тогда вам понадобится минимальная юридическая защита. Почему? Да потому что вы будете делать работу, которую другие просто не смогут делать за недостатком информации. И этот недостаток не в том, что эта информация закрытая, а вот что другие просто не будут представлять жизненный цикл проекта и как вы его поставили на ноги. Разумеется, какие-то детали будут со временем раскрываться, но если у вашего проекта и бизнеса действительно есть ценность - его просто так никто не повторит, для этого нужно будет проделать большую работу. Именно ту, которую должны делать и вы.

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

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

    Простите, а в чём фишка? Ну в смысле по вашему есть некоторые "работающие в офисе" и которых ищут на hh, а есть некоторые продвинутые "командные ребята", которые работают за $ и которых просто так не найти?

    Команда, в которой будет востребован "верстальщик \ фронтенд-девелопер" называется, как мне кажется, веб-студией. Есть достаточно веб-студий, в которых можно поискать работу. Есть немало и специализированных проектов (можете называть их стартапами), вроде нашего например, где тоже нужны хорошие "верстальщик \ фронтенд-девелопер", но при этом это не веб-студии.

    Интересоваться, кто конкретно работает на upwork и получает $ на мой взгляд немного самонадеянно. Это как искать мужа с толстым кошельком ради этого кошелька. Если уж так хочется - пишите людям (командам) представленным на апворке - и докажите что вы им нужны, почему нет.

    Либо я совершенно не понял вашего вопроса, либо у вас странные представления об окружающей действительности.
    Ответ написан
    2 комментария
  • 'IdFTP1' was not declared in this scope как исправить?

    Nipheris
    @Nipheris Куратор тега C++
    Вы пытаетесь воспользоваться некоей сущностью IdFTP (судя по всему это должен быть указатель на объект класса), никак не описав её перед использованием. Компилятор не может сам догадаться, что это за сущность, что она из себя представляет и как с ней работать, о чём вам и сообщает.

    Это формальное описание проблемы. Больше информации я дать вам не могу - неоткуда её взять - и не вижу особого смысла, т.к. вы скорее всего видите код на C++ впервые (хотя компиляторы большинства других языков сказали бы вам то же самое). Советую или учить язык, или нанять специалиста для решения задачи.
    Ответ написан
    Комментировать
  • Как рисовать на QPixmap?

    Nipheris
    @Nipheris Куратор тега C++
    Господи, что ж вы делаете-то.
    pix= *pixmap;

    Это что вообще? Зачем?
    Решил создать третий QPixmap и в paintEvent перерисовывать изображение

    Так вы хотите один раз QPixmap проставить лейблу или перерисовывать каждый раз самостоятельно? Если перерисовывать, то зачем же QPixmap создавать на куче и еще и переприсваивать его в поле?
    Пытался переопределять resizeEvent, вставляя в него repaint() и update(), но ситуация та же.

    Ресайз-то тут причём? Пытаетесь уже любой ценой задачу решить?)
    Ответ написан
    Комментировать