Задать вопрос
  • Как правильно настроить less to css в Sublime Text 3?

    matroskin13
    @matroskin13
    JavaScript developer, GO developer
    Использовать broccoli!
    P.S а если серьезно, то gulp.
    Ответ написан
    Комментировать
  • Можно ли работать программистом, но не оценивать сроки?

    Зависит от компании и от того, как там все устроено. По опыту могу сказать, такие есть. Иногда будут спрашивать как дела на текущем этапе и сколько примерно осталось, и все. Только тут главное не наглеть, чтоб не создалось впечатление, что можно было сделать быстрее. Ищите небольшие компании с неформальной обстановкой в коллективе

    P.S.
    слабая нервная система

    Рекомендую Новопассит.
    Ответ написан
    Комментировать
  • Сайт "заезжает справо на лево" во время загрузки. Как исправить?

    @Sergey-V
    администратор, веб-мастер
    Попробуйте поставить после меню
    <div style="clear: both;"></div>
    Ответ написан
    Комментировать
  • Где найти практику верстальщику?

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

    0. Ставим какой-нибудь плагин для хрома, умеющий делать скриншоты сайта целиком.
    1. Заходим на любой сайт и делаем его скриншот в пнг
    2. Считаем что этот скриншот - всё что есть у нас, пробуем сверстать сайт по нему.
    3. На выходе сравниваем насколько похоже выглядит наш сайт и оригинал на всех разрешениях экрана и на мобилках.
    Ответ написан
    4 комментария
  • Можно ли реализовать разные шрифты для английского и русского алфавита?

    SagePtr
    @SagePtr
    Еда - это святое
    Если в шрифте отсутствуют глифы, а в font-family указано через запятую несколько шрифтов - то отображаться конкретный символ будет тем шрифтом, который стоит левее остальных и имеет нужный глиф. То есть, если указать на первом месте шрифт, имеющий только латиницу, а через запятую шрифт, имеющий латиницу и кириллицу - латиница будет отображаться первым шрифтом, кириллица вторым.
    Пример
    Ответ написан
    1 комментарий
  • Какие есть сайты, наподобие таких, которые внутри вопроса, обучения графике и дизайну?

    nikitanaz
    @nikitanaz
    UX Lead and DesignOps @EPAM
    Алексей, тут такое дело — дизайн это не про фотошоп.
    Я тоже когда думал, что чем больше уроков по фотошопу я пройду, тем сильнее я дизайнер. Но вот дела обстоят так, что инструмент вторичен.

    Теперь кратко — читайте про стратегию (хоть Сунь Цзы), про логику, про мышление людей, да даже строение букв откроет громадные горизонты.
    Что читать? Берем грамотного дизайнера с блогом, ищем и вот например подборка — ludwigbistronovsky.ru/books

    Там выше увидел, что по интерфейсам есть интерес. Тогда есть рекомендация одна, но для завершения курса вам потребуется ух сколько сил. Дерзайте. Скоро начало курса:
    https://www.coursera.org/course/hciucsd

    Вот когда будете знать Что рисовать, встанет вопрос Как. Только тогда имеет смысл заглянуть на всякие dribbble & behance.
    Ответ написан
    1 комментарий
  • Влияют ли тематические домены на SEO?

    XXX
    @XXX
    Решение где-то рядом
    Стоит ли покупать вместо классических (*.ru. *.com, ...)?
    Если расчет исключительно на SEO, то не стоит. Никаких преимуществ у десятков новоявленных зон, против зон классических, в плане SEO нет.

    Российской компании гораздо интересней для SEO иметь домен в зоне ru, чем какой-нибудь .center. Но ничто не мешает ей прикупить дополнительно красивый домен для зеркала, если в ru ничего подходящего за приемлемую цену нет. Согласитесь, магазину торгующему байками домен super.bike будет приятнее печатать на визитках, чем super-bike111.ru :)
    Ответ написан
    Комментировать
  • Адаптивный флаг Японии как правильно сделать?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Мы же помним, что margin и padding считаются от ширины контейнера? Пример
    Ответ написан
    1 комментарий
  • Простейшее создание массива в JavaScript?

    @serega_kaktus
    Программист-самоучка, фрилансер
    В JS нет ассоциативных массивов, как в PHP, для этого используются объекты
    Ответ написан
    Комментировать
  • Простейшее создание массива в JavaScript?

    @hurgadan
    Используйте объекты, вместо массивов.
    var images = {};
    images[number] = response;
    Ответ написан
    Комментировать
  • Какова роль интерфейсов в ООП?

    Много ответов есть уже, лучше попробую идти рядом с вашими словами. Итак,
    > Зачем мне создавать файл, контролирующий это, если я и сам могу контролировать то, какие методы у меня есть
    Вы - это ваша голова, вы человек, не робот, ваш может не быть на работе например, или вы сами можете забыть, как у вас взаимодействуют части системы. Интерфейсы - это в общем-то тоже документация. И не нужно строго различать "чисто интерфейсы", и интерфейсы класса - те методы, которые у класса паблик - это точно такой же интерфейс, только он явно не отделен от класса. Когда у класса всего 3-4 метода, и все они связаны простой идеей, то и выделять ничего не надо. Когда у класса уже 10 методов, и среди них есть небольшие смысловые группы, то уже имеет смысл эти группы подчеркнуть. И, в конце концов, вместо каши из 10 методов, вы читаете следующее: class Graph : IEnumerable, IIndexable, IDrawable - и вы знаете, что ваш граф перечисляется, индексируется и рисуется. Это уже очень много информации, вы уже понимаете, как взаимодействуют части вашей системы.

    > Может создано это для работы в больших коллективах? Но ведь тогда любой участник сможет поправить и интерфейс.
    Да, совершенно верно, для больших коллективов. Нет, участник просто так не сможет поправить интерфейс, не побеседовав с остальными. В лучшем случае участнику придется поправить весь код, который "висит" на этом интерфейсе, в худшем - он в принципе ничего не сможет поменять, если интерфейс "публичный" и используется несколькими командами разработчиков. Классический пример - системы плагинов. Если к MS Word-у уже написано куча плагинов, то MS не может взять и просто так поменять ифейсы, не поломав совместимость. Хотя некоторые аспекты реализации - может. Потому что, как уже сказали выше, интерфейс - это ДОГОВОР. Чем БОЛЕЕ он стабилен, тем ЛУЧШЕ. Команды договариваются (!), создавая интерфейсы, чтобы потом было как можно МЕНЬШЕ конфликтов и разногласий, т.к. проблемы с интерфейсом затрагивают всех. Найдите любую команду от 30 человек, и вы увидите, насколько это все важно.

    Еще две вещи напоследок:
    1) интерфейсы из ОО языков лишь частный пример понятие интерфейса в жизни вообще. Вы же, когда покупаете SATA-диск, наверное рассчитываете, что сможете его подключить к своему компу? А с чего вы взяли? А, ну конечно, ведь на упаковке написано SATA - значит производитель соблюдает ДОГОВОР - интерфейс передачи данных;
    2) необходимость в некоторых фичах языков сложно осознать в личных проектах и даже в маленьких командах. Это тоже как в жизни: свой дом, как говорится, должен построить каждый мужик, а чтобы построить бизнес-центр или высотку, нужны определенные знания, т.к. другие масштабы. Это нормально. Тем не менее, нужно читать и искать примеры. Хотя современные ОО-языки и сами дают много примеров. Раз у вас PHP, почитайте про Iterator например.
    Ответ написан
    1 комментарий
  • Какова роль интерфейсов в ООП?

    Приведу пример на коленке. Хотим, например, написать абстрактную файловую систему. Для начала, определим интерфейс, для ФС:

    interface FileSystemInterface {
      public function write($file, $data);
      public function read($file);
    }


    Затем, хочу реализацию интерфейса ФС для работы с файликами:

    class OSFileSystem implements FileSystemInterface {
      public function write($file, $data) {
         // открываем файлик, пишем данные
      }
    
      public function read($file) {
        // открываем файлик, возвращаем данные
      }
    }


    Вдруг, кому-то захотелось файловую систему в облаке. Окей, не проблема, реализуем это:
    class CloudFileSystem implements FileSystemInterface {
      public function write($file, $data) {
         // открываем соединение с облаком, пишем данные
      }
    
      public function read($file) {
        // открываем соединение с облаком, возвращаем данные
      }
    }

    Пусть у нас есть кой-то код, работающий с файловой системой, назовем его "Хранилище файлов". Пусть он выглядит примерно так:

    class FileStorage {
      protected $Fs;
      
      public function __construct(FileSystemInterface $Fs) {
        $this->Fs = $Fs;
      }  
    
      public function saveFile() {
        $this->Fs->write('file.txt', 'file data');
      }
    
      public function getFile() {
        return $this->Fs->read('file.txt', 'file data');
      }
    }


    Отлично! Теперь мы можем хранилищу файлов отдать любой объект с реализованным интерфейсом FileSystemInterface. Пример:

    // Хранилище файлов работает с файловой системой ОС:
    $FS = new OSFileSystem();
    $FileStorage = new FileStorage($Fs);
    $FileStorage->getFile();
    
    // Хранилище файлов работает с файловой системой в облаке:
    $FS = new CloudFileSystem();
    $FileStorage = new FileStorage($Fs);
    $FileStorage->getFile();


    Использование интерфейса, в данном случае. позволяет нам писать только реализацию работы файловой системы, а бизнес-логика, работающая с файловой системой никак не меняется, она знает, что в любом случае файловая система реализует интерфейс FileSystemInterface и может без опаски использовать методы этого интерфейса.
    Ответ написан
    14 комментариев
  • Почему не работает attr() в выборке?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Внутри each() каждый elem — ссылка на натуральный DOM-элемент.

    Так что либо так
    $('.js-to-cart').each(function(i, elem) {
    	console.log($(elem).attr('data-item'));
    });

    либо так
    $('.js-to-cart').each(function() {
    	console.log($(this).attr('data-item'));
    });

    А вот ещё несколько приёмов
    $('.js-to-cart').each(function(i, elem) {
    	console.log(elem.dataset.item);
    	console.log($(elem).attr('data-item'));
    	console.log($(elem).data('item'));
    
    	console.log(this.dataset.item);
    	console.log($(this).attr('data-item'));
    	console.log($(this).data('item'));
    });

    Нужно помнить, что data() в jQuery — не совсем то же самое, что и data-атрибуты. Это — метод у jQuery-объекта, позволяющий хранить любой тип данных. Значение атрибута — лишь стартовое значение, преобразованное, по возможности, в наиболее подходящий тип (например, попробуйте задать в качестве значения атрибута массив).
    Ответ написан
    Комментировать
  • Почему не работает attr() в выборке?

    flashg
    @flashg
    $('.js-to-cart').each(function() {
      console.log($(this));
      console.log($(this).attr('data-item'));
    });
    Ответ написан
    Комментировать
  • Почему не работает attr() в выборке?

    @kirill-93
    через $(this) надо обращаться к атрибуту
    console.log($(this).attr('data-item'));
    Ответ написан
    3 комментария
  • Как вырезать из url?

    var url = 'https://yandex.kz/images/?redircnt=1432190913';
    
    //Вариант 1
    var result1 = url.substr(url.lastIndexOf('/') + 1, url.length - 1);
    result1 // => ?redircnt=1432190913
    
    //Вариант 2
    var tempArray = url.split('/');
    var result2 = tempArray[tempArray.length - 1];
    
    result2 // => ?redircnt=1432190913


    Update В первом варианте второй параметр опцинален, опустив его, подстрока будет браться до конца строки. Поэтому этот вариант можно перезаписать короче. Спасибо Bhudh за подсказку.
    var result1 = url.substr(url.lastIndexOf('/') + 1);
    Ответ написан
    2 комментария
  • Как сделать,чтобы не сдвигались плейсхолдеры в IE?

    Serj-One
    @Serj-One
    i'm sexy and i know it
    Не нужно центрировать текст паддингом сверху. Для этого есть нормальное решение.
    input {
      line-height: 30px; // высота инпута
      padding: 0 15px;  // отступы по бокам
    }
    Ответ написан
    Комментировать
  • Как добиться плавности высоконагруженной анимации?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Так как я уже убитый после рабочего дня и войны с кастомными скроллбарами, то полного ревью по веб-перфу дать не смогу. Но по мелочам пробежаться могу.
    1) Вот так выглядит таймлайн сайта, после полного скролла вниз, а затем вверх (смотреть на верхний график).
    YjaRo9S.png
    Если в кратце, то все печально :) На всех переходах фпс стабильно падает до 30 (и иногда ниже). Ваша цель - 60 фпс в среднем, и не ниже 40 на паре-тройке фреймов при переходах.
    Если вы чайник в замерах веб-перформанса с помощью таймлайна (и дев тулс вообще), то вам сюда:
    а) https://developers.google.com/web/fundamentals/per... - святой грааль.
    б) https://www.udacity.com/course/browser-rendering-o... - по сути дела дополнение к текстовому варианту, но только в виде отличных видео и мини-тестами. Там же на udacity есть похожил курс от Григорика.
    в) Искать другие годные статьи в дайджестах и блогах, пилить/изучать демки и все такое.
    2) Очень беглый осмотр показал, что у некоторых элементов анимация происходит с помощью изменения таких свойств как left например (вылезающий и жутко тормозящий блок справа на 3 странице). В 90% случаев для анимации движения/перемещения/отображения прилично использовать только transform/opacity, особенно когда речь идет о больших элементах. С анимацией всяких left/top/width и подобных вещей для больших элементов можете вообще забыть о 60фпс.
    3) Основную ставку вам надо будет делать на создание отдельных слоев для элементов, проще говоря юзать translateZ/backface-visibility. Но только юзать это надо с умом, и каждый раз все профилировать через таймлайн. В веб-перфе есть одна крылая фраза "Tools, not rules".
    Ответ написан
  • Как добиться плавности высоконагруженной анимации?

    Ну на сайте который вы привели в пример используется метод requestAnimationFrame для запланирования перерисовки, что в итоге позволяет браузеру заранее произвести расчет для следующего кадра анимации, что в итоге дает большую плавность. Проблема только в том, что данный метод есть только в IE10+. Так что для нормальной поддержки пользовался этим кодом:
    (function() {
        var lastTime = 0;
        var vendors = ['ms', 'moz', 'webkit', 'o'];
        for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
            window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
            window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] 
                                       || window[vendors[x]+'CancelRequestAnimationFrame'];
        }
     
        if (!window.requestAnimationFrame)
            window.requestAnimationFrame = function(callback, element) {
                var currTime = new Date().getTime();
                var timeToCall = Math.max(0, 16 - (currTime - lastTime));
                var id = window.setTimeout(function() { callback(currTime + timeToCall); }, 
                  timeToCall);
                lastTime = currTime + timeToCall;
                return id;
            };
     
        if (!window.cancelAnimationFrame)
            window.cancelAnimationFrame = function(id) {
                clearTimeout(id);
            };
    }());

    В свое время именно это помогло мне избавиться от тормазов при анимации.
    Ответ написан
    22 комментария
  • Как стать хакером в 2015-ом?

    voidnugget
    @voidnugget
    Программист-прагматик
    В принципе хакерские скилы ничем примечательным в наше время особо не отличаются от того что было 10 лет назад. Нужно знать ассемблер и сишку - без плюсов и досконально, что бы фраза "Си (без плюсов) может быть очень даже ООП" не могла вызвать странную ухмылку на вашем лице и воспринималась довольно обыденно.

    1. Перво-наперво нужно научится пользоваться отладчиком OllyDbg, IDA и т.п.
    2. Потом нужно разобраться в архитектуре х86 на уровне понимания распределения прав доступа, работы с памятью и различных SIMD/MIMD операций.
    3. От ОС ничего не зависит - знания и навыки в kmdf/umdf и linux kernel device drivers дополняют друг друга. Также нужно разобраться с системными вызовами самих ОС и как это всё оперируются со стороны старых добрых glibc и т.п. вещей.
    4. Из языков нужно брать и эксперементировать со всем - даже в той же Java в рамках OpenJDK есть куча эксперементальных вещей, типа Project Graal и Project Sumatra, в которых очень даже полезно покулупаться ради собственного развития. Никогда не знаешь что найдёшь и как это можно будет потом использовать - главное искать и не останавливаться.
    5. Конвертируют полученные навыки и знания самыми разнообразными способами - лучше всего разрабатывать под ядрышка ОС различные вундервафли, становиться известным и ити работать в IBM / Intel. WhiteHat/GreyHat зароботки в постсовке нереальны, а BlackHat грозит сроком.
    Ответ написан
    Комментировать