• Стоит ли использовать Preact вместо React? И есть ли критические отличия?

    RomReed
    @RomReed
    JavaScript, Flutter, ReactNative, Redux, Firebase
    https://medium.com/@rajaraodv/using-preact-instead...
    ответы на многие вопросы
    Ответ написан
    Комментировать
  • Объясните простыми словами как работает Redux?

    @mistbow
    Мне вот это очень помогло, особенно картинки внизу...
    https://medium.com/russian/a-cartoon-intro-to-redu...
    Ответ написан
    Комментировать
  • Объясните простыми словами как работает Redux?

    Laiff
    @Laiff
    Front-end developer
    Отличный мануал от самого Дани https://egghead.io/series/getting-started-with-redux
    Документация переведенная на русский https://github.com/rajdee/redux-in-russian там почти все есть.
    Есть еще приятная статья на хабре чисто по базовым принципам, но в некоторых местах не полная habrahabr.ru/post/269831
    Ответ написан
    3 комментария
  • Что такое Redux простыми словами?

    jQuery "видит" весь DOM целиком. И манипулирует DOM-ом, доступ к которому предоставляет браузер. Но можно и по-другому.

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

    Затем отделим состояние от поведения и представления. Состояние можно описать статической структурой данных, JSON-ом, например. А поведение - это чистая функция, из предыдущего состояния и некоего события (действия) делающая следующее состояние. Представление же "знает", как визуализировать состояние. Можно этот принцип воспроизвести от самых мелких компонент (не имеющих потомков) в нашем дереве и до корня. Тогда весь жизненный цикл приложения можно изобразить как цепочку состояний от некоего начального и до текущего, ведомую событиями (действиями).

    Для того, чтобы это всё отобразить, не обязательно в ходе вычисления следующего состояния (или представления) сразу манипулировать DOM-ом. Можно построить из состояния и его представления фрагмент DOM-а, каким он должен получиться. А потом вычислить diff между этим построенным фрагментом (виртуальным DOM-ом) и реальным браузерным. И этот diff применить к реальному DOMу. Один раз. Получится быстро.

    Насколько мне известно (поправьте, если это не так), Redux заимствован из Elm-а. Elm - это экосистема и функциональный язык, компилируемый в JS, сделанный для того, чтобы фронтэнд можно было разрабатывать удобно, быстро и без runtime-ошибок. По синтаксису - это адаптация Haskell-a. Ключевым элементом Elm-а является как раз вот эта самая архитектура. Советую подробнее почитать в первоисточнике. https://guide.elm-lang.org/architecture/

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

    С точки зрения функционального программирования, при таком подходе текущее состояние является результатом функции leftFold, применённой к исходному состоянию, последовательности событий (действий), приводящих к текущему и функции, умеющей вычислять следующее состояние.
    Ответ написан
    Комментировать
  • Что такое Redux простыми словами?

    @KnightForce
    Чтобы понять как работает Redux тебе нужно норм вкуривать React.
    Хотя бы для того, чтобы не пугаться props.

    Есть у тебя React. Это все просто JS объекты.
    <Component /> - так позволяет писать движок jsx, который и React его использует.
    Так как структура компонентная, ты должен думать как обновить компоненты в в другой части страницы.

    Принцип такой: компонент обычно обновляется при получении новых свойств - props или когда меняется его объект состояния - state.

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

    Что делает Redux:
    Он не призывает отказываться от state.

    Но есть общий контейнер данных. И когда данные меняются - меняются и компоненты, которые отображают именно эти данные.

    Когда нужно что-то поменять - вызываешь dispatch - специальная функция reducer реагирует на это - и меняет данные как тебе нужно. Когда данные заменятся - компонент Propvider - вызывает рендер у своего дочернего компонента (тот что оборачивает Provider).
    Например:
    <Provider>
       <MyComponent />//Вот сюда Provider пробросит (запишет) новые props.
    </Provider>


    Записывает он это самое глобальное хранилище и все компоненты, для которых поменялись данные - перерисуются.

    mapStateToProps - указывает какую часть этого глобального хранилища будет предоставлять provider.
    Если у тебя оно такое:
    {
       chunkStore: {},
       some: {}
    }

    То если mapStateToProps вернет{store: store.chunkStore}то Provider в props своего потомка пробросит такое: store: store.chunkStore. И ты будешь обращаться внутри к store, но там будет только часть chunkStore (не весь объект, а его поле).

    mapDispatchToProps - т.к. subscribe нет, то это возвращает функции, которые могут внутри себя вызывать dispatch().

    action - описывает то что и на что ты хочешь поменять. Какое поле и какие данные туда поместить.
    Ответ написан
    Комментировать
  • Подтянуть изменения из ветки - как пройти уровень за 4 команды?

    youngmysteriouslight
    @youngmysteriouslight
    ТК, ТТ, JS, FP, WM
    Четвёртое действие (перемещение master на C3'', когда HEAD->caption)
    git branch -f master HEAD
    Я бы и не знал, если бы не одно из заданий, и использовал связку git checkout master && git reset --hard caption.

    По поводу git rebase caption (когда находимся в master). Там срабатывает fast-forward, поэтому ветка автоматически продвигается вперёд. Чтобы удать этот эффект, пишем git rebaes --no-ff. Интерактивный режим по умолчанию отключает ff.
    Ответ написан
    5 комментариев
  • Golang подходит ли для создания сайтов?

    @dinegnet
    Golang используют для создания сайтов да. Только дорогих сайтов. Скажем есть у меня проектик - хозяин ввалил в него уже стоимость Ленд Круизера свежего и все продолжает платить и платить.
    Вы - не тот человек, которого будут для этого нанимать.
    А в дешевой нише вы не сможете конкурировать по цене с ПХПистами.

    1. Как обстоят дела с производительностью в сравнении с php смотрел benchmark go выигрывает у php в 2 раза по скорости
    (возможно мне стоит и дальше сайты создавать на php)


    Одни из самых высоконагруженных сайтов в мире сделаны с PHP - Facebook, примеру.
    Или Vkontakte

    Формально Go быстрее. Если ваш сервер и клиент разделяет только 10 метров.
    Но в мире веба очень большие задержки - это связь между сервером и браузером, там совсем другие расстояния и другой порядок задержек. А это от языка программирования не зависит.

    На их фоне, если вы нормально запрограммировали сайт - не должно тормозить ни на PHP ни на Go.

    2. Влияет ли как-то golang на seo оптимизацию-выдачу
    (если для frontend не админ панели взять angularjs то сайт не будет весь индексироваться)


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

    3. Какую выбрать связку для сервера возможно имеется nginx или apache в поддержке для golang (или у go имеется свой сервер и как он в сравнении с остальными)


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

    4. Поддерживает ли golang mysql и какая скорость


    Да.
    Скорость работы с СУБД ограничена, как правило, самой этой СУБД - это узкое место всегда.
    От языка программирования, использующего ту или иную СУБД - зависит слабо.

    5. Возможно имеются хорошие фреймворки написанные на golang для создания именно сайтов


    Revel, Beego.me, gin и еще десяток.
    Только они не нужны.
    Все что нужно уже входит в стандартную библиотеку Golang.
    Для облегчения работы стоит глянуть на фреймворки - Gorilla, Martini....

    6. Подойдет ли вообще golang для мелких или для крупных сайтов

    Все дело только в том, сможет ли заказчик оплатить.
    На Go выходит дороже делать чем на PHP.
    Поэтому ты просто пролетишь с заказами.
    Дешевых заказов в разы больше.
    Дорогие заказы чтобы взять - это нужно иметь ту еще квалификацию, до которой, судя по формулировкам - тебе еще лет 7 практиковаться в программировании.

    7. Имеются ли подводные камни при разработке

    Для тебя - важно, что мало информации, а особенно мало - на русском.
    Ответ написан
    8 комментариев
  • Для чего нужен Docker?

    @viiy
    Linux сисадмин \ DevOps
    Представьте что нет никакой ложки докера.

    1) Есть одна физическая машина. Вы устанвливаете софт, разные приложухи, базы, web сервера, заходят тестовые юзеры, что-то запускают. Первая проблема - вы не понимаете кому что надо, кто владелец файлов, приложух, зачем висят демоны и кто за это ответственнен. Как выход, вы решаете это разделить на виртуалки.

    2) У вас есть физическая машина + на ней виртуалки. Вы выделяете под каждую задачу свою виртуалку, там сидят отдельные пользователи, вы навели какой то порядок. Появляется задача - пользователи хотят php 6, а его нет, хотят python3, а его нет, хотят Mongo, а она старой версии. Вы обновляете репозитарии, качаете новые пакеты, ставите, часть пользователей довольны, часть нет - им нужна старая версия какая была. Упс!

    3) Одна физическая машина + еще больше виртуальных машин. Вы разделили всех пользователей так, чтобы никто не дрался за версии софта, если нужен php6 - иди на эту машину, нужен php5 - вот на эту. Все счастливы, но появляются разработчики, которые говорят буквально так - "а у меня на рабочей машине все работает, я перенес все как было на виртуалку, а у меня появляется ошибка missing library libXXX.so.X". И вы понимаете что вам остается только создать полную копию машины разработчика, чтобы софт поехал на этой виртуалке без ошибок... И тут появляется Docker! :)

    4) Docker решает именно эту проблему. Вам не нужно заботится о софте который установлен на сервере/виртуалке. Вы просто берете и переносите софт со всеми "кишками" на другой сервер и он просто работает. Работает за счет того, что все "кишки" это слои файловой системы нанизанные как бисер друг на друга. Дополнительно решается проблема свободного места, т.к слои многократно переиспользуются контейнерами, если вам нужен php + одна библиотека, а другому php + другая библиотека, вы используете (грубо говоря) слой php, а для дополнительной библиотеки делаете отдельный слой, одновременно другой человек делает над php другой слой и вы не деретесь между собой и не видите чужих библиотек. Это грубо и скорее всего ради одной библиотеки никто новый слой не делает, делают слой пожирнее.

    Все запущенные процессы Docker помещает в изолированную среду процессов, файловой системы и сетевого стека. Есть много особенностей по работе с Docker, т.к он предполагает, что в одном контейнере вы запускаете один процесс. Если вам нужно запустить целый набор демоном, тут появляются проблемы, нужно писать шелл-скрипт, который все это поднимет в контейнере. Так же есть особенности по сети, файловой системе. Для кого то Docker спасение и решение всех проблем, но я как сисадмин от этого всего не в восторге.
    Ответ написан
    15 комментариев
  • Upwork, ИП и валютный контроль - как правильно оформить документы?

    Вообщем я, к сожалению, не нашел информации на этот вопрос, поэтому опишу здесь, что я делал.
    1. Вывел через Wire Transfer (USD)
    2. Деньги пришли, я на Tinkoff
    3. Путем мучительных попток выяснить, что же и как же заполнять выяснилось:
      1. 1. Указать код валютной операции - 21500 (платеж нерезидента резиденту)
      2. 2. Скачать User Agreement (https://www.upwork.com/legal/), распечатать, подписать последнюю страницу,
        отсканировать приложить к документам.
      3. 3. Предоставить скрин Сertificate of earnings https://www.upwork.com/reports/certificate-of-earn... здесь
        указана дата когда вы присодинились к апворк.
      4. 4. Предоставить pdf-файлы ваших инвойсов, т.е. нужно зайти в отчеты -> история транзакций. Кликнуть на ref-
        ccылку - так попадете на pdf
      5. 5. Предоставить подписанный Сonfirmation of Service. Что нужно сделать для этого:
        1. 1. Скачать: https://content-static.upwork.com/blog/uploads/sit...
        2. 2. Заполнить, распечать, отсканить.
        3. 3. Написать в поддержку - https://support.upwork.com/hc/en-us
        4. 4. Отправить скан, в ответ вы получите, то что получите и прикрепите это к заявке валютного контроля.



    Вот такая краткая инстукция у меня получилась.
    Ответ написан
    1 комментарий
  • Что такое webhook?

    Negezor
    @Negezor
    Senior Shaurma Developer
    Webhook — механизм оповещения системы о событиях.

    Допустим есть определённый сервис который должен оповещать о событиях когда они происходят.
    Как вариант постоянно запрашивать новые данные на сервере, минус будет скорее в скорости получения данных если на сервере например стоит задержка на получения новых оповещений.
    А вот webhook исправляет этот недочёт, когда происходит событие он запрашивает адрес сайта с параметрами, например example.com/webhook/notification и передаёт в теле POST запроса JSON (зачастую) и там будут свежие данные.

    Простой пример можно посмотреть: создание бота для telegram на webhooks.
    Ответ написан
    4 комментария
  • Как залить изображение на сервер VK для дальнейшей публикации на стену?

    Есть программа для выполнения HTTP запросов. Называется Postman. В ней можно наглядно сформировать запрос и сгенерировать код.
    Вот пример curl запроса:
    curl -X POST \
      'https://pu.vk.com/<ссылка загрузки>' \
      -H 'content-type: multipart/form-data;' \
      -F photo=@/private/tmp/f.png

    Или на Python:
    import http.client
    
    conn = http.client.HTTPConnection("pu,vk,com")
    
    payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"photo\"; filename=\"f.png\"\r\nContent-Type: image/png\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
    
    headers = {
        'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
        'Cache-Control': "no-cache",
        'Postman-Token': "78ca70c7-7da5-45c7-8a79-67d79d09761c"
        }
    
    conn.request("POST", "", payload, headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    Ответ написан
    Комментировать
  • Golang подходит ли для создания сайтов?

    @MadridianFox
    Web-программист, многостаночник
    1) Go компилируемый, само собой скорость выше, но если вы на маленьком сайте упираетесь в скорость исполнения кода, то проблема скорее в коде, и выбор более быстрого языка избавит вас только от симптома, но не от болезни
    2) на seo влияет только то ЧТО вы отдаёте пауку. Не важно на каком языке пишется программа, которая отдаёт html
    3) Программа написанная на go сама работает как сервер. Более того, это не какой-то сервер приложений, как например tomcat, нет, вы сами будете писать цикл обработки входящих соединений - т.е. вам необходимо этот самый серер реализовать. В отличие от php+apache, где в качестве сервера выступает apache, который при необходимости вызывает php. Ставить ли apache или nginx перед go сервером вы решаете сами.
    4) Поддерживает. На скорость работы СУБД не влияет то, на каком языке написана программа, которая к ней обращается.
    5) Фреймворков уровня Yii2 или Symfony не наблюдается. Ситуация такая же как и с NodeJS - что-то есть, но комбайнов нет.
    6) Если что-то может слушать соккет - на этом можно написать сайт. Любой. Другое дело, что сайты визитки на Go не пишут (только ради забавы), а крупные сайты вообще имеют сложную архитектуру, такую что язык уже не имеет значения.
    7) Для php разработчика - да. Как минимум вы меняете скриптовый язык на компилируемый. Это значит что любое изменение кода требует компиляции, остановки работающего сервера, загрузки бинарника на его место и запуск. Кроме того вы меняете Stateless модель работы кода на полноценно работающую программу. Если на php у вас скрипт запускался заново при каждом http запросе, то программа на go запускается один раз и после этого принимает множество запросов.
    Ответ написан
    10 комментариев
  • TeamCity падает, что можно сделать?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Тут ставят Youtrack на слабый ВПС
    maxmikheev.ru/blog/2016/05/05/how-to-selfhost-yout...

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

    myjcom
    @myjcom
    Clean Code: A handbook of software craftsmanship / Чистый код: Создание, анализ и рефакторинг
    Год издания: 2013
    Автор: Robert Martin / Роберт Мартин
    ISBN: 978-5-496-00487-9

    The Clean Coder: A Code of Conduct for Professional Programmers / Идеальный программист. Как стать профессионалом разработки ПО
    Год издания: 2012
    Автор: Robert C. Martin / Роберт Мартин
    ISBN: 978-5-459-01044-2

    Алгоритмы. Справочник с примерами на C, C++, Java и Python
    Год издания: 2017
    Автор: Хайнеман Д., Поллис Г., Селков С.
    ISBN: 978-5-9908910-7-4

    Design Patterns. Elements of Reusable Object-Oriented Software/Приемы объектно-ориентированного проектирования. Паттерны проектирования
    Год издания: 2015
    Автор: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides/Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж
    ISBN: 978-5-496-00389-6

    Test-driven development by example / Экстремальное программирование. Разработка через тестирование
    Год издания: 2017
    Автор: Kent Beck / Кент Бек
    ISBN: 978-5-496-02570-6

    Грокаем Алгоритмы. Иллюстрированное пособие для программистов и любопытствущих
    Год издания: 2017
    Автор: Бхаргава А
    ISBN: 978-5-496-02541-6

    Алгоритмы. Теория и практическое применение
    Год издания: 2016
    Автор: Стивенс Род
    ISBN: 978-5-699-81729-0

    прочитать нужно все

    ну и на закуску
    C Unleashed / Искусство программирования на C. Фундаментальные алгоритмы, структуры данных и примеры приложений. Энциклопедия программиста
    Год: 2001
    Автор: Heathfield R., Kirby L. / Хэзфилд Р., Кирби Л.
    ISBN: 0-672-31896-2 / 966-7393-82-8
    Ответ написан
    9 комментариев
  • Выбор средств для разработки высоконагруженного веб приложения?

    viktorvsk
    @viktorvsk
    системы (веб сервис), которая должна выдерживать высокие нагрузки и быть масштабируемой.

    достаточно быстро функционал и следовательно посещаемость (по прогнозам - я за это не отвечаю, предо мной просто ставят такую задачу) буду увеличиваться.

    Насколько такой вариант будет выдерживать высокие нагрузки?

    насколько будет быстро работать, учитывая динамическую типизацию


    Это называется преждевременной оптимизацией

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

    Узнать, что будет производительным, а что нет - нужно с помощью профайлера, в крайнем случае - по бенчмаркам. Но никак не задавая вопросы на форумах - просто никто не имеет физической возможности дать объективный ответ на абстрактный вопрос.

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

    Если у вас есть опыт с джавой в вебе - делайте на джаве.

    Есть опыт с джаваскриптом - делайте на основе веб-сервисов.

    У каждого подхода есть плюсы и минусы и обычно они субъективны.

    Лучше потратить 2 месяца на прототип и потом - месяц на переписывание, чем сначала 3 месяца думать и делать - а потом понять, что нужно было двигаться в другую сторону.

    Описаны ~80% случаев и ваш с вероятностью > 90% попадает именно в эту область.
    Ответ написан
    1 комментарий
  • Выбор средств для разработки высоконагруженного веб приложения?

    Главная фишка высоконагруженных приложений не в выборе технологий, а в архитектуре. Зачастую, узким местом приложения является база данных. Первое, что нужно сделать - это научиться масштабировать данные. Ищем по ключевым словам "шардирование", "репликация".
    После того, как данные масштабируются, можно думать о включении кэширующего слоя. Ищем "memcached", "redis".
    Если начинает не справляться фронтенд (фронтенд бэкэнда), подключаем балансировщик нагрузки. Как на уровне DNS, так и на уровне отдельных инстансов фронтенда.
    Раздаете много статики? CDN вам в помощь.
    Много сложных и ресурсоемких вычислений, результат выполнения которых не требует моментального отображения клиенту? Разворачиваем очереди задач и считаем это в фоне.
    А уж какую технологию выбрать java или php это Вам виднее. То, что лучше знаете и сможете поддерживать.

    Советую почитать ruhighload.com/scale
    Ответ написан
    1 комментарий
  • Как удалить Visual Studio 2015 и всё связанное с ним?

    @interlocked
    .NET developer
    Самый верный способ - с помощью Visual Studio Uninstaller
    Ответ написан
    Комментировать
  • Как готовить себя к олимпиадному программированию?

    Посмотрите данные темы:
    Длинная арифметика
    Динамическое программирование
    Теория графов
    Рекурсия, перебор
    Сортировка и последовательности
    Комбинаторика
    Простая математика
    Геометрия
    Целочисленная арифметика
    Математическое моделирование
    Жадный алгоритм
    Структуры данных
    Двумерные массивы


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

    Архив задач и тренировка здесь:
    acmp.ru
    acm.timus.ru
    Codeforces
    Это очень полезные ресурсы (системы проверки), в которые входят очень интересные и трудные задачи, как раз предназначенные для олимпиадного программирования.
    Ознакомьтесь здесь:
    Олимпиадное программирование для новичков

    Набор языков программирования в каждой системе разный. Вот некоторые из них:
    Набор яп для тимуса
    Для acmp.ru

    Но для начала почитайте и разберите эти ресурсы/книги про алгоритмы:
    algolist.manual.ru
    Кормен Т., Лейзерсон Ч., Ривест Р., Штайн K. - Алг...

    Ну и конечно, подтяните математику. Без математики далеко не уйдете.

    Ответ на Ваш вопрос: для длинной арифметики подошел бы Java.
    Ответ написан
    2 комментария
  • RESTful API и MVC — что это?

    Основной посыл использования RESTful API - применение основной идеи Паутины для взаимодействия автоматических агентов (приложений), а не только людей.
    Основная идея Паутины - построение распределенной информационной системы путем публикации неких абстрактных ресурсов, выдачи им идентификаторов (в сегодняшнем вебе - иерархических), определения ряда простых и широко известных операций над ними, не зависящих от содержимого ресурса (те самые GET, POST, PUT и т.д.), и связывания этих ресурсов ссылками (это называется гипермедиа, и в частности, гипертекст, если речь идет о текстовой информации).
    Как люди с появления Веба публикуют информацию в нем для потребления другими людьми, так и RESTful веб-сервисы публикуют иерархически структурированные ресурсы для потребления клиентами. Разница только в представлении - для людей это plaintext/HTML, для автоматических агентов - это JSON/XML/прочие форматы, которые удобно обрабатывать.
    Таким образом, если вы хотите какую-то информацию опубликовать как RESTful API, вам необходимо представить ее как набор ресурсов, а все операции над этой информацией выразить через набор предопределенных операций. Фишка в том, что во многих задачах этих предпопределенных операций вполне достаточно, главное правильно определить ресурсы.
    Важно понимать, что "ресурс" это обычно некоторая сущность, "существительное". Как правильно заметил Антон Жуков , ресурс /getItems хоть и может существовать в принципе, говорит о неудачно спроектированном API (действие представлено как ресурс).

    Есть и другие подходы к архитектуре распределенных приложений, например архитектуры, основанные на RPC (удаленный вызов процедур). Информация в таких архитектурах также представлена в виде некоторого набора сущностей, однако операции над ними определяются конкретной задачей, и для каждой сущности будет свой набор. Это больше соотвествует классическому ООП-подходу. Таким образом, RESTful следует подходу много сущностей (ресурсов) - мало операций (и эти операции известны заранее), а RPC - немного сущностей, но много операций над ними.

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

    Сама архитектура REST не привязана к конкретным технологиям и протоколам, но в реалиях современного Веб, построение RESTful API почти всегда подразумевает использование HTTP и каких-либо распространенных форматов представления ресурсов, например JSON, или, менее популярного сегодня, XML.

    Смысл использования REST в том, что принципы, хорошо показавшие себя в "человеческом" веб и позволившие построить самую большую распределенную ИС, применяют и для "веба машин".

    Ответ длинноват, но как короче объяснить, чтобы не исказить понимание, не представляю. Если что непонятно - спрашивайте.
    Ответ написан
    7 комментариев