• Мотивация для разработчика. Как мотивировать себя/команду работать продуктивно?

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

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

    ну а если интересов нет то ..... тогда не знаю
    Ответ написан
    Комментировать
  • Клиент может платить только с кредитки, как обелить доход?

    @SirBataneg
    веб-разработчик
    попробуйте paymaster вместо я.кассы.
    p.s. Звонил в саппорт я.кассы много раз. Всегда дозванивался.
    Ответ написан
    1 комментарий
  • Есть ли смысл верстки под 320px на сегодняшний день?

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

    @metaf
    Ответ написан
    Комментировать
  • Как грамотно обрезать изображение?

    Punkie
    @Punkie
    <div class="crop">
       <img>
    </div>


    .crop {
       position: relative;
       width: 100px;
       height: 100px;
       overflow: hidden;
       display: inline-block;
    }
    
    .crop img {
       position: absolute;
       left: 50%;
       top: 50%;
       min-height: 100%;
       min-width: 100%;
       height: auto;
       width: auto;
       transform: translate(-50%, -50%);
       /* max-height: 100% - для горизонтальной версии (слева)
      // или
      /* max-width: 100% - для вертикальной версии (справа)
    }


    Ну или картинку делать background'ом для div'a и делать background-size: cover;
    Ответ написан
    Комментировать
  • Что изучать дальше?

    trevoga_su
    @trevoga_su
    Я более менее уверенно знаю CSS и HTML
    уверяю тебя, ты не знаешь и 1%.

    JS/PHP/Bootstrap/CMS
    у тебя в голове каша
    ты выучил HTML и CSS - это стандартизированные технологии на которых держится базис веба и на которых он будет держаться еще лет 30 минимум.
    JavаScript, PHP - это языки программирования.

    jQuery - это одна из многих, но очень популярная библиотека для упрощения работы с JS
    Bootstrap - это набор инструментов для создания сайтов
    CMS - это система управления сайтом, написанная на каком-либо языке

    учить ты должен в первую очередь технологии - они должны для тебя быть в приоритете. Если ты знаешь технологию, у тебя не будет проблем с библиотеками и фреймворками.
    Если ты начинаешь, скажем, учить jQuery БЕЗ знания JavaScript, то цена тебе как специалисту ноль.

    Т.е. нельзя буть хорошим программистом, зная исключительно технологии "высокого" уровня. Нужно знать и понимать "низкий" уровень - языки программирования и стандарты W3C
    Ответ написан
    1 комментарий
  • Как сделать демо-версию сайта?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Делаете вторую тестовуюб базу, при входе как гость подключаетесь к ней, а не к рабочей.
    Каждые 30 минут просто копируете всё с рабочей базы на тестовую.
    Ответ написан
    Комментировать
  • Пессимизация сайта при переводе медиа контента на cdn сервера?

    kopcap_va
    @kopcap_va
    SEO Consultant
    Специально спрашивал по поводу картинок на CDN у представителя Google - https://youtu.be/UfpskkLpC30?t=50m1s (вопрос на 50 минуте).

    На продвигаемом сайте с такой реализацией никаких проблем в продвижении не замечаю (в том числе и в яндексе).
    Ответ написан
    1 комментарий
  • Как узнать какая версия php используется?

    xDireX
    @xDireX
    php -v в консоле
    Или создайте временный файл и напишите в нем:
    <?php
    phpinfo();
    Ответ написан
    Комментировать
  • Как побороть непонятные переходы с Яндекс?

    @Silm
    И чего это вы решили, что яндексу есть дело, что какие то люди к вам заходят и ничего не делают 8-11 минут?
    Ответ написан
    7 комментариев
  • Что делать, если запутался в css?

    Elwen
    @Elwen
    1) Адаптивная - это, грубо говоря, фиксированная верстка, которая использует медиа запросы для того, что бы подстроится под устройство просмотра. Отзывчивая - это резиновая верстка с использованием тех же медиа запросов для того же. В свое время именно такое объяснение показалось мне самым простым и понятным. Но большинство заказчиков все равно воспринимает это как одно и тоже, так что объяснять будет дольше.
    Есть замечательный сайт liquidapsive.com, который очень наглядно показывает разницу между разными типами верстки (адаптивная, отзывчивая, фиксированная и резиновая) на примере одного макета. К нему же есть отличная статья на frontender.info, где довольно доходчиво рассказано о разных подходах, их плюсах и минусах.
    2) Как бы то ни было, это все же зависит от проекта. Резиновая верстка отлично подходит для большинства сайтов, но есть проекты, где целесообразней все же сделать отдельно мобильную версию. Например, соц. сети.
    3) Нет.
    4) К сожалению, есть много вопросов относительно возможностей и развития css.
    5) Единственного верного способа решить поставленную задачу в программировании нет. В большинстве случаев есть несколько способов. Бывает что одно решение выигрывает по тем или иным параметрам у другого. И каждый программист иногда чувствует, что его творение больше походит на монстра, чем на чистый код. Это вовсе не означает, что это так (хотя случается и такое, чего таить). В любом случае, взглянув на свой код, который сейчас вам кажется хорошим, через несколько лет, скорее всего, вы схватитесь за голову) Стремитесь совершенствоваться, но не зацикливайтесь на этом.
    Ответ написан
    2 комментария
  • Как ограничить своё время работы за ПК?

    littleguga
    @littleguga
    Не стыдно не знать, а стыдно не интересоваться.
    Для этого нужна просто сила воли и здравый ум.

    Представьте себе, что Вы дописываете очень важный документ и комп выключается, а Вы не сохранились...
    Или досматриваете фильм, до конца 10 минут и там будет самый эпик и комп выключается.

    В случае, если выключение компа можно отсрочить, то в нем смысла нет, так как Вы всегда будете его отодвигать.
    Ответ написан
    Комментировать
  • Узнать адрес страницы которая запросила php?

    @Sushkov
    ">alert("yohoho")
    Попробуй так
    $_SERVER['REQUEST_URI']
    Ответ написан
    Комментировать
  • Как поменять CMS без потери позиций в поисковиках?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    301 редирект
    Ответ написан
    2 комментария
  • Попросили проверить код, на что смотреть нужно?

    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 комментариев
  • Стоит ли создавать интернет-магазин для портфолио на чистом PHP?

    @Afatar
    Конечно делай. Если есть время и тебе лет 13-15, то это отличный способ набить шишки и прокачать свой скилл. Обычно так и становятся программистами. С начало пишешь говно, потом читаешь про MVC, переписываешь, получается MVC говно, потом узнаешь про фреймворки и пишешь говно на фрейворке. Потом идешь в крутую контору и из тебя год выбивают все говно и после этого становишься специалистом.
    Ответ написан
    1 комментарий
  • Возможно ли написать идеальный .htaccess?

    iam_not_a_robot
    @iam_not_a_robot
    Во-первых он говорит бред, если бы у вас было:
    mysite.ru/446782.php?id=6&name=8&date=9
    то да а с html и без - это одно и то же с точки зрения SEO
    В целом даже на сайте без CMS можно сделать роутинг, у вас сейчас трафик есть? Потому что надо будет редиректы ставить и короче потеряете его скорее всего на какое-то время если адреса поменяете.
    Ответ написан
    1 комментарий
  • Эффект перевернутого изображения: почему переворачивается картинка на сайте?

    @max0ua
    Дело 100% в EXIF. Сегодня какраз столкнулся с аналогом фотография повернута на 90 градусов, в EXIF стоит Orientation 90 СW.

    При просмотре в теле страницы показывает перевернутой, а при "открыть картинку в новой вкладке" показывает картинку повернутой правильно. Т.е. современные браузеры когда показывают только картинку берут ее (в моем случае повернутую набок) смотрят на EXIF и поворачивают как надо.

    Сравните к примеру:
    filarmonia23.com/1.php
    <html>
    	<head>
    		<title>EXIF ORIENTATION TEST</title>
    	</head>
    	<body>
    		<img src="/image.jpg" />
    	</body>
    </html>

    и само фото filarmonia23.com/image.jpg (кстати в ИЕ 9 показывает нормально т.е. ему плевать на EXIF)

    Для проекта мы рассматривали 2 варианта решения:
    Первый вариант - при загрузке фото удалять все данные EXIF
    Второй вариант - при загрузке фото если есть данные EXIF - повернуть фото согласно данных.

    Остановились на 2-м варианте

    $img = new Imagick($uploaded_img);
    $orientation = $img->getImageOrientation();
    switch($orientation) { 
    		case imagick::ORIENTATION_BOTTOMRIGHT: 
    				$img->rotateimage("#000", 180); // rotate 180 degrees 
    		break; 
    		case imagick::ORIENTATION_RIGHTTOP: 
    				$img->rotateimage("#000", 90); // rotate 90 degrees CW 
    		break; 
    		case imagick::ORIENTATION_LEFTBOTTOM: 
    				$img->rotateimage("#000", -90); // rotate 90 degrees CCW 
    		break; 
    }
    $img->setImageOrientation(imagick::ORIENTATION_TOPLEFT);
    $img->writeImage($uploaded_img);
    $img->clear();
    $img->destroy();


    Первый вариант был бы примерно так:
    $img = new Imagick($uploaded_img);
    $img->stripImage();
    $img->writeImage($uploaded_img);
    $img->clear();
    $img->destroy();


    Ну а дальше можно уже и пользователю позволить поворачивать фото и т.д. и т.п.

    php.net/manual/ru/book.imagick.php
    Ответ написан
    1 комментарий
  • Эффект перевернутого изображения: почему переворачивается картинка на сайте?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Веб-разработка
    В свойствах файла ширина и высота перепутаны местами (ширина 320px, высота 240px, хотя сама картинка портретная). Очевидно, разные программы по разному обрабатывают этот глюк.
    Например, стандартный Image Viewer на Ubuntu автоматически её разворачивает, хотя в свойствах файла значения некорректные:
    062ba977969649a0ae616d34c77dc2ba.png
    Ответ написан
    4 комментария