Задать вопрос
  • Хорошая ли идея использовать ChatGPT как личного репититора для изучения, например проектирования архитектуры ПО и Тестирования?

    @ViX_EL Автор вопроса
    Разве работа в опытной команде в этот список не входит, чтобы делать конкретные хорошо сформулированные задачи более опытными коллегами и понимать почему такие решения по ходу работы? Статьи часто читаю, а вот книги нет. Сыграло во мне что задать вопрос ГПТ быстро, а книгу читать долго.
    Есть какие книги, курсы, которые можете посоветовать по тому, как научиться проектировать?
    Написано
  • Хорошая ли идея использовать ChatGPT как личного репититора для изучения, например проектирования архитектуры ПО и Тестирования?

    @ViX_EL Автор вопроса
    Может быть можно найти качественный курс, но когда мне его проходить? На работе? У меня довольно неприятный график работы, такие себе условия для развития. Но это уже чуть другая история.
    Есть что на примете, где посмотреть лучше?
    Написано
  • Хорошая ли идея использовать ChatGPT как личного репититора для изучения, например проектирования архитектуры ПО и Тестирования?

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

    у тебя банальная нехватка практического опыта
    - здесь тоже согласен, т.к. столкнулся с ситуацией, когда мой код стал не готов к добавлению нового функционала, а потом я упрямо начал пытаться в srp, плохо понимая как достаточно разделить ответственность и какие именно компоненты нужны, на что потратил много времени, и моя работа перестала приносить быстрые результаты. И нет более старших колег, которые бы поставили бы наиболе точную формулировку конкретной узкой задачи, чтобы я сам пришел к правильному решению и не шел бы не верным путем, или так не бывает и я слишком многого хочу?). А у меня получается что я ответственен за все этапы разработки и задачи сам себе ставлю. В начале это казалось простором для развития, но нет.
    Например было дело когда библиотека читающая excel файлы падала при чтении файлов на нескольких компьютерах пользователей из ~60+ чел, оказывается она подгружала всю информацию по шрифтам в системе, а в папке windows/fonts была скрытая папка mysql и у пользователя не было на неё прав, решалось через консоль. ChatGPT говорил что в windows/fonts не должно быть ничего кроме шрифтов, так что похоже на последствия работы какого-то вируса, а инициализировать данную библиотеку без подтягивания шрифтов сказал что нельзя.
    Потом было ещё когда библиотека, которая проверяет обновления моего приложения и предлагает пользователю установку, оказывается тянула за собой MS WebView2, о чем я узнал только на одном компьютере пользователя с поломаной обновлением виндой и нигде об этом сказано не было, что библиотека тянет WebView2 и только Visual Studio в обзоре nuget пакета показал зависимости (наверно автор хотел добавить поддержку markdown для вывода changelog, но забил и никому не сказал).
    Примерно так я узнал что лучше писать абстракции для таких внешних зависомостей, чтобы можно было их подменять и заменять.

    проблема ГПТ и гугла, для примера - он почти всегда с тобой соглашается. "подтирает" тебе жопку, "ты такой хороший умный, ах как ты догадался итд..." а в ИТ работе эт зло в чистом виде
    - здесь тоже согласен, бесит, по-этому я задаю один и тот же вопрос по-разному и иду гуглить сомнительные части из его ответа. Пришел к примерно такому подходу, пишу примерно как в математических учебниках ставится задача:
    Дано:
    - Примеры исходных данных, например типичное содержимое имен файлов.
    Условия и ограничения входных данных:
    - например максимальное количество обрабатываемых файлов.
    Условия и ограничения применения решения:
    - например сколько раз за сессию работы с приложением требуется применение данной обработки.
    Задача: например группировка файлов документов по номерам документов.
    Вопрос:
    - подходит ли такая структура данных для задачи, например trie (префиксное дерево)

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

    Из полезного что прям хорошо может ГПТ, так это анализ огромных текстовых файлов (десятки миллионов символов и точно не знаю сейчас какой там предел) и изображений, например больших логов или har файлов для реверса, изучения api или помощь в настройке и починке линукса (хотя последенее не всегда хорошо, особенно с недостатком собственных знаний, но тут как и везде).
    Написано
  • Какой самый быстрый способ поиска файлов на сетевом диске?

    @ViX_EL Автор вопроса
    VoidVolker, я пробовал так же выполнять EnumerateDirectories для поиска в конкретных подпапках, но это тоже долго, но не уверен правильно ли я всё делал, EnumerateFiles я пробовал выполнять AsParallel() и без и с Where, пробовал поиск конкретных файлов по-одному, но тоже долго
  • Какой самый быстрый способ поиска файлов на сетевом диске?

    @ViX_EL Автор вопроса
    У меня есть доступ только к сетевому диску, как к сетевой папке. Свой код я тестировал, долго работает именно EnumerateFiles применительно к сетевому диску и я не знаю как сделать поиск быстрее, сейчас этот процесс занимает от 2 до 15 минут, причём я не понимаю от чего зависит время поиска, я не нагуглил способа лучше, кроме идеи как-то через терминал использовать поиск проводника
  • Как правильно сделать программную проверку качества соединения с сайтом?

    @ViX_EL Автор вопроса
    historydev, мне нужно соединение с конкретным сайтом проверять, проблема в специальном vpn, без которого пользователи не могут взаимодействовать с сайтом. Пинг есть и с включенным vpn и с выключенным, а вот ответы на запросы от сервера приходят только со включенным vpn.
  • Как правильно сделать программную проверку качества соединения с сайтом?

    @ViX_EL Автор вопроса
    Как минимум хочу проверять наличие соединения с сервером.
  • Как правильно сделать программную проверку качества соединения с сайтом?

    @ViX_EL Автор вопроса
    VoidVolker, пишу загрузку документов и данных на сайт при помощи playwright, сайт часто грузится плохо, само интернет соединение не кабельное, скорость маленькая, vpn может переставать работать, как минимум стоит сообщать пользователю о том, что нужно перезапустить vpn и проверить интернет соединение.
  • Как достать текст из блока в dwg файле при помощи библиотеки libredwg?

    @ViX_EL Автор вопроса
    А как мне это использовать в моём C++ проекте,что мне нужно искать?
  • Как отключить автоматическое завершение работы браузера при выходе из функции в Playwright?

    @ViX_EL Автор вопроса
    Данила, В приложенном вами коде browser и page объявлены как не принимающие null значения, а их инициализация происходит в отдельном методе, а не в конструкторе, компилятор будет кидать ворнинги, хотя и конструктор async не объявить, т.к. он не может ничего возвращать, как это правильней написать? Я сделал эти поля класса принимающими null, чтобы сделать отложенную инициализацию в методе, но компилятор мне везде, где используется page пометил как ворнинг, что он может принимать null.
  • Как отключить автоматическое завершение работы браузера при выходе из функции в Playwright?

    @ViX_EL Автор вопроса
    Спасибо, это именно то, что я хотел сделать, действительно забыл вынести browser в поля класса. А почему playwright не надо выносить как поле класса?
  • Как автоматически загрузить документы на сайт, используя selenium или что-то похожее?

    @ViX_EL Автор вопроса
    Вот ещё пример: мне нужно проверить наличие элемента на странице, но это работает только через отладчик или thread.sleep перед вызовом функции
    //Thread.Sleep(3000);
    IWebElement? existedRegistry = driver.FindElements(By.XPath("//td[text()='" + currentRegistryNumber + "']")).FirstOrDefault();
    if (existedRegistry != null) 
    {
        existedRegistry.Click();
        return;
    }
  • Как автоматически загрузить документы на сайт, используя selenium или что-то похожее?

    @ViX_EL Автор вопроса
    Дошел до того, чтобы игнорировать исключения, но похоже и это работает не очень:
    using IWebElements = System.Collections.ObjectModel.ReadOnlyCollection<OpenQA.Selenium.IWebElement>;
    public static class WebDriverExtensions
    {
        public static IWebElement FindElement(this IWebDriver driver, By by, double timeoutInSeconds)
        {
            if (timeoutInSeconds > 0)
            {
                var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
                return wait.Until<IWebElement>(drv => {
                    try
                    {
                        return drv.FindElement(by);
                    }
                    catch
                    {
                        return null;
                    }
                });
            }
            return driver.FindElement(by);
        }
    
    // Похоже это работает не так, как мне бы хотелось
        public static IWebElements FindElements(this IWebDriver driver, By by, double timeoutInSeconds)
        {
            if (timeoutInSeconds > 0)
            {
                var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
                return wait.Until<IWebElements>(drv => {
                    try
                    {
                        return drv.FindElements(by);
                    }
                    catch
                    {
                        return null;
                    }
                });
            }
            return driver.FindElements(by);
        }
    }


    private void ClickOnElement(By by, double timeoutInSeconds)
           {
               IWebElement? element = driver.FindElement(by, timeoutInSeconds);
               if (element != null)
               {
                   var fluentWait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
                   fluentWait.Until(webDriver =>
                   {
                       try
                       {
                           element.Click();
                       }
                       catch (Exception ex)
                       {
                           if (ex is StaleElementReferenceException ||
                               ex is StaleElementReferenceException ||
                               ex is ElementClickInterceptedException)
                           {
                               return false;
                           } 
                           else
                           {
                               throw;
                           }
                       }
                       return true;
                   });
               }
           }
  • Как достать текст из блока в dwg файле при помощи библиотеки libredwg?

    @ViX_EL Автор вопроса
    Иван, не знал ничего про это, спасибо, почитаю.
  • Как увидеть русские символы в обычной строке в отладчике Visual studio?

    @ViX_EL Автор вопроса
    res2001, Мне нужно данные из dwg записать в xlsx, я перебрал 2 библиотеки для записи в xlsx и обе работают только с std::string или char* в utf-8. Для возможности отладки я прибегнул к wstring, теперь мне нужно конвертировать обратно, просто может я изначально мог без этих преобразований обойтись? Более того, если записываемая строка не в utf-8, то запись в xlsx нормально не производится, значит и исходники, в которых я пишу строки с использованием русских символов, мне приходится преобразовывать в utf-8 кодировку.