• Как устранить утечку памяти в node-cron?

    любопытно, может динамический реквайр вас сломал? Реквайр вне исполняемого кода не равен реквайру внутри. В реквайр синглтоны кладут без состояния и их хочешь там подрубай хочешь тут. А у вас может быть реквайр создает новый экземпляр дб и постоянно это происходит
  • Связка laravel + bootstrap + vue пойдёт для web 2.0 стартапа?

    Александр Аксентьев, именно. Но они начнут. Потому что "пора делать деньги". И я буду это исправлять. Потому что "как надо - не получилось".

    Ваш сценарий отлично подходит для курса молодого бойца, когда боец на испытательном сроке в крупной конторе через боль приобретает навыки "как должно быть". Стартапы таковыми не являются, это уже стало понятно. Стартапы хотят наверняка и результат.
  • Связка laravel + bootstrap + vue пойдёт для web 2.0 стартапа?

    Александр Аксентьев,

    https://www.youtube.com/shorts/o-pwWRuIagQ

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

    Как-то раз столкнулся, что в json можно запихнуть эмоджу какую-то или что там было уже не помню, или какой-то вася умудрился json в json положить, что-то такое. Это гарантировало мне тогда что придет ровно то что отправили.

    Не обязательно, но можно.
  • Связка laravel + bootstrap + vue пойдёт для web 2.0 стартапа?

    Константин Б., понравилось

    Вот бы увидеть такую благодать когда бек и фронт не сидят в коде а вместе дружной командой вангуют над апи схемой, которая ТОЧНО НЕ ИЗМЕНИТСЯ и получают текстовый документ с такой схемой. Пример готовой схемы пожалуйста.

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

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

    Мне тут немного аналогия нравится из жизни. Чтобы в розетке был ток (движение - жизнь!) - нужно немного сдвинуть по фазе каждый следующий оборот. То есть не "собирать всех вместе", а наоборот - соединять их по парам, продолжая процесс. Собирать вместе надо чтобы а) "общий обзор" устроить б) утвердить авторитет лектора. Чем часто пользуются директора рассказывая "как много мы всего достигли". В итоге вроде как сотрудники должны гордится собой, а на деле директор получается этот как его, супермен, а остальные - спасибо что пришли.
  • Какой парсер HTML на PHP выбрать?

    Симфонийский не проходит тест (это обертка, но под капотом - он)

    По их рекомендации установил и "masterminds/html5" (написано - если не хотите долбаться с ошибками \DOMNode - установите) - и все равно то же самое. Правда там написано, что он будет его использовать если Doctype указан html5... Короче такой себе плУгин, где гарантия, что разработчик всё правильно делал, парсим мы обычно шлако-сайты.

    $document = $dom->loadHtmlOrFail(''
        . '<div>'
        /**/ . '<a href="#">2020 &lt; </a>'
        /**/ . '<a href="#">2020 < </a>'
        . '</div>'
    );
    
    $domDiv = $dom->first($document, 'div');
    
    $domDivChild = $dom->child($domDiv, 1);
    $this->assertEquals('<a href="#">2020 < </a>', $domDivChild->ownerDocument->saveHtml($domDivChild));


    // Failed asserting that two strings are equal.
    // Expected :'<a href="#">2020 < </a>'
    // Actual   :'<a href="#">2020 </a>'


    А вот simple_html_dom этот тест проходит.
  • Какой парсер HTML на PHP выбрать?

    Дмитрий Б, блииин, а сколько не гуглил симф-пакет! Конечно еще этот надо проверить!
  • Какой парсер HTML на PHP выбрать?

    Нет, тоже плохой.

    Делает те же ошибки, что и XPath и другие парсеры, стоит напороться на кривой символ, всё летит к чертям, эрроры и варнинги.

    Можно вычистить html с помощью tidy, но это затраты времени, а парсеры должны работать быстро.

    Короче, фаворитом был и остается https://simplehtmldom.sourceforge.io/

    Кому детали, напишите в телеграм @gzhegow, покажу тесты которые парсеры у меня не прошли. А вот фаворит прошел.

    Вот этот не прошел никто:
    $document = str_get_html(''
        . '<ul class="a">'
        /**/ . '<li>a1</li>'
        /**/ . '<li>'
        /******/ . '<li>b1</li>'
        /******/ . '<li>b2</li>'
        /**/ . '</li>'
        /**/ . '<li>a2</li>'
        /**/ . '<li>'
        /******/ . '<li>b3</li>'
        /******/ . '<li>b4</li>'
        /**/ . '</li>'
        . '</ul>'
    );


    Парсеры упрямо начинают думать, что в <li> нельзя положить <li> и думают что там на два элемента больше. Зарраза, их задача - ПАРСИТЬ, а не думать.
  • Каким образом правильно выкачать из контейнера содержимое тома?

    gzhegow
    @gzhegow Автор вопроса
    Почти все понял, еще бы нормальный удобный способ автоматизированного копирования содержимого папок

    Сейчас у меня в makefile есть команды extract/build/checkout. Первая удаляет все волумы и собирает заново, выбрасывая конфиги на хост по указанным путям в папку ./extract/

    вторая копирует из папки ./extract/ и папки ./replace/ (которую для проекта уже самостоятельно пишешь) конфиги в папки на хосте, которые станут волумами и собирает уже с волумами, и делает обновление уже внутренних там всяких композеров, pip-ов и npm-ов

    и третья просто перезапускает контейнеры, делая то же самое обновление, когда ветки переключаешь гитом

    Так-то все ясно, кроме одного - необходимость для extract запускать докер композ без волумов, т.к. иначе они замонтируются пустыми внутрь и копировать будет нечего.

    Автоматизация плачет от того, что нужно ставить коммент на волумы при экстракте, потом раскоментировать их и запускать уже build.

    Тут есть какое-то решение?

    ====
    ps.
    # - ./my.cnf:/etc/mysql/my.cnf # Using a custom MySQL configuration file


    вчера Percona ругался, что при этом /etc/my.cnf становится "world-writable" и не запускал его совсем, поскольку у меня Docker Desktop на виндоус, не понимаю как форсировать нужные права, кроме как в Dockerfile делать COPY файла вовнутрь с переписыванием прав.
  • Каким образом правильно выкачать из контейнера содержимое тома?

    gzhegow
    @gzhegow Автор вопроса
    zohan1993, пример отличный.
    Делаю все именно так. С сожалением константирую, что в случае с логами наружу выпадают файлы из контейнера - логи. Обновленные после создания контейнера я полагаю.

    Однако моя цель получить возможность удобно настраивать внутренние файлы контейнера находясь на хосте, не заходя в каждый контейнер отдельно.

    То есть логи он наружу выбрасывает. А вот когда я такой же волум цепляю например на папку var/lib/mysql, чтобы сохранить ее содержимое на хосте, если контейнер будет пересоздан или удален - он ничего в эту папку не копирует. и более того - записывает пустоту этой папки вовнутрь.

    могу я созвониться с вами в telegram? обговорим условия помощи с вашей стороны
  • Компиляция Vue-приложения в обычный js скрипт? Или не возможно?

    gzhegow
    @gzhegow Автор вопроса
    Антон Антон, да, это верно. вопрос сможет ли PHP сервер после этого выдать HTML файл, в котором содержится [script src] который в [div id="app"] разместит приложение или мне в любом случае придется подымать сервер node.js, чтобы отдавать контент. Спасибо
  • Компиляция Vue-приложения в обычный js скрипт? Или не возможно?

    gzhegow
    @gzhegow Автор вопроса
    И потом вы можете создать index.html, написать [script src="build.js" /] и отдельно открыв в браузере index.html вы увидите приложение?

    Или на проде все равно понадобится подымать node.js сервер на отдельном порту
  • Компиляция Vue-приложения в обычный js скрипт? Или не возможно?

    gzhegow
    @gzhegow Автор вопроса
    ну я гуглил как правило по запросам "convert vue to js", "build vue application" и подобным и в 60% случаев попадал на официальный сайт, где начинался рассказ про поддержку браузерами, про vueify + browserify, которые для меня то незнающего выглядят как "необходимые пакеты", а не как "в этом есть такое-то но можно и без него"
  • Компиляция Vue-приложения в обычный js скрипт? Или не возможно?

    gzhegow
    @gzhegow Автор вопроса
    После того как вы закончили разработку на
    npm run dev

    Как вы превращаете его в самодостаточный js файл?
    Хорошо, что у вас получается, как вы это делаете?
  • Компиляция Vue-приложения в обычный js скрипт? Или не возможно?

    gzhegow
    @gzhegow Автор вопроса
    Ссылки постить и я умею. И открывать. И даже гуглить. Не помогло, сколько не лайкай.
    Ты можешь объяснить, как ты понимаешь эти штуки в режиме "вот это тебе пока не нужно", а вот "сюда нажми дважды".

    Не буквально, но в общем случае. npm run dev работает, закончил проект, какие дальше мои действия?
  • Как правильно делать счетчики на сайте?

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

    Прошу модератора снять решение с этого ответа ниже есть более оптимальный вариант с json_decode('"$value"');
  • Как правильно делать счетчики на сайте?

    В случае если мы хотим видеть конкретное лицо - кто куда когда нажал - это будет таблица "действия" и там значит "кто", "что", "когда" сделал. Плюсы - нет проблем с одновременной записью, пиши хоть тысячу людей одновременно. Минусы - огромная растет таблица, и когда надо вывести сумму - ее надо пересчитывать, а это не очень быстро происходит на базах из пары миллионов. Т.е. пересчет придется делать периодически и данные несколько неактуальные.

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

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

    Поэтому предлагается для счетчика использовать Redis, в котором это будет "чуть чуть" быстрее, что увеличит допустимую нагрузку на каждый из счетчиков. И каждые n-секунд уже повышать счетчик в базе данных, чтобы если счетчик перестанут переключать и редис его подчистит - данные остались надолго.

    При показе смотрим есть ли в редисе, нет - берем из базы.