Задать вопрос
  • Как решать задачи по программированию математическим путем, а не "в тупую"?

    Чтобы решать математическими методами - да, нужно знать математику. В частности дискретную, тк чаще именно её использую при решении алгоритмических задач.

    Книга есть. Начать можно с достаточно толстой: Алгоритмы, построение и анализ.
    Например там в начале показан пример, как найти (или хотябы доказать корректность) решение при помощи индукции, доказывая, что на каждом шаге алгоритма будет выполняться какой-то инвариант (например что вся левая часть массива отсортирована после того, как мы перешли к правой)
    Ответ написан
    Комментировать
  • В чем различие между Mutex и другими классами синх. потоков?

    В отличие от Monitor, класс Mutex может использоваться для межпроцессной синхронизации. Для этого нужно использовать именованный мьютекс, который виден в операционной системе. Чтобы создать экземпляр именованного мьютекса, используйте конструктор Mutex, который задает имя. Также можно вызвать метод Mutex.OpenExisting, чтобы открыть существующий именованный системный мьютекс.

    Думаю, этого достаточно для понимания различий.

    Mutex это разве не тот же семафор, только который может брать один поток?

    Нет, не тот же.
    Как минимум, если говорить про .NET, то Mutex имеет одну фичу, которого нет у Semaphore:
    Mutex можно использовать для синхронизации между процессами (при помощи именованного mutex) на Linux, а Semaphore нельзя.

    На уровне ОС семафор и мутекс - это разные вещи. Предположу, что это позволяет немного оптимизировать реализацию, зная заранее, что у тебя будет только 1 поток, который его держит.
    Ответ написан
    Комментировать
  • Как оптимизировать код в rust при помощи trait?

    vabka
    @vabka Куратор тега Rust
    1. Действительно непонятно, для чего и как ты хочешь эти трейты использовать.
    2. Кажется, ты пытаешься переизобрести num
    3. Ошибка у тебя из-за того что ожидается какой-то неизвестный T, а ты пихаешь туда f64
    Тоесть, например, я бы мог захотеть сделать FloatStruct::<f32>::new() но вместо FloatStruct<f32> ты пытаешься вернуть мне FloatStruct<f64>
    Ответ написан
    8 комментариев
  • На какие языки можно переводить описание телеграмм бота?

    1. На вопрос "на какие языки можно" ты ответил уже сам - любые, которые, видимо, имеют языковой код.

    2. Со временем в телеграме вполне может появиться больше языков, да и неофициальные переводы есть.
    Неофициальные переводы с этой штукой тоже работают.

    3. Смысл имеется, если у тебя в потенциальных клиентах есть носители этого языка.
    Ответ написан
    Комментировать
  • Как выплачивать деньги пользователям за предоставление услуги?

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

    Лучше обратиться к юристу, чтобы он помог составить шаблон договора, который не будет противоречить законам. Он же тебе подскажет, какие налоги и как придётся платить. Как минимум тут пахнет НДФЛ-ом.
    + Нужно посмотреть, как это будет стыковаться с твоим налоговым режимом.

    UPD:
    Я выступаю только в роли инструмента, с помощью которого учителя могут продавать свои курсы ученикам. Я не покупаю их собственность.

    Тем не менее тебе всё равно придётся заключить договор, в котором ещё будет передача некоторых прав на пользование интеллектуальной собственностью. Как минимум - на сохранение и распространение на таких-то условиях.

    UPD2: составь подробно по шагам, что именно будет делать автор курса, как именно он будет загружать свой курс на твою площадку, как "ученики" (да, в кавычках) будут получать доступ к этим материалам, как будет проходить оплата, какой процент и на основании чего ты будешь забирать себе итд.
    С этим описанием иди к юристу. Консультация и составление типового договора, обычно, стоит не больше пары тысяч.
    Ответ написан
    4 комментария
  • Портится ли монитор от того, что на него светит настольная лампа?

    Вариант раз: Портится. У меня лампа накаливания (или может просто горячая светодиодная?) была и в один день лампа прислонилась (или просто приблизилась?) к монитору. Теперь у монитора оплавился уголок. (на самом деле он размяк, а я его ещё из интереса пальцем нажал)
    (без шуток так и было, могу даже фото показать. Монитором всё ещё пользуюсь)

    Вариант два: Портится. У меня в настольную лампу вкручена УФ-лампа. Она постоянно светила на экран и теперь у экрана странная цветопередача. (А это уже выдуманный случай)

    Если вы не такой как я, то проблем быть не должно.
    Ответ написан
    1 комментарий
  • На все ли кнопочные телефоны можно установить symbian OS?

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

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

    PS: "кнопочный телефон" - понятие крайне растяжимое. И старенькая nokia 3310, и новенькая 3310 и какой-нибудь Xiaomi qin - все они по определению являются кнопочными и все они по очевидным причинам не поддерживают symbian.
    Ответ написан
    Комментировать
  • Как скачать Avacode?

    Нигде не скачать.
    Если найдёшь где скачать - работать он не будет, тк завязан на онлайн.
    Его больше нет, в прошлом году ещё умер:
    https://avocode.com/blog/sunsetting-avocode-free-v...

    Вместо него предлагается использовать Ceros
    Ответ написан
    Комментировать
  • В каких случаях надо испоinterfacce, а не type?

    Везде используй interface, если это возможно.
    type сильно влияет на скорость компиляции и проверки типов.
    Ответ написан
    4 комментария
  • Нужна ли математика для QA Automation engineer?

    Да, нужна.
    Какая именно математика - зависит от конкретной предметной области.
    Как я понимаю, в ручном тестировании математика абсолютно не задействуется

    Что там что там математика используется примерно одна и та же.
    Ответ написан
    Комментировать
  • Как оптимально питать такую схему?

    1. Я бы отказался от Arduino nano в пользу другой платы, как уже упомянул сталкер. Каую-нибудь более компактную и с меньшим напряжением.
    2. Для носимой электроники часто используют гибкие платы - почему бы их не рассмотреть.
    3. В видео используются компоненты монтируемые в отверстие (большие светодиоды и соотв резисторы). Я бы перешёл на smd компоненты
    4. Несколько светодиодов и маломощный мк в теории должны легко питаться от плоских батареек-таблеток. Или же можно попробовать стащить тонкий литиевый аккумулятор и контроллер заряда из какой-нибудь одноразки, да.

    PS: гибкую плату можно заказать на jlcpcb например вместе с монтажом.
    Ответ написан
    Комментировать
  • Какой сервис взять?

    1. Какой бы справочник ты бы не взял - нужно будет разрешить ввод произвольной строки, тк человек мог родиться в городе или стране, которых больше уже нет, или родиться не в России, например.

    Аналогично с образовательными учреждениями - или уже нет, или ещё нет в реестре твоём.

    2. Для автозаполнения - можно изначально базу городов заполнить через ГАР/ФИАС, Википедию, итд.

    Базу образовательных учреждений - можно взять из реестра выданных лицензии:
    https://obrnadzor.gov.ru/gosudarstvennye-uslugi-i-...

    Также можно стащить какие-то данные из того же ВК, linkedin итд - там люди тоже же своё образование указывают.
    Ответ написан
    Комментировать
  • Какую базу данных лучше использовать для чата?

    Да в общем то любая реляционная вполне справится с этим. Только тебе нужно будет данные из классов на таблички переложить.

    Чтобы конкретнее сказать - нужно больше информации
    Ответ написан
    2 комментария
  • .Net 6 где хранить настройки?

    Кажется, тут сразу три независимые вещи, которые часто хранят раздельно:

    1. Собственно настройки
    Их удобнее всего хранить в appsettings.json, который можно спокойно закоммитить в репозиторий.
    В коде можно получить к ним доступ через IConfiguration или IOptions

    2. Секреты (пароли, токены, итд)

    Строку подключения в общем то решил захардкодить.

    Остается имя админа и пароль + почта.

    Их лучше в репозитории не хранить.
    Благо IConfiguration можно наслаивать и прокидывать секреты через переменные окружения, например, или использовать какой-нибудь Vault или keyring.
    Уже упомянутый диспетчер секретов можно использовать только для разработки, но не для прода.

    3. Фича-флаги.

    Дальше динамическая смена настроек как то:
    OAUTH авторизация, которую выключать и включать можно.

    Их часто хранят в базе данных, да. Есть также несколько уже готовых решению для удобного управления фича флагами.
    Гуглить feature flags.
    https://learn.microsoft.com/en-us/azure/azure-app-...

    4. Если есть конфиги, которые нужно менять на лету, то тут нужно уже смотреть, как именно нужно отрабатывать изменение конфигов.
    Например мы храним такие конфиги в etcd и явно подписываемся на изменения. В случае изменений - делаем какие-то действия.

    В дотнете для работы с такими конфигами есть интерфейс IOptionsMonitor
    Ответ написан
    1 комментарий
  • Можно ли вкладывать пакеты Dot1Q в PPPoE?

    Видимо можно:
    https://www.cisco.com/c/en/us/td/docs/ios/bbdsl/co...

    В принципе логично, ведь они ортогональны:
    PPPoE - надстройка над Ethernet
    802.1q - дополнительные тэги внутри Ethernet
    Ответ написан
    Комментировать
  • О чем на самом деле идет речь в single-responsibility principle?

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

    Представим себе такой псевдокод:
    конфиг = прочитать_конфиг_из_файла()
    соединение = открыть_соединение_с_бд(конфиг.строка_подключения)
    соединение.сохранить(данные)
    соединение.закрыть()


    Если у нас контекст, что это какой-то большое приложение, которое написано в ОО-стиле, то тут SRP явно нарушен:
    Читать конфиг и открывать соединение нужно в другой функции и передавать в функцию по сохранению данных уже открытое соединение. Обработку ошибок при чтении файла или подключении стоит делать в другом месте.
    Разделение этого когда повысить надёжность и облегчит разработку и поддержку, уменьшится дублирование кода, а местами код станет сильно проще.

    С другой стороны, если у нас контекст - это просто небольшой скрипт, который делает бэкапы и он полностью самостоятелен, но нарушения нет - попытка разделить этот "скрипт" приведёт только к усложнению всего.

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