Это копия, сохраненная 15 марта 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Этот тред посвящён главному языку будущего - 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, Unity), 3D графика (Three.js, Babylon.js), мобильная разработка (NativeScript, Phonegap, Ionic), десктопная разработка (NW.js, WinJS).
3. Можно выучить только jQuery и всё писать на нём? - Не стоит, лучше начать писать на jQuery, когда освоишь ванильный JS, дабы не испортить себе восприятие языка, и в будущем не испытывать трудностей с изучением сложных фреймворков.
4. Существуют ли стайл-гайды для JavaScript? - Да. Стайл-гайд для Node.js: https://github.com/felixge/node-style-guide , стайл-гайд для Front-end: http://www.w3schools.com/js/js_conventions.asp
5. Какие новые возможности добавил ES6? - Вот здесь можно почитать на русском: https://learn.javascript.ru/es-modern
6. Зачем нужны CoffeeScript и TypeScript? - Это особые варанты JS для любителей других языков. CoffeeScript подходит для любителей Ruby и Python, TypeScript - для сторонников строготипизированных языков. Если ты новичок, то учи оригинал и не забивай себе голову этим.
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/
СПИСОК ИНСТРУМЕНТОВ ДЛЯ РАЗЛИЧНЫХ ЦЕЛЕЙ
Front-end: jQuery, Angular, React, Backbone, Meteor.
Back-end: Node.js, Express, Sails, Socket.io.
Десктопные приложения: NW.js, WinJS.
Мобильные приложения: Cordova, NativeScript, Phonegap, Ionic.
GameDev: Phaser, Cocos, Pixi, Unity.
Тестирование: Mocha, Chai, Jasmin, Sinon.
Continuous Integration: Semaphore, Shippable.
Сам я нуб ебаный - запилил на ангуларе тествое задание. Больше я его не трогал. Да и вообще недавно относительно в веб вкатился. Мало что знаю во фронтенде.
Тут мне внезапно прилетает предложение с конторы, которая иногда подгоняет халтурки (не основная работа):
- Можешь в AngularJS ?
- Почти не работал, но могу попробовать
- Отлично. Нам тут нужно перехуячить легасисайт на ангулар.
- Ок, давайте.
Я то думал, что меня кинут в команду фронтэндщиков, а оказалось, что нас двое - я на фронтенде и чувак на бэке. Дали нам репозиторий с сайтом, а там дохуя всего уже. Обосрался знатно, но подумал, что похуй. Постараюсь осилить.
Кароче курочить то, что уже есть, я не стал. А запилил свой ламповый репозиторий, в котором с нуля ебашу сайт (изучая фронтэнд, хотя сроки жмут), юзая готовые стили, ресурсы и верстку. Проблема еще в том, что сайт на пыхе, которую я не осилил поднять. В своем репозитории поднял сайт на iis, хуярю из VS.
Из этого вытекает проблема, что я ебашу в своем репозитории, потом перекидываю целиком папку в их репозиторий. Все правильно делаю? Или есть более грамотные способы такой работы?
А что ещё есть среди MVC-фреймворков, которые не загнутся в течении хотя бы нескольких лет, и у которых есть большое сообщество и модульная база?
> Из этого вытекает проблема, что я ебашу в своем репозитории, потом перекидываю целиком папку в их репозиторий. Все правильно делаю?
Нахуя в таком случае вообще репозиторий тебе? Нужно мёржить, а не просто папку кидать
Всегда проигрываю с этих модных сайтов, где фронт на ангуларе/реакте, а бэк на пыхе. Выглядит как пикрилейтед.
Полностью сосет у второго ангуляра и пропадет так же внезапно, как и появился.
Да и вообще меня вот такое говно до дрожи пугает, даже не говоря уже про эстетику такого подхода. Вы что, ебанутые? Как более-менее большой проект может быть написан в подобном стиле?
[CODE]
import React from 'react';
class NewsList extends React.Component {
getDataFromServer() {
return [
{id: 1, title: 'News item #1', snippet: 'Lorem ipsum dolor sit amet'},
{id: 2, title: 'News item #2', snippet: 'Lorem ipsum dolor sit amet'}
];
}
renderItem(item) {
return (
<article key={item.id}>
<h2>{item.title}</h2>
<p>{item.snippet}</p>
</article>
);
}
render() {
let items = this.getDataFromServer().map(this.renderItem);
return (
<div>{items}</div>
);
}
}
export default NewsList;
[/CODE]
Полностью сосет у второго ангуляра и пропадет так же внезапно, как и появился.
Да и вообще меня вот такое говно до дрожи пугает, даже не говоря уже про эстетику такого подхода. Вы что, ебанутые? Как более-менее большой проект может быть написан в подобном стиле?
[CODE]
import React from 'react';
class NewsList extends React.Component {
getDataFromServer() {
return [
{id: 1, title: 'News item #1', snippet: 'Lorem ipsum dolor sit amet'},
{id: 2, title: 'News item #2', snippet: 'Lorem ipsum dolor sit amet'}
];
}
renderItem(item) {
return (
<article key={item.id}>
<h2>{item.title}</h2>
<p>{item.snippet}</p>
</article>
);
}
render() {
let items = this.getDataFromServer().map(this.renderItem);
return (
<div>{items}</div>
);
}
}
export default NewsList;
[/CODE]
А вопрос немного не о том. Зачем работающий сайт перепиливать на другую технологию, если он и до моды на всякие моделивьюхиконтроллеры работали? Что за сайт кстати? Инфо портал?
Лол. Эти кукареки со стороны ангуляра, который, признавши обосрамс первого, было решено полностью переписать.
Сайт на пыхе. Я привык ебошить на iis и мне так удобней. Создал солюшн в VS, в нем накидываю сайт. Потом после окончания таска, перекидываю все, что не относится к инфраструктуре дотнета и студии.
А нахуя ты мешаешь разметку и код? Ты что, ебанутый? Для кого импорт файлов сделали?
>пропадет так же внезапно, как и появился
Сомневаюсь.
Хочу состряпать расширение для хрома, но мне не хватает понимания/знания некоторых вещей. А именно:
1. Как правильно юзерскрипты должны хранить настройки/текстовую инфу? Чтобы читать/писать их можно было находясь в любом домене.
2. Возможен ли вообще доступ к ФС? Судя по поискам, вроде нет.
3. Возможно ли по событию, инициировать, как бы загрузку файла? То есть скрипт генерит файл, а потом по клику етц, браузер его загружает в папку загрузок.
4. Как организованы органы управления, которые видно всегда на странице? Как у куклы, например.
Естественно уже пытался гуглить, но даже искабельный запрос не получается сделать.
Тащемта быстрый рост практически всегда ведёт к быстрому падению. Плавное повышение гораздо долгосрочнее. Посмотри на раби - был резкий скачок, все рекорды по популярности, а потом резкое падение и где он сейчас?
Тащемта это не разметка, а dsl для создания элементов vdom'a. Если это говно писать на Typescript или Scala, будет компайлтайм проверка валидности тегов и аттрибутов, чего в ангуларе не будет никогда.
https://jsbin.com/yesezeluwa/edit?html,js,output
HTML5
---------
<button type="button" onclick="funcArt()">
JS
-----------
function funcName () {
var a = "Sometimes text";
};
function funcArt () {
alert(a);
};
У меня есть приложение, в котором присутствуют условно два модуля. В соответствии с принципами проектирования, каждый модуль изолирован от другого и выполняет только одну задачу и ничего не возвращает, тащемта. И есть главный модуль, условно - app starter, который отвечает за выполнение в определенной последовательности этих двух модулей.
Так вот, нужно, чтобы 'app starter' получал состояние выполнения каждого из этих модулей и, по запросу, возвращал пользователю.
---
Будет ли корректно выглядеть такой код:
https://jsbin.com/tepizu/2/edit?js,console
В 'app starter' объявляется общий объект данных и передается в инициализаторы модулей. По мере выполнения набора инструкций каждый модуль пишет в переданную ссылку на объект статус.
Это грязный трюк, лол, или норма?
Целую неделю (!) разбираюсь с js.
Прочитал основы js, jquery и bootstrap. Написав пару аппов, пришел к пониманию, что я делаю что-то не так, ведь на js пишут все и всем (?) нравится, а я после пары строчек чувствую себя словно только что покопался в навозе.
Долго думал, пришел к двум выводам:
1) Код на js выглядит ужасающе, но я понимаю, что я только начал – может, проблема в этом. Смотрел на coffeescript и проч. – мило, но еще один слой над js, к которому нужно привыкнуть. Не знаю, стоит ли.
2) Структура приложения – точнее, её отсутствие. Также отчасти из-за отсутствия опыта. Погуглил; вероятно, мне нужен angular или аналоги. Просветите за аналоги (reactjs+flux, meteor, ember, backbone, angular2).
>перекатился к вам из пейтона
>после пары строчек чувствую себя словно только что покопался в навозе
Что тебя заставило почувствовать такой контраст?
Просто интересно, за что каждый ренегат старается поносить JS, при этом, не озвучивая причины такого поведения.
И тебе доброго утра!
1. В грисманки/темперманки юзерскриптах это делается с помощью GM_setValue/getValue, в экстеншенах что-то типо chrome.storage.sync.set/get(), но я настоящие расширения писал давно и только под лису, так что говорить могу только за обычные юзерскрипты.
2. Обычные юзерскрипты не умеют, для экстеншенов гугли "%browsername% extensions file system access".
3. По "javascript generate and download file" говорят вполне возможно, хотя на вид костыльно.
4. Хтмель скрипта вставляется прямо в хтмель страницы. Для "видно всегда" выставляется большой z-index и position: fixed/absolute. Еще вид поднастраивается для каждого отдельного сайта, т.к. часто возникнут конфликты, где сайт задаст общее css правило которое распространится на твои элементы или что подобное.
>грисманки/темперманки юзерскриптах это делается с помощью GM_setValue/getValue
Я всегда настройки записывал в куки, так как не знал, каким образом применять настройки для всех страниц, которые будут открываться в последствии, спасибо.
А выставлять настройки как? GM_config спрашивает настройки каждый раз, когда я захожу на страницу, для которой работает юзерскрипт.
Имею в виду выставлять настройки не в коде, а мышкой на странице. Я создавал с помощью menuitem дополнительные опции в контекстном меню, нажатие на которые изменяло настройки.
https://telegram.me/joinchat/AFkjiQbZ-ih1sNDznEmoxQ
Анон, но ведь я описал это в целых двух пунктах, при этом в каждом указал, что по меньшей мере часть вины на мне. На js я пишу плохо, но мой русский вполне читаем. Так что имел смысл дочитать пост, анон, или не отвечать; впрочем, настрой возможных ответов мне уже ясен.
JS влевый, не пизди. Пишу на питоне, js, крестах и еще штуках на 5 разной муйни. Кофе не трож, иначе так и не научишься. За архитектурой смотри todomvc на разный фреймворках (поновее).
Ты просишь порекомендовать тебе инструменты, но не поясняешь, для каких целей, не конкретизируешь критерии.
Если ты собрался пилить клиент-сайд с упором на UI, то тебе вполне хватит связки из любого CSS фреймворка и, скажем, RactiveJS для двустороннего биндинга данных и вида.
Ты какой-то странный.
Ты же даже функцию определяющую эту переменную не вызвал, ёба! Явно делай window.a = 'text' или неявно без var, но это некрасиво.
>Ивенты и колбэки попробуй
Беда в том, что у меня эти два модуля написаны на промисах.
Или мешать промисы с колбэками это комильфо?
Ну вот возьмем тогда ивенты. Они триггерятся у меня в модулях, к примеру, выполняя действия внутри промисов. С этим понятно. Но чтобы передать статус выполнения этих действий пользователю, необходимо точно так же передать на вход модуля что-то - будь то объект, массив etc. коллбэки мы отсекли
Использовать ссылку на объект при инициализации модулей совсем плохо, да?
Меня просто привлекло свойство объекта, позволяющего передавать ссылку на него. Следовательно, нет необходимости возвращать что-либо из функций и, соответственно, все функции-обладатели ссылки на объект шарят те же данные.
Они слишком много так данных шарят. Может глобальный ивент диспатчер сделать и сабскрайб/паблиш у него. Ну или нет.
Понял, анон, тебя.
Создать в модуле-стартере 'app-start' лиснер и передать его в дочерние модули.
В дочерних модулях привязать его к изменяемым данным.
А если управлятор через веб работает, то отдавать данные можно будет их по мере готовности после лонг полл реквеста.
Спасибо, анон!
Поле 10х10, на нем по клику размещаются корабли. ПКМ - корабль удаляется, ЛКМ - переворачивается.
Мне не готовый код, а хотя бы что изучить, на что обратить внимание.
Двухмерный массив 10х10, хтмл отображает этот массив в человекопонятной форме.
Конечно нет, собирать самому все модули для каждого пердежа, типо общение с базой это прошлый век
Экспресс похож на джанго, хотя некоторые вещи типа URL роутера придется создать. Sails похож на рельсы.
И никогда им не была. Нода - это программная платформа.
Спасибо!
Удваиваю. После пыхи замалафился от него.
О чем ты? Сокет-соединение всегда открыто
Спасибо, гений
-"Как создать ААА mmorpg?"
-"Да просто, пишешь качественный движок, нормальные модельки, текстуры. Вот и все. Не забудь о пиаре"
Вместо отрицания лучше спросил как удобнее отобразить массив на страницу.
Он там опять в цикле ажаксом данные получает?
Разве после результата вычисления по нажатию на любую другую цифру, результат не должен меняться на выбранную цифру?
1) Есть ли в ноде что-то схожее с тыртырпрайзом в Java? Пытаются ли её сделать стандартом для корпоративной разработки? Пока смог нагуглить только strongloop.
2) Покажите образцовый репозиторий и/или мануал как правильно разбивать структуру бекенда на файлы, пока что пишу всё в одном основном файле и это - пиздец.
3) Покажите годный мануал по таск раннерам (системы сборки?) типо gulp/grunt. Пока вообще не понимаю зачем и где их используют.
> Есть ли в ноде что-то схожее с тыртырпрайзом в Java? Пытаются ли её сделать стандартом для корпоративной разработки? > Пока смог нагуглить только strongloop.
Да, это strongloop
> Покажите образцовый репозиторий и/или мануал как правильно разбивать структуру бекенда на файлы, пока что пишу всё в одном основном файле и это - пиздец.
Ты на экспрессе пишешь? Дели сам проект на модули и раскидывай по папкам или бери фреймворки. Скажи свою задачу, я накидаю какие фреймворки лучше всего подходят.
> Покажите годный мануал по таск раннерам (системы сборки?) типо gulp/grunt.
Сейчас в тренде webback
Туториал: http://webpack.github.io/docs/tutorials/getting-started/
Скринкаст: https://www.youtube.com/playlist?list=PLDyvV36pndZHfBThhg4Z0822EEG9VGenn
> Пока вообще не понимаю зачем и где их используют.
Чтобы собирать кучу файлов, которые ты раскидал по папкам в один app.min.js
Спасибо. Ссылки записал, вечером посмотрю что там. Пилю на express пока, да. Не знаю как точно описать задачу, да и проект уже дописан, я скорее собираю инфу на будущее. Какие преимущества у express? А есть пример разделения проекта на модули на гите где-нибудь?
Если на express пишешь, можешь взять божественный http://sails.io/ , это надстройка на express'ом с кучей плюшек и архитектурой искаробки
> Какие преимущества у express?
Самый развивающийся фреймворк с огромный коммьюнити
> А есть пример разделения проекта на модули на гите где-нибудь?
Да любой express-проект на гитхабе
Вот, например https://github.com/madhums/node-express-mongoose-demo
10к коннектов - это 100 мегабайт
От души.
>это надстройка на express'ом
Ты ебанутый? Это такой же фрейм, как экспресс, а никакая не надстройка.
>Может глобальный ивент диспатчер сделать и сабскрайб/паблиш у него. Ну или нет.
Нашел watch.js Надо будет попробовать заюзать его, похоже на то, что нужно.
Но если серьезно браться за дело, разумнее таки будет взяться за 'harmony proxy'.
в гит репо экспресса есть папка с примерами, пример с разделением на модули там тоже есть
Спасибо, брат!
arguments.callee.name не катит. Только вызывая другую функцию, которая обнаружит caller'а?
Нужно для логгирования, скопировать/вставить однотипный код во все функции...
Ну типа в зекаче сказали, что пхп говно, а не 95% пхп-кодеров.
http://habrahabr.ru/post/142140/
>>652647
arguments.callee.toString().match(/function ([^\(]+)/)[1]
> Аноны, скажите, подойдет ли JS для изучения в качестве первого языка?
Программирование надо научинать учить с дроча алгоритмов, а не выбора языка
> а в интернетах пишут, что Node.js срань и вообще не очень перспективно
Топуп кекус. Больше доверяй даунам в интернетах, пикрел
>Программирование надо научинать учить с дроча алгоритмов, а не выбора языка
Планирую учить язык / дрочить алгоритмы одновременно. Или это мертвый путь?
>пикрел
Проблема в том, что в моем миллионнике работа на JS связана только с фронтендом, в двух вакансиях с node.js требует ультрасиниоров с пятью годами опыта.
Делаю CRUD, есть REST сервер, web на ангуляре, задача в том что мне на сервер нужно послать json объект в котором содержится массив других объектов, но сейчас посылается не массив а только один объект.
Вот код: <script src="http://ideone.com/e.js/AmkaPo" type="text/javascript" ></script>
Там кусок хтмл и контроллер.
Суть в том что это раскрывающийся список и по клику на элементе списка он добавляет мне в свойства объекта ОДНОГО пользователя из списка, а мне надо чтобы по клику он мог добавлять их несколько в массив.
Я скопировал и контроллер на всякий случай, просто плохо разбираюсь в ангуляре, хз как это реализовать.
Помогите пожалуйста.
Ты уверен? У меня просто понимание html вообще практически нет, знаю только как таблички делать и классы ксс расставлять.
Ок, тогда такой вопрос: есть формочка, туда пользователь вводит всякие данные, из них собирается json и отправляется на мой сервер. Как мне сделать так чтобы в json незаметно от пользователя добавлялось поле? Ну то есть к формочке как здесь >>652809 еще добавлялось поле currentUser например?
Антошки, выручайте.
Все, почти разобрался. У меня есть такой кусок кода в контроллере:
$scope.save = function () {
$scope.isSaving = true;
if ($scope.entry.id != null) {
Entry.update($scope.entry, onSaveSuccess, onSaveError);
} else {
Entry.save($scope.entry, onSaveSuccess, onSaveError);
}
};
Я туда просто вставлю $scope.entry.user = currentUser;
и теоретически должно заработать.
Спасибо, антош, извини за глупые вопросы, просто с js вообще никогда не сталкивался.
Мы снова выходим на связь и готовы ответить на самые ваши глубокие вопросы по поводу политики и концепции вещей, не многие поймут и не многие подозревают о чем это - постараюсь рассказать подробно и просто - с пруфами
10 RANDOMIZE
20 DIM DNA[2000]
30 LENGTH=10
40 POSITION=1
50 M=RND
60 IF M<.5 THEN M=0 ELSE M=1
70 DNA[POSITION]=M
80 RESULT=0
90 FOR I=1 TO POSITION
100 IF DNA=0 THEN RESULT=RESULT-1 ELSE RESULT=RESULT+1
110 NEXT I
120 IF RESULT<0 OR RESULT>10 THEN GOTO 50
130 POSITION=POSITION+1
140 IF POSITION<LENGTH THEN GOTO 50
150 PRINT "CODE:"
160 FOR I=1 TO LENGTH
170 PRINT DNA" ";
180 NEXT I
Очень сложно, до свидания
нет, я из днепра но в вашем треде отписываюсь в первый раз.
я тут
Прежде чем на хипстер стих ангудярах такое реализовывать, научись на яваскрипте писать такое просто и лаконично.
Сейчас начал работать с графикой и охуел от того как много математики в расчетах анимации и геометрии фигур.
Учите математику, если не хотите всю жизнь api писать.
> Планирую учить язык / дрочить алгоритмы одновременно. Или это мертвый путь?
Дело в том, что жс событийно-ориентированный язык. Он выполняет инструкции ассинхронно. Новичка это может очень сильно путать
Везде где пригождается canvas и webGL: Визуализация данных, графические редакторы, игори, еба анимация.
http://www.littleworkshop.fr/renaultespace/
Да
Нет
Возможно
>Как проверить доступность асинхронного хранилища
Так же, как и сингулярную объектную модель.
Джва спинлока этому господину.
Пишу некий бар-информер для сайта, который бы показывал список друзей онлайн. Необходимо постоянно проходиться по ссылкам (в переменной links) некоей функцией (watcher), результат которой будет выводится собственно на экран. В настоящее время я сделал костыль(последовательное программирование) который запрещает асинхронный запрос, ждет окончания всех запросов, промежуточные данные сохраняет в переменную, и только потом выводит данные.
Браузер жутко тормозит, и из-за этого я даже не могу остановить таймер. Как я понял, нужно полностью перейти на асинхронный шаблон чтоб этого избежать. Но я нихуя не понимаю в этих коллбеках, деферерах.
Немогли бы вы мне указать на явные ошибки, и показать структуру программы к какой мне необходимо стремиться. (какие приемы использовать, как организовать промежуточное хранение, коллбек функции). Если не сложно ссылки на примеры как это реализовать, или хотябы ключевые слова, по которым я это могу загуглить. http://pastebin.com/zd7PDr4q
Колись, откуда спиздил код? Сделай async:true в аякс запросе (нафиг вообще фоллс то? Если хочешь, чтобы последовательно один за одним запросы шли, сделай рекурсивный вызов ( в get_callback сделай i++; ajax_get(links ;. Ну и проверки-проверочки ). Ещё у тебя results массив у тебя бесконечно увеличивается, через полчасика, если страничка активно обновляется , будет пиздос.
Ну есть приложение (chrome extension), есть данные и есть хранилище. Нужно сохранять данные в хранилище (chrome.storage). Хранилище работает асинхронно. То есть если я делаю chome.storage.local.set({key: val}), то оно может только через пол часа запишет.
В api нашёл метод onChanged, но что-то засомневался оправданно ли делать столько телодвижений. И подумал может анон знает какую-нибудь good practice для этого случая?
Там же колбэк вторым параметром, ти чиво.
Не в этом дело. Сам по себе он гораздо лучше.
>Дело в том, что жс событийно-ориентированный язык. Он выполняет инструкции ассинхронно. Новичка это может очень сильно путать
То есть вероятность, что я начну биться головой о стену и страдать крайне высока? Ок, а во что тогда вкатиться, чтобы избежать таких проблем?
Ща везде асинхронщина, корутины/горунтины/гринлеты/петли-событий. В жс она родная и более-менее понятная, так что не рыпайся.
get callback - в смысле обрабатывает http get
>>653793
что такое снейк кейс?
>>653781
в начале watcher переменная обнуляется же.
>results = []
в каком месте у меня утечка памяти то?
> get callback - в смысле обрабатывает http get
Вот и я о чем, еба.
> что такое снейк кейс?
snake_case, camelCase, PascalCase, kebab-case/lisp-case
Ну я по примерно понял по статьям, что это нынче тренд или что-то в этом духе.
А что за рельсы скажете? Так-то приятен глазу синтаксис руби и в целом по началу казалось, что я бы хотел вкатиться в, но потом глянул, что материалов по JS для новичка вроде больше и вообще.
не стукайте за ту хуйню, что я несу, просто хочу разобраться и уже начать заниматься
Ну мог бы я написать, что это интерпретатор ассинхронный, тебе бы легче стало?
>мог бы я написать, что это интерпретатор ассинхронный
и это было бы снова мимо
R U N T I ME
U
N
T
I
M
E
А вебпак и прочие сборщики вообще используют на сервере? Я думал они больше для фронта.
Этого двачую. Если не нравится нода, то бери питон. А руби мертв, учить его нет смысла.
Нет. В интерпретаторе можно писать и синхронный код онле. А можно пользоваться библиотеками с асинхронными API. Вот скажи, питон синхронный или асинхронный? Или Си? Данный вопрос не имеет смысла, если мы не обсуждаем конкретные вызовы конкретных API.
Мне вообще C# нравится.
Значит учи его. Можешь и TypeScript навернуть, такой JS в стиле шарпа.
Рельсы это веб фреймворк/библиотека для руби, просто довольно популярная стала, как ангуляр в джаваскрипте, например. Руби, хоть и не пишу, но новичку советовать не стану, там, слыхал, очень популярно метапрограммирование и финты ушами — еще сильнее запутаешься.
section > header > .note {
font-size: 3rem;
}
Что делают ">", я такой значок в css первый раз вижу.
Прямой потомок. Без > выбирались бы все (по всей глубине) <header> элементы внутри <section>.
Понял, спасибо.
>Сделай async:true в аякс запросе
можно тогда просто $.get() писать?
>сделай рекурсивный вызов
так?
http://pastebin.com/3FpeiAtF
>Ну и проверки-проверочки
по-подробнее можно?
там опечатка вместо links - lins, но мне лень новую пасту
Лень вникать, но кажется у тебя там то ли вечная рекурсия, то ли одна функция пытается посмотреть на чужую переменную (temp_links.length).
>>653857-кун
>>654010
Бля ещё опечатку нашел. Вот правильная. http://pastebin.com/Cg02WVQY
>то ли вечная рекурсия
if (tmp_links.length)
вот в этом месте же проверяется
>пытается посмотреть на чужую переменную
она глобальная же, я её без var объявлял
Неявное объявления глобальной переменной в дебрях кода, при помощи спорной фичи языка это worst practice.
Короче переделал код под рекурсию => опять браузер тормозит. Может есть ещё какие решения?
>>654071-кун
какой "запрос"? если ты в браузере смотришь страницу, то браузер автоматически все необходимые ресурсы подтягивает (css, js, шрифты, картинки).
значит ты ответ в свою страницу встраиваешь и браузер ревестит все остальное.
если ты только в консоль напечаешь, например, то ничего лишнего запрашиваться не будет.
Если ты не делаешь append в DOM, то html остается html'ем, и дополнительные запросы не происходят. А если ты приаппендил, то будут запрошены все ресурсы, на которые есть ссылки.
>>654108
Я один и тот же долобоеб с вот этим кодом >>654026
я никуда не вставляю ответ, а обрабатываю callback функцией.
$(data).find('div.info span.rank span:last').attr('class');
Ну мб jquery это делает, что сделать поиск по DOM_дереву.
Подскажите нормальный логгер для node.js.
Обмазываюсь winston'ом - это же говнище. Похоже на него надо навесить ещё 100500 модулей, чтобы он нормально работал.
Где файлы вроде debug_20160101.log?
Где нормальные категории без изъёбств?
Где нормальные конфиги наконец?
В общем, я уже потратил кучу часов, но так и не довёл его до состояния Log.Net или log4j.
порт log4j жи есть. еще bunyan
ага, закомментировал поиск, перестал подгружать. Сейчас попробую через регулярку тогда.
Не обязательно регуляркой, можно обычным поиском строки, регулярка дохуя тяжеловесная.
https://www.youtube.com/watch?v=Ukg_U3CnJWI
почему конструкция вида [\n.]+ не работает? Или это сайт уебанский?
Внутри квадратных скобок точка это просто точка, там тебе об этом указали.
З.Ы. чтобы точка включала \n - есть флаг s, без флага лучший вариант для поиска всех символов - [\S\s]*
document.body.innerHTML.length в консоли посмотри, я прямо на этой странице запускал.
Разницы почти и нет.
Шо, бле, без канваса? Делаешь елемент, дампаешь туда свои данные, захватыааешь скрин. Или ты на ноде?
Ты сам-то кто по масти?
На ноде сервачёк имеющий два роутера: гет /form отдаст форму, а пост /post-form обработает её. Соответственно имею два мидалвара (контроллера). Первый (гет) подготовит данные (сходит в базу и т.д.) для рисования формы. Во втором мадалваре мне нужно вернуть ошибки или показать направить на страницу с успехом лол.
Так вот, а как вернуть эти ошибки в ту же форму? Т.е. чтобы из второго (который для поста) роута рендернуть форму нужно дублировать функционал первого (запросы в базу сделать).
Плохой я писатель кароч.
/post-form должен печатать форму, только уже с ошибками. Только это колхоз и 2005
Уже околостандарт формы ажаксом слать. И писать проще, и по юзеру по трафику легче
Хуле не запихнуть в роут /tvoya-sranaya-forma и отдачу формы, и прием данных? Распознавать факт приема данных (чтобы запускать валидаторы) можно по post-ключу form_status=1 или типа того. А вообще в этой вашей ноде должен быть какой-нибудь пакет, в котором будут реализованы базовые валидаторы, csrf-защита форм и прочая поебистика. Сам в ноде не шарю.
Херню какую-то ты пишешь по-ходу.
Тебе не нужно заного рендерить форму, всё что нужно во втором роуте, это возвращать ошибку (или успех), а на фронте только после успешного результата переходить дальше по роуту на страницу "успеха", или хендлить ошибку, если она есть. Бекенд не должен за это отвечать, по идее, только код ошибки присылать. Что-то типо того.
Если я правильно понял твой вопрос.
>>654428
У меня форма не аяксом уходит, я там файлики отправляю.
>>654431
Наверно так и сделаю.
>У меня форма не аяксом уходит, я там файлики отправляю.
Херово тогда. Ну ладно, делай как знаешь.
На ноде.
Проблема в том, что в поле для ввода, которое сделано вручную, боковое меню работает, а вот в заметках, которые добавляет скрипт- нет. (Значок меню не отображается почему-то, так что его можно найти по буквам "me" в углу заметок)
Вероятно дело в следующей строчке:
componentHandler.upgradeElement(button);
Которая присутствует в примере ( https://codepen.io/anon/pen/Wrmbro )
Я не особо понял как она работает, но если её добавить в код, заменив соответственно button на note(или на что-нибудь еще), то вылетает ошибка.
1) все переделал на рекурсии,
2) ajax запросы только асинхронные,
3) регулярки вместо jquery'вского поиска по DOM
Результат: страничка больше не подвисает.
Спасибо, вот этим господам >>653781 >>654124 за дельные советы.
правда появились утечки памяти
Я шлю multipart данные аяксом.
На ноде, помимо экспресса, стоит multer, для упрощенной обработки принятых бинарных данных.
В этом роуте, после проверки условий, возвращается и ответ.
>API ведения логов веб-консоли (console.log, console.info, console.warn, console.error) был отключен скриптом на этой странице.
Как эту консоль ебучую включить? Из аддонов у меня стоит greasemonkey, и adblock.
https://stackoverflow.com/questions/8212373/firefox-web-console-disabled
Так-то хуево, что такие функции можно оверрайдить.
Извини, я думал ты сам с руками.
https://stackoverflow.com/questions/7089443/restoring-console-log
https://stackoverflow.com/questions/20460685/how-do-i-restore-console-log-function-that-has-been-disabled-by-a-website
Да, я туповат, можно этот момент пропустить.
спасибо, заработало.
Поясни, няша, что мне сделать, чтобы я мог спокойно себе упражняться, решать задачки - и сразу же видеть результат, чтобы нажал run (а у меня к примеру там всего одна строка alert("test"); ) и чтобы оно отработало.
Я только базовый курс прошел, понимаю мало еще.
как я понял для кеширования баз данных?
Ты пишешь что-то вроде: http://pastebin.com/wA3abicM
Потом открываешь этот файл в браузере.
Хотя в атоме, наверное, можно как-нибудь и проще.
пиши в brackets, или вообще в codepen.io
Ну ещё раз поглядишь на свои переменные и найдёшь утечечку, молодец что всё сделал.
Если упрощать, то это большая куча, висящая в оперативной памяти. Память быстрее диска в любом случае, так что можно кешировать что нибудь, хранить данные сессии. если рисковый, то можно вообще всё там хранить. Но если у тебя проект для себя с 1000 уников в день, то можешь даже не париться, даже мускул тормозить не будет.
Волны?
А можешь вообще объяснить про componentHandler.upgradeElement() и почему ты добавил именно button.get(0) и mylist.get(0)?
Попробовал добавить
componentHandler.upgradeElement(node.get(0))
после предыдущих двух или вместо них, визуально не вижу разницы, но если предыдущие удалить- то перестают меню работать.
И еще вопрос, если переписать код используя ООП, т.е. заметки как объекты создавать, то необходимость делать "апгрейд" все равно останется?
А вот еще нашел метод:
componentHandler.upgradeAllRegistered();
С ним тоже работает, но как я понимаю, будет быстродействие хуже?
Там upgradeElementss, s, Карл. Ооп здесь не причем, если ты добавляешь элементы динамически на страницу - их нужно апгрейдить.
Такс, странно, если
componentHandler.upgradeElements(node.get(0))
добавить то перестает работать независимо от наличия первых двух.
Зато с upgradeAll меню вместе с рипл-эффектом работает.
Если ты в теме, что такое "сцена", то можно написать неплохую CMS платформу для релизов (к примеру, mp3, x264, warez etc...), которую, помимо всего прочего, можно будет и продать.
В свое время один парниша написал такую CMS для сайта astro.nom.es на рельсах.
Релизы чекались на pre-таймы, нюкинг и проч, извлекались нфошки.
Интересное коммьюнити было, да.
Идею можно расширять в разные направления, такие как: интеграция с приватным FTP, заливка на сидбокс.
http://jsfiddle.net/nxe1pc4y/11/
То бишь элементы li в меню при наведении мыши должны окрашиваться желтым, но так получается только в вручную созданных элементах.
http://jsfiddle.net/nxe1pc4y/12/
Там note надо было, а не node. Обработчики, да, надо вешать либо внутри функции создания, либо на body (добавил в пример)
Дак вроде вот жеж:
http://ru.stackoverflow.com/questions/375834/Как-правильно-добавить-события-к-динамически-создаваемым-элементам
мимоверстала
он сказал предложи сам, вот я и обратился с советом, в js то я совсем новичок.
1. Хорошая магистерская должна не предлагать что-то революционно новое, а в первую очередь провести полное или подробное исследование существующих решений.
2. js-движки - исследование производительности в разных задачах, например https://habrahabr.ru/post/276617/ , предложение по улучшению. Если твои предложения будут достаточно хороши и ты сможешь пропихнуть их в репозиторий - отлично за диссертацию обеспечена. Задача актуальная, а вот с научной новизной могут быть проблемы, сам уже придумай что сказать.
а то что куча стартапов успешно запилили на руби и вышли в плюс -- не щитается?
Очевидный даун, даже не постигший основный смысл программирования -- СОЗДАНИЕ ПРОДУКТА БЛЯДЬ
ng-butthurt
И при первых же признаках популярности переписали движок на другой язык, ибо руби не может в хайлоад. Твиттер как пример. Руби подходит только стартапам из двух школьников, все кто крупнее - выбирают другой язык, либо страдают и потом всё таки меняют его.
Игрушку сделай типо змейки или "2048". Там ебли с формами меньше будет.
> а то что куча стартапов успешно запилили на руби и вышли в плюс -- не щитается?
Вышли в плюс, а потом переписали на нормальный язык
Руби подкупает только быстрой разработки, но с хайпом js и появлением всяких Sails ему совсем пизда
Почитал, вроде фича не новая, бразуер - хром последний из стабильной ветки, а в консоли, при попытке выполнить код
var proxy = Proxy.create(handler, proto);
выкидывает 'Proxy is not defined'.
Что за шляпа?
Поставь пыху и юзай pma
Вот пример: http://jsfiddle.net/5g7r4mhq/2/
А иначе мне приходится использовать строчки вида:
$(this).parent().parent().parent().parent()
Как-то некрасиво.
О, то что надо. Чая этому господину.
Попробовал по-разному сделать, твой вариант самый рабочий. Можешь пояснить, чем event.target отличается от this? И почему нельзя писать
$('ul li:last').contains($(event.target))?
Еще попытки:
http://jsfiddle.net/nxe1pc4y/14/
Если определять обработчик внутри функции, то работает только с элементами, создаваемыми функцией. Я так понимаю, на скорость работы тоже плохо влияет.
Если с помощью
$('parent_static').on('event', 'children_dinamic', handler);
то работает только с последним добавленным элементом.
Сори, что так много вопросов. Я для себя делаю, хочу не чтобы лишь бы работало, а разобраться как сделать лучше/красивее/быстрее.
NOONE??
Как с помощью цикла while сделать так, что бы переменная "cyka" повторялась 20 раз, а после этого цикл закрывался?
Я так тоже умею. Ты немного не понял, мне надо, что бы в алерте содержался текст ololo, а не обратный отчёт, и это выводилось 20 раз.
Что выводилось то?
Спасибо.
http://jsfiddle.net/Bateman/nxe1pc4y/16/
Там надо не :last, а :last-child. Думаю все же лучше повесить разные классы на элементы меню, а не псевдоселекторами ебаться.
event.target - элемент на котором произшло событие, а this там смотрел на body. На самом деле анон выше годно написал про .on с фильтром по дочерним элементам, в таком случае this смотрит на li.
Алсо, починил тебе лэйболы.
Есть годные книги по Ionic-у в издательствах Packt и Manning, можешь нагуглить.
Аа, теперь понятно почему только последнее меню работало. И с event.target тоже понял, но это далеко не так удобно как с on. За лейболы спасибо, рано или поздно пришлось бы их доделывать. В общем добра тебе, анон.
ok thx
node.js
Пикрелейтед означает что я заигрался с рекурсиями, лол? Придется все таки на событийно-ориентированный шаблон переписывать.
Алсо, установил я этот firebug, как с помощью него найти утечку?
>settimeout
Может на setInterval? Примеры с setTimeout используют опять ту же рекурсию.
https://learn.javascript.ru/settimeout-setinterval#рекурсивный-settimeout
Именно рекурсивный вызов setTimeout. Ты подписываешься на событие event loop браузера, и как таковой рекурсии внутри джаваскрипта у тебе не будет, как не будет и разрастания стека вместе с твоей ошибкой. Попробуй. setInterval - для другого.
Там задавали мол сделать чтобы кнопки "+" и "-" работали.
Потом чтобы когда увеличиваем количество взрослых и детей добавлялось на каждого по 3 поля (ФИО).
Затем решил сделать как они рассказали чтобы отправлялось типа AJAX'ом форма и при выборе картинок отображались их превьюхи и можно было их удалить.
Можете посмотреть че там с моим кодом на js - сильно ужасен?
http://jsbin.com/xayoyicufu/edit?js,output
Заранее большое спасибо за ваши советы/ответы
P.S. html/css можно не смотреть на коленке быстренько слабал фиксированно по их скринам.
В верстке и js ньюфаня. (скурил базовый интенсив, сверстав 4 статичных макета, сейчас пилю респонсив вот изучая продвинутый, потом засяду за базовый интенсив по js и кантора)
До этого закончил вузик на прикладного математика, где толком нихуя полезного не рассказали (было чутка с++ (про ооп вскользь), фортрана и ms sql и тонны математики блядь).
Ну главное опыт в программировании есть. А сменить инструмент (язык) - несложно.
А где там собственно твой код? Я ща как раз тот блок пересматриваю, так у тебя все оттуда слизано, даже названия переменных.
обработка кнопок - мой код, добавление полей - мой код. (это и было дз если че)
Что касается части ajax и работы с превью картинок - делал как они рассказывали
Тут еще и верстка тред есть, лол. Для интереса пролистал нулевую, похоже он очень глубоко.
Он в /wrk
Да да точно, вспомнил уже. Навскидку, я бы использовал делегирование вместо бесконечных проходов циклами по массивам кнопок.
Ок, значит почиткаю про это
Вот ещё в догонку.
>Можно повесить обработчик событий практически на любой объект:
А если мне не нужно использовать объект? Просто нужно произвести какой-то код, в ответ на событие, насколько валидна такая запись?
Это только начало
Какие есть для js редакторы/ide с нормальным автодополнением? Чтоб подсказывало не только кейворды, но и функции из внешних скриптов.
Кроме WebStorm и NetBeans.
>По-русски это называется инерция.
Только если ты ебантяй безграмотный. Можно с большой инерцией сидеть на жопе ровно как жабка например.
https://en.wikipedia.org/wiki/Momentum
Просто я угораю по теорфизу, и меня не наебешь.
https://kangax.github.io/compat-table/es6/ -- свистоперделки уже работают во всех современных браузерах, бро (кроме модулей, тут и спецификация довольно загадочная, хз как их вообще имплементировать нативно, плюс при сборке можно из модулей выкинуть ненужное, в браузерах так не сделать). В принципе можно уже даже писать без бабеля и только перед заливкой на сервер код компилировать для пенсионеров, последний некоммерческий проект так и запилил. Про "классы не нужны" двачую, а большинство остальных фишечек очень сладкие. Да и вообще ты говоришь так, будто тебя обнаженные валькирии с плетками заставляют писать на es6, старый добрый JS то никуда не делся тащемта.
Но надеюсь что так все и останется.
Проблема в том, что еще чужой код приходится читать, а там скоро вообще все на эс6 будет походу.
Потому что он ориентирован на сервер. На фронтомакак всем плевать.
Стандарт на байткод завезли? А то придется как с самим жс'ом - компилировать отдельно под каждый браузер.
> А то придется как с самим жс'ом - компилировать отдельно под каждый браузер.
Что ты несешь, деган?
Передай, пусть не выебываются, а делают как все — пилят компиляцию из язычка в жс
Да я про полифилы и ие7, чтобы писать кроссбраузерно, нужно сначала немношк поебаться, потому что все хуй клали еа стандарты.
То, что ты поддерживаешь некроговно, которое убил сам разработчик, это твои проблемы, а не жса
Есть ли сопоставимый по эффективности инструмент для чистого жс?
Браузер распознает вызовы asm.js и использует для них быстрые реализации (использование unboxed типов вместо объектов и т.п.)
>console.log((1 / 3)3);
>1
Это он как так сообразил? Почему не 0.999...?
И если раз он такой умный, то почему с console.log((1 / 49)49); уже не осиливает?
С разметкой обосрался, там должно быть console.log((1 / 3) 3), ну и аналогично с 49.
Бля. Одна то звёздочку он как парсит? Умножить короче.
Например, описали стартовую страницу через jsdom.env, в коллбэке вводим логин, кликаем по кнопке.
Как получить новую страницу и что-то выполнить на ней, когда она загрузиться?
загрузится
Мне казалось, что они слишком тяжеловаты для простых задач. Или это не так?
Сколько они памяти будут использовать?
>Сколько они памяти будут использовать?
На моей днищевпске с 512 мб летают. Но не суть.
Вот тут что-то такое разбирали:
https://stackoverflow.com/questions/6263004/post-a-form-using-jsdom-and-node-js
Поред вопросом я конечно гуглил, и на эту страницу не меньше 3 раз, лол.
Тут он загружает реквестом, но в таком случае не удастся именно просто "кликать" по всяким кнопкам, а выкавыривать следующий url руками.
Не такая большая проблема, но можно как-то поудобней сделать, все для этого есть.
У тебя фантом параллельно работает? Можно парсить сотни-тысячи страниц одновременно?
Спасибо!
https://www.codeschool.com/mean
https://softserve.ua/en/university/it-academy/napryamki-navchannya/angular-boot-camp/
подкиньте идей что подучить?
Ангельский уже собеседовали? Или после технического будет?
Бля, увидел. Ебаный иф отнял у меня 25 минут жизни
Это пример же был, откуда такие проекции. Естественно это не проблемы жса, он же просто язык. Ведь все современные браузеры поддерживают es2015 в полном объеме?
> Ведь все современные браузеры поддерживают es2015 в полном объеме?
Da
http://kangax.github.io/compat-table/es5/
Потому что ничего не изменилось с их приходом. Как раньше писал так и сейчас пиши.
>Почему классы в ES6 такие уёбищные?
Не более, чем синтаксический сахар над давно известными всем конструкциями.
Обвиняли ES в отсутствии классов, насмехались?
Получите и распишитесь.
>this.someMethod(), а не просто someMethod()
>Почему нельзя просто field?
Потому, что краеугольный камень ES - скопинг и контекст. С точки зрения этих понятий, такой подход не вызывает вопросов.
>Хуле я что должен через нижнее подчёркивание теперь всё писать
Должен, да не обязан. Это один из 'workaround / approaches' в виду особенной, прототипной концепции языка.
Здесь представлен еще один из вариантов создания приватных объектов (экспорт только публичных)
https://scotch.io/bar-talk/4-javascript-design-patterns-you-should-know
Вот еще один в названиях запутался.
Ловите ПХПепера!
бесконечный цикл - "движение" змейки, есть некий массив хранящий части змейки, за каждый такт добовляется новый элемент(где голова), и удаляется последный(где хвост), повесь на кнопки обрабочик - будет тебе "управление".
Начни с более простых задач.
Например, написать скрипт, который генерирует поле (матрицу) с заданным размером, произвольно выставляет препятствия на этом поле, точку старта и финиша, и сам генерирует кратчайший путь между двумя точками.
Вариантов решения такой задачи множество, гуглятся они по кейвордам "maze runner".
Ещё могу посоветовать статьи типа "Пишим рогалик с нуля", например эта http://rlgclub.ru/wiki/Пишем_рогалик_на_Javascript/Часть_1
Попробуй. Метеор вроде годнота, но не трогал.
Могу открыть блокнот и скопипастить туда кусок кода из мануала. Я хуже червя-пидора, я знаю.
Например: $('.container').createElement()
А потом создавать его содержимое методами:
element.addTitle(); element.addContent() и т.д.
Но затрудняюсь, как это реализовать. Если для создания конструктора и определения методов еще имею представление, то создание с помощью query-селектора для меня не понятно. Поясните, плиз
нубо джун
Mozilla js shell внезапно. Я при помощи него задачи на алгоритмы и структуры данных решаю.
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell
соснуль можно вынести в отдельное окно и шрефты тоже настраиваются (скорее всего)
Вот блин. Ну ладно, не буду тогда фигней страдать.
Берешь жидквери, находишь ссылку, меняешь ей атрибут, вешаешь обработичк на кнопку, в нем показываешь див.
Звучит заманчиво, еще и "с пылу и жару". Надеюсь моего ангельского на это хватит.
спасибо
спасибо
Чому седьмая строчка не работает?
Тому что надо mylist[0], lastChild - свойство дом элемента, а не жиквери объекта. display не через атрибут ставится, это цсс свойство.
Спасибки.
По джсу чистому читни Джона Резига "Секртеы джс-ниндзя". Этот тот же толстяк, что жикфверя написал. Я прочел половину - пока заебок, здорово меняет взгляд на написание кода, ну и для себя нашел пару триков хороших.
>Матрица смежности и списки смежности являются основными структурами данных, которые используются для представления графов в компьютерных программах
Ни тебя, ни их не исправить.
Есть что-то такое? Может либа какая? Я уже заебался ифы писать для каждого добавления
Разве нельзя реализовать добавление элемента через функцию, в которой будет одно if условие по проверке mass.length и перестроению массива?
Но мне и объекты нужно. Слишком костыльно это выглядит вообще.
Нагуглил то, что нужно, но оно для ноды
https://www.npmjs.com/package/cappedarray
а что нельзя объект в функцию отправить? Это же по сути ассоциативный массив
ДЕКОРАТОРЫ
Использование 'use strict' как-то влияет на this?
Да, this будет undefined
Шахматы
Харкач
Учебных материалов и курсов целая куча, недолго и запутаться. Но пока решил начать с HTML/CSS, затем JS с jQuery на codeschool.com. Сразу вопрос: курсы на CodeAcademy лучше или хуже, чем на Code School? Параллельно буду читать книжки из ОП-поста. Потом планирую заняться PHP и попробую хоть немного вдуплить в работу с БД и системное администрирование.
Это нормальный набор скиллов? Стоит ли включить в него Ruby?
Обоссал JS-макак, вместо того чтобы править стандарт эти петухи будут городить 100500 строк кода, только чтобы сделать себе костыль и потом будут любоваться лагающим куском говна с 3мя кнопками на всю страницу и дурацкой плавающей менюшкой, бить кулаком в грудь и говорить "вот как же всё заебато сделано, целых 5 фпс на мозиле с core i7, и всего 5 секунд на загрузку"
Срикошетил струю в диванного дауна, которому лишь бы покукарекать о том, в чем он нихуя не шарит
learn.javascript
С туалета начинать всегда надо.
Сейчас приходится писать func(mas[0], mas[1], mas[2]). Но проблема в том, что я не знаю заранее размер этого массива
Это функция res.json() экспресса, не хотелось бы ковырять сам экспресс
Тогда массив передастся как аргумент, а мне нужно элементы массива передать как аргументы
Нет, не передастся. Он именно разложится по-аргументно там, и если у тебя вариативная функция, как я понял, там, то она будет юзать эти аргументы.
Значит у тебя там массив в массиве, нужно его выровнять сначала, либо два раза спред делать, но это уже костыль какой-то, сделай просто ...(_.flatten(mas))
>Ваш оператор не оператор
Ты что в 2016 году на ес5 пишешь? Пиздос
Тогда тебе только через apply можно закостылить, func.apply(null, mas)
Вообще советую разобраться в базовых знаниях, чем ковырять ноду
>Нет же, у меня просто массив, в нем при ошибке два элемента - первый хттп-код, второй ошибка. А при успешном ответе элементов гораздо больше
Ты ебанутый? Сука даун тупой. Если у тебя просто массив, то хули ты гонишь на спред, который к тому же у тебя не работает? Мразь поганая.
Этот оператор не поддерживается v8, то есть официально не поддерживается в ноде, зачем ты мне его советуешь?
>>661769
Я сразу сказал, что у меня массив
>Этот оператор не поддерживается v8, то есть официально не поддерживается в ноде, зачем ты мне его советуешь?
И что? Сложно бабель подключить?
Сука, даже спасибо не сказал за apply, вот блять советуй вам тут теперь.
.apply то, что нужно. Спасибо
Ты че сука слепой? Уже подсказали это
Для первого курса не нужно знать все что ты написал, тебе это там преподавать будут. Если шило в жопе- по компьютер саенс или алгоритмам почитай. А лучше всего бухай и туси все лето, потому что потом ебала начнется.
На первом курсе у тебя будет куча всяких математик, а не программирование.
Учи что тебе нравится, а в вуз для галочки ходи
Чяднт? Почему срабатывает только последний фильтр, а как сделать это правильно?
Вариант не выёбыватбся и взять лазижс\лодаш\етц не предлагать, у меня слишком древнее окружение, в котором даже полифилы не работают из коробки, кек.
ну res.json не принимает два аргумента больше, эта фича deprecated. че то ты там не то делаешь короч
Сам нашел. Проебался в глаза и потерял вызов функции.
Ну я ещё на третьем, на sails пишу
Почаны, есть смысл перекатываться из питон-дева во фронт-эндера, скорее даже полностью в этот ваш MEAN ?
Так то серверные проблемы мне решать относительно легко, а вот клиентские дела - на очень базовом уровне умею, а верстку и дизайн не умею совсем.
Хотелось бы в будущем быть йоба фул стеком.
МЕАН - это больше сервер, чем клиент. Если у тебя нет лютой ненависти JS, как у некоторых питонистов, то перекатывайся. Хотя вместо ангулара я бы посоветовал взять реакт.
Реакт это супер маленькая либа, которая учится за вечер. Книга там нах не сдалась
> Хотя вместо ангулара я бы посоветовал взять реакт.
Почему? Второй ангуляр куда перспективнее
Очень спорно. Да и это разные вещи совершенно, ангуляр лучше с эмбером сравнивать, например.
Ниудобна
так и сделал, на сервере flask а на фронт мне react понравился, поглядываю на riotjs. А вообще есть транспайлеры из питона в жс, там можно в list comperhension и вообще все фичи питона, как освоишься в жс бери один из https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js#python и не будешь горя знать
для вызова функции на сервере ?
мне нужно просто сгенерировать событие из другого модуля, для дальнейшей обработки.
Eсть код вида $$([obj, ..., obj]).find(foo).filter(bar).take(10);
Код ленивый, внутри оно всё замыкается на один внутренний метод. Т.е. последний вызов(take) превращается во что-то вроде:
for(var i = 0; i < 10; i++) ret = filter(find(get(), foo), bar);
Так вот, на любом из этапов данные могут внезапно закончится: входных мало, фильтр всё зарежет и т.д. Сейчас у меня в таких случаях просто прокидываеться наверх null. И, соответственно, если во входных данных внезапно будет null то всё пойдет по пизде. У меня хоть нулов быть и не должно, но всё равно неприятно. Какие есть еще варианты? Бросать исключения? И, в случае с исключением - как будет с производительностью? Не будет ли одно исключение в конце работы медленней чем 9000 сравнений null на каждом этапе и для каждого элемента?
Да нет, я про то что если там те же исключения, то я и сам бросать их умею, и не вникая в промисы. Вопрос то в том лучший ли это(исключения) вариант?
>>663007
Нативных промисов у меня точно никаких нет, а те кустарные реализации паттерна которые сходу гуглятся на тех-же исключениях.
Может я чего-то не понимаю, но исключение это должно быть каким-то очень редким событием. Как это может влиять на производительность?
Ну вот я и спрашиваю, сильно ли оно повлияет если я его сделаю чуть менее редким, бросая вручную.
Грубо говоря сейчас на вход я даю массив из 1000 элементов, на него вешаю 5 фильтров. В моей текущей реализации это приведет к тому что каждый из элементов в каждом из фильтов будет сравнен с null. Т.е. если всё пройдет через все фильтры то за время работы 5000 раз отработает "if(val == null) return null"
В качестве альтернативы у меня вариант сделать один if(sourceData.length == 0) throw false в одном только последнем шаге, дергающем исходные данные, ну и ловить его на первом шаге, а в промежуточных фильтрах будет и так ясно что либо всё ок, либо исключение всплывает выше. Одно исключение на обработку всей цепочки.
Ну или может кто подскажет какие есть еще варианты.
Чем отличается открытие html напрямую браузером и запуском через сервер. Работает ли и насколько по разному js в этих случаях?
Статей покидайте, можно и на англ.
Заранее спасибо.
Браузер не знает, откуда у него страничка взялась- он сразу собранный html код читает.
да нету там этого , сам уже методом тыка нашёл , не знаю best way или нет но вот io.sockets._events.sessreload(sid);
Какие типичные задания выполняет жс-девелопер? Какие задания наиболее интересны?
Алсо, мне вот, например, нравится жс-анимация, визуализация. То есть жс больше привлекает как эстетический инструмент. В каких сферах это наиболее востребовано? Или везде рутина с кнопочками, менюшками, слайдерами?
Тебе в СSS3 - тред. Кнопочки, менюшечки слайдеры гармошечки и анимации это CSS.
Three.js если хочешь графоном обмазатся.
Даже хрень с охуенным сюжетом можно устроить, упарывай webGL Three.js для трехмерной графики или canvas и еще что-то для двухмерной.
А браузер потянет? У меня даже какое-то простое вращение планеток подвисает.
http://threejs.org/
Потянет, по запускай примеры с гугла еще
https://www.chromeexperiments.com/webgl
Технология развивается, сетевые игры на ней уже есть.
https://www.urbangalaxyonline.com/
Браузер нормальный ставь Chromium, если старое железо то могут быть проблемы, но старое железо сейчас мало у кого, а технологию будут оптимизировать.
Что сказать-то хотел? У них обоих "no" и "partial" по половине пунктов. Но хромой при этом с гуглозондом, и интерфейсом для слабоумных. Да, у фф нынче тоже. Но хромой начал это первым!
Охуительные у тебя половины.
Причем, у хрома куда более важные плюсы, чем у фф. Всё, что у фф зеленое можно выкинуть, и ничего особо не изменится. А в хроме есть Shadow DOM, Custom Elements, Touch events и прочие, без которых уже будет грустно
> Но хромой при этом с гуглозондом
Хромиум
> интерфейсом для слабоумных
По-моему интуитивно понятный интерфейс - это только плюс
>Хромиум
Дак и там зонды через билд находят. Сам нагуглишь?
>По-моему интуитивно понятный интерфейс - это только плюс
Я и говорю - для слабоумных. Как еще называть тех для кого браузер с более чем тремя кнопочками непонятен?
>фф
>хром
сорта говна.
>Всё, что у фф зеленое можно выкинуть, и ничего особо не изменится
у хрома тоже. лучше бы сделали чтобы вкладка от простейшего видео не падала прежде чем какой-то хуйней меряться.
Можно. JS или C# - самые подходящие языки для начала. Главное не трогай питон или раби, а то привыкнешь и не сможешь писать на нормальных языках.
> нормальных языках.
поссал на маньку, первым научился в питон, со скрежетом осилил убогие кавычки и курли бракетс в жс, получаю как боженька за стек django/flask+react/angular js ваще не юзаю python транспайлеры вся хурма...
2 == 3
В js вообще все числа с плавающей точкой, просто нули обычно отбрасывается.
Где взять легкие задания, что бы набить руку? Чисто учебные примеры.
Первая часть кода (до строчки var dat = new FormData(); ) выполняется исправно - в mySel1 с сайта загружаются данные.
При отправке же запроса POST выдает ошибку на последней строке - "невозможно присвоить innerHTML от неопределенного объекта или равного null". Вероятно ошибка в выделенном значении (по всей видимости оно неопределенно), ибо когда я его явно указываю, то запрос выполняется.
Как в dat.append передать выбранное значение селекта?
Чо-т я в глаза ебусь, прошу прощения.
Все, сам разрулил. Нужно код добавления данных в FormData() внести в ончейндж.
Потому что они удобные, а тебе нужен интерфейс эксплорера?
Почему "проиграл с подливой" она ищет не цельно, а отдельно, а во втором примере вообще "проиграл" не находит? ig же стоит. Чего я не понимаю? Как написать правильно?
Блядь, точно, дошло, добра.
Скобочки не учили использовать?
Смотря по каким параметрам. Как по мне, ангулар лучше
https://github.com/MikeMcl/bignumber.js/
Как это делается? Пиздец блять, две ночи плохо сплю, тупо нихуя не могу придумать.
Пиздец. Очевидно же, что проблема во мне. Я нюфаг. Ну я знаю onclick, но как сделать, чтобы появился новый div я не знаю.
Нюфаг же.
Да, и еще я сам ньюфаня считай что, сделал бы как-то так (тут на вновь созданные тоже можно кликнуть и они плодятся)
Сделал только из того что было рассказано в этих двух видосах
http://jsbin.com/niqagofapi/edit?html,css,js,output
Жду критики
Норм
Спасибо, лучей добра.
>у хрома тоже. лучше бы сделали чтобы вкладка от простейшего видео не падала
Вот это двачую. Хромой самый ебланский в плане стабильности браузер из 3-х столпов(опера, лиса, хромой), постоянно падает сука, туда не пускает, сюда не пускает, а самое главное, что даже пидор не говорит, что за беда и почему я не могу зайти на какой-либо сайт(когда сертификаты не те, молча сука рубит и говорит - нет такой страницы, а ты блядь гадай, что за беда такая). Про сеттинги хрома я вообще молчу, я дико прозрел, когда нашел енкодинги во вкладке фонтов, это просто пздц. В общем, для малохольных браузер, единственный плюс по отношению к фф - лучше оптимизирован и на некропеках работает получше чем фф, тот чуть оперативы не хватает - сразу крашится.
сублайм для илиты
С каких пор React стал фреймворком, да ещё и MVC?
> некропеках работает получше чем фф, тот чуть оперативы не хватает - сразу крашится.
Пиздеж. Довольно долго просидел на пекарне с 500мб оперативы, ни единого краша, даже при уходе в глубокий своп. Хотя в хром и правда работал пошустрей.
Ну и причем тут память?
Эх, совесть же замучает... Но тоже испытаю.
Возможно это несколько нахально с моей стороны, вот так вот вкатываться в тред и просить помочь запилить, но я вряд ли осилю, нужна помощь анона. Анон, помоги! Этож вроде не сложно, а конкретную информацию я нагуглить не могу.
Анончик, если ты мне это действительно напердолишь — я и до завтра подожду. Главное напердоль! Браузер без этого сложно юзать.
Я подумал, что можно просто выдрать один раз из обоих объектов необходимые элементы, выделив их в два массива, и по ним пройтись. Я уже неправильно сделал, что итерирую по strJson каждый раз, хотя он меняться не будет, завтра попробую.
Там регистрироваться же нужно!
Да и на пару баксов я буду кушать три дня, а тут задача вроде довольно простая, я представляю как это сделать, но в саму реализацию не могу, так как не пишу на js. Вот может кому-то не лень будет, поможет.
Это же тоже самое, что и для сайта, просто итоговый скрипт нужно вставить в какой-нибудь greasemonkey и сделать глобальным. Потому я думаю, что это не очень сложно, не хотелось бы идти на фрилансы всякие по такой причине.
Правда если по уму то еще и e.target проверять надо, чтобы во время печати в инпутах экран не ебался. Но лень.
Тащемта работает, но есть две проблемы:
1. В инпутах действительно всё ебётся, и это пиздец. Можно хотя бы намёк на то как это исправить?
2. Юзерскрипт вроде включён, но не работает, нужно руками в сонсоле прописать, тогда норм. Случайно не знаешь чего так?
А в целом годно, я не понимаю почему авторы всяких Vimperator'ов не могут запилить всё так качественно, без хуйня и задержек. Спасибо.
Таргет проверить надо, говорю же. Ладно, вот: http://pastebin.com/pGA83Mk8
А вот почему не работает - хз, у меня в ff\greasemonkey все нормально.
>я не понимаю почему авторы всяких Vimperator'ов не могут
Ставь VimFx. Shift+g - скролл вниз, gg - скролл вверх. Всё работает быстро.
Ты точно правильно скрипт сделал? У меня как пидорасило, так и пидорасит.
UPD:Это на луне не работает, на лисе таки работает, спасибо, пойду думать как это на луну "портировать".
>>664403
Рефрешил, но не подхватывалось. А уже подхватывается. Что изменилось? Не знаю, но работает и ладно.
>>664413
Я им и пользуюсь, но там по дефолту НОВЫЙ УЛЬТРАПЛАВНОМОДНЫЙ СКРОЛЛ 2016, который тоже тупит, а если FimFX накатить на PaleMoon, на которой я сейчас сижу, то тут вообще задержка жёсткая.
Лол, теперь и тут работает, я скоро ёбнусь с этим вебом.
Нашел в интернете разных заданий для новичков.
Вот одно из них:
Напишите программу, создающую строку, содержащую решётку 8х8, в которой линии разделяются символами новой строки. На каждой позиции либо пробел, либо #. В результате должна получиться шахматная доска.
Сделал вот так как видно ниже, но вот возник вопрос:
На сколько это говнокод? Догадываюсь, что есть куча других способов, которые на много короче и лучше и правильнее...
var cell = 8;
var s = cell * cell;
var result = "";
for (var i = 1; i <= s; i++) {
//создаем строку с нужным колличеством символов для всей доски.
if ((result.length) % 2 !== 0) result = result + " ";
else result = result + "#";
//разбиваем большую строку на необходимое колличество рядов.
for (var m = cell; m <= s; m = m + cell + 1) {
if (result.length == m) result = result + "\n";
}
}
console.log(result);
> На сколько это говнокод? Догадываюсь, что есть куча других способов, которые на много короче и лучше и правильнее...
Не такой уж говнокод, просто нужно оформить всё это в виде функций, а не простыни кода, чтобы можно было удобно переиспользовать это в случае необходимости
Сойдет. Быдлокод выглядит так:
var result = "";
for (var i = 1; i <= 8*8+8; i++) {
result += !(i%9)?"\n":!(i%2)?" ":"#";
}
console.log(result);
Если в задании речь о строках, то показывай своё знание строк, чтобы все ахуели как ты можешь.
Я правда тут хуйню написал, которая всё не так делает, ну да ладно.
var r="";
for(var i=0,c=1,s=[" ","#","\n"];i<72;i++,c=1-c) r+=i%9?s[c]:s[2];
console.log(r);
Чем сложнее написан код, тем сложнее его поддерживать. На олимпиадах может с тебя и охуеют, а вот в продакшенах тебя подкараулят после работы.
Это копия, сохраненная 15 марта 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.