Из лямбда-исчисления (в общих чертах) map / fold:
map(f, ...) — принимает Х списков, возвращает 1 список с примененной функцией f на каждый элемент каждого списка.
fold(f, start, l) — принимает один список, свертывает его по функции f. Так же часто передается стартовое значение.
Только вместо списков в ф-циях может быть много чего.
MapReduce:
Map — принимает всего два элемента — key / value. Возвращает промежуточное значение.
Reduce — принимает key / values. Свертывает все промежуточные значения для ключа key.
Очень занятно, спасибо. Первый русский доклад на эту тему.
Меня только одно интересует: почему парадигма называется MapReduce, если с функциями высшего порядка (map и, соответственно, reduce/fold) она не имеет почти ничего общего?
Видимо, они так поступили потому что pjax уже используется сегодня многими вебсайтами — Facebook, VK etc.
Посещаемых сайтов, которые используют appcache я пока еще не видел.
Очень хорошо, единственный серьезный недостаток наконец-то устранили. Только тормозят они немножко пока что.
Жалко только, так как я питонщик, многие проекты выбирают вместо гитхаба bitbucket — это разделяет opensource общество. Ведь лента новостей, «форки» и прочее на каждом сайте свои.
Замеры я проводил давно, но, насколько я помню, при нагрузочном тестировании все кушало около трехсот-четырехсот мегабайт ОЗУ. На CPU тоже нагрузка была маленькой.
Самое большое, что джанга выдала тогда это 300rps на очень простой странице API (тоже полная динамика).
Вы бы еще с твиттером сравнили, у которого фронтенд на рельсах. У дискасса вообще-то очень хорошая распределенная инфраструктура с сотней машин.
если у вас проект такой что производительность упирается в джангу
Ну как бы джанга намного менее производительна изначально, чем асинхронный вебсервер на Си.
Но я бы на вашем месте задумался о оптимизации проекта
Все дерганья базы отпрофилированы и отполированы до блеска.
например кешировании
А разве какой-то серьезный проект сегодня без него обходится?
25 реквестов в секунду это 2 млн в сутки и 60млн в месяц, соответственно, 50 реквестов — это уже 120млн. Это НЕ мало. StackOverflow и ВСЯ его инфраструктура (46 сайтов) собирают 96млн просмотров в месяц. А мы говорим про одну обычную машину, а не про двадцать-тридцать мощнейших серверов у stackoverflow.
Самая верная мысль на странице.
Приведу банальнейший пример — русский топ твиттера. Там есть люди, которые о себе ничего не скрывают. Номер мобильного у них написан прямо на страничке. И с ними все нормально.
В реальной разработке очень важна читаемость и понимаемость кода. В руби она, по сравнению с питоном, хромает. Ибо rails magic.
Быть может я недостаточно знаком с перечнем сторонних плюшек, которые можно навесить на django, но в базовой комплектации при работе с django кода вышло существенно больше, чем я бы ожидал, разрабатывая то же самое приложение на rails
Это утверждение подкреплено какими-нибудь фактами? В рельсах, например, админку надо писать каждый раз — это уже означает, что кода должно быть больше.
>Ну например, как сделать роут который будет перенаправлять GET запрос на /accounts на один View action а POST на другой?
Естественно, так как джанга не умеет rest, можно так
map(f, ...) — принимает Х списков, возвращает 1 список с примененной функцией f на каждый элемент каждого списка.
fold(f, start, l) — принимает один список, свертывает его по функции f. Так же часто передается стартовое значение.
Только вместо списков в ф-циях может быть много чего.
MapReduce:
Map — принимает всего два элемента — key / value. Возвращает промежуточное значение.
Reduce — принимает key / values. Свертывает все промежуточные значения для ключа key.
Разве не так?
Меня только одно интересует: почему парадигма называется MapReduce, если с функциями высшего порядка (map и, соответственно, reduce/fold) она не имеет почти ничего общего?
*.manifest
на
*.appcache
www.whatwg.org/specs/web-apps/current-work/multipage/offline.html
m.gmail.com/ js вообще не использует.
Посещаемых сайтов, которые используют appcache я пока еще не видел.
Жалко только, так как я питонщик, многие проекты выбирают вместо гитхаба bitbucket — это разделяет opensource общество. Ведь лента новостей, «форки» и прочее на каждом сайте свои.
Самое большое, что джанга выдала тогда это 300rps на очень простой странице API (тоже полная динамика).
Python 2.7 + MySQL + Django + FastCGI + Flup -> nginx.
Ну как бы джанга намного менее производительна изначально, чем асинхронный вебсервер на Си.
Все дерганья базы отпрофилированы и отполированы до блеска.
А разве какой-то серьезный проект сегодня без него обходится?
25 реквестов в секунду это 2 млн в сутки и 60млн в месяц, соответственно, 50 реквестов — это уже 120млн. Это НЕ мало. StackOverflow и ВСЯ его инфраструктура (46 сайтов) собирают 96млн просмотров в месяц. А мы говорим про одну обычную машину, а не про двадцать-тридцать мощнейших серверов у stackoverflow.
Каким образом тут понизится скорость отдачи из-за nginx-а?
— Нативная поддержка xmprpc и jsonrpc.
— Встроенная поддержка редиса
— Незначительно медленнее торнады.
github.com/fiorix/cyclone#readme
Торнада уже давно является стабильным продуктом, который используется в реальных проектах и я не вижу смысла начинать с циклона.
Приведу банальнейший пример — русский топ твиттера. Там есть люди, которые о себе ничего не скрывают. Номер мобильного у них написан прямо на страничке. И с ними все нормально.
Как обстоит у них поддержка монги (mongodb)? В продакшене уже можно использовать?
И да, все еще хотелось бы увидеть примеры похожих проектов на джанге и рельсах, в которых в рельсоверсии выходило бы гораздо меньше кода.
Это утверждение подкреплено какими-нибудь фактами? В рельсах, например, админку надо писать каждый раз — это уже означает, что кода должно быть больше.
Естественно, так как джанга не умеет rest, можно так
South пробовали?
Ну, можно, например, создать папку settings и по файлу настроек на каждый тип.
Как такая вещь в рельсе реализована?