• Почему не срабатывает :first-child?

    Grarnik
    @Grarnik
    web-мастер
    В общем ещё может быть такое что вы обращаетесь к первому элементу по его тегу, но этот тег стоит вторым, то тогда нужно обращаться уже ко второму тегу. :nth-child(2)

    5ef12941011f4495456310.png

    в данном случае было обращение к
    .option label:first-child {
    	margin-left: 0;
    }

    и в итоге не работало потому что сам label хоть и первый, но при этом он второй в самом родительском классе.
    Получается нужно вот так
    .option label:nth-child(2) {
    	margin-left: 0;
    }
    Ответ написан
    Комментировать
  • Нужно ли делать кеширование запросов и как?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Я думаю здесь подмена понятий. Автор пишет "кэширует ли БД запросы", а имеет в виду "может ли в принципе эта страшная и непонятная громадина которая называется базой данных в принципе хоть когда-нибудь рабтотать быстро?"
    Все, разумеется, кидаются отвечать на первый вопрос.
    А на самом деле надо отвечать на второй. Да, почти всегда БД работает гораздо быстрее чем ты можешь вообразить и ничего кэшировать не нужно. Если вдруг стало работать медленно... впрочем, об этом ниже.

    Нужно ли делать кеширование запросов
    Вот в такой формулировке, взятой с потолка, "а не закэшировать ли мне запросы к базе данных*" - Нет, не нужно.

    и как?
    Очень просто.
    Три простых шага:
    1. Понять, устраивает ли тебя производительность приложения. Если устраивает, то все оставить как есть.
    2. Если не устраивает, освоить профайлинг. Если это слово не упоминается в вопросе про производительность или кэширование, то вопрос можно сразу удалять. потому что он заведомо взят с потолка и не имеет смысла. По сути, профайлинг - это замер скорости выполнения отдельных участков кода для поиска узких мест - т.е. таких участков кода, которые тормозят всю программу. Это можно делать и вручную, и с помощью различных готовых инструментов. Только по результатам профайлинга, который показал конкретную причину тормозов, то самое узкое место (его еще называют bottleneck, "бутылочное горлышко"), можно приступать к оптимизации. Не кэшированию!
    3. Если профайлинг показал, что проблема в конкретном запросе к БД, приступаем к его оптимизации. Чаще всего достаточно добавить индекс или донастроить сервер.
    4. Только если все другие способы не помогли - занимаемся кэшированием. Но перед этим сначала решаем Вторую Важнейшую Проблему Информационных Технологий - инвалидации кэша. Поскольку закэшировать - это ерунда, каждый дурак сможет. Самая главная проблема не в том, как данные положить в кэш, а как и когда их оттуда удалять.
    Ответ написан
    Комментировать
  • Записная книжка программиста?

    @tagplus5
    В telegram писать себе в чат (или создать канал). Структурировать тегами.
    Ответ написан
    1 комментарий
  • SEO - Как правильно удалить устаревшую страницу?

    opium
    @opium
    Просто люблю качественно работать
    Просто удалите страницу пусть возвращает 404
    Ответ написан
    Комментировать
  • SEO - Как правильно удалить устаревшую страницу?

    404
    или 410 - если совсем навсегда
    301 - если там есть хорошие бэклинки, в остальных случаях отдавайте 404
    Ответ написан
    Комментировать
  • Проект на ZF1 - как перейти на более новый фрейм?

    @AlexndrNovikov
    Solution Architect in Spiral Scout
    Многое конечно зависит от специфики проекта, но примерный алгоритм действий в общем случае такой:

    1. Выбираете новый фреймворк (или без него, на ваше усмотрение). Решаете делать новый функционал на нем и только на нем. ZF2/3 ли, Symfony, Laravel - разницы никакой, что вам нравится. Готовьтесь к тому, что придется бизнес логику переписать полностью (если интеграция с фреймворком была жесткой, как обычно делают PHP разработчики). Если была завязанность на абстракциях и модульная структура - вас можно поздравить, переход будет безболезненным и быстрым.
    2. Приготовьтесь, что работы станет больше, чем просто на ZF1 задачи решать и дальше. Постарайтесь не просесть слишком по производительности.
    3. Есть список URL, перенесенных в новое приложение. Решение о том, какому приложению отдать обработку запроса, находится в точке входа в приложение. (в index.php, например. Т.е если обычно там происходит просто инициализация приложения, то перед ним теперь должна быть бизнес-логика определения, какому приложению дать ход, этакий свой мини-роутер. Если переписано - отдаете новому приложению. по дефолту старому)
    4. Если у вас не было тестов - именно тут вы начнете понимать, почему они были нужны :)

    Ну и по факту получается, что у вас некоторое время будет 2 приложения, которые надо параллельно разрабатывать. Старое помечаете как немодифицируемое. Приходит задача - сначала переносите ее на новый фрейм, тестируете, если работает как надо - в своем мини-роутере направляете соответствующие запросы в новое приложение. Постепенно с 0% до 100% доводите - и можно выкидывать старый фреймворк и микро-роутер в индексе, вы переехали.

    Повторюсь в поддержку ответов выше, бизнесу почти всегда откровенно все равно, что там под капотом, не эта технология приносит денег. Если вы не можете убедить начальство законсервироваться и все переписать - значит или в этом правда нет необходимости, или у вас недостаточно прокачан навык убеждения.
    Ответ написан
    2 комментария
  • Как вы сочетаете работу и саморазвитие?

    Уйти с руководящей позиции, устроиться охранииком, у них дофига свободного времени для прокачивания любых скилов
    Ответ написан
    1 комментарий
  • Как правильно настроить сеть локального LEMP сервера?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    В данной задаче, в настройке сети "налажать" просто невозможно - оно или работает или нет.

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

    Если вас интересует возможность именно в "сетевом" плане то все ваши опасения развеет настройка firewall :)

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

    Вне зависимости от того где хранятся пароли, они однозначно не должны быть частью исходного кода и, следовательно, должны отсутствовать в репозитории кода. Пароли должен задавать сисадмин, своевременно обновлять их и заботиться о том, чтобы к ним не было несанкционированного доступа.
    Пароли зашифровать - не сложный вопрос (надеюсь, не самописным алгоритмом и не каким-нибудь Base64). Зато вопрос в том, где хранится ключ для расшифровки и кто имеет к нему доступ.
    Ответ написан
    2 комментария
  • Безопасно ли хранить данные аутентификации в открытом виде, для БД MySQL?

    Пароли и другие чувствительные данные можно передавать через переменные окружения. Доступ к переменным окружения имеет только само приложение посредством веб-сервера (с правами пользователя, из-под которого он запущен). Например вот так (Linux).
    Ответ написан
  • Что лучше, свой фреймворк или сторонний?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    > "велосипед" который будет обновляться самой командой в соответствиями с требованиями проекта?

    Проблема в том, что требования бизнес-процесса всегда имеют больший приоритет перед необходимостью технической модернизации. И в реальности внутренний фремворк никогда не обновляется (ну, если только конечно вы не Баду с 100500 девопсов), и через пару лет разработчики начинают чувствовать себя питекантропами.

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

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

    Это значит, что фреймворк использовался только для украшения, а бизнес-логика писалась по-старинке, овнокодом.
    Мы месяц назад поменяли мажорную версию Симфони, с 2.3 на 3.2. Переделки потребовались, но чисто механические, по замене нескольких устаревших функций.
    Достаточно следовать рекомендованным практикам, использовать рекомендованные инструменты и апгрейд не будет настолько болезненным.

    Плюс я считаю, что болезненность апгрейда в любом случае преувеличена, и несравнима с переездом с самопала.

    > Как обычно поступают команды, когда используется сторонний фреймворк, постоянно обновляют его версию в проекте или остаются на старой версии?

    Хотя бы за мажорной версией следовать необходимо.
    Ответ написан
    3 комментария
  • Консольная оболочка линукс, как называется?

    Denormalization
    @Denormalization
    Возможно вы имеете ввиду Тайловые WM
    Они как раз заточенны под хоткеи.
    Awesome и i3 вроде как самые распространенные

    Конкретно в этом видео вроде бы стоит i3
    Ответ написан
    Комментировать