- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
// POST /login
exports.login = function login(req, res) {
var email = req.body.email;
var password = req.body.password;
security.rateLimitRequest( 'reset', req, function( err ) {
if ( err )
return res.status( 400 ).send( err );
db.Account.find({email: email, password: password}, function(err, account) {
if ( err )
return res.status( 400 ).send( err );
account.getAccountStatistics(account, function(err, account) {
if ( err )
return res.status( 400 ).send( err );
account.incrementAccountLoginCount(account, function(err) {
if ( err )
return res.status( 400 ).send( err );
res.send(account);
});
});
});
});
});
LispGovno 23.03.2016 11:26 # −4
3_14dar 24.03.2016 04:40 # −9
LispGovno 24.03.2016 10:53 # −2
3_14dar 24.03.2016 18:29 # −9
LispGovno 30.03.2016 08:53 # −3
1024-- 23.03.2016 17:28 # −1
LispGovno 23.03.2016 17:55 # −3
bormand 24.03.2016 06:59 # −1
LispGovno 24.03.2016 10:49 # −1
guest 25.03.2016 00:03 # −4
Лет через семь-десять, когда все верстуны научаться
inkanus-gray 25.03.2016 00:14 # −3
Vasiliy 24.03.2016 12:17 # −3
1024-- 24.03.2016 18:17 # −1
В ff несколько лет назад были и генераторы, и аргументы по умолчанию, и много прочей питушни.
3_14dar 24.03.2016 18:30 # −1
bormand 24.03.2016 18:31 # −2
Генератор. А работает так же как и асинхронка на генераторах в питоне.
3_14dar 24.03.2016 19:30 # −2
nihau 24.03.2016 19:31 # −4
3_14dar 25.03.2016 00:59 # −4
А в кацапским не учат русскоязычной терминологии? Учить он меня будет, пидарас, блядь.
guest 25.03.2016 09:49 # −6
kegdan 25.03.2016 10:55 # −4
roman-kashitsyn 25.03.2016 11:00 # −2
kegdan 25.03.2016 11:09 # −2
http://img-fotki.yandex.ru/get/4706/38958673.80/0_75256_739be448_L
guest 25.03.2016 16:24 # −3
LispGovno 30.03.2016 08:54 # −4
bormand 24.03.2016 19:38 # −4
3_14dar 25.03.2016 00:59 # −4
Если кто не понял о чем я - в питоне надо было для этого перед функцией указать специальный декоратор.
guest 25.03.2016 01:05 # −7
как сложно наверное с тобой разговаривать, ты же слова не по назначению используешь
что такое " генераторы надо юзать как асинхронный код"?
Как можно вообще конструкцию языка юзать как код?
И декоратор не делает никого асинхронным. Если ты о корутинах, то это понятие конкретной библиотеки
bormand 25.03.2016 06:29 # −5
3_14dar 25.03.2016 18:54 # −4
guest 25.03.2016 19:02 # −4
bormand 25.03.2016 19:08 # −1
Захотел сделать из него асинхронные корутины - сделал (см. код ниже). Захотел просто поюзать в фориче - поюзал. Но я, видимо, дурак, сишкоблядь, и не понимаю ДАО питона...
3_14dar 25.03.2016 19:10 # −4
Ты наверно не понимаешь как в питоне работают декораторы.
bormand 25.03.2016 19:12 # −5
> Ты наверно не понимаешь как в питоне работают декораторы.
Я прекрасно понимаю, как они работают.
3_14dar 25.03.2016 20:59 # −5
Т.е. это должна делать вызывающая сторона. Да, контеткстом использования. Где здесь этот контекст?
3_14dar 25.03.2016 22:33 # −2
bormand 25.03.2016 22:34 # −2
Контекст использования в том моём коде - как аргумент функции Spawn() и как заyield'енное значение из генератора, который передали в Spawn(). Вот в этом контексте генератор используется как coroutine.
Или ты про контекст, который переключается? Тот контекст хранится внутри генератора в виде описанных в нём переменных (вспомним, что генератор - нихуя не функция, а объект-стейтмашинка). У каждого инстанса генератора - свой.
3_14dar 25.03.2016 22:40 # −3
bormand 25.03.2016 22:42 # −2
3_14dar 25.03.2016 22:57 # −1
bormand 25.03.2016 22:57 # −4
3_14dar 25.03.2016 23:41 # −3
Б-Л-Я-Д-Ь, я и спрашиваю, блядь - где код который из генераторов делает асинхронный код?
bormand 25.03.2016 23:46 # −4
Ты про портянку на ideone, которую я кидал? Да, мой.
> из генераторов делает асинхронный код
Нету там такого кода. Есть код, который асинхронно по ивентам (т.к. код упрощён - только по таймеру) пинает генераторы, создавая иллюзию, что они исполняются параллельно друг с другом :)
3_14dar 26.03.2016 00:00 # −4
С каких пор ты на 3 питоне? И что за heapq?
bormand 26.03.2016 00:08 # −1
С тех пор, как не надо питонить в продакшен.
> heapq
Куча, структура данных такая (heap). Конкретно здесь юзается как приоритетная очередь, чтобы ближайший таймер искать.
guest 26.03.2016 00:09 # −8
и почти во всех репах он есть
даже в сраных редхатообразных в EPEL есть
3_14dar 26.03.2016 00:14 # −2
guest 26.03.2016 00:15 # −5
3_14dar 26.03.2016 00:54 # −2
guest 26.03.2016 00:58 # −7
поди-ка мне под винду поставь пистона с mod_wsgi, apache, и всеми нужными либами типа libssl32.
3_14dar 26.03.2016 01:51 # −3
А что до винды - это проблемы прыщеговна.
guest 26.03.2016 01:56 # −5
Они все делятся на deb-based, rpm-based, а еще есть gentoo и arch.
Ты реально хочешь чтобы для всех шести сотен на сайте было написано как это ставить?
"Последней двойки" могло не быть в твоей репе, а не в aptе.
Апт это клиент репы. Найди правильную репу и все.
И причем тут прыщеговно? Ты пистон прыщеговном назвал?
Ну давай тогда, поставь мне пред-последний MS-SQL на Windows-7 и последнюю студию. А потом удали случайно .msiку из c:\windows\Installer и попробуй обновиться на последний SQL.
Поразгребаешь бесконечные "unknown error" с вот такими вот логами: https://justpaste.it/ovlj
А потом расскажешь мне про прыщи
3_14dar 26.03.2016 02:11 # −3
По крайней мере, в винде софт ставится по принципу "скачай экзешник - запусти", это может осилить любой школьник. А тут, видите ли, я что-то не так поставил.
guest 26.03.2016 03:19 # −6
очевидно ничего сложнее контр-страйка ты никогда не ставил
Знаешь как напрмиер .net подключить к IIS на Win2003?
>> С какой-нибудь жавой даже близко нет такого количества проблем на винде
особенно когда там ставится JDK и JRE, и в итоге у тебя две разных java.exe и две разных хранилки ключей и сертификатов. В итоге люди едят говно когда не понимают почему у них HTTPS не работает например
>>"скачай экзешник - запусти"
ты в винде не силен, видать
во-первых давно уже крупные пакеты используют MSI
Во-вторых если ты будешь ставить тот же MS-SQL, то узнаешь что там есть prerequrements, и вот там тебя могут попросить и .net обновить и CRT поставить (а CRT бывают разные, от разных студий, и не дай бог тебе поставить бету! Потом нихуя ее не удалишь нормально и не обновишь)
И наконец в десятке есть уже OneGet.
А вот на линуксе как раз все просто: сами качаются депенденсы.
Даже школьник справится.
3_14dar 26.03.2016 03:33 # −4
>особенно когда там ставится JDK и JRE, и в итоге у тебя две разных java.exe и две разных хранилки ключей и сертификатов. В итоге люди едят говно когда не понимают почему у них HTTPS не работает например
Но запускается только та что в path? Алсо какое это отношение имеет к пользователям?
Про msi в курсе, чем он отличается от exe с точки зрения пользователя?
OneGet это что?
>А вот на линуксе
Ты про apt-get? Ну нету там нужной мне версии, а дальше что? Хуяк-хуяк, pip не работает, начинаем ебсти себе мозги?
guest 26.03.2016 05:29 # −5
Понятно. Винду ты не знаешь, линукс ты не умеешь. Чтож ты умеешь тогда?
>>Но запускается только та что в path?
Да, но keystorage у них разное.
>> Алсо какое это отношение имеет к пользователям?
Никакой. А вот к программистам на жабе -- очень даже.
>>OneGet это что?
Это попытка сделать обертку вокруг chokolatey и других пакетных менеджеров для венды на пауершелле. Гугл в помощь тебе
>>Ты про apt-get? Ну нету там нужной мне версии, а дальше что?
Значит пошел в /etc/apt/sources.list.d и добавил репу с нужной версией
3_14dar 26.03.2016 20:22 # −3
>Да, но keystorage у них разное.
Как возникла проблема? Запускаться будет постоянно одна и та же жава.
Программисты свои проблемы как-нибудь решат. Я, например, удалял лишние jre которые тащила с собой жава (кстати, нахера?). Реальные проблемы возникают, когда у пользователей автоматом не ставятся нужные модули. Не будешь же им объяснять, как пользоваться пипом?
На винде есть пакетные менеджеры? И как оно?
>Значит пошел в /etc/apt/sources.list.d и добавил репу с нужной версией
Если ты такой умный, чего строем не ходишь? Я как малоопытный пользователь поставил из исходников - и получил проблему. А на винде бы такого не было.
LispGovno 30.03.2016 09:09 # −3
И через месяц огреб при обновлении оси, тк добавил не официальные репы.
3_14dar 30.03.2016 21:26 # −1
LispGovno 30.03.2016 09:04 # −1
А потом совершенно случайно отформатируй винт и попробуй обновиться на последний SQL.
3_14dar 31.03.2016 18:48 # −2
guest 01.04.2016 01:41 # 0
Есть один способ научить ее: перенести папку и сделать hard link.
но ты видимо и в винде нуль, как и в линухе
guest 01.04.2016 01:40 # 0
MSIки удаляются при очистке диска
Да и без удаления попробуй обновить бету студии на новую, ггг
3_14dar 26.03.2016 00:14 # −3
bormand 25.03.2016 23:58 # −2
Ну или можешь им считать Spawn(), который возвращает объект, который дёрнет коллбек, когда генератор бросит StopIteration.
guest 25.03.2016 20:50 # −3
guest 25.03.2016 21:12 # −4
3_14dar 25.03.2016 21:48 # −3
LispGovno 30.03.2016 08:56 # −4
guest 24.03.2016 23:55 # −4
ой мама родная
поди почитай про yield from и asyncio
bormand 25.03.2016 00:21 # −2
Или этот код недостаточно асинхронен?
З.Ы. Не обращай внимания на луп и его остановку. В боевом сервере там бы сокеты опрашивались и т.п. Здесь он просто для примера.
guest 25.03.2016 00:22 # −5
bormand 25.03.2016 00:34 # −2
guest 25.03.2016 00:38 # −2
Все путают
kegdan 25.03.2016 07:09 # −4
Чет мне кажется многопоточное, все-таки, программирование, ну, или программа
Параллельный - код
А асинхронный - вызов метода (ну или функции, набора инструкций, не суть)
guest 25.03.2016 23:51 # −6
Многопоточное -- использующее более одного потока исполнения (довольно тонкая грань между многопроцессным, особенно на linux)
Параллельный (конкурентный) -- выполняющийся параллельно (строго говоря может быть и на другой машине)
Асинхронный -- неблокирующий вызов с колбеком (может быть на другом треде)
Фишка в том, что для того чтобы асинхронно вызывать метод или иметь параллельные вычисления, вовсе не обязательно возиться с многопоточностью
Потоки всего лишь одна из реализаций
roman-kashitsyn 26.03.2016 00:06 # −5
>> Все путают
Включая тебя, Гость. Погугли concurrency vs parallelism.
guest 26.03.2016 00:07 # −6
roman-kashitsyn 30.03.2016 09:57 # −3
"А ни чего, что у меня парень работает в Майкрасофт и на него молятся пол Украины Ит-шников?" (c)
Гость, я тебя вычислил. Это ты переводишь книжки по IT гуглотранслейтом, превращая их в нечитаемое говно.
Vasiliy 30.03.2016 10:05 # −4
roman-kashitsyn 30.03.2016 10:39 # −4
Почему сразу владелец? Переводчиком скорее подрабатывает.
3_14dar 30.03.2016 21:24 # −4
bormand 30.03.2016 21:25 # −6
Кто это?
3_14dar 31.03.2016 02:06 # −3
bormand 31.03.2016 07:29 # −3
3_14dar 31.03.2016 18:45 # −3
bormand 31.03.2016 18:48 # −4
3_14dar 31.03.2016 18:50 # −3
Аську надо дропать. У меня контакт пропал, потребовало типа прикрепления телефона к уину для того чтобы ему писать (баг какой-то)
bormand 31.03.2016 18:51 # −3
Да, использую друзей как фильтр новостей :)
З.Ы. Ну а если ты про политические новости - на 99% от тебя на ГК...
3_14dar 31.03.2016 19:06 # −4
bormand 31.03.2016 19:15 # −3
Не читаю, лол. Логи же всегда остаются, если вдруг всё-таки захочется прочесть.
3_14dar 31.03.2016 19:20 # −3
bormand 31.03.2016 19:31 # −2
У меня там не такой поток, чтобы отделять было мучительным и долгим занятием... Ну и ссылки всякие на фоне других сообщений видно же.
kegdan 31.03.2016 08:53 # −3
bormand 31.03.2016 18:43 # −3
Неа, не знаю.
kegdan 31.03.2016 19:01 # −5
guest 01.04.2016 01:36 # 0
http://es.megaman.wikia.com/wiki/Thomas_Xavier_Light
kegdan 01.04.2016 01:37 # 0
guest 01.04.2016 01:39 # 0
Но это слово действительно так переводится.
От того что какой-то анонимный пидар на стековерфлоу придумал свою классификацию, из которой следует что задачи пеерсекающиеся и не пересекающиеся по времени относятся к разным типам, вовсе не значит что перевод поменялся
ну хотя может быть для тебя с твоим парнем анонимные пидары на SO и авторитеты, не знаю
3_14dar 01.04.2016 01:40 # 0
3_14dar 26.03.2016 00:02 # −4
3_14dar 24.03.2016 19:31 # −3
guest 25.03.2016 20:50 # −5
3_14dar 25.03.2016 20:59 # −6
guest 25.03.2016 21:10 # −5
3_14dar 25.03.2016 21:48 # −2
А причем тут 3.5?
3_14dar 25.03.2016 21:04 # −4
guest 25.03.2016 21:09 # +1
3_14dar 25.03.2016 21:45 # −4
1024-- 25.03.2016 21:12 # −3
#WSH #JScript #ВыбериЯзыкПодЗадачу
1024-- 25.03.2016 21:21 # +1
Один мужик прикрутил сишный слип как модуль к ноде.
npm install sleep
guest 25.03.2016 21:38 # −5
1024-- 25.03.2016 21:40 # −2
guest 25.03.2016 21:39 # −5
3_dar 25.03.2016 21:41 # −2
1024-- 25.03.2016 21:45 # −2
3.14159265 31.03.2016 19:27 # −5
>боюсь использовать
Это ж не хром, не скайп и не прочая мелкопитушня с шифрованным автообновлением.
3_14dar 31.03.2016 19:34 # −2
>боюсь использовать
>хром
Алсо у меня замечательно был случай, когда установленный модуль обновил одну библиотеку, которая оказалась нерабочей, после чего у меня в момент отвалились все проги юзавшие эту библиотеку. Старую версию я не помнил.
3.14159265 31.03.2016 19:54 # −4
Работает? Не трогай.
Полез? Не жалуйся.
>хром
Его упомянул как монструозную софтину на миллиарды строк, которые никто не осилит прочитать. В отличие от небольших npm модулей.
https://bugs.chromium.org/p/chromium/issues/detail?id=500922
К тому же хром=опесорцный хромиум+фирменные проприетарные фичи.
Так вот. Одной из таких фич является бэкграунд процесс Google Update. А так же отправка гуглу шифрованной питушни о твоем компе со свалки. И еще дырявый флеш.
Google Chrome != open source
3_14dar 31.03.2016 20:42 # −3
>И еще дырявый флеш.
Пиздец интересно слышать это от вендобляди.
3.14159265 31.03.2016 21:01 # −7
Кончено подскажу. Для начала попробуй перестать пить мочу.
>Пиздец интересно слышать это от вендобляди.
3_14dar, ты аутотренингом решил чтоле заняться, срамной нищеброд гы-гы-гы :))
Уже весь ГК заполонило твоё неосиляторство.
3_14dar 31.03.2016 21:15 # −3
И неосилятор здесь ты.
3.14159265 31.03.2016 21:29 # −7
Пидарок, не гори так, ггг. А то будет как прошлой весной. Ты тогда по ходу не один стул сжёг.
3_14dar 31.03.2016 21:31 # −4
3.14159265 31.03.2016 21:35 # −4
>ну расскажи мне, как сделать, чтобы модули не обновляли зависимости
Простая пошаговая инструкция, специально для тебя:
1. Используй менеджеры пакетов/зависимостей
2. Перестань пить мочу
3. Напитон, 3_14dar, напитон
3_14dar 31.03.2016 21:49 # −5
Зря я твой ник из игнора достал.
3.14159265 31.03.2016 22:16 # −6
3_14dar.py on line 2; execution error: failed at "Перестань пить мочу"
3_14dar 31.03.2016 22:18 # −4
3_14dar 31.03.2016 22:15 # −5
inkanus-gray 31.03.2016 21:35 # 0
Нет. Флеша существует аж три штуки:
1. Модуль для ActiveX. Используется в Интернет Эксплорере.
2. Модуль для NPAPI. Используется в браузерах.
3. Модуль для PPAPI. Используется в Хроме.
Это не просто интерфейсы. Реально устанавливается три разных плеера.
3.14159265 31.03.2016 21:36 # −7
>open-source
>хром
3_14dar 31.03.2016 21:48 # −4
3.14159265 31.03.2016 22:02 # −7
3_14dar 31.03.2016 22:14 # −6
3_14dar 31.03.2016 21:50 # −6
3.14159265 31.03.2016 22:04 # −7
Нахуй иди с таким кодом
>сейчас напишет ещё чтобы проц не нагружало
Нет. Просто нахуй.
3_14dar 6 дней назад # 0
Надо такой на гк повесить чтобы гости хуйню не писали.
3_14dar 14 минут назад # 0
Иди нахуй уже
3_14dar 12 минут назад # 0
Ну И Хуй?
1024-- 25.03.2016 21:43 # −3
Кстати, мужики могут в самой ноде все функции на system("rm -rf") заменить.
Или в обновлении ОС такое придёт.
Или какую-нибудь питушню забабахают, чтоб вентиляторы в случайное время отключились.
Так что мир обречён. И деньги фиатные.
Soul_re@ver 25.03.2016 23:40 # −3
Нвидиа впереди планеты всей.
bormand 25.03.2016 21:29 # −5
См. функцию foo(). В этом коде её запустили 2 раза в параллельных "потоках". И без единого await'а (yield же не считается за await?).
3_14dar 25.03.2016 21:45 # −4
bormand 25.03.2016 21:48 # −2
3_14dar 25.03.2016 22:02 # −3
И без эмуляции через генераторы. Валяй.
bormand 25.03.2016 22:03 # −2
Тогда никак. Если не юзать генераторы (или их эмуляцию через препроцессинг типа Babel'а), то никак. Хуярь лапшу.
3_14dar 25.03.2016 22:32 # −3
bormand 25.03.2016 22:40 # −3
А так, если в языке нету способа описать конечный автомат, выглядящий как функция (аля yield или async/await) - никак.
bormand 25.03.2016 22:55 # 0
3_14dar 25.03.2016 22:56 # −5
bormand 25.03.2016 23:07 # −2
Да, походу ты прав.
dxd 26.03.2016 06:31 # −3
3_14dar 26.03.2016 20:23 # −4
guest 01.04.2016 01:43 # 0
guest 25.03.2016 22:11 # −4
Так бы сразу и писал.
сейчас напишет ещё чтобы проц не нагружало
3_14dar 25.03.2016 22:31 # −4
Нахуй иди с таким кодом
>сейчас напишет ещё чтобы проц не нагружало
Нет. Просто нахуй.
Алсо что будет если заблокировать поток в js в браузере? Что зависнет - одна вкладка, или весь брауер?
Soul_re@ver 25.03.2016 23:42 # −3
kipar 26.03.2016 10:42 # −4
3_14dar 26.03.2016 20:24 # −5
1024-- 26.03.2016 20:50 # −2
Кстати, если плохая сеть, то тормозят они все вместе (блокируются в ожидании чуда).
3_14dar 26.03.2016 21:04 # −3
1024-- 26.03.2016 22:44 # −5
Если при зависании скрипта можно переключить вкладку, то тут хром просто не реагировал, пока сеть не стабилизировалась или не отключалась до конца.
guest 25.03.2016 23:55 # −5
Ты что шутки от серьёзных вещей не можешь отличить?
3_14dar 25.03.2016 22:41 # −4
bormand 25.03.2016 23:16 # −3
roman-kashitsyn 30.03.2016 11:41 # −1
Мне одному кажется, что конкретно этот пример реализуется тривиально?
bormand 30.03.2016 19:28 # −4
Ну блин. Этот пример тут просто для простоты. Не писать же тут какую-нибудь бизнес логику с десятком запросов в теле, как в топике.
Понятно, что всё это можно руками превратить в херню-с-коллбеками... Но ведь "блокирующий" код с async/await пишется и ревьювится намного проще...
З.Ы. Часто и комбинаторов хватает типа sequential(), parallel() и т.п. Но не всегда.
3_14dar 30.03.2016 21:23 # −4
3_14dar 31.03.2016 02:07 # −4
bormand 31.03.2016 07:29 # −3
3_14dar 31.03.2016 18:46 # −1
roman-kashitsyn 30.03.2016 11:53 # −2
Адаптировал код под твой пример:
3_14dar 26.03.2016 00:01 # −5
bormand 26.03.2016 00:03 # −4
Как я выше писал - "блокирующие" функции просто ставят свою побочку в очередь, которая разгребается по setTimeout или коллбекам о завершении.
3_14dar 26.03.2016 00:04 # −2
bormand 26.03.2016 07:46 # −5
3_14dar 26.03.2016 20:24 # −3
3_14dar 25.03.2016 22:42 # −4
3.14159265 31.03.2016 19:37 # −6
Да вы заебали. Ну сколько можно
Note: This code sample uses ES7’s draft async/await syntax, since it reads most clearly. To use this in production, check out the equivalent in plain JavaScript.
3_14dar 31.03.2016 20:43 # −3
guest 21.01.2017 07:02 # 0