• Как использовать классы через интерфейсы?

    Real_Fermer
    @Real_Fermer
    Программист PHP
    на двух классах вы не поймете зачем нужны интерфейсы. и выгоды от их использования.
    Интерфейсы нужны когда вы закладываете возможность расширения вашей системы. И расширять будете не вы.
    Ответ написан
    1 комментарий
  • Что не так в коде (можете сделать краткое код ревью)?

    @tukreb
    Вы сами и ответили почему заброкали, но ещё добавлю, что ваш код написан с натяжкой на php 7.0
    Серьёзно? Уже этого достаточно.
    Ну и вообще написан ваш код в стиле 2010 годов, и вообще ни какого форматирования. Вы прямо кричите этим кодом, что вам похер на ревьювера и его глаза, ну вот ревьювер сам вас и послал на 3 буквы.
    Композер, PSR, и строгий стиль php (с типами данных) - это обязаловка. Никто больше не пишет новые проекты через ректальный язык программирование php5 (да и старые тоже).
    Ответ написан
    2 комментария
  • Как закрыть соединение с БД SQLite?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Вычитай данные из SqliteDataReader и проблем с закрытием не будет.

    Если не закроешь, то, конечно, рано или поздно сработает сборщик мусора и финализатор, но этот момент заранее не известен и пока он не произойдёт - ты не сможешь открыть базу второй раз.

    Либо заверни его в какой-нибудь свой класс, который можно будет задиспозить потом
    Ответ написан
    4 комментария
  • Как уменьшить размер проекта (папка Library)?

    GavriKos
    @GavriKos Куратор тега Unity
    Папку Library НУЖНО добавлять в гитогнор - она нужна только на вашем компе.
    Ответ написан
    Комментировать
  • Под какие разрешения экранов делать игру?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Экраны малого размера встречаются слишком редко, чтобы о них беспокоиться, если вы не делаете игру специально для них. Например Apple Watch Series 6 имеет разрешение 396 x 484.

    Если вы хотите обеспечить нормальный вид, проверьте, чтобы ваше приложение нормально смотрелось на девяти самых часто встречаемых разрешениях ноутбуков и смартфонов:
    1280:720
    1366:768
    1600:900
    1920:1080
    2160:1080
    2560:1440
    2960:1440
    3200:1800
    3840:2160
    Если у пользователя будет что-то другое - это его проблемы.

    Насчёт текста - у компонент UI.Text, TMPro.TextMeshPro и TMPro.TextMeshProUGUI есть возможность сделать размер текста адаптивным: у первого это свойство Best Fit, у последних двух Auto Size.
    Ответ написан
    Комментировать
  • Поясните по структуре HTML документа (теги, расположение, синтаксис)?

    DanArst
    @DanArst Куратор тега HTML
    Гриффиндор в моде при любой погоде!
    1) Подробнее тут
    Там написано, что
    A DOCTYPE must consist of the following components, in this order: string that is an ASCII case-insensitive match for the string !DOCTYPE"...
    , то бишь без учета регистра

    2) Во-первых, en, а не eng. Во-вторых, имхо глупо объявлять основной язык страницы английским, когда на деле весь контент, условно, на русском. Почитайте для чего его(язык) указывают и поймете, что так, как в вашем вопросе, делают только "опытные" разработчики.

    3) Браузер загружает HTML постепенно и, если он видит тег script, то он должен выполнить его и только после этого загружать контент, находящийся после. Чтобы частично избежать задержки показа контента, скрипты помещают в конец страницы. Заметьте, это только частично решает проблему, если скриптов не много и они не тяжеловесные. Далее советую почитать про атрибуты async и defer и разницу между ними.

    4) По стандарту HTML5 одиночные теги закрывать не нужно, это спецификация XHTML. Но валидатор на это ругаться не будет, так что тут уж как душе хочется.
    Ответ написан
    2 комментария
  • Как лучше организовать замену текста в строке?

    @entermix
    $str = 'Текст, ещё текст ABCDEF ещё текст текст GHJKL -- много текста MNOP и напоследок снова ABCDEF конец';
    
    $replaces = [['text' => 'ABCDEF', 'replace' => 'AAA', 'limit' => 1], ['text' => 'GHJKL', 'replace' => 'BBB'], ['text' => 'ABCDEF', 'replace' => 'CCC']];
    
    foreach ($replaces as $replace){
    	$str = preg_replace('#' . $replace['text'] . '#', $replace['replace'], $str, ($replace['limit'] ?? -1));
    }
    
    echo $str;


    https://onlinephp.io/c/a12a0
    Ответ написан
    4 комментария
  • Avast запрещает гугл хром подключаться к стороннему сайту. Это вирус?

    XOR2048
    @XOR2048
    Web & Browser extension developer
    У Аваста бывает достаточно много ложных срабатываний, месяца 2 назад похожий вопрос был, в итоге поискав на форумах было выявлено, что ничего зловредного не было и Аваст обманул.

    На самом деле многие антивирусы "находят" вирусы, там где не их нет, чтобы создать видимость работы и полезности.
    Попробуйте поискать похожую проблему в интернете, и, возможно, стоит сменить Антивирус.
    Ответ написан
    1 комментарий
  • Avast запрещает гугл хром подключаться к стороннему сайту. Это вирус?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    похоже на какую то дрянь со ставками.
    Проверьте комп
    Ответ написан
    1 комментарий
  • Как лучше организовать работу с 3 таблицами?

    Fernus
    @Fernus
    Техник - Механик :)
    Основные таблицы:
    - users;
    - documents;
    - addresses.

    Связные таблицы:
    - user_address (user_id, address_id);
    - user_document (user_id, document_id);
    - document_address (document_id, address_id).

    Запросы строить с помощью JOIN...самый классический вариант...

    UPD:
    ...
    Ответ написан
    Комментировать
  • Как установить разрешения на папку Users?

    @oleg_ods
    Создать для приложения файл манифеста и запускать его от имени администратора. Вот пример как это сделать тыц

    Или вот еще пару вариантов решения проблемы тык
    Ответ написан
    Комментировать
  • Как быстро будет работать Windows и программы на сменном носителе?

    yakovlev_13
    @yakovlev_13
    Шаманство, экзорцизм и некромантия.
    вариант с установкой SSD в коробочку с интерфейсом передачи данных USB - скорость обмена данными ПК с SSD будет ограничена пропускной способностью USB.
    Ответ написан
    Комментировать
  • Как быстро будет работать Windows и программы на сменном носителе?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Технически - это конечно докстанция с винтом в USB 3.0.
    Организационно - это быстрая беседа со службой безопасности, буде таковая есть (а еще USB могут быть или запрещены или при установке незнакомого устройства тут же идет оповещение "тем-кому-надо"
    Ответ написан
    1 комментарий
  • Как быстро будет работать Windows и программы на сменном носителе?

    @rPman
    ssd + sata переходник на usb3
    это будет на порядок быстрее чем флешка, плюс у windows есть ряд ограничений по запуску с usb флешки, например нельзя разместить своп файл на него (на sata контроллер это может не распространяться но нужно смотреть, сможет ли bios нормально с него грузиться)
    Ответ написан
    Комментировать
  • Как вывести нужную строку (оператор LIKE)?

    Immortal_pony
    @Immortal_pony Куратор тега MySQL
    SELECT * FROM `table` WHERE FIND_IN_SET('28', `users_id`) > 0


    Если уж очень сильно хочется именно LIKE, то

    SELECT * FROM `table` WHERE (`users_id` LIKE '28,%' OR `users_id` LIKE '%,28,%' OR `users_id` LIKE '%,28')
    Ответ написан
    3 комментария
  • Как правильно настроить PHP mailer?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Перед настройкой почтового клиента в меню «Настройки» почтового ящика на вкладке «Почтовые программы» необходимо отметить флажок в пункте «Я хочу получить доступ к почтовому ящику с помощью почтового клиента».
    https://help.rambler.ru/mail/mail-pochtovye-klient...


    Ну и помимо этого, никогда не надо выдавать себя за кого-то другого. За фишинг могут больно побить палками. Времена, когда во from можно было подставить какой угодно адрес, давно прошли.
    Ответ написан
    2 комментария
  • Как получить доступ к данным пользователей?

    @Drayde
    \Bitrix\Main\Engine\CurrentUser
    Ответ написан
    Комментировать
  • В чем идея и как работают шаблоны?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос очень хороший.
    А ответ на него очень простой.

    Шаблоны нужны для отделения логики приложения от логики отображения.
    Разделив их, мы получим сразу кучу выгод:
    • Нормальную структуру приложения, когда вывод начинается только после того, как отработала вся логика. То есть у нас никогда не будет проблем с ошибкой headers already sent, с возвратом json-а вместо html, с выводом в page header-е тех данных, которые появляются только в процессе работы скрипта
    • Мобильность - один и тот же движок можно будет использовать на нескольких сайтах, меняя только шаблоны, но весь код оставляя одинаковым. Что поможет, в частности, вносить обновления в движок и исправлять ошибки на всех сайтах разом.
    • Разделение труда - сейчас обычно над отображением работают фронтендеры, то есть, когда бизнес-логика отделена от шаблонов, то любой фронт сможет с ней работать


    Соответственно, главное, что надо знать про шаблоны - это то, что любой вывод в РНР скрипте начинается только после того, как отработала вся бизнес-логика.
    Также важно понимать, что в самом по себе смешивании "кода и разметки" ничего ужасного нет. В шаблоне всегда будет код. Без него невозможно выводить динамический контент. Важно только - какой это код, к чему он относится? Код в шаблоне должен относиться только к самому шаблону. На первых порах новичку сложно это отличить. И это еще один плюс специализированных шаблонизаторов.

    После этого есть варианты, которые отличаются в основном удобством работы с кодом шаблона.
    Править HTML код записанный в виде РНР строки - это САМЫЙ неудобный .

    Дальше идут всякие наколенные решения, типа
    бизнес-логика
    include header
    ?>
    хтмл конкретной страницы
    <?php include footer ?>

    или чуть более продвинутый, когда шаблоны хранятся отдельно и могут вкладывться друг в друга. Сначала пишем функцию,
    function render_template($filename, array $data = [])
    {
        ob_start();
        extract($data);
        require __DIR__ . '/' . $filename;
        return ob_get_clean();
    }

    а потом в коде страницы пишем
    бизнес-логика
    ...
    $page_html = render_template('page.tpl.php', [
        'data' => $data,
    ]);
    echo render_template('main.tpl.php', [
        'navigaton' => $nav_list,
        'title' => $title,
        'page' => $page_html,
    ];

    где сами шаблоны это
    ...
            <?php foreach ($navigation as $item): ?>
                <li>
                    <a href="<?= e($item['href']); ?>"><?= e($item['title']); ?></a>
                </li>
            <?php endforeach ?>
    Важно! Любой вывод в этих шаблонах должен экранироваться в обязательном порядке (кроме очевидных случаев, когда мы выводим результат рендера).

    Ну и наконец нормальные шаблонизаторы, из которых я горячо рекомендую Twig.
    Главное, что про него надо знать - даже самые зелёные нубы осваивают его без затруднений. И настоятельно рекомендую сразу перейти на него, после того как наиграетесь с решениями на коленке.
    Ответ написан
    9 комментариев
  • Какие проблемы могут возникнуть при работе программы с файлом БД из удаленной папки?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Разнообразные - от очень медленной работы до порчи данных. SQLite не предназначена для конкурентного доступа, используйте полноценную СУБД.
    Ответ написан
    1 комментарий
  • Какие проблемы могут возникнуть при работе программы с файлом БД из удаленной папки?

    @Voland69
    Главная проблема - конкурентный доступ. SQLite емнип не предполагает расшаренного доступа к файлу БД.
    Вторая проблема - устройство системы разграничения доступа - или у клиента будет доступ на запись в файл (тогда он может сделать все, включая удаление файла), или доступ только на чтение.
    Третья проблема связана с главной - даже если получится конкурентный доступ, транзакций не будет уж точно, что имхо при многопользовательском режиме критично.

    В общем я бы предложил не исключать вариант с сервером БД.
    Ответ написан
    Комментировать