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

    igolets
    @igolets
    Программист C#, MSSQL
    Пока напрашивается взять табличку, отсортировать по колонке Время и по таймеру вычислять разницу времени и пробегать по таблице, пока не найдем первое значение, которое будет больше текущего. Это и будет искомая строка. Таблицу можно прописать прямо в коде, можно во внешнем файле или БД и грузить при запуске.

    Вдогонку. Выше вижу в комментарии "difference обновляется каждую секунду" — это не совсем так. Значение difference вычисляется по тику таймера. Таймер не будет срабатывать точно раз в секунду. Всегда будет небольшая погрешность, даже если настроить его срабатывать 100 раз в секунду, то будут моменты, что по факту сработало 99 или 101 раз. Правил я как-то чужой код, где программа вычисляла, сколько времени прошло с прошлого вызова и суммировала эти промежутки. В итоге набегало порядка 7% разницы.
    Ответ написан
    Комментировать
  • Как научиться декомпозиции в ООП?

    igolets
    @igolets
    Программист C#, MSSQL
    Могу предложить два пути (их в идеале можно/нужно) совместить:
    1. Правильные книжки ("библия" по теме — книжка Гради Буча https://www.academia.edu/36807105/OBJECT_ORIENTED_..., ещё ссылка https://github.com/gowthamanniit/Java/blob/master/...)
    2. Найти работу, где это можно применить. В идеале — в немаленькой конторе, где есть практика code review, чтобы получать регулярную обратную связь по своей работе.
    Ответ написан
    Комментировать
  • Возможно ли сделать сертификат 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 комментария