• Нужна софтина чтобы защитить ребенка от хрени в инете. Пoдскажите?

    @titronfan
    Есть вроде специальные DNS серверы, которые помогут избавиться от левых сайтов.
    К примеру: https://dns.yandex.ru/ (Семейный)
    Ещё гляньте эту страничку (тут подробнее): https://dns.yandex.ru/advanced/
    Но не тестил. А чтобы сделать список белых и черных сайтов - не знаю.
    Ответ написан
    4 комментария
  • Как реализовать форму заказа на php?

    mrusklon
    @mrusklon
    Не получается? Яростно гугли!
    сделай скрытое поле у формы , а в нем передавай название товара
    <input type="hidden" value="Кухня Аворио">
    Ответ написан
    8 комментариев
  • Где найти красивые формы отправки сообщения с сайта?

    Rou1997
    @Rou1997
    Готовые не подскажу, но на Bootstrap можно вполне красиво сделать, минималистично, модно, а с фреймворком Yii2 еще и логику реализовать просто, и Bootstrap встроен в него.
    А если постараться и подумать, и вложить в это время и усилия, то можно однажды спроектировать модуль, который в последствии станет для вас готовым.
    Ответ написан
    1 комментарий
  • Что делать с сайдбаром?

    Machinez
    @Machinez
    например
    TQhRBvd.jpg
    flexbox и order вам в помощь
    Ответ написан
    1 комментарий
  • Как реализовать привязку к кнопкам?

    be_a_dancer
    @be_a_dancer
    Backend/Fullstack Developer
    Мне кажется, у вас нелогично спроектировано.
    Отдайте цену с сервера сразу, затем по наведению на каждую кухню чуть затемните изображение и пусть цена появится на нем. Так удобнее и отвечает требованиям UX.
    Плюс возможность сделать блоки плиткой, что гораздо более удобно, как по мне.
    Ответ написан
    6 комментариев
  • Как реализовать привязку к кнопкам?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    А зачем вам для каждой кнопки "реализовывать отдельный php файл"? Что в этих файлах происходит?
    Возможно, вам стоит поближе познакомиться хотя бы с гет-параметрами запросов? Или с html-тегом form и его содержимым?
    Ответ написан
  • Как происходит организация контента на многостраничном сайте?

    UDAV99
    @UDAV99
    web программист, верстальщик
    Делаешь футер и хедер и остальные блоки в отдельных файлах, а потом где нужно вызываешь их.
    Ответ написан
    3 комментария
  • CSS media queries - Как избавиться от перестраивания меню во время загрузки страницы на мобильных устройствах?

    FreedomRun
    @FreedomRun
    веб-программист
    При загрузке страницы на мобильном, меню по умолчанию не скрыто. Через несколько секунд, видимо, скрывается с помощью javascript и выводится меню для мобильных. Попробуйте в css жестко прописать display: hidden; и менять на display: visible; для широких экранов.
    Ответ написан
    4 комментария
  • Как наследовать функцию?

    @ivoronov
    Веб-разработчик
    Начнем с того, что вы, вероятнее всего, не совсем понимаете, что есть наследование.
    Попробуйте написать console.log(new test()) в консоле и посмотрите, что из этого выйдет. Конструкция test.two().three() возможна в том случае, если two() возвращает объект, в котором есть метод three.

    Вот здесь и здесь все хорошо описано, изучайте внимательно, посмотрите другие разделы.
    Ответ написан
    Комментировать
  • Angular2 как сделать server side rendering?

    @bromzh
    Drugs-driven development
    https://github.com/angular/universal-starter
    В файле src/server.ts все ответы. Суть такая:
    1) создаём express-приложение
    let app = express();
    2) настраиваем обработку .html-файлов на ангуляровский рендерер из universe
    app.engine('.html', expressEngine);
    app.set('views', __dirname);
    app.set('view engine', 'html');

    3) Создаём функцию-обработчик, которая будет рендерить ангуляр-приложение на сервере, если пользователь зайдёт по определённым ссылкам
    function ngApp(req, res) {
      let baseUrl = '/';
      let url = req.originalUrl || '/';
      res.render('index', {
        directives: [ Html ],
        ...
      }
    }

    4) В этой функции каким-то образом надо подключить корневой компонент App. В приведённой ссылке это делается так: создаётся компонент Html (src/server-only-app/html.component.ts), который содержит полностью весь код index.html (кроме тегов html). Можно было просто в функцию ngApp указать в поле directives корневой компонент.
    5) Запускаем приложуху
    app.use(express.static(root, {index: false}));
    
    // Routes with html5pushstate
    app.use('/', ngApp);
    app.use('/about', ngApp);
    app.use('/home', ngApp);
    
    // Server
    app.listen(3000, () => {
      console.log('Listen on http://localhost:3000');
    });
    Ответ написан
    3 комментария
  • А как вы именуете классы в css?

    UDAV99
    @UDAV99
    web программист, верстальщик
    Я обычно задаю имя общему блоку, а элементам внутри него присваиваю короткие имена.

    <div class="testBigBoxBlock">
      <div class="title">Заголовок</div>
      <div class="desc">Описание</div>
    </div>
    
    <div class="testSuperBigBoxBlockAndLinesMind">
      <div class="title">Заголовок</div>
      <div class="desc">Описание</div>
    </div>
    Ответ написан
    7 комментариев
  • Как сверстать такой фон у блока?

    @holfza
    Ответ написан
    Комментировать
  • Почему не работает media queries?

    Sanan07
    @Sanan07
    Писатель-прозаик
    добавьте эту строчку
    <meta name="viewport" content="width=device-width, initial-scale=1">
    Ответ написан
    2 комментария
  • Что происходит когда вводишь в терминал unix звездочку (*)?

    @abcd0x00
    Если оболочка встречает символ *, то она воспринимает его как символ шаблона.
    Если это символ шаблона, то она берёт символы вокруг него, составляя шаблон.
    Когда шаблон составлен, она берёт все имена из текущей директории по порядку и сравнивает с этим шаблоном.
    Все имена, которые совпали с шаблоном, вставляются через пробел вместо шаблона.
    А потом всё это дело выполняется.

    Это пример
    [guest@localhost t]$ ls
    [guest@localhost t]$ touch cat
    [guest@localhost t]$ echo hello >file.txt
    [guest@localhost t]$ ll
    итого 4
    -rw-rw-r--. 1 guest guest 0 дек 30 11:32 cat
    -rw-rw-r--. 1 guest guest 6 дек 30 11:32 file.txt
    [guest@localhost t]$ *
    hello
    [guest@localhost t]$
    Ответ написан
    Комментировать
  • Попросили проверить код, на что смотреть нужно?

    apavlyut
    @apavlyut
    www.apavlyut.ru
    Все комментаторы совершили одни и те же ошибки управления потому что, при всем уважении, скорее всего за эти ошибки (в стратегировании) они не платят из своего кармана.

    На пальцах отвечаю на ваш вопрос:

    1) По структуре - при проверки качества кода / решения / задачи / продукта / настройки сервера и так далее нужно проходить по списку (чеклист) критериев контроля качества - обычно они выглядят как списки определенных параметров которые может замерить третье лицо или сама система - формат проверяемого параметра прямо вот соответсвует / не соответсвует. На сколько процентов пройден чеклист - на столько процентов результат "качественный"
    2) Почему ребята ошиблись - потому что стали приводить конкретные списки. Дело в том что у каждого проекта / сиутации / команды / набора компетенций - свои наборы таких чеклистов на разные ситуации. В больших командах сущесвтует основной чеклист который регламентирует CodeReview - и за него отвечает как правило тим лид - он его обновляет, развивает, обосновывает внесенные правила и следит за тем чтобы ПЕРЕД началом разработки все разработчики были ЗАРАНЕЕ ОЗНАКОМЛЕНЫ с этим порятком проверки качества, а все потому что:
    3) Количество стайлгайдов и критериев в приципе существует огромное количество - и то как каждому в одной части света / компании удобно делать одно дело - не регламентирует ни разу что именно так же другому человеку в другой ситуации применять эти правила к своему контексту. В виде открытых стайлгайдов они существуют для накопления практик и навыков в первую очередь для их же развития (процесс формулировки наводит порядок в голове) а также дают возможность "на них конкретно" нанизать точечные ответы огромного сообщества людей, и получить те самые разные взгляды на ситуации, и по возможности опять же привести к общему знаменателю. Но это все мелочи жизни, а в вашем случае вы совершите серьезную ошибку если прямо сейчас возьметесь (примите на себя ответственность) проверять чужой код на предмет оценки, потому что:
    4) Вас явно используют как внешнего эксперта на которого можно сослаться, от которого можно получить якобы аргументацию для давления на свою позицию при решении какой-то возникшей ситуации во взаимоотношениях клиент-разработчик на проекте куда вас приглашают за экспертизой.
    Если вы, не предупредив, о том что "качество кода" начинается с декларации этого качества (в случае если речь идет о проверке этого внутреннего качества в рамках сотрудничества, а не самих задач которые поставлены перед создаваемой системой - фичесов) - любая ваша оценка будет недостоверна контексту ее применения (вы напишете про строки или еще что-то - а у человека будут либо взыскивать деньги / либо недоплатят за работу / или инкапсулируют в договоренности пост фактум за те же деньги работу над соотвествием определенным стилям - это все работа которая должна быть оплачена). Поэтому вот вам вилка ваших дейсвтий:

    1) Если у вас просто просят менторства молодые коллеги - дайте им ссылку на гугл и ключевое словосочетание php style guide github
    2) Если вас спрашивают (либо вы сами являетесь таким заказчиком который ищет за что зацепиться в коде чтобы продавить свою позицию) - нет критериев качества кода ДО начала работ подписанных на бумаге / пересланных по почте - никакие критерии не могут быть применены к текущим отношениям - только к следующей итерации за следующие деньги.
    3) Если вы все же разработчик и вас попросили оценить код - донесите данную ситуацию до стадии корректного закрытия текущего этапа работ - но дальше предложите уже введение стайл гайда если оно того требует. Я полагаю что на самом деле нет. Дав сейчас ответ на вопрос в виде оценки качества кода вы сделаете только одно - абсолюно необоснованно дадите агрумент в явно перекошенном споре, и просто возьмете на себя еще один мешок кармогрязи которую будуете еще сколько-то положенного времени отрабатывать.

    Подумайте хорошо на эту тему - придется выбрать свою сторону.
    Ответ написан
    Комментировать
  • Как найти ошибку в коде (Игра "Жизнь")?

    @vilgeforce
    Раздолбай и программист
    Берете отладчик и смотрите как обсчитывается ваш файл.
    Ответ написан
    Комментировать
  • Попросили проверить код, на что смотреть нужно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря зачем)). Я когда делаю Code Review критерии следующие:

    * Безопасность:
    - Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
    - Никаких trigger_error, только исключения.
    - Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
    - Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
    - За eval как правило шлю на **й.
    - @ допускается только в безвыходных ситуациях, например проверка json_last_error.
    - Перед работой с БД - обязательная проверка данных.
    - Никаких == и !=. Со swtich - единственное исключение, по ситуации.
    - Если метод возвращает не только bool, а еще что-то - жесткая проверка с ===, или !== обязательна.
    - Никаких условий с присваиваниями внутри. while($row = ...) - тоже идет лесом.
    - Магические геттеры/сеттеры разрешаются только в безвыходных ситуациях, в остальном - запрещены.
    - Конкатенации в sql - только в безвыходных ситуациях.
    - Параметры в sql - ТОЛЬКО через плейсхолдеры.
    - Никаких глобальных переменных.
    - Даты в виде строки разрешаются только в шаблонах и в БД, в пхп коде сразу преобразуется в \DateTimeImmutable (в безвыходных ситуациях разрешено \DateTime)
    - Конечно зависит от проекта, но как приавло должно быть всего две точки входа: index.php для web и console(или как-то по другому назваться) - для консоли.

    * Кодстайл PSR-2 + PSR-5 как минимум, + еще куча более жестких требований (для начала все то что в PSR помечено как SHOULD - становится MUST)
    - В PhpStorm ни одна строчка не должна подсвечиваться (исключением является typo ошибки, например словарик не знает какой-то из аббревиатур, принятых в вашем проекте). При этом разрешается использовать /** @noinspection *** */ для безвыходных ситуаций.
    - Если кто-то говорит, что пишет в другом редакторе и у него не подсвечивается, на эти отговорки кладется ВОТ ТАКЕЕЕНЫЙ мужской половой **й и отправляется на доработку)).

    * Организация кода:
    - Никаких глобальных функций.
    - Классы без неймспейса разрешаются только в исключительно безвыходных ситуациях.

    * Тестируемость (в смысле простота тестирования) кода должна быть высокая.
    - Покрытие кода обязательно для всех возможных кейсов использования каждого публичного метода с моками зависимостей.

    * Принципы MVC:
    - Никаких обработок пользовательского ввода в моделях, от слова совсем.
    - Никаких ***ть запросов в БД из шаблонов.
    - Никаких верстки/js/css/sql-ин в контроллерах.
    - В моделях НИКАКОЙ МАГИИ, только приватные свойства + геттеры с сеттерами.
    - В моделях разрешено использовать метод save(при наличии такого разумеется) только в исключительных ситуациях. Во всех остальных - либо insert, либо update.

    * Принципы SOLD:
    - Никаких божественных объектов умеющих во все.
    - Если метод для внутреннего пользования - private, никаких public.
    - Статические методы разрешаются только в случае безвыходности.

    * Принцип DRY разрешено нарушать в случаях:
    - Явного разделения обязанностей
    - В тестах (каждый тест должен быть независимым, на сколько это возможно)

    * Работа с БД:
    - Запрос в цикле должен быть РЕАЛЬНО обоснован.
    - За ORDER BY RAND() - шлю на***й.
    - Поиск не по ключам (конечно если таблица НЕ на 5 строк) запрещен.
    - Поиск без LIMIT (опять же если таблица НЕ на 5 строк) запрещен.
    - SELECT * - запрещен.
    - Денормализация БД должна быть обоснована.
    - MyISAM не используется (так уж)) )
    - Множественные операции обязательно в транзакции, с откатом если чо пошло не так.
    - БД не должна содержать бизнес логики, только данные в целостном виде.
    - Не должно быть нецелесообразного дерганья БД там, где без этого можно обойтись.

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

    * О людях:
    - "Я привык писать так и буду дальше" - не вопрос, ревью пройдешь только когда поменяешь свое мнение.
    - "Я пишу в vim-е и мне так удобно" - здорово, код консолью я тоже в нем пишу)) но есть требования к коду, если в них не сможешь - не пройдешь ревью.
    - "Я скопировал этот страшный метод и поменял 2 строчки" - это конечно замечательно, но по блейму автор всего этого метода ты, так что давай без говняшек, хорошо?
    - "Оно же работает!" - вот эта фраза переводится примерно так: "да, я понимаю, что пишу полную хрень, но не могу писать нормально потому, что руки из жо", я правильно тебя понял?))
    - "У меня все работает!" - рад за тебя, а как на счет продакшна?
    - "Там все просто" - не используй слово "просто", от слова "совсем". Вот тебе кусок кода (первого попавшегося с сложной бизнес логикой), где там ошибка (не важно есть она, или нет)? Ты смотришь его уже 2 минуты, в чем проблема, там же все "просто"))

    * Всякое:
    ActiveRecord (это я вам как в прошлом фанат Yii говорю) - полное говно, примите за исходную. По факту у вас бесконтрольно по проекту гуляют модельки с подключением к БД. Не раз натыкался на то, что в тех же шаблонах вызывают save, или update (за такое надо сжигать).
    То, что используется Laravel - это печально((. Что бы выполнить требования приведенные выше, приходится "воевать" с фреймворком.

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

    UPD

    Формализировал данные критерии по ссылочке: https://github.com/index0h/php-conventions
    Ответ написан
    55 комментариев