Задать вопрос
  • Есть блок с overflow:hidden в нем есть элемент который должен выходить за рамки блока, как реализовать?

    @memba
    Выкидываете overflow:hidden и вешаете на элемент clear-fix класс:

    .clear:after {
      content: '.';
      display: block;
      height: 0;
      clear: both;
      visibility: hidden;
    }
    Ответ написан
    3 комментария
  • Как реализовать переход на новую страницу в Backbone?

    @maks_ohs
    Backbone.history.navigate("/адрес route на который нужно перейти");

    Этот метод используется и в первом и втором случае (по нажатию на кнопку)

    view.render().el возвращает обычный html, который можно вставить в любой тег, например в body, заменив при этом html, который там уже есть.
    $('body').html(view.render().el)
    Ответ написан
    7 комментариев
  • Где найти практику по javascript?

    DeFacto
    @DeFacto
    Для меня эффективным способом было ставить перед собой задачи и делать.
    1. Калькулятор на JS
    2. Валидация формы (е-майл, пусто/не пусто)
    3. Небольшая игра (крестики-нолики, найти пару одинаковых картинок по кликам)
    4. Таймеры (часы разных видов)
    ну и так далее...
    Ответ написан
    2 комментария
  • Как получать значения вводимых символов в инпут input?

    Как-то так чтоли codepen.io/golumenov/pen/dbnlh
    Ответ написан
    Комментировать
  • Как далеким от программирования основателям найти ведущего разработчика в стартап?

    Informatikum
    @Informatikum
    Преподаю робототехнику и информатику в школе.
    Найти сотрудника по Вашим критериям будет сложно. Возможно стоит снизить критерии поиска и принять не одного, а двух или трех простых программистов (работяг).

    Брать в команду, делать партнёром, это большая ошибка и заблуждение. У меня была своя веб студия, 8 программистов. Было не легко, чертовски увлекательно. Как только я принял 2х в свой бизнес, всё рухнуло.

    Берите работника - чтобы работал. Партнёры - это управленцы, инвесторы, руководители. Никак не работники.

    1. Искать, искать, искать. Не переставать искать.
    2. Нанять тех, кто подходил и не выпендриваться.
    3. В процессе развития проекта, найти спеца.
    4. Лучшим вариантом, будет в процессе выбрать лучшего и его сделать руководителем.
    5. Забыть про утопичное партнёрство с рабами. :)
    Ответ написан
    8 комментариев
  • Почему не срабатывает handlebars?

    Просто надо поменять местами:
    $(document).ready(function () {
    
            var data = {
                name: 'Jane Doe'
            }
            var template = Handlebars.compile( $('#template').html() );
            $('.updates').append( template(data) );
    
    
        });
    Ответ написан
    Комментировать
  • Почему не срабатывает handlebars?

    27cm
    @27cm
    TODO: Написать статус
    У вас переменная data используется до инициализации. Нужно поменять местами эти строки:
    var data = {
        name: 'Jane Doe'
    }
    
    $('.updates').append( template(data) );


    jsfiddle.net/xnrzwa59/1
    Ответ написан
    Комментировать
  • Существуют ли доказательства того, что pixelPerfect верстка увеличивает продажи или юзабилити?

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

    Реальную помощь в верстке для бизнеса дают модульные сетки, препроцессоры и верстка независимыми блоками. Это действительно помогает сократить время на разработку (тут конечно опыт нужен) и дальнейшую поддержку.
    Ответ написан
    Комментировать
  • Как правильно организовать ведение ISSUE в проекте?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    В целом я считаю что это норма.
    Для случая 1 разработчика и 1 руководителя это действительно некий оверхед, но есть важный момент: если Вы СЕЙЧАС не привыкните к такому процессу - у Вас не получится на него мгновенно переключиться когда это потребуется.
    Помимо этого, строгая отчетность помогает лучше планировать собственное время и объективно оценивать сроки.

    Ниже по пунктам:

    Написать что конкретно было проделано. (При этом в задаче и так расписано что нужно сделать)
    Сильно зависит от того насколько у вас детализированы задачи.
    Конечно не нужно доводить до маразма, но какие то дополнительные подробности реализации всегда не повредят. Впрочем это вполне можно писать в сообщениях к пуллреквесту.

    Дать ссылку где посмотреть.
    Обязательно всегда!

    Дать номер коммита. (В коммите нужно описать что ты сделал в комментарии)
    Многие системы, например jira отлично дружатся с репозиториями и автоматически собирают changelog из комментариев коммитов. Заодно еще и время учитывают.
    Живая картинка joxi.ru/1XToU_3JTJBuefeWz0o

    Дать картинку с чем можно сравнить. (Если верстка)
    Обязательно

    Поставить needcheck.
    Тоже логично.
    Мне лично это удобней делать статусами задачи
    To Do <-> In Progress <-> Testing <-> Done
    но это субъективно.

    В конце дня написать детально что было сделано за день.
    Если задачи целиком закрываются до конца рабочего дня - это в принципе излишне, можно посмотреть по комитам. Если задачи долгие - это обязательно.
    Я еще заставляю обычно писать что планируется делать на следующий день.
    Ответ написан
    7 комментариев
  • Как определять какой radio: checked?

    takovoy
    @takovoy
    web developer
    var myRadioButton = document.getElementById('myRadioButton');
    
    myRadioButton.onchange = function(){
        if(this.checked == true){
            openWindow();
        } else {
            closeWindow();
        }
    };
    Ответ написан
    Комментировать
  • Как определять какой radio: checked?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    Ответ написан
    Комментировать
  • Объясните что такое полиморфизм простыми словами ?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Да ладно, парни. Ну хватит уже, к чему такие сложности? Берём и читаем. Вообще совсем не обязательно читать про архитектуру и абстракции именно по своему языку, хотя javascript в этом плане родился уродом.

    Ок. Полиморфизм ни в коем случае нельзя рассматривать отдельно от других фундаментальных понятий - абстракция, инкапсуляция и наследование. Объект и подобные прилагаются из аксиом (хотя это-то тоже аксиомы).

    Собственно, представим себе рядом стакан, кружку, чайник, кофемашину, велосипед и скейт. Что между ними всеми общего? Ну как минимум то, что они есть. То есть это - объекты, которые были созданы. Но как они были созданы? Скорее всего на заводе производителя по чертежам. Ок, чертежём назовём конструктор. Ну а класс? А что это такое? А его нет в нашей вселенной - эта сущность есть абстракция, что живёт лишь в наших мыслях. В реальном мире её нет и никогда не будет, такова уж физика - ей по барабану, что птицы и млекопитающие имеют дальних родственников - она лишь обеспечивает возможность естесственного отбора. А уж родственников друг другу находим мы, люди.

    С объектами и классами разобрались, а что же там с нашими стаканами и велосипедами. Мы уже поняли, что всё это объект, то есть грубо можно все объекты наследовать от какого-нибудь суперпредка, суперкласса, что и реализовано в некоторых языках. Но что другого общего между скейтом и стаканом, например? Конечно, можно углубляться и считать, что они все из молекул, и они все из твёрдых веществ. Однако это всё бред и СПГС, так что ответ прост - да ничего. То есть это совершенно разные объекты с совершенно разным функционалом. Более того - естесственно компьютерные модели и иерархии будут сильно отличатся от физик и химий. И это нормально, вопрос об адекватностях моделей ставиться лишь когда модель неадекватна, а до тех пор пилить можно что угодно, лишь бы работало.

    Вот. У нас есть супер-предок Object, от которого дефолтно наследуются все объекты. Допустим, то что объекты состоят из атомов и есть то, что наследуют все объекты. Но все дополнения и правки - полиморфизм. Так, из атомов мы слепили колёса и приделали на доску - ок, это скейт. На него можно встать и катиться, а сильно извернувшись и полетать в трёх метрах над землёй, прямо таки излучая своё яркое эго. В то время как стакан - это мы слепили из атомов плотную ёмкость, из которой вода не выливается под действием силы тяжести. И прямое применение стакана - налив воды опрокинуть его над ртом, чтобы вода вытекла прямо в желудок. Так делают настоящие пацаны, не заботясь об икоте или страхе утонуть, так что вот - полиморфизм.

    Однако что с остальным? У нас ещё абстракция, инкапсуляция и наследование. Ок, начнём с наследования, так оно наиболее близко. Вот что у нас общего между стаканом и кружкой? Ну в оба можно налить воду, но у кружки есть ручка чтобы держаться. То есть можно придумать некий общий класс - ёмкость. Однако что это за класс? Можно например за этот класс взять стакан, тогда все ёмкости по дефолту стаканы, а всё остальное - видоизменённые стаканы. Но кому-то больше нравяться кувшины, например некоторые чики насят их на голове, считая что это удобно. Ну и пусть носят, но как-то же решить надо, что главнее и идеальнее. Так вот - недостяжимый идеал и есть главный - это называется абстрактный класс. То есть ёмкость, что невозможно создать, для которого нет полного чертежа. А все чертежи, что дополнили до полного - есть наследованные классы от класса ёмкость.

    Тут мы подошли к абстракции. Вот такое иерархическое наследование приводит нас к, возможно главной, идее ООП. Вот мы взяли и выделили всё, куда можно налить воду в отдельный класс, нарисовали общий чертёж, но специально не доделали его, оставив зазор для будущих творцов, и назвали чертёж - ёмкость. Тысячи лет изобретатили всех миров создают свои ёмкости, одна лучше другой. Для разных людей - по разному, конечно. Но каждый раз группировать молекулы стекла определённым образом - непростая задача. Поэтому ремесленники пошли на хитрость, они создали тайный совет ремесленников мира и решили делиться друг с другом своими наработками. То есть создавать мелкие чертежи и объявлять классом, например, извлистой ручки в форме ленты Мёбиуса, например. Возможно такая ручка удобно только инопланетным существам, но чертёж создан и к нему можно ссылаться при создании своего чертежа. Таким образом мы абстрагируемся от низкоуровневой задачи "формирования ёмкостей посредством перемещения молекул" к "конструированию ёмкости посредством совмещения деталей, элементов". Это и есть абстракция.

    Но мы подошли к последнему пункту - инкапсуляция. Она неразрывна с абстракцией, и по сути благодаря ей она и работает. Инкапсуляция - это своеборазный клей (или синяя изолента), которым склеивают разные чертежи в один. То есть совмещение деталей для создания своей - это и есть инкапсуляция. Причём при совмещении мы можем не описывать детали этого совмещения (то есть члены класса могут быть приватными), таким образом помогая абстрагироваться тем, кто этот чертёж использует. Вот посмотрим на чайник - что это такое? Это стакан (или кружка) к которому снизу (а может внутри по середине?) приклеен нагревательный элемент. Пустив по нему ток, согласно инкапсулированному в нагревательный элемент закону Ома, будет выделяться тепло и нагреваться вода. А кофемашина? Это куда более сложное устройство, с множеством насосов, ёмкостей, шлюзов, измельчителей и чайников. И всё склееное клеем. А может синей изолентой. Это снова инкапсуляция.

    Таким образом, абстракция невозможна без инкапсуляции и наследовании, как невозможен полиморфизм без, собственно, наследования. Ну а полиморфизм невозможен ещё и без инкапсуляции, которая банально бесполезна без наследования и полиморфизма. Вот такие тут треугольники с пирогами. Жаль только про пирог наврали. И про день рожденье.
    Ответ написан
    3 комментария
  • Объясните что такое полиморфизм простыми словами ?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Полиморфизм указывает, какую версию метода текущего объекта запустить.
    Например, у вас есть несколько наследуемых классов, с разной реализацией одного и того же метода. То есть, у вас есть несколько разных методов с одинаковым именем (и сигнатурой), реализованных в разных классах. Какую версию метода вызвать? Это зависит от типа переменной, в которой находится объект.
    Также с помощью полиморфизма можно поместить объекты разных классов в один массив с типом базового класса.

    Создадим три класса с двумя методами - один виртуальный, а другой нет. Виртуальный метод переопределён (override) в классах-наследниках. Невиртуальный метод просто скрыт в наследниках новой реализацией (невиртуальные нельзя переопределять).
    class Animal {
        public void Info() { Console.WriteLine("Animal"); }
        public virtual void Say() { Console.WriteLine("Nothing to say"); }
    }
        
    class Cat : Animal {
        public void Info() { Console.WriteLine("Cat"); }
        public override void Say() { Console.WriteLine("Meow"); }
    }
        
    class Dog : Animal {
        public void Info() { Console.WriteLine("Dog"); }
        public override void Say() { Console.WriteLine("Woof"); }
    }

    При создании объекта важно, в переменную какого типа объект будет записан:
    Dog dog1 = new Dog();
    Animal dog2 = new Dog();
    // Не виртуальный метод - вызовется метод класса, указанного у переменной 
    dog1.Info(); // напишет Dog
    dog2.Info(); // напишет Animal
    // Виртуальный метод - вызовется метод класса, которого переменная реально имеет
    dog1.Say(); // напишет Woof
    dog2.Say(); // напишет Woof


    А теперь частая ситуация, когда полиморфизм нужен - при итерации массива:
    Animal[] animals = new Animal[10];
    FillAnimals(animals); // заполним массив вперемешку собаками и кошками
    
    foreach (var animal in animals) animal.Say(); // вызовется правильный метод
    // У невиртуальных методов так сделать нельзя! Полиморфизм в действии

    Наследование без виртуальных методов полезен только фиксацией интерфейса.

    Вот весь код примера: code.re/5ZC
    Вставьте его вот сюда и проверьте.

    P.S. Написал код на C#, чтобы подчеркнуть разницу между виртуальными и невиртуальными методами. В Javascript все методы виртуальные (как и в php, например).

    UPD. (спасибо @Petroveg)
    В языке C# (и других статически типизированных) обычно делают так - если метод в базовом классе записывается для всех потомков и оттуда будут использоваться напрямую, то он помечается обычным, невиртуальным. А если метод предназначен для того, чтобы в наследниках его переопределить, то необходимо его сделать виртуальным, чтобы при вызове метода компилятор выбрал нужную версию метода. То есть некоторые методы лучше делать виртуальными, а некоторые нет.
    И ещё раз - виртуальность важна только в одном случае - если объект-наследник записан в переменную базового класса:
    Animal animal = new Dog();
    В javascript невиртуальных методов не бывает - динамическая основа этого языка ВСЕГДА автоматически вызывает именно последнюю версию метода, определяя конкретную по цепочке прототипов. Поэтому в Javascipt, по большому счёту, сильно думать о полиморфизме смысла нет - это только абстрактная концепция, не влияющая на сам код, а только на архитектуру.
    Ответ написан
    6 комментариев
  • Почему не работает массив в конструкторе?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Так вы кладёте 2 фрукта хомяку speedy, а хомяку lazy — ничего. Lazy нервничает...
    И почему не используете var?
    Ответ написан
    5 комментариев
  • Почему не работает массив в конструкторе?

    @Testtest132
    Ибо создано два разных экземпляра класса, соответственно, у каждого свой length у food
    speedy.found("apple")
    lazy.found("orange")
    Ответ написан
    Комментировать
  • Что значит добавить в хэш options в Backbone?

    @personaljs
    name.set({"age": 20}, {validate : true});
    Ответ написан
    Комментировать
  • Отдельный сайт под мобильник или адаптивный?

    @driver_by
    Можно почитать smashing magazine (англ.)
    В статье высказывается мнение, что m-поддомены - это прошлое. Предлагается определять платформу пользователя (PC, mobile, tablet) и выдавать разный контент для них. Там описаны технологии и что как можно организовать.
    Ответ написан
    1 комментарий