• Есть ли проекты на С++, исходники которых стоят внимания, а то есть проекты написаны качественно и там есть чему поучиться?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    .NET Framework - один из лучших проектов с лучшей архитектурой. Не идеальной, местами вообще плохой - но в целом тем не менее лучшей.
    Его библиотеки написаны на C#, а не на C++, но это не имеет значения. Для С++ подобного фреймворка до сих пор никто не написал, даже лучшему C++-фреймворку Qt очень далеко до .NET. А жаль. В рамках любого достаточно крупного проекта обязательно следует написать нечто подобное, и проект строить уже на этом фреймворке.

    > чтобы не перенимать плохие практики, а учиться сразу хорошему
    Недостаточно знать, что такое хорошо. Еще надо знать, что такое плохо. Не поработав с плохой библиотекой и не имея уже состоявшегося опыта в архитектуре (чтобы давать оценку сходу), просто невозможно понять, что она плоха!
    Поэтому нужно рассматривать не исключительно лучшие проекты, а все подряд, и самому смотреть, где что хорошо, а где что плохо.
    И делать для себя выводы.
    Ответ написан
    Комментировать
  • Учить или придет с практикой?

    @alexdora
    Топ-менеджер
    Мой ответ: Нужна безусловно практика, но развиваться - значительно важнее.
    Теперь немного теории.
    Основная проблема современного образование - отсутствие объяснения зачем учить то или это, а также как быстрее учить. Знаете, мне папа в детстве объяснял - "математика нужна не для того, чтобы ты умел считать, а для того чтобы развивать мозги. Сейчас тебе сложно решить простое линейное уравнение, но в 11 классе ты их будешь считать в уме." Я запомнил это на всю жизни и мне это не раз помогало в жизни. Это из раздела аутотренинга. Что я получу, если сделаю это!
    Ну, :
    1. Порядок на столе, порядок в голове
    Многие не сядут что-то делать, пока кругом кавардак. Заставить себя убрать проще, если знаешь для чего. > создание мотивации
    2. Память.
    Память ассоциативна. Чтобы начать запоминать, требуется усваивать много информации. Зная что война закончилась в 1945 и что день космонавтики 12 апреля, можно легко запомнить что 12 апреля 1945 года умер 32 президент США Франклин Рузвельт. Чем больше зацепок в памяти, тем больше можно развить память увеличивая объем потребляемой информации за единицу времени.
    И обратная сторона, как раз ваша обучение "метрологии". Найдите с чем можно это все завязать. Уча что-то близкое и интересное вам, случайно выучить "метрологию".
    Это вам не интересно что-то учить. А можно дойти до небывалых высот, и нелюбимые предметы или какой-нибудь мусор который нужно запомнить будет отнимать вместо 8-10 часов, 20 минут времени. Пример: Сами подумайте, вот сидите вы и смотрите на 2 тома война и мир. И вам жизненно необходимо их прочитать, ну, к примеру баба сказала: не дам, пока не прочитаешь ;)
    Что легче сидеть и пытаться себя заставить прочитать это предполагая, что это займет чуть больше чем дохрена времени. Или имея в арсенале умение читать быстро, оценить...что на два тома у вас уйдет 2-3 часа.

    Стоит добавить!
    Не интересность предметов, является так же проблемой преподавателей. Они не интересно рассказывают и не умеют заинтересовывать учеников. Не все. Но большинство.
    Ответ написан
    Комментировать
  • Учить или придет с практикой?

    Придумывать себе задачи легко. Труднее решать задачи, придуманные кем-то.
    Ответ написан
    Комментировать
  • Как настроить событие на элемент отслеженный getElementsByClassName???

    VIKINGVyksa
    @VIKINGVyksa
    front-end developer
    по id возвращает элимент, а по классу возвращает коллекцию
    берите просто элимент который хотите
    document.getElementsByClassName('asd')[0].addEventListener('click',function(){console.log('click!')},false);
    Ответ написан
  • Реально ли менять стили псевдоэлементов средствами js?

    Сделайте просто два стиля
    .el:before {
    content: 'text';
    }
    .green:before {
    color: green;
    }
    .red:before {
    color:red
    }

    <div class="el"></div>
    А с помощью js уже меняйте классы green и red
    Ответ написан
    1 комментарий
  • Почему получаю ошибку Maximum call stack size exceeded?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    У вас тут идет рекурсивный вызов геттера и сеттера (вы из геттера age вызываете геттер age). Что бы понять что значит эта ошибка - читаем как работают рекурсии и что такое "стэк вызовов".
    Ответ написан
    1 комментарий
  • Что обозначает * в этой записи 'a[href*=#]'?

    Здравствуйте. Из источника цитирую:

    a[href*="tuts"] {
    color: #1f6053; /* nettuts green */
    }
    Вот то, что нам нужно. Звёздочка означает, что указанное значение должно быть частью указанного атрибута. Поэтому этот селектор выберет и nettuts.com, и net.tutsplus.com,, и даже tutsplus.com.

    Но помните, что этот способ слишком обширен. Что, если у вас будет ссылка, не указывающая на tuts+, но имеющая в адресе слово tuts? Для составления более строго правила используйте ^ и $, указывающие на начало и конец строки соответственно.
    Ответ написан
    1 комментарий
  • Как установить свежую версию Nodejs в ubuntu?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Попробуйте к командам установки добавить впереди sudo еще, возможно, нехватает прав перетереть поверх ту версию, что уже стоит.
    Ответ написан
    2 комментария
  • Как сделать заголовок со скошеными углами?

    aliencash
    @aliencash
    Партизан
    Как-то так
    codepen.io/aliencash/pen/eJrBEx
    Правда с адаптивностью сложно. Точнее лень допиливать, давайте дальше сами...

    зы: Ах черт, у вас еще тени... (((
    Ответ написан
    1 комментарий
  • ES 2015, Coffeescript или TypeScript? Что лучше и почему?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ES2015. и babel, поскольку это стандарт (Chrome50 поддерживает его на 91%). Ну и да, можно использовать фичи из ES2016 вроде async/await для улучшения читабельности кода.

    TypeScript это ES2015 + ES2016 stage1 + опциональная возможность объявлять типы, благодаря которой появляется возможность проводить статический анализ на этапе сборки. Это очень выгодно для очень больших проектов (именно поэтому Angular2 написан на нем, это ооочень большой проект).

    CoffeScript на сегодня не актуален, возможно этот проект получит дальнейшее развитие.
    Ответ написан
  • Где генерируется хэш пароля при авторизации - на стороне клиента или сервера?

    @fedot1325
    Пароль на сервер приходит в основном в открытом виде, можно конечно и на клиенте его перегнать в какой-нибудь sha512, но смысла в этом не очень много, оно скроет пароль в открытом виде от перехватчика, но от получения доступа не спасет. Https - единственный и самый лучший способ защиты от перехвата.
    Ответ написан
    Комментировать
  • Почему не работает JSON.stringify?

    petermzg
    @petermzg
    Самый лучший программист
    Вы походу хотели обьявить обьект
    var clients_list = { };
    А обьявили массив
    var clients_list = [ ];
    Ответ написан
    Комментировать
  • Насколько актуален сейчас infinite scroll?

    Aligatro
    @Aligatro
    Turn food and coffee into software...
    Суровое ИМХО - если бесконечный скролл как в вк например (без кнопки, автоматически через ajax подтягивает контент) то при расположении чувствительной/важной информации в футере, без шаманств пользователь туда не доберется.

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

    Ко всему прочему ничего не мешает поставить кнопку "загрузить еще" и ниже поставить постраничный pagination.
    Ответ написан
    Комментировать
  • Насколько актуален сейчас infinite scroll?

    arutyunov
    @arutyunov
    Mooza.ru — Делаем сайты
    Сделайте как на Яндекс.Маркете: у них это совмещено.

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

    Также иногда нужно посмотреть информацию в подвале сайта, а из-за бесконечного скролла этого не сделать — просто не успеваешь.
    Ответ написан
    Комментировать
  • Как понять что дано программировать?

    riky
    @riky
    Laravel
    Программирование может быть работой, а может быть творчеством.
    Первое для всех, второе тем кому "дано".

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

    Поэтому ставьте вопрос для чего. Тупо заработать - дано всем. А творчество - у себя спросите - интересно это вам?

    Готовы свободное время тратить на это?
    Ответ написан
    3 комментария
  • Нужно ли использовать аттрибутивные селекторы?

    DevMan
    @DevMan
    имхо, селектор по атрибуту стоит использовать только тогда, когда нет иных способов.

    https://developer.mozilla.org/en-US/docs/Web/Guide...
    https://benfrain.com/css-performance-revisited-sel...
    https://css-tricks.com/efficiently-rendering-css/
    https://smacss.com/book/selectors
    Ответ написан
    Комментировать
  • Как работает this?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ох...

    Для начала нам стоит прояснить что в javascript "методы" это обычные функции, которые просто привязаны к объекту. Если не вдаваться в подробности работы интерпритатора, вы можете спокойно вынести содержимое конструктора и заменить this на экземпляр объекта.

    Если совсем упростить - в javascript нет "методов", у объектов могут быть только свойства. "Методы" реализуются присваиванием функции (обычно анонимной) к свойству объекта.

    Теперь про this. this - это контекст вызова. Это "волшебная" переменная указывает на контекст, в котором мы вызвали какую-либо функцию. Она никак не фиксируется, и мы можем крутить и вертеть ей как хотим.

    По умолчанию она указывает на "владельца" функции. Тот объект, в контексте которого мы вызвали функцию.

    function foo() {console.log(this);}
    
    function MyObject() {
        this.foo = foo;
    }
    
    var hashMap = {
        foo: foo
    };
    
    var obj = {};
    var instance = new MyObject();
    obj.bar = instance.foo;  // мы можем даже красть методы
    
    foo(); // выведет window, если для браузера и мы вызывали в глобальном контексте
    instance.foo(); // выведет instance так как в контексте этого объекта мы это дело и вызывали
    hashMap.foo(); // выведет hashMap по той же причине
    obj.bar(); // выведет obj опять же потому что мы вызывали функцию в этом контексте
    foo.call('my own context') //мы можем задать свой контекст


    Зачем присваивается this и используется в дальнейшем?


    У функции есть своя область видимости. Ей доступны все переменные/идентификаторы которые определены в ее области видимости и выше в плодь до глобальной. То есть наши обработчики событий будут всегда видеть переменные объявленные в конструкторе. Причем именно то что было на момент вызова конструктора (то есть сохраняется во времени даже после завершения работы функции). Это к слову является типичной проблемой мемориликов, так как иногда люди забывают почистить за собой ссылки на объекты.

    У нас конечно есть еще функция bind, которая позволяет явно зафиксировать контекст, но иногда удобнее так.

    Именно за счет областей видимости функций в javascript мы достигаем инкапсуляции, скрываля приватные штуки внутри нашей области видимости и выплевывая наружу только то, что нужно. Самая настоящая инкапсуляция, модификаторы доступа в этом плане - просто кастыли (хотя для восприятия они проще).
    Ответ написан
    12 комментариев
  • Как реализовать поиск по json?

    @Kusmich
    Для фильтрации массивов можно использовать функцию Array.prototype.filter

    Для фильтрации по конкретному полю

    var search = "text"
    var result = arr.filter(function(el){
        return el.fieldName.indexOf(search) > -1;//fieldName - поле по которому нужно фильтровать
    });

    Если искать нужно сразу по всем полям, то функцию фильтра можно модифицировать, например, так

    var search = "text"
    var result = arr.filter(function(el){
        for(var field in el){
            if(el[field].indexOf(search) > -1){
                return true;//если нашли хотя бы одно поле содержащее искомую строку, оставляем объект
            }
        }
        return false;
    });
    Ответ написан
    Комментировать