Задать вопрос
  • Как отследить состояние светофора?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    С некоторой периодичностью брать снимок с камеры. Кропать его в известном месте (само "табло"). Пробегая по пикселам искать наиболее яркие участки и классифицировать относительно искомых эталонных цветов (красный, желтый и зеленый) удобным способом (допустим, искать кратчайшее расстояние в трехмерном пространстве RGB). Всё.

    Учитывая, что нам известны все параметры и изображение будет +/- одинаковое, то не нужны тут никакие нейросети, оценка формы и всего такого. Даже оценка в динамике не нужна.
    Ответ написан
    4 комментария
  • Умный дом и IoT - насколько эта тема реально интересна сейчас в России?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Чтобы стало интересно - это дело маркетинга. Сама тема умного дома действительно интригует, это видно из количества ардуинщиков/распберрипишников на ютубе, которые что-то пытаются сами мастерить.

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

    Выходит, реально что-то годное делают специальные фирмы - на заказ и задорого. Либо люди сами мастерят, если навыки позволяют.
    Ответ написан
  • GIT можно ли перезаписывать файл, а не накатывать?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Нельзя. Но можно:
    git filter-branch --tree-filter 'mv -f new_file.png old_file.png' -- --all
    Ответ написан
    Комментировать
  • Зачем использовать бессмысленные сеттеры/геттеры?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Когда вам потребуется добавить в сеттер валидацию, а в геттер - кэширование, то не придется менять вызовы в клиентском коде. К тому же, аксессоры можно делать виртуальными.

    IDE прекрасно генерирует такой код, равно как и он сам легко оборачивается в макрос. Многие компиляторы так же имеют языковые расширения, позволяющие реализовать properties в C++.
    Ответ написан
    Комментировать
  • Запуск Windows приложений в Linux через Wine?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    В случае управляемых приложений вам нужен не Wine, а Mono, который достаточно неплохо поддерживает .NET Framework 4.0.
    Ответ написан
  • Сколько памяти занимает int в C?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Нужно взять 64-битный компилятор и компилировать с флагом -m64.
    Например:
    gcc -m64 -o exmaple64 example.c
    Ответ написан
    Комментировать
  • EF Core, many-to-many, репозиторий без lazy loading?

    @Free_ze Автор вопроса
    Пишу комментарии в комментарии, а не в ответы
    В общем, приходится для репозитория каждого нетривиального типа переопределять методы, предварительно подынклуживая все необходимые зависимости.
    К сожалению, не нашел возможности написать такой универсальный BaseRepository.Set { get; }, чтобы переопределять (и доинклуживать зависимости) необходимо было только в него.

    С many-to-many опять инопланетяне непричем, а я плохо читал документацию дело решается следующим образом:

    _context.Posts.Include(p => p.PostTags)
                      .ThenInclude(pt => pt.Tag);

    Больно, но жить можно. Благо, что операций в базовом репозитории не так уж много.
    Ответ написан
    Комментировать
  • Пишу таск-менеджер на ASP.NET. Как реализовать подсчёт времени выполнения задачи?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Не нужно хранить в базе ActualPerformanceTime, т.к.
    1. значение будет пересчитываться при каждом новом запросе
    2. оно должно допускать разрывы (паузы)

    Можно каждой таске сопоставить таблицу один-ко-многим с временными отрезками:
    class MyTimeSpan {
        public int Id { get; set;}
        public DateTime From { get; set; }
        public DateTime? To { get; set; }
    
        public int TaskId { get; set;}
        public Task Task { get; set;}
    }

    При старте MyTimeSpan.To остается null, при Stop или Pause - отрезок "закрывается". Если хоть один отрезок не закрыт, то таска находится в прогрессе (Task.TaskStatus не нужен. Тем более, что название свойства - тавтология).
    Ответ написан
    Комментировать
  • Переопределение типа class, в чём проблема?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Или это VS гребет?

    Очень вряд ли)

    1. Не нужно инклудить файлы исходного кода (*.cpp). Объединением объектных файлов в один исполняемый занимается линкер, список файлов для него у вас в *.cproj-файле и так есть.
    2. Содержимое хэдеров нужно оборачивать в include guards или в начале писать директиву компилятора #pragma once (это понимают все популярные современные компиляторы). Такое действие не даст несколько раз заинклудить один и тот же хэдер в одной единице трансляции.
    Ответ написан
    5 комментариев
  • Как можно подключать плагины к приложению на java?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Нужно написать гуишное приложение с возможностью подключать модули (то есть плагины). Причём программа не должна перезапускаться при их подключение (должно всё применяться сразу же).

    Java по счастливому стечению обстоятельств умеет подгружать классы динамически:
    // Где-то там, где реализуется плагин 
    class MyClass implements MyPluginInterface {}
    
    // У нас тут, в модульной софтинке
    try { 
        Class c = Class.forName("com.vasyapupkin.MyClass"); 
    } catch (ClassNotFoundException e) {
        // log error
    }

    Затем, посредством рефлекшна, вы можете создавать экземпляры вашего типа:

    MyPluginInterface plugin = (MyPluginInterface) с.newInstance();


    При подключении плагина будет изменяться главная форма программы, то есть будут появляться какие-то кнопки, поля и прочее.

    Ваша софтинка должна как-то отслеживать появление файлов. В простейшем случае - ждать появление файлов где-то по classpath, чтобы попытаться выудить новые классы. В простейшем случае классы могут быть наследниками GUI-компонентов (т.е. уметь себя рисовать) и вы можете просто вставлять их экземпляры в заранее известный контейнер.

    ЗЫ Можно делать свой велосипед, но такая технология в Java уже существует из коробки - JavaBeans и, если вы хотите препода довести до экстаза, то стоит копать в этом направлении.
    Ответ написан
    4 комментария
  • Как перестать кодить и начать программировать?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Если нужно продолжить какой-то свой старый, небольшой проект, то я скорее перепишу его с нуля, чем разберусь в своем же коде.

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

    Читайте/смотрите "Clean code", ищите блоги разработчиков, какие-то мелкие проекты на гитхабе. Красная дорожка (в терминах передачи "Умники и умницы") - это найти open-source проект и попытаться там пофиксить баг/добавить требуемую фичу. Конечно, это будет сложно. Но если вы справитесь, то это +1000 к опыту.
    Ответ написан
    Комментировать
  • Как из БД вытащить файл?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Имеющий руки да загуглит!

    public ActionResult Index()
    {
        byte[] contents = GetPdfFileData();
        return File(contents, "application/pdf", "test.pdf");
    }
    Ответ написан
    2 комментария
  • Как заменить блок html текста?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    то есть экранируются двойные кавычки...

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

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

    Убедитесь, что он заменяемое значение действительно там содержится. HtmlAgilityPack вполне может оптимизировать HTML (тот, который из OuterHtml), скажем, вырезать пробелы и/или переводы строки.
    Если вы работаете с DOM-парсером, то нужно не изобретать велосипеды, а пользоваться его API:
    string htmlTag = "<foo>bar</foo>";
    var newNode = HtmlNode.CreateNode( htmlTag );
    img.ParentNode.ReplaceChild(newNode, img);
    Ответ написан
    Комментировать
  • Как задать кастомное называние для foreign key поля?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    https://msdn.microsoft.com/en-us/library/jj591620(...
    modelBuilder.Entity<Course>() 
        .HasMany(t => t.Instructors) 
        .WithMany(t => t.Courses) 
        .Map(m => 
        { 
            m.ToTable("CourseInstructor"); 
            m.MapLeftKey("CourseID"); 
            m.MapRightKey("InstructorID"); 
        });
    Ответ написан
    Комментировать
  • Как построчно сравнить код?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Ответ написан
    Комментировать
  • Вопрос по требованиям к реализации?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    1) Использовать файл конфигурации приложения для User-specific настроек

    Рядом со сборкой (MyApplication.exe или MyApplication.dll) можно положить XML-файл настроек (MyApplication.config), который будет влиять на конкретный экземпляр сборки. Можно почитать об этом у Рихтера (в главе про разветывание сборок) или в документации, там же есть XML-схема.
    Кроме того, такой Web.config файл есть у каждого ASP.NET-приложения (а у десктопного - App.config) на уровне проекта (не путать с Web.config в папке Views)

    2) Использовать ресурсы для хранения UI-строк

    Все видимые пользователю строковые ресурсы в приложениях принято оборачивать заменять на локализованный эквивалент. Это может быть сервис, в который подставит нужные значения, в зависимости от настроек приложения/языка пользователя и т.п. Грубо говоря, словарь терминов, который выбирает значения из таблицы по значению. Используется что-то вроде:
    <h3>@Localization.Get("Contacts_PageHeader")</h3>
    Извлекать значения, соответственно, из ресурсов.
    Ответ написан
    Комментировать
  • Как задать размер массива через аргументы функции?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    template<size_t N, size_t M>
    int* foo () {
        int tempArray[ N ][ M ];
        //...
    }
    
    // use case
    foo<2, 3>();


    Конечно же вычисление должны быть в compile-time.
    Ответ написан
    Комментировать
  • Как узнать дополнительный код или прямой?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Старший бит же. Установлен - отрицательное число, снят - положительное.
    Ответ написан
  • C#. Как удалить часть строки которая идет после последнего символа, например запятой?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    удалить часть строки которая идет после последнего символа

    aaa = aaa.Substring(0, aaa.LastIndexOf(',') + 1);
    Ответ написан
    Комментировать
  • Порядок изучения C#?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Чем еще дополнить свою библиотеку?

    Что-то про базы данных (MSSQL Server в частности, вроде Виера.Р. "Программирование баз данных MSSQL Server для профессионалов") и о каких-то прикладных технологиях, которыми вы бы хотели заниматься (ASP.NET MVC, WPF и т.п.).
    Для общего профессионального развития неплохо бы почитать что-то про операционные системы (Таненбаум, тот же Рихтер о программированнии под Windows на C/C++) и сети.

    Стоит ли уделять программированию как больше времени, вплоть до 24/7

    Если хотите убить интерес к сфере как можно скорее, то это идеальный план.

    Ну и, да, посмотреть на реальный проект будет вполне полезно для новичка.
    Ответ написан
    Комментировать