Ответы пользователя по тегу Веб-разработка
  • Какой выбрать редактор?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Вылезайте из песочницы, купите себе WebStorm и программируйте нормально.
    Ответ написан
    Комментировать
  • Почему Open Graph в facebook формируется иногда некорректно?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Для начала следует указать корректный og:type.
    После этого нужно начинать разбираться с ограничением количества вызова парсингов вашей страницы.
    Этот лимит находится на стороне Facebook. Чтобы обойти это ограничение - нужно делать вызовы парсинга вашей страницы реже. Если вы постите новости в Facebook, постите реже.
    Я не знаю, что Amplifr за приложение такое, но следует к нему присмотреться, возможно оно настроено или работает неправильно.
    Ответ написан
  • Возможно ли обращаться в одном php файле к разным запросам?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Шаг первый phpfaq.ru/newbie/na_tanke
    Шаг второй php.net/manual/ru/function.include.php
    Ответ написан
    Комментировать
  • Как в огромнейших проектах искать ошибку?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Для начала следует поставить xdebug, xhprof и PHPStorm. Это необходимый набор инструментов для облегчения навигации. В PHPStorm очень удобный отладчик. Можно видеть стэк вызовов и т.д. xhprof позволяет в целом посмотреть на картину выполнения всего проекта. Работать с массивами правда сложно, особенно когда "черезчур умные" люди начинают изобретать самопальные сортировки и функции с паршивыми именами.

    Вам нужно найти, с помощью чего строится запрос к Solr, для этого ищите по ключевому слову Solr. Далее выясните, какой запрос уходит в Solr и что возвращается из него. Если результаты поиска по Solr в порядке, переходите к тому, как происходит отрисовка данных. Если выдача из Solr ошибочна, ищите как формируется индекс.
    Ответ написан
    Комментировать
  • В каких случаях использование фреймворка(например express.js) для nodejs не оправдано?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Неоправдано в следующих случаях:
    • Вы только начали изучать Node.JS и практически ноль в нем. В данном случае лучше сразу разобраться с основами и только затем браться за изучение фреймворков.
    • Когда нужно сделать что-то очень простое и очень быстрое. Например у вас 2-3 функции, которые просто работают с базой. Например счетчик визитов на сайте.
    • Когда фреймворк не вписывается в архитектуру вашего приложения. Например у вас повсюду веб-сокеты и к ним сбоку пытаются прилепить еще и фреймворк.
    • Когда приложение написано для стриминга данных, например мультиплексор какой-нибудь. Тут обычные фреймворки курят в сторонке.
    Ответ написан
    Комментировать
  • Какое техническое решение подобрать для создания сайта?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Поскольку я сталкивался с подобными задачами, сразу скажу, что нужно писать систему готовую к горизонтальному масштабированию.
    Сразу выкиньте из головы готовые CMS и прочую шелуху, когда вы засунуте в базу под лям объектов, вы начнете топить печь деньгами, чтобы обеспечить должный уровень отклика.
    Базу следует брать SQL, начинать с mysql и изначальной настройкой мультимастер шардинга+репликации+failover. Здесь очень долго посидеть над анализом документации, поиска по параметрам и т.д. На первичном этапе это не требуется, но потом часто выливается в гемор.
    На бэкэнд следует брать Go (Gorm для работы с базой). Он легко деплоится и просто масштабируется c помощью примитивной балансировки.
    Строительную документацию и картинки сразу хранить в S3-подобном хранилище.
    На фронтэнд берите последний AngularJS. Можете поиграться с Vue, но потом вам все равно прийдется это переписывать.

    Для такой работы вам потребуются следующие специалисты: дизайнер (фринлансер), devops-чел (проверенный, на удаленке), 2 программиста (frontend + backend) на полный рабочий день (они тоже могут работать удаленно) и руководитель проекта (технический директор).

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

    Не думайте о такой системе, как о сайте. Вам нужно веб-приложение.
    Ответ написан
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Я понимаю, о чем вы пишите и почему. Ваш код работает, т.к. решает поставленные задачи и удовлетворяет потребности ваших клиентов. Имеет ли он право на жизнь? Да, но только в вашем отдельно взятом случае.

    Дело в том, что ваш код не гибок, в нем отсутствует масштабируемость, его невозможно поддерживать.

    Что если вам потребуется сделать блог, в котором нужно иметь комментарии, которые обновляются в режиме реального времени? И комментарии могут содержать HTML, но такой, чтобы ваш сайт не могли взломать?
    А еще комментарии короче 2000 символов по воскресеньям платные. Оплата через Яндекс.Деньги.
    Вы все это делаете, все работает.
    Затем заказчик вам говорит, я хочу запустить такую же систему другу, но с оплатой по понедельникам через WebMoney.
    Вы копируете сайт, переписываете функцию оплаты.
    Дальше ваш заказчик видит, что у друга больше денег, он просит добавить WebMoney к себе.
    Вы опять переписываете код. Добавляете условия.
    Потом к вам приходит друг заказчика и хочет другое оформление. Вы переписываете его функции.
    Затем он просит добавить поиск по названиям записей к себе на сайт. Вы делаете. Буквально на следующий день к вам приходит заказчик и тоже просит поиск, но не только по названиями, но и по телу статей и по комментариям. Вы делаете.
    Затем ваш заказчик видит, что дела у него идут в гору и он просит отменить платные комментарии и сделать просто платные аккаунты для всех. Вы переписываете.
    Тем временем друг просит вас сделать все тоже самое, но с его оформлением.
    Дела у заказчика идут в гору и сайт начинает тормозить. Вы делаете кэширование.
    Внезапно сайт заказчика попадает в топ и нагрузка резко увеличиваете настолько, что один сервер уже не справляется. Вы переносите все на самый мощный, но он его тоже мало.
    Нужно делать горизонтальное масштабирование.
    Для этого нужно переписать все функции, которые работают с базой данных. А их уже больше двухсот. И просто замена не подходит.
    Сайт открывается через раз, заказчик звонит вам каждые 2 часа и спрашивает, как там прогресс.
    И тут вам присылает письмо друг заказчика и говорит, что хочет перейти с MySQL на PostgreSQL.
    И вы понимаете, что вам надо будет переписать еще 300 функций, но на другом сайте. Вы его посылаете, поскольку вы и так в мыле.
    Друг жалуется на вас заказчику. Заказчик, не ставя вас в известность, нанимает другого исполнителя, у которого отваливается челюсть от того, что творится в системе. Он объясняет, что ему нужно будет потратить полгода, чтобы вникнуть в то, чтобы понять ваш код, но он может сделать все тоже самое за 4 месяца, причем для заказчика и его друга так, что это будет расширяемо и поддерживаемо не только им.
    Тем временем, спустя двое суток жизни на кофеине вы героически переписываете все функции заказчика и идете отсыпаться. После суток сна вы обнаруживаете на автоответчике сообщение, что вы уволены. А все потому, что забыли проверить функцию логина.

    А теперь разберем эту историю по частям. Почему же вас уволили?

    Незнание абстракций и шаблонов проектирования привело к тому, что вы вынуждены были поддерживать 2 разных проекта с практически одинаковой логикой.
    Например ORM смог вам помочь поддерживать 2 разные базы данных без каких-либо усилий. Сменить одну базу на другую стоило бы исправления конфигурации, а не переписывания 300 функций.
    Использование фреймворков позволило бы сократить время на реализацию подключений платежных систем. Многие из них имеют готовые реализации.
    Опять же в современных фреймворках, например в той же Doctrine реализован шардинг. В большинстве случаев ваши проблемы свелись к изменению настроек.
    Но даже если бы вы накосячили, то интеграционные тесты не позволили бы попасть говну в продакшен. А если бы оно и попало, ну накосячили вы с тестами тоже, то проблема была бы обнаружена на раннем этапе благодаря "сине-зеленому" развертыванию и она бы не затронула всех пользователей.
    И да, ваш код не прошел внешний аудит.

    Чтобы быть настоящим профессионалом, нужно не только знать, но и уметь применять на практике ООП, популярные фреймворки, шаблоны проектирования, тестирование и средства непрерывной интеграции, а еще пользоваться нормальными IDE и нести ответственность за сделанную работу.

    Когда пишете свой код, почаще задавайте себе вопрос: А если бы это был код для моего кардиостимулятора? Это поможет.
    Это вам для общего развития.
    Ответ написан
    5 комментариев
  • Как искажать фотографии?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Можно попробовать GAN приспособить для этого.
    Ответ написан
    Комментировать
  • Делаю сайт трц и возникла проблема с интерактивным планом этажей как его реализовать?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%80%D...

    Самый простой и надежный способ. Работать будет везде. Генераторов подобных карт море.
    Ответ написан
    Комментировать
  • Как правильно делать "горячие/интересные" посты?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Правильно такие ленты строятся в зависимости от подхода.
    1. Когда ранжирование является глобальным. В таком случае, каждая запись имеет некоторый ранг - вычисляемое поле, которое пересчитывается по событию. Например, когда кто-то делает к ней комментарий или по каждому седьмому просмотру. Логика расчета ранга зависит от ресурса и содержимого. Ну а дальше элементарная сортировка. Если вы хотите, вы можете исключать просмотренные статьи.
    2. Когда ранжирование зависит от предпочтений пользователя. В данном случае при авторизации пользователя в фоновом процессе происходит расчет ранга или лента строится на лету. Для построения ленты на лету применяется комбинация графовых и обычных баз. Графовые могут быстро рассчитывать степень влияний предпочтений и связей пользователей между собой.
    Ответ написан
    Комментировать
  • Нужно ли покупать сертификат SSL, если используется Cloudflare?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Если вы не организация, требующая определенного уровня доверия или компания, которая принимает платежи онлайн, то вам достаточно бесплатного сертификата.
    Ответ написан
  • Как реализовать такое?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Вы можете реализовать подобное на PHP. См. socketo.me

    Еще можно сделать так https://habrahabr.ru/post/122783/
    https://ruhighload.com/post/Server-Sent+Events_20160530

    Еще есть такой очень интересный модуль https://www.nginx.com/resources/wiki/modules/push_...
    Ответ написан
    Комментировать
  • Чем обусловлен внезапный рост популярности web-разработки в РФ: востребованностью или модой?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Рост популярности веб-разработки связан с низким уровнем специалистов и кадровым голодом. Курсы позволяют получить образование людям, которые не в состоянии позволить себе обучение в дргуих учебных заведениях. Плюс это удобный способ подъема квалификации для уже существующих специалистов.
    Курсы позволяют за несколько недель поднять уровень, освоить новый фреймворк и т.д.
    Ответ написан
    Комментировать
  • Как лучше реализовать мультиязычность относительно SEO?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Лично я бы делал site.com/en/ site.com/ru/ и т.д.
    На страницах я бы указал hreflang атрибут у перекрестных языковых ссылок и в заголовке документа lang атрибут тоже обязательно.
    В такой схеме вес домена будет увеличиваться за счет каждой ссылки на него. Плюс есть удобства вроде SSL/TLS и т.д.
    Ответ написан
    Комментировать
  • Разрешен ли мат на сайтах в зоне .ru?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Откройте одноклассники.ру, майл.ру. Посмотрите, сколько там матов и грязи. Сделайте выводы.
    Ответ написан
    5 комментариев
  • Имеет ли право такой способ хранения текстов в виде архивов для оптимизации скорости работы?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Имеет смысл использовать базу данных, умеющую их сжимать. Например MongoDB сжимает данные примерно в 2 раза от их размера на диске при использовании WiredTiger и полнотекстового индекса. Не знаю, как с сжатием дела в MySQL или PostgresQL. Наверняка что-нибудь уже есть.
    Для сайтов о работе поиск вакансий критически важный функционал, от работы которого полностью зависит успешность вашего проекта.

    Ответы на вопросы
    1. Не имеет. Работа с файлам отнимет большую часть времени на разработку проекта, особенно операции редактирования, обновления информации.
    2. Архивировать нет смысла, исключение могут лишь составить разного рода прикрепленные документы в формате doc, xls и т.д., которые хорошо сжимаются и которые технически проще отдавать с диска напрямую. Можно архивировать в gzip в виде сгенерированной странички. Тогда nginx будет ее напрямую клиенту отдавать. Сэкономите на месте и времени CPU.
    3. Имеет смысл разбивать на папки, если у вас там будут миллионы файлов в папки. Просто из банального удобства навигации. В остальном вы ограничены количеством inodes.
    4. Решение не самое красивое, но имеет право на жизнь. Я бы так делать не стал.
    5. Сжимать файлы не стоит. Используйте MongoDB, она умеет все сжимать по умолчанию. В ней есть полнотекстовые индексы. Если надумаете дальше развивать проект, то его будет легко смаштабировать.


    Я не занимаюсь рекламой MongoDB. Я использую ее уже на протяжении 3-х лет в продакшене под серьезной нагрузкой и знаю ее сильные стороны.
    По поводу базы - если очень хочется, можете архивировать и хранить архивированные файлы прямо в том же MySQL. Просто когда будете вытаскивать данные при поиске, не делайте SELECT * Выбирайте только требуемые поля. И про индексы не забудьте.
    Ответ написан