• Как правильно сделать чтобы страница проиндексировалась в гугле сразу после ее создания?

    sim3x
    @sim3x
    Нужно создать популярный сайт
    Ответ написан
    Комментировать
  • Как сделать новости на сайте?

    @skazi_premiere
    Верстаем как умеем ;) HTML/CSS/JS
    1. С использованием готовых систем управления контентом привязав к ним свою верстку.
    2. С использованием базы данных и самописным велосипедом.
    Ответ написан
    2 комментария
  • Как эффективнее всего изучать yii2?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый день.
    Читать документацию, смотреть проекты на github, пытаться написать своё решение для какой-либо задачи....
    Вот несколько ссылок, которые Вам помогут:
    1) rmcreative.ru (блог одного из разработчиков yii2)
    2) https://github.com/samdark/yii2-cookbook (рецепты от того же разработчика)
    3) www.elisdn.ru/blog/tag/Yii2 (один из блогов, где можно учиться работать с yii2)
    4) https://github.com/yiisoft/yii2/tree/master/docs/g... (документация на русском от разработчиков yii2)
    Ответ написан
    1 комментарий
  • Нарушает ли сайт 129 УК за клевету?

    StrangeAttractor
    @StrangeAttractor
    Автор отзыва оставляет обязательно емаил и записывается его IP. Часто компаниям хватает передачи этих данных.

    Мне вот думается, что вот раздавать личные данные кому попало - вот это скорее нарушает и базовые моральные нормы отношения к пользователям и закон о персональных данных, например. Прежде чем передавать кому-то чьи-то данные надо спрашивать у того, чьи данные передаёте. Я бы на Вашем месте скорее предложил представителю компании передать пользователю контакт на него и просьбу выйти на связь а также возможность удаления нелестного отзыва если оставивший его пользователь с этим согласится. Если пользователь не согласится, то единственно адекватное (хотя точки зрения правоприменительной практики - ХЗ), что представитель компании может сделать - это выступить с аргументированными возражениями там же в комментах на общих правах.
    Ответ написан
    1 комментарий
  • Нарушает ли сайт 129 УК за клевету?

    Почитайте эту статью blog.pravo.ru/blog/7241.html, плюс статьи ук и гк, упомянутые в ней, потом посмотрите соглашения на популярных сайтах отзывов, как они отмазываются от всего этого (там наверняка будут строки типа "сайт не несет ответственности за то, что выложено пользователями") и скопируйте себе одно из них, чтобы тыкать отрабатывающих негатив умников в него. И насколько я понимаю, данные пользователей вы им выдавать не обязаны, да это и незаконно - персональными данными делиться без решения суда и разрешения того, кто вам эти данные оставил.
    Ответ написан
    6 комментариев
  • Нужно ли делать дизайн мобильной версии или верстальщик разберется?

    Ankhena
    @Ankhena Куратор тега Вёрстка
    Нежно люблю верстку
    Нужно ли рисовать мобильную версию:
    зависит от
    - дизайна
    - содержимого
    - квалификации дизайнера
    - квалификации верстальщика (и возможно сотрудничества дизайнера, чтобы дорисовать какие-то иконки/мелочевки по требованию верстальщика)
    - аудитории сайта и % пользователей с мобильников

    Делать ли отдельную мобильную версию:
    - если контент существенно отличается - ДА
    - если нет или скрыты лишь некоторые несущественные блоки - делать адаптивный

    Бутстрап
    - зло :)
    Ответ написан
    4 комментария
  • Нужно ли делать дизайн мобильной версии или верстальщик разберется?

    @popov654
    Специалист в области веб-технологий
    Конечно, нужно. Верстальщик - не дизайнер. Мобильная версия очень сильно отличается от десктопной (посередине между ними есть ещё планшетная, а иногда и 2-3 вариации с плавными изменениями). При так называемом "адаптивномм" дизайне отличий между версиями меньше, и они идут плавнее по мере изменения размера экрана, но они всё равно есть. Верстальщик без дизайнера грамотно всё это не продумает, факт.
    Ответ написан
    Комментировать
  • В чем недостатки сайта на чистом php?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Многие говорят, что для разработки нормального сайта(а я хочу сделать многостраничный сайт с авторизацией, комментированием, админкой итд.) нужно использовать какой-нибудь фреймворк, например yii2.
    Это те, кто считает, что лучше, чем сделали они - вряд ли кто-нибудь сделает.
    Это обычное продвижение проекта через "своих" евангелистов.

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

    PS: Если нужно сделать быстро - берёте популярную CMS (я обычно работаю с CMS Joomla!), учите пару строк фреймворка и "запиливаете" функционал.
    Ответ написан
    6 комментариев
  • Чем отличается адаптированный от адаптивного сайта?

    theWaR_13
    @theWaR_13
    Скорее отзывчивый (responsive) от адаптивного. В отзывчивом дизайне используются %. Вы можете зайти на сайт, начать изменять размер окна браузера и сайт будет изменяться прямо в процессе. А в адаптивном дизайне используются media-queries. Т.е. в зависимости от параметров экрана (размер, тип и пр.) будут применяться определенные стили.
    Ответ написан
    2 комментария
  • В каких случаях вы использовали Redis?

    @chronic86
    Ruby on Rails junior
    1. Хранилище сессий и профилей пользователей;
    2. Сервер очередей, плюс держим в уме механизм publish/subscribe;
    3. Полноценная замена Memcached, притом в случае с Redis мы получим репликацию, более длинные ключи и значения, возможность восстановления кэша с диска и тп;
    4. Место для хранения количества пользователей онлайн, кодов капч, различных флагов, саджестов поисковых запросов;
    5. СУБД для небольших приложений — сокращалок ссылок, имиджбордов, возможно даже блогов;
    6. Роль «словаря» в шардинге, то есть сервер, который знает, какие шарды на каких серверах искать;
    7. Хранилище промежуточных результатов вычислений при обработке больших объемов данных;


    eax.me/redis
    Ответ написан
    Комментировать
  • Как обезопаситься от шеллов на сервере?

    Vamp
    @Vamp
    Для начала необходимо разделить сайты друг от друга физически. Сами скрипты сайта, временные файлы и файлы сессий.

    Например, структура может быть такая:
    /var/www
      + toster.ru
      |  + site
      |  + sessions
      |  + temp
      + example.com
      |  + site
      |  + sessions
      |  + temp
      + остальные сайты


    В папке site расположены скрипты сайта. Обычно эта папка (или одна из вложенных) является document root сайта.

    В sessions находятся файлы сессий посетителей сайта. Если их не разделять, то взлом одного сайта автоматически дискредитирует сессии всех пользователей остальных сайтов. То есть, взломав example.com, можно стырить сессию администратора toster.ru. Путь к этой папке настраивается директивой session.save_path.

    А в temp находятся временные файлы, загружаемые пользователями через html формы (директива upload_tmp_dir). Туда же неплохо направить и остальные временные файлы, генерируемые функциями tmpfile(), tempnam(), самостоятельным образом (используя результат функции sys_get_temp_dir() для построения пути) или любой другой функцией, которая использует системную временную директорию. К сожалению, директива sys_temp_dir, ответственная за это, появилась только в php 5.5.0. Если у вас более ранняя версия, тогда нужно учитывать момент, что сайты могут ходить в /tmp и нельзя блокировать доступ к этой папке.

    ---

    Далее необходимо настроить нормальные права доступа. Часто в интернете можно видеть советы "делайте chmod 777 на всё". Так делать нельзя. Подобные права доступа как раз наихудшим образом сказываются на безопасности, потому что дают возможность отредактировать любой скрипт на сайте и встроить маленький бэкдор в самый незаметный скрипт, принадлежащий CMS. Надежно избавиться от такого довеска можно будет только полной переустановкой CMS. Или можно загнать весь сайт в систему контроля версий, как предложил Максим Гречушников, и одной командой узнать какие скрпиты были заражены. Тем не менее, одно другое не исключает. Система контроля версий позволит выявить заражение постфактум, а нормальные права не дадут возможности заразить файл в принципе.

    Я рекомендую на папки устанавливать права 755, а на файлы 644. При этом, владельцем всех папок и файлов должен быть кто угодно, но не пользователь, из-под которого запущен веб-сервер или php (например, пользователь, под которым вы сами заходите на сервер по ssh). Но такие права на всё устанавливать тоже нельзя. Сайт в процессе своей работы может генерировать свои временные файлы (например, кешировать что-то в файл, компилировать шаблоны, хранить какие-нибудь настройки), поэтому для папок, в которые сайт может что-то записать, права должны быть другие. Вот здесь уже можно ставить 777 для папок и 666 для файлов. Это довольно кропотливая работа, потому что у каждого сайта (особенно если они на разных CMS) свои папки и часто определение таких папок нетрвиально.

    И права доступа не решают всех проблем. Злоумышленник может встроить вредоносный код в скомпилированный шаблон или отравить кеш. Тогда не помогут ни права (так как для нормальной работы сайту нужно иметь права на запись в такие файлы), ни система контроля версий (так как подобные файлы слишком часто меняются и, как правило, не хранятся в репозитории). Хотя надо сказать, этот способ внедрения сложнее и недолговечнее, чем встраивание в нормальный скрипт.

    И ещё автоматическое обновление сайта перестанет работать. Если CMS позволяет обновить себя через кнопку в веб-интерфейсе админки, то такое обновление не будет работать, так как права доступа не разрешают веб-серверу модифицировать скрипты. Обновлять скрипты теперь можно только вручную от имени пользователя, которому принадлежат все файлы. Безопасность и удобство - разные концы одной палки.

    Даже с учётом всех недостатков - нормально настроенные права доступа на файлы и папки значительно сокращают вектор возможных атак. Так что обязательно разберитесь с этим вопросом.

    ---

    После раскидывания сайтов по своим папкам и настройки прав, необходимо ограничить доступ сайтов друг к другу. Проще всего это сделать настройкой php директивы open_basedir. Эта директива определяет список директорий, внутри которых (а так же во всех вложенных папках) скрипты могут читать и писать. Доступ за пределы этих директорий будет пресекаться. То есть нужно каждому сайту прописать в open_basedir путь к своей папке и к /tmp (если версия php < 5.5.0 и нельзя установить sys_temp_dir).

    Для Apache с mod_php конфигурация прописывается в httpd.conf:

    <VirtualHost *:80>
      ServerName example.com
      php_admin_value open_basedir /var/www/example.com/:/tmp/
      php_admin_value upload_tmp_dir /var/www/example.com/temp/
      php_admin_value sys_temp_dir /var/www/example.com/temp/
      php_value session.save_path /var/www/example.com/sessions/
    </VirtualHost>


    Для php-fpm в конец php.ini файла вписывается специальная секция, определяющая индивидуальную конфигурацию для каждого сайта:

    [HOST=example.com]
    open_basedir /var/www/example.com/:/tmp/
    upload_tmp_dir /var/www/example.com/temp/
    sys_temp_dir /var/www/example.com/temp/
    session.save_path /var/www/example.com/sessions/
    
    [HOST=toster.ru]
    ; конфиг для toster.ru и т.д.


    У open_basedir есть недостатки:

    1. Замедление файловых операций, так как необходимо проверить вхождение каждого открываемого файла в список open_basedir. Если проекты не highload, то некритично.
    2. Есть варианты обхода. Но их далеко не всегда удаётся эксплуатировать. Тем более они закрываются со временем в новых версиях php.
    3. Realpath cache не работает вместе с включенной open_basedir.

    ---

    Есть вариант запускать каждый сайт от своего пользователя. В apache это делается опцией AssignUserId. В php-fpm - отдельной конфигурацией pool. Но в любом случае нужно для каждого сайта создавать не только отдельного юзера, но и группу. При этом права на основную папку сайта (/var/www/example.com) должны быть 750, а группа должна соответствовать той, от которой будет запускаться процесс apache (или пул php-fpm), ответственный за обслуживание сайта.

    Проще показать на примере. После имени файла я буду указывать права, владельца и группу в формате (права, владелец:группа)
    /var/www         (755, root:root)
      + toster.ru    (750, my_user:toster)
      |  + site      (755, my_user:toster)
      |  + sessions  (777, my_user:toster)
      |  + temp      (777, my_user:toster)
      + example.com  (750, my_user:example)
      |  + site      (755, my_user:example)
      |  + sessions  (777, my_user:example)
      |  + temp      (777, my_user:example)
      + остальные сайты - всё аналогично


    my_user - это пользователь, под которым ни в коем случае нельзя запускать веб-сервер и php. Это может быть ваш собственный пользователь, под которым вы заходите на сервер по ssh. В этом случае у вас будут все права на сайт, а у сайта только необходимый минимум.

    <VirtualHost *:80>
      ServerName example.com
      AssignUserId exapmle example
    </VirtualHost>
    <VirtualHost *:80>
      ServerName toster.ru
      AssignUserId toster toster
    </VirtualHost>


    Разумеется, в системе должны быть заранее созданы пользователи с именами toster, example и с одноимёнными основными группами.

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

    ---

    Более сложным и предпочтительным вариантом является упаковка каждого сайта в свой отдельный виртуальный контейнер lxc/docker. Я не смогу в двух словах описать как это добро настраивать, но эффект будет такой, как будто каждый сайт работает на своём собственном VPS сервере.

    ---

    Ещё немного про базу. Для доступа к базе у каждого сайта должен быть свой собственный логин с паролем. Причем, доступ должен ограничиваться исключительно той базой, в которой находятся данные сайта. И права должны быть не все подряд, а только SELECT, INSERT, UPDATE, DELETE. В редких случаях CMS может самостоятельно создавать таблицы для своих нужд в процессе своей работы (не в процессе первичной установки). В этом случае можно добавить права CREATE, ALTER, INDEX юзеру этого сайта. Иногда бывает в базе есть какие-то процедуры/функции. Для их вызова требуются права EXECUTE.

    ---

    Безопасность - дело большое и очень разнообразное. И уж точно не простое. Всё что я здесь написал - это далеко не полный список. Есть ещё настройки уровня операционной системы (особенно фаервол) и прочего установленного в системе софта. Так же отдельным пунктом идёт система мониторинга и оповещения, которые почему-то никто не делает - не считают нужным разбираться ещё и в этом. Так что если у вас нет хорошего админа в запасе, то проще будет заказать услугу администрирования прямо у того же хостера, у которого вы арендуете VPS. Или найти админа-фрилансера. Или же перевезти сайты на shared хостинг, где администрирование уже включено в ценник, да и сам переезд хостеры часто предлагают сделать бесплатно силами своих админов.
    Ответ написан
    Комментировать
  • Как сделать сборку комплектации кухни на сайте?

    @daihatsu
    А бабла у него хватит?

    Если он не предлагает тебе воспользоваться каким-либо уже готовым 3D конструктором (с встроенным API!!!!), куда уже вбиты все параметры кухни, то это очень специфическая задача.

    Не стесняйся - повышай цену. На эту задачу он вряд ли найдет дешевого исполнителя. Да и вряд ли вообще найдет исполнителя.

    Навскидку - от нескольких штук баксов (не меньше 3, а скорее - еще раза в 2-3 больше).

    P.S.:
    Возможно, под словом "клиент может выбрать как хочет" подразумевается 5 встроенный фиксированных моделей кухонь с возможность их окраски?

    Тогда задача существенно упрощается. Первая для тебя задача - чтобы клиент тебе выдал эти 3D модели в удобном для тебя формате.

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

    в большинстве нормальных фреймворков это делается почти из коробки
    вы не указали стек технологий и потому я буду говорить о бекенде и сугубо для PHP (для других бекенд языков будет справедливо с некоторыми оговорками, о которых я могу не знать).
    обычно текущая локаль хранится в сессии. если ее там нет, то берем дефолтную, да, все верно, все именно так. при каждом запросе нужно проверять значение текущей локали, которая хранится в сессии и по этому значению подгружать соответствующий вариант локализации
    Ответ написан
    Комментировать
  • Позиционирование div по середине экрана?

    @VisualIdeas
    .pop_wrap
    установите pointer-events:none
    Ответ написан
    Комментировать
  • Где взять макеты psd, сверстав которые можно показать в портфолио?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Сборник лучших макетов по моему мнению, постоянно добавляются новые. https://psdrepo.com/tag/free-psd-website-templates/
    Лучшего я пока не нашел.
    Ответ написан
    4 комментария
  • Что на сайте нужно обязательно кэшировать?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Обязательно - не надо ничего кэшировать.
    Дополнение от dimasmagadan : Не забываем про настройку сервера для того, чтобы браузер клиента мог сам кэшировать страницы.

    В идеале, кэшировать надо данные ВСЕХ функциональных блоков, зависящих от входных параметров.
    К ним относятся:
    1. SQL-запросы и ответы
    2. поиск по любой структуре данных и результат этого поиска
    3. файловая структура, находящаяся по определённому пути
    4. данные, полученные для каждого из блоков представления ("список", "выборка", "статистика" и т.д.)
    5. сформированный шаблонизатором контент на основе GET-параметров

    Всегда кэшируйте первым тот блок, который занимает больше времени при обработке данных и т.д. по нисходящей.
    Первые претенденты на кэширование, как правило: блоки с пунктами 2, 3 и 5.

    Дополнение от Алексей Уколов :
    Кеширование - это большая боль для разработчика, на самом деле. И "не надо кешировать" - это именно с этой точки зрения. Любой кеш усложняет приложение в разы, потому что его нужно инвалидировать, обрабатывать ошибки и т.п. Но часто без него не обойтись, это факт.
    Ответ написан
    7 комментариев
  • Функциональный конструктор сайтов?

    littleguga
    @littleguga
    Не стыдно не знать, а стыдно не интересоваться.
    Суть в том, что если бы был такой клевый конструктор, то верстальщики бы давно остались без работы.

    Ну нет еще идеального инструмента для создания сайта из визуального перетягивания и расположения форм. Кодить всё равно придется.

    Выберите фреймворк, который Вам больше всего понравится и из него клепайте. Других вариантов пока нет.
    Ответ написан
    Комментировать
  • Актуальная информация по GeekBrains?

    bingo347
    @bingo347 Куратор тега HTML
    Crazy on performance...
    Не так давно получал предложение по работе от них типа "ищем крутых программистов для проведения обучающих вебинаров"
    Ок, позвонил, отвечает девушка, общаемся, некоторые выдержки:
    Я: У меня высшее образование по специальности "преподавание информатики" и 2 года пед стажа, работал в колледже по специальности
    Д: Главное, чтоб Вы были действительно крутым программистом!
    Я: как Вы поймете, что я действительно крутой программист?
    Девушка: это покажет тестовое задание

    Я: Для проведения вебинара понадобится какое-либо специализированное ПО?
    Д: да, у нас есть собственное ПО, мы Вам вышлем инстолятор и инструкции в случае если Вы будете работать у нас
    Я: Я сижу под линуксом, Ваше ПО запускается на линукс нативно?
    Д: Что такое линукс?

    Ладно, девушка просто HR, не будем придираться, на крайняк запустим под вайном их крутое ПО...

    Получаю тестовое задание:
    "Запишите ролик, где Вы рассказываете о своем ЯП и покажите примеры циклов на нем для новичков"
    Сомнения увеличиваются, как это может показать мою "крутость" как программиста?
    Ну ок, записать видео с экрана не проблема, лезу в ютуб за примерами и нахожу их канал, среди роликов нахожу запись вступительного вебинара, ролик выложен весной 2014 по node.js - смотрю, парнишка рассказывает народу какая крутая нода по сравнению с php, python и ruby, отвечает на вопросы, притом пропуская некоторые, которые посчитал неуместными, но убила фраза "я программирую на ноде более 5 лет", напомню что ролик выложен весной 2014, следовательно снимался еще раньше, а нода появилась летом 2009... у парня проблемы с математикой когда он врет...
    Вообщем потратил свои 2 часа и просмотрел вебинар полностью, все сводилось к тому, что нода реально крутая и жизненно вам необходима, только купите наш мега крутой курс
    И я решил, что не смогу так парить мозги людям, ради выкачивания из них денег, и работать у них не хочу, а освоится новичкам я и на тостере помогу...
    Ответ написан
    1 комментарий
  • Хочу,чтобы ajax запрос вызывался только 1 раз?

    atis2345
    @atis2345
    PHP developer
    хАти... каким боком тут сам ajax запрос если вы его 2 раза вызываете?
    Ответ написан
    Комментировать
  • Как починить адаптивку?

    HamSter007
    @HamSter007
    HTML/CSS верстальщик
    в тостере не хватает опции "Ванга"
    Ответ написан
    1 комментарий