Задать вопрос
  • Что такое Duck typing и когда мы можем пройтись по собственной коллекции foreach- ом?

    Я так понимаю, вопрос про то, что для прохода по коллекции через foreach совершенно не обязательно реализовывать IEnumerable - достаточно написать пару методов:
    public class MyEnumerable {
      public MyEnumerator GetEnumerator() => new MyEnumerator();
    }
    public class MyEnumerator {
      // Этот метод должен переходить к следующему элементу, и возвращать true, если переход произошёл,
      // и false, если дальше элементов нет
      public bool MoveNext() => false;
    
      // Это свойство должно возвращать текущий элемент
      public int Current => 0;
    }


    Тогда можно будет засунуть это в форич:
    foreach(int x in new MyEnumerable()) {
      Console.WriteLine(x); // вообще-то мы сюда не попадём, тк Next всегда возвращает false, но синтаксической ошибки нет.
    }

    Изначально это было придумано для того, чтобы не вызывать лишний боксинг элементов при итерации по массивам, тк изначально в С# не было обобщений => не было обобщённого IEnumerable<T>
    Но сейчас этим имеет смысл пользоваться только тогда, когда ты хочешь проитерироваться по ref struct, тк они не могут реализовывать интерфейсы.
    Ответ написан
    9 комментариев
  • ПО gitlab платное?

    Бесплатен даже для коммерческого использования.
    Плата взимается только за дополнительные фичи: https://about.gitlab.com/pricing/
    Набор фичей одинаковый как для SaaS так и при развёртывании у себя.
    При развёртывании на своих серверах, в отличие от SaaS, не будет ограничений по хранилищу и CI/CD Minutes
    Ответ написан
    Комментировать
  • Платформа/движок для сбора обращений граждан?

    vabka
    @vabka Куратор тега Веб-разработка
    Из того что я видел "по простому" - это отслеживать обращения в тех же гуглотаблицах (так например одна партия в нашем городе делает, в рамках своего проекта помощи гражданам)
    А принимать их через гугл-формы или по почте.

    Ещё вариант - поднять какой-нибудь багтрекер (youtrack например. Он вроде даже бесплатен для некоммерческих организаций) и использовать его для обращений :)
    Если что, процесс можно подкорректировать, чтобы он соответствовал тому, как обрабатываются обращения.

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

    Выделяешь строки, которые нужно закомментить и жмёшь "Toggle Line Comment"
    Аналогично чтобы раскомментить
    Ответ написан
    Комментировать
  • Русский текст, набранный английскими буквами на c#?

    С учётом того что кодировки и раскладки клавиатур бывают разные - проще всего сделать через dictionary.
    И нет, с помощью ascii нельзя, даже если предположить что используется 1251 и какая-нибудь типичная раскладка
    Ответ написан
    1 комментарий
  • В чем практическая разница между PUT и POST?

    PUT - идемпотентный (браузеры и прокси считают, что такой запрос повторять безопасно)
    POST - неидемпотентный (наоборот)
    Остальное уже зависит от реализации.

    Часто встречается такое поведение:
    PUT - изменение всех полей объекта или создание объекта с заранее известным id
    POST - создание нового объекта (при неизвестном id) или вызов какой-то процедуры

    В принципе, в том что вы не используете PUT нет ничего плохого
    Ответ написан
    Комментировать
  • Как быстро определить ОС (Windows/Linux) при кроссплатформенной разработке на С# .Net 5/6?

    А еще лучше, если есть, какие-то директивы предпроцессора, что бы определение ОС не фигурировало в коде?

    Директивы препроцессора на то и препроцессора, что они только при компиляции проверяются, но можно.
    Вариант раз - RuntimeIdentifier
    Вариант два - объявить своё свойство.

    Если динамически в коде, то можно через OperatingSystem.IsLinux()
    Или через System.Runtime.InteropServices.RuntimeInformation.IsOsPlatform
    Ответ написан
  • Зачем используются вместе #pragma once и header guards?

    Ну как минимум из-за того что Pragma once - это нестандартная директива, и компилятор не обязан её поддерживать.
    Ответ написан
    Комментировать
  • Как установить dotNet core на Armbian (Orange PI) (armhf)?

    .NET SDK через snap доступен только на архитектурах amd64, arm64, и armhf
    sudo snap install dotnet-sdk --channel=6.0/stable --classic


    А .NET Runtime только на amd64, о чём и говорит ошибка

    Либо можно попробовать через dotnet-install:
    https://docs.microsoft.com/en-us/dotnet/core/insta...

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

    Ну тут два варианта:
    Если вы - университет, то просто через рекламу, но кмк большинство проходит аспирантуру тамже, где и степень магистра получали. Ещё можно напрямую к интересующим студентам обращаться.
    Если вы ищите работников - linkedin и hh
    Ответ написан
    Комментировать
  • Как настроить что бы в VS Code внешний терминал открывался в текущей папке?

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

    А чем он не устраивает? Он вроде в win11 вообще является стандартным.

    Но если возвращаться к вопросу, но видимо только костылями, ибо vscode не разрешает прокидывать что-либо во внешний терминал:
    https://stackoverflow.com/a/60794938/14163502

    Хотя может есть ещё какое-нибудь расширение
    Ответ написан
    Комментировать
  • Как работает eSim?

    Нет. eSim - это чип в телефоне, который выполняет ту же работу, что и обычная sim.

    Интернет нужен только для установки приложения оператора и первоначальной настройки esim
    Ответ написан
    Комментировать
  • Почему List/IList не является ковариантным?

    Они не являются вариантными, тк T принимается и на вход (Add), и возвращается в методах (Get).
    А C# в таких ситуациях не разрешает добавлять соответствующие модификаторы.

    Вот с IReadOnlyList такой проблемы нет потому он ковариантен.
    Ответ написан
    Комментировать
  • Как атаки на блокчейн влияют на курс криптовалют?

    Как проведения атаки влияет на курс криптовалюты?

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

    Так и падает курс.

    Не забывай про причинно-следственную связь.
    Курс падает не от роста предложения (массовых продаж), а от падения спроса.
    Тоесть:
    Какой-то чел начинает вертеть рынком как хочет, и сеть от этого ломается
    => люди об этом узнают (параллельно происходит хардфорк с уже другой "правильной" цепочкой)
    => на такую криптовалюту падает спрос
    => Новые покупатели не появляются. Те кто был готов купить дорого уже купили, остались только те кто готов купить дёшево. (просто посмотри как биржевые заявки выглядят - это набор предложений продать за X и купить за Y)
    => Те у кого ещё остались эти никому не нужные фантики - продают их хоть за какую-то цену (ибо что им терять - в новом форке у них те же самые деньги есть.)

    Кстати, деньги остаются и у злоумышленника, просто состояние сети будет "до".
    (если конечно их его намеренно не лишили в этом форке)
    Ответ написан
    2 комментария
  • КАК РИСОВАТЬ ТЕНЬ И СВЕТ В CG?

    Когда-то давно натыкался на yt на канал CG Fish - там человек рассказывает о принципах рисования.
    Там был видос и про свет с тенями.
    (Вкратце - ничем от живописи не отличается, кроме того что это CG, а не краски)

    А кисти выбирай те, какими тебе будет удобнее. Ничего плохого не случиться, если ты будет экспериментировать)
    Выбор кистей больше зависит от стиля, в котором ты работаешь.
    Это могут быть обычные круглые, могут быть с имитацией масла, акварели, карандашей, да хоть спрей.

    А то, какие инструменты вообще доступны в ФШ ты можешь узнать из любых уроков и курсов о ФШ)
    Ответ написан
    Комментировать
  • Как сделать поворот персонажа с помощью Joystick Unity 3D?

    1. Вместо AddForce просто выставлять скорость движения (через RigidBody.velocity) - вот тебе и постоянное движение с постоянной скоростью
    2. Джойстик возвращает значение двух своих осей от -1 до 1 - по ним при помощи школьных формул можно высчитать угол поворота (гугл: как преобразовать декартовы координаты в полярные).

    Но в теории ты можешь просто нормализовать этот вектор, скалярно умножить на скорость, и передавать сразу в velocity и в LookAt, без лишних вычислений

    Но как я смотрю - ты это примерно и делаешь, просто AddForce лишний, кмк.
    Либо наоборот - лишний velocity, ибо документация Unity рекомендует использовать только одно.

    А ещё я не вижу, где выставляется значение _moveSpeed (и чем это отличается от runSpeed).
    Если нигде, то оно будет всегда 0, и персонаж двигаться не будет.

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

    Вот тут: https://docs.godotengine.org/en/stable/
    Но английский всё равно придётся выучить)
    Ориентироваться на книги смысла нет, тк по Godot их просто нет, и они в любом случае устареют ещё до того как их напечатают.
    Ответ написан
    Комментировать
  • Как ведется кроссплатформенная разработка на React и React Native?

    1. Сайт и мобильное приложение - это разные вещи. У них тупо разный UX, даже если сравнивать с мобильной версией сайта.
    2. RN вроде можно какими-то хаками заставить работать в браузере, но см п.1
    Продукт может существовать как без полноценного сайта, так и без мобильного приложения.
    Ответ написан
    Комментировать
  • В каком порядке изучать C# по метаниту?

    И я думаю, что не все темы важны для освоения.

    Как ты это определил?

    Но вообще да. По моему мнению, можно пропустить следующие темы:
    • Глава 13. Многопоточность (но очень желательно не пропускать, ну или хотябы ознакомиться частично)
    • Глава 17. Parallel LINQ (но лучше знать что он существует)
    • Глава 18. Рефлексия (желательно знать, что она есть, и для чего её можно использовать, а для чего нельзя)
    • Глава 19. Dynamic Language Runtime (главное знать, что его лучше не использовать)
    • Глава 21. Работа с файловой системой. (можно пропустить пункт про BinaryFormatter)
    • Глава 22. Работа с JSON (это не является частью языка, но это нужное и используется часто, и эта тема освещена на метаните не достаточно)
    • Глава 23. Работа с XML (не является частью языка, да и используется редко)
    • Глава 24. Процессы и домены приложения (AppDomain больше не существует, но про процессы и загрузку сборок лучше знать, чем не знать)
    • Глава 25. Валидация модели (Не является частью языка, а для валидации лучше использовать FluentValidation)

    Остальное крайне не рекомендую пропускать. Да и то что можно пропустить, в принципе пропускать не желательно, тем более что материала там не много.

    Изучать следует в том порядке, в котором материалы даны, тк они идут в том порядке, в котором будет легче их осваивать (от простого к сложному. И новая тема даётся только после изучения тех тем, без которых понять её будет сложно)
    Ответ написан
    Комментировать