
Oleksandr
04.11.2016
10:34:22

Pavel
04.11.2016
10:34:27
ну, объективно большая часть студентов читает книжки годами, а потом никуда не может устроиться, а некоторые устраиваются и за год поднимают практический багаж в разы больше

Oleksandr
04.11.2016
10:34:45
а вот с мейнстримом наоборот, ждут что и язык от зубов отскакивает, и либы знаешь, и тулинг, и тд и тп

Google

Oleksandr
04.11.2016
10:35:31
в смысле, избегание практики (в том же опенсорсе или даже более качественных курсовых) через чтение книг

Александр
04.11.2016
10:41:34
#whois
всем привет
по традиции
▫️nodejs + sqlite + mongo (статистика), пишем на es7 через бабел.
▫️пришел на ноду из Python, немного пишу(-сал) биндингов для ноды, линукс, бабел, промисы и проч., в общем немногое по немногу, кроме фронтенда
▫️сложно сказать, чем смогу, тем помогу.
▫️узнать чем другие занимаются, новости, лулзы
▫️Екатеринбург
▫️tproger


LEO
04.11.2016
11:13:23
Доброго всем дня!
Меня зовут Фаррух
я студент
пишу бота для своей студенческой группы, часто бывают вопросы по написанию этого самого бота, группа интересна мне наличием опытных в этом участниках,
я из Ташкента
про группу узнал с сайта
https://tgram.ru/channels/nodejs_ru
#whois
если можно то сразу переду к вопросу..
я хочу научить своего бота считать среднее арифметическое из заданных чисел, проблема в том что я не могу понять как нужно присвоить каждому числу аргумент, числа будут присылатся так- каждое число с новой страки в одном сообщении, то есть для меня оно выглядит так:
text: '1\n2\n3\n4\n5\n6\n7\n8\n9\n11\n12\n13' }
помогите пожалуйста сделать из этого массив

Yusup
04.11.2016
11:19:59
text.split('\n')

Vitaliy
04.11.2016
11:20:25
text.split('\n').map(n => parseInt(n))

Yusup
04.11.2016
11:20:46
@Vi
@glukki дело говорит

Vitaliy
04.11.2016
11:22:13
ну, проверить потом надо, вдруг строка не была числом — тогда будет NaN

LEO
04.11.2016
11:22:40
понял
спасибо

Vitaliy
04.11.2016
11:22:57
можно ругнуться на это, а можно проигнорировать

Google

Yusup
04.11.2016
11:23:11
почитай про работу со строками и методы массивов

Vitaliy
04.11.2016
11:25:28
дада, лучше прям документацию почитать
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split
справа наверху есть переключала языков, если что
кстати, а в вебе есть документация по JS лучше/удобней, чем MDN? О.о
я-то использую приложение Dash уже давно, в нем по js дока как раз из MDN собрана

JetFightzer ?
04.11.2016
11:47:45
кто тут прошарен во всяких MVC, MVP и всех таких штуках? я тут более-менее наметил некую схему работы всех этих штук и хотелось бы посоветоваться с кем-то толковым, кто не просто "делай по MVC потмоу чт отак надо"

LEXASOFT
04.11.2016
11:55:17

Andrey
04.11.2016
11:56:08
промисы всегда возвращают промисы

LEXASOFT
04.11.2016
11:56:29
хм а как мне дождаться результата?

Andrey
04.11.2016
11:56:55
результат, это типо info?

LEXASOFT
04.11.2016
11:57:02
да

Vladimir
04.11.2016
11:57:05
}).then(function(json) {
//console.log(json);
return json.access_token;
}).then(function(token) {
return fetch('https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token='+token);
.then(function(res){
return res.json();
}).then(function(info) {
console.log(info);
return info;
}).catch(function(err) {
console.error('Error in promise chain', err);
});

Andrey
04.11.2016
11:57:23
+

JetFightzer ?
04.11.2016
11:57:44
> return info;
ретурн куда?

Vladimir
04.11.2016
11:57:46
не нужно нестить промисы

Andrey
04.11.2016
11:57:53
А лучше копни в await/async чтобы не городить эту вложенность

Vladimir
04.11.2016
11:57:54
это промис зарезолвит
module.exports = function supPromise(code) {}
var supPromise = require('./sup-promise')
supPromise('yeah').then(console.log, console.error)

Google

Andrey
04.11.2016
12:00:30
*пожималкин с iOs*

LEXASOFT
04.11.2016
12:32:23
+

KlonD90
04.11.2016
13:33:25

Александр
04.11.2016
13:36:03
https://nodejs.org/dist/latest-v6.x/docs/api/ же, ну

KlonD90
04.11.2016
13:37:10
вот видео курсы стикеров в телеграмме это полезный курс ._. курсы по ноде мне кажется какой-то тратой времени

Dreamerinnoise
04.11.2016
13:37:25
но она слишком базовая

KlonD90
04.11.2016
13:39:21
и зачем она? я вообще не уверен что про ноду нужна какая-то отдельная книжка
разве что пару статей про стримы, баферы

Vitaliy
04.11.2016
13:40:03
нужна книжка про замыкания. и про промисы. других не надо
листаж: 1 стр.
ладно, про промисы 2

Vitaliy
04.11.2016
13:41:04
только потому что интерлиньяж большой )

Dreamerinnoise
04.11.2016
13:41:49

KlonD90
04.11.2016
13:41:50
промисы и замыкания это не нода

Vitaliy
04.11.2016
13:42:47

Vladimir
04.11.2016
13:44:27

Vitaliy
04.11.2016
13:45:24
нет, ну а что такое нода? что там учить?
нода, если буквально, это апи + ивент луп.
все остальное принесено извне: язык со стандартной библиотекой, модули, паттерны проектирования..

KlonD90
04.11.2016
13:45:24
ну не таких книжек так и скажите

Google

KlonD90
04.11.2016
13:45:32
а то как-то одну и ту же штуку 3 раза шутить

Admin
ERROR: S client not available

Gabe
04.11.2016
14:54:59
/stat@combot

LEO
04.11.2016
15:01:43

Vitaliy
04.11.2016
15:03:48
let a = '1\n2\n3'
.split('\n') // ['1', '2', '3'] массив строк
.map(s => parseInt(s)); // [1, 2, 3] массив чисел
console.log(a);
я просто даже не знаю что тут еще показывать

JetFightzer ?
04.11.2016
15:05:05
» .map(s => parseInt(s));
главное не .map(parseInt)
а то будет плохо

LEO
04.11.2016
15:05:32
хорошо, спасибо

Vitaliy
04.11.2016
15:06:24
в смысле, это буквально код, который можно скопировать к себе, и он сделает из строки массив чисел

LEO
04.11.2016
15:48:43
спасибо получилось
только 1 вопрос
он у меня считает только целые числа
как заставить его понимать запятую?
var mid = 0;
array.shift();
array = array.map(s => parseInt(s));
array = array.filter(function(s){return s;});
for(i in array) {
if(array[i]) {
mid += array[i];
console.log(array[i]);
}
}
sendMessageText = 'Среднее ' + (mid / array.length);

Teorge
04.11.2016
16:08:18
Зачем тебе запятая в вычислениях? Вставь ее в вывод

Alexey
04.11.2016
16:08:57
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseFloat

P
04.11.2016
16:10:50
как заставить его понимать запятую?
У тебя в числах, которые ты парсишь, есть запятые? Посмотри на mdn статью про parseFloat, там есть пример строгого разбора числа с регуляркой, возьми эту регулярку и добавь туда запятую (только потом надо будет её заменить).
Это первое что в голову пришло.

Teorge
04.11.2016
16:15:23
Прошу прощения, ошибся, думал ты хочешь через запятую их записать
Поддерживаю parseFloat

Google

LEO
04.11.2016
16:19:51
var filterFloat = function (value) {
if(/^(\-|\+)?([0-9]+(\.[0-9]+)?|Infinity)$/
.test(value))
return Number(value);
return NaN;
}
вы об этом?
array = array.filter(function(s) {return s;});.
проблема разве не в этой строчке?
фильтр отрезает запятую и то что за ней?

Александр
04.11.2016
16:36:13
нет, не в этой строчке
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/parseInt

Vitaliy
04.11.2016
16:51:11

LEO
04.11.2016
16:53:11
Учту, спасибо

Дмитрий
04.11.2016
16:53:36
let str = '1\n2\n3.5\n4\n5\n6,5\n7\n8\n9\n10';
let arr = str.split('\n');
let count = 0;
let res = arr.reduce((total, current) => {
if (current.includes(',')) {
current = current.replace(',', '.');
}
if (current.includes('.')) {
current = parseFloat(current) || 0;
} else {
current = parseInt(current) || 0;
}
if (current > 0) {
count++;
}
return total += current;
}, 0);
let med = res / count;

Vitaliy
04.11.2016
16:55:44
кстати, пусть создается лишний мусор в памяти, но я бы предпочел разделить парсинг, фильтрацию и сложение..