Задать вопрос
  • Почему появляется is not a constructor?

    @Alexey_Gagarin Автор вопроса
    Кажется. разобрался сам. В настройках проекта я поставил галку, чтобы собирать все TS файлы в один JS. При этом, почему-то, не всегда соблюдается правильный порядок следования скриптов в файле...Объявление MachineGun оказывается раньше, чем Weapon. отсюда ошибка... Добавил в MachineGun.ts /// и вроде заработало...
    Ответ написан
    Комментировать
  • Какие специалисты нужны для использования 3d-объекта в видео-ролике?

    В принципе Кирилл в ответе выше описал всё достаточно верно. Я сам занимаюсь 3D графикой. Для анимации 3D объекта нужен, соответственно, 3D аниматор :)
    Вся сложность в том, что для создания качественного ролика вовсе не достаточно проанимировать объект. В бОльшей степени, как уже сказали, на качество ролика влияет рендер, т.е. грамотная настройка сцены, материалов, света, камер и т.д.
    В многих случаях с этим действительно может справиться один человек, только когда будете смотреть порфтолио, нужно обратить внимание и на уровень анимации и на уровень визуализации (т.е. картинки), ну и сразу указать. что требуется анимация, потому что на фри-лансе очень много визуализаторов, которые не умеют анимировать.
    Прошу прощения, конечно, что по сути продублировал ответ сверху, но я, как "специалист" ) в области 3D подтверждаю, что всё так и есть, но делаю акцент на том, что вам требуется не только лишь анимация, а даже в первую очередь качественный рендер, чтобы ролик был красивым.
    Если хотите, можете со мной связаться, я посмотрю что у вас за задача. Могу либо сам выполнить, либо посоветовать человека, который является хорошим специалистом во всех этих направлениях.
    Ответ написан
    4 комментария
  • Как правильно подключить БД в ASP.NET MVC 4?

    Вот, почитайте про инициализаторы www.codeguru.com/csharp/article.php/c19999/Underst...
    Ответ написан
    Комментировать
  • Можно ли и где заработать на рендеринге медиа для заказчиков?

    Вряд ли, потому что мощность одного компьютера никого не интересует. И даже мощность 5 или 10 компьютеров, как правило, никого не интересует.
    Люди предпочитают пользоваться рендер-фермами, а это десятки процессоров. Хотя сами владельцы рендер-ферм признают, что учитывая стоимость данной услуги и расходы на электроэнергию, занятие это не такое уж и выгодное. Это во-первых, а во-вторых с появлением облачных технологий, всё больше людей поднимают десятки, а если надо и сотни рендер-серверов одним кликом мыши.
    Ответ написан
    Комментировать
  • Кроссплатформенная мобильная разработка: на чем писать игры и приложения?

    Если вы не знаете языков, но хотите делать игры, тогда дам очень банальный ответ: Unity3D. Кроссплатформенный, но какой-нибудь язык всё-равно придётся подучить.
    И вообще, может я чего, конечно, не понимаю в этой жизни, но не рановато ли думать о кроссплатформенности и о спасении души, если вы не знаете ни одного языка? Надо что-то начинать изучать, а не о кроссплатформенности думать.
    И какая вообще связь между мобильной разработкой и JavaScript? JS - это скриптовый язык для браузера, язык для разработки клиентской стороны. Разумеется этот код будет работать на всех платформах, но что вообще вы на нём собрались сделать?
    Ответ написан
    4 комментария
  • Как правильнос построить N-Tier/N-Layer архитектуру для ASP.NET проекта?

    Тема достаточно глубокая, лично я сейчас сам её изучаю. Пока что просто подкину вам нужную ссылку:
    blog.byndyu.ru/2014/05/blog-post.html
    Почитайте, у Александра там ещё много чего интересного написано по этой теме.
    Если говорить конкретно по вашему сообщению, то в целом вы всё описываете правильно. Т.е. у вас может быть слой DAL для доступа к базе данных и получения объектов. При этом DAL не содержит бизнес-логики, он только возвращает объекты. Причём списки объектов желательно возвращать как IEnumerable, а не IQueryable.
    Далее, как вы правильно сказали, есть слой бизнес-логики. Опять же, как правильно было замечено, слой бизнес-логики хранит ссылку на интерфейс DAL и обращается к нему для получения объектов. Конкретный DAL задаётся через DI.
    Насчёт обращения к DAL из контроллера - я бы рекоммендовал всё-таки обратиться через сервис. Вообще я задавал Александру почти точно такой же вопрос - что если мне требуется просто получить список объектов из DAL. Он дал мне ссылку на эту статью blog.byndyu.ru/2011/08/repository.html Почитайте, там как раз об этом.
    По-поводу того, в каких сборках правильнее хранить интерфейсы - я, к сожалению, сам пока точно не знаю, так как не прочитал ещё достаточно литературы.
    И в финале скажу, что сам Александр рекоммендует по-возможности использовать не сервисные слои, а CQRS. О том что это - поищите в поисковике. Надеюсь ответ был полезен.
    Ответ написан
    1 комментарий
  • EF CodeFirst: из-за чего ошибка при создании БД (не хочет создавать)?

    Эм... вообще не уверен, что строку подключения вот так вот напишите:

    add name="MyDatabase" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;Integrated Security=True" providerName="System.Data.SqlClient" />


    MyDatabase - имя класса контекста
    InitalCatalog=MyDb - имя базы данных.

    И как правильно написали выше, для создания базы нужно выполнить с ней какое-нибудь действие.
    Ответ написан
    Комментировать
  • Как сохранить информации в Лист на ASP.NET MVC 4.0?

    Я не понял, а модель-то кто будет передавать во View, дядя Вася что ли?
    Вы вызываете свой индекс без модели. Это первое.
    Второе, как уже сказали: при каждом новом запросе к серверу создаётся новый экземпляр контроллера. Т.е. при создании пользователя создаётся первый контроллер и пользователь добавляется в его лист.
    При вызове Index создаётся другой контроллер, список которого пуст. Поэтому реализуйте хранилище для тестирования, например статичный класс MemoryUserRepository и засуньте свой лист туда.
    Ответ написан
    Комментировать
  • Зачем нужен VisualBasic(.NET)?

    Я думаю, что ответ даже проще, чем кажется. Просто с выходом платформы .net Microsoft хотела привлечь на свою сторону программистов, пользующихся Visual Basic.
    Разумеется всегда можно переучиться и начать программировать на C#, но не всем это удобно, поэтому откажись MS от VB, она просто потеряла бы немалую часть пользователей, потому что им просто нравится VB и они хотят программировать именно на нём.
    Поймите, что если вы не знаете программистов на VB или вакансий нет на биржах, то это не значит, что им никто не пользуется.
    И дело тут отнюдь не в простоте или каких-либо преимуществах, хотя, например, код LinqToXml на VB выглядит элегантнее.
    Ну и плюс, как правильно сказали, поддержка проектов, которые изначально написаны на VB.

    Вообще странно, честно говоря, слышать такие вопросы в сообществе людей, где до сих пор верстают под Internet Explorer 6. Т.е. о жалкой доле процента пользователей вы беспокоитесь, а над огромной армией программистов VB удивляетесь? )))
    Ответ написан
    Комментировать
  • Что лучше использовать для авторизации в asp.net mvc, сессию или cookie?

    Конечно есть :D ASP.NET Identity - самая современная.
    www.asp.net/identity

    Также есть SimpleMembership. По нему вообще полно уроков. В 12-ой студии при создании проекта MVC4 в базовом шаблоне эта система устанавливается по-умолчанию. Т.е. создаются модели, контроллеры, настраивается EF, насколько я помню.
    habrahabr.ru/post/192238
    blog.osbornm.com/2010/07/21/using-simplemembership...

    p.s. поэтому лучше не писать велосипеды, а воспользоваться готовым решением. Но если вас интересует ответ, то на мой взгляд - Cookie конечно, если вы, конечно, не хотите заставить пользователя логиниться каждые N минут, а также после перезапуска браузера.

    Ну и самая древняя и тяжёлая - ASP.NET MembershipProvider или как его там, но его нормальные люди сейчас не используют.
    Ответ написан
    6 комментариев
  • Как опубликовать asp.net mvc приложение на сервере ?

    На эту тему есть миллион туториалов, например
    www.asp.net/mvc/tutorials/deployment
    Я только не понял, вы что ли на собственном сервере сайт разворачиваете?

    А в чём проблема с со строкой подключения? Может быть вы неправильно указываете адрес сервера? Если база расположена на хостинге в интернете, то вы прямо на этом хостинге смотрите её адрес.
    Если на локальном компьютере, то имя сервера для SqlServer будет .\SQLEXPRESS
    Например:
    < add name="MyDatabase" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MyDatabase;Integrated Security=SSPI" providerName="System.Data.SqlClient" / >

    Для SqlServer CE providerName = "System.Data.SqlServerCe.4.0"
    Ответ написан
  • Как правильно использовать паттерны проектирования?

    Привет, автор. Вот мои мысли по этому поводу:
    1. Понимание паттернов программирования приходит только с опытом. Чтение одной лишь книги, без практики, практически ничего вам не даст. Материал быстро забудется. Лично я прочитал примерно половину книги, после чего пришлось её на время отложить. Как я и говорил - без тренировки на примерах материал быстро забылся. Вновь вспоминаться он стал при чтении книги "Принципы, паттерны и методики гибкой разработки на языке c#". В книге достаточно много подробных примеров, и именно после их выполнения я стал осознавать суть некоторых паттернов.
    Разумеется нельзя считать, что паттерн - это какое-либо строгое правило. Часть паттернов мы реализуем сами ещё до прочтения каких-либо книг. Паттерн - это возможное и удобное решение, которое можно применить для решения какой-либо задачи. Не надо пытаться заучить паттерны или вставлять их везде, где можно. Нужно просто писать как можно больше кода, тогда уже автоматически начинаешь видеть ситуации, где можно применить паттерн.
    2. По-поводу слабой связанности. Во всех книгах, разумеется, пишут, что слабая связанность - это хорошо. Но на самом деле такая архитектура не всегда оправдана, и специалисты в области разработки ПО об этом периодически напоминают. На практике это означает то, что не нужно везде применять интерфейсы только потому, что можно это делать. Если вы уверены, что ваши классы вряд ли будут когда-либо заменены другими, то лично я считаю, что они могут быть смело использованы друг-другом без принципа инверсии зависимостей. Ну и вопрос к модульному тестированию. Разумеется сильная связанность мешает модульному тестированию, но если вы не планируете его проводить, то быть может и не стоит строить избыточные абстракции.
    Лично я также считаю, что вышесказанной в меньшей степени справедливо для прикладных и вэб-приложений (где действительно важна модульность и тестировании), и в большей степени справедливо для игровых приложений. Лично я вообще с трудом представляю игру, в которой каждый игровой объект (танк, самолёт например) будет реализовывать интерфейс, чтобы теоретически когда-нибудь мы заменили танк на био-робота. Но это так, лирика.
    3. По-поводу повторного использования. Один мой товарищ - senior developer, работавший в серьёзных организациях, говорит, что повторное использование кода - это миф. Лично я повторно использовал разве что какие-нибудь вспомогательные функции. Ну или в лучшем случае несколько классов и интерфейсов для поддержки модульности. На мой взгляд, говорить о том, что можно взять и перенести из проекта в проект всю архитектуру особо не приходится.
    4. По-поводу контроллеров. Насколько я понимаю (опыт в разработке небольшой) основной смысл делать контроллеры зависимыми от интерфейсов только в том, чтобы тестировать эти контроллеры (хотя я не совсем понимаю зачем). Контроллер - это действительно такая вещь, которая с большой вероятностью будет использоваться только на конкретном сайте. Также этот контроллер будет завязан на какой-то интерфейс, предоставляющий бизнес-логику. Опять же вероятность, что один класс бизнес-логики будет заменён другим классом с такими же методами - стремится к нулю, особенно если учитывать то, что класс бизнес-логики зависит от интерфейса, который предоставляет методы получения данных. (если вы хотите изменить способ получения данных - вы изменяете, К примеру, класс репозитория, бизнес логика остаётся той же). В связи с этим я вижу пока только одну причину завязывать контроллеры на интерфейсы, а не конкретные классы бизнес-логики - это тестирование. Вы стабите интерфейс бизнес-логики и тестируете контроллер независимо от всех остальных модулей. Если не прав, поправьте, конечно.
    Ответ написан
    5 комментариев
  • Как вы реализовываете авторизацию в ASP.net MVC?

    Я использую SimpleMembership потому что для меня он прост, я его более или менее знаю, плюсом к тому он достаточно лёгок и гибок. Но с выходом MVC5 рекоммендуют использовать, как посоветовал комментатор выше, ASP.NET Identity. С ним я не работал.
    Старый Asp.Net Membership использовать однозначно не рекоммендую, потому что в своём объёме и оптимизации он просто монструозный.

    p.s. Вот вам очень полезная ссылка на тему авторизации. Мне в своё время очень помогла да и сейчас помогае

    kevin-junghans.blogspot.ru
    Ответ написан
    Комментировать
  • Как и с помощью каких технологий можно создать конструктор-редактор?

    Конструктор чего? Редактор чего? Если для сайта, то, думаю, Flash (Action Script 3), там и формы есть и 3d графика есть, и браузеры его поддерживают без дополнительных установок.

    p.s. это флешка. Исходников нет, но могу посоветовать начать работу с Adobe Flex. Если я не ошибаюсь, то это как раз визуальный редактор AS3.
    Ответ написан
    Комментировать
  • LINQ to Entity Framework — базовый класс для работы с БД? (C#)?

    Paulskit правильно сказал, что автор пытается написать паттерн Repository. А Lam правильно написал как сделать GenericRepository.
    Пример обобщённого репозитория, кстати, есть здесь www.asp.net/mvc/tutorials/getting-started-with-ef-...
    Я в своём первом проекте его использовал. На самом деле, лично в моём понимании, это не очень хорошо.
    Сейчас ваш метод возвращает объект по его ID. Предвижу, что следующим методом будет получение группы объектов и возвращение IQueryable. Такой подход невольно заставляет писать код выборки объектов где-нибудь (в контроллере, в слое сервиса), но не в репозитории, что приводит к путанице. На мой взляд, лучше делать не обобщённый репозиторий, а уникальный репозиторий для каждой сущности, необходимой для работы программы.
    Предположим, что у вас есть класс BlogPost. Вы хотите иметь возможность загружать этот объект по ID, загружать вообще все эти объекты в память, загружать только часть этих объектов в память, загружать объекты с определённым условием и т.д. Для этого мы можете создать BlogPostRepository и написать в нём эти методы. Тогда ваша программа станет логичнее и понятнее. При работе с блогами вам не нужно будет каждый объявлять обобщённый репозиторий и городить поверх него запросы типа
    var repository = new GenericRepository<BlogPost>();
    var blogs = repository.GetAll().Skip(100).Take(10).OrderByDescending(c => c.Created);

    Ну или как-то так (код примерный). Причём такие конструкции придётся городить в любом месте, где понадобится получить 10 последних блогов.
    Проще сделать не обобщённый репозиторий, а специальный репозиторий для нужного объекта, тогда получится примерно так:
    var repository = new BlogPostRepository();
    var blogs = repository.GetTenTopBlogs();

    В методе GetTenTopBlogs, соответственно, инкапсулируете логику выборки последних 10 блогов. Разумеется GetTenTopBlogs может иметь параметры (например количество блогов, которые нужно получить). Тут уже всё зависит от задач. И GetTopBlogs Должен возвращать IEnumerable, чтобы вызывающий код уже оперировал с сущностями в памяти, а не строил новые запросы к БД.
    В целом код становится лаконичнее. Вам не нужно теперь каждый раз, чтобы что-то получить, объявлять обощённый репозиторий, тащить из него Queryable коллекцию и делать на ней выборку. Вы только вызываете метод и уже получаете результат. Теперь в вызывающих классах нет логики выборки.
    Примерно так... :)
    У Александра Бындю есть хорошие статьи на эту тему.
    blog.byndyu.ru/2011/08/repository.html

    Кстати, только заметил. Насколько я могу судить, репозиторий не должен знать об объекте DbContext. Это нужно для того, чтобы реализовать паттерн Unit Of Work. Представьте, что вы хотите совершить несколько транзакий (операций с репозиторием). Причём если хотя бы одна из них прошла неудачно, нужно всё откатить обратно. Предположим, что вы хотите сохранить 3 разных сущности в базу. Для этого вы написали свой обобщённый GenericRepository и объявили три переменных для каждой сущности. Причём у вас в этом GenericRepository будет функция Save (иначе как вы будете сохранять свои сущности).
    Выходит, что каждый экземпляр класса GenericRepository будет содержать свою копию DbContext, и каждый раз после добавления сущности вы будете сохранять базу.
    Единой транзакции не получится.
    Чтобы получилась, нужно передавать DbContext в конструктор репозитория и ничего не сохранять в репозиториях. Т.е. вы где-то объявляете свой контекст, затем создаёте три репозитория и в каждый из них передаёте этот контекст. Делаете все операции, после чего сохраняете контекст в вызыывающем класе. Получается UoW. Хотя DbContext - это уже UnitOfWork.
    По ссылке выше это тоже обсуждается (смотрите там рекоммендованные ссылки).

    p.s. Paulskit дал хорошую ссылку, я как раз её пытался найти.
    Lam тоже говорит правильно о том, что общие методы можно, конечно, вынести в обобщённый репозиторий. Только зачастую там этих методов - 1-2, а доброй трети сущностей эти методы вообще не понадобятся, так что я бы не стал делать лишнюю иерархию только для того, чтобы всем репозиториям назначить базовый класс.
    Ответ написан
    Комментировать
  • Как программировать игры?

    Да ладно, такое ощущение, что тролли не только задают, но и отвечают. Как так: вы знаете С++, но не знаете как делать игры? Как загружать изображения в память знаете? Как писать классы и создавать объекты знаете? Как наладить взаимодействие объектов тоже знаете? Тогда в чём вопрос вообще?
    Если вы не понимаете как именно работать с графикой, то подсказываю: никто не гонит использовать нативный Direct3D. Берите любой подходящий фреймворк и в путь. Для C++ могу посоветовать, Например, HGE. Я сам с него начинал. Он уже не поддерживается, насколько я знаю, но форум жив, а энтузиасты потихоньку его допиливают. Примеры есть, да и сам по себе он достаточно простой. С его помощью вы сможете загружать изображения (в том числе анимированные), а так же манипулировать ими. Для создания 2Д игры самое то. В общем посмотрите примеры и сами попробуйте.
    Также, смотрю, проскакивают ответы насчёт того, чтобы делать сразу трёхмерную игру, да ещё и с физикой. Да блин, начните с простого. Сделайте. как тут уже писали, кнопку с поведением, или ещё лучше, напишите тетрис или смейку. Потом уже разберётесь как что работает. Без знания основ вообще не вижу смысла хвататься сразу за 3д.
    И игра - это не обязательно физика. Не надо сразу ломиться читать алгебру и начинать писать свой физический движок. Изучайте всё по мере надобности.
    Ответ написан
    Комментировать