Задать вопрос
  • Нормально ли я отрефакторил if-else?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Я бы посоветовал оставить начальный вариант, т.к. если сделаете banchmark'и - вы увидите, что он будет быстрее вашей реализации.
    Т.к. в начальной реализации нет доп. вызова функции, а в вашей есть getRulesResult.
    Чтобы вызвать функцию - нужно положить значения в стек, а по завершению извлечь.
    За счёт этого ваша реализация будет работать медленнее.
    Но это замечание справедливо только для функций, скорость выполнения которых критична, как сортировка например.

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

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

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

    Но вы однозначно на верном пути, принятые решения и подход мне нравятся, просто у вас не совсем удачная задача для рефакторинга выбрана, решение изначально хорошее )

    Обычно, код, который нужно рефакторить выглядит во много раз непонятнее, это может быть простыня на несколько экранов монитора :)), а когда в такой простыне еще и цикломатическая сложность огромная (вложенность if'ов и for'ов большая) - такой код вообще очень трудно понять :)
    Вот тут самое то для рефакторинга.
    Ответ написан
    3 комментария
  • Стоит ли подписывать согласие на обработку персональных данных до того как прислали оффер?

    part_os
    @part_os
    Сложное в простом
    а что вас смущает? у вас есть данные, их нужно вносить в программу например hr сканер, уже идёт обработка. люди в компании начинают их смотреть. паранойя должна быть контролируемой, ваши данные уже давно у всех есть, это формальность.
    Ответ написан
    6 комментариев
  • Почему событие onchage не срабатывает для select?

    @alexalexes
    Есть события: click, change, input и т.д.
    Привязка обработчика соответствующего события с использованием атрибута тэга осуществляется с приставкой on:
    <select id="selectTheme" onchange="alert('Theme changed')">
    </select>

    Но в тоже время, привязка обработчика события с использованием addEventListener не требует указания on, берется само название события и с названием атрибута не нужно путать:
    sel.addEventListener('change', (event) => {
        	alert('Theme changed');
        })
    Ответ написан
    3 комментария
  • Как верстают сайты на React и Next?

    MrDecoy
    @MrDecoy
    Верставший фронтендер
    Верстка делается сразу в React компонентах ? Или вначале делается классическая верстка, а потом переносится в React?

    Как Вам удобнее.
    Можно заказать вёрстку на аутсорсе, а потом перевести на реакт. А можно сразу верстать на реакт компонентах.

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

    если сайт на React, там все должно быть на React или допускается сделать некоторые элементы на нативном Js

    Реакт по своей природе - библиотека, которая может быть добавлена на любой сайт.
    Что означает, что у вас может быть 90% статичной вёрстки и 10% на реакте(какие то виджиты, отдельные блоки или сложные формы).
    И наоборот.
    Как и 100% на реакте.
    Ответ написан
    Комментировать
  • Как собирать данные с медицинской аппаратуры?

    @VT100
    Embedded hardware & software.
    Судя по тому, что Вы - анестезиолог, - речь идёт о стационарных приборах в палате интенсивной(?) терапии. Значит - стоит задача получать данные "in situ".
    Первое - убедитесь, что все приборы имеют выход LAN. Так Вы получите соответствие(?) требованиям по изоляции "на шару".
    Второе - "по локоть" погружаетесь в Гугль и ищете документацию на приборы. Параллельно - ***те АХО (или как оно у Вас называется) на тот-же предмет (а так же - где куплено, чтобы ***ть мозги и продаванам).
    Третье - продумайте Т.З. на основе найденной информации.
    Четвёртое - найдя документацию и/или ПО производителей пишете нужный софт на ПК сами или с привлечением сторонних специалистов.
    Пятое - не забудьте армейское правило инициативы.

    Ежели найдутся динозавры с COM и будет их меньшинство - оставьте их, как и USB, без внимания. Совет hint000 "Начните с COM." хорош быстротой. Но содержит подводный камень изготовления и сертификации "железа" (см. п. 1).

    Техподдержка не поможет.

    Почему? Фирмы прекратили существование? Или перешли, как это нынче модно у нетрадиционных, на модель Any_Peace_Of_Shit-As-A-Service?

    P.S. Короткий ответ на вопрос - "Да, можно." Правильный - "Недостаточно исходных данных."
    Ответ написан
    2 комментария
  • Встраиваемая бд которая лучше sqlite?

    @acwartz
    Тут должна быть ваша реклама.
    Да нету их особо, SQlite да вроде бы Firebird умеют быть встроенными-переносными без лютого бэкграунда.
    На мой взгляд у вас либо неправильная постановка задачи либо непраильная организация данных, либо тупо лень-матушка делать данные удобными для быстрого поиска.
    Кроме того есть прям-прям специальные решения для быстрого полнотекстового поиска по текстам, вряд ли среди них есть встраиваемые легковесные решения, ElasticSearch тот же.
    Ответ написан
    1 комментарий
  • Как создать ограничение доступа к просмотру записи?

    Fragster
    @Fragster
    помогло? отметь решением!
    Создаешь политику: https://laravel.com/docs/8.x/authorization#creatin...
    описываешь логику (ну, чтобы там автор, админ и назначенные могли видеть, автор и админ - менять, или любую свою), и в контроллер добавляешь регистрацию этой политики в конструктор: https://laravel.com/docs/8.x/authorization#authori...
    Ответ написан
    Комментировать
  • Приложение для анализа диска Linux?

    deepblack
    @deepblack
    NCurses Disk Usage

    sudo apt install ncdu
    Ответ написан
    Комментировать
  • Можно ли в запросе получить сразу 2 записи, по параметру, который известен в 1?

    BorLaze
    @BorLaze
    Java developer
    Именно две или первая нужна постольку поскольку нужно поле mytarget из нее?

    Если важен только последний запрос, можно сделать так
    SELECT result 
    FROM mydata 
    WHERE id < '127' AND mytarget = (SELECT mytarget FROM mydata WHERE id = '127')
    ORDER BY id DESC 
    LIMIT 1


    Если же нужны именно обе строки, тогда UNION
    SELECT result, mytarget 
    FROM mydata 
    WHERE id = '127'
    
    UNION 
    
    SELECT result, mytarget 
    FROM mydata 
    WHERE id < '127' AND mytarget = (SELECT mytarget FROM mydata WHERE id = '127')
    ORDER BY id DESC 
    LIMIT 1


    Насчет быстрее, сказать трудно; но обычно два запроса выполняются дольше одного, пусть и сложного.
    Ответ написан
    2 комментария
  • Как передать URL в javascript?

    @Vlad16
    Веб-программист
    В Laravel есть хелпер route. Чтобы его использовать надо дать маршруту имя. https://laravel.com/docs/8.x/helpers#method-route Вот посмотрите.
    Ответ написан
    3 комментария
  • Какие есть универсальные форматы (кроме pdf), в которые можно конвертировать html?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    PDF все используют не просто так.
    Есть, конечно, разные, даже docx и сам html умеют уже открывать телефоны. Но нужен ли вам этот геморрой?

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

    gbg
    @gbg Куратор тега Системное администрирование
    Любые ответы на любые вопросы
    Делать наоборот - при логине пользователя запрашивать AD по LDAP - если разрешает логин - логинить.
    Ответ написан
    Комментировать
  • Как найти на гитхабе живые форки?

    deepblack
    @deepblack
    insights -> network
    60d06c2da2b99542547445.png


    Там можно бегло оценить какой форк стоит выбрать.

    Либо как вариант автоматизировать это дело с помощью парсера реп (при условии что это оправданно)
    Ответ написан
    1 комментарий
  • Как реализовать систему входа по карте или qr коду?

    gbg
    @gbg Куратор тега Системное администрирование
    Любые ответы на любые вопросы
    Наймите специалиста, он вам все сделает. Причем начиная с техзадания.

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

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

    Можете украсть идею у ЦППК - пользователь покупает билет, потом сканирует одноразовый код с монитора на турникете, "активируя" билет (так как код меняется, это доказывает, что человек физически стоит у конкретного турникета). Потом он может предъявлять уже другой код в качестве билета для проходя через турникеты и контролеров.

    Короче, это огрызок техзадания, а не вопрос, не по формату ресурса, к сожалению. У нас не приветствуются неконкретные вопросы и развязывание дискуссий и брейнштормов.

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Какие есть области без гитов

    Те, где кода на столько мало, что вести его историю нет необходимости.

    Без фрейморков

    Те, где фреймворки не помогают в решении задачи.

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

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Слишком объемный вопрос для тостера, причем обычно ответы на такие вопросы стоят достаточно больших денег...
    Обратитесь в аудиторскую компанию, там ответят на первую половину вопроса, заодно проконтролируют, чтобы данные о прибыли были правильными.
    На вторую половину вопроса Вам ответят в рекламном агентстве, можно и на фриланс к специалистам по продвижению обратиться.
    Ответ написан
    Комментировать
  • Какое направление выбрать, если не хочешь до конца жизни пилить формочки и гонять json?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    За свою жизнь мне довелось поработать в веб-разработке, автоматизации газопроводов, бухгалтерии, автоматизации бизнеса и даже дизайнером рекламы и журналистом. И останавливаться пробуя новое пока не собираюсь) При этом образование у меня - радиотехника.

    Образование не ограничивает круг возможных профессий, а жизнь иногда складывается так, что приходится заниматься совершенно неожиданными вещами. Выбирайте ту специальность, которая ближе Вам в данный момент, интернет здесь вряд ли подскажет оптимальный выбор, тем более что у каждого здесь свой собственный путь и своя правда - кто-то оканчивает ВУЗ и всю жизнь работает по специальности, а кто-то ищет себя в самых неожиданных областях.
    Ответ написан
    1 комментарий
  • Как правильно определять тип объекта в Typescript (React)?

    search
    @search
    мама говорит что я особенный
    Тайпскрипт правильно ругается потому что таргет события не обязательно должен быть дом элементом. События могут так же порождаться, например XHR запросами.

    Я бы на вашем месте сделал так называемую type guard функцию, в которой убеждался бы что таргет действительно элемент дом. Все элементы дом наследуются от объекта HTMLElement. Это можно использовать для проверки:

    const isHtmlElement = (v: any): v is HTMLElement => v instanceof HTMLElement;


    далее мы можем использовать эту функцию для проверки нашего таргета:

    const eventHandler = (e: Event) => {
      if (!isHtmlElement(e.target)) {
        return;
      }
      // Вот здесь мы можем смело работать с таргетом как с ДОМ Элементом
      e.target.classList.toggle('active');
    }


    УПД

    Еще информация к размышлению.

    Финальный код, сгенерированный тайпскриптом, не содержит информации о типах. В рантайме нельзя узнать тип интерфейса, выполнив, например `peremennaya instanceof VashInterfeis`. Но всегда можно создать type guard функию, которая будет определять что объект именно нужного типа по каким-то косвенным признакам (например по наличию определённых полей в объекте). Так как код guard функции невозможно провертить статическим анализватором, тайпскрипт не может гарантировать того что ваша guard фунция верна и не пропускает всё подряд. Поэтому, хорошим тоном является писать такой код, который не нуждается в подобных проверках. Это возможно. Код при таком подходе становится стройнее и легче для осмысления.
    Ответ написан
    1 комментарий
  • На каком этапе роста проекта приходится использовать Raw запросы?

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

    в общем: все зависит, универсального ответа нет.

    ну и стоит отдельно определиться, что подразумевается под сырыми запросами: квери-билдер или прямой доступ к базе. последнее я практически не использую.
    Ответ написан
    Комментировать
  • Должен ли бэкенд разработчик разрабатывать админку?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Никто никому ничего не должен за исключением того, что прописано в законах и договорах.
    Ответ написан
    Комментировать