Задать вопрос
  • Какие еще есть блогеры вроде Sorax?

    Nivalis
    @Nivalis
    Верните нам Sorax'а! Может есть люди, которые его знают лично или из Белгорода?
    Ответ написан
    5 комментариев
  • Какие еще есть блогеры вроде Sorax?

    @kostein
    Сварщик - Верстальщик
    После Sorax'a сложно смотреть кого либо .) Может он нашёл способ завести трактор..

    А вообще я б на месте нашего гос-ва, Или там доморощенных Цукербергов-Дуровых или какие-нибудь Тиньковы, Сечины, Абрамовичи, СамыйДлинныйИзНорильска (тысячи их), таким людям как Зоракс, Кантор и пр., - гранты давал на их просветительскую деятельность, всяко больше пользы для страны чем клепать авиабомбы в три смены, или раскидывать пятирублёвки из окна, а на глинтвейн в куршавеле всяко бы осталось.

    Илья Кантор два курса node js и webpack если тематика подходит, то очень даже.

    p.s. у Ильи ещё курс добавился по "Стакану с трубочкой".
    Ответ написан
    3 комментария
  • С чего начать обучение языкам?

    abs0lut
    @abs0lut
    Знания информатики почти нулевые .

    Полагаю, тут кроется часть проблем. Поэтому и
    учебники - даются трудно

    Мой совет - взять курс на Coursera CS101, чтобы разобраться в основах. Затем читать книги по конкретным технологиям.

    Пытался читать учебники

    Какие например? Не все написаны так, чтобы при нулевой подготовке впитывать знания.

    Может учитель нужен

    Не думаю, что это подходящий вариант.
    Кто что посоветует ?

    Чтобы приобщиться к программированию посоветую учить Python. Имея какие то знания, можно через некоторое время приступать к другим языкам и областям.
    p.s. Даже если и планируете изучать системное программирование, Питон лишним не будет, как и знания других языков.
    Ответ написан
    Комментировать
  • Как соединить front-end и back-end?

    mudrenokanton
    @mudrenokanton
    frontend dev
    При первом запросе к серверу — он возвращает вам SPA приложение целиком. Потом это приложение уже общается с сервером как с API, работая только с данными.

    layout pages в Jade
    Ответ написан
    2 комментария
  • Как соединить front-end и back-end?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    другой путь

    Шаблонизаторы? Почти все они могут выполняться на сервере и прекомпилироваться или вообще собираться в html. Отдельно рекомендую посмотреть в сторону jade.

    Каким образом нам получить данные?

    Видно что вы гуглили, написали много букв и до таких вещей как "клиент-серверная архитектура", REST, и тд. вы не добрались...

    На мой взгляд сервер должен возвращать мою сверстанную страницу

    Это одна точка зрения. Если брать каноническую клиент-серверную архитектуру, фронтэнд и бэкэнд (по сути клиент и сервер) - это два независимых приложения (ну как независимые... им плевать на реализацию друг друга). Далее мы можем просто частично переносить какие-то слои туда сюда. Причем это обычно связано с какими-либо оптимизациями, будь то производительность или уменьшение другой головной боли (например гуглы научились нормально индексировать single page application-ы относительно недавно, и прекомпиляцию на сервере организовывать приходилось отдельно).

    На мой взгляд бэк-энд вообще не должен заниматься компановкой HTML

    Это другая точка зрения, и я ее в принципе поддерживаю и придерживаюсь последние пару лет. Опять же - гуглите в сторону REST Api. Инфы валом, есть масса лекций, докладов и презенташек...
    Ответ написан
    2 комментария
  • Что неправильно в верстке?

    Из глобального:
    1. Страница весит 1.6мб. Это жуткая жуть для такой страницы. Зачем все картинки в png? Он там не нужен. Переводите всё в jpg и оптимизируйте jpg – выигрыш в весе будет огромный.
    2. Поддержка ретины. Сейчас это становится уже важным. Все иконки лучше перевести в svg. Или, как мининмум, сделать png@2x. Но вектор лучше, с ним удобнее работать и весит он порой меньше png.
    3. Зачем там 2 файла стилей и несколько спрайтов? + стили правильнее минифицировать.

    Сама верстка:
    1. Почитайте про различные методологии. БЭМ, например. Селекторы типа .site-header .site-menu li a — боль.
    2. Блок с логотипами. Вставить всё одной картинкой это, конечно, легко и просто. Но заказчик наверняка бы попросил сделать каждый логотип ссылкой на сайт. Или, например, когда понадобится добавить еще один логотип. добавлять его будет больно.
    3. Для ссылок можно тоже transition добавить. Хуже от него не будет.

    Это так, главное, что бросилось в глаза :)
    Ответ написан
    1 комментарий
  • Что неправильно в верстке?

    SKolt
    @SKolt
    https://www.instagram.com/seregamih/
    Обычно заказчики не смотрят на качество кода, им абы работало быстро и смотрелось хорошо везде.
    Так что если смотреть глазами заказчика - где адаптивный дизайн???
    Ответ написан
  • Что неправильно в верстке?

    baskerville42
    @baskerville42
    Учусь работать (Junior)
    Правила хорошего тона это кроссбраузерность и она у вас хромает. Есть две прекрасные вещи: modernIE и Browserstack. Проверяйте сайт что бы он везде был одинаковый и ничего не лезло друг на друга. И подтягивайте английский. Я понимаю что вам удобно писать транслитом (shablon) но когда ваш код будут саппортить другие люди, позаботесь о своей карме, пишите имена (переменные, айдишники и классы) на английском (template).
    Ответ написан
    1 комментарий
  • Не повредит ли фриланс развитию молодого разработчика?

    DJZT
    @DJZT
    Laravel - code for you
    Да. В любом случае тебе стоит пойти в крупную компанию. Научат. Это в их интересах будет ,что бы тебе понравилось и ты там остался.
    У меня был случай. Я по натуре WEB кодер на PHP, но по воле случая попал на предприятие 1С разработчиком. Задержался там на целый год. 3 месяца просто учился, а потом уже дали доступ к базе. Так вот. Хоть 1С и далек от WEB, я получил бесценный опыт работы в команде (7 человек). Узнал очень много нового. Что теперь в последствии я применяю аналоги для PHP разработки.

    Не бойся большого проекта. Сразу ничего нее поймешь. Это нормально. И это правильно. Каждый отвечает за свой кусок кода. Тебе будет достаточно углубиться в ту часть, где нужны будут твои силы. А если возникнут вопросы - ты всегда сможешь спросить коллег. За это не бьют)))
    Ответ написан
    Комментировать
  • Сортировка/фильтрация в Backbone?

    @xaseros
    Я считаю что полностью заново рендерить коллекцию при сортировке это вообще шаг назад от идеологии MVC. рендерить заново надо только то что изменилось.

    При сортировке или фильтрации, мы можем использовать умное обновление коллекций с сервера. Оно будет вызывать соответствующие события add, remove, change. На любой списочный интерфейс я завожу 4 "класса", например: CommentListViewClass, CommentItemViewClass, CommentCollectionClass, CommentModelClass.

    CommentCollection передаем в CommentListView, и вызываем CommentCollection.fetch()
    Собственно вся соль делается в CommentListView, его и прифожу.
    var CommentsListViewClass = Backbone.View.extend({
            initialize: function(options){
                this.templateData = options && options.templateData || {};
                this.listenTo(this.collection, "add", this.renderItem);
                this.listenTo(this.collection, "add remove sync", this.renderUpdate);
                this.listenTo(this.collection, "sync", this.resortItems);
                
                this.itemViews = [];
            },
            render: function(){
                this.$el.empty();
            },
            renderUpdate: function(){
                $('.comments_count').html(this.collection.length);
            },
            resortItems: function(){
                this.collection.each(_.bind(function(m,i){
                    var viewEl = this.$("."+m.cid);
                    this.placeItem(viewEl, m);
                }, this));
            },
            placeItem: function(itemEl, model){
                var index = _.indexOf(this.collection.models, model);
                //console.log(index, itemEl,model);
                if(index == 0){
                    console.log("#"+ index ,model.id, 'ontop');
                    this.$el.prepend(itemEl);
                } else {
                    var pIndex = index-1;
                    var cid = this.collection.models[pIndex].cid;
                    this.$el.find('.'+cid).after(itemEl);
                    console.log("#"+ index, model.id, "after " + this.collection.models[pIndex].id );
                }
            },
            renderItem: function(model, collection, options){
                var item = new CommentsItemViewClass({
                    model: model,
                    templateData: this.templateData
                });
                
                var itemEl = item.render();
                this.placeItem(itemEl, model);
            }
        });


    При добавлении новой модели в коллекцию, мы инициализируем новый вид элемента списка, передавая ему эту же модель. Это делает метод render_item.

    var item = new CommentsItemViewClass({
                    model: model,
                    templateData: this.templateData
                });
                //получим DOM-элемент вида
                var itemEl = item.render();


    Далее у каждого DOM-элемента (this.el) созданного вида добавляется класс (или любой другой атрибут) с cid той модели которую он отображает (это нужно сделать в шаблоне элемента). Затем нужно определить индекс (позицию) модели в коллекции, и разместить этот элемент под элементом вида предыдущей модели в коллекции (ну или воткнуть на самый верх если таковой не найден), этим далее и занимается метод placeItem .

    var index = _.indexOf(this.collection.models, model);
                //console.log(index, itemEl,model);
                if(index == 0){
                    this.$el.prepend(itemEl);
                } else {
                    var pIndex = index-1;
                    //cid предыдущей модели
                    var cid = this.collection.models[pIndex].cid;
                    this.$el.find('.'+cid).after(itemEl);
                }


    Аналогично при полном обновлении коллекции после sync, только пробежаться надо по всем моделям коллекции, дабы расставить все элементы по местам. Это уже resortItems.

    this.collection.each(_.bind(function(m,i){
                    var viewEl = this.$("."+m.cid);
                    this.placeItem(viewEl, m);
                }, this));
    Ответ написан
    Комментировать
  • Как производить вычисления внутри input на javascript?

    romanzhak
    @romanzhak
    Mathematician
    Самый простой вариант:
    var value = '(5+7)*10';
    var res = new Function('return ' + value);
    
    console.log(res()) // => 210
    Ответ написан
    Комментировать
  • Как сделать hover для элемента используя спрайт?

    paradokso
    @paradokso
    Начинающий фронт-эндер
    selector{
    .... 
    bacground: url(sprite.png) x1 y1 no-repeat;
    }
    selector:hover{
      background-position: x2 y2;
    }
    Ответ написан
    3 комментария
  • С чего начать изучение angular js?

    Symphony
    @Symphony
    Вам следует начать с javaScript'a, я серьезно.
    Ответ написан
    4 комментария
  • Что нужно знать помимо javascript для фриланса (в частности на oDesk)?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Имеет ли смысл рассчитывать на работу js-специалиста (т.е. в случае если навыки js используются значительно интенсивнее других)?

    Безусловно

    Возможно ли это на фрилансе?

    Безусловно

    Что лучше учить в связке с js?

    Учить CSS, HTML, SVG, фреймворки, и разного рода интерпретаторы (HAML etc.), препроцессоры (SASS, Stylus etc.).

    Имея базовые знания по CSS, HTML стоит ли нацелится на них и периодически использовать js?

    Без этих знаний никуда.
    Пример: анимация в CSS быстрее, используем её. Для старья используем таймеры.
    Пример: для хорошего соответсвия UX используем элементы формы, из состояния, события.

    Или лучшем будет изучение frontend фреймворков? Необходимы ли при этом будет в дальнейшем много верстать? Насколько перспективна эта сфера деятельности?

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

    Если использовать github-аккаунт как часть портфолио, что наиболее привлекательно будет в нем для работодателя?

    Примеры решения конкретных задач. А разве в гит можно выложить что-то неконкретное?))

    Имеет ли смысл довести какие-то свои задумки до конца перед началом поиска работы, или лучше начать сразу а уже стабильно оплачиваемые заказы могут пойти в портфолио?

    Нет предела совершенству. Продавать нужно начинать до окончания работ. Так же и в работе — не нужно откладывать поиск вакансии до момента, когда вы постигнете вселенную.
    Во-первых, такого никогда не случится.
    Во-вторых, ваши знания могут быть уже достаточны для части работодателей.

    Возможно ли получить помощь\поддержку в начале пути фрилансера от человека активно этим занимающемся?

    Возможно. Но на условиях подмастерья. Будьте готовы к этому.

    Ну и напоследок чисто-субъективные вопросы на которые я не жду аргументированного ответа, а просто совета, основанного на жизненном опыте:
    Стоит ли нацеливаться на javascript или лучше менять акцент (или вовсе бросать js) на другой язык?

    Ваще непонятный вопрос. Если вы категорически не согласны с концепцией JS — бегите прочь от него. Если всё понятно — зачем спрашивать?

    Стоит ли уповать на фриланс или лучше искать обычную работу?

    Фриланс и есть обычная работа. Вопрос абсолютно не связан с программированием или языком программирования.
    Ответ написан
    2 комментария
  • Объясните что такое полиморфизм простыми словами ?

    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 комментариев
  • Возможно ли начинающему программисту найти работу в IT сфере?

    iskros
    @iskros
    Руководитель проектов
    В Яндекс, Mail.ru, Badoo берут без опыта. Проверял)
    Учавствуйте в хакатонах, конференциях и учитесь сами.
    Когда у вас горят глаза, вас сами находят.
    Посещайте hh.ru/.

    И помните:
    лучшие программисты это самоучки!
    Ответ написан
    5 комментариев
  • Навыки front-end разработчика

    gelevanog
    @gelevanog
    javascript developer
    HTML (XHTML, HTML4, HTML5) - обязательно (внимание на HTML5)
    CSS (2.1, CSS3, etc.) - обязательно (внимание на все версии)
    JavaScript / Ajax - обязательно, классика
    jQuery - обязательно, классика
    Popular Frameworks (HTML5 Boilerplate, Twitter Bootstrap, etc.) - первый удобный шаблон для html5 проекта, не более, второе уже классический шаблон для адаптивной верстки
    Modernizr - библиотека для определения браузеров, клиентов, девайсов - прочитать, усвоить, применять по необходимости что-то определить
    OOCSS / BEM / SMACSS (Modular coding methodologies) - способы удобного написания стилей, прочитать, усвоить, применять по необходимости
    CSS Grids - не знаю что автор имел ввиду - видимо CSS-сетки, просто надо знать
    CSS Frameworks / Resets - ничего сложного технологии обнуления стилей и опять наборы CSS правил с классами типа animate.css
    Progressive Enhancement / Graceful Degradation - понятие связанное с кроссбраузерностью и упрощением функционала и отображения в некоторых браузерах
    HTML and CSS Specifications (W3C / WHATWG) - чаще проверять код на валидность, это позволяет понять свою ошибки как раз на основе этих спецификаций
    UX / Usability - больше для дизайнеров, но тоже пригодится
    Website Speed / Performance - плюшки по оптимизации
    Developer/Debugging Tools (Chrome Dev Tools, Firebug, etc) - умение ковыряться в консоли, надо знать и применять всегда
    YUI Library - по необходимости
    Dojo / MooTools / Prototype - изучать и применять по необходимости
    Responsive Web Design - надо знать работу с css медиа-запросами
    Mobile Web Development - абстрактное понятие связанное с разработкой мобильных веб-приложений
    Mobile Web Performance ---
    Cross-Browser / Cross-Platform Development - абстрактное понятие связанное с разработкой кроссбраузерных и кроссплатформенных приложений
    Document Object Model (DOM) - дом модель - на вводном курсе по js должен знать о ней каждый фронтендер
    Cross-Browser Bugs and Inconsistencies (primarily IE6-8) - без комментариев
    CSS Pre-Processors (LESS / Sass) - удобные препроцессоры для работы со стилями, рекомендую для упрощения работы с CSS
    Version Control (Git / GitHub / CVS / Subversion) - полезный навык, нужный не только фронтендерам, полезен для командной разработки.
    HTML5 APIs (Canvas, Geolocation, Video, etc.) - изучать и применять по необходимости
    Object-oriented Programming (OOP) - без комментариев
    Back-end Templating languages/technologies (PHP, Ruby, .NET, etc) - нужно знать на базовом уровне, что бы понимать как обрабатывать данные на клиенте, возвращенные/отданные сервером, мучать бэкендщика по этому поводу.
    Scaffolding, Task Runner tools (Yeoman, Grunt, Bower, etc.) - удобные штуки упрощающие работу
    MVC Frameworks (Angular, Backbone, etc.) - изучать и применять по необходимости
    MySql - изучать
    Accessibility / WAI-ARIA - изучать и применять по необходимости
    Microdata / Microformats - изучать и применять по необходимости
    HTML5/CSS3 Polyfills - изучать и применять по необходимости
    CMS (WordPress, Drupal, Joomla, etc) - изучать и применять по необходимости
    Functional Programming - без комментариев, надо знать
    Data Formats (e.g. JSON, XML) - надо знать
    Internationalization / Localization - абстрактное понятие
    Content Strategy - изучать и применять по необходимости
    Offline Web Apps - изучать и применять по необходимости
    Regular Expressions - надо знать на базовом уровне
    .htaccess - изучать и применять по необходимости
    SVG - изучать и применять по необходимости
    Image Editing Tools (Photoshop, Fireworks, etc.) - надо знать
    Web Font Embedding / Licensing - работа со шрифтами
    SEO - фронтеднеру надо знать на уровне семантичной вертски
    Haml - работа с HTML
    CoffeeScript - работа с JS

    В целом все эти технологии, понятия и пр. тесно пересекаются друг с другом. Изучая что-то одно невольно изучаешь другое.
    Ответ написан
    1 комментарий
  • Как правильно учить Javascript?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Вы наверное слышали, что каждый уважающий себя программист обязан написать несколько велосипедов? И JavaScript-программисты тоже так делают и еще как! Так вот в этом нет ничего плохого, это отличное самообучение.

    Для начала заходите на любой каталог плагинов для JavaScript или jQuery. Находите интересный, не очень сложный на вид плагинчик (например карусель, лайтбокс, слайдер и т.п.) и пытаетесь сделать похожий, только лучше. Поначалу будет выходить черти что, но, это будет уже реальная задача, где вы начнете сталкиваться с реальными особенностями языка. Вот тут то знания и начнут обретать какую-то структуру у вас в голове.

    Не пытайтесь брать сразу сложные вещи, начинайте с малого. Как заметили выше, не смотрите пока что на очень сложные книжки, их читать сейчас почти бесполезно.
    Ответ написан
    6 комментариев