Задать вопрос
  • Как вставить карту метро Москвы и реализовать выбор линии?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Посмотрите на это
    Ответ написан
    Комментировать
  • С какой книги начать изучение javascript?

    Секреты JavaScript ниндзя - Джон Резиг, Беэр Бибо, Иосип Марас
    Ответ написан
    Комментировать
  • Какие есть программы для снятия скриншотов\видео для linux?

    dunmaksim
    @dunmaksim
    Технический писатель
    Скриншоты - shutter
    Видео пытался снимать vokoscreen, но там какой-то рандом - часто зависает, иногда звук портится
    Ответ написан
    1 комментарий
  • [Wordpress] Как изменить wp-admin на другой адрес с nginx?

    Вообще если честно, то блокировка админки WordPress базовой аутентификацией или смена её местоположения - это глупость.
    Куда надежнее использовать двух факторную аутентификацию, fail2ban для блокировки попыток доступа к админке с ошибочными паролями, обязательно HTTPS и конечно же самое главное - надежные пароли.
    Ответ написан
    1 комментарий
  • Оптимальные конфиги для связки: DigitalOcean(5$) + VestaCP + Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Веста хоть и самая легкая из CP, но все же жрет ресурсы, а на дроплете за $5 их и так очень мало. Ну а для одного сайта зачем вообще контрольная панель?! Удалите к чертям. Ну или попробуйте объяснить, зачем вам эта панель вообще нужна. Уверен, смысла в ней нет.

    2. На минимальном дроплете надо все делать максимально продуманным и эффективным. Обязательно нужен swap 512Мб или даже 1Гб. Nginx, желательно последний mainline. PHP5-FPM с Opcache, для Opcache необходимо выделить 32Мб. Если сайтов больше чем 1 - возможно придется увеличить до 64Мб. Вместо MySQL ставим MariaDB. Обязательно ставим Memcached, php5-memcached (c буквой "d" в конце), ему даем 64-128Мб памяти. В WordPress устанавливаем плагин Memcached Redux (только внимательно читаем как его устанавливать - вместо активации плагина надо скопировать файл в wp-content). Это включит persistent object cache на уровне WordPress, большинство запросов вообще перестанет доходить до БД, а это самое узкое место на минимальном дроплете. Кроме того, если уж делать все серьезно, ставим плагин FFPC (Fast Full Page Cache), он позволит кешировать страницы целиком, а чуть поковырявшись с конфигами, можно кешировать страницы в Memcached (то есть в память), и отдавать их оттуда непосредственно Nginx'ом, даже не поднимая PHP-процесс, и уж тем более не касаясь базы данных. Объем памяти для Memcached, возможно, придется увеличивать - все зависит от объема сайта. Но при таком подходе вы получите очень высокую скорость отклика от своего маленького сервера, и он сможет выдерживать очень большие нагрузки. С полностью кешированным в память сайтом и отдачей Nginx'ом непосредственно из Memcached, а также с оптимизированным кодом и файлами (минификация и конкатенация скриптов и стилей, gzip, оптимизированные картинки и т.д., минимизация количества запросов и т.п.) данный дроплет за $5 сможет обслуживать и 50 000 просмотров в сутки. А это уже 1 500 000 в месяц. Даже пиковые 1-2-3 тысячи запросов (что будет крайне редко, если будет вообще) за короткий промежуток времени ("хабраэффект") пройдут еле-еле заметно - даже если начнет использоваться swap, на SSD-дисках он быстр. В итоге часть клиентов будут испытывать небольшие задержки, не более. Но это речь об одновременной тысяче посетителей на сайте, не меньше. К тому времени, как аудитория сайта дорастет до этого уровня, уверен вы уже перейдете хотя бы на дроплет за $10. А там ресурсов больше, при аналогичном подходе этот дроплет выдержит намного больше.
    Ответ написан
    5 комментариев
  • Как правильно организовать структуру SPA + Backend?

    @nemoisfree
    Просто в вебпак конфиге можете настроить редирект, если на дев сервер запрос будет в /api/, то тогда стучаться на порт 3000.
    config.devServer = {
            proxy: [{
                path: '/api/',
                target: 'http://localhost:3000'
            }],
                contentBase: './public',
                hot: true,
                inline: true,
                historyApiFallback: {
                index: 'index.html'
            }
        };


    Более популярен react.js stateofjs.com/2016/frontend
    во vue.js захотите найти готовый модуль, могут возникнуть проблемы.
    Ответ написан
    2 комментария
  • Как правильно организовать структуру SPA + Backend?

    @wearemieta
    BEWARE HIPSTERS
    Но бесит, что там нет единого собранного файла bundle.js

    В шаблоне webpack-simple все скрипты собираются как раз в один файл build.js. Обратите внимание, он подключается в сгенерированный index.html. vuejs-templates/webpack-simple.

    Этот файл недоступен в файловой системе при запуске dev сервера, потому что в режиме разработки он находится исключительно в памяти.

    так он еще создает кучи других непонятных файлов и при режиме разработки запускает ненужный 'hot-load'.


    Давайте разберемся, для чего нужен сервер в режиме разработки для Vue. При написания SPA приложения вы используете кучу библиотек, файлов в разных форматах и возможно еще обращаетесь к стороннему API(например twitter). Плюсом, вам хотелось бы использовать транспайлер, чтобы в js можно было красиво писать стрелочные функции и использовать другие вкусняшки ES2015. А еще это здорово было бы склеивать файлы одного формата в один большой для разных оптимизаций. Плюс, после того как вы измените что-то в одном файле, не пришлось бы тыкать каждый раз на перезагрузку страницы. Примерно эти вещи делает за вас dev сервер с webpack в режиме разработки.

    — с помощью webpack вы можете собирать ваши файлы каким угодно образом и складывать их в любое удобное место в фс.
    — вы можете их склеивать, минифицировать и использовать транспайлеры, препроцессоры, постпроцессоры и прочее.
    — вы можете обращаться к стороннему API с локалхоста.
    — если вам не нужен hot-load — отключите его в конфиге.

    Оставить в покое django под портом :8000, а VueJS под :8080. И в nginx как-то слушать их обоих, раздельно, таким образом четко разделить фронт от бэка. Не будет ли проблем?


    Проблем с проксированием nginx'ом? Не очень понятно что вы имеете в виду.

    Если вам нужен кастомный шаблон vue-cli то вы можете легко его разработать один раз и в дальнейшем использовать: Vue-cli custom templates

    Как правильно организовать структуру SPA + Backend

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

    Дело в том, что возникновение таких вещей типа SPA напрямую связано с разными парадигмами разработки. Django как фреймворк позволяет вам писать монолитные приложения. Вы пишете одно большое приложение где храните бизнес-логику, фронтенд, функции-хелперы вроде уменьшения размера загруженных картинок, etc. Деплоите монолитное приложение на одном сервере, возможно на отдельный сервер выносите базу данных.

    Эта парадигма оправдана в определенных случаях, как и другие парадигмы.

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

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

    Ваше приложение схематически выглядит так:

    Клиент: хочу авторизоваться => Сервер приложения: отправлю бизнес-логике => Бизнес-логика: спросим базу (данные для авторизации) => База данных: можно => Клиент: я авторизован

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

    Теперь, в вашем фронтенде на Vue, например, вы можете отображать нужные вам данные (а соотв. делать запросы в основную базу), только если пользователь авторизован.

    Теперь ваше приложение выглядит так:

    Клиент: хочу авторизоваться => Фронтенд-микросервис: отправляю микросервису авторизации => Микросервис авторизации: можно => Фронтенд-микросервис: я авторизован, хочу данные => Сервер приложения: отправлю бизнес-логике => Бизнес-логика: спросим базу (данные отображения авторизованному клиенту) => База данных: данные => Клиент: я получил данные

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

    Авторизация? — микросервис — auth0.com
    SQL База данных? — микросервис — Google CLOUD SQL
    Уменьшаем размер картинок? — микросервис — AWS Lambda

    Что получается в сухом остатке? Вам требуется лишь написать SPA из которого вы будете обращаться к вашим микросервисам. То есть, вы получаете приложение, которое можно хостить как статический сайт, переложив на микросервисы большинство задач, которые вам требуются в вашем приложении.

    Конечно, это решает определенные проблемы, но и создает новые, поэтому, повторюсь, все зависит от ваших задач.

    Давайте посмотрим на ваш пример с Django. Если я все правильно понимаю, то вы хотите использовать все плюсы Django, типа ORM, API доступа к БД, etc, заменив лишь систему шаблонов на Vue?

    В таком случае, на мой взгляд, вам нужно реализовать на Django классический REST API и из SPA на Vue обращаться к endpoint'ам вашего API.

    Ссылки по теме:
    Архитектура микросервисов
    SPA-архитектура для CRM-систем: часть 1
    SPA-архитектура для CRM-систем: часть 2
    AWS Lambda и никаких серверов
    Ответ написан
    Комментировать
  • Какую структуру WEB API вы используете в своих проектах: api.site.ru или site.ru/api/?

    copist
    @copist
    Empower people to give
    Выбор делается исходя не из красивости звучания, а по тому, являются ли api.site.ru и site.ru физически одной инсталяцией приложения или двумя.
    Если у двух доменов одна общая кодовая база, а отличается только логика на уровне роутинга запросов, то нет смысла заморачиваться с поддоменами.

    Минусы поддоменов:
    Отдельные поддомены - это отдельный запрос браузера к DNS. Это время.
    Если всё ваше приложение работает на SSL (а вам придётся перейти на него, когда захотите в статистике Google Analytics видеть рефереров) - на поддомены вам надо будет отдельные сертификаты, или wildcard сертификат.
    И если поддомены работают на SSL, то браузер сделает дополнительный хэндшейк для обмена ключами с каждым поддоменом.
    Если управление поддоменами ручное и вам придётся хостинг поменять, то руками двигать устанете.

    Почему к какого-нибудь сайта поддмены третьго-четвёртого уровня?
    Потому что, может быть, у них сервера API дублируются географически для распределения нагрузки.
    Можно сделать ping на каждый поддомен и убедиться - у них, скорее всего, будут разные IP.
    Выбираются автоматически или иным способом исходя из местонахождения пользователя.

    Адрес домена API на SEO почти не влияет. Почти - это потому что гуглобот считает время от обращение к серверу до момента отрисовки страницы целиком, включая загрузку стилей, шрифтов, скриптов JS, загрузку данных и рендеринг страницы в своём виртуальном браузере. Если учесть пункты выше, то на установку соединения и хэндшейки придётся потратить время. По косвенным признакам медленные сайты имеют больше позицию в поисковой выдаче, то есть дальше от первого места. А вот откуда данные на странице появились, гуглоботу начхать.

    Но иногда приходится жертвовать скоростью на DNS resolve и SSL handshake, и делать поддомены, если требуется выдавать много данных за раз. Например, если на странице очень много картинок, то браузер будет пытаться загружать их одновременно. В браузере есть ограничение на количество конкурентных запросов на один домен, кажется = 6. То есть пока не загрузятся 6 картинок (site.ru/img/1.jpg, ...), javascript не сможет обратиться к к данным на том же домене site.ru/api.
    Варианты:
    1. вынести всю статику (стили, картинки, скрипты) на поддомен static.site.ru - пусть статика тупит в отдельных запросах; причём javascript и css должны загрузиться первыми
    2. выделить для api поддомен api.site.ru

    Я обычно делаю первый вариант, но всё зависит от нагрузки.

    Пример: сайт icons8.com, API работает на домене api.icons8.com и является независимым приложением, статика отдаётся через maxcdn.icons8.com
    В данном случае я ожидаю рост нагрузки и при необходимости количество серверов будет увеличено, нагрузку распределю путём балансировки в nginx, а имя у них останется одно api.icons8.com
    Чтобы время на DNS resolve уменьшить, используем DNS Amazon - он вроде самый быстрый. Ну и MaxCDN тоже использует Amazon и в общем потеря почти не ощущается.

    Замеры времени делали через утилиту www.webpagetest.org - классный сервис, просто золото.
    Ответ написан
    Комментировать
  • Сайт типа work.ua на free CMS?

    Sanes
    @Sanes
    Ответ написан
    Комментировать
  • Каким образом лучше делать бэкап системы Windows?

    SergeySL
    @SergeySL
    Системный администратор
    Acronis TrueImage
    Ответ написан
    Комментировать
  • Почему в Opera под Linux криво выглядят шрифты с кириллицей?

    GavriKos
    @GavriKos
    Как можно попробовать решить эту проблему:
    1) Установить пак шрифтов от винды
    2) Поиграться с хиттингом (в первую очередь с ним)
    3) Поиграться со сглаживанием

    Обычно после всего этого можно добиться непрыгающих шрифтов. Но они все равно будут непохожи на виндовые.
    Если так нравится опера - то попробуйте Vivaldi - в нем шрифты нормальные.
    Ответ написан
    3 комментария
  • Почему Macbook Pro быстро разряжается в ждущем режиме?

    @bwrk
    Напротив, это хорошо действует на батарею.
    Её вообще-то нужно регулярно разряжать для профилактики.
    Вы это делаете и так.


    Это актуально только для батарей типа никель гидридные (NiMh) и никель каддиевые (NiCd). В батареях ноутбуков используются литий ионные элементы. Для литий ионных (Li-ion), литий полимерных (LiPo) и литий фосфатных (LiFePo) это не актуально. У них нет эфекта памяти. Даже наоборот, сильный разряд может убить батарею (но до глубокого разряда еще нужно умудрится батарею довести, ниже 2.5 вольта на банку и она начнет умирать).
    Ответ написан
    Комментировать
  • Каким вы видите будущее Ruby?

    Fahrenhe17
    @Fahrenhe17
    Ruby on Rails developer
    В свое время похожее меня терзало, но остался с руби и доволен как слон. Несколько помог вот этот доклад, который увидел как-то тут же, на тостере.
    https://youtu.be/xPFRUM_oDKA

    А если от себя - руби, а в частности рельсы не умрут. Особенно с теми обновлениями, что есть в 5 версии.
    Ответ написан
    3 комментария
  • Как новичку влиться в мир современного фронт-енда?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    с мнениями, что знания ангуляр1 "вредны".


    тут проблема в том, что если мы берем среднестатистического ангулярщика, он пишет в стиле angular1.0, во всю использует скоупы в контроллере и т.д. Причина этому - отсутствие обновления документации к ангуляру. Ну то есть в пул реквестах на гитхабе валяются исправленные доки но они почему-то до сих пор там висят не принятыми по каким-то странным причинам.

    Например вот то как я готовлю ангуляр, а вот как другие. Последнее считается вредным. Скажем если вы используете $scope в ангуляр приложении версии 1.5+ то вы уже готовите ангуляр не правильно. Если у вас бизнес логика вытекает в компоненты - тоже что-то странное и тд. Но последнее уже никак к ангуляру не привязано.

    Стоит ли тратить время дальше на jQuery?

    Учите javascript. и так и так понадобится. Причем серьезно учите. И не только основы, надо еще общие вещи, не привязанные к js знать. Типа ооп, функциональное программирование, принципы solid, grasp, dry и другие аббривиатуры. Короче именно серьезно так подойти к этим вопросам. Паралельно разобраться с HTTP, уметь не только пользоваться API но и проектировать их и т.д. Короче это огромный пласт знаний который формируется не один год.

    Стоит ли тратить время сейчас на Backbone?

    Нет, не стоит. Backbone это низкоуровневая библиотека для тех кто знает как все делать. Человеку который не отличает MVC от MVVM оно только навредит (у меня есть парочка проектов доставшихся от других разработчиков которые демонстрируют проблему).

    На сколько экосистема ReactJS стремительно изменяющаяся по сравнению с angular1-> angular2 ?


    С учетом того что с моммента выхода angular 1.x до момента выхода angular2 (а он еще в бэте) прошло 4 года... мегабыстро.

    Всё упирается в то, что времени/сил после работы на учебу не много остается и не хочется тратить их на то, что в последствии окажется "вредным".


    Просто учить нужно не фреймворк, а принципы на которых все это основано. Понимать идею. И тогда ничего не будет вредно. Большинство же разработчиков втупую копипастит код и радуется этому.
    Ответ написан
    1 комментарий
  • Почему Excel тормозит при копировании этой единственной ячейки?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Может быть это связано с тем, что там вставлен невидимый графический объект в виде xml, который тянет ок 30 Мб?
    drawing1.xml в контейнере xlsx
    Ответ написан
    4 комментария
  • Маководы, дайте совет при выборе?

    swanrnd
    @swanrnd
    Издатель HTML5 игр
    Покупаем Mac mini 2012 года. С i7. Средняя или максимальная конфигурация. Найти реально.
    Потом апгрейдим на 16ГБ. = 8000р
    Потом апгрейдим жесткий диск на SSD =10 000р.

    Mac mini 2014 хуже.
    Ответ написан
    1 комментарий