Задать вопрос
  • Как правильно выбрать фреймворк и яп для проекта, если ты заказчик?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Никак. Выбор инструмента - это задача тимлида и/или техлида. Т.е. ведущего/главного разработчика, отвечающего за принятие ключевых технических решений. Ваша задача, как заказчика, четко оформить требования, ограничения и сформировать начальное ТЗ и описание, что вам требуется от проекта, прототипы интерфейса, например. Без вникания в технические детали. Т.е., "хочу чтобы были фичи такие-то и работил они так-то, ограничения такие-то, требования такие-то". Далее уже задача найти разработчика/команду с большим или достаточным для данного проекта опытом. Далее из начального ТЗ формируется полноценное техническое задание: описывается весь требуемый функционал, рисуется дизайн, прописываются требования, ограничения и прочие хотелки. И на основе ТЗ, тим/тех лид уже подбирает/подбирают наиболее оптимальные и конкретные инструменты и решения, основываясь на собственном опыте и знаниях для конкретно этой задачи. Например, если человек хорошо знает несколько разных инструментов и есть достаточный опыт их использования - он может реализовать проект используя любой из них как одинаково хорошо, так и одинаково плохо. У разных ЯП и фреймворков свои плюсы и минусы. Далее из ТЗ формируется более детальное ЧТЗ и происходит разработка проекта.

    Вот вы говорите:
    Нужно будет выполнять много запросов к БД

    Важная быстрая скорость работы нашего сайта

    Много/быстро это сколько? 100 запросов в час? 1000 в минуту? 1М в секунду? Загрузка страницы за 30/10/1с или даже 100мс? А к какой именно БД? Какая характеристика самих данных и какого типа запросы? На какое количество соединений? В каком регионе? Есть ли там тяжелые или еще какие-то вычисления? Медиа файлы - картинки, видео? Тут очень много нюансов. В идеале следует определиться с конкретными значениями/параметрами и их описать в ТЗ. Ну или определить примерное, а фактическое значение определить на стадии прототипа/MVP и/или провести какое-то исследование/тестирование. Можно потратить десяток лямов на написание крутого кода на го/расте/С++/ассемблере в течении года и все будет летать на простейшем сервере. А можно купить свой сервер за лям (ну, условно, конечно), нанять питонщика или PHP-ника за 300к и он за пару-тройку недель добьется такого же результата. Большинство веб-задач сегодня достаточно просто или с минимальными усилиями решаются абсолютным большинством решений для веба. Да, у всех решений есть свои плюсы и минусы.

    Безопасность от всяческих XSS и SQL атак.

    Вот с этим проще: использовать популярные OpenSource решения, регулярно проводить тесты, нанять отдельно опытного разработчика, красноглазика и пентестера - и тратить на них деньги, пока деньги не кончатся или не будет достигнут необходимый уровень безопасности. Безопасность противоположна удобству, защита отстает на шаг от атак. Риск есть всегда и надо просто быть готовым к последствиям и иметь запасной плат хотя бы в общих чертах.

    А так - уже правильно посоветовали сразу брать дот-нет, т.к. у вас требование к использованию конкретной библиотеки для дот-нета.
    Ответ написан
    1 комментарий
  • Почему не надо редактировать данные БД через xlsx документ?

    @chemdev
    Никак, если бизнесу надо значит надо.
    На бэке пишется метод который импортирует файл. Импорт экселек как правило всегда сопряжен с различного рода трудностями (приведение к нужному типу, разрешение конфликта, ограничения на размеры файлов, сам импорт должен производиться на фоне либо в рамках запроса и многое многое другое) поэтому здесь особенно важно максимально детально проговорить спецификацию и покрыть тестами.
    Ну а реализация в интерфейсе либо совсем простая с инпутом для файла либо посложнее если какое то промежуточное подтверждение требуется. Посмотрите решения по импорту файлов в различных других сервисах, например bitrix24.
    Ответ написан
    Комментировать
  • QSS. Как изменить верхнюю панель?

    xzripper
    @xzripper
    0xC0000005
    Это невозможно, либо отказаться от такой идеи, либо сделать окно вообще без границ и верхней панели (QtCore.Qt.FramelessWindowHint), и сделать свою верхнюю панель.
    Ответ написан
    Комментировать
  • Какой самый лучший способ передать информацию между формами?

    @OwDafuq
    Много решений.
    Пара самых популярных:
    1) Конструктор с параметром (или публичное свойство).
    //form2
    public Form2(string value)
    {
    	Value = value;
    	...
    }
    
    //form1
    public Form1()
    {
    	...
    }
    
    void OpenNewForm(...)
    {
    	var form2 = new Form2("myString"); 
    	var form2_2 = new Form2
    	{
    		Value = value
    	};
    }


    2) Singletone объект (но лучше, если у вас есть DI). Объявляете объект, который будет хранить нужные вам переменные в одном месте и вызываете его где вам угодно.
    Ответ написан
    Комментировать
  • Как написать на с++ метод и экспортировать его в c# заинлайнить, и можно ли _fastcall его сделать???


    Или бессмысленно маленькие методы экспортировать?

    Бессмысленно. Лучше сразу на C# их и писать.
    Прибегать к C++ и p/invoke есть смысл только если невозможно переписать на C#.

    Например это имеет смысл в случае библиотек уровня ffmpeg, sqlite, tensorflow
    Ответ написан
    Комментировать
  • VCS в квадрате. Можно ли с помощью Git контролировать состояние другого Git-репозитория?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Нет, рекурсия работать не будет. Гит увидит, что внутри каталога лежит вложенный репозиторий и проигнорирует его. А в своей базе пометит этот подкаталог как поддерево (subtree), чтобы не сломать.

    Вы пытаетесь соорудить какой-то жуткий костыль только лишь потому, что поленились изучить инструмент, в котором работаете. Поэтому для вас Git сейчас представляется как некая шайтан-машина, которой вы скармливаете команды, которые не понимаете, и в результате получаете ещё более непонятные «неожиданные результаты». Просто потратьте несколько дней, чтобы изучить азы. Не зубрите непонятные команды, а постарайтесь понять логику гита. А она — эта логика предельно проста и гениальна.

    не является сложной задачей что-либо сломать в своем проекте

    Сломать что-то в гите довольно сложно. Вам может только показаться что всё сломалось, но это лишь потому, что вы не понимаете, что делаете.

    каким-то образом снес половину коммитов

    Коммиты в гите — это неизменяемые сущности. Можно лишь создать новые «на замену», но старые не исчезают. Коммиты невозможно удалить без специальных команд очистки мусора.
    Вам показалось что коммиты исчезли, но на самом деле они все остались в репозитории, вы просто их не видите в текущей ветке. Но всё легко откатывается назад, используя журнал Reflog.

    Поэтому было бы неплохо как-либо сохранять прошлые версии Git репозитория

    Reflog это и делает, по сути. Это журнал, который хранит указатели на все состояния проекта, в которых вы когда-либо находились ранее. И эти состояния сами по себе не исчезают, так что вы всегда можете откатиться назад в любое место.

    Мой вам совет: Пройдите 16 коротких бесплатных уроков и полу́чите просветление.
    Ответ написан
    2 комментария
  • Есть устройство на астра линукс (Смоленск) версия ос с сертификатом ФСТЭК, никак не получается установить программы или окружение на устройство, идеи?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Интересно, кто это пустил на Смоленск, где сертификат на гостайну - одмина, который явно что-то там хочет поставить с неодобренных реп?
    Братан, ты в курсе, что установка любого неодобренного "сертификатерами" обновления снимает сертификацию? Если у вас Смоленск - значит в нем есть необходимость - от балды такое не покупают. Особисты будут безумно рады, когда узнают, что их система превратилась в тыкву.

    В сертифиицированную систему лезть нельзя!
    Ответ написан
    2 комментария
  • Не работает простой код хотя он правильный в чем может быть проблема?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Цифр больше 9 в десятичной системе не бывает.
    А ваш код выдаёт числа от 1 до 10, как вы в нём и написали.
    Ответ написан
    1 комментарий
  • Как преобразовать std::function в указатель на функцию?

    @sergiodev
    Как вариант можно так сделать:

    1. Запомнить указатель на объект (this) в какую-то глобальную переменную
    2. Создать обычную функции в соответствии с параметром WlanRegisterNotification и передать её туда
    3. В теле функции достать указатель на экземпляр из глобальной переменной и далее работать с ним

    Возможно, ещё нужно учесть синхронизацию, если callback вызывается в другом потоке.

    Если вы работаете с функцией https://learn.microsoft.com/en-us/windows/win32/ap... из Windows API, то там есть параметр context как раз для передачи контекста в callback. Можно положить туда this и позже достать из контекста внутри вашей callback-функции.
    Ответ написан
    2 комментария
  • Как быстро изучить C#?

    @tukreb
    Быстро изучить просто.
    Придумывайте любой проект и начинаете его делать.
    И самое главное, вы должны делать это самостоятельно, без всяких тостеров.
    Книги вам помогут любые где есть просто базовые знания, а вот всякие ютуб каналы особо не помогут, может только чуть разобраться в фреймворках, но всё равно документация рулит.
    Если хотите создавать игры, то копайте движок Unity и его документацию.

    Сам процесс простой.
    1. Пишите как знаете проект, главное чтобы заработало как планируете, на сам код не обращайте особого внимания.
    2. Начинаете переписывать проект с полученным опытом из 1 пункта с использование новых знаний из прочтения книг по всяким архитектурам и паттернам.
    3. Повторяете в цикле первые 2 пункта до 11 класса каждый день тратя по 4 часа минимум.

    Весь ваш прогресс заносите через git на гитхаб, пригодится, когда будете искать работу.
    Ответ написан
  • Контроль учётных записей при запуске диспетчера задач. К чему бы это?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    С такой паранойей - и без антивируса?! Феноменально!
    Ответ написан
    1 комментарий
  • Можно ревью супергрязного(наверное) кода на с#?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Найди .gitignore для шарповых проектов, чтобы не тащить мусор в виде временных и исполняемых файлов на гит
    Ответ написан
    Комментировать
  • Какой стек использовать для десктоп приложений в гос.предприятиях в 2023 году?

    Мне удобнее сделать всё на C#, .Net, WPF и в случае появления linux запускать всё под Mono.

    Ты под Mono не сможешь запустить приложение на WPF:)
    Тогда уж сразу лучше писать на Avalonia.
    Это раз.

    Два - если будет Linux, то очень велик шанс, что какой-нибудь особенный российский linux, у которого могут быть проблемы с совместимостью - нужно будет тестировать и как минимум писать инструкции по установке.

    Три - лучше смотреть на конкретные требования заказчика. Сейчас даже на госпредприятиях чаще в веб идут.
    Ответ написан
    Комментировать
  • Какие виды функций есть в C++, и как их различать?

    Функция cout из стандартной библиотеки C++ использует указатель для доступа к объекту ostream, который представляет поток вывода. Указатель используется для работы с методами и свойствами этого объекта, такими как << оператор для вывода данных.

    Обманул тебя ChatGPT.
    cout - это не функция, а объект.
    И конкретно в твоём коде указатели напрямую нигде не используются.
    Ответ написан
    Комментировать
  • Существуют ли аналоги Яндекс/Гугл фото в своей сети?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    https://syncthing.net/
    на ютубе полно гайдов по его настройке
    Ответ написан
    4 комментария
  • Как редактировать XAML из C#?

    @SZolotov
    Asp.net core, MAUI,WPF,Qt, Avalonia
    Почитайте про биндинги и контролы для показа коллекций. Вопросы отпадут и время сэкономите. После прочтения поймёте что в xaml верстать сильно проще.
    Если желание верстать шарповым кодом всё же останется, алгоритм действий такой же как и в xaml:
    1. Забиндить массив на специально предназначенное свойство контролла для показа коллекций
    2. Переопределить DataTemplate для нужного дизайна элемента списка
    3. Наслаждаться результатом.
    Ответ написан
    Комментировать
  • (Вопрос без однозначного ответа) Почему в window socket 2 используется так много различных дефайнов и псевдонимов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я тоже до конца не понимаю цели и задачи которые ставились для winsock2 но вот можно
    почитать аннотацию здесь https://learn.microsoft.com/en-us/windows/win32/wi...

    С моей точки зрения было время большого разлада между лагерем Microsoft и Unix. И вместо того
    чтобы просто позаимстовать сетевые библиотеки или купить лицензии, MS как всегда стал делать
    что-то свое, "сумчатое" и ни на что не похожее. Яркий пример Component-Object Model (COM).
    Нигде такого нет.

    Для чего создаватьtypedef struct addrinfo{}? Только ради того, чтобы не писать struct в Си?

    Да все верно. Именно для такого юзкейса typedef и создавался. Плюс еще можно примитивы определять.

    Для чего определять *PADDRINFOA

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

    Где-то спокойно используется int, а где-то используетсяtypedef unsigned __int64 UINT_PTR, опять же вместо того, чтобы просто писать unsigned __int64.

    Это очень старый технический долг языка С++ и его уже нельзя исправить. Дело в том
    что спецификация языка не объясняет какой разрядности должен быть int. Он может быть
    16, 32 бит в зависимости от целевого железа. По сути он - синоним регистра процессора.
    И когда мы делаем цикл от 1 до 10 и нам по сути неважна разрядность параметра цикла - мы просто заказываем
    int чтоб долго не думать. И компиллятор собирает очень быстрый и оптимальный код.
    sizeof(int), или константы в в limits.h могут дать подсказку по вашей текущей архитектуре.

    typedef unsigned __int64 UINT_PTR

    Здесь идет форсирование разрядности в 64 бита. Такие потребности возникают
    в момент когда у нас есть например жестко заданный формат (сетевой протокол
    или дисковый формат файла) и мы должны гарантировать что другие архитектуры
    микрокотноллеры, мобилы и прочее правильно смогут интерпретировать эту структуру.
    Тут еще и порядок байтов внутри слова тоже важен. В наше время даже есть сет
    стандартов на описание таких структур ASN, AVRO, Protobuf, Thrift.
    Ответ написан
    1 комментарий
  • Почему сложность алгоритма (n+2n+3n+…+n⋅n) = O(n³)?

    Не нужно путать big-O и алгоритм для подсчёта прогрессии.
    Ответ написан
    Комментировать
  • Калькулятор работает неисправно, как решить?

    YuriyVorobyov1333
    @YuriyVorobyov1333
    Software Developer
    Ну так a это int, а switch по char'ам, просто уберите одинарные кавычки и все заработает
    Ответ написан
    Комментировать
  • Как избежать обнуления массива?

    GavriKos
    @GavriKos
    Почему решили, что он обнуляется? Не похоже чт с ним должно что то происходить
    Ответ написан
    2 комментария