• Можно так сделать с interface?

    Vindicar
    @Vindicar
    RTFM!
    Ты хочешь странного. Но ты можешь сделать класс-посредник, который будет дружественным к "владельцу" (основному классу), и будет предоставлять доступ к защищенным методам владельца. А в остальные функции уже передавать этого посредника. Этакий Public Морозов.

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

    kirk_novozhilov
    @kirk_novozhilov
    Lead Bitrix Developer, Bitrix mentor
    Итого,
    Если нужна кастомная цена товара:
    массив товара должен выглядеть как
    array(
        'PRODUCT_ID' => 699, 
        'NAME' => 'Товар 1', 
        'PRICE' => 800, 
        'CURRENCY' => 'RUB', 
        'QUANTITY' => 5
        'CUSTOM_PRICE' => 'Y'
    )

    если нужно тянуть из каталога:
    array(
        'PRODUCT_ID' => 699, 
        'NAME' => 'Товар 1', 
        'CURRENCY' => 'RUB', 
        'QUANTITY' => 5,
        'PRODUCT_PROVIDER_CLASS' => '\CCatalogProductProvider'
    )
    Ответ написан
    Комментировать
  • Какую роль играют float и double в скобках?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Такая запись имени типа в скобках в выражении - это явное приведение типа. Тут вы указываете компилятору, что выражение надо преобразовать вот к такому вот типу (флоат, в данном случае).

    float нужен вам в начале, потому что вещественные константы имеют тип double. Поэтому у eps/2.0 и 1.0 в первом цикле имеют тип double, все вычесляется в double. Преобразовав одно из выражений в float вы получаете то, что вам надо. Без этого все вычисления идут в double и ответ находится не тот. На самом деле там float при сравнении все-равно расширяется до double но на результат сравнения это не влияет в данном случае.

    Еще, вместо явного приведения типов, можно поставить f после вещественных констант, чтобы указать компилятору, что это float:
    while (1 + eps/2.0f != 1.0f){

    Тогда вычисления будут во float и ответ будет правильный.

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Она не нужна при системном обучении.
    Ответ написан
    Комментировать
  • Как переименовать файлы с определенным условием в Linux?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В Linux есть замечательная утилита rename. Ну, точнее, их две: одна входит в пакет util-linux, другая - скрипт на базе perl-модуля File::Rename. В deb-дистрибутивах нужный нам скрипт устанавливается в составе пакета rename и также имеет имя второе file-rename (а версия из util-linux имеет имя rename.ul). В других дистрибутивах может быть иначе, поэтому смотрим внимательнее параметры запуска (можно запустить rename без параметров и убедиться, что это нужный вариант).

    Синтаксис предельно простой: rename регулярное_выражение_замены_perl имена_файлов

    Синтаксис rename.ul для сравнения: rename что_заменить на_что_заменить имена_файлов

    Вот что можно сделать для решения задачи (в предположении, что других точек, кроме как перед расширением, в имени файла нет):

    rename 's/-\w+\././' *

    Этот скрипт намного удобнее многоэтажных однострочников, да и пригодится в жизни ещё не раз.
    Ответ написан
    7 комментариев
  • Почему не заходит на сайт по айпи?

    akelsey
    @akelsey
    Нужно добавить заголовок Host, для браузера придется ставить расширение.
    Обычно на одном айпи адресе могут хостится несколько сайтов (от пары до десятка или сотни)
    Так называемые виртуальные хосты получают заголовок Host откуда извлекают информацию, к какому сайту пользователь хотел обратиться. Если веб сервер настроен именно так, то по айпи зайти не выйдет или будет выбрасывать на дефолтный сайт (зависит либо от настройки администратором, либо от вебсервера, часто выдает первый по алфавиту, могут быть любые другие варианты)
    Ответ написан
  • За сколько можно прокачаться не очень хорошему системному администратору до DevOps инженера?

    vldmrmlkv
    @vldmrmlkv
    Systems engineer
    На секунду показалось, что как будто это я писал года 3 назад. Был похожий стек и те же вопросы, пока окончательно не выгорел. За год до этого полностью перешёл на Linux. Потом прошел курсы и поменял работу.

    По теме. Тупой тот, кто не хочет и не может учиться. Рутина без развития демотивирует, работа и профессия должны нравиться. Вы уже начали, значит вопрос решается и это хорошо. Возможно потеряли пару лет - стабильность затягвает, у меня так и было, но теперь вы знаете что делать дальше. Нужно составить план и делать. Попробуйте канбан доски в trello - мне очень зашло. Будет некая игрофикация процесса обучения, приятно когда закрыл ещё одну "таску" и видно объем проделанной работы. Ну или можно купить какой нибудь крутой курс слёрма, но лучше с начала самому - всё основное есть в свободном доступе. Ссылки в конце.

    Начать я бы рекомендовал с linux как основная ОС, а на работе внедрять IaC и мониторинг - ansible, terraform, docker, docker-compose, gitlab, AWX, Portainer, Prometheus, ViktoriaMetrics, Graylog, Loki. Те же агенты zabbix можно раскатывать ansibl'ом, автоматизировать это все в gitlab ci. Провижинить вм terraform'ом. В zabbix api можно много чего автоматизировать. Например, автоматическое добавление новых хостов. Поднять всё, что можно в docker, разобраться с docker-compose. Кубер можно локально посмотреть minikube, поднимается за 10 минут. Для кубера поставьте Lens - не тру конечно, но в нём наглядно видна структура сущностей кубера.

    Пару ссылок по теме:
    https://infinite.education/skillset/linux_administrator
    https://www.youtube.com/@KirillSemaev
    https://github.com/milanm/DevOps-Roadmap
    https://www.youtube.com/@ADV-IT/playlists
    https://github.com/bregman-arie/devops-exercises
    https://landscape.cncf.io/?grouping=category&zoom=60
    https://kubernetes.io/ru/docs/tutorials/kubernetes...
    Ответ написан
    Комментировать
  • Может ли прерывание прервать выполнение конструктора / деструктора в С++?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Может ли прерывание прервать выполнение конструктора / деструктора в С++?

    Да, конечно может, как и любой другой код, явно не защищённый от прерываний.

    нужно ли в конструкторах / деструкторах защищать код критическими секциями?

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

    @code_panik
    В выражении p = p2 мы выполняем неявное преобразование встроенных типов, для которых в стандарте не описаны правила преобразования. То есть такое преобразование не гарантировано, но может быть реализовано компилятором, например
    #include <type_traits>
    using namespace std;
    
    int main() {
        static_assert(std::is_convertible<int(*)[2], int(*)[]>::value, "Non-convertible");
        return 0;
    }

    компилируется в gcc 12.2, в clang 15.0 - ошибка.

    Существует старое не принятое предложение о закреплении такого преобразования стандартом.
    Ответ написан
    1 комментарий
  • Какие варианты миграции корпоративной почты с Яндекс на MS Exchange 2019?

    vlrusanov
    @vlrusanov Автор вопроса
    Системный администратор, Администратор 1С
    Всем спасибо, ушел от Exchange. Все сделано на iRedMail
    Ответ написан
    Комментировать
  • Как изолировать один физический диск от двух других?

    3r1k
    @3r1k
    the quieter you become, the more you hear
    Может проще на виртуалку поставить линукс и тренироваться сколько хочешь.
    Ответ написан
    2 комментария
  • Как в ubuntu запускать скрипт при старте?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    1. гуглить enable rc.local ubuntu
    2. написать systemd скрипт автозапуска.
    Ответ написан
  • Стоит ли разработчикам платить за баги?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Не платите. Тогда все разработчики просто уйдут туда, где платят. А вы останетесь изучать теорию, объясняющую почему и как появляются баги, пока не осознаете их неизбежность.
    Ответ написан
    1 комментарий
  • Не работает деструктор. В чем ошибка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Не работает деструктор

    "Не работает деструктор" -- это когда программу компилируешь, запускаешь, а деструктор не делает того, что в нём написано. У тебя же программа не компилируется. Из-за того, что в настройках компилятора стоит "трактовать предупреждения как ошибки" и "предупреждать о неэффективном коде С++". Ну и вдобавок, предупреждение тебе правильно говорит, что если ты не реализовал конструктор копирования и оператор присваивания для класса самостоятельно управляющего памятью, то жди проблем, когда начнёшь копировать объекты этого класса.
    Ответ написан
    6 комментариев
  • Является ли одинаковой скорость 2-х фрагментов кода (доступ к элементу массива по индексу)?

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

    В любом случае, такой уровень экономии на спичках имеет реальную ценность только после того, как все остальные способы оптимизации программы уже выполнены, потому что это недалеко от реализации на ассемблере и интринсинках.
    Ответ написан
    1 комментарий
  • Как задать размер листа при отправке на печать с помошью PHP или JS?

    @Sozdavan
    В PHP вы можете использовать библиотеку TCPDF, чтобы установить размер страницы и создать файл PDF с нужными размерами. Вот пример того, как установить размер страницы 6x4 см:
    require_once('tcpdf.php');
    
    $pdf = new TCPDF('P', 'cm', array(6, 4), true, 'UTF-8', false);
    
    // ... your code to add content to the PDF ...
    
    $pdf->Output('example.pdf', 'I');


    В JavaScript вы можете использовать библиотеку jsPDF для создания и сохранения файла PDF с нужными размерами. Вот пример того, как установить размер страницы 6x4 см:

    var doc = new jsPDF('p', 'cm', [6, 4]);
    
    // ... your code to add content to the PDF ...
    
    doc.save('example.pdf');


    Обе эти библиотеки также поддерживают другие функции для добавления текста, изображений и другого содержимого в документ PDF
    Ответ написан
    6 комментариев
  • Насколько этично предлагать заказчику переделать сайт, который я же и сделал года 3-4 назад?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Нормальному специалисту свойственно расти. По мере роста открываются новые фичи и ты видишь, что то, чем ты гордился несколько лет назад - на самом деле хрень и рукожопость.
    А подойти - так же как к любому вопросу в бизнесе - показав заказчику потенциальную выгоду, если она конечно есть.
    Ответ написан
    Комментировать
  • Как организована отрисовка ui в dos?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Насколько я помню (могу ошибаться, дело было лет так тридцать назад, в 1993 году), в досе текстовый экранный буфер находится по адресу B800:0000. Там он идет топорно просто - байт символ, байт атрибут, байт символ, байт атрибут. Атрибут - это цвет символа, цвет фона, яркость, мигание. Извращался я будь здоров, помнится.

    Во даже чего нашел - структура байта атрибута! Файлик - 1995 года :)
    F_BLACK  equ   0
    F_BLUE   equ   1
    F_GREEN  equ   2
    F_CYAN   equ   3
    F_RED    equ   4
    F_MAG    equ   5
    F_BROWN  equ   6
    F_LGRAY  equ   7
    F_INTENS equ   8
    F_YELLOW equ  0Eh
    F_WHITE  equ  0Fh
    B_BLACK  equ   0
    B_BLUE   equ  10h
    B_GREEN  equ  20h
    B_CYAN   equ  30h
    B_RED    equ  40h
    B_MAG    equ  50h
    B_BROWN  equ  60h
    B_LGRAY  equ  70h
    B_BLINK  equ  80h
    Ответ написан
  • Почему может тормозить простейший запрос?

    @rPman
    В чем отличия в серверах? количество оперативной памяти? мажорная версия mysql? настройки?
    есть возможность сравнить конфигурации mysql прошлого сервера и нового с помощью SHOW VARIABLES и уже сравнив их на примере каких-нибудь буферов можно что то менять.

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

    Вот посмотри тут как предлагают проверить, влезает ли индекс в память или нет (подправь там условие чтобы твои таблицы были а не все)
    --------------------------------

    Так же предлагаю провести эксперимент, замени SELECT page_id FROM blitz_tasks WHERE stage = 1533 на список значений в константах (1,2,3,4,...), и если это поможет (а должно так как запрос теперь лезет только в одну таблицу и не трогает другие индексы) то будешь дробить свои запросы, избавляясь от вложенностей и нескольких индексов в одном запросе
    Ответ написан
    8 комментариев