Задать вопрос
  • Как сделать историю в Mongodb … SQL?

    Теоретическая часть:

    Про SQL: стандарт SQL:2011, средства для темпоральных баз данных. Пока поддерживается не всеми вендорами, но можно взять за основу при написании велосипеда.

    Про Монгу особо ничего не скажу, посмотрите вот это:
    https://github.com/thiloplanz/v7files/wiki/Vermongo
    https://github.com/saintedlama/mongoose-version
    Ответ написан
    Комментировать
  • Сколько исследователи тратят времени на поиск уязвимости и написание эксплойта подобного рода(в описании)?

    Не знаю, где вы читали эту новость, но по этим двум источникам выходит, что большую часть написанного в вопросе вы сами придумали, и все намного проще:
    gtlaunch.ru/hakeryi-iz-anonsec-ugnali-u-nasa-bespi...
    https://xakep.ru/2016/02/02/anonsec-nasa-leak/

    Итак, смотрим:
    Так как к трояну Gozi группа отношения не имеет, хакеры пишут, что они попросту купили доступ к зараженному серверу у автора Gozi, и сервер стал отправной точкой входа.

    Ну т.е. они даже эксплоит не покупали. Даже если б купили - ну приватный эксплоит, обычное дело.
    Безопасность НАСА действительно оставляла желать лучшего: запустив обычный брутфорс, хакеры нашли первое сочетание логина и пароля root:root через 0,32 секунды.

    Закрепились на одной машине, стали сканить с неё все доступные во внутренней сети - простое и логичное действие. root:root это конечно полный фэйл, и можно сказать удача для AnonSec, но в принципе не так уж удивительно и невероятно.
    Хакеры смогли получить полный доступ к сетевым хранилищам данных (NAS) на которых хранились копии всех планов полетов беспилотников

    Хакеры заметили, что для большинства миссий в беспилотник загружают уже готовый план полёта в виде файлов .gpx

    Получили доступ к NAS (снова root:root, или зашли с доверенной машины, или насобирали паролей разных юзеров и какой-то подошел к NAS), смогли заливать свои файлы. Вот и залили.

    Я не говорю, что со всем этим справился бы школьник, но где вы тут видите что-либо про взлом прошивки? И да, про "закрытые данные":
    взломать внутреннюю сеть НАСА и провести в ней несколько месяцев, а в качестве доказательства они опубликовали архив объёмом 276 ГБ

    Несколько месяцев, Карл! Даже если серьезные документы хранятся в другой сети с более защищенным периметром, за это время они могли проскочить на чьих-то рабочих машинах или на внутренних серверах.

    И под каждый беспилотник никто новую ОС писать не будет. И для серверов НАСА тоже никто новую ОС писать не будет. В беспилотнике будет какой нибудь embedded-дистрибутив, на серверах ну допустим какой-нибудь олдскульный UNIX (AIX/HP-UX/etc), а на новых будет Линух.

    даже софт для управления этим беспилотником

    Ну софт не найдешь, а вот gpx формат известен весьма широко.

    В общем, читайте внимательно, вообще не пойму как сказанное вами относится к содержимому статьи.
    Ответ написан
    Комментировать
  • Как хранить массив байт в базе данных?

    Доки пробовали открывать?
    sqlite.org/datatype3.html
    BLOB. The value is a blob of data, stored exactly as it was input.
    Ответ написан
    Комментировать
  • Указание имени БД в строке подключения?

    NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=admin;");
    var databasesTable = conn.GetSchema("Databases", null);
    // проверяем наличие базы данных в таблице databasesTable
    Ответ написан
    Комментировать
  • Как добавить действия обработчикам событий стандартных компонентов?

    Nipheris
    @Nipheris Куратор тега C#
    на изменение выделенного элемента

    Ежели так, то вам нужен TreeView и OnSelectedItemChanged.
    Ответ написан
    2 комментария
  • Какие есть архитектурные паттерны без ORM для ASP.NET MVC?

    Сложно посоветовать вам паттерн, т.к. вы в общем-то так и сказали в чем ваша проблема. Непонятно, для решения какой архитектурной задачи вы подбираете паттерн.

    Вы указали, что уже используете Репозиторий. Раз так, то у вас и так должно быть все хорошо с абстрагированием от слоя получения данных - вы можете реализовать репозиторий так, как вам нужно, в том числе и SQL-запросами.

    Даже если вы не хотите ORM целиком, вы возможно захотите часть из её функционала реализовать самостоятельно для удобства. Например, вы вероятно все-таки захотите иметь Identity Map, что ваши объекты (которые будет отдавать ваш Репозиторий, реализованный ручными SQL-запросами) действительно были объектами, а не записями. Или даже какой-нибудь Lazy Load.

    В общем, сейчас создаётся ощущение, что вы не задачу решаете, а пытаетесь собрать рекордную коллекцию паттернов.
    Ответ написан
    Комментировать
  • Как подключится к postgreSQL?

    Какая в меня ошибка ?

    Ваша ошибка: Fatal error: Call to undefined function pg_connect() in /var/www/mysite/lab2/stocks.php on line 17
    Как ее исправить ???

    Если уж вы используете расширение для работы с постгрес, его необходимо загрузить. Конкретный рецепт зависит от вашей операционки: stackoverflow.com/questions/7438059/fatal-error-ca...
    Ответ написан
    Комментировать
  • Как в RAML убрать некоторые параметры из типа, который используется для тела запроса?

    создать тип OrderRequest и наследовать его в Orders, но это тоже какой-то костыль...

    Согласен. Но почему бы не наследовать и Order и OrderRequest от OrderInfo, в котором будут все общие поля?
    Ответ написан
  • Visual Studio. Вместо кнопки "запустить" появилась кнопка "присоединение". F5 не работает Как запустить проект?

    Nipheris
    @Nipheris Куратор тега C#
    Возможно, у вас не открыт ваш солюшен. Проверьте, что в Solution Explorer отображается содержимое солюшена.
    Ответ написан
    Комментировать
  • Как смоделировать человеческий мозг в 3d среде?

    https://en.wikipedia.org/wiki/Blue_Brain_Project

    Что такое "3D среда" и в чем смысл этого понятия применительно к нейронной сети? Вам знакомо математическое определение ИНС?
    Ответ написан
  • Зачем нужен Stream в C#?

    Nipheris
    @Nipheris Куратор тега C#
    GetBytes возвращает long, не знаю где вы нашли, что он возвращает массив байт:
    https://msdn.microsoft.com/ru-ru/library/system.da...

    Так что передача буфера третьим параметром более чем логична.

    И оно кстати ругается: Cannot convert type long to byte[]

    Да ладно вам?) А это не навело вас... на мысли относительно типа возвращаемого значения?) Вы сами придумали, что он возвращает массив байт?
    тут еще как я понимаю размерность буфера предполагается указывать -- вопрос, а как узнать то сколько данных будет в самом блобе?

    Ну вот если все таки пройдете в документацию, то ниже вы увидите следующее:
    GetBytes возвращает количество доступных байтов в поле.Часто это значение равно точной длине поля.Однако возвращенное число может быть меньше фактической длины поля, если GetBytes уже использовался для получения байтов из поля.

    При передаче буфера, значение которого равно null, метод GetBytes возвращает длину строки в байтах.

    Поэтому, если вы не знаете длину буфера - вызовите метод с null для получения этой длины, создайте буфер и поместите туда значение вторым вызовом GetBytes.
    В .net и C# нормальная документация, ее полезно читать.
    Почему во всех примерах используются какие-то Streams?

    Потому что BLOB они на то и BLOB, что Large Object. Блоб может быть килобайтовый, а может быть и гигабайтового размера. Гигабайт читать в массив целиком далеко не всегда целесообразно, как правило - вообще не целесообразно.

    Стримы - это абстракция в стандартной библиотеке, реализующая концепцию потоковой обработки. Файловый поток не будет загружать 10-гиговый файл в память целиком, если вы прочтете только первый килобайт. С блобами из базы аналогичная ситуация. Даже если конкретно ваш драйвер БД не поддерживает загрузку блоба по частям, в принципе такая практика существует.
    Ответ написан
    5 комментариев
  • Зачем используют интерфейсы при проектировании архитектуры приложения?

    Nipheris
    @Nipheris Куратор тега C#
    Я думаю интерфейсы в этом примере применяются как и везде - для контроля за связями между компонентами крупной системы и для обеспечения заменяемости компонент.

    Раз уж так, разрешите мне прилинковать старый ответ: Какова роль интерфейсов в ООП?
    Ответ написан
    Комментировать
  • Почему большинство графовых БД написаны на Java?

    Экосистема способствует. Многие БД вышли из научных проектов или были экспериментальными. В среде computer science из не-нативных языков джава достаточно популярен.
    Не знаю, что причина а что - следствие, но могу сказать, что в джаве есть такое: https://github.com/tinkerpop , а в дотнете я такого не припомню.

    Собственно, а что вы получите, узнав, почему графовые БД написаны на Джаве? Вам как-то легче станет? Или реальный вопрос все-таки в другом?
    Ответ написан
    1 комментарий
  • Кто у нас ведущие разработчики игр в России?

    Ответ написан
    Комментировать
  • Как обойти максимальное количество ребер неориентированного взвешенного графа?

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

    Если я ничего не путаю но ночь глядя, то это задача коммивояжёра. Странно, что до сих пор про неё никто ничего не упомянул.

    Задача NP-полная, достаточно быстро (что-то около 60-70 вершин) становится трансвычислительной, для 200 вершин ни о каком полном переборе не может быть и речи. Советую посмотреть метод ветвей и границ.
    Ответ написан
    1 комментарий
  • Что нужно знать для написания backend игрового сервера?

    Nipheris
    @Nipheris Куратор тега C#
    Александр Александров к сожалению, вынужден присоединиться к Сергей в том, что вы не знаете, что вам нужно от сервера.

    Понимаете, все эти архитектурные паттерны - "бэкенды" в web-понимании, REST-ы - это все хорошо и удобно, но стандартные подходы web - это не всегда про игры и риалтайм-приложения.

    Вы должны принять много различных решений, прежде чем браться что-то делать.

    > есть сервер, к которому обращается игровое приложение что бы записать или извлечь определенных данные игрока
    Вот в этих "определенных данных" и вся суть. Можно по-разному распределять логику между клиентом и сервером, но нередко, особенно в играх, где нужна устойчивость к мошенничеству, большая часть игровой логики находится на сервере. Это гораздо больше, чем "извлечь данные игрока". Если игровая логика находится на сервере, то тогда и требования к процессу обмена данными соответствующие - в REST особого смысла нет, т.к. все равно придется вводить понятие "сессии" или "соединения" с сервером, и хранить его состояние. И ваша основная задача будет не в легкой масштабируемости на заранее неизвестное число клиентов, а наоборот, в поддержании максимально комфортного игрового процесса для имеющихся игроков, а масштабирование будет на втором месте и будет достигаться немного иными архитектурными решениями.

    Многие крупные игровые проекты с большой долей логики на сервере используют свои протоколы обмена (как правило, бинарные) поверх обычного TCP-соединения. Многие применяют различные языки описания таких протоколов, чтобы было проще управлять разработкой, и вносить изменения в протокол (например, по таким описаниям можно автоматически генерировать часть серверного и клиентского кода). Например, Близзы, насколько мне известно, используют Protocol Buffers для Diablo 3.

    С другой стороны, если ваша игра - по сути однопользовательская (например, маджонг какой-нибудь), и вам нужно только сохранять статистику, без особых требований к доверию (т.е. только ради удобства игрока), то тогда простенький REST-сервис вам прекрасно подойдет.

    возможность сохранить процесс прохождения игры

    вам нужно решить, какой уровень доверия у этих данных. Это во многом и будет определять архитектуру. Если ваш проект соревновательного характера, и подмена данных о достижениях или подтасовка результатов отдельных игр или матчей может поставить крест на всем проекте, то тогда клиент не может быть доверенной стороной, и критичная логика должна быть на сервере.
    Ответ написан
    8 комментариев
  • Как загрузить готовую 3D модель(из .obj) в программу, использующую DirectX (С++)?

    Nipheris
    @Nipheris Куратор тега C++
    Посмотрите https://github.com/syoyo/tinyobjloader - на беглый взгляд вроде работоспособная либа.
    Ответ написан
    Комментировать
  • Модульность в C++ как это может выглядеть?

    Nipheris
    @Nipheris Куратор тега C++
    Пакеты Джавы и сборки Дотнета - это про модули в терминах крупной структуры приложения, они тут не при чем.
    Речь идет о модулях на уровне программного кода.
    Хотите примерно понять как это будет выглядеть - посмотрите, например, на юниты в Паскале. Это примерно и есть то, что хотят получить в конечном счёте - возможность по-человечески, на уровне языка, объявлять интерфейсы модулей, подключать их друг к другу, следить за зависимостями между модулями (разве что модули C++ вроде как не привязываются к единице компиляции, в отличие от юнитов Паскаля).
    Сейчас в C++ это достигается большим хаком на уровне препроцессора (а не компилятора языка), называющимся include-файлы. Этот механизм, основанный на правиле "много объявлений, одно определение", унаследован из Си, и по сути представляет собой замену отсутствующей возможности передавать метаданные от одной единицы компиляции к другой при сборке проекта. С помощью инклудов вы напихиваете в один файл ВСЕ, что может потребоваться компилятору. По факту выливается в то, что бОльшая часть единицы компиляции после обработки препроцессором - это содержимое инклуд-файлов. И всё это обрабатывается компилятором каждый раз заново (в каждой единице компиляции). В Си это еще куда ни шло, но в плюсах, где многие библиотеки содержат тяжелый шаблонный код, это становится совсем печальным. Помимо этого, сама работа с инклудами - это непростая практика, и если следовать ей неверно, особенно новичкам, они могут получить от компилятора удивительнейшие ошибки. За примером далеко ходить не надо - попробуйте в большом проекте не ставить защиту от множественного инклуда.
    Вся эта препроцессорная магия красоты и прозрачности языку не добавляет. Пока в других языках пишут "package foobar" и "import foobar", мы пишем "#pragma once" или даже "#ifndef FOOBAR_H ...". Уже грустно как-то становится.

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

    Nipheris
    @Nipheris Куратор тега C#
    Общие тенденции сейчас такие - пользоваться NuGet по-нормальному (т.е. как в DNX, а не сбоку прилепленным, как в классических C# проектах), наконец по-нормальному поддерживать все платформы (как должно было быть изначально), т.е. хотя бы Линух и Фряху помимо Винды, не бояться portable-версий библиотек.

    Более предметно можно поговорить, если вы точно скажете, чем интересуетесь. Непонятно, то ли вы про тенденции в языке хотите узнать, то ли про тендеции платформы дотнет в целом.

    MS пытается сейчас сделать весь дотнет и конкретно C# более легковесными. По .net core и asp.net core это ясно видно - альтернатива большому полноразмерному .net framework, asp.net теперь распространяется через NuGet, новые Roslyn-компиляторы и DNX позволяют пользоваться C# как другими популярными языками вроде Питона и Руби, например дают возможность не компилировать весь проект заранее, а делать это на ходу, по-требованию и при изменении файлов исходников. Entity Framework старается не отставать, т.к. это сейчас рекомендуемый подход для доступа к данным в БД. Не так давно вроде впилили поддержку документных баз (не знаю правда зачем :) ) работают в направлении поддержки NoSQL-баз (поправил Роман ).

    К чему вы упомянули dependency injection не совсем понятно, это паттерны, полезные в любом языке и в любом проекте.
    Ответ написан
  • В чём смысл PayPal? За счёт чего эта платежная система смогла получить такую популярность?

    Я вот никогда своей зарплатной картой не пользовался для покупок в интернете (я же не сумасшедший). Вопрос - а чем тогда пользоваться? У нас вот популярен Qiwi и аналогичные услуги у других банков (виртуальные карты и счета). За бугром роль такого сервиса играет Палка. Большинство операций нужно подтвердить, авторизовавшись на сайте Пэйпала, если есть подозрения на компрометацию - меняешь пароль или даже акк, и дело в шляпе. А вот если карту надо перевыпустить - не знаю как в западных банках, а у нас время ожидания от 3-4 дней (в лучшем случае) до пары недель. Не очень удобно. И денежек стоит.

    3D-Secure не так давно стал появляться у банков. До этого спереть данные кредитки было куда проще.
    Ответ написан
    Комментировать