Задать вопрос
  • Есть ли какая то определенная причина почему стоит использовать Windows Server?

    1. В dotnet на Linux нет ничего костыльного, так ещё он дешевле, производительней, и админить легче.
    И работает всё гораздо предсказуемее и без сюрпризов (опыт разработчика)
    2. Да, Windows Server всё ещё используется.
    Представь, что ты огромная международная корпорация с десятками тысяч сотрудников и у тебя на Windows Server крутится куча приложений, которые запускаются только на нём, AD, Exchange, и ещё процессы тесто завязаны на Винду.
    Будешь ли ты резко отказываться от микрософта и переезжать на Линукс?
    Вопрос риторический


    Почему я задал этот вопрос, я как системный администратор, столкнулся с клиентом, с которым я сцепился из за того, что его разработчики и бывший сотрудник сисадмин решил установить .NET + C# + Mono + Nginx и все это на линукс.

    Естественно меня это взбесило, и я просто отказался все это поддерживать, потому что извините, но .NET проще поддерживать на Windows Server

    Очень странно, что они решили использовать mono вместо dotnet (core), но если ты по каким-то своим внутренним предрассудкам отказываешься изучать что-то новое - вопросы в первую очередь к тебе, как к специалисту.

    Возможно, твои заказчики хотели перенести какое-то Легаси на Linux+mono без переписывания на актуальную версию dotnet.
    https://learn.microsoft.com/ru-ru/dotnet/fundament...
    Уверен, что там действительно mono?
    Какие конкретно у тебя сложности с настройкой произошли?
    Или ты в основном на Windows специализируешься?
    Ответ написан
  • Есть ли какая то определенная причина почему стоит использовать Windows Server?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Только для тех случаев, когда зависимости ПО работают только под виндой. Во всех остальных случаях удобнее и практичнее линукс. Сегодня dotNet спокойно ставится под линуксом из пакетов и отлично там работает как и любое другое ПО.

    Если Windows Server настолько проиграл Linux в серверных войнах, то почему Microsoft не закрывает этот отдел? Значит сервера на Windows, используются.

    Потому что деньги и экосистема. В рамках своей экосистемы продавать больше услуг клиентам выгоднее и позволяет заработать денег. В этом и смысл экосистем.

    Почему я задал этот вопрос, я как системный администратор, столкнулся с клиентом, с которым я сцепился из за того, что его разработчики и бывший сотрудник сисадмин решил установить .NET + C# + Mono + Nginx и все это на линукс.
    Естественно меня это взбесило, и я просто отказался все это поддерживать, потому что извините, но .NET проще поддерживать на Windows Server

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

    Ge1i0N
    @Ge1i0N
    Можете создать php файл, если header нужный прокинете, а можете через php-консоль выполнить, лежит тут /bitrix/admin/php_command_line.php?lang=ru
    Ответ написан
    1 комментарий
  • Как из строки с путём получить элемент массива?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Прежде чем изобретать велосипед, стоит посмотреть уже существующие решения.
    У этого метода даже название своё есть - Array Dot Notation. Есть php-библиотека с таким же названием. И она не одна

    https://yandex.ru/search/?text=dot+notation+array
    Ответ написан
    1 комментарий
  • Полная разница sudo su, sudo -i, sudo -s?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    - Разница 1: Почти, sudo -i также меняет HOME на /root, и читает логин скрипты root юзера.
    - Разница 2: Верно, действия с sudo -i и sudo -s логгируются в журналах юзера, а sudo su - нет.
    - Разница 3: Верно, sudo позволяет настраивать ограничения для команд через sudo -i и sudo -s, но не для sudo su (так как sudo su переключает юзера в root).
    Еще не понял разницу между
    sudo su
    sudo su -

    - sudo su - переключает юзера на root, но окружение при этом не является полным root окружением.
    - sudo su - - эмулирует полный вход юзера root (login shell). Будут прочитаны все файлы конфигурации, которые обычно читаются при входе root (profile, .bash_profile, .bashrc и что-то там еще). Насколько я понимаю, это то, что нужно Вам при работе от имени юзера root.
    И где можно смотреть логи пользаков при использовании sudo -i, sudo -s?

    Viewing and monitoring log files, можно еще заюзать journalctl.
    Ответ написан
    7 комментариев
  • С какого раздела можно начинать читать Algorithms in Java от Седжвика если уже знаешь джаву?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Кроилово ведёт к попадалову. Читайте полностью.
    Ответ написан
    Комментировать
  • Можно ли добавить условие при регистрации аккаунта на сайте?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Это вообще реально сделать?
    Реально
    Ответ написан
    8 комментариев
  • Как сделать условие внутри echo?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Так?
    $categories = get_categories([
        'taxonomy' => 'video',
        'orderby' => 'ID',
        'order' => 'DESC',
        'number' => '8',
    ]);
    
    foreach ($categories as $c) {
        $vQuality = get_field('video_quality', 'category_' . $c->term_id);
    
        if ($vQuality === '4K') {
            echo '<img src="/image2.jpg">';
        }
        
        elseif ($vQuality === '1080') {
            echo '<img src="/image3.jpg">';
        }
        
        else {
            echo '<img src="/image1.jpg">';
        }
    
        echo '<p>' . esc_html($c->name) . '</p>';
    }
    Ответ написан
    5 комментариев
  • Часть кода из паттерна - компоновщик. Имеем - абстрактный класс, и класс - наследник. Собственно, как такое происходит?

    https://www.php.net/manual/ru/language.oop5.visibi...

    Видимость из других объектов:
    Объектам одного и того же типа доступны защищённые и закрытые члены класса друг друга, даже если это разные экземпляры. Это связано с тем, что внутри таких объектов уже известны конкретные детали реализации.
    Ответ написан
    7 комментариев
  • Как перетаскивать элемент мышкой, но чтобы следовал за мышкой именно той областью на которой был клик?

    @ksnk
    У элемента есть крайне удобный метод getBoundingClientRect, который почти все проблемы позиционирования решает в меру элегантно.
    var disp=[0,0]; // смещение
            var listener = function (e) {
    
                full_info_div.style.left = (disp[0]+e.clientX) + "px";
                full_info_div.style.top = (disp[1]+e.clientY) + "px";
            };
    
            full_info_div.addEventListener('mousedown', e => {
              let b = full_info_div.getBoundingClientRect();
              disp= [b.left-e.clientX,b.top-e.clientY];
              document.addEventListener('mousemove', listener);
               document.querySelector("html").setAttribute("style", "user-select: none");
    
            });
    ...
    Ответ написан
    Комментировать
  • Взлом пароля черз БД, хэш-пароля?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Создаете юзера с известным паролем. Потом полученный хэш тупо вписываете нужному юзеру. Были времена, пароль рута некоего сервера mysql так ломал...
    Ответ написан
    Комментировать
  • Взлом пароля черз БД, хэш-пароля?

    SamDark
    @SamDark
    Yii2 core team
    1. password_hash — это bcrypt формат. Если есть доступ к базе, то делаете нового юзера с паролем, забираете его хеш и просто перетираете им password_hash в базе у нужного юзера.
    2. auth_key — это не релевантно.
    3. confirmation_token — это не релевантно.
    Ответ написан
    4 комментария
  • Как заставить cron работать внутри docker контейнера?

    smilingcheater
    @smilingcheater
    Вы некорректно задаёте команду для крона. Надо задавать полные пути для всех файлов
    * * * * * /usr/bin/php /var/www/laravel/artisan schedule:run


    В dev/null также пусто.

    Спасибо, посмеялся. Вы понимаете что такое /dev/null?
    Если вам нужны системные логи запуска команды - так и перенаправьте их в конкретный файл...
    Ответ написан
    8 комментариев
  • Объясните суть Systemctl в ubuntu?

    @pfg21
    ex-турист
    в консольной команде первое слово - это имя програмки, которую запускаешь.
    остальные слова передаются програме в качестве параметров.

    соответственно systemctl status ufw запускает systemctl и передает ей параметры status ufw - получаем статус работы сервиса ufw.service от менеджера системы.
    а ufw status запускает ufw и передает ей параметр status - получаем "внутренний" статус работы непосредственно от ufw
    Ответ написан
    2 комментария
  • Как заменить текст в файле .csv с помощью PHP?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Угу. Сначала понаставим @, чтобы скрыть все ошибки, а потом будем голову ломать, почему ничего не работает и ошибок не показывает.

    А вообще, это делается в одну строку.
    file_put_contents($outfilename, str_replace('Российский рубль', 'RUB', file_get_contents($infilename)));
    Ответ написан
    Комментировать
  • Кто может разъяснить магию ssh agent forwarding?

    Lynn
    @Lynn
    nginx, js, css
    Так это буквально в документации написано


    -i identity_file
    [...] You can also specify a public key file to use the corresponding private key that is loaded in ssh-agent(1) when the private key file is not present locally.


    https://man7.org/linux/man-pages/man1/ssh.1.html
    Ответ написан
    2 комментария
  • Может ли соединение между 2 серверами на Linux быть одновременно и локальной сетью и мостом?

    Afranius
    @Afranius
    Из говорящих дольше живут те, что говорят меньше.
    А зачем такие извращения? Кабель от провайдера в свитч, а от свитча на оба компа.
    И устанавливай PPPoE - соединение по очереди хоть с первого, хоть со второго (если только пров привязку по маку не делает). Потому что одновременно с обоих PPPoE работать не будет.

    Вообще задача не понятна. Если первый комп настроен как шлюз, то при наличии локальной сети и поднятом PPPoE интернет и так будет на обоих. Зачем нужна другая сессия?
    Ответ написан
    1 комментарий
  • В чем разница между выводом шаблона через контролер и напрямую?

    nefone
    @nefone
    Junior PHP разработчик
    Я думаю если используется фреймворк, то и правильнее будет пользоваться его возможностями

    Примерно код контроллера должен выглядеть так:
    <?php
    
    namespace App\Controllers;
    
    class Account extends BaseController
    {
        public function index()
        {
            $data['title']   = 'Аккуант';
    
            return view('account_header_menu, $data);
        }
    }
    Ответ написан
    Комментировать
  • Генератор случайных чисел ИНОГДА (очень редко!) возвращает NaN?

    adeshere
    @adeshere Автор вопроса
    РАН, Фортран, временные ряды
    Спустя полтора года, завеса тайны все-таки начала спадать!
    Во-первых, благодаря вот этому совету Дмитрия Чернова, баг удалось локализовать. А именно, Дмитрий предположил, что проблему надо искать в контексте x87 FPU, и что добавление
    пары asm- команд
    Прямую вставку asm- команд в код мой фортран-компилятор не умеет, но все необходимое делает ключ Qfp-stack-check
    в подозрительных местах приведет к вылету программы по Access Violation именно в том месте, где что-то пошло не так. А не спустя какое-то время, когда я снова полезу в FPU и получу Nan, например, в ГСЧ. Эта идея сработала, и я получил Access Violation в совершенно безопасной (как мне казалось)
    функции
    SUBROUTINE SCREEN_PUTL0_TIME(TEXT)
    USE ABD_INC;  USE HEADERS
    character, intent(in) :: text*(*)
    integer*4, save :: isw=0
    c
    c     При самом первом вызове таймера isw=0, функция вернет 0
    c     При последующих (isw=1) - вернет интервал от момента инициализации
    t=timer_mm(5,isw) 
    isw=1
    if (t < $Screen_counter_time) return
    c    В крайнем  случае (если в момент начала внешнего цикла таймер уже
    c    инициализирован) функция первый раз напечатает % сразу при старте,
    c    а не через $Screen_counter_time после запуска цикла
    c   
       call screen_putl0(text)
       t=timer_mm(5,0)         ! Реинициализация таймера после печати строки
    end

    Эта функция печатает на экран % выполнения (он передается в строке TEXT), но с интервалом не менее $Screen_counter_time. Для проверки времени, прошедшего с прошлой печати, вызывается самодельный таймер t=timer_mm(5,isw) Первый параметр функции - это номер таймера (их там у меня целый массив для разных нужд). А второй параметр работает так: если isw=0, то таймер засекает время, а в остальных случаях возвращает число секунд, прошедших с момента инициализации счетчика. Ну вот так было когда-то сделано, чтобы обойтись одной функцией вместо двух....
    Таким образом, когда я дергаю инициализацию таймера, то его возвращаемое значение меня не интересует. Именно это и происходит в предпоследней строке кода выше:
    t=timer_mm(5,0)
    Результат выполнения функции как бы присваивается переменной t, но больше она нигде не используется . Как оказалось, именно здесь и была зарыта собака.

    А дальше уже было проще. В коде под спойлером у меня есть вызов функции типа real*4, от которого мне был нужен только побочный эффект (инициализация таймера), а вот возвращаемое значение функции нигде не используется. В принципе,
    это легально
    По идее, компилятор в такой ситуации должен после вызова функции восстановить стек x87 FPU, а возвращаемое значение никуда не копировать. В других местах кода у меня есть аналогичные вызовы (когда возвращаемое значение не используется), и это не приводит к каким-то багам. Ну и язык официально нигде не требует, чтобы возвращаемое значение функции обязательно было куда-то использовано ;-)

    Но как оказалось, именно это и провоцировало проблему. Этот фрагмент библиотеки у меня состоит из кучи очень небольших (5-10 строк) взаимосвязанных функций с частично повторяющимся кодом. Оптимизатор делал из них жуткое спагетти, дробя эти функции на еще более мелкие фрагменты и инлайня их направо и налево. И, видимо, где-то в ходе этих оптимизаций он "забывал" восстановить (очистить?) стек FPU.

    В общем, для исправления бага оказалось достаточно заменить локальную переменную t на глобальную. Про нее оптимизатор не знает - будет ли она нужна, или нет. Поэтому он просто вынужден извлекать из сопроцессора результат FP-вычисления, чтобы запихнуть его в это место ;-)

    Огромное спасибо Дмитрию, который сначала выдвинул правильную версию происхождения бага, а потом помог его точно локализовать и убрать! Тестовая программа работает уже час и пока ни одного Nan-а не появилось. ;-)
    Ответ написан
    Комментировать