24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, Walmart и многие другие.
Краткий FAQ: 1. Что это за язык такой? - Мультипарадигменный язык, изначально создавался для использования в браузерах как язык сценариев для придания интерактивности веб-страницам, однако в процессе своего развития преодолел этот этап и сейчас может использоваться для любых целей ввиду своей неограниченной гибкости и удивительно удобного синтаксиса. Сочетает в себе особенности объектно-ориентированного, функционального, событийно-ориентированного и императивного программирования.
2. Какие возможные направления для разработки существуют? - Фронт-энд (Vanilla, jQuery, Angular, Backbone, React, Meteor), бэк-энд (Node.js, Express, Sails), геймдев (Phaser, Cocos, Pixi), 3D графика (Three.js, Babylon.js), мобильная разработка (NativeScript, Phonegap, Ionic), десктопная разработка (NW.js, WinJS).
3. Можно выучить только jQuery и всё писать на нём? - Не стоит, лучше начать писать на jQuery, когда освоишь ванильный JS, дабы не испортить себе восприятие языка, и в будущем не испытывать трудностей с изучением сложных фреймворков.
6. Есть ли русскоязычные конфы? - Да. Для приера, здесь можно добавится в крупнейшую конфу программача по многим языкам, включая JavaScript. https://invite-me-to-2chpr.herokuapp.com
7. Ну ладно, с чего начать изучение то? - Дальше я приложу список материалов для изучения.
Чистый JS: Книги: Дэвид Фленеган - "JavaScript: Подробное руководство"
Dr. Axel Rauschmayer - "Speaking JavaScript: An In-Depth Guide for Programmers" - Одна из лучших книг по JS. Пока только на английском. http://speakingjs.com/
Выбери себе направление. Может, ты хочешь игори делать? Тогда вперед на гитхаб, и ищи Phaser, Pixi и другое, выбор не маленький. Хочешь на сервер сайд? Копай в сторону Node.js, Express, Socket.io. Хочешь писать MVC логику? Angular, Backbone, React, да множество их. Нельзя забывать про NW.js и WinJS, позволяющие создавать десктопные приложения.
Ковыряюсь с получением списка аудио вконтакте. Есть вот такая функция: function createPlay() { var text = '#EXTM3U'; var durationInSeconds; var mp3s = document.querySelectorAll('input[value*=".mp3"]'); for (var i = 0; i < mp3s.length; i++) { var mp3 = mp3s; var title = mp3.parentNode.parentNode.getElementsByClassName('title_wrap')[0].textContent; text += '\n' + '#EXTINF:durationInSeconds,' + vkCleanFileName(title) + '\n' + mp3.value; } offerFile('vkPlaylistCurrent.txt', text); }
Мне нужно проставлять длительность в секундах вместо durationInSeconds(это пока что просто placeholder такой). Инфа о длительности в секундах содержится в конце mp3.value, после запятой идёт. Надо только выдрать как-то. Cобственно, есть и регулярка — ,\d{1,4} Она выдирает ,2985
У меня вопрос — как мне сделать присвоение переменной durationInSeconds значения соответствующего регулярке но без запятой?
Анончик, хелпани, плиз...что-то ничего не выходит Есть один экстеншн для хрома. Он методом https://developer.chrome.com/extensions/tabCapture получает объект MediaStream с аудио и видео. Так вот...нужно этот стрим записать и сохранить в формате webm. Я копал в интернете и нашел поделки некого пакистанца: https://www.webrtc-experiment.com/RecordRTC/ но проблема в том, что когда ставишь настройки для видео (ширину, высоту, фпс) в его поделке RecordRTC, например. Получаешь два блоба - аудио и видео и мерджишь их с помощью https://www.webrtc-experiment.com/ffmpeg/merging-wav-and-webm-into-mp4.html, то оно тормозит. И видео глючное и аудио. Оно то смерджило два блоба в один...но глючит. Если задать ширину и высоту 320*240, то оно не глючит, но видос маленький получается. Может, кто делал такое. Хелпаните, плиз...или хоть посоветуйте, в какую сторону копать можно. Есть рабочий пример https://chrome.google.com/webstore/detail/screencastify-screen-vide/mmeijimgabbpbgpdklnllpncmdofkcpn?hl=en Я смотрел его код. Но там все минифицировано и с трудом понятно по ключевым методам что там происходит и как они добились такого результата.
Ананасы, всегда сидел на бэкэнде, тут приспичило слепить пару юзерскриптов. Нужно хранить порядка 50к хэшей и вести поиск по ним. Что там у вас в JS для этого есть? SQL пердолить? Или обычный массив в памяти пойдёт? Не будет сильно медленно?
html страница: <div onclick="...> почему еще используют эту хуиту? так-же труднее читать, нет? вместо: <div id/class="x" document.ready(...find element add onclick handler.
Сап зк. Есть комментарии на сайте, требуется с помощью AngularJS выводить часть комментария, а при нажатии на кнопку/ссылку, разворачивать до полного. Написал директиву, сам текст комментария получить могу, но как можно реализовать нажатие?
Я уверен, что вопрос был задан сотни раз, но спрошу еще раз С чего начать изучение? Если из опыта только паскаль в школе. Скачал видеоуроки Гавриленко, говорят годно, стоит начинать? Что еще можно прочесть/посмотреть для полного нуба?
>>631953 Это мое личное мнение, но, если есть представления об ООП, то, как мне кажется, лучше сразу начать с решения проблем (которых предостаточно на CodeWars, например) и попутно пилить что-нибудь более практически ценное для себя (например на знание DOM - тудушку или, как анон-РАБотодатель из прошлого треда, игрульку на канвасе, если больше функциональная часть и бэкенд интересует, то что-нибудь на ноде. Возьми и напиши, к примеру, качалку для SoundCloud). А читать лучше спеки на Dev Mozilla и драфты ECMA. DOM хуйня, это осваивается быстро. Энджой ёр скриптинг.
>>631784 Я нихуя не понимат. Например, я запускаю сервер на ноде и ввожу localhost:port в браузере. Для этого я в написал в servers.js server.listen(port, '127.0.0.1'). Теперь я хочу все тоже самое, но в браузере писать не localhost:port, а 192.168.0.1:port или вообще myawesomesite:port. Такое вообще возможно? Если я хуйню написал, не обсыкайте.
>>632294 >джаваскрипт живенькое такое говнецо, с почти неограниченной областью применения, развивающееся, и имеющее приятную надстройку в виде тайпскрипта.
>кофе беспомощное унылое говно без задач. бесполезный высер as is.
>>632298 > имеющее приятную надстройку в виде тайпскрипта. > кофе беспомощное унылое говно без задач. бесполезный высер as is. Ты вкурсе, что кофе в жс компилируется, дегегерат? Это такая же надстройка Как же бесят дауны, который хейтят что-то, а сами даже офф сайт этой хуйни не посетили
>>632346 >кофе в жс компилируется а как бы в курсе, даже кой че дорабатывал на этой параше. просто в жс появились классы, декораторы, деструктурирующее присваивание, модули, async/await, и опциональная аннотация типов в виде typescript (который не подменяет собой js), а любители твоего дегенеративного сахарка сосут хуйцы с этими нововведениями.
>>632322 Ну, тогда продолжай сидеть на дваче. Хули еще делать, если выучил функции именно. Ты не виноват, ты сделал все что мог - функции выучил. Пошло оно все нахуй, это теперь не твои проблемы. Ты не договаривался, что там return будет. Ты свое дело сделал - выучил функции. Теперь либо пусть разжевывают в программаче, либо сосут хуй. Что еще за return, вообще ахуели.
>>632466 Прост. Пишу на нем всякое хитрозаверченное, типа редактора диаграмм. react + redux решает. Надо попробовать твою дурь со скалкой. В ней же должны быть (встроенные) иммутабельные мапы, массивы?
>>632484 вот так, анон, js привел меня через react redux es6 typescript от динамического слаботипизированного императивного петушения к божественному функциональному подходу со строгой статической типизацией.
>>632496 >стейт приложения Тупо состояние. Даннае, и вообще, все то, что определяет, как выглядит UI. На него может воздействовать пользователь (через ввод), backend, если мы подписаны на серверные события, какие-то недетерминированные вещи (таймер с рандомом).
Зачем нужен? Для генерации UI. Мы отображаем стейт в VirtualDOM, а реакт-жс по из VirtualDOM создает обычный dom, который видит пользователь. Либо приводит dom в соответствие с VirtualDOM. Стейт, измененный действиями пользователя мы можем загнать сново на backend.
Зачем так сложно? Это подход избавляет от необходимости вручную описывать, как привести dom в соответствие с новым состоянием. Один раз написали функцию рендеринга, которая возвращает VirtualDOM всего интерфейса, и все, этого достаточно, дальше магия все делает за нас.
>>632518 А ангуляре немного сложнее, там scope это observable, части UI подписаны на изменение его свойств, по этим событиям они и обновляются. Тут - просто объект, например, {name: "Вася"}, dataflow прост как веник. State поменялся (обычно внутри state'а ничего не меняем, а тупо возвращаем новый стейт), отрендерили заново VirtualDOM. Таким образом, действие пользователя - чистая функция: старый state -> новый state. Рендеринг - чистая функция: state -> VirtualDOM.
По заданию из учебника надо реализовать, чтобы после нажатия на изображение оно менялось на другое, а потом через несколько секунд снова менялось на прежнее. В моем варианте решения почему-то обратно меняется только то изображение на которое я кликнул последним. Я понимаю что дело в глобальной переменной которую делать не стоит, но как можно поступить по другому? Код http://pastebin.com/EaPkAPS4
>>632604 >меняется только то изображение на которое я кликнул последним Что логично, ведь >дело в глобальной переменной, которая за время таймаута может быть перезаписана.
Передавай в hideAnswer() в качестве параметра ID элемента, будет все гут.
Сап, экманы. В общем, суть токова - работаю над проектом на ангуляре и мне нужно получить элемент страницы(кнопку) как объект два раза. Но так как во второй раз это происходит по нг-клику,то я без проблем передаю ивент в функцию и через ивент.таргет получаю свою кнопочку как объект(настоящий блять, а не дом-хуету), а теперь вот мне ее нужно получить еще на загрузке страницы, то есть когда страница отрисовывается - решить отрисовать ли эту кнопку на основании даты из апи или нет и я уже битый час не могу нагуглить ответа(ни просто в гуголе, ни в документации ангуляра). В общем, кто шарит, подскажите, пожалуйста.
>>633111 >Что ты несёшь твою мать? Ты Объект от хтмл-разметки не отличаешь? Стандартные джсы-хуесы и прочие жиквери возвращают сраную разметку, а жи есть красавчик ангуляр может вернуть ссылку на объект элемента страницы, тчобы ты применил к нему методы всякие разные.
>>633119 >Стандартные джсы-хуесы и прочие жиквери возвращают сраную разметку Джсы-хуесы возвращают HtmlDomElement, jQuery возвращает массив-обёртку над таким же объектом.
>может вернуть ссылку на объект элемента страницы Какой ещё объект элемента страницы, поехавший? Ты хочешь получить JS-объект, который лежит в скоупе какого-то хтмл-элемента или что?
Ты просто открыл мне глаза. Я никогда раньше ничего подобного не слышал. Расскажи подробнее пожалуйста.
>>633122 >Джсы-хуесы возвращают HtmlDomElement, jQuery возвращает массив-обёртку над таким же объектом. Ну, теперь ты мне открыл глаза! Не знаю как теперь жить. >Ты хочешь получить JS-объект, который лежит в скоупе какого-то хтмл-элемента Я хотел и получил объект страницы на котором происходит ивент, как джс-объект, может не так выразился.
>>633139 Все понятно с тобой, еблан. Ты же кукарекал, что тебе не нравится моя форулировка, я тебе и написал объект страницы(дома блять, быдло ты тупое). Если ты кликаешь на элементе, то событие КЛИК происходит и объектом этого события становится эелемент(прув ми ронг, хуйло), и можно получить ссылку на этот объект. А теперь иди нахуй, агрессивное быдло(не забудь это цитировать в следующем своем посте, чтобы выставить таковым меня, в твоем манямирке, естественно), видно жизнь у тебя хуевая, если ты срешься на ровном месте, вместо конструктивной критики или пояснений.
>>633143 >объект страницы(дома блять, быдло ты тупое) Ну вот, написал бы, что имеешь в виду DOM-объект. А то объект страницы какой-то лол.
>событие КЛИК происходит и объектом этого события становится эелемент Нет, в обработчик события передаётся объект, который содержит ссылку на target DOM-элемент. Там ещё много всяких объектов есть, например srcElement, toElement и т.д.
>видно жизнь у тебя хуевая, если ты срешься на ровном месте, вместо конструктивной критики или пояснений. Ну, да. Ты прав. Извини. ;(
>>633147 >>633131 >>633127 >>633125 Интересно, тут все миллионы зарабатывают? Я вот вообще в свободное от работы время участвую в проекте за возможную будущую выгоду. А то в соседнем треде рыдают, что не берут никуда, а тут плюются от работы для подскока, так сказать.
>>633155 Нет, я думаю это одни и те же неудачники с завышенным уровнем притязаний - способностей нет, а требования есть, а потом весь мир у них плохой. Обожаю таких петушков, смешные. >>633152 >баксов 600-700 в месяц. За такую з/п не каждый джун захочет корячиться Я надеюсь это был просто толстый тролинг. >>633153 Да, желательно при этом еду и жилье самому оплачивать, а не стрелять деньги у мамки. Иначе потом только на програмаче рыдать в соответствующих тредах, лол.
Кто-то в прошлом треде спрашивал, чем занимается фронтенд разраб, если в команде есть выделенный верстала, а кто-то (какие-то полные долбоёбы уже) смеялись над тем, что как можно фронту не уметь в верстку. Вот небольшая выдержка из одного блога, которая описывает проблему, и заодно достаточно точно описывает то, чем я сейчас занимаюсь (15 кодеров и 3 версталы у нас, у всех всегда есть работа, версталам платят как минимум в два раза меньше самого плохооплачиваемого кодера (это к вопросу про окупаемость, естественно выгодней иметь отдельного версталу)
>"Объясню на пальцах: мы делаем магазин и сделали рубрику товаров (первый компонент). Если мы теперь добавим форму фильтрации, очевидно, что содержимое рубрики должно меняться в зависимости от того, что там введено. Но верно и обратное: содержимое рубрики влияет на поведение формы. Если у нас в рубрике всего 10 товаров, нужно фильтр скрывать. Если все товары синие, можно убрать параметр «цвет» из фильтра. Потом мы добавляем возможность залогиниться (третий компонент) и выясняется, что залогиненному пользователю надо рисовать в каталоге звездочки для отмеченной одежды, а также применить скидки и пересортировать по цене. Пагинатору надо учиться помнить свое положение при манипуляциях с формой поиска. И так далее.
>Каждый новый компонент влияет на предыдущие, и предыдущие нетривиально связываются с новым. Для неинтерактивного приложения это еще как-то можно учесть — как минимум, условия игры фиксированы на момент рендеринга страницы. Но у нас же приложение! Новые товары могут прилететь на страницу по аяксу. Пользователь может накликать «никогда не показывать мне это, это и это». Через 5 минут страница ничего общего не будет иметь с тем, как она выглядела на момент загрузки. И все это надо адекватно отрисовывать.
>Получается, что каждый компонент это не просто поле ввода и ячейка в модели. Его внешний вид определяется предысторией (как, где и сколько в него тыкали) и окружением (как вообще выглядит приложение, какой контекст вокруг)."
>>633622 Алсо, почти никто из фронта не умеет в современную верстку, т.е. флексы, хуексы, методологии и т.д., естественно все знаю какие-то базовые штуки, блочную модель и т.д., но верстка в хуй не сдалась, когда есть верстала. Если какие-то проблемы, просто отсылаешь задачу ему, всё.
>>633624 Да, я про это и говорю. Просто было парочка долбоёбов, которые считали, что такого не существует (отдельных верстал и фронтендеров не знающих верстку). Такое повсеместно и везде, в любой более менее солидной компании, где не разбазаривают бабло, будет такое разделение (возможное исключение - стартапы)
>>633625 Ага, я вот недавно в фирму одну устраивался фронтендом(могу в джс, ангуляр), а они меня "а верстать кроссбразерно умеешь, а в хтмл5 как бог можешь" - ну, говорю верстать умею, чутка за кроссбразерность слышал, в хтмл 5 разбираюсь - читал документацию, ненмого ковырялся, но ближе мне как бы не этим заниматься, это для верстальщиков - те в ответ скисли и "мы вам перезвоним", я пожал плечами и попрощался. Хотя они мне таки перезвонили - сказали, что выбрали более достойного кандидата, а мне похуй, я уже в хорошем проекте участвовал к тому времени, где все задачи по верстке я сваливаю на верстальщика. И у меня голова от этого говна не болит. Ненавижу верстку, блять.
Господа, а можете подкинуть ссылок на годные проекты со сложным фронтендом, но чтобы без mv-фреймворков, или вообще на ванилле. Интересно почекать как умные люди пишут, как структурируют проекты, как паттерны применяют и все такое.
Кто-нибудь может пояснить за управление загрузкой страницы и контента на ней в частности?
Есть вот это http://ilyabirman.ru/projects/emerge/, но оно платное и слишком много на себя берет. Всякие прелоадеры это гониво, ибо просто ждут загрузки всех элементов, а не управляют ей.
Хотелось бы следующий функционал. Добавляем к элементам доп.класс "load_1", "load_2" и т.д. и очередь загрузки идет по порядковым номерам, ну и плюс возможность анимацию прикрутить и кастомно дописать т.е. загрузился "load_1", вылетел слева, загрузился "load_2" вылетел справа, а не все загрузилось, а потом начало вылетать.
Допустим, страница у нас простая, загрузили jq.js и css-ы просто в head. Затем грузится dom и картинки. Вот задача грузить так: 1. <div class="load_2"><img src="anon.jpg" class="load_1"/></div> 2. <div class="load_4"><img src="anon.jpg" class="load_3"/></div> А не: 1. <div class="load_1"><img src="anon.jpg" class="load_4"/></div> 2. <div class="load_2"><img src="anon.jpg" class="load_3"/></div> Ну или хотя бы сначала див, потом картинку в нем, и только потом следующий див и его картинку. А не сначала весь dom, а потом картинки к нему. Ну или как вариант хотя бы картинки последовательно вот здесь так грузятся http://portfolio.cpeople.ru/portfolio/all.
Вот есть легкий код: <!-- html --> <img src="main.png" id="mainImg"> <img src="" data-src="notmain1.png" class="notmain"> <img src="" data-src="notmain2.png" class="notmain"> <img src="" data-src="notmain3.png" class="notmain"> / javascript / $("#mainImg").load(function() { $(".notmain").attr('src', function() { return $(this).attr("data-src"); }); }); Но это гон какой-то, если таким образом описывать пример выше с cpeople. Вообще, все, что удалось найти - это, либо просто последовательное появление (при условии, что все уже загрузилось), либо какие-то тонны js (вот на том же cpeople script.js за все это отвечает же?), где приходится полностью описывать логику загрузки страницы, а не просто классы проставить, например, при условии, что контент на разных страницах будет разный, это гемор дикий, и отдельный скрипт для каждой страницы.
>>633689 У них как бы так и сделано, просто проходятся по всем картинкам и потом через таймаут берут из дата ссылку и вставляют в src. Выглядит супер уёбищно, браузер бы эту всю хуиту в 8 потоков за доли секунды загрузил, а тут приходится ждать пока он по одной картинке в пол секунды почти грузит. Говно.
>>633709 Последовательно, но т.к. исполняется очень быстро, то как будто во все потоки, тебе надо добавить паузу, чтобы это было на глаз заметно, как у того сайта, что ты привел. Но опять же, это очень костыльно. Правильнее и проще всё грузить сразу, а потом просто анимацию появления сделать, если уж хочется, чтобы не сразу показывалось.
>>633689 >Хотелось бы следующий функционал >очередь загрузки идет по порядковым номерам Тащемта, странно, почему ты упомянул именно какой-то подзалупный Emerge. Годных control-flow либ дохуя.
>>633975 Я давеча сериал смотрел один, про заключенных-лесбиянок, так вот, там одна девушка занималась низкоквалифицированным трудом (слесарь-электрик). Она жаловалась на то, что час ее работы стоит $10. В сериале персонажи, конечно же, грустно вздохнули и отнеслись к этому с сочувствием.
>>633977 > низкоквалифицированным трудом (слесарь-электрик) Тут квалификация повыше, чем у жс-макаки требуется. Не говоря уже об опасности и ответственности.
>>634063 >Тут квалификация повыше, чем у жс-макаки требуется. Не говоря уже об опасности и ответственности. Что несешь, блядь? Я пару лет отпахал на сто и дружил с нашим электриком - сидит копается в стартерах, иногда залазит под капот с тестером. Я когда смотрел на его работу и зп думал какого хуя я в механики-мотористы попиздил, вместо электрики. Алсо, знания необходимы за 7-й класс физики. Для жс-макаки требования повыше будут.
>>633773 Спасибо, хоть ясно стало, что гуглить, вот ниче так, вроде, https://github.com/caolan/async Но я хотел бы готовое решение для использования на гс, чтоб в жс не лазить вообще (я к вам из /de зашел). В промисах написано, что ие (да и не только) не может в них.
>>634622 Там изоморфное приложение. Сервер на ноде, клиент на реакте. На сервере вместо шаблонизатора тоже реакт. То, то ты написал про авторизацию - ортогонально либе для UI, тут надо смотреть решения для ноды.
Работаю HTML/CSS-макакой, делаю статичные странички, максимум что могу — подключить плагин. Решил двигаться дальше и взялся за JS. Читаю уже вторую книгу прочел Крокфорда, сейчас читаю Кантора. Изучаю синтаксис языка и приемы программирования, это все интересно, но хотелось бы получить общее представление о процессе веб-разработки, чтобы понять какой набор технологий мне нужно освоить, чтобы стать front-end разработчиком смутно представляю, что такое Front-end, на самом деле. Кроме того, в планах «проапгрейдить» подходы к разработке, используемые в конторе, где я работаю. Например, узнал, что используемая сейчас пересылка файлов на сервер через FTP — прошлый век, и нужно переходить на систему контроля версий.
Исходя из вышеописанной задачи составил себе такой гайд: Инструменты разработчика git grunt ✓ gulp ✓
Анон, посоветуй сайтов, где можно подготовиться к тестированию по джаваскрипту. Именно тупо задрочить тесты. Знаю про quizful, есть еще что-то подобное?
>А как так получилось что ты никогда с фронт-ендом не стыкался? Хз. Пилю HTML/CSS по макету, могу подключить плагин типа Flexslider, затем в архиве пересылаю верстку. Недавно начал использовать gulp (для препроцессоров, сборки спрайтов и конкатенации файлов) и git (локально). Иногда могу зайти по FTP и что-то править в .ctp-файлах (CakePHP, я так понял). Больше нихуя не знаю.
Пытаюсь сейчас искать что-нибудь по теме, но проблема в том, что для усвоения найденной инфы нужен определенный багаж знаний или непонятен контекст, невидно общей картины.
Как получить результат функции внутри объекта для применения в другой функции этого же объекта? Сейчас код внутри объекта вида: function makeShit(){ return data }; this.doThings = function(){ var dataq= makeShit(); } Однако при вызове doThings у меня получается undefined вместо data. ЧЯДНТ?
Сап зк. Помогите набросать регулярку, я в них пытался разбираться, но каждый раз безуспешно. Требуется вводить номера домов, причем могут быть значения: "50-" — все дома с номером меньше 50, "50+" — соответственно все больше 50, "30-50" — дома с 30 по 50 номер, ну и просто отдельные номера. Причем у номера дома может быть буква. Например может быть такая строка: "20-,34а-36,56а,60+", или такая: "23а,50-65". Выручайте.
>>634886 Любая буква рядом с цифрой — это тоже номер дома, буква просто откидывается потом. Ну вот смотри, есть список домов: 1,2,3,4,5,6,7,8,9. У каждого дома есть например количество жильцов. Пользователь хочет узнать, сколько человек живет в 1,3,4,5 и 8 домах. Он пишет строку: "1,3-5,8а", и ему выводятся нужные ему дома. Следовательно мне нужно проверять эту строку, может он криво введет, проверка на дурака.
Жабаскриптаны, такой вопрос возник, не могу разобраться: Делаю тестовое задание - загрузка фотки, выбор пропорций для обрезки, сепия. Вроде всё сделал, но на последнем шаге проблема - когда надо по рамке обрезать картинку и сохранить на сервере обработанный вариант, у меня не получается правильно собрать канвас из картинки и дива, который я использую как кроппер. В ебаной функции context.drawImage (http://www.html5canvastutorials.com/tutorials/html5-canvas-image-crop/) 8 координат, к тому же дело осложняется тем, что я работаю с изображением не в оригинальных размерах - т.е. еще 1 коэффициент добавляется. Ебался-ебался - так и не разобрался. Подскажите что-нибудь полезного. Ну и кому не лень - ткните носом в говно, пояснив где надо было сделать по-другому.
>>634979 А мне чот понравилось задание, интересно даже стало - сделаю, или нет. Сроки всё равно уже просрал - так что теперь просто из интереса пытаюсь доделать.
ну для начала эту регулярку надо написать четёнько и ровненько, типо вот так /,(\d.+?)$/ig а потом заматчить её на строке типо так: var matchResult = tvojaEbanjaRegularka.exec(tvojaSranajaStroka);
вот этот вот matchResult это масив результатов где если я не ошибаюсь под индексом 1
Как раз его реинкарнация в ES2015 (тот же ES6) как раз таки торт. всякие тайпскрипты и котлины проприетарная хуита. Ну ок, мб котлин норм, но он пока что не юзабелен так как жабоскрипт
ангуляр без гаманства не выгребает столько за раз. От слова совсем. если ты хочешь только эти 10к только отобразить чере one-time binding то ещё ок. Но в остально запомни в какангуляре потолок вотчеров в 3к (в твоём случае ng-repeat как раз таки пытается создать 10к вотчеров на каждый айтем, от того и рыгает как на вписке)
О, оказывается яваскрипт имеет больше возможностей чем я думал. Поясните, за такой момент, я знаю ПХП и вёрстку, хуже знаю яваскрипт (который забывается, так как им почти не пользуюсь) и знаю jQuery (который очень простой и удобный), стоит ли мне учить ещё какие-нибудь JS фреймворки, если я планирую заниматься вебом? И есть ли лёгкие фреймворки на JS, разобраться в которых, имея знания яваскрипт на уровне джуна, можно за месяц? И которые при этом будут полезны. Хочу расшириться в этом направлении, но боюсь потратить время впустую, точнее на то, что мне не понадобиться.
>>635173 1) забудь что есть пыхпых.С опытом поймешь 2) Выучить норм язык и алгоритмы и рубить бабло. 3) Если всё же хочется веба ну прям оч-оч то учит глубже JS а лучше его новую версию ES2015 4) Бери node.js и ебаш фулстек на одном зоопарке и имей профит и счастье с этого 5) нынче класные фреймворки это reactjs, angular2, ExtJS
>>635181 Двачую. Зашквар такое спрашивать в 2016, все знают что jQuery достаточно для всего, на jQuery пишут даже операционные системы и кластерные вычисления с петабайтами данных.
ну если для тя ОС на JS это кнопку прихуярить и видок рабочего стола сделать аля винь хр тогда бро не лезь в програмирование не разобравшись снчала в терминологии. Хотя бы.
Вкратце: пишу класс графика на чистом JS чтобы научиться основам. Не могу из метода получить доступ к свойствам класса. [code] //Конструктор var Chart = function(data) { this.prototype = Object.prototype; this.data = data; this.X = Y; //... //Метод прорисовки - прорисовывает нормально this.prototype.repaint = function(args) { //Видит this.data; } //Реакция на движения (события получаются от canvas) this.prototype.onMouseMove = function(event) { //Type error(line 128 col 16) this.data is undefined; } }; [/code] Полный код: https://ideone.com/io4hp9
Антошки, хочу выучить js как второй язык и пилить фронт енд на всяких ангулярах. Дайте какой-нибудь пошаговый гайд где на примере подробно рассказывают как это делать. Книжку learn-js прочел, начал проходить интерактивные курсы но тупо лень по 150 раз пилить всякие детские циклы и присваивать переменные. Сам синтаксис языка и принципы понял, теперь надо научиться пользоваться фреймворками. Спасибо.
>>635409 Не, хуйню я спорол, должен видеть this. в том виде, как ты написал, но мне кажется, что всё равно в этом ошибка, только просто в другом каком-то месте ты теряешь контекст. По коду который ты скинул всё должно быть окей.
>>635409 В любой непонятной ситуации с контекстом используй apply(и еще ее функция-сестра, у них разница лишь в передаче параметров), там ты сможешь указать явно, что должно быть контекстом.
Объект var chart = new Chart(chartData); создается внутри функции которая запускается по завершению ajax-запроса. И <canvas onmousemove="chart.onMouseMove(event)"> не может получить доступ к тому, что находится внутри функции request.onreadystatechange = function() {...new Chart...}.
>>635395 Возможно, все из-за того, что когда вызывается инлайновый обработчик события onmousemove="chart.onMouseMove(event)", this равен DOM элементу, т.е. canvas. Попробуй вывести в консоль this внутри обработчика и посмотри, что происходит.
>this.prototype = Object.prototype; Для чего ты так делаешь?
>>635446 Потому что впоследствии если я пытаюсь в конструкторе объявить методы конструируемому объекту через this.prototype.repaint = function() {...} мне пишет что prototype is undefined. То есть насколько я понимаю, я должен унаследовать от Object "место, куда я могу записывать объявленные методы", и только после этого могу объявлять методы класса. Хотя, в таком случае не записываю ли я их по ссылке в сам Object вместо этого?.. я еще не разобрался.
>>635450 >через this.prototype.repaint = function() {...} мне пишет что prototype is undefined Ну, естественно.
Методы своему классу создавай так: Chart.prototype.methodName = function(){};
this - ссылка на объект, который создаст функция конструктор с вызовом через new. И у этого объекта нет свойства prototype, потому и undefined. Объявление функций ClassName.prototype.methodName будут доступны у создаваемого этим конструктором объекта через __proto__.
А сейчас у каждого созданного тобой объекта, будет доступен метод repaint. var o = {}; console.log(o.repaint); Заебись?
Поясните за js, как сложно мне будет вкатиться в джуна? В скилсах задания типа лаба 1, лаба 2 и даже лаба3(си и кресты). Также знаю основы html и css. До этого пытался в кресты но чет дропнул. В базовые понятия программирования могу, даж в ооп. Вопрос ещё, js очень тесно связан с версткой? Поясните за бэкенд че там вообще делать то нужно inb4: логика сайта
>>635495 Можно, но не в моем случае. Суть в том, что пользователь вводит номера домов, которые он хочет купить. Но в базе хранятся только те дома, которые уже выставлены на продажу. Он может ввести 40+, и ждать когда дома с такими номерами выставят на продажу.
>>635502 Ему уведомление придет, когда такой дом выставят. Если они не будут отрисованы сразу, то как он выберет дома, которых ещё нет в продаже? Вот таком случае ему точно придется сидеть и мониторить, когда его наконец выставят.
>>635505 Что-то ты начал за здравие >Сделай нормальный интерфейс. Какая строка, блять? 2016 год закончил за упокой >Cделай тогда выбор номера с radio-кнопками >Сначала дом выбираешь, потом букву, потом результаты
>>634953 >(по ссылке небольшой баг - после загрузки по кропперу кликнуть надо, чтобы он на место встал) Это не баг, это фича последствия отсутствия строгой типизации, лол: //top: "-" + h top: parseInt(h)*-1
>>635655 Но я спрашиваю, какие значения использовать при вызове context.drawImage() из тех, что у меня хранятся в options, няш. Стили кроппера-то тут причем?
Предлагаю разработать очень легковесный модульный js-фреймворк. Все существующие легковесные похоже, что заброшены. Я считаю, что нам нужно уменьшить размер мирового веба и увеличить его быстродействие.
это тупо проверка на вводе данных в форму, смысл в том, чтоб трясти форму когда что-то не введено. modal_error тупо добавляет классу анимацию. Первый раз все норм работает, на второе нажатие не реагирует анимация, а после закрытия формы и открытия анимация проигрывается сама по себе. ЧЗНХ?
почаны, готовлюсь к собесу, есть вопрос насчет полифила обжект.креате. На мдн написано что-то такое: ```var create = (function(){ var Temp = function(){}; return function(parentPrototype){ Temp.prototype = parentPrototype; var result = new Temp(); Temp.prototype = null; return result; } })(); ``` почему нельзя просто написать ```var create = function(parent) { var Temp = function() {}; Temp.prototype = parent; var result = new Temp(); return result; } ```
зачем Temp находится в кложурсе? Он же память будет просто так занимать всегда
>>636074 Ну в первом случае темп будет создаваться только один раз, при выполнении когда кода с полифилом, а во втором каждый раз когда вызываешь create. Возможно это какая-то оптимизация. Все жалуются что обжект.креайт медленный.
>>636107 ну хуй знает, выбирая между es6 и ts я выбрал бы es6 т.к. незнаю почему, но я на coffee уже обжегся, выучил его, а через две недели вышел es6 и он сдох
>>636024 Очевидно, что проблема в удалении класса/присвоении класса. Такой 'ugly hack' для демонстрации решает проблему: setTimeout(function() {popup.classList.remove("modal_error");}, 50) setTimeout(function() {popup.classList.add("modal_error");}, 100)
>>636029 Ну ебаный в рот, не вешай обработчик на каждый элемент в цикле. Используй делегирование! Комментируешь в коде всем очевидные вещи - как работает инструкция if: // если есть элемент с классом start, но не комментируешь, для чего нужны твои функции, какие аргументы принимают и вообще для чего нужен твой код. Сделай чтобы функция colorizeBetween принимала только 2 аргумента colorizeBetween(startIndex, stopIndex) и уже внутри нее определяй в какую сторону закрашивать, передавать 3 параметром строку "left" или "right" - хуевая идея - легко допустить очепятку и твоя IDE ничем подсказать тебе не сможет.
>>636118 ок, но если закрыть и открыть форму то анимация один хуй проигрывается, да и это решение с графическим лагом, че-то тут не так. если поставить задержки 500 и 1, то получится проигрывание обеих анимаций...лол, но выглядит уже лучше. Так с какого хуя обе проигрываются?!
>>636129 >>636159 >//JS >close_popup.addEventListener("click", function(event){popup.classList.remove("modal_show");}); Бля, то есть: enter.addEventListener("click", function(event){event.preventDefault();popup.classList.add("modal_show"); Сплю уже. Кароч, при входе вешается класс с анимацией. Следовательно, все у тебя по коду логично.
>>636126 ну типа если мышка в левую сторону пошла, нужно поменять индекс начала и конца местами а то получится array.split(8,2) например а js так не умеет
>>636161 логично-то логично, только обе анимации по отдельности прекрасно работают, а вместе нихуя. Подвоха не понял. Ну то есть как не понял, понял, что у класса modal_show всегда висит анимация, и при вызове еще одной анимации с этим блоком первая тож проигрывается. Это не то поведение, которого я ждал от keyframes
Джсаны, поясните, как можно отловить изменение содержимого элемента? Допустим есть окно чата и нужно обрабатывать каждое новое сообщение. Я прочитал все про события, но все равно не представляю как это реализовать.
посоны есть задача нужно организовать поиск по большим json файлам с помощью js , в файлах выгрузка даных порядка 100к позиций, необходимо выводить данные на сайт с помощью чего это можно реализовать
>>636862 Где загибается? Ты хочешь сказать, что он не способен подгрузить объекты из джейсона?($scope.huetaName = angular.fromJSON(response.data);) и гуляй-рука-писюн, то есть клепай себе через нг-репит.
>>636862 >>636856 $ npm search json stream parse Просто ДОХУИЩА либ для парсинга реально больших JSON. С другой стороны, это конечно 'workaround', т.к. V8 не предоставляет нативно асинхронных средств для работы с большими джейсонами.
>>636872 ты про это var хуевыймодуль = angular.module('хуевыймодуль', []); хуевыймодуль.controller('хуевыйCtrl', function ($scope, $http) { $http.get('test1.json') .success(function (data) { $scope.preparats = data;
}); то это работает валится ng-repeat >>636876 ты пробовал юзать эти модули?
>>636843 Чем не варик? var parser = new JSON.Parser(); parser.update(data); // updates the state of the parser with more data var result = parser.result();
>>636894 >>636911 а фильтры там по любому нужны, возня с порциями по 100 шт на 10000 к позиций нахуй нада просто я второй день дрочусь как это запилить в ангуляре как вариант думал парсить напрямую в контроллере с помощью андерскоре или пилить через эластик серч
>>636888 Потому что не пытайся делать хуйню(загружать несколько тысяч сразу), тут тебе люди говорят делай через интервал(где там ебаться-то? одну строку кода добавить?), по событию(скролл, аддБаттон, ватевар). Что угодно наебнется, если его заставить 100к сразу подгрузить.
Коданы, мне в общем надо сделать анимацию маятника, пользователь выбирает нажатием точку на жёлтой дуге откуда будет маятник совершать движение. Где прочитать за эту хуйню?
>>637014 100k позиций асинхронно подгружать по 100 штучек нюню поиск тоже асинхронно делать? >>637016 >анхулар тхреад >Пиздец ты мудак. Такие вещи на бэкенде делаются
>>637119 > >анхулар тхреад > >Пиздец ты мудак. Такие вещи на бэкенде делаются Это жс-тред, мудила, и на жс можно запилить бэкенд Как вообще мысль может прийти о сортировке данных на клиенте, это же пиздец
>>637142 Какую библиотеку, поехавший? Знаешь что такое бекенд? У тебя должна быть база данных, в которой эти данные, вся сортировка, поиск, агрегация выполняется на бекенде, через базу данных А клиент должен их таскать запросами /get-data?PAGE=1&SEARCH=vagina
>>637441 Передай контекст. Плохой способ: var self = this; return self.userData; Хороший способ привязать к вызываемой функции контекст через .bind(this)
>>637441 >>637448 А, блядь, не всматривался в твой высер, у тебя промисы в Sails. Тогда что не работает? Здесь такой же код и так же используется возврат внутри .then
>>637588 >А то вместо колбек-хелла промис-хелл получается Суть в том, что в промисах значения можно (и нужно) резолвить. Адаптированный вариант Мозилловского примера: https://jsbin.com/miwelu/edit?js,console
>>637605 Думай о резолве как об успешном адресате параметра (это может быть как промис, так и любое произвольное значение) в следующую (thennable) функцию: .then( // Промис передал нам значение function(val) { console.log('Значение знаешь? ' + val); }) Еще раз посмотри пример выше на жсбин, он довольно нагляден для понимания промисов.
>>637635 Все правильно работает. У тебя вызов console.log(kok) происходит ДО того, как значение переменной kok будет перезаписано (в промисе для примера используется таймаут), посему результат не такой, как ты ожидал. Вот демонстрация твоего примера с верной последовательностью вызова функций (переменная kok принимает значение, переданное резолвом). https://jsbin.com/raworav/2/edit?js,console
>>637643 Очевидно зачейнить очередь из промисов, где последнее звено будет функцией с обработкой ВСЕХ полученных в предыдущих шагах значений. Then гарантирует, что промис выполнился.
>>637868 Если тебе дали удобную ложку, это не означает что гавно стало вкуснее. Поработай подольше с базой данных через промисы, потом подумай, а зачем ты это делаешь? А делаешь ты это только потому, что в ноде всего один поток.
>>637880 > а зачем ты это делаешь? Что делаю? Через промисы работаю?
> А делаешь ты это только потому, что в ноде всего один поток Какое ещё поток? Event-loop? Есть event-loop, из-за которого нода такая охуенно быстрая. На этом же event-loop'e основан nginx, например, который тоже пиздец быстрый. И чем тебе event-loop не нравится? Тем, что нужно писать ассинхронно? Так никто не заставляет, можешь синхронно писать, жертвую скоростью работы приложения
>>637880 >Поработай подольше с базой данных через промисы, потом подумай, а зачем ты это делаешь? А делаешь ты это только потому, что в ноде всего один поток. Где связь?
>>637960 >>637957 >произвольное количество переданных аргументов в функцию Есть built-in массив доступный внутри функций - "arguments": function test() { console.log(arguments); } test(1, 2, 3) --> [1, 2, 3]
Как передать ... в функцию в другую функцию? На этот вопрос я уже ответил ранее.
>>637894 Event-loop это хорошо, когда ты можешь передавать тяжёлые задачи в другие потоки. Например, так работают все нативные GUI-тулкиты: event-loop в основном потоке для быстрых ответов, а рассчёт и рисование UI в отдельных потоках. В отдельных потоках можно писать синхронный код, а потом результат возвращать в основной поток через event. Latency при этом не страдает, т.к. основной поток занят только обработкой ивентов и ничем больше, throughput тоже выше, т.к. используется больше ядер процессора.
А в ноде, из-за того что есть только один поток, даже цепочки операций с базой данных приходится делать асинхронно. С промисами, конечно, немного проще чем с коллбеками, но гораздо сложнее чем синхронно.
>>638027 > В отдельных потоках можно писать синхронный код, а потом результат возвращать в основной поток через event. Нахуя? Это, по сути, такой же промис, только через анус
>>638027 Я тут раскрою маленьких секрет, но async/await решает проблему с асинхронным кодом от слова полностью. У обезьянки остается только одна задача - не блокировать надолго event-loop внутри своего кода.
>>638033 Синхронный код короче, быстрее пишется и гораздо легче читается. Вот адаптированный пример из кода текущего проекта. Считай что Group и Item это условные Sails модели, а Service - это условный сервис. https://codetidy.com/7828
>>638066 Как тебе поможет async/await в ситуации, когда ты работаешь с API на промисах? И да, ты думал о том, что в жизни бывают вычислительно интенсивные задачи?
>>638071 >API на промисах Из промиса ES6 можно делать await, собственно, async - такой сахар над промисами. Хреново, если либа городит свои костыли, но их постепенно переписывают. >вычислительно интенсивные задачи Пул тредов-воркеров, и координация через асинхронный API, иначе никак. Это нормально.
>>638070 Однохуйственно. Если так хочется, чтобы было как на нижнем примере можно наплодить куча мельких функций на каждый then промиса и отличаются два примера будут только наличием then-aми. Собственно для этого и есть промисы.
>>638085 Дело не только в then-ах, обрати внимание, какой там выкрутас делается чтобы собрать вместе результаты от нескольких асинхронных запросов Service.getItems.
>>638104 А как с обработкой ошибок в этом выражении будет? Promise.all падает когда хотя-бы один промис внутри падает. Поэтому в примере по ссылке делается .then(res=>res, err=>[]), чтобы в случае ошибки успшеные результаты обработались.
>>638116 Он не медленнее работает, он просто заставляет поток простаивать некоторое время. Но операционная система для того и существует, чтобы отдать на это время процессор другому потоку. Обычно в многопоточных приложениях потоков больше чем ядер чтобы процессор не простаивал.
>>638138 В твоем случае, делается map async function , и await по каждому промису, обернутый в try - catch, где catch возвращает нужный тебе пустой результат.
>>638229 Ну так если я выберу хуевый редактор и там не будет удобных штук типа автодополнения и скрытия блоков кода то я сосну ж. У меня раньше был ноутпад++, но я решил перейти на юбунту и тут он не идет, приходится вот искать новый.
>>638227 тут так просто не скажешь, погугли учебники по редакторам, benchmarkи там всякие, может стоит курс по webstorm прослушать, тогда только за кодинг садись...
>>638230 да бля любой известный имеет все что нужно, все что не нужно доустанавливается, sublime-text смотри, условно бесплатный, будет иногда заебывать с просьбой купить его ( в большинстве своем все юзают его ) думаю никто его ни разу не купил, я на webstorm сижу со времен pycharm атом тоже, короче похуй любой популярный бери и все
>>638066 На самом деле нода не лишена некоторых детских болезней, которые скорее являются проблемами V8, нежели модели event-loop в целом. Взять тот же JSON, речь о работе с которым велась выше. Если JSON достаточно громоздок по объему, то сериализация данных может занять значительное время. Все это, конечно, относительно, но тем не менее, произойдет блокирование единственного потока. С другой стороны, есть замечательная возможность запускать несколько костылей инстансов самой ноды: https://nodejs.org/docs/latest/api/cluster.html по сути, делегируя выполнения задач на несколько потоков. Это становится охуенной киллер-фичей, если мыслить в контексте гибридных задач, где требуется совместить плюсы а- и синхронного подхода. Например, скада. Обработку сигналов с оборудования реализовываем строго синхронно и в отдельном инстансе, UI и взаимодействие с пользователем - в асинхронном. Что скажете, джейсоны?
>>638300 Другого решения и нет, анон, если мы делаем что-то отличное от модели cgi. Как делать риалтайм без event-loop модели? Да никак, наверняка в твоей скаде гуи обновляется через вебсокет. Проблемы c JSON решаемы написанием асинхронного драйвера, как с БД. Форкаемся, выполняем работу, шлем ивент с результатом, завершаемся.
Ребята, есть один GreasyMonkey скрипт, использующий css-стили вот так: http://greasemonkey.win-start.de/patterns/add-css.html Что делать, если я хочу иметь возможность переключаться между стилями? Можно понасоздавать stylish скриптов, между ними переключаться. А можно как-то выпадающий список организовать, чтобы один раз нажал и всё заработало?
>>638300 Лучше подождем, когда в ноду завезут АПИ вебворкеров, и библиотеки начнут им пользоваться. В вебворкерах и тредпулы есть, все как у белых людей.
>>638306 Есть большая разница между вычислительными задачами (сериализация/десериализация) и I/O задачами типа общения с базой, где нужно просто дождаться ответа.
>>631129 (OP) шалом неверстальщикиафронтендеры, появилась затея замутить что то типа search any where, ставишь плагин, захлдишь в вк пишешь имя фамилию человека, в результатах получаешь так же ссылки на найденных в ok.ru facebook и еще каких нить социалочек, как думаешь взлетит ?
Суп! Решил я начать кодить на Java. Из опята программирования лишь то, что я во время школьных лет рисовал в Паскале из фигур что-то типа замка. Курсы проводит 1С-контора (которая club.1c.ru) у меня в мухосранске. Они дают сертификат, все дела. За 4 месяца можно пройти их весь курс. На сайте есть описание занятий по каждому модулю. Всего их 4. Дайте свои отзывы о них, если есть, есть ли какая-то альтернатива лучше, если не ВУЗ?
Есть аноны с опытом работы с D3.js? Подскажите, есть ли какое нибудь место - агрегатор плагинов для решения конкретной задачи? Нашел только это - https://github.com/mbostock/d3/wiki/Plugins но там не богатый выбор, и в 95% случаев плагин реализует какую то неведомую ебаную хуйню. На оффсайте Hightcharts, например, в разделе "демо", есть примеры реализации практически любой из типичных задач визуализации данных, а на сайте d3 нихрена такого нет.
Ананасы, помогите с IndexedDB, что на пике не так? Почему выкидывает при вызове objectStore.get() ошибку - AbortError? В БД точно данные есть, курсором читается. Два дня в вашем жабоскрипте, можете обоссать, но намекните куда копать.
>>639199 Дело в том, что d3 это низкоуровневый инструмент для создания не типичных вещей. Если тебе нужно что-то стандартное, то лучше брать либу с готовыми графиками. Ебаться с d3 - та ещё радость, у них там свой датабайндинг ( этакий недореакт), своя либа для анимации. Scails и layouts там действительно полезные, но они заточены именно на использование в их поехавшем "fluent" интерфейсе.
>>639115 >javascript thread >кодить на Java А я еще постоянно разражаюсь когда в каждой новой книге по джс рассказывают, что это не джава, а названия похожи, потому что маркетологи долбоебы. ЛОЛ
>>639308 > fluent интерфейсе Шарпоняша не палится, обычная яваскриптовая недомонадка. > Scails scales же >>639199 Посмотри производные графические либы на d3 - dc.js, c3.js, nvd3.js reactd3 и т.п. Тот Шарпоняш все верно сказал, сама d3 для элитки вроде data-artist'ов, обыкновенным людям напрямую ее использовать незачем.
Ребят, не могу нагуглить. Помню, что в JS есть возможность вызывать метод определённого объекта, не записывая каждый раз сам объект (в определённой области видимости). То есть вместо obj.foo() писать .foo(), предварительно указав, какой объект используется для последующих вызовов. Как эта штука называется?
>>639390 Не то, плохо объяснил. Допустим, есть код: obj.foo(); obj.bar();
Из него можно сделать вот так: .foo(); .bar(); Где-то вверху указываем, что эти методы вызываются у obj. Суть сводиться к тому, что в определённой области видимости все методы, вызванные без объекта (с точкой в начале) будут вызываться у определённого объекта, имя которого пишем только один раз.
>>639273 Ну бля, ананасы, помогайте. Добавляю строки в БД (только ключ) и потом пытаюсь их достать (по тому же ключу, он в БД точно есть), но какое-то ебучее AbortError появляется. Что ему надо? 10 раз уже каждую строчку передрочил, всего-то и надо проверить есть в БД такая запись или нет.
>>639141 >>639141 ну отличается лишь тем что не надо в яндекс пипл заходить, чисто как обычно людей ищешь вк, но на выхлопе получаешь отовсюду, хз ток как их ранжировать
>>639909 Кун-задавший-этот-вопрос-в-треде Мне .apply помог, только у меня сложность была в том, что я передавал не в обычную функцию, а в метод класса, и там контекст надо было не this передавать, а сам этот класс loh.ban.apply(loh, arguments)
>>631266 По хорошему еще надо сделать дженерализацию функции calculate и отдавать туда название параметра. Главное, что тебе стоит вынести из этого кода - обращение к свойству объекта это O(1), т.е. очень быстрый алгоритм. Это одно из главных преимуществ объектов перед массивами, их не обязательно итерировать.
>>634868 Вариант split(",") вполне корректный, проверяешь потом отдельно каждое значение функцией, выясняешь, ошибка это, диапазон вниз, диапазон вверх, диапазон от и до или число. В чем загвоздка-то?
>>639976 А если пользователь решает, как ему сортировать? Каждый раз перегружать страницу и гонять те же самые данные? Теперь понимаешь смысл front-end приложения?
>>640040 > А если пользователь решает, как ему сортировать? Пользователь отправляет ажаксом поле сортировки и направление, сервер берет данные из базы, сортирует данные по полю и делает аск/деск по направлению пользователя, отправляет. В чем проблема?
> Каждый раз перегружать страницу и гонять те же самые данные? Ты всю базу клиенту выгружать собрался, сумасшедший?
> Теперь понимаешь смысл front-end приложения? Я понимаю, а ты нет
>>640055 >сервер ... сортирует данные по полю и делает аск/деск по направлению пользователя Джейчую. Тем более, когда, как анон говорит, у него данных на сотни тысяч позиций. Это ж пиздец.
>>640072 >>640055 СМудари, предоставьте-ка пример UI, в котором отображаются на одной странице (без пагинации) сотни тысяч позиций, это первое. >В чем проблема? В том, что это избыточный запрос, лишний траффик, лишнее время ожидания, данные уже есть на клиенте, все, что нужно, это отсортировать и перерисовать DOM. >Я понимаю, а ты нет Видимо, понимание через жопу это твой путь.
>>640130 > СМудари, предоставьте-ка пример UI, в котором отображаются на одной странице (без пагинации) сотни тысяч позиций, это первое. Так никто не делает, поехавший блять. Ну, кроме таких как ты.
>>640214 Действительно, не упоминал. Еще раз - пагинацию делают на сервере. Внутреннюю сортировку делают на клиенте. Последовательность такая: 1. Первый заход на страницу - получение отрендеренного html в нужном порядке, затем сразу загрузка данных в виде json. 2. При клике на название столбца сортировка идет на клиенте. 3. При дальнейших переходах по страницам тоже грузятся только данные.
Суммарный проигрыш по траффику только при первом запросе, что окупается уже через один-два перехода.
В случае последовательности: 1. Загрузил отрендеренный html. 2. Клик на название столбца - ajax-запрос, получение отсортированного json (ты ведь не html предлагал получать?), рендер. 3. То же, что и в первом варианте.
Проигрыш наступает, если клик по названию столбца больше, чем 1 раз.
Итог: сортировать данные в формате json лучше на клиенте.
>>640222 Ты понимаешь, что чтоб сортировать на клиенте тебе нужно выгрузить ему всю базу? На каждого клиента. Всю базу. А если база изменится, снова выгрузить. Мало того, что это небезопасно, клиенту базу отдавать, так это ещё и десятки мегабайт трафика, если не сотни и тысячи на каждого клиента, в зависимости от размера базы.
>>640234 >чтоб сортировать на клиенте тебе нужно выгрузить ему всю базу? Зачем это? Клиент получает только то, что необходимо. Для перехода по страницам надо делать запрос. Для сортировки по значению столбца не надо. Для поиска по значению - надо.
>>640236 > Зачем это? Клиент получает только то, что необходимо. Ты говоришь про сортировку 20 элементов, которые получил клиент, а я про сортировку по всей базе. Вот, например, у тебя в таблице 100 учеников из 1000. Если ты будешь сортировать по какому-то полю только на клиенте, у тебя сортировка будет только среди этих 100 учеников, остальные 900 в сортировку не попадут. В этом случае правильнее сортировать в базе, а не выгружать 1000 учеников на клиент.
>>640222 Идиотина, блеать, ну какая сортировка на клиенте, если у тебя ПАГИНАЦИЯ? Ну отсортируешь ты текущую страницу, и дальше что? Когда пользователь жмакает на сортировку, он желает увидеть первой строкой минимум/максимум среди всех данных, сортировка только среди пагинированного набора записей нахуй не упала.
>>640296 Мне кажется, что не кажется. Нельзя делать инфинити скролл там, где важен порядок элементов, и нужна удобная навигация Это как не нумеровать страницы документации, например.
>>640299 >Нельзя делать инфинити скролл там, где важен порядок элементов Можно (ре)рендерить таблицу с данными после подгрузки элементов. Ничего криминального в этом нет.
>>640299 Инфинит скролл порядок сохраняет, в произвольное место можно спозициорироваться скролбаром, но это нахуй не надо, т.к. обычно есть быстрый поиск вводом с клавиатуры. Что тебе еще нужно, болезный?
>>640309 Так нельзя делать, епта. У тебя для этого поля должна быть отдельная коллекция, вложенных данных быть не должно. Уровень вложенности = коллекция.
И под поле loh у тебя отдельная коллекция, в которой будут храниться нужные данные. То есть тебе нужно описать модель для коллекции Loh, модель User может ничего о ней не знать, у неё просто ссылка на другую коллекцию.
здраститя есть массив с ссылками на картинки нужно сделать так, чтобы каждая ссылка была завернута в <img src=""/> (которые в свою очередь находятся в каком-то контейнере, разумеется)
_var target= $('#'+index); _target.attr('src','element); // да, я еблан, можно сразу в src засунуть, но в этой строке функция из одной либы нет не jquery , типо упростил дохуя }
проблем в том, что на выходе отображается только последняя картинка (у всех аттрибут src пустой, кроме последнего)
Я подумал, что тип это причуды ебучего html и решил дать время на отрисовку и засунул последнюю строку в setTimeout, но нихуя help'ируй, анон
https://jsfiddle.net/1snmv57f/ в общем, в этом коде перед вставкой ссылки картинка кэшируется и тут же вставляется ссылка на локальную копию в чем может быть проблема?
>>640473 >День? С этой логикой все более-менее понятно. Другое дело, что в контроллере есть уже функции, которые работают с базой в нессылочном виде. И их придется модифицировать(а я не знаю как, кек), если делать все правильно.
>>640484 > Другое дело, что в контроллере есть уже функции, которые работают с базой в нессылочном виде Я с монгусом мало работал, но по-моему там прозрачная линковка. То есть, нет никакой разницы, работаешь ты напрямую с данными в коллекции, или это ссылка на другую коллекцию - всё работает одинаково, пока в модель не посмотришь - не отличишь
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, Walmart и многие другие.
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД! Воспользуйтесь https://jsbin.com/ для браузерного кода и https://ideone.com/ для серверного кода.
Краткий FAQ:
1. Что это за язык такой? - Мультипарадигменный язык, изначально создавался для использования в браузерах как язык сценариев для придания интерактивности веб-страницам, однако в процессе своего развития преодолел этот этап и сейчас может использоваться для любых целей ввиду своей неограниченной гибкости и удивительно удобного синтаксиса. Сочетает в себе особенности объектно-ориентированного, функционального, событийно-ориентированного и императивного программирования.
2. Какие возможные направления для разработки существуют? - Фронт-энд (Vanilla, jQuery, Angular, Backbone, React, Meteor), бэк-энд (Node.js, Express, Sails), геймдев (Phaser, Cocos, Pixi), 3D графика (Three.js, Babylon.js), мобильная разработка (NativeScript, Phonegap, Ionic), десктопная разработка (NW.js, WinJS).
3. Можно выучить только jQuery и всё писать на нём? - Не стоит, лучше начать писать на jQuery, когда освоишь ванильный JS, дабы не испортить себе восприятие языка, и в будущем не испытывать трудностей с изучением сложных фреймворков.
4. Существуют ли стайл-гайды для JavaScript? - Да, вот: https://github.com/felixge/node-style-guide
5. Какие новые возможности добавил ES6? - Вот здесь можно почитать на русском: https://learn.javascript.ru/es-modern
6. Есть ли русскоязычные конфы? - Да. Для приера, здесь можно добавится в крупнейшую конфу программача по многим языкам, включая JavaScript. https://invite-me-to-2chpr.herokuapp.com
7. Ну ладно, с чего начать изучение то? - Дальше я приложу список материалов для изучения.
Чистый JS:
Книги: Дэвид Фленеган - "JavaScript: Подробное руководство"
Дуглас Крокфорд "JavaScript: сильные стороны"
Стефанов С. - "JavaScript. Шаблоны"
Джон Резиг - "Секреты JavaScript ниндзя"
Николас Закас - "JavaScript. Оптимизация производительности"
Node.js
М. Кантелон , М. Хартер - "Node.js в действии"
Кирилл Сухов - "Node.js. Путеводитель по технологии"
Дэвид Хэррон - Node.js. Разработка серверных веб-приложений
Front-end
Эдди Османи - "Разработка Backbone.js приложений"
Эрл Каслдайн, Крэйг Шарки - "Изучаем JQuery"
Читать онлайн
Dr. Axel Rauschmayer - "Speaking JavaScript: An In-Depth Guide for Programmers" - Одна из лучших книг по JS. Пока только на английском. http://speakingjs.com/
Marijn Haverbeke - "Eloquent Javascript" - Вводная книга по JavaScript и программирование в целом. Перевод на хабре: http://habrahabr.ru/post/240219/ На английском :http://eloquentjavascript.net/
http://ru.discovermeteor.com/ - Книга по Meteor.js - одному из самых лёгких и функциональных фреймворков. Полностью на русском.
Онлайн сообщества:
http://learn.javascript.ru/ - оно одно, единственное. Начинать учить язык советую отсюда, потом переходить уже к книгам.
http://www.jstherightway.org/ - Огромный гайд составленный буржуями. Есть книги, статьи и всё-всё-всё.
http://nodeguide.ru - Огромное количество переведённых статей по Node.js
http://node-center.ru - собрание информации по Node.js. Особенно интересен раздел со ссылками и книгами.
Бложики и новостные ленты:
http://dailyjs.com/ - DailyJS
http://weblog.bocoup.com/ - Bocoup Weblog
http://perfectionkills.com/ - Perfection Kills
http://www.reddit.com/r/javascript - subreddit на reddit.com
http://toddmotto.com/ - Todd Motto, Lead front-end @appsbroker. Developer Expert @google.
Онлайн курсы:
Как же можно учить язык, только читая книжки? Нужна практика, и только так изучаемое усваивается, не иначе.
CodeSchool - http://codeschool.com/ Отличный ресурс для изучения языка, очень много курсов по всем передовым технологиям.
CodeAcademy - http://www.codecademy.com/ Уже не такой сильный, но все еще интересный проект, так же маст хев для набивания скилла.
Udacity - https://www.udacity.com/course/ud015 Дает хорошее представление о замыканиях.
Выучил основы, написал свою пузырьковую сортировку и змейку? Не знаешь как двигаться дальше?
Почитай теперь это - https://shamansir.github.io/JavaScript-Garden/
А потом? Я и так уже гений!!!
Выбери себе направление. Может, ты хочешь игори делать? Тогда вперед на гитхаб, и ищи Phaser, Pixi и другое, выбор не маленький. Хочешь на сервер сайд? Копай в сторону Node.js, Express, Socket.io. Хочешь писать MVC логику? Angular, Backbone, React, да множество их. Нельзя забывать про NW.js и WinJS, позволяющие создавать десктопные приложения.