• Этот код считается трудночитабельным?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Для повышения читабельности разбеыте код на отдельные функции. Напромер так:
    <?php
    function getTags($strTag) {
        return array_combine(
            array_map(
                fn($attribute) => array_shift(explode("=", $attribute)),
                explode(" ", trim($strTag))
            ),
            explode(" ", trim($strTag))
        );
    }
    
    function getAttributes($strTag) {
        return array_map(
            fn($attribute) => array_pop(explode("=", $attribute)),
            getTags($strTag)
        );
    }
    
    preg_match_all('/(?<=\<img).*?(?=>)/', $this->html, $match, PREG_PATTERN_ORDER);
    
    $this->tags = array_map(
        fn($strTag) => [
            "original" => "<img " . $strTag . ">",
            "attributes" => getAttributes($strTag)
        ],
        $match[0]
    );


    https://phpize.online/sql/mysql57/undefined/php/ph...
    Ответ написан
    1 комментарий
  • Как сложить несколько видео в сетку?

    @pantsarny
    xstack
    ffmpeg -i input0 -i input1 -i input2 -i input3 -filter_complex "[0:v][1:v][2:v][3:v]xstack=inputs=4:layout=0_0|w0_0|0_h0|w0_h0[v]" -map "[v]" output

    hstack + vstack
    ffmpeg -i input0 -i input1 -i input2 -i input3 -filter_complex "[0:v][1:v]hstack=inputs=2[top];[2:v][3:v]hstack=inputs=2[bottom];[top][bottom]vstack=inputs=2[v]" -map "[v]" output
    Ответ написан
    6 комментариев
  • Как можно использовать одну систему macos на разных устройствах?


    Подключать ноут дома к мониторам и аксессуарам каждый раз вообще не вариант

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


    Чтобы все синхронизировалось, чтобы то, что я начал делать дома я мог продолжить делать вне дома.

    В случае кода это решается гитом.
    В случае других вещей - синхронизацией настроек соответствующих инструментов и разными облаками.


    может установить хакинтош

    Гуглишь, проверяешь что твоё железо точно совместимо (хотя скоро в любом случае будет не совместимо из-за перехода на ARM), устанавливаешь.


    хочу домой купить iMac

    Флаг тебе в руки, но зачем вопрос задавать то?

    То что у тебя дома будет отдельный комп с макосью, у тебя никаким автомагическим образом работа не будет синхронизирована на разных устройствах
    Ответ написан
    1 комментарий
  • Yii2. Как обновить много строк в БД?

    @PiloTeZ
    ...
    У вас ключ в field одинаковый, поэтому и возвращается только последнее значение.
    В качестве ключа я предполагаю должен быть $data->type или что-нибудь типа того

    <?php 
              $form = ActiveForm::begin([]);
              foreach($model as $data) {
                        $form->field($data, 'value[]')->textInput();
              }
              Html::submitButton('Сохранить', ['class' => 'btn btn-success']);
              ActiveForm::end();
    Ответ написан
    Комментировать
  • Почему код не работает когда змейка кушает яблоко?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    У вас координаты не совпадают
    63d1130e75ab8105557932.png
    Ответ написан
    6 комментариев
  • Зачем нужна сортировка пузырьком?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Но зачем писать этот сложный алгоритм, когда можно сделать как в коде ниже
    и результат будет тот же.
    Уверен что данный алгоритм был приведен для примера или в образовательных целях. Здесь важен не код, а алгоритм, по которому работает сортировка. Во всех функциях сортировки внутри функция, похожая на пузырьковую сортировку, в той или иной степени, просто написанная на C и скомпилированная в виде готовой функции. Подробнее можно посмотреть тут.
    Ответ написан
    3 комментария
  • Как вычислить виновника из-за которого отваливается интернет с какой-то периодичностью в маленькой сети?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Такого рода проблемы все и всегда решаются однотипно.
    1. Необходимо сформулировать критерии наличия проблемы.
    Как именно пропадает интернет, насколько часто, как надолго. Это нужно для диагностики. поиска причины и определения ушла ли проблема после принятия каких либо мер.
    2. Делить проблему на части и проверять части по отдельности.
    Самый эффективный способ делить - это пополам. Отсекаем часть сети и проверяем наличие проблемы в обеих частях (если есть возможность) или в одной из частей.
    3. Когда найден минимальный проблемный участок, который уже нельзя или бессмысленно делить - заменяем его.
    4. Помним, что чаще всего сложные проблемы - это композиция нескольких более простых. которые по отдельности могут не проявляться. В вашем случае может быть проблема, связанная с нагрузкой на роутер, например, которую создает один из услов из-за плохого контакта обжима и большого объёма биттых пакетов. Устранив одну из причин, вы, может быть, сделаете проявления проблемы реже, но не устраните её полностью. К примеру, если замените ротуер, битые пакеты будут всё равно будут нагружать вашу сеть и портить ее производительность, но это будет не так очевидно. Переобжав коннектор вы избавитесь от части нагрузки, но еслив ваш ротуер работал на переделе, то лишний вафай-клиент или тяжелый видос в сети сможет его снова нагрузить до критического снижения производительности.

    Итак, пробежимся по перечисленным пунктам сначала.
    1. Критерии. Поиск критериев - это часть решения. Обычно в этом случае нуно сорать необходимую статистику. Есть куча софта, который это умеет делать, но пинг есть всегда под рукой.
    Для этой тулзы есть две полезных опции: ключ для бесконечного пинга и размер пакета.
    В разных ОС эти ключи немного разные, поэтому ищите их отдельно, у меня нет винды под рукой, поэтому не стану на этом заострять.
    Скаж лишь, что пинговать лучше большими пакетами, жалетально превышающими размер TTL, прописанный в роутере. Тогда такой пинг будет реже проскакивать в периоды хорошей связи, то есть выловит больше пролблем.
    Пинговать нужно в отдельных окнах сразу несколько хостов:
    - ya.ru - этот хост всегда отвечает на пинги и выявит проблемы с DNS
    - 8.8.8.8 - это гугловый DNS-сервер, тоже всегда отвечает на пинги, покажет, что связь с инетом есть даже если DNS, прописанныйна компе не правильно работает.
    - 192.168.0.1 - или какой там IP у вашего роутера. Нужно. чтбы отделить проблемы с инетом от проблем с внутренней связностью до роутера
    - 192.168.0.x - ip одного из компов в сети. Я обычно пингую несколько компов, доступных через баксимальное число потенциально проблемных узлов - ethernet-розеток, свичей, вайфай-соединений... Этот пинг поможет понять где проблема, во внутрисетевой связности или в последней миле.

    Учтите, что проблемы часто бывают комбинированные и каждое сочетание симптомов будет свидетельствовать о раных проблемах.
    Да, тревожным принаком может служить не только пропадание пакетов, но и скачки в длительности их возврата, особенно если такие длительности достигают 500мс и выше. Но и скачки от 3мс до 250мс тоже будут свидетельствовать о каких-то проблемах.

    Запускать пинг на всех компах лучше одновременно и на некоторое время. Например минут на 20. Потом по статистике будет видно сколько где пакетов пропало.

    2. Если критерии наличия проблемы позволяют, то можно попробовать отрубать части сети и смотреть наличие проблемы. Это я в том смысле, что если проблема происходит в среднем раз в пару-тройку часов, то отрубать на многие часы части сети при диагностикем ожет быть неприемлемым.
    Редкеи пробемы дольше отлавливать. Но напоминаю, что критерии можно детализировать, ведь если пакеты у вас пропадат относительно редко, то скачки времени их возврата могут случаться чаще и подсвечивать проблему. Также можно сделать рамер пакета близким к максимальному, это должно тоже в некоторых случаях участить проявление проблемы.
    Иногда не мешает нагрузить сеть комированием по локалке большого файла. В линуксе можнно с помощью утилиты tc послать большой поток рандомных байт на любой сокет..
    3. Плавающие проблемы случаются из-за плохого обжима, перебитого жверью кабеля, перегрызенного UTP в плинтусе, из-за умиращих конденсаторов в блоке питания роутера (БП может не выдавать необходимого при нагрузках тока, но вольтметром такая неисправность не будет различима без нагрузки). Вообще старые (да и не только) роутеры могут страдать поплывшими электролитическими конденсаторами не только в блоках питания.
    Хорошо, когда можно подменить роутер.
    4. ну с четвертым пунктом ничего не пососветуешь, только разделать и тестировать все по отедльности и в разных сочетания и да поможет нам ктулху.

    А для тех, кто дочитал этот опус до конйа - интересная задачка. Что пингуют эти команды, как и почему?
    ping 1.1
    ping 2130706433

    Тех, кто знает, попрошу не спойлерить=)
    Пусть для кого-то будет сюрпризом этот дивный мир=)

    UPD. Простите за адское количество опечаток в тексте. Писал в спешке и с непривычной клавиатуры. Исправлю всё попозже. Не ожидал, что многим ответ придётся по душе. Вроде ж накапитанил как мог.
    Ответ написан
    5 комментариев
  • Свой сервер аналог Skype есть ли такой?

    Noizefan
    @Noizefan
    Skype это проприетарное ПО. Свой «сервер» поднять не получится.
    Ближе всего к твоему запросу будет скорее всего Matrix и подобные
    Есть поддержка и голоса, и видео, и шифрование, и мосты в другие мессенджеры, и кроссплатформенность, и возможность изоляции
    Ответ написан
    5 комментариев
  • Сколько комбинаций из цифр 5678?

    @dmshar
    А вы в учебник по комбинаторике заглядывали?
    В первой формуле перемножаемые числа 1,2,3,4 это не цифры, из которых вы комбинируете. Это именно элементы элементарной формулы из комбинаторики. Отсюда ответ на ваш вопрос следует автоматом.
    Тег "IT образование" - это тег для вопросов о том как и чему учиться, что-бы стать ИТ-специалистом, а не место где задают вопросы по основам основ ИТ, коими и является комбинаторика.
    Для таких вопросов есть свой тег.
    Ответ написан
    7 комментариев
  • Можете подсказать простейший бесплатный сервис управления идеями?

    GavriKos
    @GavriKos
    При должном желании и потребности это оформляется хоть в экселе и гуглдоках
    Можно и трелло адаптировать.
    Ответ написан
    2 комментария
  • Что купить macbook air 13" M1 16/256 или macbook pro 13" M1 16/256?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Аир - там нет вентиляторов и он очень удобный для поездок. Как рабочая машинка - девайс отличнейший. Производительности хватает, даже на докер. Прошку имеет смысл брать только ради большего объема оперативной памяти, более производительного процессора, экрана большего размера и ради возможности подключить два монитора. А вот если надо работать много с виртуализацией х86 - то тут мак не подходит, на арме виртуализация х86 очень дорогая, потери производительности примерно 90%.
    Ответ написан
    Комментировать
  • Нужен совет, как прокинуть vpn в vpn самыми простыми манипуляциями?

    ValdikSS
    @ValdikSS
    Самыми простыми манипуляциями, если речь идёт о VPN-протоколе, использующем TCP/UDP (а не собственный, как, например, PPTP GRE или IPsec без инкапсуляции в UDP) — сделать перенаправление порта VPN на IP-адрес VPN-сервера средствами iptables/nftables/xinetd/netsh portproxy. VPN-программу необходимо настроить на IP-адрес хоста, на котором выполнено такое перенаправление.
    Преимущество этого способа в простоте настройки из-за отсутствия vpn-в-vpn, независимости от таблицы маршрутизации и состояния сети.
    Ответ написан
    Комментировать
  • Нужен совет, как прокинуть vpn в vpn самыми простыми манипуляциями?

    @Drno
    Покупаем Кинетик. ПОдключаем его к вашему инету, ПК к кинетику
    На кинетике подключаемся клиентом к ВПН серверу(в РФ)
    Делаем это подключение "Основным"
    Профит
    Ответ написан
    2 комментария
  • Нужен совет, как прокинуть vpn в vpn самыми простыми манипуляциями?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    гугл vpn chaining

    виртуалка проще всего

    по (2) вряд ли есть ибо нечасто надо
    но конечно все можно закодить , на том же Go в полне могут быть пакеты
    знаю пакет wireguard to proxy, популярен ибо единственен

    вот и обзор подогнали
    https://www.cactusvpn.com/ru/beginners-guide-to-vp...
    Ответ написан
    Комментировать
  • Как на php показать какой отрезок времени назад был опубликован пост?

    neuotq
    @neuotq
    Прокрастинация
    Используйте библиотеку Carbon
    $postTimestamp = '2023-01-01 00:00:01';
    echo Carbon::parse($postTimestamp)->diffForHumans(Carbon::now());
    // "5 days before"
    
    //Локализация
    Carbon::parse($postTimestamp)->locale('ru')->diffForHumans(Carbon::now());

    Только изучите документацию подробнее, важно чтобы даты были в одном часовом поясе лучше всего хранить в UTC 0 и соответственно сравнивать тоже в нем. А уже если нужно вывести конкретную дату(дату и время, а не разницу), то тут перед выводом делать смещение, Carbon это тоже умеет.
    Ответ написан
    Комментировать
  • Можно ли заменить on на true после валидации Laravel?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    Почему не можете?

    <input type="checkbox" name="check" value="1">

    $request->validate([
      'check' => 'sometimes|bool',
    ]);


    Если нужно и false передавать, то добавить скрытое поле с тем же именем перед чекбоксом:

    <input type="hidden" name="check" value="0">
    <input type="checkbox" name="check" value="1">


    =========

    Кроме того, можно использовать FormRequest
    Чекбокс передается, если он отмечен, значит можно проверить присутствует ли он в данных и обновить их перед валидацией
    protected function prepareForValidation()
        {
            $this->merge([
                'check' => $this->has('check')
            ]);
        }
    Ответ написан
    Комментировать
  • Как скрыть пароль в php-коде?

    @humoured
    Вы всё на свете найдёте в коробке с карандашами
    Пароль нужно выносить из кода в отдельный файл конфигурации. Dotenv, например.
    Такой файл добавляется в .gitignore, не коммитится в общую кодовую базу и каждый разработчик будет наполнять его своими (или общими) данными. Ваш личный пароль не попадёт в чужие руки.
    Ответ написан
    31 комментарий
  • Как захостить сайт на NodeJS на Windows сервере?

    CityCat4
    @CityCat4 Куратор тега Сетевое администрирование
    //COPY01 EXEC PGM=IEBGENER
    Арендовал Windows VDS

    Бааагатенький Вы Буратилло, однако - оплачивать лицензию на Windows Server только потому что не хочется изучать
    Linux и CentOS всякие

    Windows - это не про сервер. Обычно, какие задачи решает Windows:
    - запустить игрушку
    - посмотреть кинушку
    - показать порнушку
    И вот это у него реально получается лучше чем у "Linux и CentOS всякие". А серверу - серверово и разворачивать сайт на винде - примерно то же, что гулять ночью, одному по незнакомому окраинному кварталу...
    Ответ написан
    8 комментариев