1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Посоветуйте как выучить PHP новичку в программировании

Тема в разделе "Программирование", создана пользователем ahdpe, 05.05.20.

  1. 027

    027 Активный участник

    5.159
    1.261
    @The Last Winged, вы ответили на мой вопрос. ©
    Сочувствую вашему работодателю. :)

    А кто может разъяснить про загадочное и ужасное глобальное состояние в CodeIgniter, неужели это про глобальные константы? И про «огромное множество сайд-эффектов, но они замаскированы и не так фатальны».
    Я просто в ужасе, как я с этим всем жил?!! Спасите! Помогите!
     
    Последнее редактирование: 03.04.21
  2. The Last Winged

    The Last Winged Активный участник

    12.461
    300
    Звучит как оскорбление. Потрудитесь объясниться.
     
  3. E13

    E13 Активный участник

    8.893
    976
    Хм, а кинете ссылку на методологию подсчёта?

    Кстати, немного оффтопик, но может подскажете. Ищу и не могу найти материалы по продвинутой работе с БД (mysql, postgres). Оптимизация запросов, архитектурные паттерны для скалабилити и хайлоада, вот такое вот.
     
  4. The Last Winged

    The Last Winged Активный участник

    12.461
    300
    A class should have only one reason to change.Robert C. Martin

    В Ларавеле модель - это и собственно, сервисный слой, и меппинг структуры, и репозиторий, а валидатор, и ДТО, и ДТО билдер. Шесть штук навскидку.
    Естественно так слегка быстрее что-то писать небольшое, до человекополугода, но поддерживать потом чертовски сложно, медленно и дорого.

    Оффтопик вон парой комментариев выше. Мне понравились материалы Олега Бунина HighLoad Channel, есть еще канал fwdays.
    Что касается скалабилити и прочего - микросервисы, самый популярный инструмент оркестрации - k8s. Различные очереди, шины, сервисы уведомлений. Правильный трейсинг (jaeger) и логирование (ECS). Могу посоветовать сдать экзамен на сертификат CKAD.
    Но от этих вот инструментов есть смысл только в больших компаниях. Изучать их для себя, пожалуй, бессмысленно
     
  5. E13

    E13 Активный участник

    8.893
    976
    Спасибо. У меня тут явный пробел, и вот ищу, как его закрыть

    Кажется, это у меня где-то было уже в рекомендациях. Спасибо.

    Спасибо, поизучаю. Просто не раз и не два уже сталкивался с тормозами на запросах к БД на больших проектах. И вот интересно, как этого можно максимально избежать, не прибегая к кешированию
     
  6. Дмитрий Н

    Дмитрий Н Активный участник

    1.848
    319
    Рекомендую:

    upload_2021-4-3_22-0-26.png

    PS
    Тут не про языки с обложки, на них просто примеры.
     
  7. E13

    E13 Активный участник

    8.893
    976
    Спасибо, почитаю
     
  8. Nikita82

    Nikita82 Новичок

    11
    1
    Может еще вот это понравится - SQL. Сборник рецептов. Энтони Молинаро. Многовато воды, но и много интересной практики.
     
    E13 нравится это.
  9. 027

    027 Активный участник

    5.159
    1.261
    Прошу прощения за некропостинг, а тем более за js-оффтопик. Увы, скрипящая жаба идет рука об руку с php и освобождать место одесную не собирается.

    А вот и здрасьте вам! — сказали мне мои коллеги-не-программисты и попросили немножечко переделать, что вылилось в нахрен всё вообще. :)

    Взглянув с тоскою в собственный говнокод, разнес всё вдребезги пополам переписал на вьюи.
    Пришлось, конечно, постучать лбом по граблям — как всегда бывает, когда пробегаешь глазами по доке, откладывая разбор и упражнения на потом (некогда, некогда!) С разбегу налетел на проблемы с реактивностью (не серебряная пуля, не серебряная...), но таки асилил.

    Годно.
     
    ski нравится это.
  10. ksa

    ksa Активный участник

    4.205
    447
    Сам себя поругал и сам же себя похвалил... :facepalm:
     
    ski нравится это.
  11. E13

    E13 Активный участник

    8.893
    976
    Да, удобная штука. Я сейчас любой мало-мальски сложный интерфейс на ней запускаю. Ну и вот на реакте ещё до кучи начал, теперь что ни проект - то муки выбора :)
     
  12. 027

    027 Активный участник

    5.159
    1.261
    дурачок ты, @ksa... Хоть и старый. Всё детский сад свой никак не забудешь.
     
    Последнее редактирование: 11.07.21
    ski нравится это.
  13. 027

    027 Активный участник

    5.159
    1.261
    Реакт чем-то от вьюи отличается в выгодную сторону (с т.з. новичка)?

    Вернее, так: с точки зрения человека, который вынужден писать мелкую автоматизацию на джаваскрипте, изучать глубоко который ему ни в дуду не уперлось, ибо другая профессия, и лавры крутого фронтендера ему ни к чему.
    У вьюи хотя бы дока на русском. И юзать ее можно без этих бабелей-шмабелей-вебкомпонентов и прочего безумного угара.
     
    Последнее редактирование: 16.07.21
  14. ksa

    ksa Активный участник

    4.205
    447
    @027, не писал стихов и не пиши... (с) Александр Иванов
     
  15. 027

    027 Активный участник

    5.159
    1.261
    Да что ж тебе неймется, родной! Что так свербит, аж удержаться не можешь? Иной жизни, кроме галеры, представить невмочь?

    А стишок написать тебе могу. Тупой стишок вообще не вопрос, со смыслом — чуть подумать надо. Но это уже за плату.
     
    Последнее редактирование: 16.07.21
  16. E13

    E13 Активный участник

    8.893
    976
    Реакт ближе к нативному JS чем вью. У него там свой тип файлов, но по сути JSX только немного расширяют синтаксис JS, позволяя писать внутри JS HTML-код.

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

    Redux выглядит как несколько переусложнённая штука, но с одного раза нормально зашёл и начал использоваться. С Vuex я пока что-то туплю.

    Реакт пока очень поверхностно знаю, но напрягов с ним, показалось, меньше чем с ряде случаев с Vue. Можно ли его без Npm/babel юзать - не знаю. Примеры видел, но, кажется, движений там получается сильно больше.

    От npm пожалуй никуда не деться, это часть современного фронтенда. У меня был один проект, который я для простоты (как я думал) собрал без npm/бабел/прочего с использованием вью, просто подключив его как внешний файл. Но в итоге пожалел: вышло в итоге очень плохо с точки зрения дальнейшей поддержки проекта
     
  17. 027

    027 Активный участник

    5.159
    1.261
    Лично я толкнулся с тем, что пересчет данных через computed не заработал в базовом экземпляре Vue, хотя по описанию должен. Разбираться не стал, устроил пинок через updated (некогда, некогда... заработал этот чертов калькулятор скидок, и хрен с ним, побочная нагрузка).
    А в компоненте в цикле v-for в комбинации с v-if все обновляется без проблем, как заявлено.

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

    Один раз попробовал, ужаснулся скомпилированному результату, и что-то не хочется такое выкатывать в пользование ни в чем не повинным людям. Нет, ну конечно, разработчику оно удобно, однофайловые компоненты эти... И деплой командами в CLI мне вполне удобен. Но когда это чудище уродило js-бандл на 3 мегабайта, запихнув туда еще и картинки... это уже слишком.
     
    Последнее редактирование: 17.07.21
  18. ksa

    ksa Активный участник

    4.205
    447
    Используем MobX - довольно проста в понимании. Правда есть некие нюансы при использовании... Но если про них узнать, так и проблем не возникнет.
     
  19. 027

    027 Активный участник

    5.159
    1.261
    А можно попроще для чайников? Я никакие ключи в циклически выводимой таблице не меняю. Или это происходит неявно?

    ХТМЛ:
    Код:
        <tr is="row-op" v-for="op in opList" v-bind:key="op.id" v-bind:op="op"></tr>
    Шаблон компонента:
    Код:
        template: `
        <tr v-bind:class="op.color" v-show="vm.availableSpecList.indexOf(op.code) != -1">
          <td class="text-center">{{ op.code }}</td>
          <td>{{ op.name }}</td>
          <td class="text-center">{{ op.level }}</td>
          <td class="text-center">{{ op.form }}</td>
    
          <td class="text-right">
            <span class="text-muted">{{ vm.opList[op.id].percent }}</span>
            <span v-html="vm.opList[op.id].discount"></span>
          </td>
    
          <td class="text-right">
            <span v-bind:class="vm.opList[op.id].mute">{{ op.tariff }}</span>
            {{ vm.opList[op.id].cost }}
          </td>
    
        </tr>
        `
    
     
    Последнее редактирование: 17.07.21
  20. E13

    E13 Активный участник

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

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

    Например, вот такие коллизии возможны:
    Код:
    <tr v-for="(op, ind) in opList" :key="op.text">
        <td><input v-model="opList[ind].text"></td>
    </tr>
    
    Это искусственный пример.

    С MobX не работал пока. Redux в целом как азы освоил довольно прост в использовании
     
  21. 027

    027 Активный участник

    5.159
    1.261
    А, не, я на такое даже и подумать не собираюсь. :)
    Мои примитивные задачки за рамки мануала особо не выпирают.