Ответы пользователя по тегу JavaScript
  • Как обратиться через this к переменной из вложенной функции?

    @larionov_n
    Использовать call, apply
    Ответ написан
    Комментировать
  • На чем писать Rest API?

    @larionov_n
    Я пишу REST-API на Python, Java. Сейчас работаю над проектом где применяется nodejs Koa и видел что есть koa-rest 30 Миллионов записей обрабатывает шустро, на уровне Python Tornado. Для проверки течки памяти используйте Memory Leack Detection. Koa - разработан авторами express. Нагрузочные тесты из-за yield архитектуры держит хорошо.
    Ответ написан
    Комментировать
  • Какой игровой/физический 2d движок на javascript выбрать?

    @larionov_n
    www.cocos2d-x.org/wiki/Cocos2d-JS Наиболее готовое к использованию решение. Pixi.js - Если только нужна графика, без логики, физики. Phaser - ну это только аркадные игры. Изометрическую рпг с крутой логикой будет сложно на нем написать.
    Ответ написан
    Комментировать
  • Какой js фреймворк лучше использовать для выделения терминов в предложениях?

    @larionov_n
    Понимаю что мой ответ не будет решением, но мне кажется что вы фантастику какую-то просите. Как минимум тут уже требуется полнотекстовый поиск, а для его работы с большими данными подойдет только Sphinx. Причем что нагрузить хотите клиент, у которого может быть 2GB памяти или 16GB. Сложность алгоритмов решающие вашу задачу высокая в любом случае. Да и реально выделять такие слова можно только через Machine Learning с огромным слоем математики. Все остальное это довольствие правильным синтаксическим деревом.

    Есть много алгоритмов, алгоритмы - не самая популярная вещь для реализации на JS. Да и подобную задачу я бы решал иначе, получил текст, отправил на сервер, разобрал, построил синтаксическое дерево, прошел по нему, применил свои крутые алгоритмы. Получил данные, преобразовал их в другой более подходящий вид для задачи и еще рак прогнал алгоритмы, сделал нужные структуры данных, построил для доступа индексы, разработал схему работы всего вместе. В итоге сделал, что хотел но только не на клиенте, а на сервере... Клиент использовал бы как передатчик данных, парсер, набор умных шаблонизаторов с мета информацией внутри текста для обертки слов текста дополнительной инфой.
    Ответ написан
    3 комментария
  • Какие JS-фреймворки нужны начинающему?

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

    Без хорошего знания чистого Javascript, хороших практик программирования, дизайн паттернов, простейших структур данных (Хотя бы стек и очередь, максимум деревья и графы). Так-же в основе языка еще и мат.база, взять функциональное программирование на JS (Каррирование например + сложное применение map, reduce вместе). Добавим сюда еще принципы проектирования и опп, DRY, TDD. Что получиться в итоге? Вам нужен PubSub, а вы берете фреймворк его реализующий с миллионом методов - которые вы не будете использовать, но будете думать а куда бы еще прикрутить ее, в следствии чего в пьяном бреду можно нагородить огород библиотек и не узнать как написать свою :)

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

    В основе того-же Backbone (Лежит Model View Controller) Иерархия классов, евенты, pubsub. Ember (Two-way databinding, services). AngularJS(NO DOM Manipulation, Services, DI, TwoWay Databind). React (Shadow Dom, JSX, ES6, Views).

    Надеюсь помог.
    Ответ написан
    Комментировать
  • Возможно ли присвоить функции вертикального скролла на горизонтальный?

    @larionov_n
    Посмотрите API браузера, особенно events. И ответите на свой вопрос.
    Ответ написан
    Комментировать
  • Как сделать что бы при клике на блок менялось содержимое другого блока?

    @larionov_n
    Если использовать ООП и нормальный подход, то:

    1) Создать модели для каждой сущности
    2) Создать шаблоны или View - которые будут реагировать на изменения в моделях и рендерить представления, вызывая нужную бизнес логику через метод модели для калькуляции другой цены или запроса ее с сервера.
    3) Использовать Publish/Subscribe, отправлять сообщения другим объектам (блокам) по клику или действию пользователя.

    OneBlock.publish('eventName', data);
    AnotherBlock.subscribe('eventName', function(data) {
       calculatePrice()
       showSomethingInAnotherBlock()
    });


    Использовать можно: Ember, React, Backbone, Radio, Marionette, ну и конечно VanillaJS :)
    В общем проще когда на странице есть отдельные js объекты представляющие блоки и содержание, еще лучше если в проекте внедрена шина Radio. На клики подписываем triggers, fireEvent. Если все делает Backend, то вызывать через JSONP подобные callbacks.
    Ответ написан
    Комментировать
  • Опыт, практика в JS?

    @larionov_n
    Совершенно нормальная ситуация, я 4 года с языком работаю и спустя это время понимаю четко, что я знаю как он работает ну... процентов на 20%. В эти проценты я добавил: кроссбраузерность, nodejs, транслируемые языки, шаблонизаторы, библиотеки, фреймворки, события, паттерные проектирования, плагины для браузеров, ооп, алгоритмы, dom, polymer, виртуальные машины которые тот-же C++ в JS переводят, Coffee, TypeScript, ES6, gwt, геймдев nosql - базы, mongodb, npm плагины, визуализацию данных, canvas, svg, web-gl. Это я так малую часть привел, где он используется и что значит для меня JS. Я использую C#, C++, JAVA, Python (Но по каждому вспомню максимум до 10 тегов). Но JS много ассоциаций у меня вызывает). Так что вы точно поторопились с собственным убеждением, что вы знаете язык, синтаксис возможно, я тоже могу сказать что знаю в таком случае великолепно C++.

    По делу:

    Коммерческий опыт хочу:

    Сформируйте JSON объект данных (пользователей), используете его и почитайте про паттерны и поставьте себе задачу - управлять массивами пользователей (Удалять, Создавать, Обновлять). Сделали? Нарисуйте UI HTML+CSS+BOOTSTRAP, добавьте события на ваши кнопки, к уже реализованными методам. Работает? Скучно? Сделайте это на Backbone, Angular, React, Ember, Knockout. Получите маленький такой опыт приближенной к обычному процессу front-end разработки в коммерческом проекте. Дальше ORM на клиенте, REST_FULL, построение больших приложений.

    Забавный опыт хочу:

    Для начала напишите комикс на JS + JQUERY.

    1) Напишите свою игру, например морской бой. Сложно? Возмите фреймворк, почитайте исходники, выучите его API - напишите свой платформер - это просто, очень!

    2) Любите музыку? HTML5 AUDIO API в помощь, синтезируете звуки с помощью JS. Напишите пианино в браузере, есть примеры кода в инете где это делают 47 строк кода.

    3) Веб чат + AJAX - полезно при одновременном обучении PHP и JS. Напишите чатик, который обновляется, заодно можно и подучить WEBSOCKETS.

    4) Анимация, разбейте картинку на 8 частей. Допустим руки ноги и голова у робата с разных углом летят к телу, сделайте анимацию по спрайтам, анимируйте с помощью таймеров, с помощью передвижения DOM объектов. Посмотрите что может $.animate().

    Теория:
    www.codeacademy.com
    Книги: Совершенный код, Паттерны проектирования Банды четырех, Гради Буч - ООП.
    Ответ написан
    1 комментарий
  • Где найти работу без опыта коммерческой разработки?

    @larionov_n
    Я начинал в 2007 году с того что устроился в компанию контент менеджером потом вырос до вестальщика спустя двух лет и обучения устроился джуниором потом еще два года и middle, сейчас интересует c++OpenGL, Java backend - пишу свое простое, как напишу серьезнее уйду из web front end в graphics gui. Но требования тут уже не только к технологиям но и к знаниям алгоритмов, математики. А помогало мне найти работу наглость и самоуверенность, иногда писал в резюме то чего незнаю, на собеседовании конечно занижал планку. Но в итоге оказывалось что срочно нужен человек и брали на испытательный срок. Кстати backend уровня яндекс не выдержал и уволили через три месяца, зато понял куда копать и какие есть пробелы.
    Ответ написан
    Комментировать
  • Как научиться разрабатывать игры на HTML + CSS + JS?

    @larionov_n
    Изучите Canvas, возьмите фреймворк для разработки игр, сделайте пару простых игр по аналогии. Нужные области для изучения (Структуры данных, Алгоритмы, Линейная Алгебра, Геометрия, Тригонометрия). Для Opengl (C++, JAVA, Дифференциальная Математика).
    Ответ написан
    Комментировать
  • "Для обмена между клиентом и сервером" Есть альтернатива php?

    @larionov_n
    Дело точно не в php. Но если искать альтернативу то: Python (Flask, Django), Javascript(Nodejs + express).
    Ответ написан
    Комментировать
  • Вопрос архитектуры фронтенда! что выбрать?

    @larionov_n
    Проще всего использовать jquery + ajax + requireJs. Посложнее Backbone, еще сложнее AngularJs, еще сложнее Extjs.

    Хотите монстра? Python Tornado + XSLT + Любой MVC clientside фреймворк на ваше усмотрение. Получится что есть сервис приложений Java (Справочники). Питоном набираете данные, пишите интеграционную логику, рендерите XSLT и инициализируете SPA отдельными элементами. Зависимостями можно управлять от набора данных на входе в XSLT и DI на клиенте с асинхронной подгрузкой. (Часть архитектуры hh.ru).
    Ответ написан
  • Как правильно организовать скрипт добавления CSS класса?

    @larionov_n
    Последним аргументом в animate, добавьте функцию которая проставляет нужный класс.
    Сигнатура animate: ( properties [, duration ] [, easing ] [, complete ] )

    $('body,html').animate({
         scrollTop: totalScroll
         }, 400, 
         'easing',
         function(){
             element.addClass('testClass');
         }
    );


    Как-то так, обычный callback.
    Ответ написан
    3 комментария
  • Js - суммировать каждый аргумент функции в строку без for, while

    @larionov_n Автор вопроса
    Спасибо cha-cha.

    Код:

    function test() {
       var args = Array.slice(arguments);
       return args.reduce(function(a, b){
          return a + b;
       }).toString();
    }
    console.log(test(1, 2, 3, 5, 6));
    // 17
    Ответ написан
    Комментировать
  • Js - суммировать каждый аргумент функции в строку без for, while

    @larionov_n Автор вопроса
    Если конечно аргументов конечное множество, то можно забыдлокодить:
    function test(a, b, c) {
       var args = Array.slice(arguments);
       console.log(
          parseFloat(args.join('')[0]) + 
          parseFloat(args.join('')[1]) + 
          parseFloat(args.join('')[2])
       );
    }
    test(1, 2, 3);
    // 6
    Ответ написан
    Комментировать