• Как развиваться новичку в c# и направлении разработки приложений под win?

    DaniPy: >какие-то слишком примитивные алгоритмы вы сейчас рассказали
    Да, примитивные, поэтому я и сказал - базовые. То есть те, которые нужны везде и всегда, во всех программах. А графы, поиск пути и пр. - мало кому нужны, в том смысле, не так много проектов, где нужны эти графы, поиск пути, и т.п. Но их изучать нужно, конечно же, это в большей части - фундаментальные знания.
    А как изучать - я сказал в моём предпредыдущем сообщении (про Стивена Скиену). Всё дальнейшее я сказал, чтобы поделиться своими мыслями.
  • Есть ли научно-фантастические книги с обоснованием событий на уровне "Марсианина"?

    И ещё один момент - книга подростковая, основная аудитория - дети от 13 до 18, поэтому, во многом книга идеализирована. Но я прочитал с великим удовольствием!
  • Есть ли научно-фантастические книги с обоснованием событий на уровне "Марсианина"?

    Обязательно почитайте Горькавого. Это известный учёный, доктор физ-мат наук, книгу написал именно для того, чтобы популяризовать науку. Его книги - на 100% твёрдая НФ (за исключением научных взглядов автора - они исследуются, но не проверены, да тех фантастичных мыслях о гравитации - но опять же - так может и быть правда, пока не исследовано). Единственно, что я вспомнил - про шаровую молнию в руке...
    Конечно, книга в основном - о социальщине (иначе книга станет справочником, как у Ясинского, которого я люблю :) ), но у него огромная часть книги точно, достоверно и очень красиво рассказывает о современных точных науках.
    Рекомендую.
  • Unity: NullReferenceException: Object reference not set to an instance of an object в чём ошибка?

    WalloutDay: Возьмите OnTriggerStay2D вместо OnTriggerEnter2D, он будет вызываться каждый кадр. Поставьте только, пора ли кусать (сделать простейший таймер, уже прошло время кусания, или нет).
  • Unity: NullReferenceException: Object reference not set to an instance of an object в чём ошибка?

    а, и ещё - вы пишете код в методе void Awake(). В нём ещё нет других объектов и других компонентов этого же объекта. В Awake можно писать код для этого объекта (или к статическим методам других объектов). А если вы хотите получить к другому объекту - то делайте код в Start (если вообще это нужно).
  • Как развиваться новичку в c# и направлении разработки приложений под win?

    DaniPy: а с php - во-первых, выберите язык, какой будете изучать, не нужно прыгать. Через полгода-год можно будет попробовать другой язык. Лично я рекомендую начать с c#. На php потом будет очень легко перейти, если понадобится, а вот из php в c# сложнее. Если вы привыкнете, что в php нет типов данных (на самом деле - они есть, но могут меняться), то потом будет сложно перейти к большинству других языков. А вот если вы научитесь c#, то и в php вы будете писать так, как будто у переменной есть неизменяемый тип данных, и код будет заметно лучше. А когда возможности php позволяют использовать динамические возможности, то их и нужно использовать, где надо. В C# тоже есть динамические типы данных (dynamic), но их почти никто нигде не использует, кроме редких требований задачи.

    А во-вторых, как вы говорите, "техническая сторона" - это и есть программирование. То, что я говорил про алгоритмы - они универсальные, везде и во всех языках одинаковы. Учитесь не только писать код, но и думать, как лучше сделать этот код. Я писал об этом в ответе.
  • Как развиваться новичку в c# и направлении разработки приложений под win?

    DaniPy: Про алгоритмы - попробуйте почитать книгу Скиены - www.ozon.ru/context/detail/id/6290126/. Если будет сложно - то ничего сильно страшного, на самом деле, алгоритмы делятся на базовые и специальные. Базовые алгоритмы очень простые, нужно разобраться с ними, а специальные будут тогда, когда понадобятся (если понадобятся вообще).
    Базовые алгоритмы:
    1) Условия. Циклы, типы циклов. Когда какой тип цикла лучше использовать (for, while/do-while, foreach).
    2) Массивы, динамические массивы. Разобраться, зачем нужны массивы, списки (int[] и List), когда какой лучше использовать. Что такое словарь и зачем нужен (Dictionary).
    3) Обработка массивов. Поиск элемента массива, мин, макс, сумма. Сортировка. Язык C# уже имеет функции для этих вещей (особенно LINQ), но вам нужно научиться, как это делать циклами.
    4) Функции. Зачем нужны функции. Нужно разобраться, когда лучше делать маленькие функции (1-3 строчки кода), а когда можно большие (5-10 и более строчек кода). разобраться с рекурсивными функциями.
  • Как развиваться новичку в c# и направлении разработки приложений под win?

    А что с php? Берите фреймворк по желанию - и вперёд. Лично я люблю Symfony.
  • Веб приложение на Symfony Components, как правильно?

    Alexander: кстати, тот же PhpStorm умеет генерить геттеры с сеттерами, то есть, для вас останется ещё меньше работы.
  • Веб приложение на Symfony Components, как правильно?

    Alexander: да, верно. Доктрина берёт на себя всю "грязную" работу с БД. От вас только сделать классы моделей и указать метаданные полей (проще всего прямо в аннотации класса сущности).
    /** @Entity */
    class Person {
        /** 
         * @Id 
         * @Column(type="integer") 
         * @GeneratedValue 
         */
        private $id;
    
        /** 
         * @Column(type="string") 
         */
        private $firstname;
    
        /** 
         * @Column(type="string") 
         */
        private $lastname;
    
        public function getId() {
            return $this->id;
        }
    
        public function getFirstname() {
            return $this->firstname;
        }
    
        public function setFirstname($firstname) {
            $this->firstname = $firstname;
        }
    
        public function getLastname() {
            return $this->lastname;
        }
    
        public function setLastname($lastname ) {
            $this->lastname = $lastname ;
        }
    
        public function getFullname() {
            return $this->firstname . ' ' . $this->lastname;
        }
    }


    А Twig сам умеет понимать геттеры и сеттеры, и там достаточно написать {{ person.fullname }}
  • Веб приложение на Symfony Components, как правильно?

    Alexander: Компонент ClassLoader не обязателен, композер справится не хуже, особенно если использовать флаг -o. Разница в том, что ClassLoader умеет писать классмап в кэш ApcCache.

    И всё-таки, если уж берёте ORM, то возьмите Doctrine2, а не Propel. "Попробовав раз, ем и сейчас" (с)
  • В каком порядке учить c# по тролсену?

    Max Suprunenko: Вопрос хороший. Предлагаю порассуждать об этом.

    С одной стороны, фронтенд фреймворки с точки зрения c#, asp.net и всей платформы - отдельный язык, отдельная технология, без которой сайт можно сделать, и сделать хорошо.
    С другой стороны, хорошему сайту рано или поздно (чаще рано) захочется добавить какие-то функции, которые можно сделать только на js. И тогда у вас получится часть проекта выполнена на c#+html+css, а часть - js+html+css. Тогда, если проект большой, то есть смысл разделить на фронтенд и бэкенд, и проект получится логичнее и удобнее - c# будет работать с бизнес-логикой, а внешним видом будет заниматься js, который лучше для этого заточен. C# вообще не будет знать про html и css, и будет заниматься тем, чем он отлично подходит - логика и базы данных. Но если так разделять, то логично использовать один из трендовых фреймворков.

    Итак.
    Можно ли сделать даже большой сайт на asp.net без фреймворков? Да!
    Нужно ли обязательно изучать новую платформу? Нет!
    Использование js-фреймворка усложнит проект? Да!
    На большом проекте сделает ли js-фреймворк логичнее и легче для разработки и поддержки? Да!
    Но любому разработчику нужно знать js? Нет!

    Итак, если вы хотите развиваться в веб-разработке, либо одному, либо в фронтенде - то однозначно нужно изучать. А если вы хотите больше развиваться в не-веб проектировании, или пусть и разработка сайтов, но с бэкенд-части, то нет. Объять всё невозможно, не стоит разделяться на разные несвязанные сферы.
  • Как установить привязку к UserControl от вьюмодели?

    lexxpavlov
    @lexxpavlov Автор вопроса
    Вот так пришлось создать привязку:
    <Window x:Name="Wnd" ...>
    ...
    <local:MageControl Grid.Column="0" DataContext="{Binding Red}" Turn="{Binding DataContext.Turn, ElementName=Wnd}"/>
  • Как установить привязку к UserControl от вьюмодели?

    lexxpavlov
    @lexxpavlov Автор вопроса
    Похоже на правду. В Output написано:
    System.Windows.Data Error: 1 : Cannot create default converter to perform 'one-way' conversions between types 'TinyMages.Characters.Mage' and 'System.Int32'. Consider using Converter property of Binding. BindingExpression:Path=; DataItem='Mage' (HashCode=59561931); target element is 'MageControl' (Name=''); target property is 'Turn' (type 'Int32')
    System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='TinyMages.Characters.Mage' BindingExpression:Path=; DataItem='Mage' (HashCode=59561931); target element is 'MageControl' (Name=''); target property is 'Turn' (type 'Int32')

    Странно, я думал, что биндинг ведёт на датаконтекст текущего рут-элемента (Window или UserControl). Раньше я изменение контекста видел в элементе DataTemplate в .

    Вот так пришлось создать привязку:

    ...

    Но так некрасиво как-то получилось. Через {RelativeSource FindAncestor} не удалось достучаться до родительского контекста.
  • Какие книги почитать для быстрого перехода с PHP на C# (срок 3-5 дней - это ~50 стр. + практика)?

    Вадим Егоров: когда запятые стоят по правилам (как здесь), то за них не нужно извиняться. Слишком многие не заморачиваются ими.
  • C# WPF нажатие кнопки при нажатии enter?

    то в том же обработчике KeyDown проверяете, что было нажато. Если то, что нужно (Enter, Esc, F1, пр.) то делайте нужное для нажатой клавиши. Обработчик KeyDown будет запущен для каждой клавиши, а что с ними делать (и нужно ли), то вы сами в коде делайте, что надо (вызывайте другие кнопки, ставьте тексты, меняйте цвет, и пр.). Кстати, для выбора клавиши удобнее будет использовать switch вместо кучи if.
  • C# WPF нажатие кнопки при нажатии enter?

    libera: Enter будет работать в любом текстовом поле (TextBox, например). А если у вас нет текстовых полей, или хотите обрабатывать Enter и вне полей, то создайте событие KeyDown у окна, и в нём пишите, что хотите (правда, нужно проверить, какая клавиша была нажата).