• Можно ли в таблице сущности хранить информацию о колличестве ссылающихся сущностей?

    У меня есть подозрение что такими запросами можно или убить базу или созадать коллизию при записи\выдаче


    MySQL: https://dev.mysql.com/doc/refman/5.0/en/set-transa...
    А вот с Кассандрой будет сложнее: www.datastax.com/dev/blog/row-level-isolation
    Ответ написан
    Комментировать
  • Как добавить CA сертификат в Trusted Publisher с помощью WinAPI?

    Nipheris
    @Nipheris Куратор тега C++
    qDebug() << &context;

    Бесполезная операция. В смысле, это, вероятно, не то чего вы хотите добиться. context это на 99% и есть указатель (посмотрите на название типа: PCCERT_CONTEXT, да и всегда можно открыть декларацию этого типа и посмотреть, что там). Если это указатель (что логично, т.к. CertCreateCertificateContext создает некий тяжелый объект, и возвращает вам указатель на него), то нужно вывести сам указатель, а не указатель-на-указатель как сделали вы:
    qDebug() << context;
    И тогда, возможно, вы увидите, что он NULL. А ежели он NULL (что вы должны проверять), то его не стоит передавать параметром в CertAddCertificateContextToStore, т.к. вероятно она ожидает там нормальный объект, и сама не обрабатывает NULL (да и зачем ей это делать). Скорее всего по этой причине в этой функции происходит segfault.
    Ответ написан
    5 комментариев
  • Какие методы/библиотеки/технологии использовать в web-проекте?

    > в БД через каждый цикл и соответственно в начале следующего его разворачивая, но это уж как-то изощренно получается.
    Ничего изощренного в этом нет, по крайней мере если хотите это все реализовать на PHP.
    Паттерн применения этого языка такой, что лучше таки давать скриптам быстро отрабатывать ценой необходимости сохранения состояния. Дополнительными плюсами автоматически идут:
    масштабирование (один сервер может сохранить состояние, а уже другой - извлечь) и надежность - упавший скрипт не убьет игру.
    В качестве БД советую взять Redis или Mongo, можно даже в паре, РСУБД для сохранения состояния игры будет малополезным решением, хотя будет гораздо полезнее для сохранения и обработки статистики, если таковая планируется.
    Ответ написан
    2 комментария
  • Использовать ли триггеры совместно с ORM?

    Nipheris
    @Nipheris Куратор тега C#
    Конечно, по своей природе ORM призваны помочь держать всю бизнес-логику в самом приложении, а не в базе данных. В целом, этот подход лучше масштабируется, и, в придачу, позволяет меньшими усилиями сменить СУБД в случае сильного изменения требований к проекту.
    Однако есть ряд задач, где триггеры вполне могут работать в паре с ORM-библиотекой. Это как раз таки НЕ бизнес-логика, а скорее support-логика. Сходу могу вспомнить следующее:
    - поддержка целостности денормализованных данных - пересчет в триггере "избыточных" значений, например сумм, средних и т.д. (т.е. таких, которые всегда можно посчитать и которые хранят исключительно для повышения производительности запросов). В этом случае даже если кто-то захочет поработать с БД не пользуясь O/R маппингом (например, выполнить пару выборок для аналитики), не произойдет рассогласования данных;
    - поддержка хронологических и аудит-таблиц; это также логика, в общем-то не зависящая от предметной области, и зачастую она НЕ мапается в ORM-ке (особенно в случае аудит-таблиц - если с историей приложение еще может работать, то аудит как правило нужен лишь в исключительных случаях - повреждение данных, проблемы с безопасностью БД и т.д. - и запросы к таким таблицам делаются вручную в ходе исследования проблемы).
    В EF с помощью этого атрибута вы можете указывать, что значение свойства сущности генерируется самой БД и EF не должна участвовать в его обновлении.
    Ответ написан
    Комментировать
  • Как выгрузить bower пакеты на удаленный сервер?

    Вам эту "задачу" надо запустить не при публикации, а при сборке, а собранный пакет уже деплоить на сервер. В нормальном workflow у вас перед деплоем в продакшн еще должно быть автоматическое тестирование и выкладывание на бету, и везде точно также надо загружать зависимости и собирать проект.
    Ответ написан
  • Приведение к типу интерфейса: какой смысл?

    Вы не понимаете механику полиморфизма и виртуальных вызовов.

    Интерфейс - это окно, через которое вы смотрите на реальный объект. Механизм позднего связывания, а именно - виртуальных функций - позволяет вам иметь ссылку типа ISome, которая, тем не менее, ссылается на РЕАЛЬНЫЙ объект с РЕАЛИЗАЦИЯМИ методов интфейса ISome, и вызывать эти методы через интерфейс.

    Обратите внимание - компилятор не позволит вам написать new ISome; (можете попробовать), т.к. невозможно инстанциировать интерфейс. Это всего лишь договор о взаимодействии, и для того, чтобы взаимодействие произошло, нужно чтобы этому договору подчинялись какие-либо реальные объекты.

    Когда вы приводите тип ссылки от SomeObject к ISome, сама ссылка НЕ МЕНЯЕТСЯ (по кр. мере вы этого не увидите), переменная нового типа ссылается на ТОТ ЖЕ САМЫЙ объект, а не на "блок методов". Ссылки всегда указывают на конкретные объекты, невозможно сослаться на "блок методов", не имеющий реализации, язык так не работает. Суть интерфейсов в том, что они соединяют в себе идею позднего связывания и строгую типизацию одновременно. Используя ссылку типа ISome вместо SomeObject, вы как бы смотрите на тот же объект через другое "окно", и видите у него другой набор методов. Это важнейший этап в процедуре абстрагирования - найти у объектов похожие черты, и реализовать ряд алгоритмов на этой основе. Как вы и сами уже заметили - единообразно работать с объектами разных типов.
    Ответ написан
    1 комментарий
  • Стоит ли использовать триггеры в sqlite?

    Nipheris
    @Nipheris Куратор тега C#
    Ввиду того, что sqlite - встраиваемая СУБД, не вижу особого смысла использовать триггеры в ней. Разве что у вас есть денормализованные данные и вы хотите поддерживать их согласованность с помощью триггеров - тогда вариант. А для других случаев триггеры не особо приветствуются и в больших СУБД.
    Ответ написан
  • Как вернуть мотивацию к обучению?

    При повторной потере мотивации алгоритм следующий:
    1) Идем высыпаемся. По-нормальному так, без будильников. Чтоб глаза вообще больше не закрывались.
    2) Если мотивация не вернулась (возвращается в 70% случаев) - берем велик (хотя можно и пешком) - и на улицу. Если есть приличный парк в городе - находим пару нестандартных физ. упражнений (можно боевых), пытаемся выполнить. Работа с телом и физические нагрузки - это совершенно другая часть вашего сознания, про нее нужно не забывать.
    3) Если мотивация не вернулась (уже где-то 85% случаев) - берем случайную книгу (не техническую), в идеале - из жанра который вам нравится. Читаем. Спокойно, страницы не считаем.
    4) Если не вернулась, повторить с п. 1 до пяти раз, не думая о времени и выполняя только самые важные дела (срочные задачи по учебе, работа, если есть), можно даже попросить родных/знакомых помочь по дому и бытовым делам, чтобы себя разгрузить.
    5) Если не помогло после 5 раз, задаем новый вопрос на тостере, подробно описываем что делали).

    Хотя бы один из п. 1-3 выполняем для профилактики каждый выходной.
    P.S. в принципе плохо сравнивать себя с кем-то - для "сравнения" на свете есть всякие соревнования и состязания, где есть правила и контекст. В жизни правил нет, один учится в MIT, другой учится в колледже в России - какие могут быть сравнения? Вы думаете тут большинство людей за один год все узнало и всего добилось? Вы глубоко заблуждаетесь) PHP-шники-выскочки не в счет, у них искаженное представление о реальности.
    Ответ написан
    11 комментариев
  • Продолжить ли изучение PHP или остановиться на .Net?

    > начав работу Php программистом я позже смогу устроиться позже в организацию, занимающуюся интерпраз разработкой?
    Если интересен интерпрайз - лучше сразу дотнет. Если боитесь стать слишком узким невостребованным специалистом - посмотрите и джаву тоже.
    Если потом вдруг перестанут интересовать крупные компании - тогда посмотрите RoR или питоновский стек.

    А вообще вам правильно пишут - зрелый разработчик конечно специализируется на чем-то, но и помимо основной платформы знает много чего, от нее не зависящего. PostgreSQL и MongoDB сейчас надо знать и php-исту и дотнетчику. Системы контроля версий вообще нужны всем абсолютно одинаково.

    ИМХО: Не буду рассуждать о будущем PHP, сейчас почти его не касаюсь, но он для меня всегда был "грязным" языком, который ничему хорошему не научит. Тот же Ruby куда более интересная альтернатива (хотя бы потому, что язык появился самостоятельно, и только потом стал популярен благодаря Rails, а в PHP всегда чувствовалось его происхождение).
    Ответ написан
    Комментировать
  • Какую книгу выбрать по сетевому программированию в Qt?

    Nipheris
    @Nipheris Куратор тега C++
    Читайте книги по сетям (а именно - слои OSI, TCP/IP, сокеты, про клиент-серверную архитектуру в целом, кто куда подключается, как передает данные).
    Читайте книги про техническую сторону веба (протокол HTTP, архитектура REST и т.д.).
    Когда вы поймете, что происходит при запросе www.yandex.ru в адресной строке, использовать класс QNetworkRequest не составит никакого труда.
    Ответ написан
    7 комментариев
  • Как реализовалась графика?

    А, все таки настоящую графику, не знаю нафига вообще вы вспомнили про эти символы.
    По графике довольно таки много литературы есть. Очень сложно объяснить это в двух словах, но я попробую:
    1) как вы уже заметили, есть два принципиально разных способа представления граф. информации - вектор и растр. Про каждый из них масса инфы, начните с вики.
    2) есть различные графические API и библиотеки, некоторые из них - специфичные для конкретной платформы (как GDI/GDI+/Direct3D на винде), некоторые - кроссплатформенные, как, например, OpenGL. Низкоуровневые API работают непосредственно с драйверами и с различными системными структурами для реализации необходимых графических задач (нарисовать треугольник/прямоугольник), более высокоуровневые библиотеки могут быть "надстройками" над низкоуровневыми API и предоставлять уже другие интерфейсы, более удобные для программиста.
    3) в зависимости от задачи, выбирают нужный графический API/библиотеку. Например, крупным игроделам обычно нужна высокая производительность и максимальная эффективность их движков, поэтому они обычно берут низкоуровневое API вроде Direct3D/OpenGL (они кстати отлично работают с C++, для D3D это "основной" язык, для OpenGL основной язык - Си).
    Ответ написан
    Комментировать
  • Как незаметно передеплоить сервер?

    Имейте в ротации несколько серверов, выводите из ротации при деплое (не особо важно, по IP ротация или все за одним прокси), это даст вам еще и стабильный аптайм. Сервак может и сам по себе упасть, не в идеальном мире живем.
    Ответ написан
    2 комментария
  • В чем преимущество динамически типизированных языков?

    Nipheris
    @Nipheris Куратор тега C++
    Во многих, даже в большинстве задач, где узким местом не является производительность интерпретатора/рантайма языка, основное преимущество одно: на динамических языках могут писать те программисты, которые не могут на статических. Не в смысле не могут выучить или не понимают, а в смысле - совершенно не хотят. Это что-то такое глубокое в сознании программиста, от чего зависит его выбор динамической/статической типизации (и соотв. языка). Я все больше убеждаюсь, что в зависимости от варианта типизации, программисты, выбравшие для себя "правильный" язык, пишут гораздо более эффективный код.
    У меня, как и у того разработчика из Яндекса (по ссылке в ответе beduin01 ), слишком плохая память для разработки на динамическом языке. Я не могу держать много сущностей в своей голове, чтобы эффективно и правильно использовать динамические языки. Я привык и не могу без хоть каких-нибудь проверок на стадии компиляции (и чем больше, тем лучше).
    Другие считают ограничения статической типизации идиотскими, необходимость создавать всякие непонятные "интерфейсы", чтобы поиметь абстракцию и полиморфное поведение - извращением. Они чувствуют себя легко с объектами и классами. Возможность "прикрутить" любое свойство или метод к существующему объекту вдохновляет их на нестандартные и эффективные архитектурные и инфраструктурные решения.
    Видимо это действительно зависит от особенностей памяти и сознания конкретного человека.

    Разумеется, есть масса технических различий, почитайте остальные ответы.
    Ответ написан
    Комментировать
  • Как присвоить CNAME запись к @?

    Не уверен, что это хорошая идея - допускать такую привязку, так как это идет вразрез с RFC. Может быть сделать по-другому, редирект поставить? DNS-хостеры иногда дают бесплатный или крайне дешевый хостинг редиректа.
    Ответ написан
  • С++. Работа с графикой. Когда начинать?

    Nipheris
    @Nipheris Куратор тега C++
    > Возможно перед работой с любой библиотекой нужно знать "основу" в самом языке?
    Вполне логично, что язык надо знать, вопрос - насколько полно (особенно это касается C++, полностью его знают только разработчики стандарта и компиляторов).
    OpenGL (который я бы советовал вам посмотореть) это по сути Си-шная либа, поэтому с ней проще - выучите что такое функции и указатели, разберитесь с базовыми типами данных и особенностями операций (чтобы не удивляться, почему 3 / 2 = 1, а 3.0 / 2.0 = 1.5), и можете пробовать. Из общего развития - матричная алгебра, особенности компьютерной арифметики (числа с плавающей точкой и т.д.). Ну и сама "графика" - устройство графического конвейера, типы рендеринга (фотореалистичный/реального времени), этапы рендеринга, и т.д.
    Отдельная задача - уметь настроить компилятор и IDE для того, чтобы все, что использует OpenGL, нормально компилилось, но это вы и в гугле найдете.
    Ответ написан
    Комментировать
  • Возможно ли перенаправить 80 порт на ns сервера, учитывая, что домен направлен на машину с Windows XP?

    Если уж подняли игровой сервер на машине, подняли б там же и сайт. Или решили ради стабильности разделить?
    Вообще как раз таки подобные проблемы и решаются наличием различных DNS-имен для разных машин или сервисов (исторически www в начале названия сайта для этого и служит, чтобы отличать, например, от mail.blabla.com), но если уж вам супер-нужно одно имя, то придется на игровом сервере поднять проксик. Nginx, например. Он будет направлять запросы на машину хостера.
    Ответ написан
    Комментировать
  • Как передавать данные между ViewModel?

    Nipheris
    @Nipheris Куратор тега C#
    Почему возникла такая необходимость? Как соотносятся эти две ViewModel друг с другом?
    Я обычно использую тот же PropertyChanged, чтобы слушать изменения свойств одной viewmodel в другой (например, если одна viewmodel для элемента заказа, а другая - для вывода суммы заказа). Это для случая, когда вьюхи связаны друг с другом.
    Если вьюхи совсем никакого отношения не имеют друг к другу, то может тогда через уровень данных это сделать (репозиторий, например)? У нас в проекте репозиторий на клиенте хранит DTO, которые возвращает веб-сервис. Когда содержимое этих объектов обновляется (они регулярно перезапрашиваются + перезапрашиваются после PUT/PATCH операций), репозиторий генерит ивент, на который подписаны вьюхи. Вьюхи уже сами определяют, что изменилось, и, в свою очередь, генерят PropertyChanged.

    Если это все не подходит, опишите ситуацию подробно, сейчас только понятно, что у вас есть две ViewModel, и больше ничего.
    Ответ написан
  • Как создать REST API на C++?

    Nipheris
    @Nipheris Куратор тега C++
    Поддержка HTTP (на базе ASIO), работа с URI и прочие базовые для веба вещи: cpp-netlib.org
    JSON: www.codeproject.com/Articles/20027/JSON-Spirit-A-C... . Есть форки на github.com, много и других библиотек, но лично мне больше эта нравится.

    Первая либа еще не релиз-версии, но API уже стабилизировался, все работает. Более чем годно для малонагруженного сервера (проверено на localhost), можно и для многих посетителей, если поставить за nginx для безопасности.
    P.S. Внезапная альтернатива: FastCGI (https://savannah.nongnu.org/projects/fastcgipp/) + нормальный веб-сервер.
    Ответ написан
  • Как хранить IP в базе?

    IP-адрес это число. Для IPv4 - это 4 байта. Для IPv6 - это 16 байт.
    Если нужен только v4 - тогда можно взять INT. Если нужно и то и другое, то
    а) советую хранить оба адреса независимо, на время перехода они обычно доступны одновременно (если какой-то останется неизвестным - ничего страшного, пометите как NULL)
    б) хранить в виде строки смысла не вижу вообще, БД это место для хранения данных, а не для интерфейс для просмотра, и ориентироваться надо на хранение. Кто хочет красиво вывести - пусть строит нужный запрос с препобразованиями, выше уже привели отличные функции.
    в) храните в binary(4) и binary(16) чтобы иметь унифицированный подход (мне так было удобнее, советую и вам)
    г) только не надо varbinary - размер адреса постоянен, никакого var быть не может. Типы данных с фиксированным размером (даже binary) намного легче в хранении и обработке, чем с переменным. Не мучайте СУБД не по делу.
    Ответ написан
    Комментировать
  • Как правильно отобразить большое количество Ellipse на Canvas (WPF)?

    Nipheris
    @Nipheris Куратор тега C#
    Для начала стоит подумать, как можно создать эллипсы однократно, а не каждые 100 миллисекунд. Графические объекты в WPF довольно тяжелые, и создавать их лучше один раз, и затем повторно использовать.
    Ответ написан
    2 комментария