• Как сверстать такую рамку?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Просто нарисовать фоновыми градиентами к одному блоку.
    https://jsfiddle.net/02hfmet3
    Адаптивный и с контентом внутри https://jsfiddle.net/kn3ha48d/

    Есть еще вариант с 2мя псевдоэлементами, но подходит только для однотонного фона и фикс ширины. Во-первых, из-за обводки, во-вторых, из-за округления. Если блок будет иметь фикс ширину, то округление не важно, просто нужно скорректировать в зависимости от четности или нечетности.
    https://jsfiddle.net/xm91ny4q/
    Ответ написан
    Комментировать
  • Почему не используются площадки для создания сайтов типа Wix?

    @kandrash
    Кратко о себе
    Во-первых кто-то же пишет сам викс?
    Во-вторых есть десятки направлений где он не подойдёт. Развернёте на виксе ВК? Сбербанк-онлайн? Тостер? Озон?

    Не, часть работы он несомненно на себя возьмёт. Простенькие лендинги, магазины и прочее. Но как только вам нужен чуть нестандартный функционал - тут его полномочия всё.
    Ответ написан
    1 комментарий
  • Как найти точку пересечения графиков?

    @alexalexes
    Можно. Но реализовать это можно многими путями.
    Вариант А.
    Серверная часть (то бишь PHP) подготавливает как данные, так и графику.
    Это значит, что вы на серверном скрипте как вычисляете все необходимые точки, так и рисуете график, например GD-библиотекой.
    а) Создаете графическое полотно.
    б) Рисуете в этом полотне необходимые линии.
    в) Возможно, где-то что-то подписываете.
    г) Отдаете клиентской части приложения (то бишь браузеру) бинарный поток файла изображения.
    Самый топорный вариант, исследователь графика будет иметь на руках только картинку, ни смаштабировать, и изменить какие-нибудь атрибуты отображения он не сможет. Единственное преимущество - процесс вычисления графика доступен только вашему скрипту, и никто не сможет провести реверсинжиниринг, если захочет разобраться как вы его генерируете.
    Вариант Б.
    На стороне сервера делаете аналитику, отдаете браузеру готовый html-документ, содержащий canvas с генерированными на стороне сервера векторными объектами (линии графика) в svg формате. Это тоже топорный, но уже промежуточный вариант между А и В. Единственное преимущество - все данные векторные, поэтому они будут легковесны для передачи и воспроизведения в браузере.
    Вариант В.
    На стороне сервера делаете аналитику, отдаете данные о вычисленных точках клиенту в виде json, а на клиенте рисуете график в какой-нибудь js-библиотеке. Выбор библиотек широк: chart.js, D3.js и т.д.
    Это самый прогрессивный вариант, поскольку на клиенте можно менять масштаб в окне просмотра графика, менять какие-нибудь атрибуты этого просмотра и т.д.
    Ответ написан
    1 комментарий
  • Как вывести многомерный массив по ключу?

    Если не заморачиваться с красотой подхода, то очень просто.
    foreach ($data2 as $key => $item) {
            foreach ($item as $key => $value) {
                if ($key == 'color' || $key == 'storage') {
                    print_r($value['value']);
                }
            }
        }
    Ответ написан
    Комментировать
  • В чем разница между symfony и laravel для начинающего?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    попробовав пописать на ларавел я понял, что он даётся ощутимо тяжелее чем чистый PHP.
    Это по тому что у вас нет понимания ооп в достаточном объеме. Да и "чистый" пхп нифига не проще, если писать что-то чуть сложнее чем "несложный сайтик на классах", и вы быстро потонете в говнокоде.

    Ларавел, как впрочем и другие фреймворки, дает уже готовую структуру, + кучу готового функционала, в том числе и структурированную основу, где у вас основной задачей становится именно дописать немного кастомного функционала, не покрытого внутренними механизмами движка, или отсутствует готовая библиотека под нужную фичу. Далее все сводится к манипуляции готовыми объектами. Что касается выбора - новичку скорее зайдет Лара, так как симфони на порядок сложнее по использованию искаропки, в Ларе же много чего просто уже работает, причем визуально гораздо проще чем в симфони, хотя за фасадами там достаточно такой сложный для новичков код, но обычно туда и не лезут без особой необходимости.

    Симфони сложновата для новичка, так как во первых полностью компонентная, во вторых даже для построения элементарной модели придется достаточно много писать ручками.
    Ответ написан
    2 комментария
  • Здравствуйте пытаюсь в теге сделать но ничего не выходит в чём проблема?

    colonel
    @colonel
    Разработчик PHP, Laravel
    А почему select, a не section?
    Ответ написан
    Комментировать
  • Как спроектировать систему уведомлений?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Кластеризация: уникальное уведомление (текст и событие) и его каунтер при повторах.
    Отдельно: детализацию всех уведомлений (если нужно).
    Ответ написан
    Комментировать
  • Что лучше использовать в CSS?

    Get-Web
    @Get-Web Куратор тега CSS
    Front-End Developer
    Атомарный css на новый лад))
    5f9cdd3e697a5687273341.jpeg

    А если серьезно, то тоже пытаюсь внедрять дата атрибуты ради эксперимента, но не как атомарный css, это слишком. Был проект там для итемов было много разных анимаций я использовал атрибут для визуального выделения и чтобы бекендщику было понятнее как ему менять эти анимации. [data-case-animate="12"] {...}
    Ответ написан
    2 комментария
  • Как перенести все записи на вордпресс сайт с другого движка?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Многое зависит от движка сайта-донора.
    Поищите готовые плагины. Например, для Joomla:
    https://ru.wordpress.org/plugins/fg-joomla-to-word...

    Если для движка нет готового плагина, а скорее всего для Unisite CMS его и не будет, то тут есть 4 варианта, известных мне:
    1) Если ваш движок позволяет экспортировать записи, то экспортируйте их в xls || csv. Далее установите плагин на ВП WP All Import и импортируйте записи.
    2) Написание парсера или использование готовых парсеров. Ну тут все понятно... пишете парсер свой, который собирает данные в xls || csv. Далее либо при помощи вышеназванного плагина или же при помощи WP REST API импортируете записи. Если нужен готовый парсер - Visual Web Ripper, DataCol и другие. Честное слово, иногда легче самому написать...
    3) Адаптация БД старого сайта под ВП. Не люблю этот вариант, так как приходится вникать под тонкости строения и работы БД старого сайта и т.д.
    4) Скачать полностью веб-сайт в обычном html. Например, используя wget. Затем при помощи плагина Html Import 2 импортировть записи на сайт. Вроде бы плагин уже устарел... Давно уже не использовал его...
    Ответ написан
    Комментировать
  • Таблица wp_postmeta весит более 1 гига, что делать?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вчера вечером как раз в телеграм канале задавался вопрос :)

    SELECT meta_key, meta_value, length(meta_value) 
    FROM wp_postmeta 
    ORDER BY length(meta_value) DESC
    LIMIT 10;


    - этот запрос покажет вам 10 самых тяжелых записей в этой таблице
    - изменяя LIMIT можно посмотреть больше/меньше записей
    - length(meta_value) покажет вес значения в байтах

    В итоге это позволило найти какие-то ненужные тяжелые записи в таблице и после чистки с 1+ гига уменьшилось до 300Мб.
    Ответ написан
    3 комментария
  • Обратиться к ul>li:before css?

    Stalker_RED
    @Stalker_RED
    что я делаю не так?
    Ответ написан
    Комментировать
  • Как сверстать такой блок?

    develx
    @develx Куратор тега CSS
    Web developer
    Поиск макета по github pages
    А если еще на самом github поискать cat food или fanbox, то море репозиториев с готовой версткой
    Ответ написан
  • Как удаленно обновлять программу на php?

    solotony
    @solotony
    покоряю пик Балмера
    самый простой способ через FTP - проверяй наличие обновлений и скачивай их. можно через то-же самое сделать через GIT .

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

    @JohnDidact
    Нуб во всём
    Вот мой быдлометод…
    Заливать обновы на удалённый комп.
    Написать прогу на PHP, которая будет кроном каждый день/час/минуту/секунду/тик/… проверять, есть ли обновления. Если есть, то эта самая прога, отдельная от основной, сначала скачивает полностью обновления в новую папку... Потом менять название папки на основную, предварительно переименовав старую в какой-нибудь типа бэкап... ну и всё.

    Но это не точно… я бы так сделал, но другим не советую. Есть для этих целей более профессиональное готовое решение.
    Ответ написан
    Комментировать
  • Как удаленно обновлять программу на php?

    inoise
    @inoise Куратор тега PHP
    Solution Architect, AWS Certified, Serverless
    Я бы в идеале вынес из локальной сети в интернет этот сервис и выдал всем централизованные доступы, но если возможности нет то добро пожаловать в начало пути DevOps. Возьмите, для старта, Jenkins и научите его развертывать обновления. Можно по расписанию, можно по обновлению master ветки из репозитория
    Ответ написан
    Комментировать
  • Как лучше распространить (продавать) коммерческий проект (angular 9 + php), локально или на сервере с общим доступом?

    @boss_lexa
    во первых не смешивайте бизнес модели (единоразовая оплата и подписку ежемесячно/ежеквартально/ежегодно) и тип пользования (SaaS или установка на сервер клиента)

    1) Регулярная подписка скорее всего даст большую прибыльность с одного клиента (LTV), чем стоимость его привлечения (CAC) и для бизнеса лучше выбрать именно ее. Но все зависит от сложивших рыночных условий на ваш продукт - возможно в данном типе бизнеса подписки не берут. Чтобы понять нужно изучить рынок и сделать какие-то тестовые продажи. Даже если клиент пользуется ПО на своем сервере - вы также можете лицензировать его по подписке. А еще для подписки важно правильно выбрать периодичность ее оплаты так, чтобы ее бизнес модель сложилась (LTV > 2 CAC не более чем за полгода) - некоторые компании берут например не менее чем за 3-6 месяцев оплаты - тк меньше им не окупаются затраты на привлечение клиентов в разумное время.

    2) Для защиты вашего ПО от кражи - самый надежный вариант продавать только доступ к своему серверу, про защиту данных и стоимость серверов - посмотрите на сервис Lightsail AWS - там в одном регионе по 3 датацентра с низким пингом, делаете репликацию и бекапы чтобы данные были надежно защищены от потери и были высокодоступны, недорогие цены на vps от 3.5$/месяц.

    Установка на сервер клиента - это как правило нужно только корпоративным клиентам, для которых критически важна информационная безопасность - такие клиента готовы платить за это!

    А еще есть ряд клиентов - которым администрирование своего сервера/хостинга - не удобно.

    Какое бы ПО вы не выбрали для обфускации и защиты кода на сервере клиента - его все равно сломают. В коде вашем копаться никому не надо - а вот сломать так чтобы можно было пользоваться бесплатно - это сделают!

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

    Поэтому решение - 2 тарифа:
    1. регулярная недорогая подписка на SaaS сервис в облаке (ежеквартально/ежемесячно/ежегодно) для клиентов которые платят немного
    2. регулярная подписка с большой стоимостью с установкой на сервер клиента (ежеквартально/ежемесячно/ежегодно) для корпоративных клиентов которые готовы платить много
    Ответ написан
    Комментировать
  • Дайте оценку верстке?

    @Flying
    Визуально выглядит вполне пристойно и очевидных косяков почти нет, но если копнуть глубже - возникают вопросы.

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

    Из наиболее заметного - заглавная картинка с автомобилем в PNG которая занимает почти 600кб и из-за этого грузится весьма и весьма неспешно (и заметно для пользователя). В целом это по большей части косяк дизайнера, не приложившего усилий к тому чтобы выбрать правильную графику (автомобиль снят явно на улице и отражения в стёклах дают существенный вклад в визуальный шум и, как следствие, в размер картинки, нужно было выбирать фотографию сделанную в специальном помещении). Кроме того дизайнер, очевидно, не слышал про требования к такси в Нью-Йорке и рисовал как взбредёт в голову, но оставим это на его совести. Сочетание фоновой картинки, на которой весь траффик едет в обратном направлении и делает автомобиль такси нарушающим правила дорожного движения - тоже на совести дизайнера.

    Однако и в этом случае и, тем более, в случае фоновых изображений ниже по странице вы допускаете ошибки с выбором форматов файлов, способами их вставки в страницу и оптимизацией. К примеру из картинки с автомобилем можно выжать почти 100кб просто за счёт использования оптимизаторов. Гораздо грустнее ситуация с фоновыми картинками ниже по тексту. Во-первых вы сохраняете фотографии в PNG, получая на выходе файлы по мегабайту, хотя они же в JPEG занимали бы в 5-10 раз быстрее. Во-вторых вы, скорее всего, сохранили фоновые картинки уже обработанными (затемнёнными). Я не видел макета, но предположу что там эти картинки стоят в их оригинальном виде и на них наложены какие-нибудь фильтры. На первый взгляд кажется что проблемы нет, но на практике (в случае вёрстки для реального сайта) вы вынуждаете человека который будет поддерживать сайт либо готовить картинки с такой же пост-обработкой либо мириться с тем что стиль сайта меняется. Правильное решение здесь - грузить картинки как они есть и реализовывать фильтры на CSS, тем более что здесь это делается элементарно через multi background или псевдо-класс с полупрозрачным фоном. Очевидно также что для таких тёмных картинок вполне можно использовать JPEG с меньшим качеством и тем самым существенно сэкономить пользователям трафик.

    Ещё одна проблема связанная с фоновыми картинками - вы не подкладываете под них близкий по цвету solid color. Попробуйте включить в dev.tools "Network throttling", отключить кэш и перегрузить свою страницу - думаю вы поймёте что я имею в виду - белые блоки с белым текстом стоят довольно продолжительное время, постепенно заполняясь довольно тёмными картинками. Если бы background-color под ними был бы чёрным - проблемы бы не было.

    Далее - логотип. Обычно логотипы разрабатываются отдельно и даже если он выглядит просто набранным шрифтом - это вовсе не значит что это не так. Логотип Google, Microsoft или Яндекс - тоже просто название, но, надеюсь вы не сверстаете их, написав надпись текстом? В общем логотип = картинка, лучше в векторе. Сейчас даже одно съезжание слогана на пиксель влево относительно названия уже рушит всю конструкцию логотипа.

    Обратите внимание на то как вы работаете с формами. Все поля в форме являются <input type="text">, хотя часть названий явно намекает на date / time селекторы, а "Choose Vehicle" - на список выбора.

    Хотелось бы отметить работу с иконками - их всё-таки лучше хранить в SVG и либо требовать с дизайнера либо подбирать на том же Icon Finder. При этом оформление (те пресловутые жёлтые кружки) лучше делать через CSS т.к. это позволяет вам существенно гибче работать с размерами элементов.

    Есть всякие недочёты касающиеся responsive, к примеру, внимание как отображается блок "Our Tariffs" в размере чуть более 600px, в частности название тарифа и описание.

    Пожалуйста обратите внимание на то что вы используете два разных меню для desktop и mobile представления. В целом в вашем случае меню довольно простое и можно было бы обойтись одним. Конечно две копии используют часто, но у этого решения есть свои недостатки (в частности отсутствие синхронизации состояния), так что вы должны осознанно принимать решение по таким вопросам. Кроме того inline обработчики onclick там явно могут быть заменены на элементарный
    document.querySelectorAll('.menu a, .menu-hover a').addEventListener()
    что явно сделает код более простым и поддерживаемым.

    Ещё один важный момент который зачастую опускают при вёрстке - поведение макета с реальными данными. То что дизайнер в макете понапихал везде lorem ipsum и тексты примерно одинакового размера - отнюдь не означает что на реальном сайте эти условия будут соблюдаться. Отсутствие навыка проверять поведение макета в изменяющихся условиях ведёт к множеству ошибок которые не видны в условиях синтетических данных. К примеру попробуйте в блоке "We Do Best Than You Wish" (претензии по поводу английского языка оставим в стороне) в любом из элементов банально увеличить количество текста в 2-3 раза. В Chrome это приводит только к излому сетки, в Firefox - ещё и к изменению размера иконки. При этом я предполагаю что Firefox ведёт себя правильно т.к. пропорции элементов изменились, а ограничения размеров на картинки у вас не заданы.

    В целом похоже что макет верстался и проверялся только в Chrome. К примеру посмотрите как ведёт себя картинка с рукой и телефоном в Firefox при изменении размеров. Опять же Firefox вполне корректен т.к. вы не обрезали картинку корректно, предпочитая выгрузить "как есть" и подгонять положение в CSS, но забыв при этом про overflow: hidden для контейнера.

    Теперь перейдём к CSS:

    Обратите внимание на то как вы подключаете внешний шрифт:
    family=Lato:400,700,700i,900,900i&amp;subset=latin-ext
    . Возникают два вопроса:
    1. Зачем вам subset=latin-ext на сайте где есть только базовая латиница?
    2. Как вы выбирали начертания? У вас подключаются 5 начертаний (400, 700, 900 + два italic'а), при этом grep по CSS даёт значения font-weight 200, 300, 400, 500, 600, 800 и ни одного italic. Вам не кажется что эти множества почти не пересекаются?


    Кроме того вы постоянно забываете про fallback шрифты что на медленном интернете и при отсутствии инструкций для font loading приводит к невидимому контенту страницы на период загрузки.

    Отсутсвие ограничения по ширине для .wrapper приведёт к недопустимо широкому сайту на больших мониторах с высоким разрешением. Можете уменьшить масштаб страницы до 50% и полюбоваться результатом.

    В стилях повсеместно используются достаточно общие названия классов в global namespace. К примеру кто бы мог подумать что стилизует селектор .text? Вы уверены что нигде больше на сайте подобный селектор не встретится? Даже при дальнейшем развитии сайта? Другими словами именование селекторов - важная часть работы, вы можете использовать любую методологию (тот же БЭМ или что-то ещё) или разработать свою, но ваш код не должен ломаться при добавлении ещё пары блоков, особенно если это будет делать другой человек.

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

    Использование id в качестве CSS селектора - плохая практика, но у вас таких мест немало, 11 штук.

    Уверен что мог бы найти ещё что-то, но надеюсь для затравки хватит, и так много получилось... :)
    Ответ написан
    4 комментария
  • Как отображать изображения на тестовом сайте, если они лежат на основном?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    можно наладить редирект в оппаче, Redirect /uploads http://main.site/uploads
    но я бы просто перенес картинки на тестовый.
    Ответ написан
    Комментировать