Задать вопрос
  • Правила хорошего тона protected или private?

    А почему вы по умолчанию public не ставите, если выбираете между public и private? Наверное потому что вам инкапсуляция нужна?

    Ситуация с дочерними классами ничем не отличается. Не стоит делать метод protected по умолчанию по той же причине, по которой его не стоит делать public по умолчанию.
    Ответ написан
    Комментировать
  • Зачем нужны WCF?

    И да и нет. Тоже для обмена данными между приложениями, но не обязательно с использованием REST-архитектуры.

    WCF он больше про классические веб-сервисы на базе XML и SOAP. Хоть в WCF и есть возможность создания HTTP REST сервисов, сложно сказать что WCF под них заточен.

    В основном этот фреймворк ориентирован на разработку приложений на базе группы стандартов WS-*, например таких как WSDL, WS-Addressing и WS-Security. Это объёмные стандарты, написанные для обеспечения взаимодействия классических веб-сервисов (см. нулевой уровень, swamp of POX в Richardson Maturity Model ).

    Ранее эти стандарты были более популярны в связи с большим желанием интегрировать друг с другом всевозможные информационные системы, размазанные по миру. Многие из таких систем как раз сейчас работают в продакшене, однако далеко не все новые проекты разрабатываются на основе WCF.

    Классические веб-сервисы многими недолюбливались, в частности потому что:
    а) REST-ом как правило и не пахнет, HTTP как правило использовался исключительно как транспорт для RPC: т.е. вместо GET/PUT/POST/DELETE/.. всегда вызывался POST с параметрами запроса в его теле. Цитата из ссылки:
    These services have a single URI, and use a single HTTP method (typically POST). For example, most Web Services (WS-*)-based services use a single URI to identify an endpoint, and HTTP POST to transfer SOAP-based payloads, effectively ignoring the rest of the HTTP verbs.

    б) стандарты группы WS-* очень сложные, все технологии на их основе просто не могут быть простыми (как и в частности WCF). Да, есть свои плюсы вроде "могу вызвать что угодно у кого угодно по какому хочешь протоколу", но не всегда такая гибкость была реально нужна.

    Уже давно в многих новых системах наблюдается сдвиг к REST-архитектуре, как к более масштабируемой и простой для потребления клиентом, и, следовательно, протокол HTTP используется по прямому назначению, а не тупо как транспорт для сообщений. А там где REST неудобен/излишен и где RPC лучше походит, проще взять для этого более легковесный протокол или вообще поднять свой на базе какого-нибудь protobuf, как делают во многих игровых проектах.

    Соотв-но WCF сегодня реже выбирают для разработки новых проектов, т.к. для него HTTP REST сервисы немного не "родные". Удобнее взять другие фреймворки вроде ASP.NET Core или Nancy.
    Ответ написан
    Комментировать
  • Что не даёт на C++ писать кроссплатформенные приложения?

    Nipheris
    @Nipheris Куратор тега C++
    • прикладное API различных операционных систем - разное. Если бы API было полностью одинаковое, то тогда операционные системы отличались бы только UX, набором софта и утилит, т.е. вместо Linux/Windows/BSD мы бы имели только Linux в разных дистрибуциях или только Windows в разных дистрибуциях. Ну т.е. по сути одну операционную систему, т.к. раз мы сейчас говорим о разработке прикладного софта, то нас интересует прежде всего API для прикладных приложений;
    • т.к. API различных ОС отличается, требуется создание уровней абстракции, которые нивелируют эти различия. В других ответах уже достаточно примеров, я бы вспомнил например о разделителях в именах файлов;
    • дополнительные уровни абстракции нередко сокращают доступное API, т.к. в большинстве случаев невозможно реализовать самому то, что нет в API какой-то из интересующих ОС. Следовательно, приходится оставлять только те интерфейсы, которые так или иначе есть везде;
    • т.к. абстрагированные интерфейсы из пред. пункта более аскетичны, ими сложнее пользоваться, они дают не все возможности, соотв. какие-то задачи уже нецелесообразно решать кроссплатформенным кодом на базе этих асбтрагированных интерфейсов, проще написать несколько вариантов для разных ОС;
    • оба предыдущих пункта - как достаточно успешные попытки сделать абстрагированные интерфейсы, так и наоборот, написание платформозависимого кода для каждой нужной платформы - удорожают разработку. Везёт только в случаях, когда абстрагированные интерфейсы уже есть и достаточно хорошо выполняют свою задачу, как например Asio. Или хорошие кроссплатформенные стандартые API вроде OpenGL, что делает возможным писать кроссплафторменные игры.
    • разработчику ПО не нужно удорожание разработки там, где это не принесёт ощутимой выгоды.
    Ответ написан
    Комментировать
  • Что нужно знать С++ разработчику для начала работы на фрилансе?

    Nipheris
    @Nipheris Куратор тега C++
    "База" в C++ никому за деньги не нужна, ну кроме американских и европейских студентов-лентяев, которые сами не хотят лабы делать. Если вы хотите заниматься C++ профессионально, ещё и фрилансить, вы должны понимать, как получить законченное решение по ТЗ. Это менее тривиально, чем на других платформах. Вот вам несколько вопросов для самопроверки, расскажете что знаете а что нет:
    • у вас есть большой объём текстовых данных (строк), каких простых правил будете придерживаться, чтобы избегать лишнего копирования содержимого строки;
    • я хочу написать некий фоновый сервис, вытягивающий данные из PostgreSQL и пишущий, допустим, в MongoDB, выполняющий некоторые простые преобразования (неважно какие). Пока будет крутиться на линуксе, но возможно и на виндах придётся запустить у другого заказчика. Какие на вскидку библиотеки для работы с БД будем использовать, будут ли сложности? Как их будем подключать к проекту?
    • чем будем собирать проект из предыдущего пункта?
    • что можете предложить для реализации сетевого обмена? Я хочу чтобы было можно в свой протокол поверх TCP, но возможно захочу ещё HTTP потом.
    • как будете выбирать, слинковать библиотеку статически или оставить зависимость от DLL/SO? Как будете собирать готовые пакеты для деплоя?
    Ответ написан
    7 комментариев
  • Как заполнить таблицу(DataGrid)?

    Nipheris
    @Nipheris Куратор тега C#
    <DataGrid ...... AutoGenerateColumns="False">

    https://msdn.microsoft.com/ru-ru/library/system.wi...

    Ну и понятное дело у DataGridTextColumn нужно нормальные биндинги сделать.
    Ответ написан
    4 комментария
  • Коимпилятор ругается на инициализацю ссылки на функцию как написать что бы не было ошибки?

    Nipheris
    @Nipheris Куратор тега C++
    Вы не сможете сохранить указатель на функцию-член в переменной указателя на обычную функцию. Ваши варианты:
    - сделать dfLineFunc статической/свободной функцией (что было бы логично для функции активации, неужели она у вас от состояния зависит?);
    - сделать dfActive указателем на функцию-член и пользоваться им соответственно.
    Ответ написан
    Комментировать
  • Как реализовать класс стека на указателях и на массиве в одной программе?

    Nipheris
    @Nipheris Куратор тега C++
    Почитайте про полиморфизм вообще, и конкретно про его реализацию для классов в C++ в форме виртуальных функций.
    Ответ написан
    Комментировать
  • Миграция проекта с WindowsForms на .NET Core. Куда смотреть?

    Nipheris
    @Nipheris Куратор тега C#
    Это абзац. Вам нужно многое узнать, я вам скажу.

    Во-первых, реализовать "в браузере" - вы вообще понимаете что вам в принципе нужно будет делать и какие компоненты на чём писать? "frontend-разработка", "backend-разработка" вам говорит о чём-то?

    Вам надо смотреть в сторону понимания того, какую логику приложения следует выполнять на сервере (и вы сможете её писать под .Net Core), а какую - на клиенте (и тут .Net Core в общем-то не при чём).

    Ну и да, я надеюсь вы понимаете что .NET Core и ASP.NET Core - это не одно и то же, и "делать веб-приложение на .NET Core" - весьма расплывчатое утверждение. Что оно вообще для вас значит?
    Ответ написан
    2 комментария
  • Как правильно кинуть исключение в конструкторе класса?

    Nipheris
    @Nipheris Куратор тега C++
    Но я начал читать и узнал про некий эомби-режим объекта, в котором произошел вызов данного exception.

    Не владею такой терминологией. Подробную цитату или ссылку на статью.

    Вероятно там будет о том, что выбрасывать исключение из конструктора можно, но осторожно. В основном все проблемы оттого, что если конструктор выбросил исключение, объект считается недособранным, и деструктор НЕ будет вызываться. Т.е. перед тем как бросить исключение в к-ре вы должны САМИ подчистить всё, что успели насоздавать: https://isocpp.org/wiki/faq/exceptions#selfcleanin...
    Ответ написан
  • Что ж, как начать кодить(на C#)?

    Nipheris
    @Nipheris Куратор тега C#
    Тот случай, когда не могу добавить что-либо к тому, что предлагал пару лет назад.

    Но как можно понять, это учит лишь правильно держать карандаш, когда я хочу уметь рисовать.

    Хорошо, что вы это понимаете.

    Знаю о существовании книг и прочего по паттернам, но как по мне до этого еще чутка рановато, и нужно набить руку.

    И это тоже хорошо, что понимаете. Сначала нужно столкнуться с проблемами, а потом искать решения в книгах - иначе это будет как для швеи книга по закаливанию стали.
    Ответ написан
    Комментировать
  • Ellipse и TextBlock, как правильно сделать ширину TextBlock'a с TextWrapping?

    Nipheris
    @Nipheris Куратор тега C#
    Поставьте в ColumnDefinition вместо Auto значение 1*.
    Также запретите листбоксу иметь горизонтальную прокрутку:
    <ListBox Name="Test" Grid.Column="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
     ...
    Ответ написан
  • Как посчитать координаты для дерева?

    На вашей картинке некий нелистовой узел располагается посередине того интервала (по оси X), который занимают его дочерние узлы.

    Поэтому решите задачу определения того, сколько места должны занимать дочерние узлы, включая все их дочерние узлы и т.д. Эту задачу можно решить алгоритмом ПВГ-обхода дерева, управляя стеком вершин вручную или же пользуясь рекурсивными вызовами процедуры обхода.
    Ответ написан
    8 комментариев
  • Какие есть игровые движки, генерирующие wasm?

    Magnum тут объявил недавно о поддержке WebAssembly. Вроде подходит под ваши критерии.
    Ответ написан
    Комментировать
  • Откуда у Google столько памяти?

    www.artificialbrains.com/google/datacenters

    Посчитаете сколько там в сумме? Явно больше 1.5 миллионов. Как думаете, сколько суммарно памяти на них?
    Если что в Гулге изобрели, так это средства горизонтального масштабирования типа Google File System и много чего ещё. Чтобы если что, можно было поставить ещё десяток серверов. А потом ещё сотню. А потом ещё тысячу.

    И объем памяти уже становится не такой уж большой проблемой. Проблема - заставить это слаженно работать и синхронизировать то что должно быть синхронизировано. Умы инженеров будут стоить точно больше чем железки.
    Ответ написан
    Комментировать
  • Какие технологии использовать для создания чата?

    > Нашел статью на хабре от 2010 года:
    > HTML5 WebSockets -могут возникнуть проблемы со старыми браузерами

    2010 по меркам фронтэнда это до рождества Христова. Нужно искать актуальную информацию, чистых вебсокетов или решений на их основе более чем достаточно.
    Ответ написан
    Комментировать
  • Стал работать по часам и обнаружил, что выходит 6 часов в день. Это нормально?

    Мы планируем на день и логируем в JIRA 6 рабочих часов. Больше - бессмысленно, всё равно будет неправдой, т.к. ещё есть:
    - ревью кода;
    - питие чая;
    - рабочие беседы и совещания.
    Ответ написан
  • OpenGL или DirectX?

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

    OpenGL это кроссплатформенное API, раньше было не очень удобно начинать работу с ним на Винде, сейчас доступны различные библиотеки (GLEW, GLFW) и это больше не проблема.
    DirectX возможно даст вам больше возможностей, но там много заморочек с Windows-специфичными вещами, т.к. DirectX работает через технологию COM. Поначалу будет непривычно.

    Я бы на вашем месте начал с OpenGL и посматривал на Vulkan. Знание OpenGL полезно ещё тем, что проще будет использовать родственные API, например WebGL, если захотите писать внутрибраузерный код.
    Ответ написан
    Комментировать