• Как правильно подключить древнюю библиотеку в современный фреймворк (PHP)?

    BoShurik
    @BoShurik
    Symfony developer
    https://getcomposer.org/doc/04-schema.md#classmap
    Положить файлики библиотеки в отдельную директорию (e.g. legacy-lib/) и прописать
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        },
        "classmap": ["legacy-lib/"]
    },
    Ответ написан
    Комментировать
  • Почему большинство работадателей требует знание Linux, а не Unix?

    sabramovskikh
    @sabramovskikh
    Ну смотри. У меня 10 серверов на убунте. Зачем мне твои знания по фряхе и нетбсд?
    Ответ написан
    Комментировать
  • Почему onscroll в mounted распространяется на все страницы?

    notiv-nt
    @notiv-nt
    Как ваше ничего? Да, моё тоже
    Убирать его в destroyed()
    Ответ написан
    Комментировать
  • Будет ли хорошей практикой такая структура приложения на Vue?

    @ned4ded
    Верстка, Фронтенд
    Добрый день.

    Не совсем понятно, что в данном контексте вы подразумеваете под контроллерами и бизнес-логикой.

    Сам по себе vue не общается с сервером и кейс его использования связан исключительно с отображением. О чем, собственно, и написано в их официальном гайде:

    The core library is focused on the view layer only


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

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

    Как по мне, лучшее решение - это использовать дополнительный плагин для вью - стор (vuex). В этом модуле вы сможете хранить запросы к серверу, логику обработки данных и проч. приблуды, связанные с бизнес-логикой, не изобретая велосипед.
    Ответ написан
    2 комментария
  • Какой следующий этап в изучении Vue после того как научился создавать блог с использованием компонентов и Vuex?

    Xuxicheta
    @Xuxicheta
    инженер
    Тестирование, typescript, сложные формы с изменяемой схемой валидации, просто большой проект с сотнями компонентов и множеством связей.
    Ответ написан
    2 комментария
  • Подключение к базе данных MySql, как правильно и современно?

    DevMan
    @DevMan
    если вы планируете работать с базой напрямую, то пдо.
    если планируете использовать более высокоуровневые абстракции/орм, то этим вопросом задаваться не стоит (они уже сами все реализовывают).
    Ответ написан
    Комментировать
  • Подключение к базе данных MySql, как правильно и современно?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос хороший, но неправильно сформулирован.
    Поскольку тут на самом деле два вопроса - какой драйвер использовать и уже потом - как правильно соединяться.
    Ответ на первый вопрос очевиден. Если выбирать из mysql_connect, mysqli и PDO, то достаточно зайти на страницу мануала, посвященную каждому варианту, и посмотреть, что там написано. Ну или попробовать использовать в своем коде и посмотреть что получится.

    А вот вопрос, как правильно подключаться в двух оставшихся вариантах, действительно важный, и ответ на него, как обычно, почти никто не знает, поскольку все друг у друга списывают статьи не 2-х, а 22-х летней давности. К счастью, есть сайты с актуальной информацией.

    Теоретически, можно использовать mysqli. Но не нужно. Потому что это низкоуровневый драйвер и пользоваться им без подготовки очень неудобно. Но если вот прям так приспичило, то вот как правильно соединяться используя mysqli

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

    Но правильным ответом, если выбирать из перечисленных трех, будет PDO. Здесь тоже не так просто, поэтому смотрим как правильно соединяться используя PDO - учитывая те же ключевые моменты, которые указаны выше.

    Хорошим вариантом будет использовать высокоуровневую абстракцию типа redbean. Но поскольку нормальной документации по нему нет, а есть только пара хайповых видео, где он используется, причем без каких бы то ни было объяснений и разбора основ, то я бы рекомендовал редбин уже опытному разработчику, а не начинающему. Но в любом случае как в нем соединяться, написано в документации

    Пароль в базе данных не шифруется а хэшируется. Делается это с посощью функции password_hash
    Ответ написан
    3 комментария
  • Где найти тимлида-консультанта laravel/vue.js?

    webhamster
    @webhamster
    Социальный подход. Ищите на Хабаре статьи с тегами php, laravel. Пишите авторам вашу просьбу. Ждете что они вам ответят. Бывает, что у людей есть знакомые, ищущие работу или желающие ее сменить. То есть нужно запустить сарафанное радио в среде разработчиков. Действует неплохо, хотя может раздражать некоторых замкнутых товарищей.
    Ответ написан
    1 комментарий
  • Можно ли написать функцию, которая проверяет существует ли переменная или нет (js)?

    Sanasol
    @Sanasol Куратор тега JavaScript
    нельзя просто так взять и загуглить ошибку
    Непонятно зачем вам такая функция?
    И непонятно почему undefined не подходит в таком случае.

    Других вариантов-то как бы и нет универсальных.

    typeof somevar === 'undefined' единственный нормальный вариант.
    Ну и выносить в функцию это смысла нет в целом никакого, и работать не будет опять же из-за первоначальной ошибки о том что переменная не объявлена.

    Другой возможный вариант подойдёт только если речь про глобальную область видимости типа window, тогда можно проверить существование ключа 'somevar' in window.

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

    Что мешает на том же laravel написать самому? Кстати на github куча готовых решений блогов.
    Ответ написан
    5 комментариев
  • Как лучше реализовать?

    @d-stream
    Готовые решения - не подаю, но...
    Как уже сказали - такие операции скорее всего неделимые (транзакции) и правильный, человеческий способ - делать это на стороне сервера. Например вызывая stored procedure, которая в рамках begin transaction … end transaction выполнит (или не выполнит) все действия.

    И богомерзкий с точки зрения sql цикл (foreach) будет не нужен.
    Ответ написан
    Комментировать
  • Что можете сказать о верстке (новичок)?

    Vlad_IT
    @Vlad_IT Куратор тега Вёрстка
    Front-end разработчик
    1) Не делайте отступы блокам через  , есть же padding/margin
    2) Забудьте о float: left в тех местах, для которых он не предназначен. Для создания сетки используйте flex/css grids
    3) Делайте осмысленные названия классов и идентификаторов у элементов. У вас куча container1, container2 и.т.д.
    4) Не используйте position: absolute, где не нужно явное абсолютное позиционирование (у плавающих блоков например).
    5) Соблюдайте семантику. Заголовки должны быть в h1-h6 тегах.
    6) Не забывайте добавлять атрибут alt для всех картинок img
    7) У вас на сайте везде (вроде везде) используется шрифт "Trebuchet MS", но задаете вы его для элементов каждый раз, хотя можно было задать глобально для body
    8) Блок "ГАЛЕРЕЯ" не по центру.
    9) У вас соц-иконки в футере выровнены очень странно. Иконка insta имеет очень странный отступ от левого края, который видимо предназначается для выравнивания всего блока с иконками. Сделайте контейнер
    .container {
       width: 100%;
       max-width: 1040px;
       padding: 15px;
       margin: 0 auto;
    }

    и в него кладите элементы, которые должны быть внутри сайта. У вас через странный отступ почти все отпозиционировано. Посмотрите чужие работы, как люди делают разметку. Вы пока слабо представляете, как это все происходит.
    10) Вы должны адаптировать не только под маленькие и средние экраны, но и под большие, с шириной 2560px. Не нужно делать под них широкий сайт, просто нужно делать так, чтобы на них сайт тупо не уходил влево, а был по центру.
    11) Куча повторяющегося кода в css
    .footer>.footer_img>.vk{
        margin: 5% 0 0 1%;
    	display: inline-block;
    }
    .footer>.footer_img>.twitter{
        margin: 5% 0 0 1%;
    	display: inline-block;
    }
    .footer>.footer_img>.facebook{
        margin: 5% 0 0 1%;
    	display: inline-block;
    }

    12) Освойте БЭМ (или другую методологию). Код будет чище и проще.
    13) Сайт не адаптивный абсолютно, имеется только один media запрос, и тот только для изменения шрифта у документа. Посмотрите на другие сайты, как они адаптируются.

    Это основное, но список можно продолжать долго. По коду можно судить, что вы учились по старой литературе, выбросите ее. Смотрите как верстают другие, ковыряйте макеты, читайте умные статьи и сайты, тренируйтесь часто, и все будет ок.
    Ответ написан
    3 комментария
  • Как правильней обрабатывать PHP скрипт с временем выполнения в 5-10 минут?

    DevMan
    @DevMan
    запускать подобные задачи в консольном режиме: в cli нет ограничения по времени.
    Ответ написан
    3 комментария
  • Почему не срабатывает код из упражнения?

    Stalker_RED
    @Stalker_RED
    Если вы видите в браузере на странице код
    <?php
      $login ...
    значит у вас вебсервер не настроен на обработку php кода, и просто выводит его как текст.
    Дальнейшее расследование затруднено, так как о сервере вы ничего не написали, а штатный телепат в отпуске.
    Ответ написан
    2 комментария
  • Актуален ли ассемблер?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Да, но начинать всё таки с него не стоит, ассемблер поможет вам лучше понять многие высокоуровневые операции и писать более оптимизированный код
    Ответ написан
    Комментировать
  • Почему многие программисты не любят javascript?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Потому что с помощью него можно выстрелить себе же в ногу.
    Ответ написан
    Комментировать
  • Как сделать правильный роутинг Codeigniter + HMWC?

    dmitriylanets
    @dmitriylanets
    веб-разработчик
    $route['(:any)'] = "startup/index";

    //class Controller
    function index(){
    $segments = $this->uri->segment_array();
    }
    Ответ написан
    1 комментарий
  • Как правильно организовать PHP-код на CodeIgniter?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Всё неверно.
    Вы плохо понимаете что такое модель, в классической архитектуре MVC. Всё потому что Codeigniter сам чудит, объясняю модель как хендлер хранилища. Обычно это называется Store, то есть то, что кладёт и берёт из базы. А модель в классическом её виде - это экземпляр объекта из этой базы. Проще говоря, модель - это строчка из таблицы, а Store - массив моделей (вся таблица в БД, кусок таблицы в БД), который их загружает или сохраняет в базу.
    Так вот, в идеальном варианте модель должна быть за всё ответственна. Именно класс модели должен быть раздут, именно её вы должны загружать, а не библиотеку и не контроллер. Контроллер вообще, просто, как ГАИшник на посту, должен прочитать инпут, понять, что с ним делать, загрузить модели, сделать с ними что-то и отправить на оутпут.

    Убираете всё из библиотек, пишете нормальные модели, придумываете к ним связи (вроде как вы их уже придумали), и работаете с моделями.
    А ещё, в один PHP файл можно несколько классов понапихать, это, например, чтобы модель Activity представляла собой Активити, а класс ActivityStore в этом же файле как раз работал с таблицей где хранятся ваши Activity.

    Я придумал всё сделать проще, подглядев как это сделано в Yii - в каждой модели у меня есть метод save(), который я вызываю напрямую из экземпляра модели и она ложится в базу. Так же и загрузка Product::get($id) вернёт объект класса модели Product, на котором я могу поменять пару свойств а потом вызвать прямо на этом объекте ->save();
    Ответ написан
    4 комментария