Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Обсуждений тред (https://javascript.ru/forum/offtopic/47364-obsuzhdenijj-tred.html)

:before 08.01.2016 02:53

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

Erolast 08.01.2016 08:58

Ничего он не добавляет и не расширяет, он просто облегчает работу с асинхронщиной.

Safort 08.01.2016 13:21

Цитата:

Сообщение от Poznakomlus (Сообщение 402961)
Надеюсь мы скоро от этого избавимся и забудем
https://learn.javascript.ru/css-scoping

До этого ещё дожить нужно)

Safort 08.01.2016 13:23

Цитата:

Сообщение от :before (Сообщение 402964)
Привет, друзья-ребята. поясните пожалуйста, какой такой функционал добавляет\расширяет модуль async, кроме того, что собирает через колбек все результаты?
зачем подобные фреймворки вообще существуют, если нода и без того вполне себе асинхронна? Что-то я не пойму совсем. Асинхронная асинхронность асинхронительная

Привет, друг-брат. Async просто позволяет тебе удобнее работать с асинхронщиной.

Zend 09.01.2016 03:24

Один мальчик писал все на JavaScript, и клиент, и сервер, говорил что нравится, удобно, читабельно. Потом его в дурку забрали, конечно.

Erolast 09.01.2016 09:30

Цитата:

нравится, удобно, читабельно
Почему нет-то?

Safort 09.01.2016 10:33

Zend,
эта посвежее :)
https://twitter.com/nikitonsky/statu...57029876047872

Safort 09.01.2016 10:36

неБоянАКлассика

Цитата:

Парни, я вчера видел на улице лиспера. Ну вы знаете, как это обычно бывает - идет вам на встречу человек бомжеватого вида, а когда подходит ближе у него на лбу можно разглядеть 2 скобки и большую лямбду между ними.
Но в это раз передо мной был ребенок, на вид лет 14-16 от роду. И знаете, что самое удивительное? Мне стало его жалко. Чисто по-человечески жалко, вы понимаете. "Такой молодой, а уже лиспер" - на секунду подумал я и тут же отвернулся. Потом повернуля обратно и догнал юнца.
Как тебя зовут? Где ты живешь? Кто твои родители?
ERROR: Unbound variable: Как
Пришлось переспрашивать.
"Скобка. Как тебя зовут? Где ты живешь? Кто твои родители? Скобка. " -
"Мандрюшей меня зовут. Родителей нет, живу в парке Горького."
Скобка. Пошли ко мне, Мандрюша. Поживешь некоторое время у меня, накормлю, найду тебе работу и жилье на первое время. Скобка.
Нет, не пойду. Меня друзья-лисперы потеряют! Мы с ними каждую пятницу собираемся в Буране и читаем вслух SICP. А сегодня как раз пятница. Я не могу пропустить.
Загоревшись интересом посмотреть на это зрелище, я спросил, можно ли мне присуствовать. Получив утвердительный ответ, мы вдвоем направились в прямиком в парк Горького.
На месте сразу бросилось в глаза: привычная для этого места очередь на аттракцион куда-то пропала. Касса с билетами - тоже. Только внутри горел свет.
"Только тихо, и ничего не говори про теорию типов" - неожиданно предупредил Мандрюша.
"Хорошо" - сказал я.
Мы вошли внутрь. Сказать, что я сильно удивился - значит не сказать ничего. На стенах висели портреты разных известных лисперов, вроде Рича Хикки и Джона Маккарти, разбавляя бесконечное море листингов на лиспе и его диалектах. Нас ждало около 30 человек, чьим запахом, как мне тогда казалось, можно было травить тараканов. Среди них были женщины, дети и старики.
"И сказал Сассман: не продавайте Библий, а ловите лулзы! И да будет так! Пусть всегда будет так! Lambda!" - доносилось из хвостовой части.
"Но ведь Сассман - жид! Жид, родные, жид, ребята! Негоже жидам угнетать настоящих людей, нас, русских людей, построивших этот Буран, венец человеческого творения!" - воскликнул какой-то лысый толстяк поблизости. Из толпы сразу вышли несколько человек с горбатыми носами, которые вытолкали смутьяна на улицу.
ЭНе обращайте внимание, мои lambda-братья" - продолжал голос их хвоста - "Сегодня мы собрались обсудить построение абстракций при помощьи данных. Сестра с зелеными волосами, подойдите, возьмите книгу и читайте! Читайте же!"
"Ой вы знаете, я хочу сначала на листочке завести трекер, чтобы можно было отслеживать где я прочитала. Вы и сами можете отписываться на нем, отслеживая свои дела. Знаете, это должно быть очень весело!" - неожиданно ответила деловитым тоном невысокая девушка с необычно большими глазами и зелеными, как газон после дождя, волосами.
- Читайте уже, милая - сказал загадочный голос и девушка начала неспешно и размеренно читать вслух.
Пока она читала, я присмотрелся в Главного, который все это время находился в хвосте, внимательно: на нем была синяя футболка с изображением гну, борода с крошками, белые шорты, желтые резиновые тапки и длинные волосы. Он внимательно посмотрел на меня. "Вы, да вы, подойтите , пожалуйста сюда" - громко сказал он - "Я вас вижу на наших собраниях первый раз. Представьтесь пожалуйста! Расскажите, чем вы занимаетесь"
Я немного замялся, но просьбу выполнил - прошел в хвост, куда устремили свой взгляд все присуствующие.
Меня зовут Семен, я работаю в Microsoft, программистом - начал я.
А на каких языках вы пишите? - поинтересовался Главныйю
на C#, F#, Haskell - ответил я без задней мысли.
Вдруг наступила тишина. Девушка-чтец выранила книгу из рук. Мандрюша нервно скукожился. Глаза Главного налились кровью. Тишину прервал резкий крик из толпы: "СТАТИКОПЕТУХ, БРАТЦЫ! БЕЙ ЕГО". В меня сразу же полетели несколько советсикх калькуляторов МК-61, ящик котрых стоял рядом с кабиной пилота. Чудом уклонившись от них, я завернулся в монаду. Теперь лисперы не могли меня достать. "Кто его привел? Кто привел этого Статикопетуха?" - закричал главный - "пусть он тогда ответит за все!". Мандрюша икнул. Для него было все кончено. 30 лисперов сейчас стояли и смотрели на него, как на живой труп. Впрочем, Мандрюша про себя думал тоже самое. Резким рывком, я прыгнул через 3-х лисперов и оказался возле Мандрюши. " Скобка. Сейчас будет немного больно. Скобка. " сказал я и завернул его в Maybe-монаду. И снова наступила тишина. Злыми глазами на меня смотрели лисперы. Обалдевший от такой наглости на меня смотрел Мандрюша.
Тишину разрезал смех. "Вы не выйдете отсюда, глупые статикодилы! Какой-то статикодебил однажды пытался завернуть этот корабль в State монаду, и теперь вам нужен трансформер, чтобы выйти отсюда!".
Неожиданный поворот. В один миг все оказалось кончено. Развернуться из монады означало сдать себя на корм голодным лисперам. Не разворачиватья - просидеть в этом памятнике человеческой мысли до тех пор, пока кто-то не узнает про инцидент.
Неожиданно для всех, в носовой части открылась дверь и зашел тот самый толсяк, который до этого кричал про жидов.
Жиды, вы все жиды. Вы должны умереть чтобы очистить русскую землю от жидовской заразы! - закричал он и подключился с ноутбука к бортовому компьютеру.
Я написал специальный язык на лиспе, с помощью которого запущу это аппарат в космос! - еще более громко закричал он - Три! Два! Один! Пуск!
Громкий гул раздался в хвосте. В одно мгновение стало очень жарко. Дверь у кабины закрылась и космический аппарат поехал в сторону Крымского Вала. Немного оторвавшись от земли, он процарапал своим шасси несколько машин, стоявших в пробке у моста, упав из-за этого в реку.
Как сообщили потом новости, аппарат упал из-за того, что в управляющей программе случился сегфолт - сказался недостаток тестов для всех возможных вариантов RealWorld - не была учтена возможность тарана нескольких машин в пробке. Из всех невольных пассажиров выжило лишь двое - я и Мандрюша. После этого инцидента он больше не пишет на лиспе, нашел работу C#-девелопером и обходит других лисперов стороной. Я же пишу историю здесь по тому, что официальные СМИ ее умалчивают. Большинство новоствных агенств ссылается на личную просьбу некоего Давида Моисеевича.

cyber 15.01.2016 13:15

Не могу, найти async/await это уже стандарт?
И их можно использовать с babel?

trikadin 15.01.2016 14:25

cyber, в стандарте их нет, только в драфте. Но с бабелем использовать можно (и нужно), а в эдже они есть нативно.

Erolast 15.01.2016 14:41

Цитата:

Сообщение от cyber (Сообщение 403861)
Не могу, найти async/await это уже стандарт?
И их можно использовать с babel?

Планируется как часть ES2016 (ES7) - https://github.com/tc39/ecmascript-asyncawait.
Через babel можно компилировать с помощью плагина - http://babeljs.io/docs/plugins/trans...-to-generator/.

trikadin 15.01.2016 14:56

Дарю конфиг для последней ноды:
plugins: [
  'transform-flow-strip-types',
  'transform-decorators-legacy'
],
presets: ['es2015-node5', 'stage-0']


Компилит всё, в том числе и async/await так, чтобы работало в node последней стабильной версии, но ничего лишнего. Плюс можно заюзать flow.

cyber 15.01.2016 15:14

Цитата:

Сообщение от trikadin
в стандарте их нет, только в драфте. Но с бабелем использовать можно (и нужно), а в эдже они есть нативно.

А если уберут со стандарта?
За конфиг спасибо.

Erolast 15.01.2016 15:57

Цитата:

Дарю конфиг для последней ноды
А у меня вот так :)
{
    "presets": ["es2015-node5"],
    "plugins": ["transform-async-to-generator"],
    "ignore": ["lib"]
}

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

Цитата:

А если уберут со стандарта?
Вряд ли. У пропосалов в ES есть пять степеней готовности, где async/await находится уже на четвертой (№3, отсчет с нуля идет) - это значит, что фича уже проработана и теперь только ожидает фидбека.
Даже если вдруг что-то радикально изменится и поломается обратная совместимость (что очень вряд ли), то трансформирующий плагин по семверу-то перейдет на новую мажорную версию, так что до того, как появится время (желание) переписать код, можно просто сидеть на старой версии и не обновляться.

trikadin 15.01.2016 16:23

Цитата:

Сообщение от cyber
А если уберут со стандарта?

То я перестану писать на JS :D

Цитата:

Сообщение от Erolast
Игнорирование /lib здесь для того, чтобы тестирующий фреймворк, настроенный на прекомпиляцию тестов с помощью бабеля

Ну это уже каждый настроит как ему нужно.

Цитата:

Сообщение от Erolast
У пропосалов в ES есть пять степеней готовности

И вот здесь можно посмотреть, кто на какой.

cyber 15.01.2016 16:40

trikadin, Erolast, спасибо

cyber 18.01.2016 12:11

Как импортировать через import что бы просто подключить без переменной? Как простой require('x') без присвоения значения переменной

kobezzza 18.01.2016 13:02

Цитата:

Сообщение от cyber (Сообщение 404138)
Как импортировать через import что бы просто подключить без переменной? Как простой require('x') без присвоения значения переменной

import 'x';

cyber 18.01.2016 14:56

kobezzza, спасибо йода))

cyber 18.01.2016 17:15

не совсем понимаю что делает этот код (0 , _typeof4.default), все время возвращает 2й аргумент?? И смысел ?

l-liava-l 18.01.2016 17:50

Цитата:

не совсем понимаю что делает этот код (0 , _typeof4.default), все время возвращает 2й аргумент?? И смысел ?
Из-за запятой

Представим два сервера с одной версией ноды и бабеля. На первом new Date().toLocaleString(params) выдает отформатированные строки, а на втором то же самое что и new Date(). Я так понимаю это как-то связано с системными настройками? Подскажите плз куда копать.

trikadin 18.01.2016 22:23

Цитата:

Сообщение от l-liava-l
Представим два сервера с одной версией ноды и бабеля. На первом new Date().toLocaleString(params) выдает отформатированные строки, а на втором то же самое что и new Date(). Я так понимаю это как-то связано с системными настройками? Подскажите плз куда копать.

Загуглил за тебя.

Рекомендую поставить moment и не любить себе мозги :)

l-liava-l 18.01.2016 22:54

trikadin,
Красотень :)

cyber 18.01.2016 23:02

Цитата:

Сообщение от l-liava-l
Из-за запятой

Понятнее смысел этой записи не стал

yazonnile 19.01.2016 19:02

Ребят. Объясните плз профит async/await по сравнению с цепочками промисов.
Самый простой пример, что я смог придумать :)
1 Объем кода такой же +/-
2 приятность синтаксиса - спорно. Кому что больше нравится.
???
Больше не смог ничего придумать.
Подозреваю, что я просто не умею готовить.

async function some() {
	console.log(1);

	await new Promise(resolve => {
		setTimeout(() => {
			console.log(2);
			resolve();
		}, 1000);
	});

	console.log(3);
};

some();


function some() {
	console.log(1);

	new Promise(resolve => {
		setTimeout(() => {
			console.log(2);
			resolve();
		}, 1000);
	}).then(() => {
		console.log(3);
	});
}

some();

cyber 19.01.2016 22:43

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

function getAsyncData() {
  return new Promise( ( resolve ) => {
    setTimeout( () => {
      resolve("data");
    }, 1000 );
  } )
  
}

async function getData(){
	 var val = await getAsyncData(); 
   // далее пишем синхронный код
   var val = await getAsyncData();// снова получаем асинхронный данные
   //дальше пишем синхронный код и не каких callback
}
getData();

Erolast 20.01.2016 11:03

Цитата:

1 Объем кода такой же +/-
Допустим, нам надо описать алгоритм регистрации юзера, где необходимо запросить логин, язык, пароль и эмэйл, а затем еще и сохранить данные в ДБ. Логин должен быть уникальным, так что если клиент пришлет уже занятый, надо его об этом оповестить и запросить другой. Если опять пришлет занятый, повторить, и так по кругу.
const loginsTaken = new Set();

class User {
    async register() {
        let login = await this.request("login");
        
        if (loginsTaken.has(login)) {
            do {
                this.send("login is taken already");
                login = await this.request("login");
            } while (loginsTaken.has(login));
        }

        loginsTaken.set(login);
        
        let language = await this.request("language");
        let password = await this.request("password");
        let email = await this.request("email");

        Object.assign(this, {language, login, password, email});

        await this.save();

        this.send("registered successfully");
    }
}


Перепишешь на чистые обещания?

yazonnile 20.01.2016 12:54

Спасибо за разъяснения!

Erolast,
код, который вне if можно легко переписать на цепочку. А код внутри if я бы вынес в отдельную функцию. Но идею я понял. Спасибо.

cyber,
В большинстве случаев это не будет явный вызов промиса а выззов какого то метода.
А как интерпритатор поймет, что ему передается асинхронный вызов?
К примеру var result = await this.some();
Метод some должен же вернуть промис, чтобы код работал правильно. Или я недопонял?

kobezzza 20.01.2016 13:36

await может принимать что угодно, хоть

await 1


И это позволяет писать одинаковый интерфейс для синхронных и асинхронных вызовов.

yazonnile 20.01.2016 14:11

Да. Но если там асинхронный вызов?
К примеру
await setTimeout(a => 10);

Т.е чтобы await сработало правильно и дождалось результата - нужно вернуть промис же?

cyber 20.01.2016 15:00

Цитата:

Сообщение от yazonnile
Метод some должен же вернуть промис

Я имел ввиду что ты не будешь каждый раз писать new Promise, а будешь вызывать функцию которая будет возвращать

yazonnile 20.01.2016 17:05

Да. Все понятно.
Спасибо)

cyber 21.01.2016 16:10

Добавил в комп ссд, хочу склонировать на него с hdd (hdd 2м диском) всю систему, кто там делал?
Читал что это делают утилитой dd, что скажете ?
Или есть другие варианты?

a26cf84d 21.01.2016 18:33

clonezilla запиши на флешку и гоу!

cyber 21.01.2016 20:20

a26cf84d, эм, мне нужно перенести целую систему со всем софтом.
У меня нет флехи на 100 гиг, да и зачем если оба винта в одном компе, мне нужно взять загрузится c live usb и перенести, только чем это сделать лучше

a26cf84d 21.01.2016 20:58

Цитата:

Сообщение от cyber
a26cf84d, эм, мне нужно перенести целую систему со всем софтом.
У меня нет флехи на 100 гиг, да и зачем если оба винта в одном компе, мне нужно взять загрузится c live usb и перенести, только чем это сделать лучше

Дурачёк что ли? Клонзиллу на флешку запиши и загрузись с неё. Тебя никто маны читать не учил? dd дубовый инструмент. Клонзилла удобнее и круче, можно клонировать целиком диски и по частям(партишнам), делать бекапы партишнов и восстанавливать, переносить между компами, сохранять и восстанавливать по сети и т.д. и тп. Архив - папка с файлами побитыми на 2гб, можно унести на флешке, если нужно. В общем круче для клонирования не встречал.

Ман по клонзилле сначала прочитай или видео постмотри, инструмент очень гибкий и для клона нужно пройти порядка 15 меню.

вкратце:
грузим флешку с UEFI,
...
русский, ну и далее читаем подсказки

cyber 22.01.2016 01:39

Цитата:

Сообщение от a26cf84d
Дурачёк что ли?

Можно и не хамить, был уставшим , тупонул.
ЗА подсказку спасибо по читаю

trikadin 22.01.2016 20:10

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

И ты это... Обидься уже окончательно и уйди насовсем, что ли. А то вроде как обидку кинул, а сам с фейковых акков сидишь. Смешно.

a5e39d65 22.01.2016 20:21

trikadin,
Я тебе разве не говорил, хотя ты и сам должен это понимать, что я тебе ничего не должен?!

Цитата:

Сообщение от trikadin
фейковых

Фейковый - это когда поддельный, а я не с поддельного?

Может думать уже начнешь ;)

trikadin,
и звать меня a5e39d65 или ты читать не умеешь?

Ты когда банить будешь, не напрягайся, я даже не помню свой ник :D

Mаxmaxmаximus 23.01.2016 13:34

trikadin, лол, даже у меня так не бомбило как у него (бомбило бомбило и еще не так)


Часовой пояс GMT +3, время: 06:28.