• Как правильно обучаться в начале пути?

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

    "Насчёт паттернов, принципа SOLID и подобных штук": для их изучения необходим опыт, хотя бы говнокодинга, и точка приложения, хотя бы тот же собственный говнокод, в котором груда классов перепутана между собой. Разгребание этой груды позволит применить те принципы на практике, а без практики их изучать бесполезно вовсе.
    Ответ написан
    2 комментария
  • Как правильно использовать Docker в Ubuntu?

    Adamos
    @Adamos
    Судя по нику, стоит посмотреть на laradock.
    Никакие панели ему не требуются, файлы настроек правятся в любимом файл-менеджере любимым редактором, а уж команды запустить-перезапустить, если даже их не удается запомнить, можно в скрипт записать, в конце концов, и запускать из того же файл-менеджера...
    Ответ написан
    Комментировать
  • Как создать свой образ Linux для размноживания на других АРМ?

    Adamos
    @Adamos
    чтобы не делать такую процедуру вновь

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

    Adamos
    @Adamos
    Недавно, делая импорт с такими же проблемами, просто написал пару функций и применял их к каждому такому полю:
    private function makeLowIdList($array)
        {
            return array_flip(array_map(fn($value) => mb_convert_case($value, MB_CASE_LOWER), $array));
        }
    
        private function getId($idList, $title, $label)
        {
            $lowTitle = mb_convert_case($title, MB_CASE_LOWER);
            if(!array_key_exists($lowTitle, $idList)) {
                throw new Exception('wrong ' . $label . ': ' . $title);
            }
            return $idList[$lowTitle];
        }
    
        public function import($data) 
        {
            $payerIds = $this->makeLowIdList(Payer::getTitles());
            foreach(...) {
                try {
                        ...
                        $payerId = $this->getId($payerIds, $row['payer'], $row['orderNumber'] . ' payer');
                        ...
                } catch(Exception $e) {
                    $error = $e->getMessage();
                    if(!in_array($error, $errors)) {
                        $errors[] = $error;
                    }
                }
            }
            return $errors;
        }
    Ответ написан
    Комментировать
  • Как переобразовать string в const unsigned char* в C++?

    Adamos
    @Adamos
    Вообще-то для сравнения std::string с C-строкой лучше не вытаскивать указатели из string, а использовать ее std::string::compare.
    Ответ написан
    Комментировать
  • Права для локальной разработки должны быть 777?

    Adamos
    @Adamos
    WSL зачеркиваем, для Debian все решается элементарно:
    1. Заводим пользователя без прав админа, под которым работаем над сайтом.
    2. Лезем в настройки веб-сервера и указываем там того же пользователя и его группу вместо www-data.
    Файлы сайта, соответственно, не в /var/www, а в домашней папке этого пользователя.
    И никаких проблем с правами, хоть 700 ставь.
    Ответ написан
    Комментировать
  • Какую формулу использовать?

    Adamos
    @Adamos
    Деление 17 монет на троих:
    15 монет делим на троих поровну, 2 монеты отдаем первому и второму из скидывавшихся.
    Не идеально справедливо, зато без бесконечных дробей, которые иначе неизбежны.
    При неравных долях сортируем скидывавшихся так, чтобы раньше получал внесший большую долю.
    Собственно, при этом должна восстановиться исходная картина - как же так, скидывались поровну, а в сумме 17 ;)
    Ответ написан
    Комментировать
  • Как убрать анонс или подробно в битрикс?

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

    Adamos
    @Adamos
    Не маяться подменами, которые зарубают почтовые сервера, а тупо включить в тело письма ссылку
    <a href="mailto:user@mail.ru?subject=Вопрос&body=%3E Текст из формы">Ответить</a>
    Ответ написан
    3 комментария
  • Как проверить ошибки при копировании rsync?

    Adamos
    @Adamos
    Сам rsync может удалять скопированные файлы, если вам это надо.
    Правда, он оставит пустые папки, придется подчищать, например, по таким рецептам:
    https://unix.stackexchange.com/questions/78375/mov...
    Кстати, ключ -aoz избыточен, -az достаточно. См. расшифровку -a.
    Ответ написан
    Комментировать
  • Стоит ли дальше учиться программировать?

    Adamos
    @Adamos
    Когда я учился, нам давали Бэйсик и Паскаль.
    Языки вымерли, специалисты нужны по-прежнему.
    Тот, кто просто выучил язык - это еще не программист и уж совсем не специалист.
    И да, я тоже слышал, что С++ вот-вот вымрет... лет двадцать уже.
    РНР - лет десять, та же история, пол-интернета на нем по-прежнему работает...
    Теперь вот Питон.
    Доткомы били-били, не разбили. Блокчейн бил-бил, не разбил. Пришли нейронки, хвостиком машут! Берегись, айти!
    Ответ написан
    Комментировать
  • Как из php передать ошибки в js?

    Adamos
    @Adamos
    Ответ написан
    Комментировать
  • Телеграм боты и пользователи?

    Adamos
    @Adamos
    ТГ бот - это API сервера ТГ.
    Создатель дает запрос "отправить по такому-то ID такое-то сообщение" - получает ответ "отправлено такое-то сообщение по такому-то ID".
    Дает запрос "получить сообщения пользователей" - получает "такие-то ID прислали такие-то сообщения".
    Где тут что-то "видеть"? Хочешь - записывай ответы да "видь" сколько угодно...
    Ответ написан
  • Как скопировать файл из терминала или MC в буфер обмена?

    Adamos
    @Adamos
    В огороде бузина, в эмуляторе консоли MC, а буфер - в DE.
    И никакой связи между MC и DE нет и быть не может.
    Хочется тягать в телегу файлы из файлового менеджера - пользуешься файловым менеджером DE, можно будет хоть drag-n-drop-ать мышкой.
    Ответ написан
    4 комментария
  • Нужно ли стремиться обнулять переменные и по возможности не создавать их копий в проектах php?

    Adamos
    @Adamos
    В РНР не было принято над этим заморачиваться раньше, а сейчас и вовсе потеряло смысл.
    Потому что уж такие детские оптимизации, как копирование массивов и объектов только при изменении, давно реализованы и отлажены.
    Ответ написан
  • Какой вариант структуры файлов моделей в Laravel лучше?

    Adamos
    @Adamos
    Вариант 3.
    Не валить в app вообще.
    Создать свою папку под свои классы - MyCompany.
    В ней программировать модули раздельно (предполагая, что они в таком виде, возможно, пойдут и в другие проекты):
    MyCompany\Blog\Models\Post.php
    MyCompany\Shop\Models\Order.php
    Кстати, и в БД потом таблицы смотреть куда проще, когда мухи с котлетами не перемешаны.
    Ответ написан
    Комментировать
  • Как/где нынче визуально рисуют сайты?

    Adamos
    @Adamos
    Фокус в том, что сейчас давно не принято собачить в страничке HTML и тут же стили.
    Стили собираются в CSS-фреймворк, и на странице остаются только классы.
    А потом дизайн рисуется реактивным фреймворком из компонентов, и те классы уходят в шаблоны компонентов, где упоминаются ровно столько раз, сколько необходимо.
    Так что на самой странице не остается ничего, кроме вызова фреймворка (ну, и шаблона самого сайта, разумеется).
    И все это аккуратно разобранное - уже не требует рутинных правок, так что автоматизировать писанину просто незачем, а WYSIWYG тут только навредит.
    Ответ написан
    Комментировать
  • Как управлять по сети загрузкой ОС?

    Adamos
    @Adamos
    Можно наколхозить загрузку по умолчанию минимальной ОС, которая будет выполнять единственный скрипт - запрашивать по сети выбор загрузчика и запускать grub-reboot с его номером.

    Но вообще говоря, придумывая нетривиальное шаманство, лучше объяснить - зачем. Могут подкинуть вариант не извращаться и сделать все проще.
    Ответ написан
    4 комментария
  • Какие требования к VPS/VDS для PHP-фреймворков?

    Adamos
    @Adamos
    Просто в качестве иллюстрации химерности "минимальных требований" - тот самый тариф на Таймвебе, два сайта на Ларавель и Октябре, который суть та же Ларавель. Показания панели Таймвеба по нагрузке на процессор:
    6542324e23f34845203856.png
    Ответ написан
    5 комментариев
  • Что использовать для генерации картинок с текстом?

    Adamos
    @Adamos
    Для задач обработки картинок (в том числе и накладывания на шаблон текста) на серверах традиционно, независимо от языка, используется библиотека ImageMagick.
    Для ноды у нее есть одноименная обвязка, реализует ли она ваши конкретные хотелки - изучайте сами.
    Ответ написан
    Комментировать