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

    ForestAndGarden
    @ForestAndGarden
    Совершенствовать среду обитания
    См. функцию TRANSPOSE (ТРАНСП).
    Ответ написан
    Комментировать
  • Какие навыки требуются Junior программисту микроконтроллеров?

    @dima20155
    you don't choose c++. It chooses you
    1. Прежде всего, нужно знание схемотехники, но в вашем случае этот этап можно вычеркнуть.
    2. Естественно, знание основ С и С++ (синтаксиса, базовых конструкций). Советую вам использовать в своих проектах С++, поскольку зачастую вы сможете писать в стиле С без каких-либо проблем, а при необходимости воспользоваться фичами/библиотеками для С++.
    3. Навыки hardware и software отладки. Здесь просто нужна практика с любимой IDE.
    4. Понимание указателей, типов памяти (статическая, динамическая, автоматическая, регистровая). Как память выделяяется и прочее.
    5. Знание базовых структур данных. Это немного скользкий пункт, поскольку С++ предоставляет хорошую (хотя и весьма минималистичную) стандартную библиотеку STL, в которой есть большинство из необходимых структур данных, но они используют довольно много дополнительной аллокации памяти, поэтому если пишете под что-то 8битное, то имейте это ввиду.
    6. Знание git на базовом уровне сейчас важно для джуна любой IT специализации.
    7. Неплохо бы иметь базовое представление о том как устроен микроконтроллер и его архитектура.
    8. Неплохо бы понимать RTOS (FreeRTOS - классика жанра), а главное зачем он нужен, а когда он не нужен или вреден.
    9. Лично мне всегда в работе пригождается python, но это всегда сторонние задачи/автоматизация.

    P.S. Нашел ещё вот такой RoadMap.
    P.S.S. Получилось довольно объемно. Но пункты 2-5 по сути можно объединить в один. Все это можно изучить написав парочку проектов для классической STM32 + HAL.
    P.S.S.S. Сам начинал как hardware разработчик. Путь embedded разработчика начального уровня не был сложным для меня и занял не очень много времени.
    Ответ написан
    Комментировать
  • Браузер блокирует скачиваение с сайта нескольких файлов подряд. Как предупредить пользователей?

    @alexalexes
    Если следовать логике загрузки файлов из github (получить весь репозиторий) или любого файлового облака (получить весь каталог с файлами), то когда речь заходит о скачивании набора файлов, то этот набор лучше упаковать в архив и отдать клиенту отдельным файлом. Тогда вы не столкнетесь с ограничениями браузера.
    Ответ написан
    2 комментария
  • Можно ли поставить кнопку в обход транзистора?

    @VT100
    Embedded hardware & software.
    Да, вполне.
    Но надо ещё диод (или иной подавитель выбросов) параллельно катушке реле. Диод - катодом к питанию и анодом к коллектору транзистора.
    Ответ написан
    1 комментарий
  • Как защитить админку?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Любая авторизация должна выполнятся на строне сервера, всё что на стороне клиета обходится на раз!
    Как именно - дело Вашею Есть десятки систем авторизациию Имя + пароль - самая распостраненная
    Ответ написан
    1 комментарий
  • Какая есть литература про парсинг различных форматов данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть ли литература в которой объясняется методика парсинга форматов типа pdf/doc/специфических бинарных форматов?

    Единой методики нет. Для парсинга коммерческих форматов лучше брать коммерческие либы.
    Так хоть будет гарантия что все сработает без ошибок.

    Я использовал опенсорцсные библиотеки iText, Poi для pdf,doc. Но не столько для парсинга
    сколько для генерации отчетов. А генерация обычно использует подмножество спеки.

    https://poi.apache.org/

    О том чтобы самому разбирать бинарный формат - забудь. Это будет просто пустая трата времени.
    Можно разбирать простые бинарные форматы такие как BMP (bitmap) но для сложных нужно
    потратить долгие месяцы и годы чтения спецификаций и то ты реализуешь не все а просто
    какое-то подмножество формата. Сам создатель Microsoft форматов документа как-то писал
    что они даже для него сложны.

    Есть фреймворк Kaitai-Struct который пытается формализовать описание всех форматов
    в виде некого DSL (в виде yaml). Я пробовал его использовать. Как по мне - он генерирует
    слишком переусложеннные сериализаторы где много лишнего кода. Еслибы писать вручную
    то очевидно что было-бы компактнее.

    https://formats.kaitai.io/
    Ответ написан
    Комментировать
  • Стоит ли переписывать старый проект на .NET6 (на голом энтузиазме)?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Нет, оно того не стоит. Любая работа должна быть оплачена. Ибо сейчас напишешь за свой счет, а потом начальника скажет "о, отлично, молодец, можем теперь сэкономить на программистах и поддержке, у меня как раз знакомый ищет, ща его поставлю, а ты можешь быть свободен, заодно выпишу себе премию, во какой я молодец". Этот код решает задачи бизнеса. Если бизнес готов тратить на его поддержку и сопровождение деньги - то это проблемы этого бизнеса. Почему это наемный работник должен решать проблемы бизнеса за свой счет? Правильно сделать так: оформить все в виде какого-то документа с конкретными аргументами, цифрами, графиками и т.п. и выдать его начальству. Типа сейчас поддержка проекта стоит столько-то, приносит такие-то проблемы, переписать будет стоить столько-то, сопровождение нового будет столько-то, оно решает такие-то проблемы. И выдаете данный документ начальству. Можно даже в бумажном виде в нескольких экземплярах. А далее пусть у начальства голова болит.
    Ответ написан
    3 комментария
  • Какой есть аналог teamviewer/anydesk с клиентом под Win и Linux, бесплатный?

    CityCat4
    @CityCat4
    Жил да был черный кот за углом...
    Есть множество аналогов, но они работают куда хуже чем AnyDesk. Вот, я делал тестирование маем прошлого года, может сейчас чего лучше стало:

    Проетстировано:

    Remote Management System (RMS) - https://rmansys.ru (российское ПО, номер в реестре Минсвязи - 456)
    AeroAdmin - https://www.aeroadmin.com
    imPcRemote - https://remote-control-desktop.com
    LiteManager - https://litemanager.ru (российское ПО, номер в реестре Минсвязи - 1961)
    AnyDesk - https://anydesk.com

    Рассматривалось только ПО, имеющее версии как под Windows, так и под Linux, и обеспечивающее возможность соединения с клиентами:

    находящимися за NAT
    обладающими нулевыми знаниями в ИТ
    не требующие установки

    Проверялся только режим Linux (клиент) ↔ Windows (хост), то есть имитировалась ситуация, когда сотрудник, имеющий при себе ноутбук с Windows, находится на выезде и к нему должен подключиться с Linux сотрудник, находящийся в офисе.

    Общим недостатком всех программ под Linux является наличие где-то просто большого, а где-то реально ОГРОМНОГО списка зависимостей. Эту проблему решает только установка из пакета или сборочного файла, для Gentoo есть только net-misc/anydesk.

    Кроме того, у всех протестированных программ не работает передача индикации смены раскладки клавиатуры с клиента на хост. То есть при нажатии Ctrl-Shift (Alt-Shift) фактически раскладка переключается, но отображения этого не происходит. Передача отображения смены раскладки с хоста на клиента происходит нормально.

    RMS

    Распространяется в виде файла агента rms-agent.exe и файла для Linux rms-viewer. Бета-версия, поэтому в консоль постоянно выводит отладочный лог. Бесплатная лицензия требует паузы в несколько минут между переподключениями. Отвратительная скорость, особенно при подключении по 3G. Настройки по умолчанию сбивают с толку - ты не видишь ни локального, ни удаленного курсора. Иногда клиент безо всяких причин аварийно завершает работу по SIGSEGV. При завершении сессии с одной стороны вторая сторона почему-то об этом уведомления не получает и продолжает считать, что она подключена.

    AeroAdmin

    Распространяется в виде файла AeroAdmin.exe и по утверждениям разработчиков, работоспособен в Wine. Проверка эти утверждения не подтвердила, в wine 7.8 aeroadmin.exe аварийно завершается сразу же после запуска.

    Info: [16:34:06 / aeroadmin.cpp 1106] mode: 0
    20220520 16:34:06 [376 / service.cpp:597] !hService
    20220520 16:34:06 [376 / service.cpp:529] Installing service: "Z:\tmp\AeroAdmin.exe" s -sid 1
    012c:fixme:service:svcctl_ChangeServiceConfig2W SERVICE_CONFIG_FAILURE_ACTIONS not implemented: period 60 msg (null) cmd (null)
    0198:fixme:process:WTSGetActiveConsoleSessionId stub
    019c:fixme:ver:GetCurrentPackageId (017DFF00 00000000): stub
    Info: [16:301ac:fixme:wtsapi:WTSEnumerateSessionsW Stub 00000000 0x00000000 0x00000001 020DECB0 020DECA8
    01ac:fixme:wtsapi:WTSEnumerateSessionsW Stub 00000000 0x00000000 0x00000001 020DEADC 020DEAE0
    4:06 / aeroadmin.cpp 900] run_as_admiwine: Unhandled page fault on read access to FFFFFFFF at address 005B5DD6 (thread 0198), starting debugger...

    imPcRemote

    Распространяется в виде ZIP-архива impc_admin.zip для Linux и файла impcremoteinstant_user.exe для Windows. Ужасное некачественное изображение, страшная топорная оболочка, все напоминает VNC-клиенты образца начала 2000-х годов (впрочем, вполне возможно, так оно и есть). Скорость соединения приемлема, но изображение просто ужасно. Никаких других возможностей типа обмена файлами нет. Зато у него одного передается индикация смены раскладки клавиатуры.

    LiteManager

    Распространяется в виде файла для Linux LiteManager и файла для Windows ROMServer.exe. Автоматически подхватывает настройки прокси из системы и ,если они включены, пытается их использовать, отключить их невозможно, они постоянно включаются заново. Программа может быть была бы и неплохой, но в отличие от всех других, она не только не отображает переключение раскладки клавиатуры, но и реально их не переключает. То есть раскладку клавиатуры можно реально переключить только на хосте. Разрыв соединения с хостом не отображается - хост продолжает считать себя подключенным

    AnyDesk

    Распространяется в виде архива anydesk-N.N.-amd64.tar.gz для Linux и файла AnyDesk.exe для Windows. Обладает достаточно быстрой скоростью отображения изменений (по крайней мере, наибольшей среди всех протестированных программ). Единственный клиент, в котором настройка подтверждения удаленного соединения на хосте включена по умолчанию. Также единственный клиент, в котором кроме собственно бинарника, в поставку входит файл .desktop (для размещения на рабочем столе графической оболочки Linux), а также файлы запуска сервиса для Linux под init и systemd и значки в формате PNG.

    Выводы

    LiteManager и AeroAdmin использовать просто нельзя - в силу наличия у них серьезных ошибок, препятствующих их нормальной работе.
    Remote Mamagement System использовать пока нельзя - в силу нестабильности работы модуля клиента - в процессе тестирования он аварийно завершался у меня два раза, систему я не уловил, но аварийное завершение клиента в процессе реальной отладки на шахте например может принести множество неприятностей.

    imPcRemote использовать пока можно - там где нет требований к передаче изображения, потому что качество там явно 8 бит, не больше. Разрабатывается небольшой канадской компанией.
    AnyDesk использовать пока можно - за исключением того, что он не передает отображение значка раскладки клавиатуры, у него нет каких-то явно выраженных недостатков, но в силу того, что это достаточно крупная немецкая компания, всегда следует иметь в виду, что она может поступить как TeamViewer.
    Ответ написан
    6 комментариев
  • Не могу найти контроллер теплого пола в стандартный подрозетник, который бы работал с home assistant и имел выносной датчик NTC6.8K?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Припаяй последовательно резистор. Кривая будет немного другая, да и пофиг. Ты же будешь настраивать не конкретные градусы, а "чтобы было комфортно". При любом датчике/контроллере это "комфортно"достигается экспериментами.
    Ответ написан
    Комментировать
  • Не могу найти контроллер теплого пола в стандартный подрозетник, который бы работал с home assistant и имел выносной датчик NTC6.8K?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    80% экономии может предоставить правильно выставленный график работы, интеграция в умный дом даёт значительно меньший эффект.
    Ответ написан
    1 комментарий
  • Как отправить вирусы на почту для проверки работы антивируса?

    @q2digger
    никого не трогаю, починяю примус
    Для таких тестов есть специальный файл, который вирусом не является но антивири его детектят - EICAR
    https://docs.trendmicro.com/all/ent/de/v1.5/en-us/...
    https://www.eicar.org/download-anti-malware-testfile/
    Ответ написан
    4 комментария
  • Возможно ли извлечь данные через =IMPORTXML с Wildberries?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Нет

    Как проверить можно ли использовать скрипты и формулы Google для получения данных https://t.me/contributor_pw/299
    Ответ написан
    Комментировать
  • Сравнение даты времени в Таблицах с переменной?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    В Таблицах даты - это числа.

    День - это 1, час - это 1/24 и т.д. Считайте-красьте сколько влезет.

    В чем была суть вашего вопроса? За вас нужно было что-то сделать? Вы даже пример данных не прислали.
    За готовыми решениями пишите на https://freelance.habr.com/ или мне - контакты по ссылке в профиле.
    Ответ написан
    2 комментария
  • Как настроить ML-модель?

    Maksim_64
    @Maksim_64
    Data Analyst
    То что вы пытаетесь сделать это называется тюнинг гиперпараметров. Так не делается конечно. в sklearn есть решения из коробки. При чем это целый этап в машинном обучении по этому целый раздел документации этому посвящен. https://scikit-learn.org/stable/modules/grid_searc...
    Там не только представлены классы но и различные методики которые используются. Изучайте там примеры есть, так что решите свой вопрос.
    Ответ написан
    Комментировать
  • Создавать телеграм ботов на С# или Python?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    В вакууме да, на python может быть чуть проще (и то далеко не факт).
    Однако написание ботов в целом довольно комплексная и не самая простая задача. Поэтому если знаете основы шарпа то пишите на шарпе - в противном случае параллельно с написанием бота придется заново учить синтаксис, что сводит на нет даже потенциальное различие в сложности.
    Ответ написан
    1 комментарий
  • Как Arduino Pro micro отследить выключение ПК?

    gbg
    @gbg Куратор тега Arduino
    Любые ответы на любые вопросы
    Способ отслеживания светодиода оптопарой, на самом деле, самый простой во многих аспектах
    - в программной реализации - вы сразу получаете сигнал на одном из пинов, так что проверка состоит из одной строчки
    - в аппаратной реализации - это три детальки - два резистора и оптопара
    - в плане надежности - это решение просто работает

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

    gbg
    @gbg Куратор тега Arduino
    Любые ответы на любые вопросы
    Почти - блокировочных конденсаторов (100n керамический, 10u электролит) по питанию не хватает. Если будете пользоваться АЦП, ему желателен LC фильтр.
    Ответ написан
    3 комментария
  • Как реализовать функцию,принимающую неограниченное кол-во объектов и возвращает новый объект,содержащий все поля со всех объектов?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    раз хочется именно с reduce() – то можно редьюсить массив аргументов до одного результирующего объекта:
    const mergeObjects = (...args) => args.reduce((acc, c) => Object.assign(acc, c));

    Использование:
    mergeObjects({a: 'A'}, {b: 'B'}, {c: 'C', a: 'AAA'})
    // { a: "AAA", b: "B", c: "C" }


    Или так, чуть почище, чтобы не менять первый исходный объект:
    const mergeObjects = (...args) => args.reduce((acc, c) => ({...acc, ...c}), {});
    Ответ написан
    7 комментариев
  • Как сократить данный код?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Тут много путей уменьшить код.
    Можно начать с того, что у вас многократно повторяется.
    К примеру,
    if message.text == '26.01':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
            bt1 = types.KeyboardButton('8:00')
            bt2 = types.KeyboardButton('9:00')
            bt3 = types.KeyboardButton('10:00')
            bt4 = types.KeyboardButton('11:00')
            bt5 = types.KeyboardButton('12:00')
            bt6 = types.KeyboardButton('13:00')
            bt7 = types.KeyboardButton('14:00')
            bt8 = types.KeyboardButton('15:00')
            bt9 = types.KeyboardButton('16:00')
            bt10 = types.KeyboardButton('17:00')
            bt11 = types.KeyboardButton('18:00')
            bt12 = types.KeyboardButton('19:00')
            bt13 = types.KeyboardButton('20:00')
            bt14 = types.KeyboardButton('21:00')
            back11 = types.KeyboardButton('Назад')
            markup.add(bt1, bt2, bt3, bt4, bt5, bt6, bt7, bt8, bt9, bt10, bt11, bt12, bt13, bt14, back11)
            bot.send_message(message.chat.id, text='Выберите удобную вам дату для записи', reply_markup = markup)

    повторяется несколько раз. Значит, этот фрагмент можно записать один раз и затем многократно вызывать, подставляя только меняющиеся элементы.

    Но и внутри видно многократное повторение нумерованной переменной, это явный признак плохого кода.
    Эту проблему можно решить разными способами. В данном случае, когда значения идут равномерно (час за часом), можно их просто сгенерировать, рассчитать, и поместить в список.
    Например:
    first_hour = 8
    last_hour = first_hour + 14
    buttons = [f'{current}:00' for current in range(first_hour, last_hour)]
    print(buttons)
    print(buttons[0])

    И этот список и передавать в нужное место вместо bt1, bt2, bt3, bt4, bt5, …

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

    Следует отметить, что вам пока рано заниматься ботами. Сделайте что-то попроще, калькулятор например, игру «быки-коровы»… я не шучу.
    Ответ написан
    Комментировать