Задать вопрос
  • Недостатки видеоуроков?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Видеоуроки - как книжки "для чайников". Как правило - это много частных примеров, мало теории. Плюс к тому, обычно читать тот же текст получится быстрее, чем смотреть видео, т.к. читать можно по диагонали.
    Видеоуроки подойдут, если:
    • У вас индукционное мышление - 100 примеров лучше чем страница теории.
    • Вы воспринимаете "на слух" лучше, чем читая текст.

    Но рано или поздно наступит момент, когда документация станет родным домом, а видеоуроки будут восприниматься как потеря времени, потому что время==деньги, и час расслабона, смотря видео, станет стоить слишком дорого.
    Но не стоит вообще отказываться от таких форматов. Мой преподаватель по электронике, умнейший человек, говорил: "Не стоит гнушаться книжек 'Для чайников' - в них информация изложена кратко и максимально доступно. И этого минимума может хватить чтобы начать уже что-то делать"
    Ответ написан
    Комментировать
  • Недостатки видеоуроков?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Нужен огромный и продолжительный труд, чтобы написать приличную книжку.
    Чтобы в ней было не 10 страниц, а много хорошего материала, с примерами, с задачами, с изложением. Оформить, вычитать, отредактировать, договориться с издателем, выпустить, получить какую-то отдачу.
    Хорошую книгу ты читаешь долго. Месяц, два, год. Перечитываешь.

    Текст ты читаешь в удобном для себя темпе, легко пересматривая и перечитывая абзацы.
    Остановившись на странице книги, ты можешь просто просмотреть глазом предыдущую страницу и продолжить чтение. С видео так не получается - из головы вылетает все, и надо просматривать как минимум пару минут перед этим, если отлучился на час-два.

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

    Также видео делать сложнее, чем писать текст. Гораздо дольше. Гораздо дороже.
    Редактирование видео вещь в разы более муторная, поэтому чаще просто переснимают короткие блоки, а это опять таки непросто.
    То есть сделать видео с таким же качеством материала и с такой же плотностью материала - в десятки раз дороже по всем ресурсам - деньги, время, оборудование.
    И при этом никто не будет смотреть месяц видео (160 часов, например). Никто не будет делать поиск внутри видео, закладки на нужные отрывки и использовать видео как справочник.

    Перенести материал из книги перенести в видео - это непомерный труд с одной стороны и совершенно невостребованный с другой стороны.
    А поэтому никто не делал, не делает и не будет делать видео с таким же наполнением материалом, как это можно сделать в тексте.

    Видео - это разок посмотреть на чей-то практический материал, разок посмотреть как это делает кто-то другой.

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

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

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

    P.S. Все вышесказанное касается разработки и администрирования. В "визуальных" профессиях, возможно видео может давать гораздо больше. Например хореография, фехтование, музыка, возможно дизайн. Но там тоже множество книг, которые дают фундаментальную информацию лучше, чем видео.

    P.S. Одним из самых важных минусов видео я считаю то, что ты не можешь получать информацию в комфортном для себя темпе, с возможностью быстро перечитать слово/фразу и обдумать ее. Сам читаю множество лекций, и эта проблема, когда скажешь 2-3 предложения быстрее, чем обычно и половина учеников отваливается с бессмысленным взгядом. Так на живом курсе ты можешь обратить на это внимание и перефразировать, а записанное видео уже не изменишь.
    Ответ написан
    1 комментарий
  • Как получать уведомления через PHP?

    Ukrainskiy
    @Ukrainskiy
    Бот в telegram самый простой вариант.
    Ответ написан
    Комментировать
  • Как оптимально стилизовать текстовый логотип?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    логотип должен быть картинкой
    по второму нашел чье-то неплохое решение, давно храню
    https://codepen.io/moonpresence/pen/YzyLxza
    Ответ написан
    1 комментарий
  • В чем практическая разница между PUT и POST?

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

    Часто встречается такое поведение:
    PUT - изменение всех полей объекта или создание объекта с заранее известным id
    POST - создание нового объекта (при неизвестном id) или вызов какой-то процедуры

    В принципе, в том что вы не используете PUT нет ничего плохого
    Ответ написан
    Комментировать
  • В чем практическая разница между PUT и POST?

    insighter
    @insighter
    -First time? - Huh? (C#, React, JS)
    Ну вот что написано на ресурсе где это надо смотреть в первую очередь

    Разница между PUT и POST состоит в том, что PUT является идемпотентным: повторное его применение даёт тот же результат, что и при первом применении (то есть у метода нет побочных эффектов), тогда как повторный вызов одного и того же метода POST может иметь такие эффекты, как например, оформление одного и того же заказа несколько раз.

    https://developer.mozilla.org/ru/docs/Web/HTTP/Met...

    Случай 1.
    Допустим у вас есть WebAPI которое позволяет добавлять-создавать пользователей и их комментарии.
    Когда будете добавлять нового пользователя можно использовать PUT запрос. Если пользователь уже есть в базе, то запрос будет возвращать Conflict/BasRequest. Иначе будет пользователь будет добавляться. Многократное [случайное|ошибочное] выполнение одного и того же запроса не вызывает "side effect".

    Случай 2.
    Добавление комментариев, лучше использовать POST запрос, т.к. многократное запроса будет создавать новые комментарии всегда.
    Ответ написан
    Комментировать
  • Зачем нужны методы отправки данных отличные от GET, POST?

    tmaslov22
    @tmaslov22
    Backend developer
    Почитай спецификацию HTTP, там описали зачем такие методы и т.д. Помимо html и php существует куча технологий, в которых HTTP используют полностью.
    Ответ написан
    Комментировать
  • Как откатиться назад на стабильный commit и при этом сохранить полезный код, который ты сделал после допущенной ошибки?

    Способов отменить изменения в гите множество, их варианты в ответах озвучили.
    На мой вкус, для отмены изменений одного коммита, идеологически правильно выполнить git revert для этого коммита. Revert создаст новый комммит, отменяющий действия отменяемого коммита. Таким образом можно зафиксировать в истории репозитория факт отмены и, например, пометить причину совершенной отмены.
    Так же, если вдруг нужно отменить не весь коммит, а только часть его изменений, можно выполнить частичный revert:
    git revert <плохой_коммит> --no-commit # Revert будет подготовлен, но не закомичен
    git reset # Выполнить unstage всех файлов
    git add ... список плохих файлов  # Добавляем в индекс те файлы, что требуется отревертить. Используя ключ -p можно добавить часть изменений в файле, а не файл целиком.
    git checkout . # Сбрасываем все прочие файлы, что не в индексе, до оригинального состояния
    git commit # Коммитим revert
    Ответ написан
    Комментировать
  • Как откатиться назад на стабильный commit и при этом сохранить полезный код, который ты сделал после допущенной ошибки?

    Erik_Mironov
    @Erik_Mironov
    Старые вопросы: *Dies from cringe*
    Временно переключиться на другой коммит:

    Вы можете временно переключиться на другой коммит:

    git checkout <your_commit_sha>

    Если вы хотите делать коммиты, пока вы временно на другой ветке:

    git checkout -b old-state <your_commit_sha>

    Чтобы вернуться туда, где вы были, просто снова checkout ветку, в которой вы были. (Если вы внесли изменения, при переключении веток, вам придется обращаться с ними соответствующим образом.

    Отменить раннее опубликованные коммиты новыми коммитами:

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

    # Это создаст три отдельных коммита возврата:
    git revert <your_commit_sha1> < your_commit_sha2> <your_commit_sha3>
    # Это вернет последние два коммита. Также принимает диапазоны:
    git revert HEAD~2..HEAD
    # Точно так же вы можете отменить ряд коммитов, используя хэши коммитов (не включая первый хеш):
    git revert <your_commite_sha>
    # Отмена мердж коммита:
    git revert -m 1 <merge_commit_sha>
    # Чтобы получить только один коммит, вы можете использовать 'rebase -i', 
    # Или вы можете сделать это вручную (обязательно сделайте это на верхнем уровне вашего репозитория)
    # Привести ваш индекс и дерево в нужное состояние, не меняя HEAD:
    git checkout <your_target_commit_sha>
    # После чего обязательно зафиксируйте коммит. Будьте уверены в том, что вы сделали на 150% и напишите хорошее сообщение с описанием того, что вы только что сделали:
    git commit


    Раздел git-scm.com, где описывается использование git-revert. Если вы решите, что все-таки не хотите возвращаться, вы можете отменить возврат (как описано здесь) или вернуться к состоянию до возврата. В этом случае вам также может быть полезен этот ответ:
    тык
    Ответ написан
    Комментировать
  • Почему файл php выполняется дольше, нежели html?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    так html просто отдается, а php через php-fpm обрабатывается, не?
    Ответ написан
    Комментировать
  • Почему ошибка Warning: Undefined variable $db in?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Самый простой и правильный вариант

    function CheckDestiny ($variable, $type, $db) {
    Ответ написан
    Комментировать
  • Как правильно добавить в git-репозиторий папку выше по каталогу?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    В целом вы думаете правильно и рецепт сработает. После перемещения репозитория гит скажет что вы перенесли все файлы тем в подпапку и придётся создать коммит с этой операцией. Но хоть вы и будете видеть старую историю коммитов, воспользоваться ей будет сложно, так как пути поменялись.

    Правильней будет перед перемещением папки .git воспользоваться командой filter-repo, чтобы пересобрать заново все предыдущие коммиты так, как будто репозиторий изначально лежал в корне.

    Исходная структура папок
    public_html
    └── wp-content
        ├── plugins
        │   └── my_plugin
        └── themes
            └── child-theme
                └── .git

    Подготовим старый репозиторий к перемещению
    git filter-repo --to-subdirectory-filter wp-content/themes/child-theme

    Получим такую структуру
    public_html
    └── wp-content
        ├── plugins
        │   └── my_plugin
        └── themes
            └── child-theme
                ├── .git
                └── wp-content
                    └── themes
                        └── child-theme


    Затем перенесём папку .git и всё остальное содержимое папки child-theme в корень сайта.
    Ответ написан
    Комментировать
  • В каких случаях использовать SPA с серверным рендерингом, а когда обычный сайт?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    Мода есть, несомненно, но не только в ней дело!

    стоит вопрос делать его как SPA на Nuxt или как обычный сайт с перезагрузкой страниц


    Зависит от бекенда, если бекенд делает для вас api, тогда вам только SPA(не важно на чём), а если по старинке, значит по старинке, с перезагрузкой страниц. Тут как договоритесь.

    Плюсы подхода разделения бека и фронта аля SPA:
    1. Само по себе разделение ответственности. Фронт отвечает за отображение, бек за данные. В этом их суть

    2. Удобство работы. Вы работаете исключительной с той кодовой базой, которая вам понятна, приятна.

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

    4. Сами по себе преимущества spa. Обновление только нужных участков html, более быстрое решение рутинных задач, за счёт автоматизации многих процессов аля(vue cli, nuxt и т.п. - там всё уже из коробки собирается и настроено, только пиши код), разделение кода на чанки и т.п., думаю и так понятно

    5. Какая никакая, но архитектура приложения.
      Разворачивая проект через cli, вам уже даётся начальная структура папок, что уже говорит о том, что вам не нужно думать хотя бы об этом. Вы заранее знаете(если у вас есть опыт, если нету, ничто не поможет всё обговнять) что для решения тех или иных фич вам нужны те или те возможности фреймворка.
      Хоть реакт, хоть vue, уж тем более angular.



    Минусы подхода разделения бека и фронта аля SPA:
    1. Настройка всего деплоя приложения на сервере. Настроить gitlab.ci, настроить докер, настроить vps(если уже не готов), настройка nginx(не всегда, но бывает). Или вы думаете, за вас кто-то это будет делать? Бекенд себе всё настроит, а вы сами давайте. Вы же хотели разделение. Дай бог, что у вас в компании есть админ, который занимается подобными вопросами или же просто кореш, готовый вам помочь.


    2. SEO - большая проблема нашего времени. Если SEO, значит ssr, раз ssr, значит nuxt(ну или ручками настраивать, удачи). Тогда тут вступает в силу node.js. Его бы на сервере ещё запустить, на порту повесить и т.п. Просто SPA собрал и всё, а вот SEO, SEO накидывает на нас гемора и работы.


    3. Реализация "модулей" с 0, которые в старом подходе у бека уже можно скачать(из магазина готовых решений например, если это цмс, ну или готовые пакеты у фреймворков) и запустить(корзина товаров, фильтры, каталоги, сортировки и т.п. вещи). На фронте придётся всё делать заново, потому что готовых решений нет.

      Если взять какой нибудь вордпрес или битрикс, где уже имеется огромное кол-во готовых решений, которые подключил и они работают, минимально +- правя стили, то в spa подходе, дай бог что бы эти решения имели rest api для вашего чудо spa. А вы в свою очередь будете клипать вёрстку и логику с 0, мучаясь с кучей запросов, обновлением данных и т.п. вещами.

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


    4. Сложность понимания, на чьей стороне произошла ошибка. Фронт всегда будет выступать в первых рядах. Все камни полетят к вам. Не вывелось то-то, фронт иди сюда, не отправилась форма, фрооооонт, ауууууу!!!!!
      А как винить за это менеджеров? Они не должны сидеть кликая f12 и анализируя, где и какая ошибка получилась.
      Иногда бек виноват, иногда фронт.

      Да, можно подключить какой нибудь sentry. Но это, на мой взгляд, лишь доказывает, что с наш подход усложняет поддержку и разработку. Теперь у нас появился ещё 1 сайт, где мы смотрим логи фронта, что же у него случилося. У бека всё просто, зашёл на страницу, бац, ошибка sql на всю страницу, всё ясно становится)))

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


    5. Очень частая зависимость от данных бекенда. Изменилось 1 поле у бека, вам скорее всего нужно идти и править это. Добавилось новое поле, опять бежать и выводить 1 переменную. Мать твою, бек, сам не можешь что-ли переменную вывести??? Ах да, у нас же SPA.


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

      В то время, когда бы за вас всё бекенд делал, потому как многое у него уже готово, а вы просто вёрстку ему отдали бы и всё. Ну подвёрстывали бы иногда, ну пару скриптиков добавляли.


    7. Ну и последнее, удорожание поддержки такого проекта. Т.к. вместо единой кодовой базы, теперь их 2. Внесение изменений требует большего кол-ва людей, нежели при обычном подходе. Бекендер и без фронта может написать jquery ajax запрос или вывести кнопку с модальным окном и формой, потому что очень часто тупо юзают бутстрап и собрать подобные блоки просто, или же просто вывести новое поле с текстом или ещё чем-либо.



    Я дал вам пищу для размышлений. Всё, что я написал имеет место быть. Задачи могут отличаться, проекты могут отличаться. Но суть моих слов от этого врятли поменяется. В большинстве случаев я за раздельный подход к написанию проектов.
    Ответ написан
    Комментировать
  • Yandex поиск пагинация странная i++?

    Если яндекс по твоему запросу предполагает, что он какой-то программистский, то он вот такие приколюхи добавляет.
    Хз зачем это нужно, видимо просто чтобы порадовать)
    Ответ написан
    Комментировать
  • Yandex поиск пагинация странная i++?

    Zhbert
    @Zhbert
    Technical Writer, Linux user
    это прикол такой? )


    Думаю, что да. Это обычный инкремент из любого языка программирования, означающий увеличение на 1. То есть, он предлагает увеличить страницу на 1 =)
    Ответ написан
    7 комментариев
  • Как обновить стиль в scss?

    wapster92
    @wapster92 Куратор тега CSS
    scss формат синтаксиса для препроцессора sass. css.map - карта для исходников, генерируется сам, если "компилятор" позволяет. Благодаря ему, в devtools будет информация где прописаны стили в scss, а не в css.

    Редактировать нужно scss, компилятор генерирует css и css.map (опционально). К странице подключается css через <link>

    scss можно скомпилировать по разному, есть плагины для редакторов, отдельные программы, но это не удобно, потому-что если код нужно редактировать другому разработчику, то ему нужно настраивать соответствующее окружение. У большинства фронтендеров этим занимаются gulp, webpack или какие-то другие сборщики
    Ответ написан
    2 комментария
  • Как сделать такой инпут?

    @lolrofl01
    Тут инпут только там, где единица. Остальное - тупо поле со сверстанными процентом и кнопками вверх\вниз, которые работают через js. Так что решение простое, верстаете как на макете, затем позиционированием вставляете слева реальный инпут. И останется в js кнопочки активировать, чтоб верхняя брала значение инпута, добавляла +1 и вставляла в инпут, а нижняя делала тоже самое, только -1. Вот и вся задача. Главное проверку добавьте, чтобы при -1 ниже нуля не опускалось значение.
    Ответ написан
    1 комментарий
  • У какого языка html позаимствовал свой синтаксис?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Оба и html и xml взяли свое начало из SGML
    А ваши варианты ответа видимо писал двоечник.
    Ответ написан
    Комментировать
  • Как сверстать такую сетку?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Если сетка повторяющаяся то через nth-child задаете сколько строк и столбцов должны занимать элементы.
    Если нет, то классы.

    nth-child

    классы
    Ответ написан
    Комментировать
  • Передача нескольких GET параметров через форму?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никак не делать, эти переменные никому не мешают
    Ответ написан
    1 комментарий