Задать вопрос
  • Метод разработки и обновления сайта?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Все зависит от организации работы в конкретной конторе и конкретного разработчика, но лично у меня работает следующий подход:
    1. Пишем начальное тз, минимальный необходимый перечень.
    2. Говнокодим на основание п1 по принципу - "сделать быстро и чтобы работало по тз".
    3. Пушим п2 в гит и разворачиваем сайт (или компонент на сайте).
    4. Записываем фидбэк о компоненте, что не работает, как хотелось бы чтобы работало итп. Если это не критические замечания (безопасность или что то основное не работает), то откладываем изменения на месяц, квартал или год.
    5. При накопление критической массы замечаний в п4 (ну или у Вас просто не осталось задач на настоящий момент) - добавляем рефакторинг п3 в очередь задач.
    6. Повторяем 3-6 пункты до бесконечности.

    При данном режиме работы решается сразу 3 задачи:
    - Не требуется детальное тз на старте, в котором все равно не удастся предвидеть все наперед, соответственно сокращается общее время разработки и его стоимость.
    - Сайт или компонент сайта выпускается в релиз очень быстро, а значит решает задачу бизнеса так же быстро.
    - Прозрачный и прогнозируемый по срокам и стоимости режим релизов.

    Важное уточнение!

    Схема с минимальным ТЗ и говнокодом работает лишь с теми заказчиками, которым Вы подробно разъяснили, почему сроки и стоимость ниже, почему за каждую "хотелку" не указанную в тз придется доплачивать, и почему необходим рефакторинг.

    Идеальный вариант, донести до заказчика мысль, что проект будет требовать постоянного финансирования (в определенном ежемесячном объеме) на разработку новых или рефакторинг старых компонентов. В таком случае у Вас всегда будет под рукой разработчик, который сможет оперативно и за привычную стоимость решить поставленную задачу, который уже привык работать в таком режиме и ему не нужно лишний раз объяснять одно и то же.
    Ответ написан
    Комментировать
  • Что чаще всего пишут на Go?

    На Go мало фреймворков, потому что у Go просто невероятная стандартная библиотека. Например, с недавним обновлением библиотеки http я тупо не вижу смысла в сторонних роутерах. Не знаю почему, какая у языка магия, но мне почти всегда хочется написать своё решение, подходящее именно для этой конкретной задачи, чем лепить монстра из внешних зависимостей.

    Основной домен языка - это Web. Это и полноценные REST (и не только) API, это и отдельные узлы систем. А я, например, стал писать на Go и фронтенд, познакомившись с замечательной JavaScript библиотекой HTMX.

    Многие люди пишут на Go консольные приложения. Я часто всякие утилитки пишу вместо того, чтобы мучиться с корявым синтаксисом bash, от которого меня тошнит.

    Кстати, Докер и Кубернетес написаны на Go, но это, скорей исключение.

    Есть даже пакеты, позволяющие писать десктопные приложения.

    На Go отлично писать всяких ботов.
    Ответ написан
    1 комментарий
  • Как организовать автодеплой на сервер в закрытом контуре?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    к серваку не будет доступа по ssh в рабочем режиме

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

    Опять же вызывает вопросы "закрытость" контура: закрыт он от доступа извне или доступ наружу изнутри контура тоже отсутствует? Как тогда предполагается доставлять изменения?
    Ответ написан
    6 комментариев
  • Как организовать автодеплой на сервер в закрытом контуре?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Ставите на целевой сервер gitlab-runner и далее настраиваете деплой стандартным способом через gitlab ci/cd. Триггеры деплоя - стандартные PR в master ветку только мэйнтэйнером или администратором проекта/группы. Все остальные разработчики работают по стандартному github-flow режиму ну или какой у вас там рабочий процесс принят. В идеале, конечно, следует делать деплой через SSH, как вариант - прокинуть сервер гитлаба в закрытый контур через любой шифрованный тунель, а внутри контура настроить прямой доступ к нему по DNS.
    Раз стоит цель настроить деплой без SSH в закрытый контур, то значит разрешение на такой деплой уже есть. А если нет - ну, что ж, это уже ответственность ТС и что делать в этом случае это уже совсем другой вопрос.
    Ответ написан
    Комментировать
  • Как сделать звездный рейтинг?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Как много кода для простого рейтинга.

    Ответ написан
  • Возможно ли отслеживание сисадмином пользователя во время его работы в гостевой ОС на VirtualBox?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Да, конечно может - снимки экрана с запущенным виртуалбоксом делаются точно так же как и с другими приложениями. Кроме того, со стороны сетевой инфраструктуры тоже будут видны куда и какие идут запросы, если вся ваша система целиком не завернута в какой-либо тунель. Подключиться к гостевой система по RDP в рабочей сети другие не смогут без знания логина и пароля. Правильнее в данной ситуации будет договориться с вашим работодателем или руководителем о необходимости иногда в рабочее время заниматься своими делами не в ущерб основной рабочей деятельности.
    Ответ написан
    4 комментария
  • Ошибка 500 при попытке установки PunBB, как исправить?

    karabanov
    @karabanov
    Системный администратор
    500 (пятьсот ровно) это в 99% необработанное исключение. Найди в логе PHP строчку содержащую слово Fatal это и будет твоя причина.
    Ответ написан
    6 комментариев
  • Есть ли какая то определенная причина почему стоит использовать Windows Server?

    @expressrus
    На мой взгляд для .NET на Windows Server удобнее все: разработка, поддержка, администрирование. Но я использую это только для корпоративных продуктов с высокой степенью надежности.

    Для своих проектов Linux выгоднее. Здесь я имею ввиду не только отсутствие лицензии (за нее я и так никогда не платил), а требования к серверу.
    Допустим я пишу сайтик на .NET и SQL server – тогда для комфортной работы я должен оплачивать сервер минимум 8Гб оперативки и 4 ядра ЦП. Но если я напишу это же самое в связке .NET и Mysql 8.0 – это будет работать также хорошо на линуксе с 2 ядрами и 2ГБ оперативки.
    Более того на заре выхода .NET 5 сами мелкософт признавались что у IIS есть ряд ограничений и рекомендовали сайтики с высокой нагрузкой по запросам размещать на линухе.

    В вашем конкретном случае я бы остался на винде, а новые проекты на .NET уже бы писал для линукса. Причем предупреждаю последняя удобная винда это Windows Server 2022. Если вы поставите версию старее то лишитесь как минимум TLS 1.3, а если поставите новее (2025) тогда получите неудобный UI для девочек как в эпплах.
    Ответ написан
    Комментировать
  • Есть ли какая то определенная причина почему стоит использовать 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 так ломал...
    Ответ написан
    Комментировать