• Есть ли какая-то удобная и простая система для автоматизации запуска скриптов/ПО на нескольких машинах (Windows)?

    Сергей Ковалёв ну и заодно расскажите о проблемах с которыми столкнулись, может действительно не стоит вкладываться в это, мы-то еще маленькие, может пора на asp.net 5 мигрировать, да линуха поднимать, пока не поздно)
  • Есть ли какая-то удобная и простая система для автоматизации запуска скриптов/ПО на нескольких машинах (Windows)?

    Сергей Ковалёв Не могу сказать что у меня 100 серваков этим управляется, с двумя IIS-ами, одним SQL и одним TFS под проект - как-то справляемся (бэкапы, рестарты, всякие деплои нестандартные с CI на TFS на проды), а вас есть что-то революционное под винду? С удовольствием посмотрю)
  • Как получить координаты объекта по фоторгафии?

    Андрей хм, а как оно повлияет на ситуацию? Оно б могло скорее помочь прикинуть, сколько до объекта сантиметров, если он в фокусе, но если мы игнорируем глубину (вычисляем ее за счет использования нескольких ракурсов, как делает наш мозг), то тогда без разницы.

    Роман Кофф Вот кстати очень близко к вам: habrahabr.ru/post/130300 , тут про машинное стереозрение и соответствующие расчеты.
    > Карта глубины может быть получена с помощью специальной камеры глубины (например, сенсор Kinect является своего рода такой камерой), а так же может быть построена по стереопаре изображений.
    Часть вашей задачи.
  • Entity Framework и ООП. Как правильно реализовать принцип согласованности?

    Pavel_Develop
    не пользуюсь, это антипаттерн и я вполне обхожусь без него (т.е. помещаю логику в модельные классы). Он появляется от чрезмерного желания разделить приложение на много слоев, отчего некоторые слои в конце-концов мало что толкового делают (пресловутые Business Logic layer и Data Layer).
  • Правильная архитектура системы с тэгами?

    diver23
    > вводить денормализацию тегов что бы ускорить выборку
    отметьте на будущее: стандартный цикл разработки структуры БД (там, где есть схема) - нормализация "до упора", денормализация по необходимости для ускорения конкретных (!) запросов. Обычно для 80% запросов нормализованная структура вообще проблемы не составляет, и только 20% и менее самых тяжелых или самых частых (например, отрабатывающих на главной странице) требуют введения избыточных данных.
  • Entity Framework и ООП. Как правильно реализовать принцип согласованности?

    Pavel_Develop
    > Я имел ввиду не маппинг БД и ORM, а маппинг между сущностями Document и Order
    что-то совсем непонятно стало. Для маппинга саб-классов на таблицы есть несколько стратегий: single-table inheritance, class-table inheritance concrete table inheritance, single table замапает вам несколько классов на одну таблицу. Это конечно если вы пришли к тому, что вам действительно нужно несколько классов.
  • Как правильно составить функцию qHash для объекта содержащего два QString? Или просто какой алгоритм для хеширования двух строк?

    Nipheris
    @Nipheris Куратор тега C++
    @JustSokol
    QSet is one of Qt's generic container classes. It stores values in an unspecified order and provides very fast lookup of the values. Internally, QSet is implemented as a QHash (doc.qt.io/qt-5/qset.html#details).
    Итак, значит QSet сделан на базе QHash. Конечно, на википедию давать ссылку немного несерьезно, но сейчас поздно уже, я себе позволю) : https://ru.wikipedia.org/wiki/%D0%A5%D0%B5%D1%88-%...
    Читаем: Ситуация, когда для различных ключей получается одно и то же хеш-значение, называется коллизией. Такие события не так уж и редки - ... Поэтому механизм разрешения коллизий — важная составляющая любой хеш-таблицы.
    И далее перечисляются методы, самые популярные два - вешать на значение хэша список (!) элементов с таким хешем, либо же просто вставлять элементы друг за другом, т.е. искать следующий свободный слот (неважно, что он может потенциально понадобиться другому элементу).
    Суть хэш-таблицы - в ускорении поиска, приближении его к O(1) (как, в принципе, и вставок). Точная проверка совпадения обеспечивается дополнительно.
    > он сначала по хешу найдет два значения а потом сравнит с каждым и даст ответ
    да, разумеется. Там может быть хоть 100 значений на хэш, операция должна выполниться корректно (другое дело - будет выполняться медленнее, чем хочется).
    Кстати, внимательно почитайте требования к типу элемента:
    - QSet's value data type must be an assignable data type.
    - the type must provide operator==()
    - must also be a global qHash() function that returns a hash value for an argument of the key's type.
    С присвоением понятно, с qHash тоже, обратите внимание на оператор сравнения - никто его не отменял, он по прежнему нужен и должен корректно отрабатывать.
    Резюме: проблема поиска хорошего хэша безусловно есть в каждой подобной задаче, однако это вопрос снижения сложности операций поиска/вставки и повышения производительности. После поиска по хэшу всегда будет поиск на точное совпадение (даже если по хэшу найден только один элемент - вдруг это коллизия и у нас не точное совпадение).
  • Как правильно составить функцию qHash для объекта содержащего два QString? Или просто какой алгоритм для хеширования двух строк?

    Nipheris
    @Nipheris Куратор тега C++
    Artem да я так его три раза прочел прежде чем ответить, расскажите пожалуйста почему вас так беспокоит случай совпадения конкатенаций. Т.е. есть два вопроса: 1) понимаете ли вы, что уникальный хэш получить невозможно для строк той длины, что у вас есть; 2) непонятно зачем вам уникальный хэш и почему вас так беспокоит его неуникальность в достаточно редком на мой взгляд случае.
    Если строки у вас совсем короткие, по 2-3 символа, то тогда совпадать будет почаще, значит пример с именами неудачный.
  • Как организовать файловое хранилище пользователей (виртуальная фс или нативная)?

    xfg как правильно заметил Дэн Иванов, до готовой системы разумеется еще далеко, и граблей будет навалом. Я думаю мы бы с вами могли на пару недель сесть и обдумывать одни только проблемы и пути их решения.
    Конечно, файлы было бы неплохо разбивать на кластеры, наподобие того как делают обычные ФС, и хэшировать кластеры, а не весь файл, а сами хэши сохранять в метаинфе, и хранить их как i-blockи хранятся в ext, по иерархическому принципу. Тогда файлы можно сильно фрагментировать (по 1 ГБ к примеру), и разбрасывать куски по хранилищам.
    Маппинг пространства хешей на ноды можно немного усложнить, и мапать по принципу хэш-таблицы: если на ноду N файл не влазит уже, класть на N+1 (также и искать потом), позже, по достижению критического количества неверных попаданий, перехешировать, увеличивая длину части хэша, по которой определяется номер ноды (вместо первых 3-х байт хеша - первые 4).
    Давайте решим, что вам нужно: вы готовы писать свой велосипед и решать все проблемы выше, или вам все-таки нужно готовое решение. Если готовое - вон, Дэн Иванов отлично посоветовал. Амазоновский S3 в конце-концов есть, даже ставить ничего не надо. Или может у вас файлы по 1кб и вам хватит того же Redis?)
  • Как лучше реализовать API для модулей?

    Nipheris
    @Nipheris Куратор тега C++
    @Avery007
    > А насколько сильно использование фабрик скажется на производительности?
    это обычная функция, т.е. ее вызов должнен быть даже дешевле, чем виртуальный вызов функции в интерфейсе (конечно, если не считать расходы на загрузку DLL в начале работы и прочие дела). А так да, как сказал MiiNiPaa - что туда положите, то там и будет. Смысл в том, что даже если там обычный new, и больше ничего - все равно это важно, т.к. вызов оператора new подразумевает знание РАЗМЕРА объекта (сколько место под поля выделить), а размер объекта в памяти - это по сути часть реализации, т.к. может изменяться при изменении кода реализации. Это вообще отдельная проблема в C++, различные библиотеки применяют различные подходы для ее решения, например Qt использует PImpl, погуглите.
    Если вы вызываете new внутри библиотеки, то вызывающему функцию-фабрику НЕ НУЖНО знать о размере объекта, что принципиально важно: вы можете добавить пару полей в ваш ConcreteFooService, и вызывающее приложение перекомпилировать не нужно. Если вы вызывающее приложение делало new, то потребовалась бы его перекомпиляция, т.к. каждый new это выделение КОНКРЕТНОГО фиксированного объема памяти.
    Таким образом, в случае использования фабрик такой аспект реализации, как размер объекта, остается в ведении DLL и не "вытекает" наружу, создавая вредные зависимости.
  • При помощи чего разрабатываются интерфейсы для Desktop-приложений?

    Nipheris
    @Nipheris Куратор тега C++
    SadManSad
    кстати, CSS кода где-то полмегабайта минимум, так что возможности кастомизации есть))
  • При помощи чего разрабатываются интерфейсы для Desktop-приложений?

    Nipheris
    @Nipheris Куратор тега C++
    QstoN SadManSad CSS к кнопкам можно было применять и в Qt Widgets, у нас большое приложение с полностью кастомным дизайном и двумя темами - белой и черной, и большая часть кастомизации (не считая, конечно, иконок) сделана с помощью CSS. В Qt Quick в этом плане не хуже, хотя там свой язык стилизации.
    > Если человек, который разрабатывает интерфейс программы, знает css, то можно легко и просто изменить полностью весь дефолтный дизайн элементов.
    полностью потверждаю эти слова работающим приложением)
    > Т.е. можно применять CSS к кнопкам? Есть где-нибудь почитать об этой теме?
    в официальных доках вроде все было. Ну или в локальной справке, обычно ей пользуюсь
  • При помощи чего разрабатываются интерфейсы для Desktop-приложений?

    Nipheris
    @Nipheris Куратор тега C++
    QstoN Да, Qt Creator не очень силен в этом плане. Однако возможности стилизации в Quick в целом весьма нелохие: doc.qt.io/qt-5/qtquickcontrolsstyles-index.html. Ну или стандартные сэмплы посмотрите.
    С учетом того, какая сейчас ниша у C++, я считаю эти инструменты достойным аналогом того же дотнетовского WPF)
  • Как организовать файловое хранилище пользователей (виртуальная фс или нативная)?

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

    Дэн Иванов видимо у нас разное представление об обмене знаниями на таких ресурсах). Я либо сам буду проверять идеи и советы, которые мне дадут, или спрошу еще 5 человек, прежде чем вкладывать в идею значительные ресурсы.
    Т.к. в хэшировании файлов ничего нового нет, как и в хэш-шардинге, не считаю эту идею абсолютно утопичной и непригодной. Автор вообще хотел хоть что-то найти. Если бы он привел N известных распределенных ФС или object-storage, и спросил бы - что из этого применимо для системы с такими-то объемами данных и таким-то дневным трафиком, то конечно в таком контексте идеям не место. А когда пишут "велосипедное облако".. Даже не знаю, как-то само наводит на мысль об экспериментах :D
    Через пару месяцев я и сам задам такой вопрос, т.к. в проект понадобится подобное файлохранилище для документов с привязкой к объектам предметной области, и я бы с удовольствием услышал подобный ответ, равно как и ваш совет взять CEPH или эллиптикс.
  • Как организовать файловое хранилище пользователей (виртуальная фс или нативная)?

    xfg идея хэшировать контент безусловно не нова (Git), и шардировать по хэшу - тоже (Redis, Mongo), но конечно не факт, что она будет работать для ваших требований (размеры файлов, количество пользователей и т.д.). Все-таки стоит точнее определить требования: решение с поддоменами действительно часто встречается и работает, но это решение, в котором некоторые операции, например изменение файла, довольно сложно реализовать.
    На самом деле я сам в поисках подходящего решения аналогичной задачи для следующего проекта, но пока все туманно. У меня правда требования немного другие (привязка файлов не к пользователям, а к объектам предметной области, которые появляются более контролируемым путем, нежели пользователи), но еще важнее поддержка известных протоколов. Необходимость писать клиентское приложение как у Dropbox или Skydrive выглядит не совсем радужно :) Была идея даже BitTorrent Sync попробовать, однако пока от нее отказались - торрентить маленькие файлы очень неудобно.
  • Как организовать файловое хранилище пользователей (виртуальная фс или нативная)?

    @ptchol
    > систему простенькую
    > Эдакое велосипедное облако.
    я сделал акцент на этом, видимо тут кроется моя ошибка. Не знаю где вы в этом разговоре увидели что я утверждал что мой вариант хотя бы жизнеспособен, не говоря уж о сравнении с крупными известными системами. Для того, чтобы это утверждать, нужно выполнять исследование, я автору подкинул лишь идею. Автор сделает исследование, если у него промышленная система, или просто попробует реализовать, если задача учебная. Задавая такой вопрос, я был бы рад услышать любые идеи, причем чем больше чем лучше, а вы разве нет? Автор вроде интересовался и организацией хранения тоже, по крайней мере те варианты что он привел в вопросе, говорят об этом.
    А то, что на Тостере подобную реальную сложно обсуждать - это статистика, и я, безусловно, в ней разочарован. За те ответы и вопросы которые тут дают и задают, на SO будут банить, простите, по IP.
    Можете посмотреть другие мои ответы, если вдруг подумали, что я не пытался изменить это стереотип.