Этого треда уже нет.
Это копия, сохраненная 23 мая 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
37 Кб, 1052x1052
JavaScript #45 #737862 В конец треда | Веб
Ссылка на прошлый тред: >>734766 (OP)

Этот тред посвящён главному языку будущего - 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/ для серверного кода.
#2 #737865
Поясните дауну ( мне ) Чем отличается Ангуляр от Node ?
Что лучше освоить? или лучше освоить весь MEAN-stack ?
>>737868
#3 #737867
Продолжаю заебывать всех своим калькулятором
Теперь он с историей
http://embed.plnkr.co/F43HoAkCaQ8re2Jgqqig/
>>737878>>737882
#4 #737868
>>737865
Иди гуглить. Если ты не можешь сам найти ответы на эти вопросы, то погромировать ты точно не сможешь
#5 #737878
>>737867
Гришаня, думаешь я забыл о тебе? А вот нихуя!
>>737880
7 Кб, 200x193
#6 #737880
>>737878
я все равно как неуловимый Джо
#7 #737882
>>737867
такое делает студент программист на 1ом курсе в 1ом семестре 1ой недели
>>737883>>737884
#8 #737883
>>737882
ну и к чему ты это сказал?
#9 #737884
>>737882

хуй там
#10 #737886
Ну, раз тут тред ньюфажеских поделий, то зацените мое, тем более, что я по поводу этого задания отписывался несколько тредов назад.
Там есть один баг, мне его впадлу пофиксить, уже неактуально. Может, потом.
http://artemperchyk.github.io/Solitaire/ диванон лигивон
#11 #737888
>>737886
не смог пройти с двух раз
>>737890
#12 #737890
>>737888
Ну это нормально, там не проверяется раскладка на "проходимость". Как и в реальном пасьянсе.
Знаю, что в некоторых реализациях это запилено, но хуй знает, как.
>>737902
#13 #737892
>>737886
калькулятор не понравился, оче много багов
правда я охуел от того сколько там файлов, я даже не знаю что большинство из них делает
>>737897
#14 #737896
>>737886
еще сапер какой-то странный, тоже не смог пройти
>>737900
#15 #737897
>>737892
Калькулятор был запилен за два дня на коленке, я там нихуя не дебажил толком.
Файлы - ну там я по неопытности захуярил в одну папку и чай с моккой для тестов, и бутстрап, который вообще там не использовался, ну ты понял. Там только три файла плюс тесты собственно моего кода.
>>737903>>737907
#16 #737900
>>737896
Сапер тоже недопиленный, я, конечно, понимаю, что я показываю себя ленивым пидором, но мне это задание страшно не понравилось и я его сделал тупо для галочки.
>>737903
#17 #737902
>>737890
Сложенные карты должно быть можно возвращать обратно.
>>737904
#18 #737903
>>737900
ты где такие ебанутые задания находишь?
>>737897
а зря, проще всего логику написать, а самое интересное начинается потом
>>737905
#19 #737904
>>737902
Ты имеешь в виду undo на стопке?
>>737927
#20 #737905
>>737903
Это курсы при бодишопе.
>>737908
#21 #737907
>>737897
скрипт польской нотации сам писал?
>>737910
#22 #737908
>>737905
гугл говорит так косметикой торгуют
>>737910
#23 #737910
>>737907
Да.
>>737908
Да блять, в воркаче уже сегодня пояснял, имеется в виду крупная аутсорс компания.
#25 #737914
>>737913
ah ty peedor
#26 #737919
>>737913
все как у людей
#27 #737927
>>737904
Из стопки можно снимать карты обратно и перекладывать на борду. Стопка - считай, стэк.
>>737931
#28 #737931
>>737927
Возможно, я просто очень сильно туплю, но ведь реализация стопки у меня точно такая же, как и во всех виденных мной реализациях (про вариацию с тремя картами не говорим, речь не о том).
Т.е. клацнул, открыл карту, есть куда перенести - перенес, нет - клацнул на другую карту и так пока всю стопку не прокрутишь.
>>737970
114 Кб, 807x538
#29 #737934
>>737913
слава украине!
>>737939
#30 #737939
>>737934
Лол, ну ты даешь. Еще и страницу тян нашел.
Таки да, слава, фото с захидфеста.
>>737941
#31 #737941
>>737939
Хотя вообще там всем рады, справа можешь заметить флаг бульбобратьев.
#32 #737970
>>737931
Я про другие 4.
>>737978
#33 #737973
http://learn.javascript.ru/
Я какой-то тупой, объясните где здесь найти задания по JavaScript на этом сайте (мне сказали что искать там)?
Раздел "Тесты знаний" - не то.
>>737979
#34 #737975

>2016 год


>Убогий неформатируемый Math.random


>Убогий неформатируемый Date


Оправдывайтесь, петуханы.
#35 #737978
>>737970
Ааа, теперь понял.
Если честно, мне это в голову вообще ни разу не приходило. Причем там еще сделал для простоты так, что карта при перетаскивании на один из четырех верхних дивов просто исчезает, а див получает ее бэкграунд.
Возможно, когда руки дойдут, переделаю а сейчас ангуляр учу
#36 #737979
>>737973
После глав задания идут.
>>737983
#37 #737983
>>737979
Спасибо
.

Кстати, анончики подскажите, лучше начинать изучать JS по книге "Выразительный JavaScript" или на learn.javascript.ru? Кому где было легче?
>>737989
#38 #737989
>>737983
Лучше второе. Там подробнее и проще написано для новичка.
>>737991
#39 #737991
>>737989
Просто в любом случае скорее всего и то и другое буду читать, просто нужно именно то что легче понять поначалу. ^-^
#40 #737998
Многие играли в prison architect или хотя бы слышали. Так вот скажите, как вообще можно сделать подобную игру? Js может с этим справиться или кроме него надо будет ещё какие-то языки зубрить? Просто хочется когда-то попробовать сделать, что-то подобное.
>>738001>>738075
#41 #738001
>>737998

>сделать, что-то подобное


лол
эту игру делала студия из нескольких человек больше двух лет
там программирование вообще дело десятое
>>738035
21 Кб, 735x232
49 Кб, 400x323
#42 #738019
Джавскриптаны, мне вот интересно стало сколько приходится писать в среднем в день кода. Я прошелся по прошлым проектам и по текущему, и получается примерно 600-800 LOC в день, не считая стилей. Если дедлайны более демократичные, то моя продуктивность падает до ~400 в день.
А на пет проектах вовсе по 100-200, если каждый день писать, но там трудно посчитать из-за длительных перерывов между сессиями.
Кто имеет дело с коммерческим продакшеном, какой, в среднем, аутпут в день?
>>738021
#43 #738021
>>738019
Разве это всё напрямую не зависит от сложности кода? Ты же блять вроде как не на конвейере помидоры проверяешь, зачем продуктивность сравнивать?
>>738025
#44 #738025
>>738021
Лол, какая нахуй сложность кода в вебе. Мы тут не софт к автопилотам пишем, 90% задач логически однообразны и решения варьируются от стака к стаку.
>>738624>>738626
#45 #738035
>>738001
Какая разница сколько лет они ее делали. Меня интересует как сделать подобное?
>>738036>>738060
#46 #738036
>>738035
Ты мудак что ли?
>>738037
#47 #738037
>>738036
А что тебя смутило в вопросе? Почему ты агрессивный?
#48 #738060
>>738035
Найти команду, подождать чуть больше двух лет.
#49 #738071
Заранее прошу прощения за тупые вопросы.

Захотел на досуге заняться js, решил делать простенькую игру с мультиплеером.
Вот я начал с того, что посмотрел несколько книжечек и видео о node.js, но теперь вопрос:
1. Как организовать передачу данных в RT игре?
Передавать клиентам информацию о статусах всех объектов или только то, что изменилось с последней отправки и сделать в клиенте функцию, которая перерисует динамические элементы?
2. Как лучше взяться за примитивную графику типа бегающих кругов? Изучать create.js и подобные или можно обойтись?
3. Как сделать так, чтобы было несколько игровых комнат и как лучше отличать игроков друг от друга?
>>738074
#50 #738074
>>738071
Всё, что касается реал тайм, комнат и игроков - socket.io. По поводу примитивной графики это зависит от того, насколько она, собственно, примитивна. Есть много геймдев движков, где реализована базовая физика и прочие няшности.
>>738082>>738095
#51 #738075
>>737998
Ну в юнити и в других движках js есть как язык для behavior-скриптов, запросто можно делать. Только с 2d на юнити немного туго как по мне ну я немного тупой.
#52 #738082
>>738074
Я сокет уже изучаю, но ещë не додумался до логики передачи данных в онлайн-играх, в смысле каждый раз передавать абсолютные координаты или движения? Не могу на глаз оценить, какие нагрузки могут не создавать лагов и какая будет задержка между обновлениями.
>>738086>>738089
#53 #738086
>>738082
Ну я сам так-то писал только статичные игры, тобишь морской бой там, такое. Но я думаю, что

>каждый раз передавать абсолютные координаты или движения


по другому никак, если у тебя реал тайм обновления. По поводу нагрузок я бы не переживал особо, джс довольно быстрый язык и реальным ботлнеком в простой игре будет только коннект, который ты контроллировать не можешь всё равно. Я читал как-то статейку, кстати, где чувак описывал как на сокетах хендлить возможный делей. Но это оптимизация.
>>738089>>738095
#54 #738089
>>738082
риал тайм -> udp. udp -> потери. Потери -> только абсолютные величины.
Полагаю, самих играх обычно делаются всякие интерполяции, чтобы игрока не "телепортировать", а именно подвинуть, со всеми вытекающими коллижнами и т.д.
Но я диванный, тоже только статичное делал, а риалтайм в качестве эксперимента лишь поигрался маленько.

>>738086
Коннект коннектом, но какие-то умные и магические алгоритмы для оптимизации всего этого есть.
>>738095
#55 #738095
>>738074
>>738086
>>738089
Спасибо, буду пробовать
#56 #738115
>>737913
Вот та тян обосрется от испуга если обернётся.
>>738128>>738161
#57 #738128
>>738115
Или наоборот.
>>738161
33 Кб, 319x311
#58 #738161
>>738115
>>738128
там просто фотограф рукожопый
>>738163>>738177
#59 #738163
>>738161
А что изменилось?
#60 #738177
>>738161
Фотограф рукожопый - это мы вместе фоткали себя на зеркалку, лол, поэтому так.
А вообще тут не оцени тян тред, заебали.
>>738180
#61 #738180
>>738177
Иди нахуй, очкарилло, встречу на улице, ебало вскрою, петух
>>738186
#62 #738186
>>738180
Лол. Люблю двач.
>>738188
#63 #738187
Как можно передать браузеру имя файла без дополнительных запросов со стороны клиента, если я стримлю видео банально через readStream.pipe(response) (либо с диска, либо перенаправляю с того же ютуба)? Пока что фф мне выдаёт в качестве названия страницы последний путь в path'e (aaa.com/aaa/bbb/ccc -> ccc), и при попытки сохранить файл, соответственно, то же самое (ccc.mp4). Content-Disposition не влияет, да и со стримингом он, вроде бы, и не должен работать.
В самом запросе названия нет, оно по айдишнику берётся, т.е. мне со стороны нужно его впихнуть как-то.
>>738914>>738958
#64 #738188
>>738186
Хахол ебаный, на курсы он ходит, безмозглое животное, самому не дано видимо чему-либо научиться, уёба
>>738197
#65 #738197
>>738188
Так я на них отбор прошел, как раз потому что не безмозглый. Ну да похуй.
>>738201
#66 #738201
>>738197
Вот это тщеславие
#67 #738209
Часто приходится делать this.object.doSomething.bind(this.object). Может есть сахарок?
#68 #738212
>>738209
Лямбды в es6 делают, по сути, то же самое, что bind, сохраняя this.
>>738222
#69 #738222
>>738212
Мне нужно передавать одному агрегированному объекту метод другого с собственным контекстом как коллбек. Тут лямбды не помогут.
#71 #738226
>>738224
Я думал, может нейтив есть что-то.
#73 #738357
Я ебал этот реакт. Почему одни пишут так:

var MessageComponent = React.createClass({
render: function() {
return (
<div>{this.props.message}</div>
);
}
});

А другие так:

var MessageComponent = function(){
return (
<div>{this.props.message}</div>
);
}

И то, и то называют созданием нового компонента, но в чем разница-то блять? Это одно и то же?
>>738362
#74 #738362
>>738357
Именно в твоем случае - да. Второй вариант это просто функциональный вариант простой компоненты, которая только отрисовывает что-то беря из пропсов.
>>738401
#75 #738379
Запустил у себя на шинде сервер, по локалхост:3000 захожу, по 192.168.1.x:3000 не захожу, по внешнему тоже. Открыл порт, выключил файрвол винды - та же ситуация.
Что я делаю не так?
>>738395
#76 #738395
>>738379
Настрой сервер чтобы он слушал на 0.0.0.0:3000
#77 #738401
>>738362
А почему бабель выдает результат 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);

Если с маленькой, это типа хтмл-тег должен быть что ли? А с большой какой-то компонент?
>>738407
#78 #738407
>>738401
А, все, нарыл про это.
>>738411
#79 #738411
>>738407
Мне теперь расскажи.
>>738416>>738421
#80 #738416
>>738411
В JSX все что с маленькой буквой то считается html тэгом. Реакт компонента должна начинаться с заглавной.
https://gist.github.com/sebmarkbage/f1f4ba40816e7d7848ad
#81 #738421
>>738411
Надо кароч в спеки заглядывать иногда, а потом бочку катить.

https://facebook.github.io/react/docs/jsx-in-depth.html
#82 #738485
>>738488
#83 #738488
>>738485
Go работает быстрее, чем нода. Зачем оправдываться? Сколько ты кода написал на go? На нем писать сложнее, чем на js.
#84 #738489
>>738488

>На нем писать сложнее, чем на js.


Go примитивный до безумия, хуже Паскаля.
#85 #738491
>>738488
>>738489
Почему еще не запилили транслятора из js в go?
>>738492
#86 #738492
>>738491
Не нужно, очевидно.
sage #87 #738517
>>738489
Это не значит на нем писать как-то легче.
#88 #738541
>>738489
Ассемблер еще примитивнее.
Это делает его более легким?
>>738561
#89 #738561
>>738541
Какого хуя в es6 классах нет ебучих полей.
Почему я должен выебываться с инициализацией поля каждому объекту и тратить память, если он мне нужен в прототипе. Или писать в прототип в обход сахарной конструкции. Зачем она вообще нужна тогда?

Я не понимаю, что помешало позволить писать
class {
ololo: 'some string'
static kokok: 100
}

В чем смысл ограничения то?
>>738564
#90 #738564
>>738561
Поставь typescript. Можно писать и без типов, зато будет так, как ты хочешь. Транспайлится все так же.
>>738569
#91 #738569
>>738564
Я знаю, что можно поставить, чтобы было.
Меня интересует, что сподвигло отказаться от этого в спеке. Это же вроде ничему не помешало бы.
>>738570
#93 #738573
>>738489
Паттерны go не примитивные.
65 Кб, 256x256
#94 #738581
Кто что юзает на атоме?
#96 #738623
>>738488

> Сколько ты кода написал на go?


Каждый день пишу на работе на go.

> На нем писать сложнее, чем на js.


Лично мне - нет.
#97 #738624
>>738025
где-то тут есть ветка ниасиляторов лол, нода ахуенная.
sage #98 #738625
>>738622
Этот переписыватель сломался, несите нового. Обоссали уже в соседнем треде, иди нахуй
>>738629
#99 #738626
>>738025
где-то тут есть ветка ниасиляторов лол, нода ахуенная.
#100 #738629
>>738625
А ты ссылку дай на "обоссывание".
#101 #738647
Я поднимаю вопрос, на который так и не получил ответа.
Как по-вашему, какой путь для типизации более приближен к концепции js?

Имеющиеся кандидаты:
1. TypeScript style

>function (arg: Type)



2. Decorators (пример для примера, там можно что угодно придумать, суть в самих декораторах)

>@typeCheck {arg: Type}


>function (arg)

>>738660
#102 #738660
>>738647
Тайпскрипт конечно, декораторы какой-то костыль
>>738666
#103 #738666
>>738660
Но декораторы часть стандарта в будущем, а тайпскприт как раз костыль.
>>738667
#104 #738667
>>738666
Проверять типы через декораторы это костыль, а не сами декораторы.
Тайпскрипт это не костыль вообще, это компилируемый в жс язык, каких сотни тысяч уже.
#105 #738668
>>738581
юзаю VIM вместо этого поделия
>>738670
#106 #738670
>>738668
олдфаги юзают эмакс
#107 #738799
Как поделить онлайн чат на несколько комнат, которые создаются по требованию?
#108 #738822
Если бы вы создавали JS сейчас, то чего-бы вы в него не включили?

Если проще говоря, очень часто говорят про различное легаси в архитектуре языка. Что именно? Что бы вы выкинули?
Что добавили? Что сделали иначе?
40 Кб, 799x484
#109 #738841
чем он не доволен?
#110 #738847
>>738841
Он считает что ты объявляешь функцию внутри цикла. У тебя свитч не в цикле случаем?
>>738855
#111 #738850
>>738841
А нахуя ты объявляешь массу одинаковых функций в качестве листнеров. Ты больной?
#112 #738852
>>738841
Вынеси функцию-обработчик за пределы цикла.
А далее присваивай ссылку на нее.
>>738855
#113 #738853
>>738841

>div.querySelector('.memoryElem').querySelector('.memoryAnswer')


Умоляю, скажи честно, ты болен чем-либо или ты не умеешь в селекторы?
У тебя же ебанистический оверхед всюду.

>div.querySelector('.memoryElem .memoryAnswer')

>>738855>>738856
#114 #738855
>>738847
в цикле фор
>>738852
ну это понятно, только зачем, если эти функции только там нужны
>>738853
да, не умею, попробую твой способ
#115 #738856
>>738853
работает, спс
#116 #738858
>>738855

>ну это понятно, только зачем, если эти функции только там нужны


Ты не понимаешь, что ты в цикле создаешь МНОГО ОДИНАКОВЫХ ФУНКЦИЙ. Каждая занимает память, при этом каждая функция идентична.

Ты действительно не понимаешь?
>>738865
#117 #738859
>>738855

>в цикле фор


Не надо так.
Если ты в цикле объявляешь функции - то ты что-то делаешь не так.
>>738866
#118 #738860
>>738855

>только зачем, если эти функции только там нужны


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

Вот что ты делаешь.
>>738866
#119 #738861
Сап, паrни! Может мне кто объяснить в чем прикол __proto__ и prototype. Типо __proto__ - содержит все свойства, того чего он наследует, а prototype - конструктор и соответственно __proto__? Честно все эти learn'ы и хабры - читаю - нифига понять не могу
>>738863
#120 #738863
>>738861

>в чем прикол


Да так, по накурке лдаст вор лулз запилили, не обращай внимания вообще.
>>738864
#121 #738864
>>738863
но я хочу понять
>>738869
42 Кб, 660x697
#122 #738865
>>738858
ок
спс за объяснение
переписал
>>739247
#123 #738866
>>738860
>>738859
ок, спс
#124 #738869
>>738864
__proto__ свойство объекта, указывает на его прототип.

2ch.__proto__ то же самое что Object.getPrototypeOf(2ch)

нежелательно использовать __proto__ это моветон. Его впилили в стандарт только потому что это было недокументированное свойсвто поддерживаемое всеми браузерами, а появилось в них, раньше рефлекии. Для доступа к прототипу используй специальные функции. Тем более что __proto__ обычное поле и может быть переопределено.

prototype свойство конструктора, описывающее прототип для будущего объекта, который конструрирует твой конструктор.
>>738870>>738872
#125 #738870
>>738869
О, так понятнее, сяп!
#126 #738872
>>738869
т.е. в двух словах:
__proto__ - то, что наследуем,
prototype - описание конструктора
>>738878>>738880
#127 #738875
#128 #738877
>>738622
Какая-то истеричка не может понять, что все языки - говно и надо просто пользовать что есть.
#129 #738878
>>738872
prototype - для конструктора.
в нем хранится то же самое, что ты получаешь потом через __proto__
Только прото ты используешь из готового объекта,
а прототайп с другой стороны, еще до инициализации объекта.
#130 #738880
>>738872
конструктор это тоже объект, и унего есть свой прототип.
constructor.__proto__ и constructor.prototype это разные объекты, это надо понимать.
#131 #738914
>>738187
бамп?
#132 #738958
>>738187

>Как можно передать браузеру имя файла без дополнительных запросов со стороны клиента


Никак, представь, что будет, если браузер начнет рыскать по файлам пользователя.
>>738981
17 Кб, 553x247
#133 #738967
Жсоны, есть задача. Надо сязать пользователей с городами, как показано на пикче. Использовать надо jquery. Рядом с каждым пользователем есть кнопка "добавить город" по нажатию которой появляются два дропдауна с выбором страны и города. Данные эти дропдауны получают по аяксу. Так как я с жикьюери мало работал, то вот мои вопросы:
1. где хранить шаблон(хтмл) для этих дропдаунов, так как их надо будет добавлять много.
2. какими методами надо будет сделать связь этих дропдаунов с пользователями, чтобы передать правильную инфу
3. как вставить их в нужное место на странице? Надо будет делать какие то специальные имена классов в которых будет пристутствовать userId?
>>738997>>738999
#134 #738981
>>738958
Лол, каким файлам пользователя. Я просто хочу, чтобы вместе со стримом видео с сервера как-то пришло и его название, чтобы при "save as" или открытии этого видео в отдельно вкладке (т.е. без html страницы, где оно вставлено), это название было видно.

Или так нельзя, и единственный выход это дополнительная кнопка "скачать", которая там будет выставлять нужное имя файла?
>>738994
#135 #738982
Как поделить онлайн чат на несколько комнат, которые создаются по требованию?
#136 #738994
>>738981

> или открытии этого видео в отдельно вкладке


В этом случае имя файла это часть url, что ебешь мозги. Формируй url на сервере.
#137 #738997
>>738967
Никто не будет тебе это объяснять.
Ты не с теми вопросами пришел.
Или иди изучай js или плати деньги, чтобы за тебя решили твою задачу.
>>739031
#138 #738998
>>738581

sublime or idea
#139 #738999
>>738967
Пользователи у тебя на сервере или это чисто фронтэнд?
>>739031
#140 #739031
>>738997
Я же написал конкретные вопросы, которые мне не понятны. Подскажи какой нибудь гайд чтобы я почитал и решил эту проблему.

>>738999
Пользователи с бекэнда приходят. Ну и вообще в конце таблицы еще есть кнопочка применить и уже на стороне сервера пользователи будут привязываться к городам. А мне надо туда отправить список айди городов связанных с пользователями, но это я знаю как сделать.
#141 #739042
Поясните за загрузку файлов на сервер аяксом. Мне нужно его сконвертить в строку а потом отправить как значение в жсон объекте? Или отдельно отправлять? Просто у меня еще данные из формы передаются.
>>739059>>739103
#142 #739059
>>739042
multipart/form-data
#143 #739090
Анон, поясни, допустим я захочу свою срань на хостинг залить, чтобы показать кому - нибудь, мне для этого нужно домен регистрировать или можно будет как - то по ip зайти?
>>739098>>739102
#144 #739098
>>739090
Heroku.com
Заливаешь на халяву и показываешь кому надо.
>>739101
#145 #739101
>>739098
Спасибо
#146 #739102
>>739090
Если тебе не нужен постоянный онлайн, то и без хостинга обойтись можно. Например вот так https://localtunnel.me/
>>739105>>739344
#147 #739103
>>739042
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());
}
});

Я это делаю так.
#148 #739105
>>739102
О, вот этого годнота
>>739344
#149 #739226
Если в реакте делать ajax запрос в рендере, это совсем пиздец?
>>739227
#150 #739227
>>739226
Конечно, для этого есть ComponentDid(Will)Mount.
>>739229
183 Кб, 604x453
#151 #739229
>>739227
Так это понятно, но мне надо в рендер
>>739231
#152 #739231
>>739229
Что значит "надо", тебя что палкой пиздят и заставляют говнокод писать? Помимо прочего, если ты собираешься использовать резалты аякс запроса внутри этого компонента, то ты получишь охуенный рекурсионный фейл.
>>739248
6 Кб, 487x211
#153 #739247
>>739453>>739498
#154 #739248
>>739231
А если я буду вызывать this.ComponentDidMount это тоже пиздец?
>>739249
#155 #739249
>>739248
Ты объясни зачем тебе эта вакханалия, мне просто интересно что у тебя за юзкейс такой.
>>739254
#156 #739254
>>739249
Юзкейс называется ньюфаня пишит говнокод чтобы закрепить знания о реакте.

Алсо, спасибо что поясняешь
>>739259
#157 #739259
>>739254
Если у тебя нету стейтменеджера какого-то, т.е. флакс реализации какой-то (редакс, альт, рефлакс, етц) то ты используешь локальный стейт компонента, т.е. this.state = { key: value }, ну или getInitialState() если ты не как порядочный человек классы объявляешь. Твой компонент загружается, ты в componentDidMount() вызываешь свой аджах, success = (response) => this.setState({value: response}). И других вариантов особо нет, рендер занимается исключительно отображением данных.
>>739265
#158 #739260
Зацените сортировку.

[5,1,2,6,12,1,64,13,7,15].forEach(function (num) {
setTimeout(() => {console.log(num)}, num*5)
});
#159 #739265
>>739259
Я так и делаю, спасибо

Но могу ли я вызвать componentDidMount() для отправки нового запроса чтобы стейт обновился и компонент получил новые данные?
>>739272
6 Кб, 251x241
#160 #739266
>>739260

>[5,1,2,6,12,1,64,13,7,15].forEach(num => setTimeout(() => {console.log(num)}, num*5));


Взялся писать нормальный джс, пиши до последнего.
>>739269>>739387
#161 #739269
>>739266
Буду на собеседованиях ее хуярить.
#162 #739272
>>739265
Для этих целей есть специалные хуки в лайфсайкле компонента. Как-то 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} ты выполняешь нужный тебе реквест на апдейты.
>>739275
#163 #739273
>>739260
Зачем num x 5
Делай num+1
>>739278
#164 #739275
>>739272

>А если по юзер реквесту, то ты делаешь отдельный метод, например getUpdates(), не забываешь его биндить в конструкторе this.getUpdates = ::this.getUpdates, и по клику на нужные тебе элемент, onClick={this.getUpdates} ты выполняешь нужный тебе реквест на апдейты.



Вот про это я и спрашивал, большое спасибо
554 Кб, 1024x723
#165 #739276
>>739260

>[5984565421, 25466544, 788888851]

>>739282
#166 #739278
>>739273
num+1 - это считай num, точность будет низкая. 1 ms разницы может не хватить, чтобы вывести предыдущее число.
>>739280
#167 #739280
>>739278
Тесты проведи.
Или используй вместо таймаут реквестаниматионфрейм. Там учитывается все.
#168 #739282
>>739276
[1, 1<<30]
#169 #739285

>[5,1,2,6,12,64,13,7,15].sort((a, b) => a - b)


problems weren't.
>>739295
25 Кб, 470x413
#170 #739295
>>739285
[5,1,2,6,12,64,13,7,15].sort()
#172 #739344
>>739102
>>739105
Еще есть ngrok.
#173 #739387
>>739266

> [5,1,2,6,12,1,64,13,7,15].forEach(num => setTimeout(() => {console.log(num)}, num*5));


Зачем фигурные скобки вокруг console.log? Мы вам перезвоним, в общем.
>>739392>>739510
49 Кб, 462x634
#174 #739392
>>739387
Я лениво фиксил его трилайнер.
#175 #739397
Все знают, что в шестом ноде добавлены аргументы по-умолчанию?

function sum(x = 0, y = 0) {
return x + y;
}
>>739399>>739511
#176 #739399
>>739397
Все транспайлят es6\7 уже давно.
#177 #739411
У меня бугурт, что в JS так и нет полноценного кортежа. Нельзя написать
myFunc(x instanceof Array ? ...x : x);
так как ...x не может существовать "самостоятельно"
>>739413
#178 #739413
>>739411
Я имею ввиду кортеж в луавском смысле, не в питоновском.
#179 #739418
Какой нынче самый толковый и актуальный туториал по реакту?
Ну, кроме фейсбуковских доков.
>>739499
#180 #739453
>>739247
что значит "f &&..."?
#181 #739458
>>739453
f - переменная.
&& - "and" оператор.
#182 #739460
>>739453

>что значит "f &&..."?


почитай, как работает &&
#183 #739468
>>739453
там записано то же самое, что и
if (f) btn.onclick = f;
только более понтово.
>>739493
#184 #739472
Как можно писать на js и не знать паттерна

> data && data.pos && data.pos.x


хотя бы в теле условия?
Кстати, от него же вроде как-то хотели избавиться в ES7?
#185 #739493
>>739468
спасибо, хорошо объяснил
#186 #739498
>>739247
"var btn of buttons" тоже интересно сделано, первый раз вижу
>>739537
#187 #739499
>>739418
Фейсбуковские до...

>Ну, кроме фейсбуковских доков.


Тогда хз.
#188 #739510
>>739387

>[5,1,2,6,12,1,64,13,7,15].forEach(n => setTimeout(console.log.bind(console), n*5, n));

#189 #739511
>>739397
В chromium уже давно
#190 #739537
>>739498
for-of довольно новый стандарт. Если нужна совместимость со старыми браузерами, юзай i = 0; i < ...
>>739550>>739566
#191 #739550
>>739537
В твоей вселенной не завезли транспайлеров?
>>739552
#192 #739552
>>739550

>транспайлеров


можешь сразу на тайпскрипте писать, мне похер.
>>739558
#193 #739558
>>739552
Я на нем и пишу, лел.
#194 #739566
>>739537
ясно, спс
#195 #739626
Хочу js рантайм как в smalltalk
Скомпилированными образами.
#196 #739644
Как считаете, wasm убьёт JS? Эйх говорит, что нет. Но он мне сейчас напоминает Януковича, который сам вступил в заговор против себя и вот-вот всех переиграет.
86 Кб, 604x468
#197 #739659

>убьёт JS

#198 #739667
>>739644
Он скорее его дополнит, у них разное применение.

Хотя было классно, если бы любой язык мог компилироваться в него и все бы освободились от JS-папаши.
#199 #739677
>>739644
Он ничем не отличается же.
Выполнение не ускорится. Ускорится лишь парсинг, потому что wasm - суть ast
Исполняться будет в той же vm, как и обычный js
При этом wasm слишком низкоуровневый, ив него еще даже не завезли работу с объектами.
А это значит что к окружению не подцепиться, пока еще.

С тем же успехом можно и сейчас транспайлить из других языков в js, максимально оптимизируя код по asm.js
Это одно и тоже.
wasm не приносит ничего нового, чего нет или не будет в обычном js
>>739680
#200 #739680
>>739677

>Выполнение не ускорится.


Если не считать что жс - тормозное говнище, которое даже v8 не вытаскивает, то да. На практике - нет, такой хуиткой можно будет достигнуть перформанса явы.

Чтобы не истекали говном, оставлю стандартно http://benchmarksgame.alioth.debian.org/u64q/javascript.html
#201 #739683
>>739644
Вам дебилам куча прайм пипл, с учетом самих создателей wasm твердит что у них разные задачи, но видимо бестолку.
>>739712
#202 #739684
>>739680

>тормозное говнище


Самое быстрое из интерпретируемых.

>vs Java


С плюсами сравни ещё, ебан.
>>739695
#203 #739685
>>739680
Дурачек.
wasm ничего не ускорит.
пиши оптимизированный код сейчас, и будет тоже самое.

По факту все ждут не wasm а оптимизирующих компиляторов. Потому что сами писать не умеют.

А wasm для этих самых компиляторов.
wasm это блядь просто AST
>>739698
#204 #739695
>>739684
А почему ты считаешь что такие сравнения == говно?
мимоньюфаг
>>739701
#205 #739698
>>739685

>пиши оптимизированный код сейчас, и будет тоже самое.


Дай мне возможность не вычислять типы в рантайме и ебаться с указателями как в плюсах вместо копирований на каждый пук - напишу.

>wasm это блядь просто AST


Это в первую очередь возможность эскейпнуться от сборщиков мусора, юзать многопоточность и писать то, что жс не позволяет.
#206 #739701
>>739695
Потому что ему пичот. Раньше можно было сказать - да, интерпритируемый, не корректное сравнение. Теперь он так же компилируется в байткод, но ему не помогает.
>>739738
#207 #739707
>>739698

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


Ты поехавший?
Этого не будет.

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

>Дай мне возможность не вычислять типы в рантайме


wasm их так же будет вычислять в рантайме.

Ты плохо понимаешь что такое wasm похоже.
#208 #739711
>>739698

>не вычислять типы в рантайме


>эскейпнуться от сборщиков мусора


>юзать многопоточность


>писать то, что жс не позволяет.


Представил твою фрустрацию, когда ты выйдет wasm.
Спасибо. Ты сделал мой вечер.
#209 #739712
>>739683
Двачую этого. Этим дебилам уже в шапку вынесли ответ на вопрос, но они продолжают сравнивать васм и жс. Давайте ещё питон и свифт сравнивать.
#210 #739721
>>739698

>не вычислять типы в рантайме


Всегда будет.
Для статической компайл-тайм есть препроцессоры.

>сборщиков мусора


Пили поверх типизированных массивов свои типы данных. Там тебе голая память, на здоровье.

>юзать многопоточность


Она предоставляется окружением. В браузерах есть webworkers
У ноды нет и не планируется многопоточности, откуда wasm ее возьмет по-твоему?
У ноды есть модули реализующие кластер из процессо.

>писать то, что жс не позволяет.


WebAssembly не даст писать ничего, чего не позволяет писать js. Он даст лишь иной синтаксис, для представления скриптов, удобный машине,а не человеку. Всё.
#211 #739737
Т.е. после появление wasm можно будет наконец писать клиентские html5-игры, которые каждый школьник не сможет хакнуть из консоли или спиздить для показа на другом домене?
>>739744
#212 #739738
>>739701
Падажжи, ты сравниваешь жс-движок с виртуальной жава-машиной? Ты вменяемый?
#213 #739744
>>739737
Пиздец, какой же ты мудак блять. Почему, сука, вы не учите основы веба, как он работает, а сразу лезете в жс? А? А? Пидоры
>>739745
#214 #739745
>>739744
у меня опыт js > 5 лет. просто я про wasm не очень понял.
>>739746>>739749
#215 #739746
>>739745
p.s. Я к тому, что будет ли возможность представлять исполняемую в браузере огику каким-то байт-кодом, а не человекочитаемым скриптом и не уродливым обфускатом.
>>739747>>739755
#216 #739747
>>739746
логику
#217 #739749
>>739745
И что ты пять лет делал, формсы на жквери отправлял? С тру-5-летним стажем ты б такую хуйню не спрашивал
27 Кб, 576x378
#218 #739755
>>739746
wasm это AST
он читается человеком.

И потом, wasm манипулирует все теми же сущностями vm. А vm управляется из рантайма. Так что, что можно будет хакнуть, как и прежде, не беспокойся.

Пикрелейтед, то как wasm будет выглядеть для человека, например в дебаггере.
>>739756>>739775
#219 #739756
>>739755
лиспом завоняло чет
>>739758
#220 #739758
>>739756
Нет. Это ближе к LLVM IR.
От лиспа там нет ничего.
Это именно ассемблер.
Только не для твоего нативного процессора, а для js-engine
>>739761
#221 #739761
>>739758
А компилятор из JS в эти скобки будет?
>>739764>>739767
#222 #739764
>>739761
Нет.
Из asm.js разве что.
Но если бы ты мог писать asm.js руками, то и wasm сможешь писать руками.
#223 #739767
>>739761
Компилятор это ты.
Если ты пишешь ебанистический код, где в циклах создаешь замыкания, и ебашишь метапрограммированием повсюду. То в какой бы wasm ты чего не переводил - ничего не измениться.
>>739768
#224 #739768
>>739767
я сейчас думаю не о скорости, а о банальной защите исходников.
>>739771>>739774
#225 #739771
>>739768
Так они ничем не защищены же.
Это тот же asm.js ином представлении.
Из wasm легко переводится в js
А уж деобсфукация js
это сам понимаешь, зависит от объема и логики.
>>739773
#226 #739773
>>739771
Нет, разница всё-таки есть. Ты сложную программу и на С++ (asm), и на Java (байткод) заебешься восстанавливать из каши, которая получается после компиляции. Почему такого же не сделать для JS.
>>739776
#227 #739774
>>739768
Чтобы перевести из JS в WASM, тебе надо преобразовать свой js код в asm.js совместимый. А для этого придется отказаться от многих вещей, и использовать лишь надможество js.

А вот из WASM в JS (asm.js) переводится легко.
#228 #739775
>>739755
Нечитаемая параша, а зачем это нужно, анон, объяснишь?
>>739777>>739778
#229 #739776
>>739773
Так с тем же успехом, ты можешь защищать сейчас свой код, если будешь писать на asm.js
Это тоже самое.
#230 #739777
>>739775
В эту парашу должно быть легко скомпилировать многие языки, например. Сейчас всякие дарты компилятся в JS, а будут сразу в это.
>>739779>>739780
#231 #739778
>>739775
Для упрощения написания компиляторов из других языков.

Но, не принося никаких фич из этих других языков, которые нельзя бы было реализовать на js
#232 #739779
>>739777
То есть писать на нем не надо будет?
>>739782>>739783
#233 #739780
>>739777
Сейчас все компилится в asm.js
wasm это тоже самое.
Только ужато до байткода.
Ускорение только на уровне парсинга исходного файла. Все.
#234 #739782
>>739779
Надо будет.
Разработчикам компиляторов.
#235 #739783
>>739779
Только при желании.

WASM даёт возможность писать браузерные клиентские программы не только на JS. Отсюда и опасения, что JS-у хана.
>>739788>>739789
#236 #739788
>>739783
А что работает быстрее?
>>739790>>739794
#237 #739789
>>739783
Но возможностей никаких не будет, сверх тех, что и так доступны из js
#238 #739790
>>739788
Будет гонка компиляторов в wasm из разных языков, очевидно. Как бы только JS тут не отстал.
>>739797>>739799
#239 #739794
>>739788
Ничто. Одинаково.
Про asm.js знаешь?
>>739796>>739797
#240 #739796
>>739794

>Одинаково.


Ага, если на js писать как на asm.js
>>739806
#241 #739797
>>739794
Сейчас читаю спецификацию.

>>739790
Мне очень нравится js, все, за что его не любят программисты других языков, для меня наоборот манна небесная.
>>739862>>739879
#242 #739799
>>739790

>Как бы только JS тут не отстал.


Пока все будут придумывать как им изъебнуться чтобы представить свои стипы и стркутуры из других языков, в типы и структуры на js, в то время когда в js они уже представлены?
Конечно, как бы не отстал, да..
#243 #739806
>>739796
У них разные задачи.
В wasm нет объектов.
#244 #739810
Весь этот хайп он именно хайп.
Все думают что вот будет, кококок.

Суть в том, что wasm не приносит никаких новых возможностей, для того, чтобы компилировать из других языков в js.
Это уже сейчас можно делать.
Например есть emscripten. Он и останется, только на выходе будет байткод.

Если бы кому-то надо было компилировать в js Хаскель\руби\го\питон\етк, то и компилировали бы уже давно.

Но никому не надо.
А если и есть какие-то поделки, то они все тянут с собою ебанистические рантаймы, и ими никто не пользуется в серьез.

Все так и останется.

Wasm нужен именно для компияторов. ЧТобы использвовать их оптимизации при алгоритмах с числодроблениями например.
>>739813
#245 #739813
>>739810
Алсо, вместе с wasm придут расширения спеки, типа совместимых дататайпов с низкоуровневыми языками, или SIMD
Но пользоваться ими можно будет и из js

Те кому и сейчас нужны оптимизации и так пишут оптмизированный код, и задействую всякие ништяки типа TypedArray которые есть уже давно.
#246 #739862
>>739797
Поддвачну пожалуй.
#247 #739879
>>739797

>Мне очень нравится js, все, за что его не любят программисты других языков, для меня наоборот манна небесная.



На твой взгляд, есть вещи которые ты бы исправил? Может что-то выкинул бы как лишнюю сущность? Может что-то добавил, а что-то реализовал бы иначе?
>>739891>>739928
#248 #739891
>>739879
В новом JS появился новый пиздец: паттерны наподобие Array.prototype[Symbol.iterator]. Раньше нубов пугали с помощью [].slice.call(arguments), теперь будут вот этим.
>>739899>>740795
#249 #739899
>>739891
Ну Array.prototype[Symbol.iterator] это метауровень, это полезно и нужно, а [].slice.call(arguments) простое делегирование.
>>739900
#250 #739900
>>739899

>а [].slice.call(arguments) простое делегирование


по-моему, главная уловка в том, что новички не знают о ебанутой природе объекта arguments, который не массив, но с параметром length.
>>739908>>739917
#251 #739908
>>739900
Это описывается в каждом учебнике.
Так что если какой-то новичок этого не знает, то он какой-то странный новичок.

Уловкой тут было бы правильно назвать, что конструкция

>[].slice.call(arguments)


на каждый вызов будет создавать экземпляр объекта
И вернее использовать Array.prototype,slice.call

Это разумеется мелочь, и в отдельных случаях экономия на спичках. Но выходит так, что опуская подобные мелочи в самом начале, люди во-первых не до конца понимают архитектуру языка, а во-вторых приучаются писать плохой код, потому что во-первых.

То же самое с замыканиями и прочими вещами.
На хеллоу-вордах, много замыканий не страшно разумеется. Но им кто-то видимо говорит это так. что это нес страшно вовсе, потому как потом они запиливают эти замыкания в циклах, на каждый чих и все такое прочее.

Переучиваться потом сложнее, чем понимать сразу.

К слову слайсить arguments тоже нет необходимости всегда, а только лишь тогда, когда тебе нужен этот аргументс полностью как массив. Но я часто видел, как люди слайсят его и просто, чтобы например получить последний аргумент (зачем-то).

Печально то, что многие не вникают в суть той или иной конструкции, да.
#252 #739917
>>739900
Не знаю, зачем его слайсят всегда, создавая новый объект, когда можно просто заменить прототип

>Object.setPrototypeOf(arguments, Array.protytype


)
>>739924
#253 #739924
>>739917
Ты че мутируешь?
>>739926
#254 #739926
>>739924
Что?
>>739935
#255 #739928
>>739879
Не он, но отвечу.

Добавил бы статическую типизацию и расширенный ООП уровня шарпа. Тайпскрипт идеален, жалко его нужно компилировать и пока нет движков, выполняющих его напрямую.
#256 #739930
>>739928
А быстро ли будет он напрямую выполняться со всеми этими проверками?
#257 #739932
>>739928
В чем проблема компиляции? Тот же шап, нужно компилировать в IL, который выполняет CLR, тот же механизм ts->js->browser/node.
SystemJS, кстати, может загружать .ts файлы, и компилировать их уже в браузере.
#258 #739935
>>739926
Аргументы.
#259 #739940
Ангуларобоги, подскажите. По нажатию на Enter отправляю сообщения в чат и делаю содержимое инпута равным "", курсор после нажатия перескакивает на следующую строку. Как изменить поведение курсора, чтобы он оставался на месте после нажатия на энтер?
>>739943>>739949
#260 #739943
>>739940
Найти и закомментировать код, который заставляет курсор перескакивать, лол.
#261 #739948
Сап. Насколько встроенные методы завязаны на встроенные объекты?

Если я перепиливаю весь рантайм, меняю прототипы у встроенных объектов и все такое прочее. Есть ли вероятность того, что где-то какой-то метод завязан на метод встроенного объекта, а не использует его через какую-то внутреннею ссылку?

Проще говоря, если я например переопределю Array.prototype.sort
Есть ли вероятность что сломается какой нибудь Element.prototype.someMethod ?

(речь только о встроенных объектах)
#262 #739949
>>739940
Гугли preventDefault
>>739977
187 Кб, 1920x1080
#263 #739954
вангую в итоге скрипт на тыщу строк
#264 #739961
>>739954
Используй === вместо ==, когда тебе не нужно приведение типов.

У тебя много таких вещей, как например

if (memoryList.style.display) {
memoryList.style.display = ..
}else{
memoryList.style.display = ..
}

Каждый раз, у тебя запрашивается сначала объект memoryList потом memoryList.style а уже потом поле memoryList.style.display

Вместо этого вынеси один раз memoryList.style в переменную и уже дальше используй style.display
>>739967>>739968
#265 #739967
>>739961
спс, учту
#266 #739968
>>739961

>Вместо этого вынеси один раз memoryList.style в переменную и уже дальше используй style.display


Это копейки рядом с временем операции по применению любого стиля.

>>739954
А что, jQuery уже не в моде?
#267 #739969
>>739954
Алсо, в цикле у тебя там memoryButtons.children.length
Проверяется каждый раз, хотя количество кнопок статично.
Зачем?

опять же выноси в переменную. Не дергай объекты каждый раз, тем более children возвращает живую коллекцию

Приучайся писать оптимизированный код сразу.
Пытайся понимать, что ты делаешь, каждый раз, чтобы понять, где ты что-то делаешь не хорошо.
#268 #739972
>>739968

>Это копейки


Я уже писал, чем чреваты такие копейки в будущем. >>739908
#269 #739974
>>739968

> jQuery уже не в моде


А это модно, учить язык с фреймворков?
#270 #739977
>>739949
Спасибо, решил проблему. Следующий вопрос, необходимо по комбинации shift+enter не слать сообщение в чате, а переходить на следующую строку в чате. Как сделать?
>>739980>>739982
#271 #739980
>>739977
Отлавливаешь нажатие на клавишу (enter)
и в обработчике смотришь не зажата ли при этом shift

Посмотри в консоли на event который передается в обработчик, там вроде даже есть специальный флаг зажата ли shift
>>739988
#272 #739982
>>739977
Лови keydown и смотри
>>739988
#273 #739987
>>739968
я за полгода еще даже ваниль толком не усвоил, какой жиквери
>>739992
#274 #739988
>>739980
>>739982
Да, нашёл флажок. Спасибо.
#275 #739992
>>739987
jquery потому и советуют, ибо он проще ванили.
Но это не тру, начинать не с ванили.
Все правильно делаешь.
>>740000
#276 #740000
>>739992
да наверное, если заюзать жиквери и всякие библиотеки, то код станет в 10 раз короче
>>740001
#277 #740001
>>740000
Сейчас ваниль на том уровне, когда и на ней можно писать не длинее жиквери.
#278 #740003
>>739908
тут поддвачну, с начала месяца читаю Кантора там же все это есть. Какие-то тупые новички раз в элементарное не въезжают
#279 #740005
>>739928
А я бы ничего бы не менял. Js вполне логичен, если сесть и разобраться в нем самом, а не сравнивать с другими яп и тем как привык, как не привык.
Но мое мнение никому не интересно, поэтому и выходит что могу на двачике только его писать
>>740007
#280 #740007
>>740005
А меня например коробит, от нововведеной конструкции class которая не нужна, а еще от испокон веков поведшейся концепции хранить конструктор отдельно от прототипа.

Должно быть что-то типа
Object.new () {
return Object.create(this)
}

Как раз это бы было максимально логично.
И так, чтобы инстансить можно было любой объект. А если в нем не прописан конструктор, то возвращается именно Object.create(this)
>>740010>>740011
#281 #740010
>>740007

>меня например коробит, от нововведеной конструкции class которая не нужна


Недавно переделал все фабрики в своём nodejs-проекте под class'ы - код стал намного чище. Стало можно без изворотов делать многоуровневое наследование.
#282 #740011
>>740007
class Creature {}
class Feline extends Creature {}
class Lynx extends Feline {}

Запиши это без классов.
>>740014
#283 #740014
>>740011
Я тебе тоже самое могу сказать.
Запиши мне с помощью class
В прототип поле field со значением true

Или в статик поле запиши?

А наследование реализуется как и прежде. Только раньше можно было запилить удобную обертку, и она бы не выбивалась из общей концепции. А этот сахар новомодный, как раз выбивается, потому что он не повторяет поведения.
#284 #740068
Обезьяны, у кого сегодня null null?
http://elm-lang.org/blog/farewell-to-frp
#285 #740070
>>737862 (OP)
Жаваскриптаны, оцените хуйню которую я написал на жкверях.
https://jsfiddle.net/Lk7w309j/
Код вначале скрипта - плагин на колесо мыши (не нашел как иначе добавить), дальше мой. Сносно или пиздец?
>>740494
#286 #740156
>>739680
>>739644
Господи, все эти дилетанты, которые абсолютно не понимают как работают браузеры, которые абсолютно не понимают зачем и почему есть жс. Кичиться какими-то бэнчмарками, но не знать про то, что бОльшую часть времени выполняются рендер, обращения к дому и к прочим браузерным апи.

Прежде чем открывать рот, хоть вот это посмотрите.
https://www.youtube.com/playlist?list=PL7664379246A246CB
>>740167
#287 #740167
>>740156

>в тестах тестируют node js


>но не знать про то, что бОльшую часть времени выполняются рендер, обращения к дому и к прочим браузерным апи.


>все дилетанты


Подмойся.
>>740177
#288 #740177
>>740167
Я про отсутствие фундаментальных знаний. Вот и ты не понимаешь как нода работает, поэтому бэнчмарки как показатель ПРОИЗВОДИТЕЛЬНОСТИ можешь засунуть куда подальше вместе с:

> transliterated from Mike Pall's Lua program


> transliterated from Rick Branson's Ruby program

>>740181
#289 #740181
>>740177
Я все прекрасно понимаю. Но спорить с персонажем с завышенным ЧСВ, который не предоставил опровержения бенчам (хотя ведь если он такой всезнающий, для него бы не составило труда переписать тест под ноду, и доказать свою правоту по в-рослому, а не кукареканиями - вы врееетии) и поклоняется каким-то аффторитетам, типа Крокфорда. О чем с тобою говорить.
>>740183
#290 #740183
>>740181
Че, Крокфорд не авторитет?
>>740184
#291 #740184
>>740183
Авторитетов не может быть вообще.
#292 #740204
Поясните по JWT.
Данные, которые находятся в теле, довольно предугадываемые. Что мешает злоумышленнику, зная вход, выход и алгоритм, подобрать наш секрет и подписывать себе админские токены?
>>740214
#293 #740208
>>739680
А почему не все тесты в ноде мультипроцессорные? Не чесна так!
3 Кб, 314x264
#294 #740214
>>740204

>подобрать наш секрет


Каким же образом?
>>740225
#295 #740225
>>740214
Самое простое - отксорить. Конечно, с hmac не пройдет, но первая интуитивная мысль - почему бы и нет?
Сейчас читнул SO, говорят, можно только брутфорсом.
>>740227
#296 #740227
>>740225

>Сейчас читнул SO, говорят, можно только брутфорсом.


В том то и дело, ты представляешь себе возможным брутфорсить JWT токен со сроком годности? С учетом того, как легко присечь подобного рода брутфорс, заморачиваться на эту тему не стоит.
>>740233
#297 #740233
>>740227
Да это понятно, я думал, вдруг есть что-то, кроме брутфорса.

>легко присечь подобного рода брутфорс


А вот это не правда. Перебор на клиенте же.
>>740237
#298 #740237
>>740233

>Перебор на клиенте же.


Ну будешь ты с клиента машины спамить, как это помешает серверу контроллировать токен спам?
>>740239
#299 #740239
>>740237
Мы на сервер ничего не передаем.
Подбираем секрет, пока не сможем верифировать наш же токен.
>>740245
#300 #740245
>>740239
Интересно, я наверное просто не в теме, я помню читал статью про client side bruteforce и она по сути сводилась к тому, что это стандартный брутфорс, просто ты не отсылаешь токены через кукисы атакующей машины, а используешь клиента для выполнения атаки. Я не совсем понимаю, как ты без сервера узнаешь что токен прошел верификацию, когда сам факт верификации объявляется сервером?
>>740249>>740338
#301 #740249
>>740245
Так верификация это просто декодирование, используя входное сообщение, алгоритм и секрет.
Делаем hmac_decode, пока не получим выходной json.
Конечно, есть вероятность коллизии, что hmac_decode(secret1) = hmac_decode(secret2). Но мы даже до нее вряд ли сможем забрутить.
#302 #740267
Посони, кажите где косячу в скрипте? Надо получить среднее арифметическое, значения переменных приходят корректно, но полученное значение не выводит в <p> http://pastebin.com/k160tNZn
мимопитонист
>>740271
#303 #740271
>>740267
Ну ты б свой $('p.hui') бы хоть проверил сначала, питонист.
>>740290
#304 #740277
Есть html таблица, из неё нужно вытащить данные, которые находятся в ячейках и сформировать ассоциативный массив, после чего сформировать xml страницу с этими данными. Как это осуществить, аноны?
>>740287
#305 #740287
>>740277
думаешь, тебе тут готовый скрипт напишут?
я блять не представляю даже где у тебя сложность возникла
>>740288
#306 #740288
>>740287
та не готовый скрипт, а что делать вообще
как из html таблицы массив сформировать, как потом xml из него создать
>>740293
#307 #740290
>>740271
Поясни что не так? Или просто мамкин петросян упражняется?
>>740293
#308 #740293
>>740288
Ну не будь мудаком.
http://stackoverflow.com/questions/11383236/how-to-output-html-form-data-to-a-xml-file-using-javascript
>>740290
У тебя там проблема в том, что ты пытаешься взять p по классу, а у него по факту id: p.hui => p#hui.
>>740298>>740314
#309 #740298
>>740293
блё, я так и знал, что в какой-то мелочи лоханулся. Спасиб
#310 #740314
>>740293
Спасибо!
#311 #740338
>>740245
Почитай про jwt. Сервер даже не хранит токены.
#312 #740468
Тут чувак в презентации говорит, мол если юзать реакт с жуквери, то виртуал дом похерится, потому что реакт не будет понимать, где свои изменения, а где жукверевские:

https://youtu.be/YJNUK0EA_Jo?t=938

Это что значит, если что-то пилишь на реакте, нельзя на эту вещь одновременно как-то другими штуками влиять?
>>740485
#313 #740485
>>740468
Да никто тебе не запрещает, влияй.
>>740496
#314 #740494
>>740070
Бамп же
#315 #740496
>>740485
Но реакт тогда пробется и не сможет отслеживать изменения дома извне? Или сможет?
>>740498>>740503
#316 #740498
>>740496
Зачем тебе жеквере в реакте?
#317 #740503
>>740496
Жеквери можно использовать не только для манипуляций с домом :^)
>>740506
#318 #740504
>>740498

>- сколько стоит доллар?


>- зачем тебе доллары?



Ты еврей?
#319 #740505
>>740498
Ну например для жеквери уи
#320 #740506
>>740503
Окей,я поставлю вопрос иначе.
Если менять дом в обход реактовского вдома, например используя ванильные методы - то вдом теряет смысл, верно?
>>740515
#321 #740512
>>740498
Пока мне это все вообще нахуй не надо, но предупрежден значит вооружен и все такое.
#322 #740515
>>740506
Да. Плюс это еще ебет в рот смысл реакта как инструмент для однообразного отображения куска дома из определенного стейта.
>>740531
#323 #740531
>>740515
Это значит, что реакт монополизирует ДОМ.
Если кто-то написал что-то на реакте. А потом кто-то захотел, что-то допилить, не затрагивая всю архитектуру (добавить ебаных снежинок, лол, не суть что). То это все пойдет по пизде?

Во времена библиотек, такого не было.
>>740534>>740542
#324 #740534
>>740531
это значит что снежинки тоже на реакте надо пилить, и мы тихонько подходим к мысли что тот, кто не знает реакт, будет беспомощный лох.
#325 #740542
>>740531
Ну конкретно для снежинок добавим ветку в дом, которая будет на том же уровне что и корень реакта.
>>740547
#326 #740547
>>740542
>>740534
Это означает именно монополизацию.
То с чем так долго боролись, по типу модификаци нативных обхектов, расширения\изменения нативных прототипов и все такое прочее, что мешало бы в проекте использовать сторонние модули, или дополнять проект не зная third_party библиотек.
Все это вылезло в ином месте.
>>740558>>740585
#327 #740558
>>740547
Я бы не рассматривал это как что-то ужасное.
Времена, когда надо было добавлять свистоперделки на свой сайт на народе уже давно прошли. И для задач простого представления информации давно уже придумали кучу элегантных решений.

Но сейчас то задачи сводятся к другому, люди хотят видеть полное приложение, к чему хтмл и дом приспособлены очень плохо, они не создавались для этого. Для этого и придумывают такие вещи как виртульный дом, и реакты, чтобы создать некую систему взаимодействия и это не предусматривает кучу костылей.

В любом случае стек и инструменты это твой (или твоего начальства) выбор.
>>740571>>740580
#328 #740559
>>740534

>будет беспомощный лох.


Если я заказываю проект, с учетом того, что правок в его архитектуре не будет, но я может в будущем захочу допилить там лишнюю формочку, или добавить выпадающую менюшку, а так как я не вау-программист, и мои знания ограничиваются ванилой и джеквери. Я плачу за эту работу, и мне запиливают так, что я потом нихуя не смогу сделать не нанимая кого-то снова - это не круто.

Чтобы починить\заменить вилку от провода, мне не нужно знать физику\электрику.

Чтобы заменить масло или ремень, не нужно быть автослесарем.
>>740568
#329 #740568
>>740559

> Чтобы заменить масло или ремень, не нужно быть автослесарем.


Если это шестерка твоего бати (веб 2.0), но не если это болид формулы 1.
#330 #740571
>>740558
Парадокс в том, что когда всякого рода монополизацию делали с помощью неразрекламированных продуктов, хотя точно так же отлично документированных. Сообщество взрывалось - да как так можно.
Как только монополизацию произвели корпорации - сообщество проглотило и попросило еще.
>>740573
#331 #740573
>>740571

>когда всякого рода монополизацию делали с помощью неразрекламированных продуктов



например?
>>740575
#332 #740575
>>740573
Например sugar.js
>>740589
#333 #740579
Ну вот что за хуйню он тут лепит? Монополия, блядь. Вообще охуеть. Запилят тебе на бекбоне с кофескриптом в *.eco темплейтах приложение и захочется тебе добавить завтра новый кусок к нему, знаешь что ты будешь делать? Правильно, будешь ебашить бекбон на кофе в ико темплейтах или с нуля всё переписывать под то, что тебе надо. А знаешь что будет если тебе на ангуларе запилят такое приложение? Всё верно, будешь хуярить на ангуларе, может ещё и тайпскриптец подтянуть надо будет. Или, если ты не "вау-программист" будешь искать того, кто знает стак который у тебя в продакшене. Всегда так было и всегда так будет.
>>740582>>740588
#334 #740580
>>740558

>к чему хтмл и дом приспособлены очень плохо


Чем это?
Все тормоза не из-за них, а из-за возможностей которые они предоставляют.
А эти возможности очень широкие.

Если ебашить динамические интерфейсы на какой-нибудь нативной либе, то там тебе придется все примитивы реализовывать самому, и рендерить самому, когда тебе виджетов будет не хватать.

Собственно никто тебе не мешает точно так же делать и в вебе. Например различные онлайн-офисы, не используют для рендеринга дом, потому что это не рационально. Но то же самое было бы и в нативных гуишных либах, точно так же отрисовывали бы на контекстах в ручную.
#335 #740582
>>740579

>Всегда так было


В том то дело, что не было.
>>740592
#336 #740585
>>740534
>>740547
Блять, поехавшие. Шедоу-ДОМ это неофициальный стандарт, который скоро будут поддерживать все браузеры. Второй ангулар тоже в него может.
>>740590
#337 #740588
>>740579
двачую. совсем уж ебнулись эти джиквери еба погромисты
#338 #740589
>>740575
Это инструменты статичного веба, который еще сам Тим Бернес-Ли придумал. И тормоза от того как костылями с этим борются.
Канвас это тоже костыль.
>>740593
#339 #740590
>>740585
При чем тут shadow дом и vdom?
Шадоу дом такой же дом, как и обычный. Только со своим контекстом.

А вдом, это легковесная копия, это вообще не дом.
>>740598
#340 #740592
>>740582
Конечно было. Инструментов меньше в целом было меньше, поэтому менее разношёрстные стаки были, а по сути если у тебя было extjs приложение, то extjs бы ты и писал. Короче ни о чем вискас, я пошел пить кофе.
#341 #740593
>>740589

>Канвас это тоже костыль.


Канвас есть не только в вебе. Тебе браузер все рендерит на собственном канвасе.
>>740596
#342 #740596
>>740593
Я конкретно про браузерный канвас. И хтимл и всякие его друзья типа хмл тоже есть не только в вебе.
#343 #740598
>>740590
shadowDOM > vDOM потому что
vDOM временный костыль
>>740604
#344 #740604
>>740598
shadow dom - это дом. со всеми вытекаюшими.
вдом - это объект, который только биндится и обновляет куски настоящего дома.

С тем же успехом, ты мог бы сам управлять обычным домом. Но совсеременный программист слишком глуп для этого, ему нужно чтобы кто-то делал это за него, чтобы он не косячил.

Когда shadow dom придет всюду, те кто сейчас не пользуются обычным домом, так же не будут пользоваться теневым. Будут так же использовать такие же прослойки как реакт, потому что с домом они обращаться не умеют.
>>740606
#345 #740606
>>740604

>Будут так же использовать такие же прослойки как реакт, потому что с домом они обращаться не умеют


А я и не против. Только я предпочитаю думать, что это дополнительный уровень абстракции для удобства, а не я тупой.
мимопроходил
>>740742
#346 #740736
Как же я заебался. Нужна регулярка для валидации формы на количество символов. От n до m. Ненавижу регулярки. Спасай, анон.
#347 #740738
>>740736

>регулярка на количество символов


Это шутка?
#348 #740742
>>740606
Давай поебемся) я буду нежно и страстно целовать тебя, делать массаж, гладить твою нежную попку и теребить языком соски. Потом войду в тебя, мы сольемся в единый организм, состоящий из оргазма, наслаждения, похоти, чувств, тишины, тоски по детству, низости первородного греха, голубого неба, ветра в поле, ночного костра..затем я поцелую тебя в лоб, прижму к себе и ты укутаешься в мои объятия, предавшись миру Морфия. Я же включу недосмотренный тайтл и добью оставшиеся 5 серий. Выключив ноутбук, я, ощутив тепло твоего тела и услышав размеренное спокойной дыхание, постараюсь уснуть.
#349 #740763
>>740736

>валидации формы на количество символов


Что это значит?
#350 #740795
>>739891
[].slice.call(arguments) - это вызов метода slice у array.prototype для преобразования массивоподобного объекта в массив, да? Я недавно js начал изучать
>>740811
312 Кб, 1199x899
211 Кб, 405x358
#351 #740801
>>737862 (OP)
Нужно побыстрее вьехать в D3.js, дайте совет, что ли.
>>740835
#352 #740811
>>740795
Да.
Поясните мне, стоит ли писать Array.prototype.slice или [].slice достаточно?
#353 #740814
>>740811
эскобар.жпг
#354 #740833
#355 #740835
>>740801
Насколько быстро?
Если есть пара дней, то http://chimera.labs.oreilly.com/books/1230000000345/index.html
>>740924
49 Кб, 1280x421
#356 #740862
>>740867
27 Кб, 921x277
#357 #740867
#358 #740869
>>740736

>/^(.{n,m})$/


Не благодари, короче.
14 Кб, 433x222
#359 #740879
Объясните феномен.
>>740884
#360 #740884
>>740879
Оберни в скобки. Заработает.
>>740885
#361 #740885
>>740884
Можно ещё плюсик впереди поставить, тоже заработает. Но почему ошибка-то.
#362 #740888
>>740885
Потому что имени нет.
Может легаси поведение.
#363 #740891
>>740885
Ты пытаешся использовать на ходу анонимную функцию, не присваивая ее никуда, и не используя в качестве колбека.
Скобочный блок возвращает последний результат, поэтому оно будет работать.
А плюсик это вообще приведение к числу так что я хз что там у тебя работает
#364 #740892
>>740885
Советую почитать, как работает консоль и что такое function expression
>>740902>>740909
#365 #740897
>>740891
Ну плюсик приведёт функцию к NaN и вернёт его.
#366 #740900
>>740891

>Ты пытаешся использовать на ходу анонимную функцию, не присваивая ее никуда, и не используя в качестве колбека.


И что?
Ты когда считаешь 1+2 никуда не присваивая, или используешь любой литерал в репле, это же работает.

>Скобочный блок возвращает последний результат, поэтому оно будет работать.


Подтяни свои знания
Во=первых стрелочные функции, а что такое скобочный блок я не знаю.
А во-вторых ()=>{10} не вернет тебе 10
Авто-ретурн работает только для однострочных функций.
>>740907
#367 #740902
>>740892
Консоль работает через eval
#368 #740907
>>740900

>Скобочный блок


>()=>{10}


Я не про это. Я этот пример вообще не увидел, лол. Я про это (function(){}).
В глаза ебусь.
#369 #740909
>>740891
>>740892
То есть по-вашему нормально, что

> var x = eval('100'); // x = 100


работает, а

>var x = eval('function(){}'); // SyntaxError


не работает?
>>740913>>740914
#370 #740913
>>740909
Если знать как работает рантайм, такое смущать не будет
>>740920
#371 #740914
>>740909
Ты получаешь ошибку потому что это поведение бессмысленно. Ты создаешь анонимную функцию, не присваиваия ее в переменную и не в качестве коллбека. То есть ее невозможно вызвать вринципе, к ней нет доступа.
>>740915>>740917
#372 #740915
>>740914
Ты в глаза долбишься что ли?
Я присваиваю ее в переменную x

Если следовать твоей логике то eval('100') еще более бессымсленно, но почему-то ошубику не выбрасывает.

Алсо ты проебал момент что eval('()=>{}') работает отлично. а вот с function(){} нет.
так что твое объяснение высосано из пальца.
#373 #740917
>>740914

>бессмысленно


Это твое существование бессмысленно.
Только посмотрите на него.
Изобрели компиляторы, которые оценивают смысл написанного программистом кода.
>>740918
#374 #740918
>>740917

>Твоя программа не разделяет моей картины мира, я не буду ее выполнять.

#375 #740920
>>740913
Да это понятно.
Просто забавное поведение.
Хочется докопаться до причины.
Arrow же пропускает.
Мне кажется либо это arrow забыли не пропускать, либо наоборот, осталось легаси какое-то.
>>740923
#376 #740923
>>740920
Хотя arrow наверное правильно пропускает, он же на лету оборачивается в bind
412 Кб, 1280x971
#377 #740924
>>740835
Спасибо, годно.
#378 #740928
>>740811

> [].slice лучше не писать, так как создаётся лишний [] только чтобы взять свойство его прототипа.

#379 #740929
>>740928
без >
#380 #740933
>>740928
Забавно, что в npm пакетах которые все используют не глядя хуй клали на подобные оптимизации
https://github.com/juliangruber/isarray/blob/master/index.js
>>740935>>740937
#381 #740935
>>740933
Не нравится - контрибуть!
>>740952
#382 #740937
>>740933
Потому что так и есть.
От подобных петушков всегда проигрываю >>740928. Ноль понимания того, как работает компилятор
>>740952
#383 #740938
Анонсы, нужно было программу написать которая просит ввести число больше 100, а иначе (кроме выхода) будет опять выводить окно и спрашивать.

Я только начинаю изучать язык и не пойму почему интерпретатор ругается на Break?

while (true);{
var Number = prompt(+"Введите число больше 100",'');
if (Number > 100 || Number == null) break;
else (Number < 100) continue;
}
#384 #740939
>>740938

>var Number

>>740942
#385 #740942
#386 #740947
>>740938

>Анонсы, нужно было программу написать которая просит ввести число больше 100, а иначе (кроме выхода) будет опять выводить окно и спрашивать.



while (+prompt('Введите число больше 100') <= 100) {}
>>740948
#387 #740948
>>740947
Мне другой код не нужен, объясните почему этот не работает.
>>740949
#388 #740949
>>740948
а хули ты ; после while() поставил?
>>740950>>740957
#389 #740950
>>740949
p.s. Да там полный пиздец вообще.

while (true) {
var number = +prompt('Введите число больше 100');
if (number > 100) break;
}
>>740951
#390 #740951
>>740950
бля, ну табы вырежешь
#392 #740954
>>740952
что за чертовщина
>>740958>>740962
#393 #740957
>>740949
Спасибо, ошибка пропала. Потом выдавало новую на счет continue, но мой мозг додумался что это бесполезная хуйня в ЗАМКНУТОМ цикле.
#394 #740958
>>740954
Никакой чертовщины.
Создать пустой объект дешевле, чем запрашивать цепочку из Array > prototype > slice
или по-твоему как поля ищутся в объекте. Цепочка вызова никак не компилируется в одну ссылку, потому что никогда не известно куда будет ссылаться эта цепочка в следующий момент. Язык динамический же.
>>740968
#395 #740961
while (true){
var Number = +prompt("Введите число больше 100",'');
if (Number > 100 || Number == null) break;
}

Почему-то при нажатии "Отмена" цикл не завершается, хотя в условии прописано, опять туплю.
>>740963>>740967
18 Кб, 679x96
17 Кб, 706x99
#396 #740962
>>740954
А у меня наоборот.
>>740977
#397 #740963
>>740961
У тебя в условиипрописано либо болше 100 либо null
А при отмене у тебя возвращается 0, ты же его плсиком к число приводишь.
>>740965>>740970
#398 #740965
>>740963
Даже если бы не приводил, undefined не > 100
>>740970>>740978
#399 #740967
>>740961
замени null на undefined
>>740969>>740979
#400 #740968
>>740958

>Создать пустой объект дешевле, чем запрашивать цепочку из Array > prototype > slice


По твоему в случае вызова метода из объекта, он не обращается к prototype?
#401 #740969
>>740967
вернее на NaN тогда уж. бля
#402 #740970
>>740963
Спасибо, понял.

>>740965
что простите? при чем здесь undefined?
>>740971
#403 #740971
>>740970
Когда ты жмёшь отмену в окне промпта, оно возвращает undefined.
>>740973
#404 #740973
>>740971
он возвращает null
#405 #740974
ладно, запизделся. всё равно нормальные пацаны prompt не юзают. а null тем более.
>>740980
40 Кб, 1094x304
#406 #740977
>>740962
Если только ты сделал так.
>>740981
#407 #740978
>>740965
Зато undefined == null
>>740979>>740982
#408 #740979
>>740967
>>740978
Не пизди
#409 #740980
>>740974
А еще нормальные пацаны не умеют в приведение типов.
#410 #740981
>>740977
Array всегда window.Array в браузере, это глобальный контекст.
>>740983
#411 #740982
>>740978
нахер такие приведения.
>>740984
#412 #740983
>>740981
При чем тут это.
Там константа.
>>740985>>740986
#413 #740984
>>740982
Знать надо.
>>740988
#414 #740985
>>740983
Я не создавал константу, ты где-то накосячил просто. Либо переопределил Array через супер-множественное наследование, а теперь зеленишь.
>>740987>>740994
#415 #740986
>>740983
попробуйте const prot_slice = Array.prototype.slice;
>>740990
#416 #740987
>>740985
Нет. Я тебе гарантирую это.
>>740996
43 Кб, 811x608
#417 #740988
#418 #740990
>>740986
Зачем. Это не имеет смысла.
#419 #740994
>>740985
Это ты что-то переопределил.
Вот тебе чисто открытая вкладка.
>>740995>>740997
57 Кб, 1280x720
#420 #740995
>>740994
Отклеилось.
40 Кб, 832x304
5 Кб, 330x105
#421 #740996
>>740995
>>740987
Еще раз, логика в том, что при вызове метода объекта, если не указана прямая ссылка, то обращение идет к prototype. Только в случае прямого присвоения (в фабрике) не будет цепочки прототипов. Но будет оверхед на ссылку (4 байта, вроде бы).
>>740998
37 Кб, 1280x239
#422 #740997
>>740994
>>740995
Забираю свои слова обратно. В ноде тоже наоборот.
Тогда я не знаю в чем дело.
Может в хромиуме.
>>741006>>741007
#423 #740998
>>740996
Так оверхед по памяти же, а тут замеряется время.
>>741004
13 Кб, 731x128
#424 #740999
Не так сильно, но все же да.
>>741002>>741006
#425 #741002
>>740999
В теперь ноде проверь. там тест честнее чисто логически.
>>741006
#426 #741003
Почему let так странно работает в заголовке цикла? В других языках эта переменная тоже новая каждый проход? Как теперь ловить новичков на собеседованиях.

for (let i = 0; i < 5; i++) {
setTimeout(()=> console.log(i), i*10); // 0, 1, 2, 3, 4
}
>>741010
19 Кб, 701x138
#427 #741004
>>740998
В случае фабрики - да, поэтому фабрика лучше, если объектов меньше 50 тысяч и быстродействие важнее памяти.
В случае же чистого быстродействия без создания объекта прямая ссылка, естественно, выиграет.
>>741007
25 Кб, 814x547
#428 #741006
>>740997
>>741002
>>740999
Алсо, если запускать не из консоли, а из подключенного скрипта, то Прототип снова быстрее.
>>741007
#429 #741007
>>741004
Ты мне рассказываешь какие-то очевидные вещи. Я это все и так знаю.

Но вот скажи почему
Тут так >>740995
А тут >>740997
И тут >>741006
иначе?
Все эти тесты мои. Все одинаковые.
>>741008
#430 #741008
>>741007
Оптимизация на уровне VM, очевидно.
#431 #741009
Анон, а что в реакте в качестве key использовать, когда массив перебираешь? Читал, что индекс это плохо
>>741163>>741165
#432 #741010
>>741003
Она не новая каждый проход. ее область видимости ограничена блоком.

Это тебя ловить надо.
>>741011
#433 #741011
>>741010

>Она не новая каждый проход


проверь сам, еба
>>741015
58 Кб, 858x545
#434 #741015
>>741018
#435 #741018
>>741015
ты вообще не понял о чем я говорю.
каждый проход цикла i получается новая.
нельзя ошибочно сослаться на её устаревшее значение в асинхронной функции как в случае с var.
>>741020
17 Кб, 776x425
#436 #741020
>>741018
Потому что в случае с var в момент вызова твоей отложенной по таймауту функции твоя переменная уже изменена. Там нет никакой ошибки. Ошибка в твоем не понимани как замыкаются области видимости.
64 Кб, 719x339
#437 #741041
Начал изучать JS по сайту learn.javascript.ru , остановился на одном задании и никак не мог его решить, посмотрел в ответ на схему решения, а до этого попытался понять логику и составить какой-то алгоритм решения "на бумаге", получилось что-то такое:

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 на какое-либо из чисел до него".
И я это просто осмыслить не могу немного, как это работает вообще и как это понять.
Всегда была проблема (в школе на информатике) с циклами и я не могу представить одновременную работу двух циклов сразу да и вообще в представлении каких-то логических штук у меня вечно проблемы, нихуя не понимаю, зато другие это решают без проблем а я выдумываю что-то непонятное.
>>741042>>741251
#438 #741042
>>741041
дополнение:

т.е мне решение здесь не важно, хочу понять именно логику и ОСОЗНАТЬ решение.
>>741044
#439 #741044
>>741042
Если есть сложности с пониманием алгоритма, прогони его вручную на бумаге.
Типа вот у нас есть Number=2 из первого цикла, второй цикл будет проходит от 2 до 1, то есть ни одного раза; Number=3, i от 2 до 2, делится на 2? нет, значит простое и так далее.
>>741047
#440 #741047
>>741044
Ну вот я вроде примерно так и прогонял. Сейчас через Отладчик пытался прогонять, криво получается у меня это =D

Код такой, но почему-то условие не выполняется и alert не выводит, выводит просто все числа.

var Number = 2;
var i = 1;
for (; Number <= 10; Number++) {
for (; i < Number; i++) {
if (Number % i !== 0) {
alert(Number);
}
}
}
#441 #741050
>>741047
дополнение:

кстати при таких фигурных скобках второй цикл возвращается к первому, а не переходит на if (только потом уже начинает переходить) и этого я тоже не пойму, почему так?
#442 #741053
>>741047

>((Number % i) !== 0)


?
>>741056
#443 #741056
>>741053
типо если Number делится на i с остатком, то условие выполняется, я так понял.
#444 #741089
Посоны напомните сайт где на js даются задачки, сначала суперпростые а потом сложнее, 10 уровней вроде.
>>741113
#445 #741109
>>740938

>while (true);



>почему интерпретатор ругается на Break?


А ты не пробовал читать, что имено он тебе говорит?
#447 #741118
>>741113
Оно самое!
Спасибо, анон, да пребудет код твой идеально структурирован и документирован.
#448 #741128
>>741047
Гугли решето эратосфена.
Когда-то задали подобное на практичной и пока у всех были пиздецкие нагрузки на обработку тысяч чисел, мне один зракомый сказал о решете
#449 #741145
>>741113
Клёвая штука с утра под кофе проснуться. Там задачки постоянно новые генерятся или фиксированный стак?
#450 #741155
>>741047
Бля, да не называй ты переменные с большой буквы.
>>741239
#451 #741163
>>741009
Бамп
>>741167
#452 #741165
>>741009

>массив перебираешь? Читал, что индекс это плохо


Массив перебирать по индексу это вполне ок, map и forEach в любом случае перебирают по индексу.
>>741175
#453 #741167
>>741163
У меня обычно всегда есть id, т.к. это обычно объекты с каким-то данными. Айдишник надежней всего, очевидно.
>>741176>>741179
9 Кб, 336x131
#454 #741175
>>741165
Имел ввиду использовать индекс как react id
#455 #741176
#456 #741178
>>741175
Хм, могу попробовать с сервера еще и id присылать, спасибо
>>741179
#457 #741179
#458 #741181
Как правильней, объявлять 10+ переменных или засунуть все в объект?
>>741183
#459 #741183
>>741181
Если переменные относятся к одной сущности, то проще выделить им один неймспейс в виде объекта.
#460 #741185
>>741175
Да конечно можно индекс, какая разница. Тебе нужен уникальный идентификатор, просто обычно данные редактируются и потом сабмитятся обратно на сервер, поэтому всегда есть айди. Если у тебя просто шоу каких-то фиксированных данных, то можешь по индексу.
#461 #741191
Использовал индекс и закономерно соснул, поэтому и спрашивал
#462 #741234
двачик почему когда я вывожу ключи объекта в переменную то вычисление не работает. А если не вывожу пише ну прямую obj[key] то работает

http://jsbin.com/bakamitozu/edit?js,console
>>741245
#463 #741239
>>741155
Он просто не знает, что Number - встроенный объект, который не следует перезаписывать.
>>741244
#464 #741241
Народ, а на какую кату/дан с codewars джун тянет? Или нет такого соответствия? Просто интересно, увидел у вас выше ссылку на сайт, зарегался только что, начал решать задачки.
>>741343>>741447
#465 #741244
>>741239
Даже если бы не было встроенного объекта. По соглашениям с большой буквы называют функции-конструкторы, а не обычные переменные.
>>741247
#466 #741245
>>741234
ну надо полагать потому что в неправльном случае ты меняешь переменную, а результатом выводишь изначальный объект. Работает-то он правильно. наверно стоит после умножения добавить obj[key] = objKey ?
>>741248
#467 #741247
>>741244
Видно же, что он не с нуля в js пришёл, а из другого языка. Думаю, это C#, ученный по урокам Unity.
#468 #741248
>>741245
Да работает, на нахуя опять присваивать тем более наоборот. obj[key] = objKey;

Когда я в самом начали контекст свойства объекта присвоил в переменную мне же логичней и удобней все операции совершать над переменной?
>>741249>>741282
#469 #741249
>>741248
переменная твоя должна быть хотя бы глобальной, или вообще нахуй ее убирай.
4 Кб, 387x238
#470 #741251
>>741506
#471 #741282
>>741248

>удобней все операции совершать над переменной?


Это если они мутабельная и все операции твои соответствующие.

Ты же там сначала делаешь objKey = obj[key], а потом objKey = ... Очевидно, что ты изменяешь значение переменной objKey, а не элемета массива.
Это тебе не си, где можно было бы
int z = 0;
int i = &z;
i = 5;
>>741284
#472 #741284
>>741282
э, ну выпонели, там тест * звёздочки.
#473 #741343
>>741241
Бамп
>>741367
#474 #741367
>>741343
Никакого соответствия нет. Там даны разве появились? Хотет.
>>741383
16 Кб, 198x642
#475 #741383
>>741407
39 Кб, 328x642
#476 #741407
>>741383
ну наверно так
>>741411>>741420
#477 #741411
>>741407
Лол, там 5-6 кью за час под чаек набивается. Сегодня зарегался уже набил. А вот задачки 4 и выше уже потяжелее кажутся. Так что скорее с него джун начинается
>>741447
#478 #741420
>>741407
Ох если бы.
Решаю 4-5 кью задачки, через полгода планирую начать искать место даже не джуна, а стажера хотя бы.
>>741431>>741447
#479 #741431
>>741420
нихуя у тебя свободного времени полгода
>>741452
15 Кб, 254x466
#480 #741447
>>741411
>>741420
>>741241

90% там задачек на матан, и логику которая вообще никакого отношения к продакшену и джунам не имеет.

Лучше борду(еще одну) запилите и то больше пользы будет чем от этих дрочилен на цифры.
>>741452>>741455
91 Кб, 720x1280
#481 #741452
>>741447
Ну я на кодварс подзабил пока сам. С ванили хочу соскочить, сейчас жквери изучаю, затем фреймворки начать курить с реакта.
>>741431
Да ты охуел, свободного. Я пашу на заводе по 12 часов.
#482 #741455
>>741447
в "мы вам перезвоним" скинули кстати
https://medium.com/@evnowandforever/f-you-i-quit-hiring-is-broken-bb8f3a48d324#.q2khdvree

а так спасибо за совет, но думаю все-равно понемногу решать, а то вот на интервью какая-нибудь лажа как тому телу попадется и пиздец
#483 #741494
Как отменить предыдущий ajax-запрос (или хотя бы не обрабатывать ответ сервера) если отправлен новый? ==> if(ajax){
ajax.abort();
}

не помогает, всё равно отправляется несколько
>>741497>>741512
8 Кб, 565x320
#484 #741497
>>741494
Суть такая: что отправка поиска кнопкой срабатывает дважды
>>741580
#485 #741506
>>741251
да я не код просил...
#486 #741512
>>741494
Как можно отменить запрос, который уже отправлен? Можно только отменить колбек, ждущий ответа от сервера на этот запрос.
#487 #741565
>>737862 (OP)
Работаю простым HTML/CSS верстальщиком. Параллельно учу JS. Читаю уже второй учебник. Синтаксис более менее освоил. Но не совсем понятно, что конкретно из себя представляет работа фронт-енд разработчика (да и вообще разработка сайта в целом). Допустим, есть у меня адаптивный макет, вот что с ним дальше делать?
>>741568
#488 #741568
>>741565

>адаптивный макет


Настоящий JS-кодер поворачивается и уходит, едва заслышав хотя бы одно слово из этих двух. Вёрстка - работа девочек-студенток, а не фронтенд-разработчика.
#489 #741572
>>741568
Понял-понял. Девочка-студентка сверстала макет, дальше отдает его настоящему фронтенд-разработчику. В чем заключается работа фронтендера? Опиши дальнейшие этапы разработки или подскажи, где самому почитать об этом в деталях (гугл не помогает)?
>>741578>>741579
#490 #741578
>>741572
Фронтенд разработчик должен с полуслова понимать бэкенд-разработчика и обеспечивать работу логики клиентской стороны.
#491 #741579
>>741572
Из картинки делает такие штуки:
https://poloniex.com/exchange
#492 #741580
>>741497
Дисабли кнопку, енабли в при исполнении запроса.
#493 #741582
>>741568
Tell me more. Чем же тогда фронтендер занимается, если не работает с домом?
>>741584>>741586
#494 #741584
>>741582
Работает с виртуальным домом.
#495 #741586
>>741582
Он может работать с DOM'ом, но только из JS. Верстальщик делает окно чата на html и пишет стили для div-мессагов, а фронтент-разработчик пишет логику добавления новых сообщений, подцепляя описанные css-стили из кода.
>>741590>>741591
#496 #741590
>>741586
Ты конечно прав, в идеальном мире.
На деле же верстальщик городит какую-то хуйню, так как он не шарит как в дальнейшем логика будет представлена, поэтому большую часть стилей и разметки фронт все равно потом переделывает/дописывает под себя.
#497 #741591
>>741586
Если фронтендер не может работать с домом, а девочка-студентка не умеет работать с домом из ЖС, то кто верстает страницы на реакте?
>>741595
38 Кб, 550x481
#498 #741595
#499 #741601
Я как раз вовремя. Пацаны, до какого уровня нужно ДжС недоджуну подтянуть верстку? флексы, гриды, адаптивность, хуйня-муйня
>>741625
#500 #741602
Ананасы, есть 2 дня на подготовку к собеседованию мидл-фулстек макаки, посоветуйте исходя их этого какую-нибудь книгу, где максимально сжато но в то же время глубоко и содержательно изложены главные аспекты и тонкости языка, желательно на английском. С js знаком довольно неплохо, но работаю в основном однотипно в контексте angular/jquery, поэтому интересуют именно тонкости, что могут спрашивать на mid/senior fullstack.
>>741606>>741609
#501 #741606
>>741602
монгу и ноду читай, фул-стак-оверфлоу ты мамкин
>>741614
#502 #741609
>>741602
У кореша на должность сеньёра спрашивают результат следующих сложений:
[]+[]
{}+[]
[]+{}
{}+{}
#503 #741614
>>741606
>>741609
Няши, ну не тральте. Что почитать-то лучше?
#504 #741615
>>741609
лол, тут недоджуны это знают
>>741618
#505 #741618
>>741615

>лол, тут недоджуны это знают


Я не знаю и знать не хочу. Это легаси-поведение, а сами эти операции - плохой паттерн.
#506 #741622
>>741609
запиздуй это в сонсоль, кек
++[[]][+[]]+[+[]]
>>741631
#507 #741625
>>741601
Чем ниже, тем лучше. ЖС погромист вообще не должен знать верстку, этим девочки-студенки занимаются. Если ты даже не догадываешься что такое <div> или text-transform, значит ты об это говно не шкварился и тебя можно брать на работу. Ну а если что-то верстал в своей жизни, то ты просто ВЕРСТАЛЬЩИК, таких червей-пидоров погромистоми не берут.
>>741627>>741630
#508 #741627
>>741625
кек
>>741629
#509 #741629
>>741627
а ещё никогда не говори, что писал на php и через силу смейся над $ в начале переменных.
>>741633
#510 #741630
>>741625
Упитанно.
#511 #741631
>>741622

>++[[]][+[]]+[+[]]


давай еще че-нибудь ибо это было просто
#512 #741633
>>741629
кстати в начале переменных еще погромисты на jq ставят знак доллара. Венгерская нотация или хз как оно называется, мол это переменные для jq. Хотя по венгерской там вроде типы указывают в начале
>>741635>>741640
#513 #741635
>>741633
Ну я тоже так делаю, сам додумался, кстати. Чтобы знать, где простой дом-элемент, а где обёрнутый в jquery.
#514 #741638
Нихуя не понял суть getInitialState в реакте. Фидл с примером:

https://jsfiddle.net/tylermcginnis/du72b5L2/

Здесь же по сути устанавливается стейт, почему тогда метод называется get, а не set?
>>741639
#515 #741639
>>741638
Создай отдельный тред же. Здесь всем посрать на реакт и прочее хипстерское говно.
#516 #741640
>>741633

> начале переменн


в ангуляре этой хуеты полно
#518 #741781
/e/
#519 #741800
>>741568
Если твой скилл верстки ограничивается созданием простенького макетика, то не значит что другие не могут делать что-то годное. В верстке потолок умений намного выше, чем все думают.
Тред утонул или удален.
Это копия, сохраненная 23 мая 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски