Этот RFC писался в эпоху, когда интернет был наполнен реально "документами", и учёные редактировали только "документы". Сейчас интернет стал сложнее, неявно редактируются коллекции записей в базах, а не документы.
Очень давно, задолго до стандартизации HTTP/1.1) адреса действительно определялись как идентификаторы документов в сети, а сам драфт назывался UDI (Universal Document Identifier), но это определение 30 лет как отброшено. Есть просто ресурсы, природа коих не ограничивается.
И вот ещё пример отклонения от стандартов при проектировании api прямо с моей работы: нужно получить расширенную информацию для пачки объектов, имея на руках только их айдишники. Айдишников от 1 до 10 000 в запросе.
Вполне обоснованно и легально с точки зроения HTTP делать POST /search. Elasticsearch позволяет искать методом POST с запросом в теле по той же причине.
То есть нужно очень быстро сделать много запросов, чтобы проверка на лимит запросов произошла до их завершения.
Не просто делать много запросов, а соединить много запросов в один пакет и послать его напрямую через socket.send. Я так в прошлом развлекался с флудом одного сервера, ручная пересылка чанков через сокет многократно поднимала скорость накрутки. Но для нормально написанных бекендов это не сработает.
Я тоже замечаю, что количество полосок с качеством интернет-соединения слабо соотносится. У меня одна полоска LTE (и то пропадающая, благо телефон был залочен на LTE) работала лучше, чем 5 полосок 3G. Я больше ориентируюсь на значение RSRP, и для меня загадка как -110 dBm могут давать 40 мбит довнлоада.
Время всё расставило таким образом, что термин REST стал самым заезженным и бесмысленным баззвордом в бекенд-разработке. Модную приставку RESTful к API припысывает даже последняя собака не зависимо от того каким принципам этот API следует или не слеует.
Выше человек все правильно написал, что исходно REST является архитектурным стилем гипертекстового веба от одного из главных авторов HTTP 1.1, который тот сформулировал в процессе стандартизации протокола. За 20 лет не изменилось ничего - в ядре современного веба работают 6 из 6 огранчений REST. Я не знаю, как так вышло, но с какого-то момента этот термин стали противопоставлять SOAP и затем исказили до CRUD over HTTP, хотя методы HTTP напрямую с CRUD даже не сопоставляются.
Раздутый карго-культ о котором вы писали является порождением этого самого "коллективного разума", который работает как сломанный телефон. Никто не занимает факт-чекингом, ни на что не ссылается, никто не заглядывает в первоисточнки. Зачем, если достаточно прочитать первую нагугленную статью от Krishna Srinivasan?
Из азарта повторил замеры с той же симкой на телефоне LG с нормальным инженерным меню. Я это к чему - за городом можно запросто попасть в условия с очень уверенным приемом, но с крайне плохой передачей. В этих условиях можно смотреть 4К видосы на ютубе, но любая нагрузка на output сразу "окирпичивает" интернет.
Не знаю как на счет мощности, но если худо-бедно сделать передачу направленной - например, покрутить телефон над плоской металлической поверхностью - аплоад растёт в пару раз. Пару лет назад, когда на моей местности едва ловил 2G с космической скоростью 16 кбит/c, я так выкручивался.
Аплоад вырос в 8 раз, а довнлоад в 1.5 раза. Судя по Cell ID вышка не переключалась. Буду рад, если подскажете нормальный софт чтобы снять все показатели сети на андроиде.
А кто имеет? Если снять мой телефон с чердака и выйти 20 метров в чистое поле - там, где нет затенения ветками - аплоад вырастает в несколько раз, точных цифр не назову. При этом довнлоад увеличивается незначительно.
Если же подняться из речной долины вверх, получаем следующую картину:
Вероятно, передатчик телефона захлебывается. У меня в глуши 4G с одной полоской работает лучше чем 3G с четырьмя и дает 7 мбит довнлоада. Но аплоад не выдерживает совсем, топчется в районе 1 мбита.
Лень — мать всех пороков и сестра всех достоинств. Ленивый, но скилованный человек не будет тратить энергию на всё подряд и меньше подвержен скоротечному хайпу, потому что она работает как тормоз желаний. Лень может быть полезной только в сочетании с остальными скилами, а обычные лентяи никому не нужны :)
У меня бекенд одного проекта написан на FastAPI и SQLAlchemy Core, а Django используется только в качестве админки для менеджеров и как инструмент миграций. Если закрыть глаза на дублирование моделей dj -> sqla (сам себя за это пинаю, но изменения происходят нечасто), получается практичный франкенштейн - админка быстро конфигурируется и её легко менять. Натыкался на такие моменты:
1. ORM не поддерживает server default 2. Админка не уважает локальную таймзону клиента при отображении дат, пришлось перегружать base_site.html чтобы сохранять таймзону в cookies, а уже оттуда доставать её мидлварью 3. Виджет для даты неоправданно занимает очень много места. Смотреть я на это не мог, и пришлось перегружать split_datetime.html где <br> заменил на
4. Плагины конфликтуют. Так, django-import-export необъяснимо ломает django-admin-sortable2. К тому же он не работает с django-parler, так что этот import-export пришлось выбросить.
Как это всё уместить в одну строчку, было не очень понятно. Например даже результат вызова input() нельзя никак занести в обычную в переменную и потом работать с ним дальше одной строкой.
Если POST /save-feedback воспринимается проще, почему бы и нет? При POST /feedback на первый взгляд может показаться, что каждый раз создаём новый фидбек, хотя на деле фидбек у заказа может быть только один, и по существу это идемпотентный вызов.
HTTP-пуристы могли бы предложить что-то вроде PUT /feedback/<order_id> (при этом имеем ввиду, что нейминг с REST никак не связан).
Это был головач гиганский, редкий гриб. Подобно дождевикам, съедобен пока мякоть белая. Осенью прошлого года насобирал их четыре штуки, один из экземпляров бал размером с баскетбольный мяч. Впечатляющий гриб.
У меня аккумуляторы от Nokia E51 и Redmi Note 3 вздувались спустя несколько месяцев при 100% на зарядке. Чтобы этого не было, надо ограничивать зарядку в пределах 55 - 60%. Сейчас на Redmi работает Battery Charge Limit и спустя 7 месяцев висения на проводе аккумулятор не вздулся и вполне живой.
Очень давно, задолго до стандартизации HTTP/1.1) адреса действительно определялись как идентификаторы документов в сети, а сам драфт назывался UDI (Universal Document Identifier), но это определение 30 лет как отброшено. Есть просто ресурсы, природа коих не ограничивается.
Вполне обоснованно и легально с точки зроения HTTP делать POST /search. Elasticsearch позволяет искать методом POST с запросом в теле по той же причине.
Национал-социализм по определению подразумевает расизм, антисемитизм и еще несколько -измов.
Не просто делать много запросов, а соединить много запросов в один пакет и послать его напрямую через socket.send. Я так в прошлом развлекался с флудом одного сервера, ручная пересылка чанков через сокет многократно поднимала скорость накрутки. Но для нормально написанных бекендов это не сработает.
Я тоже замечаю, что количество полосок с качеством интернет-соединения слабо соотносится. У меня одна полоска LTE (и то пропадающая, благо телефон был залочен на LTE) работала лучше, чем 5 полосок 3G. Я больше ориентируюсь на значение RSRP, и для меня загадка как -110 dBm могут давать 40 мбит довнлоада.
Время всё расставило таким образом, что термин REST стал самым заезженным и бесмысленным баззвордом в бекенд-разработке. Модную приставку RESTful к API припысывает даже последняя собака не зависимо от того каким принципам этот API следует или не слеует.
Выше человек все правильно написал, что исходно REST является архитектурным стилем гипертекстового веба от одного из главных авторов HTTP 1.1, который тот сформулировал в процессе стандартизации протокола. За 20 лет не изменилось ничего - в ядре современного веба работают 6 из 6 огранчений REST. Я не знаю, как так вышло, но с какого-то момента этот термин стали противопоставлять SOAP и затем исказили до CRUD over HTTP, хотя методы HTTP напрямую с CRUD даже не сопоставляются.
Раздутый карго-культ о котором вы писали является порождением этого самого "коллективного разума", который работает как сломанный телефон. Никто не занимает факт-чекингом, ни на что не ссылается, никто не заглядывает в первоисточнки. Зачем, если достаточно прочитать первую нагугленную статью от Krishna Srinivasan?
Вы что-то путаете, uWSGI работает в prefork режиме, его воркеры стартуют при запуске сервера однажды и затем параллельно обрабатывают запросы.
Это интегрированный софт в LG V50. Вызывается по 5457#*500#
Дом
Двор
Из азарта повторил замеры с той же симкой на телефоне LG с нормальным инженерным меню. Я это к чему - за городом можно запросто попасть в условия с очень уверенным приемом, но с крайне плохой передачей. В этих условиях можно смотреть 4К видосы на ютубе, но любая нагрузка на output сразу "окирпичивает" интернет.
Не знаю как на счет мощности, но если худо-бедно сделать передачу направленной - например, покрутить телефон над плоской металлической поверхностью - аплоад растёт в пару раз. Пару лет назад, когда на моей местности едва ловил 2G с космической скоростью 16 кбит/c, я так выкручивался.
Хорошо, я прямо сейчас экспериментировал.
Замеры в доме
Замеры во дворе в пятне уверенного обслуживания
Аплоад вырос в 8 раз, а довнлоад в 1.5 раза. Судя по Cell ID вышка не переключалась. Буду рад, если подскажете нормальный софт чтобы снять все показатели сети на андроиде.
А кто имеет? Если снять мой телефон с чердака и выйти 20 метров в чистое поле - там, где нет затенения ветками - аплоад вырастает в несколько раз, точных цифр не назову. При этом довнлоад увеличивается незначительно.
Если же подняться из речной долины вверх, получаем следующую картину:
Вероятно, передатчик телефона захлебывается. У меня в глуши 4G с одной полоской работает лучше чем 3G с четырьмя и дает 7 мбит довнлоада. Но аплоад не выдерживает совсем, топчется в районе 1 мбита.
Как-то неправильно этот ваш "коллективный разум" отработал :)
Лень — мать всех пороков и сестра всех достоинств. Ленивый, но скилованный человек не будет тратить энергию на всё подряд и меньше подвержен скоротечному хайпу, потому что она работает как тормоз желаний. Лень может быть полезной только в сочетании с остальными скилами, а обычные лентяи никому не нужны :)
У меня бекенд одного проекта написан на FastAPI и SQLAlchemy Core, а Django используется только в качестве админки для менеджеров и как инструмент миграций. Если закрыть глаза на дублирование моделей dj -> sqla (сам себя за это пинаю, но изменения происходят нечасто), получается практичный франкенштейн - админка быстро конфигурируется и её легко менять. Натыкался на такие моменты:
1. ORM не поддерживает server default
2. Админка не уважает локальную таймзону клиента при отображении дат, пришлось перегружать base_site.html чтобы сохранять таймзону в cookies, а уже оттуда доставать её мидлварью
3. Виджет для даты неоправданно занимает очень много места. Смотреть я на это не мог, и пришлось перегружать split_datetime.html где <br> заменил на
4. Плагины конфликтуют. Так, django-import-export необъяснимо ломает django-admin-sortable2. К тому же он не работает с django-parler, так что этот import-export пришлось выбросить.
C моржовым оператором вполне возможно на 3.8+
Если POST /save-feedback воспринимается проще, почему бы и нет? При POST /feedback на первый взгляд может показаться, что каждый раз создаём новый фидбек, хотя на деле фидбек у заказа может быть только один, и по существу это идемпотентный вызов.
HTTP-пуристы могли бы предложить что-то вроде PUT /feedback/<order_id> (при этом имеем ввиду, что нейминг с REST никак не связан).
Прошлой осенью собирал шампиньоны такого размера тоже
Это был головач гиганский, редкий гриб. Подобно дождевикам, съедобен пока мякоть белая. Осенью прошлого года насобирал их четыре штуки, один из экземпляров бал размером с баскетбольный мяч. Впечатляющий гриб.
Фото
У меня аккумуляторы от Nokia E51 и Redmi Note 3 вздувались спустя несколько месяцев при 100% на зарядке. Чтобы этого не было, надо ограничивать зарядку в пределах 55 - 60%. Сейчас на Redmi работает Battery Charge Limit и спустя 7 месяцев висения на проводе аккумулятор не вздулся и вполне живой.
Без HATEOAS REST работает как RPC и концептуально от него мало чем отличается.