• Разве Composer бесполезен в 2017?

    clockworkbird
    @clockworkbird
    leko.team
    Если тимлид не ставил задач по подключению композера и настройки тестов, то получается, что вместо реальных задач вы занимались самодеятельностью и потратили на это ресурсы компании (свое рабочее время).
    Junior-вакансия это прощает, но если хотите работать в команде, нужно понимать, что в работе важен результат, а не самолюбование.
    Кроме того, исходя из того, что проект старый, высок риск того, что вы подключив композер что-то сломали. Например, кто-то когда-то "пофиксил" код в копипастенной библиотеке (как бы это дико не звучало), а вы выкачали ее исходную версию из репозитория и т.д. - моментов, на самом деле много.
    Может это разовая задача по внешнему проекту на 3 рубля и какой смысл в ней городить огород, если ее нужно сделать за пару часов, отдать клиенту и забыть.
    Конечно, тимлид хоть и динозавр, но будет обоснованно не доволен. Странно, что он не контролировал ход работы - такую самодеятельность в процессе работы нужно пресекать на корню.

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

    Рефакторинг проекта и модернизация процесса разработки - замечательные, но отдельные задачи, которые требуют предварительного обсуждения и согласования.
    Сделай поставленную задачу, предложи вариант развития (композер и тесты), обсудите с командой и тимлидом, запланируйте внедрение - все будут довольны.
    Ответ написан
    2 комментария
  • Есть ли реальный профит от использования актуальных фронтенд-технологий?

    DeoZ
    @DeoZ
    Веб-разработка и Реклама
    Если говорить конкретно про фронтенд, то главные плюсы от использования библиотек и фреймворков:
    • Разделение на компоненты, которые можно переиспользовать, а значит ускорить последующую разработку и доработку, улучшить масштабируемость
    • Лучшая работа с перерендергином компонентов (обновлением частей страницы), когда может обновиться не вся страница, а только её часть. Это даёт лучшую скорость реакции на действия пользователя, что улучшает его впечатление от работы с сайтом. И это особенно критично, если идёт работа с какими-то частями со сложными вычислениями на странице.
    • Плюс-минус схожая архитектура между приложениями, написанными на одном фреймворке. Что упрощает работу команды над проектом и даёт возможность быстрее вкатываться в работу новичкам.
    • Широкий выбор дополнительных подключаемых библиотек, реализующих практически что угодно по вашему запросу на проекте. Если особая кастомизация решения не нужна, то подключается всё мгновенно и у вас на сайте хоть диаграмммы рисуются, хоть таблицы, хоть формочки. Да, раньше для этого использовался, например, тот же jQuery (хотя что уж раньше, они недавно даже новую версию выпустили), но он тяжелее, содержит много ошибок и не соответствует новым стандартам. А стандарты - это не для моды, это безопасность, скорость работы и кроссбраузерность.
    • Это возможность использовать централизованные менеджеры состояний, когда у тебя всё хранится в одном месте, а не где-то там, плюс кэшируется, обрабатывается там же и так далее.
    • Отделение бизнес-логики от UI, что даёт возможность править их независимо, а не переписывать весь модуль, когда модель ответа немного поменялась.
    • Зачастую лучшая поддержка и обновление фреймворков и библиотек, документация, что является не только вопросом удобства, но и безопасности. Устаревшие технологии могут быть очень уязвимы.
    • Если говорим про сборщики, то возможность всё кастомизировать настолько, чтобы не приходилось раскладывать руками по папкам и чтобы вся сборка, которая может быть большой, автоматически чистилась, минимизировалась и делилась на части. А это существенное ускорение загрузки у пользователя.
    • Не говоря уж про совсем "модные" нынче микрофронтенды, когда каждая часть приложения может писаться и поддерживаться независимо друг от друга и, при желании, на любых фреймворках, в том числе и на ванильном JS.

    В общем, можно много чего ещё привести, что положительного дало бизнесу развитие фронтенда и переход на фреймворки, модульность, сборщики и автодеплой. Что-то для Вас конкретно будет более существенным, что-то совсем не важным или не понятным. Но главное, что каждая из технологий, каждая часть стека должна выбираться последовательно и мере необходимости бизнесу. Для этого начинать работу над проектом должен высококвалифицированный специалист с пониманием архитектуры и требований к масштабируемости и безопасности.
    Вполне возможно, что для визитки хватит простого HTML+JS, для витрины товаров можно использовать Tilda, для простого интернет-магазина или корпоративного портальчика - Bitrix или WordPress. Но часто бывает, что у бизнеса есть или появляются особые требования, аппетит растёт по мере работы сайта, вот тогда выясняется, что необходимы фреймворки, позволяющие гибко реализовать практически любые кастомные решения.
    Ответ написан
    1 комментарий
  • Есть ли реальный профит от использования актуальных фронтенд-технологий?

    @koder_1
    Битрикс программист
    Полагаю, среднестатистический корпоративный сайт/интернет-магазин имеет скорее интерфейс с элементами js, нежели интерфейс полностью завязанный на js.
    Для большинства задач реактивные фреймворки не нужны.

    Если разобрать типовой интернет-магазин.
    Слайдеры, анимации, эффекты проще всего делаются плагинами на jquery.
    Всплывающие формы обратной связи вполне нормально на jquery.
    Фильтры подбора продукции - имело бы смысл делать на реактивных фреймворках, но обычно фильтры уже встроены в саму CMS. Тот же умный фильтр в Битриксе на столько умный (выводит только такие наборы значений, по которым можно найти товары, опирается на встроенный в CMS механизм) что его переделывать дорого неоправданно.

    Пока у меня ощущение такое, собирать сайт целиком на реактивных фреймворках профита мало, а отдельные элементы, к примеру, какой-нибудь нетиповой и нестандартный фильтр подбора со своей логикой - вполне хорошо.
    Ответ написан
    3 комментария
  • Как получить данные из graphQL через JS/VUE?

    Negezor
    @Negezor
    Senior Shaurma Developer
    Вам нужен GraphQL клиент, например urql (urql-vue) или apollo-client (vue-apollo). Если вам нужен один запрос, то можно обойтись обычным fetch, например:
    const response = await fetch('https://example.com/graphql', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        operationName: 'fetchAuthor',
        query: 'query fetchAuthor { author { id name } }',
        variables: {},
      }),
    });
    
    const data = await response.json();
    Ответ написан
    Комментировать
  • Как мониторить ответы сервера для Bitrix через Prometheus?

    paran0id
    @paran0id
    Умный, но ленивый
    я этим модулем пользовался:
    https://github.com/knyar/nginx-lua-prometheus
    но там тоже некоторые пляски с бубном требуются

    мой конспект по сборке с тех времён, должен помочь

    Экспортим пути к библиотекам из devel-пакетов
    export LUAJIT_LIB=/usr/lib64/
    export LUAJIT_INC=/usr/include/luajit-2.1/
    
    На боевом сервере говорим nginx -V и сохраняем опции, с которыми он был собран
    
    Заходим в папку с исходникми  nginx
    
    Берем следующую строку configure, указываем пути к сорцам скачанных модулей и lua-devel
    # ./configure --prefix=/opt/nginx --add-dynamic-module=/home/admin/work/nginx-lua/ngx_devel_kit-0.3.1rc1 --add-dynamic-module=/home/admin/work/nginx-lua/lua-nginx-module-0.10.13 --with-ld-opt="-Wl,-rpath,/usr/lib64/"
    
    а также добавляем после неё опции, с которыми был собран nginx. Получится что-то типа того:
    
    ./configure --prefix=/opt/nginx --add-dynamic-module=/home/admin/work/nginx-lua/ngx_devel_kit-0.3.1rc1 --add-dynamic-module=/home/admin/work/nginx-lua/lua-nginx-module-0.10.13 --with-ld-opt="-Wl,-rpath,/usr/lib64/" --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
    
    после этого делаем
    make -j
    
    и в папке objs появятся 
    ndk_http_module.so
    ngx_http_lua_module.so
    
    закидываем их на боевой сервер куда-нибудь в /usr/local/lib
    
    на сервер устанавливаем пакет luajit
    
    в главном конфиге nginx в контексте main (вне http, в самом начале) прописываем 
    load_module /usr/local/lib/ndk_http_module.so;
    load_module /usr/local/lib/ngx_http_lua_module.so;
    
    делаем nginx -t
    
    Если всё ок - рестартим и готово.
    
    Если ругается на бинарную несовместимость - перепроверить версии и параметры сборки. Они должны совпадать!

    Ответ написан
    3 комментария
  • Как мониторить ответы сервера для Bitrix через Prometheus?

    karabanov
    @karabanov
    Системный администратор
    prometheus-nginxlog-exporter - просто лог читает - не надо пересобирать Nginx для установки.

    Если хочется пересобирать, то есть nginx-module-vts
    Ответ написан
    1 комментарий
  • Что идёт не так в пайпе Битбакета при сборке Laravel-приложения?

    Maksclub
    @Maksclub
    maksfedorov.ru
    composer install --ignore-platform-reqs
    Поставит, игнорируя требование расширения
    Ответ написан
    Комментировать
  • Правильность использование GraphQL?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Я уже устал открывать тайну человечества людям, но graphql был создан для оркестрации микросервисного ландшафта, а не чтобы ходить в базу.
    Ответ написан
    4 комментария
  • Как правильно сархитектурить graphQL в микросервисах?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Не надо так делать. Graphql это только gateway. Использовать его как интерфейс к базе данных, даже через бизнес-логику это такое себе решение. Хотя можно, конечно, кто же спорит. Федерации это удобно, но на масштабе проще застрелиться, чем заниматься этим. Сам aplollo ничего не сделает за вас - это фреймворк, не больше) ну и большое комьюнити с готовыми модулями
    Ответ написан
    4 комментария
  • Какой лучший современный движок под mmorpg?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Сейчас, сравнительно современные MMO RPG написаны на CryEngine (ArcheAge, Black Desert) - если общедоступный движок, либо на частном движке, который вам не будет ни как доступен.
    Bless, LOST ARK на Unreal Engine
    New World пишется на Amazon Lumberyard он вроде как бесплатный. Но явно не очень популярный
    Ответ написан
    3 комментария
  • Почему сервер не доступен через браузер, а через CURL - ок?

    vasilyevmn
    @vasilyevmn
    DevOps
    Скорее всего сервер висит на локалхосте 127.0.0.1, а нужно повесить на 0.0.0.0
    Гляньте:
    https://www.swoole.co.uk/
    Ответ написан
    Комментировать
  • Как правильно настраивать CI/CD для проекта на kubernetes/swarm под PHP?

    @vitaly_il1
    DevOps Consulting
    Я не вижу ничего "страшно неправильного" в вашем методе.

    Подтягиваю изменения на другой сервак. Там запускаю сборку образа для докера. Пушу в докерхаб.

    автоматически для релевантных веток, если прошли тесты, правильно?

    На проде лежит хелм, он стучится в докерхаб, собирает образы, запускает приложение в миникубе

    Насколько понимаю, это близко к модному сегодня принципу "GitOps". Посмотрите на ArgoCD или Flux, это два популярных инструмента для реализации GitOps.
    Я работал с ArgoCD по такой схема:
    1) CI на Jenkins -при коммите в release branch автоматически прогоняем тесты, строим образы и загоняем в repository
    2) CD - Jenkins как оркестратор: deploy job, который обновляет название образа в репо, на который смотрит ArgoCD, который и делает деплой.

    https://www.reddit.com/r/kubernetes/comments/jfces...
    Ответ написан
    4 комментария
  • Как подключиться к Mysql в Minikube/Kubernetes?

    @vitaly_il1
    DevOps Consulting
    А юзера добавил уже через локальную машину

    Не уверен, что понял, но возможно у вас на локальной машине бежит еще один Mysql? И вы добавили на нем, не в поде?
    Ответ написан
    2 комментария
  • Как на JS узнать время проведенное на сайте (с листанием страниц)?

    Zoominger
    @Zoominger
    System Integrator
    Мне нужно показать попап пользователю, который провел на сайте 1 минуту.

    Ненавижу эти ублюдские попапы и эти поганые чаты, которые вылезают и пердят каким-нибудь звуком мне в наушники и ещё отрисовываются несколько секунд, не давая закрыться. Кому не плевать, что там пишется в попапе, если все автоматом эту срань закрывают? Чёрт возьми, 2k20 на дворе, но дурачки всё равно пихают это кал на страницы.

    По теме: используйте куки, отмечайте там время, в которое зашёл юзер и проверяйте каждые 10 секунд, не превысило ли время 60 секунд.
    Ну и на попапе можете написать: "Прощайте!" своему посетителю.
    Ответ написан
    Комментировать
  • Можно ли в коробочную версию Битрикс24 ставить приложения для облачной?

    alexyarik
    @alexyarik
    Битрикс разработчик
    не подходят, облачный Битрикс24 и коробка это два разных продукта
    https://www.bitrix24.ru/features/apps_box.php
    вы сможете установить только приложения коробочного маркетплейса
    marketplace.1c-bitrix.ru/solutions/category/88
    Ответ написан
    2 комментария
  • Почему со страниц ЧПУ каталога редиректит на /bitrix/urlrewrite?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    <IfModule mod_rewrite.c>
      Options +FollowSymLinks
      RewriteEngine On
      # Переадресация с второстепенных доменов
      RewriteCond %{HTTP_HOST} !^pd\.info$ [NC]
      RewriteRule ^(.*)$ https://pd.info/$1 [R=301,L]
      # SSL
      RewriteCond %{REQUEST_FILENAME} !^/\.well-known(.*)$
      RewriteCond %{HTTP:X-HTTPS} !1
      RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
      # Переадресация с добавлением / в конце
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^([^.]+)(?<!/)$ /$1/ [R=301,L]
      # Переадресация с домена с WWW на домен без WWW
      RewriteCond %{HTTP_HOST}	^www\.(.*)	[NC]
      RewriteRule ^(.*)$ https://%1/$1	[R=301,L]
      # Переадресация с index.php на /
      RewriteCond %{REQUEST_FILENAME} ^(.*)/index\.php$
      RewriteRule ^(.*)index\.php(.*)$ /$1$2 [R=301,L]
      # Безопасность
      RewriteRule ^composer\.(json|lock)$ / [R=404,L]
      RewriteRule ^vendor(.*)$ / [R=404,L]
      RewriteRule ^(.*)\.(idea|git|gitmodules|gitignore|htaccess|vagrant)$ / [R=404,L]
      RewriteRule ^deploy-config\.json$ / [R=404,L]
      # Bitrix
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-l
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
      RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
      RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
    </IfModule>
    Ответ написан
    3 комментария
  • Как отсортировать массив по значениям нескольких ключей?

    vladgba
    @vladgba
    (。◕‿‿◕。)
    Комментировать
  • Как написать запрос SFTP get в одну строку?

    qlkvg
    @qlkvg
    python backend developer
    Если есть возможность, поставьте sshpass
    sshpass -p <password> sftp <remote-username>@<remote-host>:/path/to/source /path/to/dest
    Ответ написан
    2 комментария