• Что лучше 1С или C#(ASP.NET)?

    @Nokia7650
    web developer
    Странно сравнивать 1С и ASP.NET MVC. Если исходить из дохода - денежку можно рубить и там и там. Тут скорее что вам больше по душе. Если нравится 1С и устраивает быть в ее рамках - вперед. Не устраивает - .NET ждет вас. Зная ASP.NET MVC (а по сути C#) - не особо трудно будет переключиться на десктоп или мобильную разработку. Я к тому, что если вам захочется творить что-то свое, то в рамках .NET у вас практически не будет ограничений.
    Ответ написан
    4 комментария
  • Использовать ли UserControl в WPF MVVM?

    @Hydro
    C#/.NET Developer
    У вас в корне неправильный подход.
    Давайте по порядку.
    Сначала почитайте про DataContext в WPF, потом про сам MVVM (тщательнее, чем до этого).
    По структуре данных: одна таблица - это один тип аггрегации, соответственно другая таблица - другой тип аггрегации, поясню напримере:
    есть таблица продукты (Id, Код продукта) и есть таблица заказчики (Id, Имя, Код заказанного продукта), для таблицы продукты, необходимо создать класс Product
    class Product : INotifyPropertyChanged
    {
      public int Id {get;set;}
      public int Code {get;set;}
      // + реализация INPC
    }

    По INotifyPropertyChanged погуглите что это.
    Затем для таблицы заказчики создать класс Consumer
    class Consumer
    {
      public int Id {get;set;}
      public string Name {get;set;}
      public IEnumerable<Product> Orders {get;set;}
    }

    Данные выбираются из БД и для каждой таблицы должен создаваться экземпляр соответствующего ей класса.

    Теперь по отображению и CRUD:
    Создаете класс с контекстом

    class MyShopViewModel : INotifyPropertyChanged
    {
     // Выбранный элемент, для которого будем отображать модальное окно
      public object SelectedItem {get;set;}
    }


    Где то в коде, где открывается модальное окно, например в методе ShowObjectEditor делаете:
    public void ShowObjectEditor()
    {
      // создаем окно с редактором объекта БД
      var objectEditor = new ObjectEditorView();
      // Устанавливаем ему DataContext, Где myShopViewModel - Объект класса MyShopViewModel
      objectEditor.DataContext = myShopViewModel;
      // показываем окно
      objectEditor.Show();
    }

    В разметке ObjectEditorView
    <Window>
      <ContentPresenter Content="{Binding SelectedItem}"/>
    </Window>

    Но ContentPresenter не знает как его показывать, вот тут и открывается ответ на Ваш вопрос: для каждого типа данных пишете DataTemplate в ресурсах окна, у меня есть два типа - продукты и заказчики, и разметка приобретает вид
    <Window>
      <Window.Resources>
        <ResourceDictionary>
         <DataTemplate TargetType={x:Type Product}>
          // вот тут и описываем чекбоксы и прочую хрен.
         </DataTemplate>
         <DataTemplate TargetType={x:Type Consumer}>
          // вот тут и описываем чекбоксы и прочую хрен.
         </DataTemplate>
        <.ResourceDictionary>
      <.Window.Resources>
      <ContentPresenter Content="{Binding SelectedItem}"/>
    </Window>

    Теперь для каждого типа данных автоматом подтянется своя разметка и располагаться это будет в одном окне.
    Что не понятно - спросите в комментариях.
    Ответ написан
    4 комментария
  • Моделирование в Unity3D, "лепка" объектов на рамках класса Mesh!?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Стандартных средств для моделирования нет, нужно самому всё писать или брать плагин.

    Посмотреть исходники можно с помощью декомпилятора, берите dotPeek или .NET Reflector и вперёд. Всё посмотреть не получится, Terrain и TerrainData написаны на сях, и их исходники можно достать только у разработчиков, но вот TerrainInspector и HeightmapPainter можно, там используются рейкасты по колладеру террэйна:
    public bool Raycast(out Vector2 uv, out Vector3 pos)
    {
        RaycastHit hit;
        Ray ray = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition);
        if (this.m_Terrain.GetComponent<Collider>().Raycast(ray, out hit, float.PositiveInfinity))
        {
            uv = hit.textureCoord;
            pos = hit.point;
            return true;
        }
        uv = Vector2.zero;
        pos = Vector3.zero;
        return false;
    }

    Насколько я понимаю, в террейне не модифицируются вершины напрямую, он использует текстурные карты, а полученные координаты используются для рисования по карте высот, из которой потом строится меш.

    Короче говоря, есть несколько вариантов реализации. Для поиска точки приложения можете повесить мешколлайдер на свою геометрию и рейкастить по нему. Либо можете рейкастить по геометрии с помощью математики, в случае со сферой можно много где сэкономить. Для изменения меша вам нужна карта высот, по которой вы с нуля создаёте меш и не беспокоитесь о геометрии. Как вариант, можете написать структуру данных, которая сумеет находить соседние вершины, тогда сможете работать с существующим мешом. В принципе, одно другому не мешает.
    Ответ написан
    1 комментарий
  • Что изучать дальше JavaScript?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Вы должны начать программировать. То что вы прочитали пару книжек и прошли курс еще не делает вас специалистом. Больше читать ничего не надо, сядьте уже и напишите что-то. Начините например с собственного сайта, займитесь фрилансом, попробуйте найти работу.
    Ответ написан
    6 комментариев
  • Какое событие генерируется при добавлении файлов в папку?

    AnnTHony
    @AnnTHony
    Интроверт
    Собственноручно написанный поможет.

    Смотреть дату/время последнего изменения и сравнивать с предыдущим ->
    если отличается, то сравнить количество файлов в папке до и после ->
    если отличается, то просканировать названия файлов и найти различия -> обновить список файлов

    На худой конец и Google отлично справляется с этим вопросом, например: FileSystemWatcher
    Ответ написан
    Комментировать
  • Каков путь джуниора?

    TwerTrue
    @TwerTrue
    Молодой и неопытный разработчик
    Путь не простой это уж точно, самое главное это подход к обучению.
    Ответ написан
    Комментировать
  • Какие существуют фреймворки на C#?

    ImmortalCAT
    @ImmortalCAT
    C# loving
    а зачем тебе другие?)
    эт как с древнегреческой мифологией, богов дафига, а главный всё равно Зевс :)
    Ответ написан
    Комментировать
  • Каков путь джуниора?

    opium
    @opium
    Просто люблю качественно работать
    Вот раньше мы читали книги, это всегда срабатывало.
    Ответ написан
    Комментировать
  • Каков путь джуниора?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    читать книжки, больше кодить. Прочитал - попробовал.
    Ответ написан
    Комментировать
  • Unity3D API - как выучить?

    titov_andrei
    @titov_andrei
    All my life I learn - and die a fool!
    Все нудно написано и разбросанно

    Это так кажется потому, что нет конкретной задачи или проблемы при создании проекта. Начните с чего-нибудь создавать свой проект и после того как упрётесь в "незнание/непонимание", то искать будете информацию целенаправленно.
    Ответ написан
    Комментировать
  • Unity3D API - как выучить?

    TwerTrue
    @TwerTrue
    Молодой и неопытный разработчик
    C# Game Programming Cookbook for Unity 3D

    Beginning 3D Game Development with Unity 4, 2nd edition

    Вот что я отыскал по Unity 3D но всё на английском, возможно ты найдёшь книги и на русском
    Ответ написан
    Комментировать
  • Есть ли книга (гайд) по введению в разработку 3D игр для бывалых в других сферах программистов?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Книг вроде «Разработка игр для нечайников» нету, подразумевается, что продвинутые программисты будут либо читать мануалы к технологиям, которые они собираются использовать, либо исходники того проекта, к которому их подключили. Для начала, я бы посоветовал пробежаться по статьям в википедии, чтобы узнать некоторые термины и поднять эрудицию. Потом можете почитать Game Programming Patterns, в ней описаны некоторые частые проблемы и их каноничные решения. Кроме того, есть более хардкорные книжки, с узкоспециализированными темами, но их тоже может быть полезно полистать:
    Graphics Gems
    GPU Gems от nvidia
    Game Programming Gems
    А когда надоест читать, попробуйте сделать пару-тройку простых примитивных игр: платформер, стрелялку, гоночки. На практике учиться проще.
    Ответ написан
    Комментировать
  • Почему не работает foreach?

    lasalas
    @lasalas
    .NET Architect
    Ответ написан
    Комментировать
  • Какие крупные компании России работают с C#?

    В газпроме есть проекты на C#
    Ответ написан
    Комментировать
  • Какие крупные компании России работают с C#?

    kn1ght_t
    @kn1ght_t
    скб контур
    Ответ написан
    Комментировать
  • Какие крупные компании России работают с C#?

    newross
    @newross
    Product owner
    А вы хотя бы hh.ru открывали?
    Компании, которые постоянно набирают .Net разработчиков:
    - банки Deutsche Bank, Tinkoff, Промсвязьбанк;
    - продуктовые компании Custis, Abbyy, периодически у Яндекса вакансии мелькают и еще куча других компаний;
    - интеграторы Техносерв, Астерос, Nvision и другие.
    - аутсурсеры, десятки их.
    Ответ написан
    Комментировать
  • Есть ли более красивое решение для реализации такой системы?

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

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

    1. Есть либы доступные только в C#.
    2. Возможно используются облака Microsoft.
    3. Тонны сахара.
    4. Супер IDE.
    5. Красивое асинхронное программирование.
    6. Проще взаимодействовать с С++.

    Есть инфа, что C# работает по шустрее Java.
    Ах да, вы сразу получаете приложение под все платформы, а не только под андроид.
    Ответ написан
    2 комментария
  • Можно ли неуправляемо создавать потоки?

    Nipheris
    @Nipheris Куратор тега C#
    Теоретически, раз вы создаете форму в том же потоке, в которым с ней работаете - то все нормально, другой вопрос - зачем это делать и чего вы этим добиваетесь. В 98% GUI-приложений весь интерфейс находится в одном потоке и все работает замечательно (если открывается модальное окошко или диалог, оно просто крутит свой собственный цикл сообщений), а вот как раз другие потоки нужны для проведения длительных вычислений и операций ввода-вывода, чтобы GUI-поток не останавливался и мог спокойно и дальше ловить мессаджи от операционки на перерисовку и пользовательские действия. Так что если это не эксперимент в вакууме, то нужно основательно подумать, зачем вам такие финты - управлять несколькими гуевыми потоками нужно очень аккуратно.
    Ответ написан
    2 комментария