• Как получить информацию о файле торрент?

    Из самого torrent-файла - невозможно, возможно только попытаться реализовать частичное скачивание необходимых кусков (в зависимости от формата видеофайла) с метаинфой.
    Ответ написан
    Комментировать
  • Как сделать Insert при определенных условиях?

    > мне нужно сделать так, что бы вставляло только в том случае, если для ключ2 не было дубликатов ключа1, а если ключ2 разные, то дубликаты ключа1 допускаются

    делайте лучше одним запросом попытку найти комбинацию ключ1 и ключ2, вторым - добавление. Ну или можно положиться на constraint-ы, и просто сделать пару (ключ1, ключ2) нормальным первичным ключом - тогда мускул пошлет вас при попытке вставить второй такой же. Обратите внимание - ключом должна быть именно пара, а не два уникальных ключа по отдельности.
    Ответ написан
    Комментировать
  • Как реализовать папки и подпапки на php?

    Я вот себе в закладки положил, и вам советую:

    stackoverflow.com/questions/4048151/what-are-the-o...

    Лучший известный мне список способов хранения иерархических данных в РСУБД.
    Ответ написан
    Комментировать
  • Насколько сложны игры на c++ и openGL?

    Nipheris
    @Nipheris Куратор тега C++
    Сложности в создании игр у вас будет три:
    1) программирование, и C++ в частности - не лучший язык для изучения программирования, хотя как второй по счету язык - вполне подойдет. Как инструмент для разработки игр, плюсы, безусловно, лидируют.
    2) компьютерная графика, и OpenGL в частности - вам нужно будет хорошо разобраться, как рассчитываются изображения, и как собирается финальная картинка. Для разработки игр вам понадобится знание графического конвейера, шейдеров, понимание общих принципов растровой и векторной графики (что такое цвет, пиксель, растр, как задаются векторные примитивы), понимание принципов анимации (как рисовать движущуюся картинку).
    3) математика, и линейная алгебра в частности. Операции с матрицами и векторами - это минимум, без которого даже 2d не сделаешь. Если захотите всяческие реалистичные эффекты - это еще и физика, в частности - механика. Прежде чем нарисовать летящий по баллистической траектории снаряд, нужно сначала рассчитать, ГДЕ он будет находиться на экране (в виртуальном пространстве) в каждый промежуток времени. Ну и так со всей начинкой игры. Вам следует четко понимать, что если вы не собираетесь брать готовый графический движок, то opengl вам сможет лишь нарисовать что-либо что вы ему скажете. Что рисовать и где - вы должны будете запрограммировать сами, во всех деталях.
    Как уже сказал GavriKos, геймдев - сложная область, можно сказать двигатель прогресса в технологиях развлечений. Конечно далеко не все разработчики игр участвуют в создании самых современных движков или крупнейших MMO-проектов, однако отставать в этой индустрии нельзя - только игры с оригинальной идеей могут позволить себе графику 10-летней давности, например.
    Ответ написан
    Комментировать
  • MySql как создать таблицы или сделать запрос?

    Альтернативный LEFT JOIN-у вариант - оператор EXCEPT, который представляет собой операцию "минус" на множестве кортежей: en.wikipedia.org/wiki/Set_operations_%28SQL%29#EXC... . Т.е. вы выбираете все задания, и исключаете те, которые нужно... исключить:
    select task.id from task
    except select excluded_task.id from excluded_task
        where user_id = <id юзера>


    Таблица excluded_task это пары (id, user_id) - если юзер исключил таск с некоторым id, в этом отношении будет соответствующий кортеж.
    Ответ написан
    Комментировать
  • Как получить 2 таблицы в хранимой процедуре в SQL Server?

    Nipheris
    @Nipheris Куратор тега C#
    А какова цель использования хранимой процедуры только для получения данных? Я понимаю вы бы делали запросы на модификацию с добавлением логики, чтобы все это выполнить на стороне БД, а выборку-то зачем? Если есть конкретные причины, укажите, и подумаем как лучше сделать.
    Ответ написан
  • Почему Debug Assertion Failed?

    Nipheris
    @Nipheris Куратор тега C++
    На глаз в коде ошибок в работе с памятью не видно. Могу предложить еще раз внимательно проверить, правильные ли библиотеки кьюта используются. Библиотеки должны соответствовать версии компилятора и рантайма, битности собираемого экзешника и конфигурации сборки (дебаг/релиз). Проверьте, все ли у вас верно подключено. Масса странных плавающих ошибок может появляться, если, например, кьют собран под 2010-ю студию, а используется в проекте с компилятором из 2013-й и наоборот.
    Ответ написан
  • Как спроектировать базу данных?

    Если коротко - то лучше сразу посмотрите на модель EAV, т.к. разбивать на отдельные таблицы имеет смысл только для ОЧЕНЬ специализированных магазинов, у которых весь бизнес вертится вокруг продажи конкретных товаров. Если у вас обычная розничная продажа, то лучше сразу от этого отказаться, т.к. все равно рано или поздно будут добавляться новые типы товаров и ваша БД будет усложняться до момента потери контроля над ее структурой.
    Тут я предлагал решения для аналогичной проблемы: Как добавить товар в корзину?
    Ответ написан
  • Какие используются протоколы передачи данных в Базе данных MySQL?

    На транспортном/сетевом уровне - TCP/IP. Дефолтовый порт, который прослушивается сервером mysql - 3306. Никаких апачей ставить не нужно, доступ осуществляется с любого компьютера сети путем установки TCP подключения. Поверх TCP идет собственный бинарный протокол mysql. Никак особо он не называется - просто mysql protocol. Протокол формализует как формат передачи полезной нагрузки (запросы, результаты запросов, prepared statements), так и некоторые инфраструктурные вопросы, например аутентификацию и подпротоколы сжатия и шифрования.
    Вручную эти протоколы не реализует практически никто, т.к. они уже реализованы создателями клиентских библиотек для разных языков и платформ. Именно библиотеки являются основными реализациями клиентской стороны протокола и используются в большинстве приложений, работающих с mysql-сервером.
    Ответ написан
    3 комментария
  • Как пользоваться Shared Pointer в c++?

    Nipheris
    @Nipheris Куратор тега C++
    Пока в наших университетах (колледжах, техникумах, etc.) будут ставить такие задачи, из учебных заведений будут выходить малополезные специалисты, которые все будут учить заново на работе. Вместо того, чтобы давать студенту широкий взгляд на предмет и множество инструментов (в противоположность работе, которая не всегда может дать корректную и не предвзятую оценку используемым технологиям), университетская программа становится источником историй и анекдотов с участием неопытных специалистов и их боевых наставников (тимлидов, опытных коллег).
    Вместо того, чтобы поставить задачу с архитектурным уклоном (вроде "напишите функцию-фабрику, создающую объект нужного класса и возвращающую экземпляр, обернутый в shared pointer"), чтобы продемонстрировать кейс применения умных указателей, студентам говорят "прикрутить". Неужели на специальностях машиностроения тоже говорят "прикрутить", а не соединить детали в работающее устройство?
    Извините за оффтоп, очень уж классический пример.
    Ответ написан
    Комментировать
  • Как реализовать перемещение юнитов и их взаимодействие друг с другом?

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

    Чтобы движение было плавным, нужно плавно анимировать это движение (т.е. перерисовывать положение и внешний вид объекта N раз в секунду).
    Процесс взаимодействия между юнитами зависит от архитектуры вашей игры и ее целевого функционала. Если это сингл-плеер, то я думаю не всегда хорошо дожидаться конца анимации, чтобы рассчитать урон (например, для игрока вполне естественно обнаружить нанесение урона в момент когда его меч коснется противника, а не когда закончит движение). Если это сетевая игра, то у вас есть интересная и непростая задача компенсации пинга.
    Если вам кажется, что я изображаю капитана Очевидность, то вам нужно задать более точные и конкретные вопросы.
    Ответ написан
    Комментировать
  • Есть ли более красивое решение для реализации такой системы?

    Nipheris
    @Nipheris Куратор тега C#
    Если планируется использовать дотнет (как для "процессов", так и для сайта), то имеет смысл использовать преимущества платформы. Я бы поступил следующим образом:
    - на ASP.NET реализовать логику сайта + бизнес-логику; здесь же - постановку "заказов" в очередь контроллера;
    - отдельный процесс операционной системы - контроллер (хост) для выполняющихся "процессов"; каждый такой контроллер (их может быть несколько) загружает в отдельный домены приложения (application domain) сборку/сборки с кодом "процесса", настраивая ему права доступа к окружающей системе (песочницу); т.о., при постановки задачи в очередь конкретному контроллеру (выбирать можно рандомно или по загруженности), последний, при готовности, создает домен приложения, грузит в него нужную сборку-плагин, и запускает код на выполнение с нужными параметрами.
    - код "процессов" оформлять в виде дотнетовских сборок; оформить интерфейс, который будет реализован каждой сборкой;
    - прогресс можно конечно писать в БД, но можно и не писать: правильно работающий контроллер может и сам докладывать о состоянии выполнения наиболее актуальные сведения; в тот же интерфейс, через который контроллеру отдаются в очередь задачи, можно добавить и возможность запроса состояния выполнения; на клиенте брать по ajax, только конечно не в цикле, а по таймеру.
    - в базу можно и нужно писать время старта/завершения задачи, результат (успех/ошибка) и т.д.;

    такая архитектура позволит вам выделить отдельные машины для сайта, отдельные - для исполнения, наращивать количество контроллеров "процессов" и количество машин, обслуживающих сам сайт.
    Ответ написан
    Комментировать
  • Не будет ли проблем при статической компиляции С++ библиотеки?

    Nipheris
    @Nipheris Куратор тега C++
    Если вкомпилите райнтам статически - по идее проблем быть не должно, т.к. у вас будет свой набор функций, не пересекающийся с тем, что загружаются 3dmax. Он просто не будет "видеть" вашу копию рантайм-библиотек, т.к. они будут монолитом с вашим плагином.

    Если вы уверены, что дело в конфликте библиотек (в чем еще нужно убедиться - можно посмотреть, какие модули загружены 3dmax-ом, когда работает ваш плагин с помощью Process Explorer - по идее должны быть загружены отдельно и его библиотеки, и ваши, который лежат рядом с плагином), то можно попытаться ставить райнтам более серьезным способом - с помощью пакета установки. Если у вашего плагина уже есть инсталлер, тогда в него нужно интегрировать redistributable-инсталлер рантайма, если нет - тогда пользователям придется запускать установку самим. Плюс этого способа - операционка должна сама разрулить потенциальные конфликты (side-by-side, все дела).

    И все-таки, проверьте, действительно ли ваши библиотеки "подменяют" 3d-максовские и отличаются ли они вообще друг от друга. У рантайма 2012-й студии вроде не так уж много версий есть на свете (MS довольно быстро выпустили 2013-ю и подняли версию vc++).
    Ответ написан
    3 комментария
  • Насколько "быдлокодерским" подходом является хранение сериализованных массивов в SQL?

    Весьма глупо оценивать "говнокодерность" вашего подхода только потому, что вы храните массив в ненормализованном виде. Чтобы это увидеть, достаточно вспомнить само понятие нормализованных данных и подумать о его сути. Вот вам пример в лоб: вы же почему-то не говорите, что хранить строку в БД это плохо. А ее, в теории, можно представить как массив символов и нормализовать так, что одна строка некоторой таблицы будет хрнить ОДИН символ. Чушь, скажете вы? Да, для большинства задач это чушь (хотя, возможно не для всех). Просто потому, что НИКОМУ не нужно извлекать из базы ЧАСТЬ строки, какое-либ подмножество ее символов. В большинстве задач строка берется как атомарное (!) значение и именно _поэтому_ ее никто не пытается хранить посимвольно. У нас есть лишь один полезный критерий - что для вашей задачи есть атомарные значения? Все. Если вы ваш массив всегда будуте записывать и извлекать сразу целиком, то и хранить его как единственное значение в поле одной записи - совершенно не проблема.
    Почему-то все считают, что пока не нормализуешь "до чертиков", спроектированная база никуда не годится. Да, конечно нормализация важна, есть смысл даже нормализовать "с запасом", как уже сказали выше - на случай, если какие-то данные впоследствии также будут фильтроваться и обрабатываться на уровне БД с помощью SQL. Однако если вы четко осознаете, что в ближайшем будущем вы не собираетесь работать с массивом поэлементно (на уровне SQL), то хранить его целиком пойдет только пользу.
    Все же юзают JSON и XML-типы данных в SQL базах, и ничего. И блобы юзают. Потому что если проектировщик знает, что планируется обрабатывать в запросах, а что - нет, то он знает и до какой степени нужно нормализовать данные.
    trevoga_su привел великолепный пример с конфигом пользователя. Зачем пытаться его навороченную структуру (например, иерархическую) спроецировать на реляционную БД, если проще хранить его в естественном виде (JSON/XML/plaintext) и писать в БД целиком?
    P.S. Массив кстати можно хранить не в текстовом виде, а в двоичном в BLOB-е, тогда и места займет меньше, и никаких вопросов с кодировками.
    Ответ написан
    1 комментарий
  • Как лучше всего организовать работу с двумя базами данных?

    Можно попробовать абстрагироваться на уровне ORM, если таковой есть - т.е. объекты одних классов извлекаются через одно подключение к БД, другие - через другое. Если SQL-запросы пишете сами, то и думать нечего - структириуете код, как считаете естественным, и где-то в каком-то классе или контроллере (например, Logger) храните в поле необходимое подключение к БД. В другом модуле/классе - другое.
    Ответ написан
    Комментировать
  • C++ как отправить https post запрос и распарсить ответ?

    Nipheris
    @Nipheris Куратор тега C++
    Не тратьте время (если конечно не для образовательных целей):
    cpp-netlib.org

    Отличный веб-клиент (веб-сервер кстати тоже есть). Интерфейс уже более-менее стабилен. Пример:
    cpp-netlib.org/0.11.1/index.html#hello-world
    Ответ написан
    Комментировать
  • Как правильно добавить данные в связанные таблицы?

    https://dev.mysql.com/doc/refman/5.0/en/getting-un...

    А если у вас не автоинкремент, то значит вы сами генерите ID и уже знаете его на момент вставки (например, если GUID).

    Обращаю ваше внимание, что эта переменная запоминается на уровне подключения, то что это не запрос - никакого поиска не будет, просто запрос значения из памяти сервера.
    Ответ написан
    2 комментария