• Верно ли понимаю TPL и асинхронность?

    Nipheris
    @Nipheris Куратор тега C#
    1. Да, задача может исполниться где угодно. Более того, вы не поверите, но некоторые таски вообще могут нигде не исполняться, т.к. исполнять нечего (см. п. 5). Таск - это прежде всего абстракция значения, которое будет получено в будущем, и для получения которого возможно нужно что-то посчитать или просто подождать. См. futures and promises.
    2. Ну не обязательно в новом потоке, может быть выполнится и в существующем потоке если в пуле потоков есть свободный.
    3. Асинхронные операции ввода-вывода называются так потому, что выполняются через асинхронное API операционной системы. Нет никакого смысла использовать асинхронную операцию, но делать это в отдельном потоке созданном специально для этой операции. Потоки нужны прежде всего для того, чтобы эффективно нагружать исполнителей, т.е. процессоры (в том числе разные их ядра).
    4. Можно в новом, можно в потоке из пула. Так или иначе, если операция предполагает именно расчёты, а не ожидание ввода/вывода, то безусловно это тот случай, когда имеет смысл переложить нагрузку на другой поток.
    5. Если представлять таск как одну из сторон "трубы", по которой прилетит результат асинхронной операции, то Task - это принимающая сторона, а TaskCompletiotionSource - передающая (производящая результат) сторона. Когда вы создаёте таск из кода который нужно выполнить, этот код становится передающей стороной. Но Task абстрагирует любую асинхронную операцию, не только ту где нужно долго что-то считать. Возможно вам нужно дождаться одного байтика из сети, и операция будет считаться завершенной. Во всех тех случаях, когда вы хотите самостоятельно "произвести" результат для какого-то таска (а сам таск отдать "наружу" другому коду, например вернуть из функции), вы можете использовать TaskCompletionSource.
    (Кстати, в C++ принимающая сторона называется future, а передающая (производящая) - promise. В JS принимающая сторона называется Promise, а передатчиком является функтор).
    Ответ написан
    1 комментарий
  • Как сделать, чтобы Git перестал перезаписывать группу владельца файла?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Запускайте git от юзера, у которого первичная группа groupname.
    Ну либо вручную потом chmod выполняйте.
    Тут иначе никак - создавая файл (а гит создает файлы), он создается от имени ID и GID текущего юзера/процесса.
    Ответ написан
    Комментировать
  • Как развиваться .NET разработчику?

    Я делаю тоже самое, и тоже 2 года.
    Но вот мне все также интересно, по вечерам читаю книги, на выходных смотрю видео.

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

    1) Род Стивенс - "Алгоритмы. Теория и практическое применение".
    2) Джон Маккормик - "Девять алгоритмов, которые изменили будущее".

    Выучите SOLID (Боб "Принципы, паттерны и методики гибкой разработки"), GOF (банда 4х, хватит https://metanit.com/sharp/patterns/), GRASP (Крэг Ларман - "Введение в объектно-ориентированный анализ, проектирование и интеративную разработку") наизусть, прочитайте книги авторов.

    Работа работой, делайте свое дело.
    А в свободное время учите и читайте то что вечно, или почти вечно - алгоритмы, паттерны и т.п., то что можно применить где угодно и на чем угодно. Не забивайте голову неиспользуемыми фрейворками (приходят и уходят) и другими языками программирования на которые не собираетесь переходить.
    Ответ написан
    2 комментария
  • Как создать макет веб интервейса с базой данных для диплома?

    Да ничего не нужно, в т.ч. и БД.
    Просто тщательно продумываете сценарий показа ну и в js на любом фрейморке рисуете, то что надо. А то и вообще через статичные странички делаете. :-)
    Главное ссылки сделайте правильные.
    Ответ написан
    Комментировать
  • Как отрисовать трек движения?

    tsarevfs
    @tsarevfs
    C++ developer
    Рекомендация 1. Найдите библиотеку для геометрии, если ваша задача не в том чтобы научиться решать задачи вычислительной геометрии. Проверка находится ли точка внутри полигона реализована в каждой первой такой библиотеке.

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

    Рекомендация 3. Если все же пишете геометрию сами, заведите классы для Point, Segment, Polyline, Polygon. Вместо передачи отдельных координат используйте их.

    Рекомендация 4. Функция определения пересечений содержит много делений, и если какой-то из делителей будет близок к нулю, то все будет плохо. Рекомендую посмотреть реализацию http://e-maxx.ru/algo/segments_intersection, где есть проверки на маленький делитель.
    Ответ написан
    1 комментарий
  • Что имеет смысл осваивать если есть желание уйти в "айтишники"?

    Bandicoot
    @Bandicoot
    Вась-программист
    То, что программисты получают 100к. - во-первых, это не такая уж большая зп, при том что деятельность достаточно трудоемкая, подходит не всем и к этой цифре нужно идти долго. Во-вторых, в очень многих профессиях спецы получают столько же и больше, так что это вообще не показатель. Короче, за деньгами - это если в IT, то не в программисты.
    Ответ написан
    21 комментарий
  • Где найти открытый проект на C# для изучения чужого кода?

    NightmareZz
    @NightmareZz
    Нищий разработчик из Симферополя
    Ответ написан
    Комментировать
  • Java ( с либами ) против Node.js, что выбрать для вебсервиса?

    @mr_jumper
    А зачем ему эта асинхронность? Я быначал с требований к системе. Ведь асинхронность можно реализовать разными способами. Например, очередью и обратным вызовом. Маштибороваться легко будет. Все должно идти от бизнес задачи. Тогда не получиться - сделали асинхронность ради асинхронности.
    Ответ написан
    1 комментарий
  • Как реализовать Generic объект из интерфейса?

    NightmareZz
    @NightmareZz
    Нищий разработчик из Симферополя
    public class Repository<T> where T : IDbUpdatable<T>
    {
    }
    
    public interface IDbUpdatable<T> where T : IDbUpdatable<T>
    {
        Repository<T> GetRepository();
        int Update();
        int Delete();
    }
    Ответ написан
    3 комментария
  • В чем мои ошибки в коде?

    Andrey2008
    @Andrey2008
    DevRel в PVS-Studio
    Не знаю касательно корректности алгоритма, но PVS-Studio обнаруживает 4 ошибки, из-за которых уже и так всё работает не так как надо.
    SetOfNumb(int a[]) {
    size = sizeof(a)-1;
    V511 The sizeof() operator returns size of the pointer, and not of the array, in 'sizeof (a)' expression. consoleapplication2017.cpp 37
    Оператор sizeof вычислят здесь размер указателя, а не массива. В результате, переменная size всегда будет равна 3 в 32-битной программе или 7 в 64-битной программе.

    Аналогично здесь:
    size = sizeof(a);
    V511 The sizeof() operator returns size of the pointer, and not of the array, in 'sizeof (a)' expression. consoleapplication2017.cpp 46

    И здесь:
    for (int i = 0, j = 0; i < sizeof(temp.arr); i++) {

    V604 It is odd that the number of iterations in the loop equals to the size of the 'temp.arr' pointer. consoleapplication2017.cpp 88

    Ещё происходит ошибка копирования:
    n = z;
    V1002 The 'SetOfNumb' class, containing pointers, constructor and destructor, is copied by the automatically generated operator=. consoleapplication2017.cpp 140
    Класс SetOfNumb сложный, выделяет память. Но при этом отсутствует operator =. В результате просто копируются члены класса, что приведёт к двойному освобождению памяти.
    Ответ написан
    5 комментариев
  • Разработка Python/Django на Windows?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Во-первых, хардкодить пути - это в целом плохая практика, а в Django особенно. Во-вторых, используя функции из модуля os.path можно писать код работающий с путями кроссплатформенно.
    Ответ написан
    Комментировать
  • Как сделать выполнение метода на контроллере 1 раз в сутки в определенное время?

    @cicatrix
    было бы большой ошибкой думать
    Лучше по cron пусть запускается хранимая процедура в базе.
    Веб сервер запускает ваше приложение только по требованию (когда клиент к нему обращается). Периодически (по умолчанию раз в 20 минут) ваше приложение будет перезапускаться.
    Где гарантия, что ваш код не будет выполнен дважды? Может и не страшно, но кто знает, что в этот код будет добавлено потом?
    Любые сервисные операции необходимо выполнять вне контекста веб-приложения. Веб приложение должно обслуживать клиентские запросы, не более.
    Ответ написан
    Комментировать
  • Не получается сделать динамический указатель?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    В квадратных скобках укажите размер
    class ID3D11Buffer{};//объявим заглушку для примера
    
    using PID3D11Buffer = ID3D11Buffer*;
    using PPID3D11Buffer = PID3D11Buffer*;
    
    int main()
    {
        PPID3D11Buffer* g_pVertexBuffer = new PPID3D11Buffer[42];
    }

    Но вообще с таким подходом вы быстро запутаетесь. Используйте std::vector для массивов изменяемых размеров и std::array для неизменных.
    Если же нужно обязательно объявление new sometype[count], то используйте вместо него en.cppreference.com/w/cpp/memory/unique_ptr/make_unique
    Ответ написан
    1 комментарий
  • Где можно практиковаться в программирование на С++ и Java?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Я не поклонник А. Лебедева, но иногда он говорит правильные вещи. Например, по поводу "Вышлете мне тестовое задание?" Он говорит - "а придумайте его сами!" Так и вообще с задачами. Нужно увидеть задачу. Точнее увидеть, как с помощью программирования вы можете перевести проблему из некоторого нерешённого состояния в решённое. В жизни задача никогда не скажет вам, что "вот она я, задача" и добровольно отдаст своё решение.
    Когда я занимался легкой атлетикой, то думал, что есть два состояния, одно, когда я тренируюсь, а второе, когда я выступаю. Тренер мне объяснил, что состояние только одно - тренировка. Только на соревнованиях выкладываешься больше. Это вообще изменило моё отношение к поиску задач.
    Если вы считаете, что способны решить задачу, то разве вы не способны её придумать? Каждая задача - это проверка своих возможностей, вызов. Если вы не работаете над решением задачи в таком ключе, значит вы неправильно и занимаетесь и работаете, т.к. нет развития.
    Ответ написан
    Комментировать
  • Как защитить API сервиса платного контента?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Запомните пожалуйста: клиент в руках врага. Всегда. Исключений нет. Любая защита может быть только на сервере, на клиенте - только видимость.
    Ответ написан
    4 комментария
  • Как нынче модно проекты с локального сервера на боевой заливать?

    @n-fom
    Continuous Integration
    Ответ написан
    Комментировать
  • Что делать все время хакер шалит в ВК?

    @obg2211
    admin
    в дополнении к первому ответу - включение двухфакторной авторизации во Вконтакте
    https://vk.com/page-59800369_47885415
    Ответ написан
    Комментировать