• Приделывать Git на сайт это хорошо?

    vabka
    @vabka
    Токсичный шарпист
    git - это система контроля версий.
    Это не "локальное хранилище" и не нечто, что можно "приделать" сбоку.

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

    А вот локально да - лучше вести разработку в git.
    Ещё по хорошему следует хранить копию репозитория на каком-нибудь ещё сервере, например в собственном экземпляре gitlab и синхронизировать её с локальной при помощи git pull/push.

    Ну и помни, что не надо все файлы в git запихивать. В git должны храниться только исходные файлы. Всякие картинки - в git-lfs.
    Пароли - в каком-то другом хранилище.
    Артефакты, которые создаёт компилятор или препроцессор - в .gitignore
    Ответ написан
    1 комментарий
  • Как прекратить установку модуля и вывести сообщение что модуль ставиться не будет потому что у вас php 8.0 или выше?

    miv-men
    @miv-men
    Фронт и бэк
    Попробуйте в функцию DoInstall() добавить условие:
    if(CheckVersion(phpversion(), "8.0.0")){
                $APPLICATION->ThrowException(
                    Loc::getMessage("PHP_ERROR_VERSION")
                );
            }

    Где присвоить текст для "PHP_ERROR_VERSION" думаю знаете.

    Это старое ядро, если захотите то можно переписать на D7, там есть аналог.
    Ответ написан
    Комментировать
  • Функции хелперы, что это и зачем они нужны если и без них всё работает?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Бывает непреодолимое желание избегать повторяющихся кусков кода. Часто оно здраво и ведёт к правильному рефакторингу кода.

    Когда повтор происходит внутри одного класса, его можно выделить в приватный метод этого же класса.

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

    Для вдохновения и красивой архитектуры посмотрите на хэлперы в Laravel
    Ответ написан
    1 комментарий
  • Функции хелперы, что это и зачем они нужны если и без них всё работает?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Пользовательские функции в языках программирования служат для двух целей:
    - для того чтобы избежать дублирования кода при частом повторении одних и тех же операций
    - для того чтобы код был лучше структурирован, и как следствие - легче читался и его было удобно поддерживать. Когда у нас внутри условия if написано 50 строк кода, это неудобно читать и сложно редактировать. Когда внутри этого же условия всего один вызов функции, то это легко читается, и легко можно заменить на другую функцию.

    Функции-хелперы обычно относятся к первой категории. Их традиционно пишут в отдельном файле, который подключается к коду проекта.
    Ответ написан
    Комментировать
  • Как обрабатывать событие $('.div-nested').on('click', function() { у ещё не созданных элементов?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Либо по средствам делегирования событий (рекомендуется)
    И тогда на jQuery будет что-то типа:
    $('.div-0').on('click', '.div-nested', function() {...}

    Либо при создании элемента добавлять ему обработчик.
    И тогда что-то типа:
    var d = $('div', {
      class: 'div-nested',
      on: {
        click: function() {}
      }
    })
    Ответ написан
    2 комментария
  • Как сделать версию для разработки в 1с-битрикс?

    6143170116b7e539895210.png

    Вот
    Ответ написан
    Комментировать
  • Пишет Class not found. Как правильно определить пространство имен?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Эээ... а что вы сделать то хотите ?

    Я вот о чем говорю: при использовании ООП в bitrix вы сталкиваетесь сразу с 2 большими стенами - применение ооп и битрикс. Прежде чем разбирать конкретный код хотелось бы немножко просветить вас в самой архитектуре битрикса.
    В терминологии Битрикса он использует концепцию MVC, но в рамках битрикса, а это означает что на любой странице где вы общаетесь с ним вы должны подключить пролог (хотя бы prolog_before) и эпилог (хотя бы epilog_after, ну в идеале). Именно "компонент" и является тем самым MVC (Вообще это скорее VC + row access, так как модели по сути нет). Есть класс CBitrixComponent (контроллер) и класс CBitrixComponentTemplate (который совместно с файлами шаблона и образует view).

    Вызов компонента происходит из глобальной переменной $APPLICATION путем метода IncludeComponent. До версии 14 (если мне не изменяет память) вообще не было такого понятия как class.php, где можно было отнаследоваться от CBitrixComponent и перекрыть какие-нибудь функции (шаблонизатор к примеру сменить), а после нового ядра d7 появилась возможность отнаследоваться от CBitrixComponent и в файле class.php разместить свой код (таким образом мы сохраняем и class.php с новыми функциями и component.php с логикой), а перекрывая метод executeComponent вы можете избавиться и от component.php.

    С точки зрения архитектуры (рекомендую изучить документацию, она очень обширна и познавательна) все компоненты должны лежать в так называемом пространстве имен, чем обычно служит ник-нейм или название компании (Естественно начинается не с цифры и содержит только латинские буквы), которые в свою очередь могут располагаться в /bitix/components/#пространство_имен#/#название_компонента#/

    Теперь построчно разберем Ваш вопрос:

    Вы положили свой класс сюда: /bitrix/templates/app/Pi/Test.php, что является неверным с точки зрения архитектуры, так как поместили класс отвечающий за контроллер в папку с шаблоном. Если вы не пишете свой модуль вы можете подключить его например в /local/php_interface/classes/ (пример надуманный, можете просто в /local/php_interface положить или сразу в init.php), однако для этого вы должны будете написать autoloader, так как у битрикса он работает только для модулей. Предположим вы в init.php напишете грубый require_once с файлом.

    Затем вы делаете следующее:

    Что является неверным, так как по сути вы обьявляете неймспейс для файла и это с точки зрения php выглядит вот так в конечном итоге:

    class app\Pi\test extends app\Pi\CBitrixComponent
    {
    // ...
    }

    А класса app\Pi\CBitrixComponent не существует. Так что вам нужно поправить пример хотя бы так:

    class test extends \CBitrixComponent

    Настоятельно рекомендую прочитать документацию или хотя бы посмотреть видео с академии битрикс. Сама система не подарок, а другой программист который увидит ваш код будет говорить что это битрикс виноват.
    Ответ написан
    Комментировать
  • Что означают скобки и почему запятая "[," перед ними?

    Это значит, что третий параметр необязателен (и запятая вместе с ним).
    Это не код, а документация, в ней это стандартное обозначение.
    Ответ написан
    Комментировать
  • Какую версию PHP учить и по какой книге?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Заголовок - это очень важная часть вопроса. Над ним надо очень вдумчиво работать
    Чтобы он не вводил отвечающих в заблуждение, и чтобы ответы оказались вам самому полезны.

    Если говорить об изучении с нуля, как можно понять из заголовка, то я рекомендую книгу Jon Duckett, PHP&HTML. Но её, вроде бы, не переводили на русский. Из доступного - Котеров, но она конечно уже подустарела. Хотя там хорошо даются такие основы, как НТТР.

    Но в вашем случае вопрос об изучении РНР явно не идёт. А скорее о повышении квалификации.
    Плюс вопрос "Какую версию учить" тоже не стоит - у седьмой версии поддержка кончается осенью. Но в целом различия между версиями в РНР не настолько принципиальны, чтобы можно было учить какую-то конкретную "версию". Чисто синтаксические нововведения в языке лучше всего изучать по разделам "Новая функциональность" каждой версии отсюда https://www.php.net/manual/ru/appendices.php

    Но начиная с определенного уровня изучение РНР уже перестаёт быть изучением РНР, а скорее программирования в целом - ООП, паттернов проектирования и т.д. Тут уже книжки по РНР не нужны, сами пхпшники учат это по явовским учебникам - Фаулера, Мартина и пр.
    Хотя конечно к зарабатыванию денех на PHP + Битрикс это всё не имеет уже ни малейшего отношения.
    Ответ написан
    Комментировать
  • У всех Андроид 12 резиновый?

    iLLuzor
    @iLLuzor
    Java, Kotlin, Android Developer
    Так должно быть. Это даже на презентации показывали
    Ответ написан
    4 комментария
  • Comodo Internet Security - это хороший антивирус?

    @Drno
    да, вполне.

    на сайтах всех антивирусов написано что "он лучший" ))

    а вообще в винде есть встроенный антивирь, для большинства задач его достаточно
    Ответ написан
    Комментировать
  • Comodo Internet Security - это хороший антивирус?

    XOR2048
    @XOR2048
    Web & Browser extension developer
    Он хороший, это правда.
    Пользовался им в свое время, работал безотказно, систему сильно не грузил, не тупил и никаких ошибок не было.

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

    @Neonoviiwolf
    Flutter developer
    1) onPressed: ()=>tappted ()
    2) ExtendedTextEditingController
    3) читай про области видимости в документации
    Ответ написан
    Комментировать
  • Как подключить файл?

    @VadimFox
    Если совсем все плохо с пониманием, то нажми мышкой на NumberStepsKilometers, далее alt+enter и выбери
    import library 'blablabla/NumberStepsKilometers.dart'
    Ответ написан
    1 комментарий
  • Как изолировать JavaScript код чтобы работало как в iframe но было не в iframe, а в div?

    Seasle
    @Seasle Куратор тега JavaScript
    1. IIFE
    2. ES6 модули
    3. Различные другие системы модулей: SystemJs, AMD
    Ответ написан
    2 комментария
  • Раньше в Notepad ++ можно было открыть файл прямо в гугл хром, теперь этой возможности нет, можно её как то добавить?

    sotvm
    @sotvm
    Умный поймёт, а дураку и так всё равно.
    Ищи в плагинах Notepad++
    я уже не вспомню как он назывался, т.к. уже давно на Linux,
    по моему RunMe или попробуй через F5
    Ответ написан
    Комментировать
  • Как получить текст из контейнера div с классом IZ6rdc?

    @VadimFox
    import 'package:html/parser.dart';
    
    String? parser(String html) {
      return parse(html).querySelector('div.IZ6rdc')?.text;
    }
    Ответ написан
    1 комментарий
  • Как из функции JQuery получить значение переменной?

    @chibitko
    Перенесите
    $(".step-" + step +" label").on('click', function() {
    console.log ("Кнопка Далее: " + step);
    $(".step-" + step +" .btn").removeClass('d-none');
    });
    в обработчик события выше, это не реактивное программирование, без вашего участия это вызывается один раз
    Ответ написан
    Комментировать
  • Бывают такие компании где тебе постоянно говорят, что вот это столько не стоит и на это нужно было потратить меньше часов чем ты потратил?

    mills
    @mills
    Я стараюсь сразу проговаривать что и как будет делаться.
    Но был и такой клиент, я не знаю что хочу, говорил что бы я все сделал сам, придумал дизайн, сделал логотип, сделал сайт и тд. И постоянно просил скидку))) В итоге с таким попрощался и вам советую с такими прощаться, иначе и нервы потрепанные и денег не будет. )
    Ответ написан
    2 комментария
  • Бывают такие компании где тебе постоянно говорят, что вот это столько не стоит и на это нужно было потратить меньше часов чем ты потратил?

    Kiyte
    @Kiyte
    Скромный битрикс-разработчик
    Постоянно с таким сталкиваюсь (фриланс), тут два вариант
    1. Клиент пытается сбить цену (чаще всего так и происходит)
    2. Клиент не понимает что заняло столько времени
    И в первом и во втором случае вероятнее всего клиент технически не подкованный и на словах всё просто, а на деле может быть много проблем, из за этого и происходит недопонимание, если с первым типом клиентов лучше не работатать, то если второму всё грамотно по полочкам разложить - в дальнейшем конфликтов на такой почве можно избежать.
    Ответ написан
    Комментировать