Этот тред посвящён главному языку будущего - 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).
4. Можно выучить только jQuery и всё писать на нём? - Не стоит, можешь начать писать на jQuery, когда освоишь ванильный JS, дабы не испортить себе восприятие языка, и вбудущем не испытывать трудностей с изучением сложных фреймворков.
5. Ну ладно, с чего начать изучение то? - Дальше я приложу список материалов для изучения.
Чистый 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, да множество их. Нельзя забывать про NW.js и WinJS, позволяющие создавать десктопные приложения.
Изучаю скрипт, делаю змейку. Рис1 - задаю направления с кнопок-стрелочек.
Столкнулся с проблемой: нужно чтоб змека не могла двигаться в противоположную сторону. То есть если ползет вверх то недльзя резко вниз, посколько она типа сама в себя врежется. Появилась идея, но понял что это говнокод. Рис2 - говнокод.
Ломал голову как сделать систему, которая бы масштабировалась и если направлений движения будет не 4, а 40, то не нужно было бы в 10 раз больше писать. Оказалось, блин, не так просто, но в итоге решил все тремя строчками (Рис 3). Пока что показывать решение не хочу и замазал текст - мне интересно как вы бы решили эту проблему. Любопытно посмотреть на другие способы.
>>572968 Можно зациклить, ну типа дать номера клавишам - 1,2,3... где следующее противоположно предыдущему. Четное - туда, нечётное - обратно. Таким образом пути разбиваются на пары. И запретить двигаться в сторону пары текущего направления.
Не кидайтесь какахами, но.. Есть парабола, надо вычислить примерную площадь между отрезками, все определяет пользователь. А чего не работает-то, везде работает, на js чёт нет, кто что подскажет?
var x,a,b,c,xbot,xtop,dx,S=0; //типа ввод a=prompt("Enter 'a'",""); b=prompt("Enter 'b'",""); c=prompt("Enter 'c'",""); xbot=prompt("Enter 'x0'",""); xtop=prompt("Enter 'xn'",""); dx=prompt("Enter 'dx'","");//шаг, точность //здесь должна быть проверка a!=0; for(x=xbot;x+dx<=xtop;x=x+dx) { S=S+axx+bx+c; } S=Sdx; alert(S);//типа вывод
Анон, прохожу курс на одине http://www.theodinproject.com/courses начал три недели назад, с нуля, без особых скиллов програмирования и предстоит делать проект по "Javascript/jQuery".
Суть его в том, чтоб сделать скеч-пад (квадратная сетка, ячейки в которой окрашиваются в заданный цвет, когда над ними проходит мышь). Нужно, чтоб сетка сама генерировалась, когда юзер задает количество ячеек.
Так вот, проблема в том, что по работе работаю не в ИТ я уезжаю в коммандировку, и у меня под рукой не будет интернетов. Посоветуй книг, к которым можно обратится, делая этот проект, когда сталкиваешься с новым вопросом. В английский могу.
у меня есть: JacaScript and jQuery Interactive Front-End Web - Jon Duckett Learn to Code HTML & CSS Develop & Style Website - Shay Howe этих должно хватить?
В комментах на одине, смотрю, петушня советует чепушню книги из серии"Head First ...". Но, как я понял, это зашквар.
>>573459 без промисов ты горя хапнешь, утонув в аду колбэков. а вообще - да, переходи смело и уверенно. как раз таки поддержка старых стандартов тебе пока не нужна, с ie6 ты уже не встретишься почти наверняка (если ты не долбоеб и не сумеешь отыскать контору которая считает что все должно работать и там). да и есть такая вещь как полифиллы, так что при желании ес6 можно превратить в ес5
>>573459 но если ты учишь js, не собираясь на нем писать приложения, а просто хочешь чтоб всё пердело и гудело - тогда тебе ваще похуй на всё это должно быть
>>573427 это просто хуёвая реализация асинхронности в js, дело совсем не в ноде. >Промисы, костыль для async/await. Промисы в мажорных версиях ноды есть, либо юзай babel как вариант
>>573473 >>573479 А в чем суть промисов? Сейчас почитал, это же какой-то событийный колбэк. А суть та же, только будет promise.then(function(result){}, function(err){}) вместо if(!err){} else{}. Чет нихуя от этого не легче.
>>573427 Ставишь bluebird, делаешь promisify, включаешь флаг harmony-generators, сами промисы потом yield'ишь в корутинах, чтобы писать просто: "var user = yield UserService.getUser(x);" Все те же ошибки с таким подходом можно обрабатывать через обычные try-catch вокруг.
>>573594 developer mozilla тебе в помощь. а вообще, ебать, тыб хоть разок просто пролистал все методы какие есть, чтоб просто знать что как и где и есть
>>574191 Что значит номер элемента в объекте? Если тебе нужны нумерованные значения используй массив и не выебывайся. При переборе объекта с помощью for in, ствойства объекта могут перебираться не в той последовательности, в которой объявлены. Или что ты хочешь?
создали бы чтоли тред для совсем нубасов, стыдно такое постить 1) не понимаю, почему после "я вас не знаю" выскакивает еще и "Неправильно" 2) вот задал я переменную промпт, как вывести алерт на действие - нажатие кнопки Отмена ?
var login = prompt('Логин?', ''); if (login == 'admin') {
var pass = prompt('А пароль?', ''); if (pass == 'password') { alert('Привет хозяин!') } } if (login != 'admin') { alert('Я вас не знаю!') } if (pass != 'password') { alert('Неправильно') }
>>574366 1. Потому что password = undefined. Переменная инициализирована на 4 строчке, но значение ей так и не присвоилось. Поэтому срабатывает твое условие (undefined != 'password') => true. 2. При нажатии на отмена prompt возвращает null. var text = prompt(); if (text === null) {alert('нажали на отмена')};
>>574373 Зачем ты разжевываешь? Программирование — область где нужно уметь самому находить решения, достаточно только литературы с описанием как что работает. Разжевывая по деталям вопрос ты только усложняешь задачу, т.к. понимание не приходит.
>>574399 ну в целом мысля норм, но немного не верная - объясняя что-либо другим ты просто упорядочиваешь (структурируешь) знания у себя в голове, что естественно хорошо и помогает в какой-то мере тебе самому, но ты не учишься в привычном понимании этого слова.
>>574368 в плане сначала задавать переменные, а потом уже писать разные условия про них? var login = prompt('Логин?', ''); var pass = prompt('А пароль?', ''); if (login == 'admin') { } else { alert('Я вас не знаю') } if (pass == 'password') { alert('Привет хозяин!') } else { alert('неправильно') } if (login === null) { alert('нажали отмена') } всё равно не работает нихера, я не понимаю как это переменная инициализирована, но значение ей не присвоено? ну в таком случае оно не присвоено и логину, разве нет? не вижу между ними разницы в прошлом коде
Есть select, 4 варианта. Нужно чтобы при выборе варианта установки добавлялась стоимость (0, 999, 1499, 1999) к цене (4990, 5490, 5990), а затем, при выборе другого варианта установки цена возвращалась в исходное положение и плюсовалась уже новая. Т.е. сейчас я имею просто бесконечные плюсы и цену можно настакать хоть миллион, проверок никаких.
Я как только не изголялся, и проверки на селект, и блядь классы добавлял. Сегодня мысли идут туго и я сижу тупо пялюсь в экран. Уже от отчаяния прешел.
Вопрос: как сделать так, чтоб при выборе значения из селекта прибавлялось значение, а затем, при другом выборе это значение минусовалось и цена не менялась.
Я получаю цену, добавляю к ней цену установки и втыкаю в хтмл, затем следующий скрипт берет уже новую цену и есессно он не знает что отнимать. Подскажи, анон. Я уже не соображаю.
Есть тут опытные аноны, способные набросать внятный чеклист теоретических знаний и опыта, которые позволили бы претендовать на сферического миддла в вакууме в контексте фронт-энда? Был бы очень признателен, да и уверен, что много кому интересно.
Привет. Пишу тудушку на бэкбоне, и в дом попадает модель с дефолтными ключами, к которой определена коллекция. Если не привязывать коллекцию, которая рендерится, к этой дефолтной модели (в которой еще и валидация), то функция submit не находит ключ title, который и был определен в модели. Как заставить интерпретатор НЕ рендерить эту модель? Или какой-другой есть способ?
Помогите ! В яваскрипте профан. Когда ввожу в форму цифру, то число после запятой не записывается в базу данных, до запятой записывается, после нет. В php проблем нет. В mysql перепробовал все типы данных
$(".inlineEdit").live("click", updatePrice);
function updatePrice() { var save = '</br><a class="save"><img src="view/image/add.png" alt="<?php echo $button_save; ?>" title="<?php echo $button_save; ?>" /></a> '; var revert= '<a class="revert"><img src="view/image/delete.png" alt="<?php echo $button_cancel; ?>" title="<?php echo $button_cancel; ?>" /></a>' $(this).after('<div class="editor"><input type="text" name="price" value="' + $(this).text() + '" size="30" />' + save + revert +'</div>'); $(this).hide(); $( this ).parent().find('input').focus(); };
$(".revert").live("click", function () { $(this).parent().parent().find('.inlineEdit').show(); $(this).parent().parent().find('.editor').remove(); });
>>574610 если я вожу 10.50 то приходит 10.00, если 11,50 то 11.00 если у меня уже стоит например 11.54 то меняя его через яваскрипт на 13.54 то оно становиться 13.00
>>574613 да, в базе число дробное, пока не поменяешь через форму и если я вставляю через PHP срипт то число сохраняет так как надо. Может проблема в jquery.
>>574615 Так посмотри какое число в price и какое приходит на скрипт, именно на скрипт, а не в базу. Именно выведи, а не думай о том, что там должно быть.
>>574616 Как это посмотреть? я в javascripte мало что понимаю Если я меняю число и нажму кнопку save то оно будет показывать с дробью пока не обновлю страницу
>>574626 Дробное, в базе оно дробное, через ПХП оно дробное, в консоле оно дробное. Но если меняешь через форму явасрипта и потом обновляешь, оно округляется. Притом не округляться в большую или меньшую сторону. А просто удаляет все числа после запятой. Я менял тип данных в базе, не помогло
>>574635 А тепер посмотрел твой код (ну даж если не ты писал). Бля, не извращайся, пиши заново и нормально, я тебя прошу, какого ты вообще творишь блядь. Это не поддерживаемый нихуя код. Такое заново пишется, при том обычно долбоебами которые пишут не особо лучше, а просто через другие костыли и велосипеды. И их код потом переписывают другие долбоебы, которые тоже нихуя не понимают что там происходит. Круговорот кода ебты. >>574656 - кун
>>574712 Я-то на ноде. А вот почему тот анон не может на ноду перейти я понимаю. Работы на ноде не так много, на фрилансе вообще нет, зп не сильно отличается, но уровень знаний нужен гораздо выше. У ноды более высокий порог вхождения, как никак.
>>574722 > Но писать на ноде, это как петь песню. Ну если ты опытный программист, то да. Если нет - ты будешь сильно страдать от колбэков и проклинать жс.
>>574908 И вообще поясните чем занимаются в среднем следущие персонажи: 1. html-верстальщик 2. front-end-разработчик 3. JavaScript-программист 4. Web-программист Все эти вакансии встречаю в том или ином виде и везде примерно одни и те же требования. Разве что у ВЕБ-погромиста могут быть как руби на рельсах, так и пыха и все это с html js node и до бесконечности (а зарплата та же, что и у предыдущих трех, лол).
>>574912 Я как-то вообще на вот такое вот натыкался:
Сейчас нам требуется верстальщик со знанием PHP, MySQL для создания полноценно «самописного» сайта (с использованием библиотек) и умением быстро вносить правки в алгоритмы запросов работы MySQL – будет создаваться сайт с регулярным добавлением текстовых, фото и видео материалов. Проект будет меняться, со временем будет необходимо изменять расположение блоков Обязанности: Верстка корпоративного сайта с резиново-адаптивным дизайном Подключение сайта к БД, вывод контента из БД по определенным алгоритмам Создание CMS для добавления контента в раздел статьи и отзывы Исправление технических и seo-ошибок сайтов (htaccess‚ robots.txt‚ дубликаты страниц‚ и т.п.) Участие в прочих web-проектах‚ поддержка других сайтов компании (на WordPress/Joomla) Регистрация доменов Размещение сайтов на хостингах Внутренняя оптимизация сайта: перелинковка, проработка навигации и т.д.
>>575169 >Не будь в этом мире ебаных жээсов с жавами и дотнетами, хватало бы, и сборщик мусора не ронял бы систему на пол дня. Ловите дурачка. Будет хватать, если будешь сидеть в черной консоли в реальном режиме на каком-нибудь дос-е. 640Кб и близко не хватит на то, чтобы отобразить на твоем мониторе твое любимое гейпорно, например, со скольно-нибудь приемлемым разрешением и цветопередачей. Шторм говнище еще то, но даже там имея оперативку можно сделать рамдиск/tmpfs под индекс и не сидеть как даун ожидая переиндексации на hdd после каждого чиха системы контроля версий. Виртуальные машины или контейнерную виртуализацию мы не используем, среда разработки не сложнее блокнота, производительность рабочего процесса не нужно оптимизировать для laba1.cpp, действительно, для чего нам больше 640Кб.
>>573459 Новый стандарт гораздо сложнее старого, и не сказать, что в нём появилось что-то, без чего жить нельзя. Так что я бы на него не переходил, пока не разобрался с ES5 и не написал пару десятков модулей.
>>575192 >Возможно в jQuery внести правку в CSS класс Пишешь <style> жкверей в документ, меняешь его там же. А что ты пытаешься сделать что тебе надо динамически менять размеры?
>>575203 > <style> жкверей в документ можно подробнее? я ньюфаговат
> А что ты пытаешься сделать у меня есть поле 960х960, и мне нужно забить его ячейками (div). Пользователь задает количество ячеек в строке. Соответственно, чем больше ячеек, тем меньше должен быть размер одной. И я каждый раз функцией считаю размер ячеек, и вношу изменения в класс .cell
>>575258 >у меня есть поле 960х960, и мне нужно забить его ячейками (div). Пользователь задает количество ячеек в строке. Соответственно, чем больше ячеек, тем меньше должен быть размер одной. Звучит как таблица, почему бы ее такой и не сделать? Там тебе браузер сам все рассчитает.
>>575263 хочу так. потом, может, попробую таблицами. в задании писало, что можно разными способами запилить. решил попробовать этим, так как в таблицы не лазил пока.
>>575192 >>575203 >>575263 оказалось, что браузер пидорасило, потому-что я размер ячейки считал функцией. когда я сделал это просто переменной, все заработало намного быстрее. Даже не думал, что обращение к функции так много ресурсов жрет.
>>575270 >в таблицы не лазил пока Да ты прямо эталонный программист на жквери, или тролль зеленый. Пиздуй учить хтмл, потом цсс, потом ванильный жаваскрипт.
>>575543 Запилил пример с динамически устанавливаемой шириной у дивов. http://codepen.io/anon/pen/jbeBKZ Жить можно, конечно, но лучше сделать это же на таблицах или блоках с display:table-cell и display:table-row, как предложил этот анон >>575263, чтобы не городить всю эту магию на JS.
>>575561 >с динамически устанавливаемой шириной у дивов
Ничего не понимаю… И это программисты. Говно какое-то, пидоры, блядь. Бернес-Ли им дал таблицы — используй! Используй таблицы, блядь! Не хочу, хочу жрать говно! Что такое? Это web development? Это web development? Суки, мудачьё — программисты. JQuery загрузили, говно жрут — пидоры, блядь, ёбаные…
>>575748 Во первых, скинь ссылку на конкретные уроки на l.js.ru, буду благодарен. Во вторых, на ES6 есть классический ООП, т е классы, обьекты, ПОЛИМОРФИЗМИНКАПСУЛЯЦИЯНАСЛЕДОВАНИЕ. То есть, можешь почитать про ООП в любом языке, он одинаков, различается только синтаксис. Правда если ты не в геймдеве работаешь, то понадобится это только на собеседовании.
Я JS учу после html\css, так что пока про ООП не знаю. Конкретные уроки? Вот это читал. https://learn.javascript.ru/prototypes Сейчас ковыряю статью на хабре. Думал еще чего подкинете.
>>575660 Ну спасибо, выучили, что "ПЛОХА РАЗМЕЧАТЬ СТРАНИЦУ С ПОМОЩЬЮ ТАБЛИЦ, ВАСЯН ИЗ 7В НИРИКАМЕНДУЕТ", а от чего тогда поступать наоборот и размечать таблицы как страницы это дохрена хорошо? Если необходима таблица, чего бы не разметить ее табличными тегами, а после пердолить стили как нужно, где нужно и если нужно. Нет, не хотим таблицу для таблиц, хотим кашу из дивов.
>>575860 Сам уебывай. JS дает широчайшие возможности работы от серверного бекэнда до клиентского фронтенда. Самоизоляция от смежных областей, с которыми придется при этом сталкиваться ничего хорошего не даст. В интересах разработчика избегать изобретения костылей и велосипедов для заведомо не оптимальных решений.
>>575865 > JS дает широчайшие возможности работы от серверного бекэнда до клиентского фронтенда. Это не значит, что обсуждениям тонкостей PostgreSQL, Android API, HTTP 2.0, ардуино или CSS4 место в этом треде. Никто первые четыре темы здесь и не обсуждает (разве что с позиции интеграции с JS), но почему-то многие считают, что CSS и JS неотделимы друг от друга, и в теме про JS правильно обсуждать Flexbox. Нулевые кончились: и JS фронтендом не ограничивается, и CSS можно использовать с другими языками. CSS+HTML — отдельная область, она заслуживает отдельного треда.
>>575867 > язык для описания юзер интерфейса > используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования
>>575753 > Во вторых, на ES6 есть классический ООП, т е классы, обьекты, ПОЛИМОРФИЗМИНКАПСУЛЯЦИЯНАСЛЕДОВАНИЕ. Нихуя он не классический, те же прототипы.
Репост из php-треда. Пишет кто-нибудь в Атоме? У меня нубский вопрос, но немогу нагуглить. У меня со сниппетами проблема. На 1-м пике, то что я пишу. Далее я нажимаю TAB и получаю хуйню на втором пике. А хочу, чтобы было как на пике 3. Т.е. не хочу разворачивать снипет для else, а перейти сразу в тело функции.
>>575882 >Это не значит, что обсуждениям тонкостей PostgreSQL, Android API, HTTP 2.0, ардуино или CSS4 место в этом треде Это потому что ты так сказал? И что соизволите разрешить нам обсуждать? Голую спецификацию? Какой в этом смысл? >Нулевые кончились: и JS фронтендом не ограничивается, и CSS можно использовать с другими языками Ну и я об этом написал, и что? "Сферический погромист на js", который вызубрил все ES-спецификации, но представления не имеет, что и зачем он что-то делает. Ты это пытаешься здесь описать? Кому такой калека нужен? Ты не можешь заниматься разработкой и не иметь представления об области, для которой работаешь.
>>575886 >Нихуя он не классический, те же прототипы. Кстати да, после прочтения спецификации, то же, что и раньше с синтаксическим сахаром и парой твиков. Чего так все на ключевые слова classextends надрачивают? Потому что у одноклассника пэхопэшника они есть, а теперь и мы будем КАК ВЗРОСЛЫЕ С КЛАССАМИ И ООП?
>>575882 >используется в браузере Для пользователя - отлично, пока очередной эксплойт не запилят.
>в мобильных приложениях Нахуй сразу с этим лаганно-ненативным говном. Когда я это вижу, мне хочется пейсать на похопе и перле, чтобы не так блевать тянуло.
>на десктопе >на серверах Говно лагающее хуже жвм. Особенно весело поддерживать эту ебаную лапшу из коллбеков.
>>575753 > на ES6 есть классический ООП, т е классы, обьекты, ПОЛИМОРФИЗМИНКАПСУЛЯЦИЯНАСЛЕДОВАНИЕ Хорош заливать-то. Кроме наследования, нет там ни полиморфизма, ни инкапсуляции. В js инкапсуляция не ООП-шная, а функциональная, благодаря замыканиям. С полиморфизмом вообще все плохо, потому что все плохо с типами.
>>575753 > ООП в любом языке, он одинаков, различается только синтаксис Это вообще пушка. В js есть лямбды, в java статическая типизация, хуй там ООП одинаковый.
>>575951 >Это потому что ты так сказал? И что соизволите разрешить нам обсуждать? Голую спецификацию? Можно обсуждать веб API, ноду, модули и фреймворки, новое в ES7 и будущее языка, CommonJS vs. ES6 modules, React vs. Hyperscript, минималистичные js-движки для ембедед, типизацию в JS, канвас и вебгл, конференции и книги по JS.
>>575957 >ненативным NativeScript и WinJs позволяет нативно исполнять код. >лагающее Опять обосрался. Нода быстрее других серверных языков. >лапшу из коллбеков. Её давно уже нет. Код пишут цепочками либо монадами, колбеки в старом варианте почти не используются.
Ты совершенно не понимаешь о чем говоришь и повторяешь мантры 2008 года.
>>575993 >Опять обосрался. Нода быстрее других серверных языков. Если сравнивать со скриптопарашей - быстрее, но сравнивать его надо с компилируемыми языками. Даже явка с байткодом поёбывает: https://benchmarksgame.alioth.debian.org/u64q/javascript.html Какой нибудь хипстерский го вообще в жопу выебет.
>>576008 >сравнивать его надо с компилируемыми языками Зачем? У них разные выразительные возможности. Да, C (или Go, или Java) быстрее JavaScript, но то что ты на С будешь писать неделю, я на JS напишу за один день. Стандартный tradeof run-time / development time.
>>576008 >regex-dna >JavaScript V8 - 3.44 >Java - 8.24 Извини, но для серверного программирования таки скорость работы регулярок несоизмерима важнее пердолинга каких-то молекулярных форматов или структур данных, нехарактерных для языка.
>>576018 >У них разные выразительные возможности. Что можно выразить в JS, но нельзя в джаве? >но то что ты на С будешь писать неделю, я на JS напишу за один день Но всё, что пишется более, чем неделю, на скриптоговне, понятное дело, уже никто не пишет.
>>576018 Что я на C буду неделю писать? Прокладку между юзером и бд? Погугли веб фраемворки на ц чтоле, раз такая пьянка зашла. Попробуй на го пописать, если серьёзно ставишь его в один ряд с явой и ц по скорости разработки.
>>576018 >Зачем? У них разные выразительные возможности. Зачем сравнивать скорость php и c++? У них же разные выразительные возможности.
>>575978 Ну я в саблайме, когда параметр функции написал, жму таб и он переходит внутрь функции. А здесь я параметр написал и он разворачивает его в else и потом табом внутрь функции я уже не попаду.
>>576079 Зачем ты ко мне с сажей пишешь, если хочешь услышать ответ? http://pastebin.com/QPqDPbCj В конструкторе на строке 15 задается >this.maskLeft = len <= 12 ? 0 : Math.pow(2, (len - 12) 2) - 1; где len длина последовательности. Далее при создании объектов на строках 91-97 используются значения len 1, 2, 3, 4, 6, 12, 18. Другими словами значение >this.maskLeft Будет отличным от нуля только в одном случае из 7. Теперь смотрим на строку 23. >this.uintLeft = (this.uintLeft << 2 | this.uintRight >>> 22) & this.maskLeft; В 6 случаях из 7 это выражение будет оканчиваться на побитовое И с нулем, другими словами гоняться впустую. Что происходит на строках 154-160 при вызове incWithToken*. На каждый долбанный символ в строке они запускают этот высер. Этот код костыльно-велосипедное говно, написанное жопорукими дебилами. И этот пример только первое, что бросилось в глаза. Своими никому не нужными вычислительными манипуляциями создали ботлнек по процу и рады.
>>576328 >Ну так е жми там в атоме Так не получается. Можно ESC нажать, тогда окошко с автодополнением уберется, но в тело функции по табу уже не перейти. В репозитории атома issue висит, что сниппеты крайне примитивно реализованны и походу с этим пока ничего не поделать. Короче, ебал я в рот этот атом.
Поясните, у меня вот есть переменная videoIsShown, которая изначально = false.
Есть две функции jQuery: 1) одна по клику на кнопочку PLAY делает всякие штуки, если videoIsShown = false, и, что более важно - ставит videoIsShown = true и должна выводить div с видосиком на экран. 2) вторая по клику на $(document) и при условии, что клик был по элементу, который не является div-ом с видосиком и videoIsShown = false всё должна убирать к херам.
Почему при клике на кнопочку PLAY у меня выполняются обе функции? При клике на неё у меня videoIsShown остаётся false. Как тогда реализовать эту срань?
>>576548 > Почему при клике на кнопочку PLAY у меня выполняются обе функции? Потому что висит два обработчика. Должно быть достаточно сделать `event.stopPropagation()` на кнопочке.
>>576687 Вероятно, болезнь Сишника, у которых можно опечататся и вместо проверки присвоить переменной значение, написав if (x = y). Строка же значение не присвоить.
Привет. Пишу приложение на node+express. Встал вопрос юнит тестов. В чем суть: мне нужно тестировать REST-методы, для которых уже подключена авторизация через passport.js (passport-google, passport-twitter). Так вот, хороших гайдов я не нашел (может гуглил жопой), поэтому спрашиваю совета - вдруг кто-то уже таким занимался. Желательно с описанием как эти все юнит тесты к проекту подключить.
>>576958 Ты ебанутый? Обновки выходят чаще, чем ты книгу успеешь написать и издать, даже если это ебук. Программа тудулист - твитор - бложек -магазин - залупа - сыр работает всегда и работает четко.
Поясните за фронт-энд фреймворки. Какие минималистичные, а какие большие и энтерпрайзные? Преимущества и недостатки? Почему jQuery стал индустриальным стандартом?
>>578140 Ты просто не понимаешь суть React Native .
React Native - это тебе не забагованная кодобаза Chromium на сотни мегабайт, где недели не может пройти, чтобы что-то опять не сломалось на каком-то уровне стека.
Алсо, хромиум настолько охуенно не течет, что проект по внедрению GC в плюсовую часть скоро в продашкн пойдет, угадай, почему.
React Native - это не комбо говна HTML и мочи CSS, раздутых дефективных некростандартов, настолько охуенных, что ни один браузер их полностью не поддерживает, зато у каждого браузера есть свой собственный набор костылей с префиксами.
React Native - это простая и удобная компонентная модель плюс нормальный язык плюс подмножество CSS для удобной верстки.
Подскажите как правильно учить JS. Прошел codecademy, читаю Head First JavaScript Programming, понимаю не все(особенно со всякими this). Чувстую, что после чтения нихуя сделать сам не смогу. Как быть? Продолжать читать более подробные книги или пытаться сделать мелкие приложения(которые скорее всего не осилю).
О, боги верстки. http://g2.botva.ru/player.php?id=806441 Если пролистать вниз, там будут подарки. Если навести на них мышкой, то всплывает окошко Там есть картинка и текст. Как так же сделать? В какую сторону гуглить? Заранее спасибо.
>>578549 >читаю >Чувстую, что после чтения нихуя сделать сам не смогу. >которые скорее всего не осилю Ты либо принимаешь идеологию learn by doing (также известную как google-driven development), или вон из профессии. Пиши код. Пиши код, сука! Каждый день пиши. Если не работает - смотри в дебаггер и правь ошибки. Если не понимаешь, почему это ошибка - гугли. Не получилось нагуглить (что лично со мной случается примерно раз в год) - спрашиваешь здесь или на stackoverflow. Это не значит, что читать не надо совсем. Но чтение без написания кода полезно примерно настолько же, насколько написание кода без знания синтаксиса языка.
>>578549 Тебе всё правильно написали уже. Просто скажу, что ты читая книгу по жс должен получить ПРИМЕРНОЕ ПРЕДСТАВЛЕНИЕ о прочитанном, а не ЗАПОМНИТЬ ЕГО. А дальше только практика, только код, только хардкор. Просто такие вещи как замыкания, скоупы, ООП уровня жс и прочее надо знать, но без практики ты всё забудешь через пару недель.
Суп, жсач. Есть тут знатоки апи яндекс-карт? Проблема, казалось бы, на 3 минуты, но что-то я малость застрял. Нужно, чтобы при клике на метку балун открывался в заданном месте и имел заданный размер. Контент свой для каждой метки, размер и позиция общие для всех.
Пацаны, такая проблема, когда таблице добавляешь одинаковые строки, он добавляет первую,а дальше забивает. Не знаю в чем и дело. Мб выручите?
var a=document.getElementById("ss228").value; var b=document.getElementById("ss229").value; var masa=[]; var masb=[]; for(var i=0;i<a;i++) masa=make("td",i); for(var s=0;s<b;s++) masb=make("tr",masa); var pidr1=make("table",{border:1},masb);
>>578785 Это не код - это говно. Просто блядь ахуенные названия переменных одной буквой, наипиздатейшая функция make, которая делает хуй знает что, ебаная смесь из транслита и анельского. Умри, короче.
>>578785 Хорошо, насколько я могу судить, #ss228 и #ss229 - это текстовые поля ввода. 1. Что за make? Это типа из какого-то шаблонизатора-фреймворка? 2. Ладно, я бы сделал как-то так:
>>578803 var a=document.getElementById("ss228").value; var b=document.getElementById("ss229").value; var masa=[]; var masb=[]; /формируем данные, получаем их откуда-то/ for(var i=0;i<a;i++) { masa.push(i); } for(var s=0;s<b;s++) { masb.push(s); } /делаем табличку/ var htmlTable1="<table><tr>";
>>578785 Да, а что ты хочешь получить на выходе, как оно должно выглядеть? я уже писал, что все эти js-шаблонизаторы не нужны. На уровне серверных скриптов - возможно, но не здесь
Нахуй ангулар2 назвали ангулар2, а не просто новым именем и почему его так долго пилят? Тупо бренд? Или действительно он имеет что-то концептуально общее с ангулар1?
>>576353 Обсираюсь с этого "семантическая верстка". Тут посоны за серьёзные вещи трут, а "семантическая верстка" - концепт из мира маминых сеошников и версткозадротов.
>>578898 >семантическая верстка > концепт из мира маминых сеошников и версткозадротов То что в твоей говноконторке верстают по орочьи не значит что везде так
>>579011 >Нужно открыть кинопоиск и закрыть его сразу после того, как он загрузится.
Я думал, закрыть окно, когда ТВОЙ документ загрузится. Сдается мне, ты не сможешь поставить обработчик события load на кинопоиске из-за same origin policy. Хотя, я хуй знает.
>>579038 Если бы мне нужно было закрыть свой документ, то я бы не писал в трех моих строчках переход на другой сайт. Да, нужно было сразу это написать, но я в тот момент до этого не додумался и посчитал это очевидным.
>>579452 >три индофункции "как бы их написал любитель си/перла/пыха" Ну это лол ваще мда. Во-первых, любой нормальный человек написал бы return a % 2 === 0. Во-вторых, любой нормальный человек написал бы !isEven(3). > Утешает только то, что далеко не каждый гуру языка без гугла сможет объяснить почему: new Array([],null,undefined,null) == ",,,"; // true Даже такой даун, как я, понял это.
Претензии к приведению типов вполне разумны, а псевдомассивы рвут на части и моего внутреннего перфекциониста, но большая часть статьи - надуманный высер школохейтера уровня гопетухов. поговорил с платиной
Анон, в школе задали домашку - сделать таймер с while и объектом Date, но без жсных таймеров. Вот так норм или я дебил? var seconds = 3; var start = Date.now(); var stop;
while (true) { stop = Date.now(); if (stop - start >= seconds*1000) { alert(seconds + ' сек. прошло!'); break; } };
>>579667 Ну вот допустим понадобился метод в API, а ты его название не помнишь. Или вообще не знаешь есть ли вообще метод для решения задачи. Это получается все API перекапывать надо сначала. >>579674 Спасибо за поправку, еще плохо оперирую терминами. Сколько времени уходит на изучение API чтобы свободно в нем ориентироваться? Что значит вкратце ознакомиться?
>>579674 >вкрации Топите печи. >>579707 >Ну вот допустим понадобился метод в API, а ты его название не помнишь. Или вообще не знаешь есть ли вообще метод для решения задачи. Это получается все API перекапывать надо сначала. Нет, это значит что надо взять и погуглить.
Ребята, чего-то вообще застрял и не знаю даже как погуглить.
В общем приходит от скрипта заголовок в формате %FF, но после метода XMLHTTPRequest.getResponseHeader( 'Наш-Кастомный-Заголовок' ) кодировка этого заголовка летит к хуям.
Код и пикча, чтобы не вчитываться в код, прилагается.
>>579792 Твой код - полифил для el.classList.remove(className). В блоке else ищется с помощью регулярки класс у элемента el и заменяется на пробел (удаляется т.е.).
Всем привет ананасы, помогите годным советом. Вышки нет, гумманитарий.Решил вкатится в программирование. Изучал дома хтмл и цсс, сверстал три макетика для портфолио,устроился в говностудию, отработал 3 месяца параллельно учился использовать готовые решение джиквери и научился верстать адаптивно. Потом устроился джуниором фронтендщиком в крупный проект, с приватным проектом на гитхабе, с деплоями, agile, скрамами ангулярами и прочими штуками. Так вот уже 2 месяца прошло и я до сих пор не понимаю как это все говно работает, не говоря уже о бэкенде с API( я еще с ним не работал).Я нихуя не могу понять, я не могу написать код. Я тупо копипащу и гадаю, заменяю методы методом тыка, и надеюсь на магию. Конечно мидлы помогают, но я все равно не оч улавливаю. Хотя сам интересуюсь вебом, всегда читаю статьи о вебе и живу им в общем. ЧЯДНТК??? Может мне не дано из-за того что нет технического образования? Или из-за того что не подружился с самыми главными основами(алгоритмами и шаблоны проектирования)? Или это нормально для джуниора. Меня просто бомбит от того что код не могу написать. Что я пропустил? почему мне так тяжело дается JS?
На самом деле надо книжки читать, которые объясняют основы. Нужно знать как работают базовые вещи. Без этого ты так и будешь, как макака, код кописастить без понимания как оно там работает.
>>579707 > Сколько времени уходит на изучение API чтобы свободно в нем ориентироваться? Что значит вкратце ознакомиться? Вкрации - значит, знать, что в API есть, и для чего. Как именно этим пользоваться, чтоб использовать, не подглядывая на MDN, не обязательно.
>>579926 >Может мне не дано из-за того что нет технического образования? а зачем это интересно погромисту тех образование? чем оно ему поможет, ладно там математическое или айти, но техническое?
Пытаюсь настроить модуль debug для node.js. https://github.com/visionmedia/debug Но он ничего не выводит. Вроде и environment variable установил: set DEBUG=*, а все равно не работает.
>>572953 (OP) Аноны, помогите. Нужно сделать выпадающее меню, чтобы при наведении на элемент li верхнего меню выпадало вложенное меню, но почему-то выводит подменю, которое относится к самому нижнему li. Если использовать указатель this, то вообще ничего не выводится. Объясните пожалуйста в чём дело http://pastebin.com/WEegHBdA
>>580329 Так ты только на последний li обработчик события и вешаешь же. По-моему, ты уже был тут с той же проблемой месяц назад. До сих пор мучаешсья? Вроде же подсказали всё в тот раз.
>>580382 Ну я не знаю, в этом случае ты теряешь свои предыдущие значения li на каждом новом проходе. Можно сохранить их или найти заново, например. http://pastebin.com/efezmfTR
>>580405 >В этом коде создаётся второй массив menuElements, в который заносятся значения li главного меню, да? Да, но это чисто для примера, на практике я бы так делать не стал. Нет смысла, как сказали здесь >>580392 Ты создаешь ненужный массив и делаешь еще один проход по нему. >В forEach что такое currentMenuElement? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach Текущий элемент из массива главного меню.
Посоны, я полный ноль в JS, но мне приходится фронтенд делать. Подскажите, с помощью чего можно запилить всплывающую форму с текстбоксами. Чтобы можно было кликнуть на любую клетку в таблице и всплывает форма для заполнения.
>>580481 Положи текстбоксы в див с position:fixed и ставь ему display:block при клике на ячейку, при сабмите display:none и получаешь информацию из формы.
Как в ноде проверить существование переменной или совойства? if (typeof this.req.user.isAdmin === 'undefined') Получаю: TypeError: Cannot read property 'isAdmin' of undefined
>>580626 Если пытаешься получить свойство у undefined, выбрасывается TypeError. В твоем случае user равен undefined, и ты пытаешься undefined.isAdmin. Чтобы небыло такой хуйни делай так: (this.req.user && this.req.user.isAdmin) === undefined. И кавычки у undefined убери в своем коде, че еблан совсем?
>>580639 Поскольку есть ровно два объекта, для которых можно получить такую TypeError: null и undefined — то лучше проверить на оба: if (this.req.user && this.req.user.isAdmin) == null
Как лучше производить валидацию форм? и на клиенте и на сервере или на сервере и уведомлять клиент об ошибках? И каким пакетом лучше всего производить валидацию?
Стремящийся фронтендер в треде. Сейчас могу запилить какой-нибудь слайдер или менюшку на jQuery, уровень исполнения, как водится, кустарщина и нубство.
Как развиваться дальше? Порекомендовали пройти learn.javascript.ru, но это в основном теоретический ресурс, хотелось бы больше практики.
>>580774 > могу запилить какой-нибудь слайдер или менюшку на jQuery, уровень исполнения, как водится, кустарщина и нубство > это в основном теоретический ресурс, хотелось бы больше практики Практика у тебя уже есть, тебе нужна именно теория. Прочти учебник на learn.javascript.ru, он хороший. Без знания языка ты дальше развиваться всё равно не сможешь. Упражнения там тоже нет, так что не заскучаешь.
>>580903 В твоем примере >typeof variable === 'undefined' Не выбросит ошибки, если variable не была объявлена. >variable === undefined не выбросит ошибки, если переменная была объявлена, но не инициализирована. typeof возвращает тип переменной, 'undefined' имя типа. Строгое сравнение >variable === undefined проверяет значение переменной. В версиях js, где можно было переопределять undefined это могло играть роль, но сейчас эту лавочку прикрыли.
>>580901 Ты хоть поясняй что имел ввиду пару месяцев курения мануалов и два года чистки фронтенда вилкой на позиции джуниора, а то будет два года читать книжки не написав ни строчки кода, а потом придет жаловаться в наш уютный тредик что говна насоветовали.
>>580906 > >typeof variable === 'undefined' > Не выбросит ошибки, если variable не была объявлена. В своём коде ты всегда должен знать, какие переменные объявлены, а какие нет. Единственный валидный случай применения сравнения через typeof — это UMD:
> >variable === undefined > не выбросит ошибки, если переменная была объявлена, но не инициализирована `===` тут не при чём. Это всё var. Если переменная объявлена через let/const, то ошибка будет как через typeof, так и без него.
>>580937 >В своём коде ты всегда должен знать, какие переменные объявлены, а какие нет. >typeof variable === 'undefined' и >variable === undefined Просто проверяют две разные вещи. typeof проверяет тип переменной, сравнение ее значение. Разница в этом. А уж кто там чего "должен" знать это вопрос конкретного приложения.
>`===` тут не при чём. Это всё var. Если переменная объявлена через let/const, то ошибка будет как через typeof, так и без него. Да, ты прав в "use strict". В старом же режиме ошибка все-таки выбросится, если ты попытаешься сравнить, неважно строго или нет с необъявленной переменной. А вот typeof не выбросит.
>>580955 Хотя даже в строгом режиме >(function() {'use strict'; return typeof a;})(); вернет 'undefined', а >(function() {'use strict'; return a === undefined;})(); выбросит ошибку. С другой стороны правда >(function() {'use strict'; let vartype = typeof a; let a; return vartype;})(); тоже выбросит ошибку.
Нодагоспода поясните чем парсить гет параметры в урле? Использую koa-router и похоже, что параметры можно передавать только как /post/:id/:hui, а по старинке /post?id=4&hui=34 самостоятельно разбирать?
>>580955 > Просто проверяют две разные вещи. typeof проверяет тип переменной, сравнение ее значение. Я про то, что проверять тип на undefined почти никогда не нужно.
>>580965 Ну даже твой пример можно переписать на if (this.require != "undefined") { // CommonJS } else if (this.define != "undefined") { // RequireJS } else if (this.window != "undefined") { // Browser globals } // ... Если запускать из глобальной области должно сработать, а если не из глобальной, все равно можно без typeof переписать. Есть возможность, а уж нужно или нет, это по обстоятельствам как по мне. Например, там, где можно было переопределить undefined, typeof мог быть одним из решений.
Котаны, на codeacademy курсы какие-то вообще изи. А на codeshool как? Получше? Предлагают тут за 9$ на месяц взять подписку, потом как обычно будет 29$. Можно ли там за месяц по JS курсы пройти?
>>580973 > if (this.require != "undefined") { Это не будет работать в ноде. В ноде все модули оборачиваются в функции и все «глобальные» переменные передаются аргументами. Типа такого:
function (exports, require, module, __filename, __dirname) { // твой код здесь }
Попробуй arguments.callee из скрипта на ноде, охуеешь.
Так что нет, работать не будет. Ну и если бы даже работало, вариант с `x === undefined` читается лучше и понятнее, а ситуации с переопределением undefined можно избежать по-другому, если очень хочется.
>>581231 Потому что и питон и го используют в основном со стандартными "официальными" интерпретаторами, и все остальные должны быть с ними совместимы. JavaScript децентрализован: много реализаций, много платформ, а одного стандартного языкового средства для идентификации рантайма нет. Вот и приходится проверять переменные и очень хорошо, что в JS можно это сделать
Посоны, посоны. Вот у рельсоняшек есть такая книга: https://www.railstutorial.org/book где пошагово делается клон твиттора, с пояснениями, дополнительными задачами, тестами и деплоем на хероку. Есть что-то такое же, но по node?
>>581291 >x, который каждый раз увеличивался на один, в то время как y уменьшался По-моему, функция вызывала саму себя с измененными аргументами, пока игрек не стал равен нулю и возвратила икс.
сам только читаю рекурсию, поэтому не особо разбираюсь
function sumTo(n) { if (n == 1) return 1; return n + sumTo(n - 1); }
alert( sumTo(100) );
Если n с каждым разом уменьшается и в итоге доходит до одного, должен же выполниться if (n == 1) return 1, который возвращает 1. Почему возвращается 5050?
Вот смотри, что там происходит: 1. Вызвали ф-ю function sumTo(5) { if (n == 1) return 1; return n + sumTo(n - 1); } 2. n != 1, поэтому эта ф-я вызвала саму себя и как бы ждет значение. Она не закончилась, а ждет значение от функции с аргументом n == 4. 3. Так каждая последующая вызванная ф-я не прекращается, а ждет от последующей какое-то значение. 4. Вот мы добрались до n == 1. На этом шаге ф-я отправила наверх возвратила единицу. 5. Теперь другая ф-я "этажом выше" получила эту единицу и может почитать n+1. 6. Еще шагом выше функция получила n+(n+1). И так далее. 7. В конце концов самая первая ф-я получила n+sumTo(4). 8. Только тут мы добираемся до возвращения самой первой ф-ии sumTo(5) значения, которое нам показывает алерт.
>>581422 Ну всё правильно, сумма от 1 до 3 = 6. Вот я тут до 4 расписал, может поймёшь, как оно работает - http://ideone.com/Z4mpc4 Каждая херовина (function(){})(x-1) - это и есть вызов sumTo(n-1)
>>581462 > Может использовать CMS на Node.js? Есть ли нормальные кандидаты? А тебе для чего? Ноду для проектов так просто не берут. Поэтому на ноде фреймворки/cmf всегда будут популярнее и востребованнее cms.
>>581500 Конечно, ведь писать подобную хуйню интереснее: {{? it.name }} <div>Oh, I love your name, {{=it.name}}!</div> {{?? it.age === 0}} <div>Guess nobody named you yet!</div> {{??}} You are {{=it.age}} and still don't have a name? {{?}}
Пасаны , как можно прокачать свой "архитектора"? Работаю уже около 2х лет (ангуляры,ноды) и ощущаю недостаток понимания того как строить "хорошую" и расширяемую архитектуру приложения (в особенности фронтенд) и достигать максимального loose coupling'a. Если что паттерны и прочую поеботу читал.
>>581562 >но откуда берутся последующие присвоения m = 3, k = 2? он просто создал другие функции, чтобы показать тебе что функция, вызывающая сама себя по факту вызывает можно сказать другую функцию с аргументом на единицу меньшим, чем в прошлом вызове потому что ты сам написал ей его уменьшать (n-1)
>Я свернул код в редакторе Это уже я не знаю, я как и ты только изучаю жс
>>581562 >Как вообще называется такая вещь по типу (function(x){})(y)? Не помню, как это называется, но считай это "объявлением и мгновенным вызовом" функции. Это был единственный способ "развернуть" рекурсию, чтобы наглядно показать, как оно работает, если просто написать лапшу из идентичных функций. Грубо говоря, (function(){})() это то же самое, что и function x(){}; x(), разве что в первом случае лишь один раз можно вызвать (никаких указателей ведь не создаётся; по крайней мере, если не сильно искать).
>откуда берутся последующие присвоения m = 3, k = 2? Вот есть >(function(m){}) Эта функция принимает один аргумент. Сделав >(function(m){})(n-1) я её вызываю, при этом с аргументом n-1, т.е. m = n-1 = 4 - 3 = 3. Абсолютно то же самое делается потом с m и k и т.д.
мне показалось, что js на сервере и на клиенте более, чем удобно, разве не так? И почему хуйня? Быстро развивается, есть уже проекты в продакшне, за наводку спасибо, пошел гуглить за эмбер.
>>581644 >И почему тебе эта дрисня кажется более гибкой? Потому что не требует велосипедного синтаксиса и встраивается прямо в хтмл, без замены его дриснявым псевдо-хтмл.
А как понять сколько постоянных соединений выдержит мой сайт на ноде? Как тестировать? Есть ли примерные цифры если я не делаю ничего существенного, а просто генерирую странички из данных монги? Собираюсь брять 10$ digitalocean-а, на что надеяться?
Как выполнить несколько ajax запросов, после выполнения каждого вызвать коллбэк, и после выполнения всех запросов вызвать финальный коллбэк. НО! Чистый JS и не использовать промисы из es6. Не прошу готового решения, дайте направление. Пока в голову приходит писать свою реализацию промисов.
>>581646 Во первом случае мы получим объект с одним свойством userName, во втором случае получим объект с таким же свойством, но еще __proto__ которое ссылается на прототип конструктора User.prototype
>>581831 Ок, я делаю функцию в которую передаю url и cb, делаю запрос, по завершению выполняю cb. А как мне сделать финальный cb? Где следить за состоянием всех запросов?
>>581520 > Если что паттерны и прочую поеботу читал. И хули ты ещё хочешь? Чтобы делать архитектуру нормальную нужна голова на плечах. Если ты думать не умеешь, то никакие паттерны-хуятерны тебя не спасут.
Короче кое-как разобрался со сраной рекурсией, пилю одно упражнение, в котором надо вывести диапазон между числами, например (1, 10) => (2, 9). Решил просто вывести все значения в массив, а потом удалить из него первое и второе значение. Но массив он даже нихера не выводит, почему? В консоль записывает, в массив - хуй.
function range(x, y){
var res = [];
if(x <= y){
res.push(x); // запихать числа в массив console.log(x); // вывести числа в консоль return (range (x + 1, y));
Array.prototype.sort() Как это дерьмо сравнивает два допустим числа? Есть массив [20, 13, 25, 0]. Ну сравнили 20 и 13, получили индекс двадцати больше, чем у тринадцати, а дальше что?
Когда в вакансии требуют знание библиотек - что это означает? Нужно помнить все API либы или достаточно знать несколько функций. У меня тут спор с коллегой, он говорит что изучать библиотеки ненужно так как их много и постоянно появляются новые, а нужный функционал всегда можно нагуглить. Встает вопрос зачем эти "гугленыши" вообще нужны если ничего не знают? Как они собираются собеседования проходить. Будут пафосно говорить "Я нагуглю эту хрень за пять секунд"?
>>582735 Тогда зачем в требованиях к вакансии указывают знание библиотек, если их нагуглить можно? Я вот уже 3 суток изучаю jQuery. Пока только со структурой немного разобрался и запомнил что где лежит. Этих знаний же явно не хватит и мне надо хотя-бы пару недель потратить на изучение этой либы чтобы её научиться применять.
>>582739 Нужно освоить топологию и функциональность всех основных РАЗНОВИДНОСТЕЙ языков и библиотек, чтобы потом, когда переходишь на любой незнакомый язык или веб-фреймворк, ты мог ментально отобразить на него предыдущие знания и опыт (не без гугла, конечно).
>>582718 >>582739 Ну давай разберем по частям тобой написанное. Представим себе двух программеров, назовем их, условно, "гугленыш" и "интеллигент". Обоим нужно выполнить некую работу, требующую знание библиотеки jquery. Разберем сначала действия интеллигента. Интеллигент начинает с гиканьем "изучать" jquery, зубрить документацию от корки до корки, проходить тесты, радостно запоминать весь новый синтаксис, и т.д. Спустя пару недель, одухотворенный, он, наконец, открывает таск и... ничего не может сделать. поскольку практики никакой у него не было, он беспомощно бьется об углы, матерится на каждую свою тупую ошибку, опять лезет в документацию и пытается понять, что именно он сделал не так, и так еще неделю. В итоге таск выполнен за 5 недель, выполнен вполне удобоваримо, без говнокода, но и ничего откровенно красивого тоже не было написано.
Теперь разберем гугленыша. Гугленышу плевать на тонкости библиотеки и ее внутреннее устройство, гугленышу нужен результат. И потому он сходу заходит в тз, и, кратко поняв проблему, начинает гуглить. Ступенька за ступенькой, матерясь и говнокодя, он собирает рабочий прототип за рабочую неделю. Оценив взглядом код и малость охуев от собственной криворукости, гугленыш, уже имея практический опыт, читает документацию по самым своим кривым местам и еще неделю тратит на оптимизацию и дебаг своего проекта. Итого - за 2 недели достигнут тот же самый результат, но с куда большим практическим опытом, большим опытом в оптимизации и более лучшим пониманием, как эта библиотека работает в боевых условиях. И теперь вопрос - кто из них лучший работник? Кто выполнит таски быстрее, с большей пользой для себя и большим пониманием, что заказчику нужен результат, а не самолюбование прогера? То-то и оно.
>>582744 Общее есть между разными языками одинакового назначения, между разными веб-фреймворками, между РАЗНЫМИ инструментами для ОДНОГО И ТОГО ЖЕ. Имея опыт с одним фреймворком для депенденси инжекшн, ты гораздо быстрее разберёшься с любым другим на ходу с гуглом, чем если бы у тебя не было опыта с DI фреймворками вообще.
>>582751 Но ведь зубрежка идет вместе с практическим разбором кода. И ведь зазубрив один раз я потом буду легко перемещаться по либе, не отвекаясь на чтение несвязанных мануалов в гугле. >>582752 >>582751 Вообще вопрос стоит о том что спрашивают на собеседованиях когда требуют знание либы?
>>582751 Если обобщить, то есть два подхода к разработке: top-down (начинаем с абстракций) и bottom-up (начинаем с деталей).
Если идти от абстракций, то есть риск выбрать абстракции неправильно или не уметь их правильно применить, поэтому сложнее начинать, но когда абстракции выбраны правильно, закончить проект проще. Это подход «интеллигента».
Если идти от деталей, то можно довольно быстро что-то сделать (гугля «jquery сортировка таблицы», «jquery событие при загрузке страницы», «jquery карусель»), но есть риск потом не собрать всё это в готовое решение или собрать неправильно, сделав неоптимальную или сложную в поддержке архитектуру. Закончить сложнее, но проще начать. Это подход «гуглёныша».
Правильный ответ, конечно, — ни то, ни другое. Надо совмещать оба подхода, и общие принципы знать, чтобы с самого начала заложить правильную архитектуру, и гуглить уметь, чтобы уметь быстро наполнить архитектуру деталями реализации.
Отсюда мой подход к изучению новых инструментов и библиотек — тщательно разобрать основные принципы, понять что и где может пригодится и зачем, не отвлекаясь при этом на конкретные детали и сигнатуры методов, которые всегда можно загуглить.
> Вообще вопрос стоит о том что спрашивают на собеседованиях когда требуют знание либы? Что угодно. Распространённая ошибка наивных детей в восприятии внешнего мира в том, что они думают, что там всё заведомо однозначное, правильное, рациональное, подчиняется каким-то единым законам. Типа как будто играешь в компьютерную игру, и всё что вокруг - это предсказуемые декорации и механизмы, подчиняющиеся какой-то задумке и правилам разработчика. На самом деле на собеседовании тебя может ждать абсолютно произвольный мудак с каким-угодно говном в голове. Он может тебя щемить от нехуй делать, он может называть твои правильные ответы неправильными и хуй ты кому что докажешь, он может быть психом и застрелить тебя, он может быть геем-террористом и попытаться склонить тебя к сексу. Всякое бывает.
>>582769 Кстати, если интервьюер знает или умеет меньше тебя, это повод попрощаться с компанией и искать дальше? Если он знает мало, то предположительно и остальные тоже и работать будет неинтересно.
Скорее всего, ты провалил свои собеседования и сейчас пытаешься стать "фрилансером". Но мы-то знаем, что в душе все вы хотите работать в компании И лет тебе немного, максимализм так и прет.
>>582792 Статья на википедии - хуйня, а двач - не хуйня. Да уж, наверное, двач забирает считанные минуты в день, а вот статью и за неделю бы не осилил, загруженный ты наш.
Этот тред посвящён главному языку будущего - 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).
4. Можно выучить только jQuery и всё писать на нём? - Не стоит, можешь начать писать на jQuery, когда освоишь ванильный JS, дабы не испортить себе восприятие языка, и вбудущем не испытывать трудностей с изучением сложных фреймворков.
5. Ну ладно, с чего начать изучение то? - Дальше я приложу список материалов для изучения.
Чистый JS:
Книги: Дэвид Фленеган - "JavaScript: Подробное руководство"
Дуглас Крокфорд "JavaScript: сильные стороны"
Стефанов С. - "JavaScript. Шаблоны"
Джон Резиг - "Секреты JavaScript ниндзя"
Николас Закас - "JavaScript. Оптимизация производительности"
Node.js
М. Кантелон , М. Хартер - "Node.js в действии"
Кирилл Сухов - "Node.js. Путеводитель по технологии"
Дэвид Хэррон - Node.js. Разработка серверных веб-приложений
Front-end
Эдди Османи - "Разработка Backbone.js приложений"
Читать онлайн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://learn.javascript.ru/ - оно одно, единственное. Начинать учить язык советую отсюда, потом переходить уже к книгам.
http://www.jstherightway.org/ - Огромный гайд составленный буржуями. Есть книги, статьи и всё-всё-всё.
http://nodeguide.ru - Огромное количество переведённых статей по Node.js
http://ru.discovermeteor.com/ - Книга по Meteor.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, да множество их. Нельзя забывать про NW.js и WinJS, позволяющие создавать десктопные приложения.