Twinker
Вот есть проект, где?
Paul
Это тот тип знаний, который не давит карман
Paul
Не знаешь — ну и ладно, знаешь — плюс в карму
Twinker
Без сомнения. Я жалею на самом деле, что не знаю. Но на собесах за неспособность ответить на этот вопрос тебя кикают сразу xD
Twinker
Типа ну ты шашлык совсем, как ты можешь что-то знать, если не знаешь этого
Twinker
А на деле ты разваливаешь интервьюера своим опытом
Paul
Paul
Не так то просто составить план собеса, который подойдет под всех кандидатов, нужны какие-то базовые фильтры
Paul
Тупые вопросы про прототипы и бабл сорты — как раз такие фильтры
Dmitriy
а можно пример нетупых вопросов? просто интересно с чем в реальной практике люди сталкиваются?
Paul
Я регулярно собеседую и пришел к выводу, что самый просто способ раздуплить компетентность кандидата — спросить у него "что происходит когда чувак вводит урл в браузер, от момента нажатия ентера и до момента конца отрисовки страницы"
Paul
Этот вопрос полностью раскрывает глубину знаний (если они есть) и дает хорошую почву для беседы, т.к. там можно разболтаться и про сеть с хттп, и про бекенд, и про евент лупы, и про layout/paint/composite и т.д.
🤴👷♂️🦸♂️🧚♀️
Paul
Прелесть этого вопроса в том, что у него много "слоев понимания", и там есть что спросить и джуна и у синьора
Paul
Само собой джун вряд ли ответит как V8 ставит микротаски в очередь
Paul
Но думаю объяснить на пальцах хотя бы последовательность происходящих событий при отрисовке страницы он должен
Андрей
Андрей
Чем это знание отличается от знания быстрой сортировки?
Paul
А там все плавно перетекает, обычно, в простые вопросы про основы js/html/css, смотря какой джун и на какую позицию
Андрей
Андрей
Или ты хочешь услышать, что микротаски - это таски с наивысшим приоритетом выполнения?
Paul
Совершенно необязательные знания, само собой. Но если чел что-то может ответить на этот счет, значит он не случайный прохожий
🤴👷♂️🦸♂️🧚♀️
Paul
Paul
Рендерит blink/webkit
Николай
кто-нибудь использовал nodemailer для ноды?
Николай
когда отправляю письмо вылезает ошибка
Николай
в гугле пусто
Николай
лезу смотреть в nodemailer какого хера net.isIP не функция
Николай
а там net вообще не определено
Николай
хотя подключено всё
Paul
Так это нодовский модуль
Николай
Николай
он и должен быть пустым объектом если выводить в консоль?
Николай
в документах сморю, isIP вроде не депрекейтед
Николай
но какого-то хрена это не функция
Paul
Нет, не должен
Paul
Paul
Николай
Николай
как такое возможно?
Paul
Падажи, ты в браузере тычещь?
Paul
Или просто дебагер там
Николай
да, браузер
Николай
что не так?)
Artem
Это ж не нода
Paul
Что-то мне подсказывает, что nodemailer не предназначен для браузера)
Николай
а net хер
Николай
на сервак лучше закинуть?
Paul
Не все что заведется на ноде, заведется в браузере
Artem
Нодмэйлер как бэ намекает названием
Николай
ясно))
Николай
первый раз такое попалось
Павел 💻
Всем привет! Подскажите пожалуйста, какой нибудь хороший курс или книгу по js/node.js , чтобы реально скил качнуть, ато все однообразные видосики с ютюба надоели. Например создание крипто обменника или что то в этом роде, где решают действительно сложные задачи
Andrew
Так же как и на других технологиях - запрос на телеграм апи к setWebhook и передать урл на котором сервер слушает бот
Andrew
Тогда вопрос - как выставить на ноде урл наружу. С нодой не знаком, не помогу, к сожалению
Syntax Highlight Bot
Andrew
Если нет домена, то можно. У вас уже принимаются запросы извне на удаленном сервере?
Igor
Добрый вечер, я из php, у меня вопрос по форматированию массива, столкнулся с неожиданным поведением. У меня есть массив
[
{
name: 'Ложь',
variants: [
{
n: 1,
q: [16, 31, 45]
},
{
n: 2,
q: []
}
]
},
{
name: 'Аггравация',
variants: [
{
n: 1,
q: [2, 17]
},
{
n: 2,
q: [91]
}
]
},
{
name: 'Экстраверсия',
variants: [
{
n: 1,
q: [12, 27]
},
{
n: 2,
q: [14, 57, 87]
}
]
}
]
я из него хочу получить массив такого вида
{
"2": {
"1": [
"Аггравация"
]
},
"12": {
"1": [
"Экстраверсия"
]
},
"14": {
"2": [
"Экстраверсия"
]
},
"16": {
"1": [
"Ложь"
]
},
"17": {
"1": [
"Аггравация"
]
},
"27": {
"1": [
"Экстраверсия"
]
},
"31": {
"1": [
"Ложь"
]
},
"45": {
"1": [
"Ложь"
]
},
"57": {
"2": [
"Экстраверсия"
]
},
"87": {
"2": [
"Экстраверсия"
]
},
"91": {
"2": [
"Аггравация"
]
}
}
для этого использую вот такой код
let res = {}
this.scales.forEach(scale => {
scale.variants.forEach(variant => {
variant.q.forEach(question => {
res[question][variant.n].push(scale.name)
})
})
})
return res
но мне пишет что variant.n свойство undefined, поэтому делаю так
let res = {}
this.scales.forEach(scale => {
scale.variants.forEach(variant => {
variant.q.forEach(question => {
if (res[question] === undefined) {
res[question] = {}
}
if (res[question][variant.n] === undefined) {
res[question][variant.n] = []
}
res[question][variant.n].push(scale.name)
})
})
})
return res
как сделать это правильно?
Anonymous
Добрый вечер, я из php, у меня вопрос по форматированию массива, столкнулся с неожиданным поведением. У меня есть массив
[
{
name: 'Ложь',
variants: [
{
n: 1,
q: [16, 31, 45]
},
{
n: 2,
q: []
}
]
},
{
name: 'Аггравация',
variants: [
{
n: 1,
q: [2, 17]
},
{
n: 2,
q: [91]
}
]
},
{
name: 'Экстраверсия',
variants: [
{
n: 1,
q: [12, 27]
},
{
n: 2,
q: [14, 57, 87]
}
]
}
]
я из него хочу получить массив такого вида
{
"2": {
"1": [
"Аггравация"
]
},
"12": {
"1": [
"Экстраверсия"
]
},
"14": {
"2": [
"Экстраверсия"
]
},
"16": {
"1": [
"Ложь"
]
},
"17": {
"1": [
"Аггравация"
]
},
"27": {
"1": [
"Экстраверсия"
]
},
"31": {
"1": [
"Ложь"
]
},
"45": {
"1": [
"Ложь"
]
},
"57": {
"2": [
"Экстраверсия"
]
},
"87": {
"2": [
"Экстраверсия"
]
},
"91": {
"2": [
"Аггравация"
]
}
}
для этого использую вот такой код
let res = {}
this.scales.forEach(scale => {
scale.variants.forEach(variant => {
variant.q.forEach(question => {
res[question][variant.n].push(scale.name)
})
})
})
return res
но мне пишет что variant.n свойство undefined, поэтому делаю так
let res = {}
this.scales.forEach(scale => {
scale.variants.forEach(variant => {
variant.q.forEach(question => {
if (res[question] === undefined) {
res[question] = {}
}
if (res[question][variant.n] === undefined) {
res[question][variant.n] = []
}
res[question][variant.n].push(scale.name)
})
})
})
return res
как сделать это правильно?
Смотри в сторону Array.reduce -вполне возможно за 1 проход все сделать
Igor
Смотри в сторону Array.reduce -вполне возможно за 1 проход все сделать
не совсем понимаю как это поможет, как я понял, это используется если необходимо сохранить промежуточный вариант при переборе, но мне нужно полностью массив переформатировать и промежуточный вариант вроде как не нужен, в php это делается просто через $res[$question['id']][$variant['id']][] = $scale['name'] и ошибки нет, даже если $res = [], js же ругается, если подмассив не определен. Вроде ситуация тривиальная, но тривиального решения не нахожу, кроме как каждый раз проверять на undefined
stay
не совсем понимаю как это поможет, как я понял, это используется если необходимо сохранить промежуточный вариант при переборе, но мне нужно полностью массив переформатировать и промежуточный вариант вроде как не нужен, в php это делается просто через $res[$question['id']][$variant['id']][] = $scale['name'] и ошибки нет, даже если $res = [], js же ругается, если подмассив не определен. Вроде ситуация тривиальная, но тривиального решения не нахожу, кроме как каждый раз проверять на undefined
Есть в js способы сделать это продуктивнее и с большей проихводительностью. Но мне, сори, лень сейчас копаться, чтобы продемонстрировать.
А в твоей реализации, да. В JS нельзя обратиться к свойству сущности, которая не определена
Условно
let a = undefined
console.log(a) // undefined (ошибки нет)
console.log(a.someProperty) // будет TypeError: ошибка
Syntax Highlight Bot
Anonymous
А можно ли как-то вызывать функцию из скрипта, встроенного в сайт? Имеется в виду не из поля script, а, допустим, я открыла левый сайт, вижу что там запускается одна функция. Вот её могу я как-то запустить?
stay
Igor
stay
может есть какие то ArrayHelper библиотеки которые чаще всего используют в работе?
Нет, таких штук я не наблюдал. Массивы в js это очень интересная штука.
Они являются фанкторами и позволяют творить с собой просто сумасшедшие вещи, если немного разобраться в их методах и чуть освоиться в функциональном программировании на js.
Самым лучшим для тебя будет разобраться с частью из этого сразу. Начинай отсюда.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
Igor
Paul
не совсем понимаю как это поможет, как я понял, это используется если необходимо сохранить промежуточный вариант при переборе, но мне нужно полностью массив переформатировать и промежуточный вариант вроде как не нужен, в php это делается просто через $res[$question['id']][$variant['id']][] = $scale['name'] и ошибки нет, даже если $res = [], js же ругается, если подмассив не определен. Вроде ситуация тривиальная, но тривиального решения не нахожу, кроме как каждый раз проверять на undefined
В твоём примере стоит задача не переформатировать массив, а создать новый объект и заполнить его с нуля. В пхп ассоциативные массивы похожи внешне на обычные объекты в js, что может слегка сбивать с толку, потому что в js массивы и объекты ведут себя по разному
Paul
В пхп можно налету создавать массив и класть в него значения, даже если ключей для этих значений ещё не существует
Paul
В жс же нельзя положить что-то в объект, если этот объект не был создан в явном виде, отсюда и ошибки с undefined
Paul
Поэтому, проверки на undefined это нормальное явление и не нужно их бояться
Igor
Paul
Можно не писать if (x === undefined) ..., а сразу писать if (!x) ...
Paul
Можно запариться с .reduce (), но от этого порой все только сложнее выглядит