Задать вопрос
  • Возможно ли сделать сертификат Code Sign физ лицу в 24 году?

    igolets
    @igolets
    Программист C#, MSSQL
    1. Тут вопрос цены. Открыть ИП без движения и т.п. — примерно 50тыр в год, на ИП можно и сертификат организации сделать. Либо делать Comodo, но его только через посредников (в личку могу написать, с кем работал)
    2. Российских удостоверяющих центров, которые выпускают сертификаты подписи кода нет. Я писал запрос в Минцифры, ответили "Возможность выдачи сертификатов подписи кода в данный момент прорабатывается на базе НУЦ". Остаются только иностранные УЦ, из них у нас работают только GlobalSign, у них, вроде, физлицам сертификаты не делают. Остальные через посредников.
    3. Сорян, не знаю. Встречный вопрос — EV физлицам вообще делают? :)
    Ответ написан
  • Почему не открывается после сборки?

    igolets
    @igolets
    Программист C#, MSSQL
    Моя процедура поиска ошибки такая:
    1. Запустить не из студии, а из каталога bin, чтобы убедиться, что студия не влияет на это.
    2. Установить у себя и запустить
    3. Сравнить архитектуру процессора
    4. Сравнить каталог с установленной программой на целевой машине и каталог bin на девелоперской
    5. Посмотреть EventLog на целевой машине, там может быть ругань на отсутствие файла или на ошибку доступа
    6. В program.cs весть код main() обуть в try-catch и показывать содержимое эсепшена на экран, или писать в темп каталог.


    Наиболее вероятные причины сбоев:
    1. Не установлен .net нужной версии
    2. Запуск сборки х64 на х32
    3. Не установлены сторонние библиотеки
    4. Не доставлена одна из сборок
    5. Один из файлов в процессе сборки установщика побился
    6. Что-то прописано в конфиге, но требует настроки на целевой машине (строка подключения, например)
    7. Недостаточно доступа у юзера на целевой машине
    Ответ написан
    Комментировать
  • Как разрешить доступ к MS SQL (named instance) серверу за WIndows Firewall?

    igolets
    @igolets
    Программист C#, MSSQL
    Пробовали подключаться телнетом на заданный порт (1433)? Я этот метод использую для точечной проверки наличия доступа.
    У меня обычно процедура такая — включаю на сервере доступ по TCP-IP, задаю порт 1433, открываю его на firewall. После этого простая универсальная проверка, не требующая дополнительного ПО — это telnet <адрес> 1433, потом Excel.

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

    Что ещё (кроме telnet) я бы посоветовал проверить:
    1. Есть ли в firewall инструменты проверки, "что пошло не так". Например, VipNet такое умеет.
    2. На клиентской машине запустить CliConfg.exe и посмотреть, может, какие-то настройки на машине откуда-то взялись. Например, настроен алиас, который в явном виде использует named pipes.
    3. Можно выключить firewall, открыть подключение и посмотреть в netstat, как именно клиент подключился.
    4. Сделать пинг по имени и убедиться, что используется IPv4
    5. Попробовать подключение по IP вместо имени.
    6. Включить на сервере SQL Browser и открыть соответствующий порт. Иногда помогает :)
    Ответ написан
    Комментировать
  • Почему 0,5 округляется до чётного числа?

    igolets
    @igolets
    Программист C#, MSSQL
    Я когда-то даже написал на эту тему статью.

    https://habr.com/ru/articles/801899/
    Ответ написан
    Комментировать
  • Как сделать кнопку Инфо?

    igolets
    @igolets
    Программист C#, MSSQL
    Есть такой проект, FontAwesome, в основном его используют для веба, но есть библиотеки для десктопа. Например, вот https://awesome-inc.github.io/FontAwesome.Sharp/

    Эта библиотека предлагает свой набор контролов (появляется в тулбоксе в виде отдельной группы).
    Вот такое можно сделать:
    659fa5230f7f5417068805.png
    Ответ написан
    Комментировать
  • Что стоит учить с или c++ или c#?

    igolets
    @igolets
    Программист C#, MSSQL
    На C/C++ имеет смысл смотреть в случаях:
    1. Если есть в планах разрабатывать ПО, которое работает с железом на низком уровне.
    2. Если есть в планах разрабатывать высокопроизводительное ПО.
    3. Если есть в планах разрабатывать ультра-портируемое ПО.
    4. Если есть желание разобраться как ПО на любом другом языке переводится в машинный код и как его оптимизировать.

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

    Касательно C# — я бы сказал, что он похож скорее на Java, чем на C. Как минимум, внутренней логикой. Его хорошо использовать для разработки разного рода прикладного ПО, быстрой разработки, обучения — много готовых инструментов, прощает многие ошибки. Ещё для обучения хорош Pascal — его создавали специально для этих целей.

    Учить C# рекомендую по экзаменационным курсам Microsoft — в них довольно последовательное изложение, покрывающее все существенные темы. Для C# это "Exam Ref 70-483 Programming in C#" (сам экзамен отменён с 2021, но знания особо не устарели ;) книжку в виде PDF можно найти в поиске за пару минут).

    И ещё момент — в вопросе явно не было указана степень знакомства с темой, но от себя рекомендую уделить пристальное внимание структурам данных и алгоритмам. Без этих знаний преобразовать задачу в код будет очень сложно и больно от изобретаемых велосипедов.
    Ответ написан
    Комментировать
  • Какой хостинг выбрать для ТГ бота на .Net?

    igolets
    @igolets
    Программист C#, MSSQL
    Как опцию предлагаю рассмотреть бессерверный бот. До какого-то количества вызовов вообще будет бесплатно.
    https://habr.com/ru/articles/752658/
    Ответ написан
    Комментировать
  • Как найти работающую от сети замену смартфону?

    igolets
    @igolets
    Программист C#, MSSQL
    Тут Infinix Note 30 недавно презентовали. Там обещают функцию питания в обход батареи.
    Ответ написан
    Комментировать
  • Как к триггеру привязать делегат?

    igolets
    @igolets
    Программист C#, MSSQL
    Триггеры, к сожалению, напрямую не предназначены для вызова кода. Но код можно вызывать косвенно. Навскидку могу привести следующие варианты:
    1. DataTrigger может биндится через конвертер, соответственно, будет вызываться код конвертера с передачей данных из модели. Пример https://itecnote.com/tecnote/c-wpf-calling-method-...
    2. EventTrigger может запускать TriggerAction. Можно написать свой TriggerAction и этот код будет вызываться по триггеру. Пример https://putridparrot.com/blog/a-simple-wpf-trigger...
    3. Ну и по-простому можно триггером выставлять свойство контрола, а изменение свойства обрабатывать обработчиком.
    Ответ написан
    Комментировать
  • Стоит ли переписывать старый проект на .NET6 (на голом энтузиазме)?

    igolets
    @igolets
    Программист C#, MSSQL
    Я бы предложил попробовать скушать этого слона по частям, а не замахиваться на переписывание всего с сразу.
    По мере появления новых задач локально (в тех местах, которые уже затронуты изменениями) приводить код в порядок — добавлять асинхронность, приводить в порядок типы, обновлять библиотеки.
    Собственно, на .Net6 свет клином не сошёлся, плохой код (как и хороший) можно писать на любой версии
    Ответ написан
    Комментировать
  • Почему не могу добавить компонент в Win Form?

    igolets
    @igolets
    Программист C#, MSSQL
    Обычно контрол в панели появляется если открыт дизайнер подходящий (по версии .Net и т.п.).
    Ответ написан
    Комментировать
  • Почему Студия игнорирует настройки gitignore?

    igolets
    @igolets
    Программист C#, MSSQL
    Файл .gitignore с точкой впереди названия?
    Он лежит в одной папке с папкой .git?
    Если другим клиентом пользоваться (TortoiseGit/Sourcetree), там тоже показываются файлы из игноров?
    Ответ написан
    Комментировать
  • Как обеспечить зависимость от проекта другого решения в visual studio?

    igolets
    @igolets
    Программист C#, MSSQL
    Вопрос сформулирован немного скомкано, поэтому отвечу кратко.
    Вот я уже отвечал на похожий вопрос https://qna.habr.com/q/1201580#answer_2231234
    Ответ написан
  • Имеет ли смысл использовать паттерн MVVM в приложении Winforms?

    igolets
    @igolets
    Программист C#, MSSQL
    1. WPF немного адаптирован для MVVM, но это не обязательно — масса примеров в родной документации не использует никакого MVVM. Так что я бы не связывал выбор использования MVVM с WPF.
    2. Есть готовые библиотеки для WinForms, которые умеют делать легкий MVVM. Лично я, например, работал с DevExpress и на мой взгляд, из коробки он дает даже больше, чем WPF (например, есть встроенные сервисы работы с попап окнами). Так что использовать MVVM на WinForms не сложнее, чем на WPF.
    3. И раз мы отделили вопрос MVVM от WPF/WF, нужно принципиально решать вопрос использовать ли MVVM в конкретном проекте.
    4. И, собственно, вопрос использование MVVM имеет плюсы и минусы. Плюсы — сопротивление хаосу при массированных изменениях кода, уменьшение человеческого труда при тестировании. Минусы — больше кодинга (накладные расходы на раздельную реализацию VM + юнит-тесты), не устраняет ручное тестирование до конца. Использовать MVVM без юнит-тестов смысла особо не вижу — кодить больше, выгоды никакой.


    Лично мое мнение — если нужна простая утилита «для себя», которую один раз написали и не трогают, я бы писал быстро (без MVVM и тестов). А если её будут менять, в том числе другие разработчики, а цена ошибки — деньги (например, если админятся данные клиентов по контрактам), то лучше MVVM и тесты.
    Ответ написан
    Комментировать
  • Какие приложения в jira (или другой софт) помогают отслеживать эффективность программиста?

    igolets
    @igolets
    Программист C#, MSSQL
    1. Оценивать эффективность работы, не понимая принципов разработки не получится — как минимум, высок риск демотивировать программистов.
    2. Если есть проект и в нём руководитель проекта, который занимается именно проектом, но не понимает в разработке, то по классическим структурам команд (из того же PMBOK) нужен отдельный функциональный менеджер, который будет понимать в программировании и будет отвечать за производительность (требования, собеседования, инструменты, оценки и т.п.)
    3. Эффективность очень сильно привязана к особенностям процесса разработки (agile/waterfall), особенностям проекта (например, какие цели — быстрее выдать результат, или обеспечить качество).
    4. Заставлять сотрудников отмечать время недостаточно. Если им не разъяснено зачем это нужно делать (какие могут быть последствия), они, как умные люди, начнут что-то сами себе соображать и искажать статистику. А если проверяющий не понимает их работы, то не сможет ничего обоснованно предъявить.
    5. Ну и есть у меня предположение, что за формально озвученным вопросом ("как следить за эффективной работой") скрывается настоящий вопрос ("не укладываемся в сроки/бюджеты", например). Хорошо бы начать с него, не всегда проблема решается с помощью таймшитов, возможно, у вас проблема с изменениями требований или вообще ошибочно выбрана архитектура ;) Учитывая, что в вопросе озвучен только один ПМ (без знания программирования) и ни одного технического "офицера", тут попахивает потерей управления вообще.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы Git в VisualStudio не выгружал удаленные из проекта директории?

    igolets
    @igolets
    Программист C#, MSSQL
    Если удалить проект из солюшена, то связанная с ним папка не удаляется.
    Соответственно, чтобы удалить файлы, это нужно делать физически через «проводник».

    На счёт веток не понял вопрос. Если речь про git branches, то удаление для git — это обычный коммит, он попадет в другие ветки только при merge. Если ветку с удаленной папкой проекта смёрджить во вторую, то во второй файлы удалятся, если нет — не удалятся.

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

    При переключении обратно — файлы должны удалиться.

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

    igolets
    @igolets
    Программист C#, MSSQL
    Что-то мне подсказывает, что (скорее рано, чем поздно) возникнет задача построить отчет по отказам. В этом случае я бы эту таблицу оставил как есть, но добавил ещё таблицу с отказами, с полями "заказ, блюдо, количество, пользователь, дата".
    Из бонусов — в обе таблички данные будут только добавляться, можно подбирать тип БД, который умеет в быструю вставку, с репликацией чуть проще...

    На счёт частичной оплаты не понятно — зачем вообще такое, почему недостаточно оплачивать всё и сразу. И зачем отслеживать какие именно позиции оплачены.
    Ответ написан
    2 комментария
  • Как я могу увидить те же папки на своем пк что и на android смартфоне?

    igolets
    @igolets
    Программист C#, MSSQL
    Я бы попробовал ещё команду adb shell.

    Но хранилища приложений (базы данных, кэши) так, скорее всего, увидеть не получится. Если аппарат не рутованый, то можно попытаться (шансы невелики, если честно) поперебирать приложения через команду adb run-as package_name

    Если вдруг какое-то из них будет допускать отладку, то этой командой можно будет выполнять дальнейшие команды от имени приложения, тот же ls. И посмотреть структуру скрытых данных.
    Ответ написан
    Комментировать
  • Как можно получать или ссылаться на переменные с двойным подчеркиванием при помощи sub classov?

    igolets
    @igolets
    Программист C#, MSSQL
    Вот статья по теме: https://learn.microsoft.com/en-us/aspnet/core/fund... Раздел "Environment variables".
    Там есть пример, ссылка на код (на GitHub) и вызов
    set MyKey="My key from Environment"
    set Position__Title=Environment_Editor
    set Position__Name=Environment_Rick
    dotnet run


    Собственно, под капотом следующее (тут сборная солянка, из разных классов):
    // из public class Startup
            public void ConfigureServices(IServiceCollection services)
            {
                services. Configure<PositionOptions>(Configuration.GetSection(
                                                    PositionOptions.Position));
                services.AddRazorPages();
            }
    
    // из кода, который обращается к настройкам
        public class PositionOptions
        {
            public const string Position = "Position";
    
            public string Title { get; set; }
            public string Name { get; set; }
        }
    
            public Test2Model(IOptions<PositionOptions> options)
            {
                _options = options.Value;
            }
    
            public ContentResult OnGet()
            {
                return Content($"Title: {_options.Title} \n" +
                               $"Name: {_options. Name}");
            }

    Т.е. в Вашем случае нужно:
    1. сделать класс ApiConfig (по образцу PositionOptions из примера выше)
    2. в Startup вызвать services. Configure, передав данные класса ApiConfig
    3. в коде, который дожен работать с ApiConfig запросить в конструкторе IOptions<ApiConfig>


    Второй вариант доступа такой:
    var title = Configuration["Position:Title"];
                var name = Configuration["Position:Name"];
    Ответ написан
    1 комментарий