• Что использовать для проектирования и разработки 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(), но ситуация та же.

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

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

    Nipheris
    @Nipheris Куратор тега C++
    Попробуйте Metashell.
    Ответ написан
    Комментировать
  • Можно учить typescript без нативного js?

    Можно учить typescript без нативного js?

    Можно, но нет смысла - фактически выучите JS с плюшками TS поверх него. Поэтому лучше таки поучить JS а затем разобраться, что добавляет TS сверху. Это всё потому, что TS расширяет синтаксис EcmaScript, и совместим с ним (с какой версией ES - зависит от версии компилятора).
    если нет обоснованной причины писать на ts - не пиши

    Почти всегда есть обоснованная причина писать на TS.
    TS похож на конструктор сайтов. Вроде сайт на TS, но работает на JS. Так в этом конструкторе придется еще и свою локигу вставлять.

    Вообще не понял смысла этого ответа. Возможно, человек спутал TS и Ангуляр. TS похож на конструктор сайтов не больше, чем C#.
    И какие плюсы ts перед js?

    В вашем коде будет порядок, если вы этого захотите.
    Ответ написан
    Комментировать
  • Связь между двумя таблицами?

    А с какой целью создаётся запись? Ну как придёт запрос на сохранение настроек, тогда и запишите (upsert-аналогом в mysql, вроде on duplicate key), а так подставляйте дефолты.
    Ответ написан
    Комментировать
  • Dependecy Property в WPF?

    Nipheris
    @Nipheris Куратор тега C#
    Основная идея стара как само программирование - поставить одни значения в зависимость от других. Система свойств зависимостей - это вариант реализации реактивного программирования.
    Вот Эксель видели когда-нибудь? А формулами пользовались? При изменении значений в ячейках-источниках значения в ячейке с формулой автоматически пересчитывается. Вот это примерно то же самое.
    Ответ написан
    3 комментария
  • С каких пор появился фронтенд?

    Когда произошла точка перелома, что "тонкие" клиенты теперь популярней и почему? Хотя ведь мобильные приложения, это ведь тоже "толстый" клиент

    Давайте не будем пользоваться терминами толстый и тонкий, я не вполне понимаю их смысла в вашем вопросе.

    Будем говорить о веб-клиентах и нативных клиентах (либо ненативных, но на не-веб платформе, например на дотнете или джаве).

    Основная причина, по которой веб-клиенты всем нравятся - это идеальное решение вопроса деплоя приложения. Хорошо, не идеальное, но самое удобное для пользователя.
    Чтобы какой-то код работал, его нужно либо доставить конечному потребителю, либо запустить у себя и доставить результат.
    Сначала запускали у себя и доставляли результат в виде полностью готовой HTML-странички с минимумом скриптов или вообще без них. Это было время генерации страниц на сервере.
    Клиент всегда хотел быстрого отклика и различных красивых анимашек, в общем хорошего user experience. Когда user experience и быстрый отклик был важнее, писали нативный клиент (и до сих пишут, когда это важнее).
    Потом как-то собрались хорошие инженеры и запилили v8. Оказалось, что можно даже JS выполнять быстро. Планка скорости поднялась, остальные (SpiderMonkey и т.д.) начали подтягиваться.
    Отклик уменьшился, больше кода стало возможным разместить на клиенте. Анимация 20 снежинок на странице больше не грузила процессор клиента на 100%.
    Вопрос лёгкости деплоя кода начала перевешивать вопрос тормозного JS. Выяснилось, что facebook лучше смотреть на веб-страничке, чем скачивать отдельное приложение. А, ну и да - веб-песочница кроссплатформенна. Да, есть несовместимости между браузерами (особенно раньше), но жить гораздо приятнее, чем писать версии приложения под каждую ОС и собирать их. Программисты дешевле в разы.
    Мобильные платформы тормозят сильнее. Под них продолжают писать нативные приложения.

    Итог: всегда приходится решать, стоит ли приложение того, чтобы клиент заморачивался с его установкой и следил за ним. Это дело продакт-менеджера. Нет ничего проще установки и обновления веб-приложения - нужно нажать F5. Но тем не менее я всё еще хочу видеть свою IDE в качестве десктопного приложения. Ну и большинство решений на том же Электроне - это жесть. Возможно, через 10 лет всё будет совсем по-другому.

    P.S. Насчёт взлома приложений не согласен - ключевую логику можно держать и на сервере, но это можно делать и в случае веб-клиента, и в случае десктопного.
    Ответ написан
    3 комментария
  • TypeScript для Node.js - как настроить для совместной работы?

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

    1. https://www.typescriptlang.org/docs/handbook/compi... , --declaration.
    2. Используем SystemJS при генерации кода или используем бандлер.
    3. Публикуем собранный js-бандл.
    Отдельно о публикации - над npm я использую sinopia, хочется работать с похожей утилитой и для ts заголовков.

    С TypeScript 2 никаких утилит не надо, всё публикуется в NPM. Варианта два - либо в своём пакете (имхо, предпочтительнее), либо в @types. Подробнее: www.typescriptlang.org/docs/handbook/declaration-f... . По сути, если вы не делали бандл, то тогда рядом с каждым js будет лежать .d.ts. Если вы делаете бандл, то тогда вам нужно попросить tsc сгенерить .d.ts в виде одного файла для всех имеющихся модулей, и тогда вы в package.json с помощью main и types указываете entry-файл и файл с type definitions.
    Ответ написан
    5 комментариев
  • Какие альтернативы можно выбрать для JavaScript?

    Что кто может сказать про TypeScript?

    Учите, не пожалеете.
    • типизация поставит мозги на место;
    • фичи, связанные с типами и инкапсуляцией надстраиваются над JS, т.е. не нужно знакомиться с полностью новым синтаксисом; даже терминологически разработчики TS стараются не расходиться с JS;
    • язык позволяет не бояться роста проекта; собственно сейчас большой объём фронтэнд-кода и заставил нас переходить на TypeScript; чем больше кода и чем больше команда, тем выгоды от TS перевешивают затраты на внедрение;

    Минусы:
    • усложнение процесса сборки, т.к. нужна компиляция (это относится к любому из не-JS языков);
    • придётся заботиться о наличии type definitions;
    • есть некоторые нетривиальные вопросы во взаимодействии с JS кодом. В общем-то ничего проблемного, просто нужно понимать, что как работает;

    Как человек, привыкший к языкам со статической типизацией, я не вижу для себя смысла писать на чистом JavaScript после освоения TS. Конечно, за исключением случаев поддержки существующего кода и скриптов на 10 строчек.
    Ответ написан
    1 комментарий