Это копия, сохраненная 23 мая 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Часто задаваемые вопросы:
https://github.com/xxxwww/js-thread/blob/master/Wiki/faq.md
Список материалов для изучения:
https://github.com/xxxwww/js-thread/blob/master/Wiki/learn.md
Список инструментов и направления JS-разработки:
https://github.com/xxxwww/js-thread/blob/master/Wiki/tools.md
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsfiddle.net/ для браузерного кода и https://ideone.com/ для серверного кода.
Что лучше освоить? или лучше освоить весь MEAN-stack ?
Теперь он с историей
http://embed.plnkr.co/F43HoAkCaQ8re2Jgqqig/
Иди гуглить. Если ты не можешь сам найти ответы на эти вопросы, то погромировать ты точно не сможешь
я все равно как неуловимый Джо
такое делает студент программист на 1ом курсе в 1ом семестре 1ой недели
ну и к чему ты это сказал?
Там есть один баг, мне его впадлу пофиксить, уже неактуально. Может, потом.
http://artemperchyk.github.io/Solitaire/ диванон лигивон
Ну это нормально, там не проверяется раскладка на "проходимость". Как и в реальном пасьянсе.
Знаю, что в некоторых реализациях это запилено, но хуй знает, как.
калькулятор не понравился, оче много багов
правда я охуел от того сколько там файлов, я даже не знаю что большинство из них делает
Калькулятор был запилен за два дня на коленке, я там нихуя не дебажил толком.
Файлы - ну там я по неопытности захуярил в одну папку и чай с моккой для тестов, и бутстрап, который вообще там не использовался, ну ты понял. Там только три файла плюс тесты собственно моего кода.
Сапер тоже недопиленный, я, конечно, понимаю, что я показываю себя ленивым пидором, но мне это задание страшно не понравилось и я его сделал тупо для галочки.
ты где такие ебанутые задания находишь?
>>737897
а зря, проще всего логику написать, а самое интересное начинается потом
ah ty peedor
все как у людей
Из стопки можно снимать карты обратно и перекладывать на борду. Стопка - считай, стэк.
Возможно, я просто очень сильно туплю, но ведь реализация стопки у меня точно такая же, как и во всех виденных мной реализациях (про вариацию с тремя картами не говорим, речь не о том).
Т.е. клацнул, открыл карту, есть куда перенести - перенес, нет - клацнул на другую карту и так пока всю стопку не прокрутишь.
Хотя вообще там всем рады, справа можешь заметить флаг бульбобратьев.
Я какой-то тупой, объясните где здесь найти задания по JavaScript на этом сайте (мне сказали что искать там)?
Раздел "Тесты знаний" - не то.
>2016 год
>Убогий неформатируемый Math.random
>Убогий неформатируемый Date
Оправдывайтесь, петуханы.
Ааа, теперь понял.
Если честно, мне это в голову вообще ни разу не приходило. Причем там еще сделал для простоты так, что карта при перетаскивании на один из четырех верхних дивов просто исчезает, а див получает ее бэкграунд.
Возможно, когда руки дойдут, переделаю а сейчас ангуляр учу
Спасибо
.
Кстати, анончики подскажите, лучше начинать изучать JS по книге "Выразительный JavaScript" или на learn.javascript.ru? Кому где было легче?
Просто в любом случае скорее всего и то и другое буду читать, просто нужно именно то что легче понять поначалу. ^-^
>сделать, что-то подобное
лол
эту игру делала студия из нескольких человек больше двух лет
там программирование вообще дело десятое
А на пет проектах вовсе по 100-200, если каждый день писать, но там трудно посчитать из-за длительных перерывов между сессиями.
Кто имеет дело с коммерческим продакшеном, какой, в среднем, аутпут в день?
Разве это всё напрямую не зависит от сложности кода? Ты же блять вроде как не на конвейере помидоры проверяешь, зачем продуктивность сравнивать?
Лол, какая нахуй сложность кода в вебе. Мы тут не софт к автопилотам пишем, 90% задач логически однообразны и решения варьируются от стака к стаку.
Какая разница сколько лет они ее делали. Меня интересует как сделать подобное?
А что тебя смутило в вопросе? Почему ты агрессивный?
Найти команду, подождать чуть больше двух лет.
Захотел на досуге заняться js, решил делать простенькую игру с мультиплеером.
Вот я начал с того, что посмотрел несколько книжечек и видео о node.js, но теперь вопрос:
1. Как организовать передачу данных в RT игре?
Передавать клиентам информацию о статусах всех объектов или только то, что изменилось с последней отправки и сделать в клиенте функцию, которая перерисует динамические элементы?
2. Как лучше взяться за примитивную графику типа бегающих кругов? Изучать create.js и подобные или можно обойтись?
3. Как сделать так, чтобы было несколько игровых комнат и как лучше отличать игроков друг от друга?
Всё, что касается реал тайм, комнат и игроков - socket.io. По поводу примитивной графики это зависит от того, насколько она, собственно, примитивна. Есть много геймдев движков, где реализована базовая физика и прочие няшности.
Ну в юнити и в других движках js есть как язык для behavior-скриптов, запросто можно делать. Только с 2d на юнити немного туго как по мне ну я немного тупой.
Я сокет уже изучаю, но ещë не додумался до логики передачи данных в онлайн-играх, в смысле каждый раз передавать абсолютные координаты или движения? Не могу на глаз оценить, какие нагрузки могут не создавать лагов и какая будет задержка между обновлениями.
Ну я сам так-то писал только статичные игры, тобишь морской бой там, такое. Но я думаю, что
>каждый раз передавать абсолютные координаты или движения
по другому никак, если у тебя реал тайм обновления. По поводу нагрузок я бы не переживал особо, джс довольно быстрый язык и реальным ботлнеком в простой игре будет только коннект, который ты контроллировать не можешь всё равно. Я читал как-то статейку, кстати, где чувак описывал как на сокетах хендлить возможный делей. Но это оптимизация.
риал тайм -> udp. udp -> потери. Потери -> только абсолютные величины.
Полагаю, самих играх обычно делаются всякие интерполяции, чтобы игрока не "телепортировать", а именно подвинуть, со всеми вытекающими коллижнами и т.д.
Но я диванный, тоже только статичное делал, а риалтайм в качестве эксперимента лишь поигрался маленько.
>>738086
Коннект коннектом, но какие-то умные и магические алгоритмы для оптимизации всего этого есть.
А что изменилось?
Фотограф рукожопый - это мы вместе фоткали себя на зеркалку, лол, поэтому так.
А вообще тут не оцени тян тред, заебали.
В самом запросе названия нет, оно по айдишнику берётся, т.е. мне со стороны нужно его впихнуть как-то.
Хахол ебаный, на курсы он ходит, безмозглое животное, самому не дано видимо чему-либо научиться, уёба
Вот это тщеславие
Мне нужно передавать одному агрегированному объекту метод другого с собственным контекстом как коллбек. Тут лямбды не помогут.
Я думал, может нейтив есть что-то.
var MessageComponent = React.createClass({
render: function() {
return (
<div>{this.props.message}</div>
);
}
});
А другие так:
var MessageComponent = function(){
return (
<div>{this.props.message}</div>
);
}
И то, и то называют созданием нового компонента, но в чем разница-то блять? Это одно и то же?
Именно в твоем случае - да. Второй вариант это просто функциональный вариант простой компоненты, которая только отрисовывает что-то беря из пропсов.
Что я делаю не так?
Настрой сервер чтобы он слушал на 0.0.0.0:3000
А почему бабель выдает результат jsx то в кавычках, то без в зависимости от того, с большой ли буквы написан "тег"?
Например
ReactDOM.render(
<messageComponent message="Hello!" />,
document.body
);
Бабель выдал в кавычках:
ReactDOM.render(React.createElement("messageComponent", { message: "Hello!" }), document.body);
А если написать
ReactDOM.render(
<MessageComponent message="Hello!" />,
document.body
);
Бабель выдал без кавычек:
ReactDOM.render(React.createElement(MessageComponent, { message: "Hello!" }), document.body);
Если с маленькой, это типа хтмл-тег должен быть что ли? А с большой какой-то компонент?
В JSX все что с маленькой буквой то считается html тэгом. Реакт компонента должна начинаться с заглавной.
https://gist.github.com/sebmarkbage/f1f4ba40816e7d7848ad
Надо кароч в спеки заглядывать иногда, а потом бочку катить.
https://facebook.github.io/react/docs/jsx-in-depth.html
Go работает быстрее, чем нода. Зачем оправдываться? Сколько ты кода написал на go? На нем писать сложнее, чем на js.
Не нужно, очевидно.
Это не значит на нем писать как-то легче.
Какого хуя в es6 классах нет ебучих полей.
Почему я должен выебываться с инициализацией поля каждому объекту и тратить память, если он мне нужен в прототипе. Или писать в прототип в обход сахарной конструкции. Зачем она вообще нужна тогда?
Я не понимаю, что помешало позволить писать
class {
ololo: 'some string'
static kokok: 100
}
В чем смысл ограничения то?
Поставь typescript. Можно писать и без типов, зато будет так, как ты хочешь. Транспайлится все так же.
Я знаю, что можно поставить, чтобы было.
Меня интересует, что сподвигло отказаться от этого в спеке. Это же вроде ничему не помешало бы.
Паттерны go не примитивные.
> Сколько ты кода написал на go?
Каждый день пишу на работе на go.
> На нем писать сложнее, чем на js.
Лично мне - нет.
где-то тут есть ветка ниасиляторов лол, нода ахуенная.
где-то тут есть ветка ниасиляторов лол, нода ахуенная.
А ты ссылку дай на "обоссывание".
Как по-вашему, какой путь для типизации более приближен к концепции js?
Имеющиеся кандидаты:
1. TypeScript style
>function (arg: Type)
2. Decorators (пример для примера, там можно что угодно придумать, суть в самих декораторах)
>@typeCheck {arg: Type}
>function (arg)
Проверять типы через декораторы это костыль, а не сами декораторы.
Тайпскрипт это не костыль вообще, это компилируемый в жс язык, каких сотни тысяч уже.
олдфаги юзают эмакс
Если проще говоря, очень часто говорят про различное легаси в архитектуре языка. Что именно? Что бы вы выкинули?
Что добавили? Что сделали иначе?
Он считает что ты объявляешь функцию внутри цикла. У тебя свитч не в цикле случаем?
А нахуя ты объявляешь массу одинаковых функций в качестве листнеров. Ты больной?
>div.querySelector('.memoryElem').querySelector('.memoryAnswer')
Умоляю, скажи честно, ты болен чем-либо или ты не умеешь в селекторы?
У тебя же ебанистический оверхед всюду.
>div.querySelector('.memoryElem .memoryAnswer')
работает, спс
>ну это понятно, только зачем, если эти функции только там нужны
Ты не понимаешь, что ты в цикле создаешь МНОГО ОДИНАКОВЫХ ФУНКЦИЙ. Каждая занимает память, при этом каждая функция идентична.
Ты действительно не понимаешь?
>только зачем, если эти функции только там нужны
В твоей квартире есть дверной звонок и дворецкий должен открывать дверь каждому гостю, позвонившему в этот звонок.
Вместо того, чтобы использовать одного и того же дворецкого, ты нанимаешь по дворецкому на каждого гостя.
Вот что ты делаешь.
__proto__ свойство объекта, указывает на его прототип.
2ch.__proto__ то же самое что Object.getPrototypeOf(2ch)
нежелательно использовать __proto__ это моветон. Его впилили в стандарт только потому что это было недокументированное свойсвто поддерживаемое всеми браузерами, а появилось в них, раньше рефлекии. Для доступа к прототипу используй специальные функции. Тем более что __proto__ обычное поле и может быть переопределено.
prototype свойство конструктора, описывающее прототип для будущего объекта, который конструрирует твой конструктор.
О, так понятнее, сяп!
Vim.
Какая-то истеричка не может понять, что все языки - говно и надо просто пользовать что есть.
prototype - для конструктора.
в нем хранится то же самое, что ты получаешь потом через __proto__
Только прото ты используешь из готового объекта,
а прототайп с другой стороны, еще до инициализации объекта.
конструктор это тоже объект, и унего есть свой прототип.
constructor.__proto__ и constructor.prototype это разные объекты, это надо понимать.
бамп?
>Как можно передать браузеру имя файла без дополнительных запросов со стороны клиента
Никак, представь, что будет, если браузер начнет рыскать по файлам пользователя.
1. где хранить шаблон(хтмл) для этих дропдаунов, так как их надо будет добавлять много.
2. какими методами надо будет сделать связь этих дропдаунов с пользователями, чтобы передать правильную инфу
3. как вставить их в нужное место на странице? Надо будет делать какие то специальные имена классов в которых будет пристутствовать userId?
Лол, каким файлам пользователя. Я просто хочу, чтобы вместе со стримом видео с сервера как-то пришло и его название, чтобы при "save as" или открытии этого видео в отдельно вкладке (т.е. без html страницы, где оно вставлено), это название было видно.
Или так нельзя, и единственный выход это дополнительная кнопка "скачать", которая там будет выставлять нужное имя файла?
> или открытии этого видео в отдельно вкладке
В этом случае имя файла это часть url, что ебешь мозги. Формируй url на сервере.
Никто не будет тебе это объяснять.
Ты не с теми вопросами пришел.
Или иди изучай js или плати деньги, чтобы за тебя решили твою задачу.
Я же написал конкретные вопросы, которые мне не понятны. Подскажи какой нибудь гайд чтобы я почитал и решил эту проблему.
>>738999
Пользователи с бекэнда приходят. Ну и вообще в конце таблицы еще есть кнопочка применить и уже на стороне сервера пользователи будут привязываться к городам. А мне надо туда отправить список айди городов связанных с пользователями, но это я знаю как сделать.
multipart/form-data
Спасибо
Если тебе не нужен постоянный онлайн, то и без хостинга обойтись можно. Например вот так https://localtunnel.me/
var fData = new FormData();
fData.append('key', 'value');
$.ajax({
url: '/url/',
data: fData,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(data) {console.log('response:', data);},
error: function(xhr, status, err) {
console.error(xhr, status, err.toString());
}
});
Я это делаю так.
Что значит "надо", тебя что палкой пиздят и заставляют говнокод писать? Помимо прочего, если ты собираешься использовать резалты аякс запроса внутри этого компонента, то ты получишь охуенный рекурсионный фейл.
Ты объясни зачем тебе эта вакханалия, мне просто интересно что у тебя за юзкейс такой.
Юзкейс называется ньюфаня пишит говнокод чтобы закрепить знания о реакте.
Алсо, спасибо что поясняешь
Если у тебя нету стейтменеджера какого-то, т.е. флакс реализации какой-то (редакс, альт, рефлакс, етц) то ты используешь локальный стейт компонента, т.е. this.state = { key: value }, ну или getInitialState() если ты не как порядочный человек классы объявляешь. Твой компонент загружается, ты в componentDidMount() вызываешь свой аджах, success = (response) => this.setState({value: response}). И других вариантов особо нет, рендер занимается исключительно отображением данных.
[5,1,2,6,12,1,64,13,7,15].forEach(function (num) {
setTimeout(() => {console.log(num)}, num*5)
});
Я так и делаю, спасибо
Но могу ли я вызвать componentDidMount() для отправки нового запроса чтобы стейт обновился и компонент получил новые данные?
>[5,1,2,6,12,1,64,13,7,15].forEach(num => setTimeout(() => {console.log(num)}, num*5));
Взялся писать нормальный джс, пиши до последнего.
Буду на собеседованиях ее хуярить.
Для этих целей есть специалные хуки в лайфсайкле компонента. Как-то componentWillUpdate, componentWillRecieveProps и иже с ними.
Вот почитай, даже если с английским плохо, тут не много.
https://facebook.github.io/react/docs/component-specs.html#lifecycle-methods
Любое обновление стейта через setState вызывает ре-рендер компоненета. Если тебе новые данные нужны по таймауту, скажем апдейты раз в минуту, то ты просто можешь в CDM (didMount) установить setInterval() и получать апдейты регулярно. А если по юзер реквесту, то ты делаешь отдельный метод, например getUpdates(), не забываешь его биндить в конструкторе this.getUpdates = ::this.getUpdates, и по клику на нужные тебе элемент, onClick={this.getUpdates} ты выполняешь нужный тебе реквест на апдейты.
>А если по юзер реквесту, то ты делаешь отдельный метод, например getUpdates(), не забываешь его биндить в конструкторе this.getUpdates = ::this.getUpdates, и по клику на нужные тебе элемент, onClick={this.getUpdates} ты выполняешь нужный тебе реквест на апдейты.
Вот про это я и спрашивал, большое спасибо
num+1 - это считай num, точность будет низкая. 1 ms разницы может не хватить, чтобы вывести предыдущее число.
[1, 1<<30]
>[5,1,2,6,12,64,13,7,15].sort((a, b) => a - b)
problems weren't.
[5,1,2,6,12,64,13,7,15].sort()
> [5,1,2,6,12,1,64,13,7,15].forEach(num => setTimeout(() => {console.log(num)}, num*5));
Зачем фигурные скобки вокруг console.log? Мы вам перезвоним, в общем.
Я лениво фиксил его трилайнер.
function sum(x = 0, y = 0) {
return x + y;
}
Все транспайлят es6\7 уже давно.
myFunc(x instanceof Array ? ...x : x);
так как ...x не может существовать "самостоятельно"
Я имею ввиду кортеж в луавском смысле, не в питоновском.
Ну, кроме фейсбуковских доков.
> data && data.pos && data.pos.x
хотя бы в теле условия?
Кстати, от него же вроде как-то хотели избавиться в ES7?
спасибо, хорошо объяснил
В chromium уже давно
for-of довольно новый стандарт. Если нужна совместимость со старыми браузерами, юзай i = 0; i < ...
Я на нем и пишу, лел.
ясно, спс
Скомпилированными образами.
>убьёт JS
Он скорее его дополнит, у них разное применение.
Хотя было классно, если бы любой язык мог компилироваться в него и все бы освободились от JS-папаши.
Он ничем не отличается же.
Выполнение не ускорится. Ускорится лишь парсинг, потому что wasm - суть ast
Исполняться будет в той же vm, как и обычный js
При этом wasm слишком низкоуровневый, ив него еще даже не завезли работу с объектами.
А это значит что к окружению не подцепиться, пока еще.
С тем же успехом можно и сейчас транспайлить из других языков в js, максимально оптимизируя код по asm.js
Это одно и тоже.
wasm не приносит ничего нового, чего нет или не будет в обычном js
>Выполнение не ускорится.
Если не считать что жс - тормозное говнище, которое даже v8 не вытаскивает, то да. На практике - нет, такой хуиткой можно будет достигнуть перформанса явы.
Чтобы не истекали говном, оставлю стандартно http://benchmarksgame.alioth.debian.org/u64q/javascript.html
Вам дебилам куча прайм пипл, с учетом самих создателей wasm твердит что у них разные задачи, но видимо бестолку.
Дурачек.
wasm ничего не ускорит.
пиши оптимизированный код сейчас, и будет тоже самое.
По факту все ждут не wasm а оптимизирующих компиляторов. Потому что сами писать не умеют.
А wasm для этих самых компиляторов.
wasm это блядь просто AST
>пиши оптимизированный код сейчас, и будет тоже самое.
Дай мне возможность не вычислять типы в рантайме и ебаться с указателями как в плюсах вместо копирований на каждый пук - напишу.
>wasm это блядь просто AST
Это в первую очередь возможность эскейпнуться от сборщиков мусора, юзать многопоточность и писать то, что жс не позволяет.
Потому что ему пичот. Раньше можно было сказать - да, интерпритируемый, не корректное сравнение. Теперь он так же компилируется в байткод, но ему не помогает.
>Это в первую очередь возможность эскейпнуться от сборщиков мусора, юзать многопоточность и писать то, что жс не позволяет.
Ты поехавший?
Этого не будет.
Эскейпиться от GC ты и сейчас можешь, используй типизированные массивы.
>Дай мне возможность не вычислять типы в рантайме
wasm их так же будет вычислять в рантайме.
Ты плохо понимаешь что такое wasm похоже.
>не вычислять типы в рантайме
>эскейпнуться от сборщиков мусора
>юзать многопоточность
>писать то, что жс не позволяет.
Представил твою фрустрацию, когда ты выйдет wasm.
Спасибо. Ты сделал мой вечер.
Двачую этого. Этим дебилам уже в шапку вынесли ответ на вопрос, но они продолжают сравнивать васм и жс. Давайте ещё питон и свифт сравнивать.
>не вычислять типы в рантайме
Всегда будет.
Для статической компайл-тайм есть препроцессоры.
>сборщиков мусора
Пили поверх типизированных массивов свои типы данных. Там тебе голая память, на здоровье.
>юзать многопоточность
Она предоставляется окружением. В браузерах есть webworkers
У ноды нет и не планируется многопоточности, откуда wasm ее возьмет по-твоему?
У ноды есть модули реализующие кластер из процессо.
>писать то, что жс не позволяет.
WebAssembly не даст писать ничего, чего не позволяет писать js. Он даст лишь иной синтаксис, для представления скриптов, удобный машине,а не человеку. Всё.
Падажжи, ты сравниваешь жс-движок с виртуальной жава-машиной? Ты вменяемый?
Пиздец, какой же ты мудак блять. Почему, сука, вы не учите основы веба, как он работает, а сразу лезете в жс? А? А? Пидоры
p.s. Я к тому, что будет ли возможность представлять исполняемую в браузере огику каким-то байт-кодом, а не человекочитаемым скриптом и не уродливым обфускатом.
логику
И что ты пять лет делал, формсы на жквери отправлял? С тру-5-летним стажем ты б такую хуйню не спрашивал
wasm это AST
он читается человеком.
И потом, wasm манипулирует все теми же сущностями vm. А vm управляется из рантайма. Так что, что можно будет хакнуть, как и прежде, не беспокойся.
Пикрелейтед, то как wasm будет выглядеть для человека, например в дебаггере.
Нет. Это ближе к LLVM IR.
От лиспа там нет ничего.
Это именно ассемблер.
Только не для твоего нативного процессора, а для js-engine
Нет.
Из asm.js разве что.
Но если бы ты мог писать asm.js руками, то и wasm сможешь писать руками.
Компилятор это ты.
Если ты пишешь ебанистический код, где в циклах создаешь замыкания, и ебашишь метапрограммированием повсюду. То в какой бы wasm ты чего не переводил - ничего не измениться.
Так они ничем не защищены же.
Это тот же asm.js ином представлении.
Из wasm легко переводится в js
А уж деобсфукация js
это сам понимаешь, зависит от объема и логики.
Нет, разница всё-таки есть. Ты сложную программу и на С++ (asm), и на Java (байткод) заебешься восстанавливать из каши, которая получается после компиляции. Почему такого же не сделать для JS.
Чтобы перевести из JS в WASM, тебе надо преобразовать свой js код в asm.js совместимый. А для этого придется отказаться от многих вещей, и использовать лишь надможество js.
А вот из WASM в JS (asm.js) переводится легко.
Так с тем же успехом, ты можешь защищать сейчас свой код, если будешь писать на asm.js
Это тоже самое.
В эту парашу должно быть легко скомпилировать многие языки, например. Сейчас всякие дарты компилятся в JS, а будут сразу в это.
Для упрощения написания компиляторов из других языков.
Но, не принося никаких фич из этих других языков, которые нельзя бы было реализовать на js
Сейчас все компилится в asm.js
wasm это тоже самое.
Только ужато до байткода.
Ускорение только на уровне парсинга исходного файла. Все.
Только при желании.
WASM даёт возможность писать браузерные клиентские программы не только на JS. Отсюда и опасения, что JS-у хана.
Но возможностей никаких не будет, сверх тех, что и так доступны из js
Будет гонка компиляторов в wasm из разных языков, очевидно. Как бы только JS тут не отстал.
>Как бы только JS тут не отстал.
Пока все будут придумывать как им изъебнуться чтобы представить свои стипы и стркутуры из других языков, в типы и структуры на js, в то время когда в js они уже представлены?
Конечно, как бы не отстал, да..
Все думают что вот будет, кококок.
Суть в том, что wasm не приносит никаких новых возможностей, для того, чтобы компилировать из других языков в js.
Это уже сейчас можно делать.
Например есть emscripten. Он и останется, только на выходе будет байткод.
Если бы кому-то надо было компилировать в js Хаскель\руби\го\питон\етк, то и компилировали бы уже давно.
Но никому не надо.
А если и есть какие-то поделки, то они все тянут с собою ебанистические рантаймы, и ими никто не пользуется в серьез.
Все так и останется.
Wasm нужен именно для компияторов. ЧТобы использвовать их оптимизации при алгоритмах с числодроблениями например.
Алсо, вместе с wasm придут расширения спеки, типа совместимых дататайпов с низкоуровневыми языками, или SIMD
Но пользоваться ими можно будет и из js
Те кому и сейчас нужны оптимизации и так пишут оптмизированный код, и задействую всякие ништяки типа TypedArray которые есть уже давно.
Поддвачну пожалуй.
>Мне очень нравится js, все, за что его не любят программисты других языков, для меня наоборот манна небесная.
На твой взгляд, есть вещи которые ты бы исправил? Может что-то выкинул бы как лишнюю сущность? Может что-то добавил, а что-то реализовал бы иначе?
В новом JS появился новый пиздец: паттерны наподобие Array.prototype[Symbol.iterator]. Раньше нубов пугали с помощью [].slice.call(arguments), теперь будут вот этим.
Ну Array.prototype[Symbol.iterator] это метауровень, это полезно и нужно, а [].slice.call(arguments) простое делегирование.
>а [].slice.call(arguments) простое делегирование
по-моему, главная уловка в том, что новички не знают о ебанутой природе объекта arguments, который не массив, но с параметром length.
Это описывается в каждом учебнике.
Так что если какой-то новичок этого не знает, то он какой-то странный новичок.
Уловкой тут было бы правильно назвать, что конструкция
>[].slice.call(arguments)
на каждый вызов будет создавать экземпляр объекта
И вернее использовать Array.prototype,slice.call
Это разумеется мелочь, и в отдельных случаях экономия на спичках. Но выходит так, что опуская подобные мелочи в самом начале, люди во-первых не до конца понимают архитектуру языка, а во-вторых приучаются писать плохой код, потому что во-первых.
То же самое с замыканиями и прочими вещами.
На хеллоу-вордах, много замыканий не страшно разумеется. Но им кто-то видимо говорит это так. что это нес страшно вовсе, потому как потом они запиливают эти замыкания в циклах, на каждый чих и все такое прочее.
Переучиваться потом сложнее, чем понимать сразу.
К слову слайсить arguments тоже нет необходимости всегда, а только лишь тогда, когда тебе нужен этот аргументс полностью как массив. Но я часто видел, как люди слайсят его и просто, чтобы например получить последний аргумент (зачем-то).
Печально то, что многие не вникают в суть той или иной конструкции, да.
Не знаю, зачем его слайсят всегда, создавая новый объект, когда можно просто заменить прототип
>Object.setPrototypeOf(arguments, Array.protytype
)
Не он, но отвечу.
Добавил бы статическую типизацию и расширенный ООП уровня шарпа. Тайпскрипт идеален, жалко его нужно компилировать и пока нет движков, выполняющих его напрямую.
А быстро ли будет он напрямую выполняться со всеми этими проверками?
В чем проблема компиляции? Тот же шап, нужно компилировать в IL, который выполняет CLR, тот же механизм ts->js->browser/node.
SystemJS, кстати, может загружать .ts файлы, и компилировать их уже в браузере.
Аргументы.
Найти и закомментировать код, который заставляет курсор перескакивать, лол.
Если я перепиливаю весь рантайм, меняю прототипы у встроенных объектов и все такое прочее. Есть ли вероятность того, что где-то какой-то метод завязан на метод встроенного объекта, а не использует его через какую-то внутреннею ссылку?
Проще говоря, если я например переопределю Array.prototype.sort
Есть ли вероятность что сломается какой нибудь Element.prototype.someMethod ?
(речь только о встроенных объектах)
Используй === вместо ==, когда тебе не нужно приведение типов.
У тебя много таких вещей, как например
if (memoryList.style.display) {
memoryList.style.display = ..
}else{
memoryList.style.display = ..
}
Каждый раз, у тебя запрашивается сначала объект memoryList потом memoryList.style а уже потом поле memoryList.style.display
Вместо этого вынеси один раз memoryList.style в переменную и уже дальше используй style.display
спс, учту
Алсо, в цикле у тебя там memoryButtons.children.length
Проверяется каждый раз, хотя количество кнопок статично.
Зачем?
опять же выноси в переменную. Не дергай объекты каждый раз, тем более children возвращает живую коллекцию
Приучайся писать оптимизированный код сразу.
Пытайся понимать, что ты делаешь, каждый раз, чтобы понять, где ты что-то делаешь не хорошо.
Спасибо, решил проблему. Следующий вопрос, необходимо по комбинации shift+enter не слать сообщение в чате, а переходить на следующую строку в чате. Как сделать?
Отлавливаешь нажатие на клавишу (enter)
и в обработчике смотришь не зажата ли при этом shift
Посмотри в консоли на event который передается в обработчик, там вроде даже есть специальный флаг зажата ли shift
jquery потому и советуют, ибо он проще ванили.
Но это не тру, начинать не с ванили.
Все правильно делаешь.
да наверное, если заюзать жиквери и всякие библиотеки, то код станет в 10 раз короче
Сейчас ваниль на том уровне, когда и на ней можно писать не длинее жиквери.
тут поддвачну, с начала месяца читаю Кантора там же все это есть. Какие-то тупые новички раз в элементарное не въезжают
А я бы ничего бы не менял. Js вполне логичен, если сесть и разобраться в нем самом, а не сравнивать с другими яп и тем как привык, как не привык.
Но мое мнение никому не интересно, поэтому и выходит что могу на двачике только его писать
А меня например коробит, от нововведеной конструкции class которая не нужна, а еще от испокон веков поведшейся концепции хранить конструктор отдельно от прототипа.
Должно быть что-то типа
Object.new () {
return Object.create(this)
}
Как раз это бы было максимально логично.
И так, чтобы инстансить можно было любой объект. А если в нем не прописан конструктор, то возвращается именно Object.create(this)
>меня например коробит, от нововведеной конструкции class которая не нужна
Недавно переделал все фабрики в своём nodejs-проекте под class'ы - код стал намного чище. Стало можно без изворотов делать многоуровневое наследование.
class Creature {}
class Feline extends Creature {}
class Lynx extends Feline {}
Запиши это без классов.
Я тебе тоже самое могу сказать.
Запиши мне с помощью class
В прототип поле field со значением true
Или в статик поле запиши?
А наследование реализуется как и прежде. Только раньше можно было запилить удобную обертку, и она бы не выбивалась из общей концепции. А этот сахар новомодный, как раз выбивается, потому что он не повторяет поведения.
http://elm-lang.org/blog/farewell-to-frp
Жаваскриптаны, оцените хуйню которую я написал на жкверях.
https://jsfiddle.net/Lk7w309j/
Код вначале скрипта - плагин на колесо мыши (не нашел как иначе добавить), дальше мой. Сносно или пиздец?
>>739644
Господи, все эти дилетанты, которые абсолютно не понимают как работают браузеры, которые абсолютно не понимают зачем и почему есть жс. Кичиться какими-то бэнчмарками, но не знать про то, что бОльшую часть времени выполняются рендер, обращения к дому и к прочим браузерным апи.
Прежде чем открывать рот, хоть вот это посмотрите.
https://www.youtube.com/playlist?list=PL7664379246A246CB
>в тестах тестируют node js
>но не знать про то, что бОльшую часть времени выполняются рендер, обращения к дому и к прочим браузерным апи.
>все дилетанты
Подмойся.
Я про отсутствие фундаментальных знаний. Вот и ты не понимаешь как нода работает, поэтому бэнчмарки как показатель ПРОИЗВОДИТЕЛЬНОСТИ можешь засунуть куда подальше вместе с:
> transliterated from Mike Pall's Lua program
> transliterated from Rick Branson's Ruby program
Я все прекрасно понимаю. Но спорить с персонажем с завышенным ЧСВ, который не предоставил опровержения бенчам (хотя ведь если он такой всезнающий, для него бы не составило труда переписать тест под ноду, и доказать свою правоту по в-рослому, а не кукареканиями - вы врееетии) и поклоняется каким-то аффторитетам, типа Крокфорда. О чем с тобою говорить.
Авторитетов не может быть вообще.
Данные, которые находятся в теле, довольно предугадываемые. Что мешает злоумышленнику, зная вход, выход и алгоритм, подобрать наш секрет и подписывать себе админские токены?
А почему не все тесты в ноде мультипроцессорные? Не чесна так!
Самое простое - отксорить. Конечно, с hmac не пройдет, но первая интуитивная мысль - почему бы и нет?
Сейчас читнул SO, говорят, можно только брутфорсом.
>Сейчас читнул SO, говорят, можно только брутфорсом.
В том то и дело, ты представляешь себе возможным брутфорсить JWT токен со сроком годности? С учетом того, как легко присечь подобного рода брутфорс, заморачиваться на эту тему не стоит.
Да это понятно, я думал, вдруг есть что-то, кроме брутфорса.
>легко присечь подобного рода брутфорс
А вот это не правда. Перебор на клиенте же.
>Перебор на клиенте же.
Ну будешь ты с клиента машины спамить, как это помешает серверу контроллировать токен спам?
Мы на сервер ничего не передаем.
Подбираем секрет, пока не сможем верифировать наш же токен.
Интересно, я наверное просто не в теме, я помню читал статью про client side bruteforce и она по сути сводилась к тому, что это стандартный брутфорс, просто ты не отсылаешь токены через кукисы атакующей машины, а используешь клиента для выполнения атаки. Я не совсем понимаю, как ты без сервера узнаешь что токен прошел верификацию, когда сам факт верификации объявляется сервером?
Так верификация это просто декодирование, используя входное сообщение, алгоритм и секрет.
Делаем hmac_decode, пока не получим выходной json.
Конечно, есть вероятность коллизии, что hmac_decode(secret1) = hmac_decode(secret2). Но мы даже до нее вряд ли сможем забрутить.
мимопитонист
думаешь, тебе тут готовый скрипт напишут?
я блять не представляю даже где у тебя сложность возникла
та не готовый скрипт, а что делать вообще
как из html таблицы массив сформировать, как потом xml из него создать
Ну не будь мудаком.
http://stackoverflow.com/questions/11383236/how-to-output-html-form-data-to-a-xml-file-using-javascript
>>740290
У тебя там проблема в том, что ты пытаешься взять p по классу, а у него по факту id: p.hui => p#hui.
блё, я так и знал, что в какой-то мелочи лоханулся. Спасиб
Спасибо!
Почитай про jwt. Сервер даже не хранит токены.
https://youtu.be/YJNUK0EA_Jo?t=938
Это что значит, если что-то пилишь на реакте, нельзя на эту вещь одновременно как-то другими штуками влиять?
Бамп же
Но реакт тогда пробется и не сможет отслеживать изменения дома извне? Или сможет?
Ну например для жеквери уи
Окей,я поставлю вопрос иначе.
Если менять дом в обход реактовского вдома, например используя ванильные методы - то вдом теряет смысл, верно?
Пока мне это все вообще нахуй не надо, но предупрежден значит вооружен и все такое.
Да. Плюс это еще ебет в рот смысл реакта как инструмент для однообразного отображения куска дома из определенного стейта.
Это значит, что реакт монополизирует ДОМ.
Если кто-то написал что-то на реакте. А потом кто-то захотел, что-то допилить, не затрагивая всю архитектуру (добавить ебаных снежинок, лол, не суть что). То это все пойдет по пизде?
Во времена библиотек, такого не было.
это значит что снежинки тоже на реакте надо пилить, и мы тихонько подходим к мысли что тот, кто не знает реакт, будет беспомощный лох.
Ну конкретно для снежинок добавим ветку в дом, которая будет на том же уровне что и корень реакта.
>>740534
Это означает именно монополизацию.
То с чем так долго боролись, по типу модификаци нативных обхектов, расширения\изменения нативных прототипов и все такое прочее, что мешало бы в проекте использовать сторонние модули, или дополнять проект не зная third_party библиотек.
Все это вылезло в ином месте.
Я бы не рассматривал это как что-то ужасное.
Времена, когда надо было добавлять свистоперделки на свой сайт на народе уже давно прошли. И для задач простого представления информации давно уже придумали кучу элегантных решений.
Но сейчас то задачи сводятся к другому, люди хотят видеть полное приложение, к чему хтмл и дом приспособлены очень плохо, они не создавались для этого. Для этого и придумывают такие вещи как виртульный дом, и реакты, чтобы создать некую систему взаимодействия и это не предусматривает кучу костылей.
В любом случае стек и инструменты это твой (или твоего начальства) выбор.
>будет беспомощный лох.
Если я заказываю проект, с учетом того, что правок в его архитектуре не будет, но я может в будущем захочу допилить там лишнюю формочку, или добавить выпадающую менюшку, а так как я не вау-программист, и мои знания ограничиваются ванилой и джеквери. Я плачу за эту работу, и мне запиливают так, что я потом нихуя не смогу сделать не нанимая кого-то снова - это не круто.
Чтобы починить\заменить вилку от провода, мне не нужно знать физику\электрику.
Чтобы заменить масло или ремень, не нужно быть автослесарем.
> Чтобы заменить масло или ремень, не нужно быть автослесарем.
Если это шестерка твоего бати (веб 2.0), но не если это болид формулы 1.
Парадокс в том, что когда всякого рода монополизацию делали с помощью неразрекламированных продуктов, хотя точно так же отлично документированных. Сообщество взрывалось - да как так можно.
Как только монополизацию произвели корпорации - сообщество проглотило и попросило еще.
>к чему хтмл и дом приспособлены очень плохо
Чем это?
Все тормоза не из-за них, а из-за возможностей которые они предоставляют.
А эти возможности очень широкие.
Если ебашить динамические интерфейсы на какой-нибудь нативной либе, то там тебе придется все примитивы реализовывать самому, и рендерить самому, когда тебе виджетов будет не хватать.
Собственно никто тебе не мешает точно так же делать и в вебе. Например различные онлайн-офисы, не используют для рендеринга дом, потому что это не рационально. Но то же самое было бы и в нативных гуишных либах, точно так же отрисовывали бы на контекстах в ручную.
>>740547
Блять, поехавшие. Шедоу-ДОМ это неофициальный стандарт, который скоро будут поддерживать все браузеры. Второй ангулар тоже в него может.
двачую. совсем уж ебнулись эти джиквери еба погромисты
Это инструменты статичного веба, который еще сам Тим Бернес-Ли придумал. И тормоза от того как костылями с этим борются.
Канвас это тоже костыль.
При чем тут shadow дом и vdom?
Шадоу дом такой же дом, как и обычный. Только со своим контекстом.
А вдом, это легковесная копия, это вообще не дом.
Конечно было. Инструментов меньше в целом было меньше, поэтому менее разношёрстные стаки были, а по сути если у тебя было extjs приложение, то extjs бы ты и писал. Короче ни о чем вискас, я пошел пить кофе.
>Канвас это тоже костыль.
Канвас есть не только в вебе. Тебе браузер все рендерит на собственном канвасе.
Я конкретно про браузерный канвас. И хтимл и всякие его друзья типа хмл тоже есть не только в вебе.
shadow dom - это дом. со всеми вытекаюшими.
вдом - это объект, который только биндится и обновляет куски настоящего дома.
С тем же успехом, ты мог бы сам управлять обычным домом. Но совсеременный программист слишком глуп для этого, ему нужно чтобы кто-то делал это за него, чтобы он не косячил.
Когда shadow dom придет всюду, те кто сейчас не пользуются обычным домом, так же не будут пользоваться теневым. Будут так же использовать такие же прослойки как реакт, потому что с домом они обращаться не умеют.
>Будут так же использовать такие же прослойки как реакт, потому что с домом они обращаться не умеют
А я и не против. Только я предпочитаю думать, что это дополнительный уровень абстракции для удобства, а не я тупой.
мимопроходил
Давай поебемся) я буду нежно и страстно целовать тебя, делать массаж, гладить твою нежную попку и теребить языком соски. Потом войду в тебя, мы сольемся в единый организм, состоящий из оргазма, наслаждения, похоти, чувств, тишины, тоски по детству, низости первородного греха, голубого неба, ветра в поле, ночного костра..затем я поцелую тебя в лоб, прижму к себе и ты укутаешься в мои объятия, предавшись миру Морфия. Я же включу недосмотренный тайтл и добью оставшиеся 5 серий. Выключив ноутбук, я, ощутив тепло твоего тела и услышав размеренное спокойной дыхание, постараюсь уснуть.
[].slice.call(arguments) - это вызов метода slice у array.prototype для преобразования массивоподобного объекта в массив, да? Я недавно js начал изучать
Нужно побыстрее вьехать в D3.js, дайте совет, что ли.
эскобар.жпг
Насколько быстро?
Если есть пара дней, то http://chimera.labs.oreilly.com/books/1230000000345/index.html
Можно ещё плюсик впереди поставить, тоже заработает. Но почему ошибка-то.
Ты пытаешся использовать на ходу анонимную функцию, не присваивая ее никуда, и не используя в качестве колбека.
Скобочный блок возвращает последний результат, поэтому оно будет работать.
А плюсик это вообще приведение к числу так что я хз что там у тебя работает
Советую почитать, как работает консоль и что такое function expression
Ну плюсик приведёт функцию к NaN и вернёт его.
>Ты пытаешся использовать на ходу анонимную функцию, не присваивая ее никуда, и не используя в качестве колбека.
И что?
Ты когда считаешь 1+2 никуда не присваивая, или используешь любой литерал в репле, это же работает.
>Скобочный блок возвращает последний результат, поэтому оно будет работать.
Подтяни свои знания
Во=первых стрелочные функции, а что такое скобочный блок я не знаю.
А во-вторых ()=>{10} не вернет тебе 10
Авто-ретурн работает только для однострочных функций.
Консоль работает через eval
>Скобочный блок
>()=>{10}
Я не про это. Я этот пример вообще не увидел, лол. Я про это (function(){}).
В глаза ебусь.
Ты получаешь ошибку потому что это поведение бессмысленно. Ты создаешь анонимную функцию, не присваиваия ее в переменную и не в качестве коллбека. То есть ее невозможно вызвать вринципе, к ней нет доступа.
Ты в глаза долбишься что ли?
Я присваиваю ее в переменную x
Если следовать твоей логике то eval('100') еще более бессымсленно, но почему-то ошубику не выбрасывает.
Алсо ты проебал момент что eval('()=>{}') работает отлично. а вот с function(){} нет.
так что твое объяснение высосано из пальца.
>бессмысленно
Это твое существование бессмысленно.
Только посмотрите на него.
Изобрели компиляторы, которые оценивают смысл написанного программистом кода.
Да это понятно.
Просто забавное поведение.
Хочется докопаться до причины.
Arrow же пропускает.
Мне кажется либо это arrow забыли не пропускать, либо наоборот, осталось легаси какое-то.
Хотя arrow наверное правильно пропускает, он же на лету оборачивается в bind
Спасибо, годно.
> [].slice лучше не писать, так как создаётся лишний [] только чтобы взять свойство его прототипа.
без >
Забавно, что в npm пакетах которые все используют не глядя хуй клали на подобные оптимизации
https://github.com/juliangruber/isarray/blob/master/index.js
Потому что так и есть.
От подобных петушков всегда проигрываю >>740928. Ноль понимания того, как работает компилятор
Я только начинаю изучать язык и не пойму почему интерпретатор ругается на Break?
while (true);{
var Number = prompt(+"Введите число больше 100",'');
if (Number > 100 || Number == null) break;
else (Number < 100) continue;
}
и?
>Анонсы, нужно было программу написать которая просит ввести число больше 100, а иначе (кроме выхода) будет опять выводить окно и спрашивать.
while (+prompt('Введите число больше 100') <= 100) {}
p.s. Да там полный пиздец вообще.
while (true) {
var number = +prompt('Введите число больше 100');
if (number > 100) break;
}
бля, ну табы вырежешь
Спасибо, ошибка пропала. Потом выдавало новую на счет continue, но мой мозг додумался что это бесполезная хуйня в ЗАМКНУТОМ цикле.
Никакой чертовщины.
Создать пустой объект дешевле, чем запрашивать цепочку из Array > prototype > slice
или по-твоему как поля ищутся в объекте. Цепочка вызова никак не компилируется в одну ссылку, потому что никогда не известно куда будет ссылаться эта цепочка в следующий момент. Язык динамический же.
var Number = +prompt("Введите число больше 100",'');
if (Number > 100 || Number == null) break;
}
Почему-то при нажатии "Отмена" цикл не завершается, хотя в условии прописано, опять туплю.
У тебя в условиипрописано либо болше 100 либо null
А при отмене у тебя возвращается 0, ты же его плсиком к число приводишь.
>Создать пустой объект дешевле, чем запрашивать цепочку из Array > prototype > slice
По твоему в случае вызова метода из объекта, он не обращается к prototype?
вернее на NaN тогда уж. бля
он возвращает null
А еще нормальные пацаны не умеют в приведение типов.
Я не создавал константу, ты где-то накосячил просто. Либо переопределил Array через супер-множественное наследование, а теперь зеленишь.
Зачем. Это не имеет смысла.
>>740987
Еще раз, логика в том, что при вызове метода объекта, если не указана прямая ссылка, то обращение идет к prototype. Только в случае прямого присвоения (в фабрике) не будет цепочки прототипов. Но будет оверхед на ссылку (4 байта, вроде бы).
for (let i = 0; i < 5; i++) {
setTimeout(()=> console.log(i), i*10); // 0, 1, 2, 3, 4
}
В случае фабрики - да, поэтому фабрика лучше, если объектов меньше 50 тысяч и быстродействие важнее памяти.
В случае же чистого быстродействия без создания объекта прямая ссылка, естественно, выиграет.
>>741002
>>740999
Алсо, если запускать не из консоли, а из подключенного скрипта, то Прототип снова быстрее.
Ты мне рассказываешь какие-то очевидные вещи. Я это все и так знаю.
Но вот скажи почему
Тут так >>740995
А тут >>740997
И тут >>741006
иначе?
Все эти тесты мои. Все одинаковые.
Оптимизация на уровне VM, очевидно.
ты вообще не понял о чем я говорю.
каждый проход цикла i получается новая.
нельзя ошибочно сослаться на её устаревшее значение в асинхронной функции как в случае с var.
Потому что в случае с var в момент вызова твоей отложенной по таймауту функции твоя переменная уже изменена. Там нет никакой ошибки. Ошибка в твоем не понимани как замыкаются области видимости.
1) Создать интервал (Number) от 2 до 10, с помощью цикла for:
for (Number = 2; Number <= 10; Number++)
2) Создать второй интервал чисел от 2 до Number-1 c помощью цикла for:
for (i = 2; i<= Number-1; i++)
3) Как-то с помощью этих циклов начать делить Number на i и проверять условие:
if (Number % i !== 0) т.е "условие выполняется если Number не делится на i без остатка"
и выводятся alert(Number) т.е так называемые простые числа.
В схеме из решения написано "проверить, делится ли число i на какое-либо из чисел до него".
И я это просто осмыслить не могу немного, как это работает вообще и как это понять.
Всегда была проблема (в школе на информатике) с циклами и я не могу представить одновременную работу двух циклов сразу да и вообще в представлении каких-то логических штук у меня вечно проблемы, нихуя не понимаю, зато другие это решают без проблем а я выдумываю что-то непонятное.
Если есть сложности с пониманием алгоритма, прогони его вручную на бумаге.
Типа вот у нас есть Number=2 из первого цикла, второй цикл будет проходит от 2 до 1, то есть ни одного раза; Number=3, i от 2 до 2, делится на 2? нет, значит простое и так далее.
Ну вот я вроде примерно так и прогонял. Сейчас через Отладчик пытался прогонять, криво получается у меня это =D
Код такой, но почему-то условие не выполняется и alert не выводит, выводит просто все числа.
var Number = 2;
var i = 1;
for (; Number <= 10; Number++) {
for (; i < Number; i++) {
if (Number % i !== 0) {
alert(Number);
}
}
}
дополнение:
кстати при таких фигурных скобках второй цикл возвращается к первому, а не переходит на if (только потом уже начинает переходить) и этого я тоже не пойму, почему так?
типо если Number делится на i с остатком, то условие выполняется, я так понял.
>while (true);
>почему интерпретатор ругается на Break?
А ты не пробовал читать, что имено он тебе говорит?
Гугли решето эратосфена.
Когда-то задали подобное на практичной и пока у всех были пиздецкие нагрузки на обработку тысяч чисел, мне один зракомый сказал о решете
Клёвая штука с утра под кофе проснуться. Там задачки постоянно новые генерятся или фиксированный стак?
>массив перебираешь? Читал, что индекс это плохо
Массив перебирать по индексу это вполне ок, map и forEach в любом случае перебирают по индексу.
У меня обычно всегда есть id, т.к. это обычно объекты с каким-то данными. Айдишник надежней всего, очевидно.
Если переменные относятся к одной сущности, то проще выделить им один неймспейс в виде объекта.
Да конечно можно индекс, какая разница. Тебе нужен уникальный идентификатор, просто обычно данные редактируются и потом сабмитятся обратно на сервер, поэтому всегда есть айди. Если у тебя просто шоу каких-то фиксированных данных, то можешь по индексу.
http://jsbin.com/bakamitozu/edit?js,console
Он просто не знает, что Number - встроенный объект, который не следует перезаписывать.
Даже если бы не было встроенного объекта. По соглашениям с большой буквы называют функции-конструкторы, а не обычные переменные.
ну надо полагать потому что в неправльном случае ты меняешь переменную, а результатом выводишь изначальный объект. Работает-то он правильно. наверно стоит после умножения добавить obj[key] = objKey ?
Видно же, что он не с нуля в js пришёл, а из другого языка. Думаю, это C#, ученный по урокам Unity.
Да работает, на нахуя опять присваивать тем более наоборот. obj[key] = objKey;
Когда я в самом начали контекст свойства объекта присвоил в переменную мне же логичней и удобней все операции совершать над переменной?
переменная твоя должна быть хотя бы глобальной, или вообще нахуй ее убирай.
>удобней все операции совершать над переменной?
Это если они мутабельная и все операции твои соответствующие.
Ты же там сначала делаешь objKey = obj[key], а потом objKey = ... Очевидно, что ты изменяешь значение переменной objKey, а не элемета массива.
Это тебе не си, где можно было бы
int z = 0;
int i = &z;
i = 5;
Лол, там 5-6 кью за час под чаек набивается. Сегодня зарегался уже набил. А вот задачки 4 и выше уже потяжелее кажутся. Так что скорее с него джун начинается
Ох если бы.
Решаю 4-5 кью задачки, через полгода планирую начать искать место даже не джуна, а стажера хотя бы.
в "мы вам перезвоним" скинули кстати
https://medium.com/@evnowandforever/f-you-i-quit-hiring-is-broken-bb8f3a48d324#.q2khdvree
а так спасибо за совет, но думаю все-равно понемногу решать, а то вот на интервью какая-нибудь лажа как тому телу попадется и пиздец
ajax.abort();
}
не помогает, всё равно отправляется несколько
да я не код просил...
Как можно отменить запрос, который уже отправлен? Можно только отменить колбек, ждущий ответа от сервера на этот запрос.
Работаю простым HTML/CSS верстальщиком. Параллельно учу JS. Читаю уже второй учебник. Синтаксис более менее освоил. Но не совсем понятно, что конкретно из себя представляет работа фронт-енд разработчика (да и вообще разработка сайта в целом). Допустим, есть у меня адаптивный макет, вот что с ним дальше делать?
>адаптивный макет
Настоящий JS-кодер поворачивается и уходит, едва заслышав хотя бы одно слово из этих двух. Вёрстка - работа девочек-студенток, а не фронтенд-разработчика.
Понял-понял. Девочка-студентка сверстала макет, дальше отдает его настоящему фронтенд-разработчику. В чем заключается работа фронтендера? Опиши дальнейшие этапы разработки или подскажи, где самому почитать об этом в деталях (гугл не помогает)?
Фронтенд разработчик должен с полуслова понимать бэкенд-разработчика и обеспечивать работу логики клиентской стороны.
Дисабли кнопку, енабли в при исполнении запроса.
Tell me more. Чем же тогда фронтендер занимается, если не работает с домом?
Работает с виртуальным домом.
Он может работать с DOM'ом, но только из JS. Верстальщик делает окно чата на html и пишет стили для div-мессагов, а фронтент-разработчик пишет логику добавления новых сообщений, подцепляя описанные css-стили из кода.
Ты конечно прав, в идеальном мире.
На деле же верстальщик городит какую-то хуйню, так как он не шарит как в дальнейшем логика будет представлена, поэтому большую часть стилей и разметки фронт все равно потом переделывает/дописывает под себя.
Если фронтендер не может работать с домом, а девочка-студентка не умеет работать с домом из ЖС, то кто верстает страницы на реакте?
>лол, тут недоджуны это знают
Я не знаю и знать не хочу. Это легаси-поведение, а сами эти операции - плохой паттерн.
Чем ниже, тем лучше. ЖС погромист вообще не должен знать верстку, этим девочки-студенки занимаются. Если ты даже не догадываешься что такое <div> или text-transform, значит ты об это говно не шкварился и тебя можно брать на работу. Ну а если что-то верстал в своей жизни, то ты просто ВЕРСТАЛЬЩИК, таких червей-пидоров погромистоми не берут.
а ещё никогда не говори, что писал на php и через силу смейся над $ в начале переменных.
Упитанно.
кстати в начале переменных еще погромисты на jq ставят знак доллара. Венгерская нотация или хз как оно называется, мол это переменные для jq. Хотя по венгерской там вроде типы указывают в начале
Ну я тоже так делаю, сам додумался, кстати. Чтобы знать, где простой дом-элемент, а где обёрнутый в jquery.
https://jsfiddle.net/tylermcginnis/du72b5L2/
Здесь же по сути устанавливается стейт, почему тогда метод называется get, а не set?
Создай отдельный тред же. Здесь всем посрать на реакт и прочее хипстерское говно.
Если твой скилл верстки ограничивается созданием простенького макетика, то не значит что другие не могут делать что-то годное. В верстке потолок умений намного выше, чем все думают.
Это копия, сохраненная 23 мая 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.