• Как вернуть мотивацию к обучению?

    При повторной потере мотивации алгоритм следующий:
    1) Идем высыпаемся. По-нормальному так, без будильников. Чтоб глаза вообще больше не закрывались.
    2) Если мотивация не вернулась (возвращается в 70% случаев) - берем велик (хотя можно и пешком) - и на улицу. Если есть приличный парк в городе - находим пару нестандартных физ. упражнений (можно боевых), пытаемся выполнить. Работа с телом и физические нагрузки - это совершенно другая часть вашего сознания, про нее нужно не забывать.
    3) Если мотивация не вернулась (уже где-то 85% случаев) - берем случайную книгу (не техническую), в идеале - из жанра который вам нравится. Читаем. Спокойно, страницы не считаем.
    4) Если не вернулась, повторить с п. 1 до пяти раз, не думая о времени и выполняя только самые важные дела (срочные задачи по учебе, работа, если есть), можно даже попросить родных/знакомых помочь по дому и бытовым делам, чтобы себя разгрузить.
    5) Если не помогло после 5 раз, задаем новый вопрос на тостере, подробно описываем что делали).

    Хотя бы один из п. 1-3 выполняем для профилактики каждый выходной.
    P.S. в принципе плохо сравнивать себя с кем-то - для "сравнения" на свете есть всякие соревнования и состязания, где есть правила и контекст. В жизни правил нет, один учится в MIT, другой учится в колледже в России - какие могут быть сравнения? Вы думаете тут большинство людей за один год все узнало и всего добилось? Вы глубоко заблуждаетесь) PHP-шники-выскочки не в счет, у них искаженное представление о реальности.
    Ответ написан
    11 комментариев
  • Какие задачи нужно уметь выполнять на JS начинающему?

    copist
    @copist
    Empower people to give
    Какие задачи нужно уметь решать на чистом JS, перед тем как переходить к изучению библиотек и фреймворков?


    Кроме синтаксических конструкций, математических и логических выражений, нужно знать:
    • Область видимости переменных
    • Замыкания
    • Объектно-ориентированное программирование, в частности наследование через прототипы
    • Шаблон проектирования "модуль"
    • Операции над DOM
    • Понимание принципов событийно-ориентированного программирования
    Важно - нужно знать, откуда копипастить.
    Тебе нужно быть очень хорошо знакомым с одной-двумя-тремя популярными библиотеками на JavaScript. В идеале ты должен иметь представление о том, что определённый класс задач может быть решен с помощью определённых библиотек, хотя бы одной, но такие знания приходят с практикой. Вообще ты должен быть знаком с ними так близко, чтобы помнить, в какой части мануала по библиотеке можно найти описание форматов входных данных нужной тебе функции и какой будет результат, чтобы скопировать и вставить в свой код, а потом поправить, чтобы работало.

    Важно - инструменты программиста JavaScript
    У тебя должен быть удобный инструмент для разработки (IDE, Integrated Development Environment), чтобы он тебе подсвечивал код (syntax highlight) и подсказывал о синтаксических ошибках (syntax check), о формальных параметрах функций (type hinting), о стиле кодирования (code style), помогал писать код (live templates).
    Ты должен знать, как отлаживать скрипты в популярных браузерах (Firebug, Chrome Developer Tools и другое). Что такое точки останова, как управлять исполнением во время останова, как посмотреть и поменять содержимое переменных, как настроить останов по условию.

    Хотелось бы узнать что это за задачи(упомянутые вами 80%)


    Реальные задачи джунов:
    1. Возьми из сборника задач по javascript любой скрипт случайно и вслух расскажи, что он делает.
      Важно - читать и понимать чужой код намного важнее, чем писать свой. И на работе тебе это приддётся делать чаще, чем ты думаешь. Чтобы подключить к своему проекту чужую JS либу, нужно понимать что она делает, как она конфигурируется, как управлять её поведением. Скажу точно, что написать свой скрипт, который строит графики, намного сложнее, чем понять, как настраивается highcharts.

    2. Напиши скрипт на JS, который в заданном тексте удалит один или два символа, выбранных случайно
      1. Усложнение: удалять можно только буквы в словах, а знаки пунктуации и цифры удалять нельзя
      2. Усложнение: принять, что этот текст является программной на Javascript, удалить одну-две команды JS, но только если они не в строковых литерах (break как команду удалить можно, а в строке "break my heart" нельзя)
      3. Усложнение: воспользуйся этим скриптом и "попорти" код какого-нибудь другого скрипта на Javascript, а потом отладь, найди ошибку и восстанови работоспособность
      Важно - этим обычно все и занимаются - ищут баги. Только в реальной жизни они и без этого скрипта появляются. И не по одному, а прям пачками.

    3. На страницу HTML нужно встроить график курса доллара по отношению к рублю. Формат входного массива значений курса определи сам, исходя из своего скрипта для построения графиков.
      1. Усложнение: на одном графике должны быть два курса, по разным шкалам. Наприме, курс доллара к евро и курс юаня к рублю
      2. Усложнение: первоначально график вывести в детализации по месяцам, но чтобы можно было "приблизить" (drilldown) детализацию до дней
      3. Усложнение: первоначально график вывести текущем месяце, но чтобы можно было загрузить данные для предыдущего месяца без перезагрузки страницы (AJAX)

    4. При клике по картинкам, вставленным в текст HTML, показывать всплывающее окно для просмотра увеличенной картинки.
      1. Усложнение: в всплывающем окне сделать навигацию по картинкам, вперёд/назад и к нужной картинке
      2. Усложнение: в всплывающем окне вместо картинки показать видео-ролик с Youtube
      3. Усложнение: в всплывающем окне показать текст HTML

    5. По клику на кнопку "Click me" показать всплывающую форму.
      1. Усложнение: реализовать проверку данных на корректность перед отправкой формы (непустое значение, минимальное количество символов, максимальное количество символов, минимальное числовое значение, максимальное числовое значение)
      2. Усложнение: если в значении текстового поля встретилась гиперссылка, то считать её за 22 символа при любой длине этой ссылки (как в твитере)
      3. Усложнение: реализовать отправку формы на сервер через AJAX, без перезагрузки страницы
      4. Усложнение: саму форму в виде HTML загрузить с сервера через AJAX, в момент клика по кнопке "Click me", правила проверок данных должны как-нибудь "извлечься" из самой загруженной формы, например из аттрибутов полей ввода

    6. К форме ввода данных на поле ввода даты "навешать" всплывающий календарь для выбора даты.
      1. Усложнение: сделать форму календаря мультиязычной. Хотя бы через настройки на том же JavaScript
      2. Усложнение: сделать так, чтобы с помощью календаря можно было выбрать диапазон дат, чтобы она была привязана к двум полям формы "дата начала" и "дата окончания", и чтобы значение в поле "дата начала" обязательно была меньше чем в поле "дата окончания"
      3. Усложнение: сделать так, чтобы с помощью в календаре можно было видно визуально этот диапазон
      4. Усложнение: диапазон может быть открытым, но не пустым, то есть пользователь должен задать хотя бы дату начала или дату окончания.

    7. Сделать пред-просмотр веб-страницы HTML с разными темами. Тему страницы выбирать через селектор на javascript, а показывать в фрейме.
      1. Усложнение: сделать селектор "тип устройства", чтобы менять размер фрейма (например, "iPhone 5c 1136x640") и "чекбокс" для смены ориентации страницы "горизонтальная" или "вертикальная" (соответственно 1136x640 или 640x1136)
      2. Усложнение: в селекторе тем предусмотреть поиск тем по подстроке, и аналогично поиск устройств по части названия (авто-дополнение, auto-complete)
      3. Усложнение: тема страницы должна меняться без перезагрузки фрейма



    Задачи повышенной сложности, исходя из личного интереса
    1. Реализовать форму для многошагового мастера: форма должна состоять из нескольких страниц (шагов), пользователь может переключать страницы через какие-нибудь элементы управления "вперёд/назад" или "перейти на страницу".
      1. Усложнение: реализовать функциональную связь значений, когда некоторые данные зависят друг от друга (ввёл число в поле "количество" и в поле "сумма" значение пересчиталось)
      2. Усложение: доступность некоторых полей ввода должна зависеть от данных (например, если указал "есть личный самолёт", то значит можно ввести "марка самолёта")
      3. Усложение: видимость некоторых страниц должна зависеть от данных из предыдущих страниц (например, если указал "есть личный самолёт", значит появилась страница "ТТХ самолёта"; иначе страница должна скрыться)

    2. Реализовать однопользовательскую браузерную игру "змейка", "тетрис", "найди пару"
    3. Реализовать многопользовательскую браузерную игру "крестики-нолики", "морской бой" на два игрока в режиме "hot seat"
      1. Усложнение: два игрока на разных компьютерах, ходы передаются по websocket
      2. Усложнение: ограничение на ожидания окончания хода 15 секунд, по окончании ожидания автоматически делается случайный ход

    4. Реализовать todo-list. Пользователь вводит список, затем он превращается в строки с "чек-боксами". Когда "чекбокс" включен, строка зачёркивается.
      1. Усложнение: пользователь может переименовывать, удалять, добавлять строки
      2. Усложнение: список хранить в localStorage браузера, чтобы при перезагрузке страницы он восстанавливался
      3. Усложнение: пользователь может иметь несколько независимых списков todo

    5. Реализовать простой графический редактор. Пусть рисуется точка в месте, где пользователь кликнул.
      1. Усложнение: добавить переключатель режимов "точка"/"линия", в режиме "линия" рисуются линии между двумя последовательно кликнутыми точками
      2. Усложнение: можно менять толщину, цвет линий, размер точек
      3. Усложнение: последовательность кликов можно воспроизвести ещё раз с самого начала, равномерно или с реальной задержкой между кликами, с обычной скоростью или ускоренно
      4. Усложнение: можно выгрузить получившийся рисунок в формате PNG или SVG, причём SVG c анимацией воспроизведения



    Можно использовать любую существующую библиотеку.
    Например,
    для построения графиков www.highcharts.com
    для загрузки и передачи данных через AJAX: jquery.com + что-нибудь на сервере
    для всплывающих диалогов с картиками, видео и формами: fancyapps.com/fancybox и https://jqueryui.com/dialog/
    для валидации форм rickharrison.github.io/validate.js
    для календаря https://jqueryui.com/datepicker/
    для автодополнения https://jqueryui.com/autocomplete/
    для передачи данных между несколькими пользователями socket.io или обычный AJAX
    Ответ написан
    16 комментариев
  • Шпаргалки/справочники для front-end разработчика?

    У DevDocs есть расширения для Chrome и Firefox, позволяющие читать доки без подключения к интернету. Там много всего, не только фронтенд.
    Ответ написан
    Комментировать
  • Как корректно применить AJAX в данном случае?

    $( "form" ).submit(function( event ) {
    event.preventDefault(); //запрет сабмита формы(запрет действия браузера по-умолчанию)
    var data = {};
    $.post('/your_url', data, function(response){ //получаем контент
    $(response).appendTo('<селектор для вставки>'); //вставляет контент в нужно место
    },)
    });
    Ответ написан
    Комментировать
  • Как отсортировать по ключу двумерный массив в javascript?

    Вариант 1
    function sortFunction1(a, b) {
      if (a[0] === b[0]) {
        return 0;
      }
      else {
        return (+a[0] < +b[0]) ? -1 : 1;
      }
    }
    
    a.sort(sortFunction1);

    Вариант 2
    function sortFunction2(a, b) {
      if (a[0] === b[0]) {
        return 0;
      }
      else {
        return (a[0] - 0 < b[0] - 0) ? -1 : 1;
      }
    }
    
    a.sort(sortFunction2);


    Вариант 3
    function sortFunction3(a, b) {
      return a[0] - b[0];
    }
    
    a.sort(sortFunction3);

    Нужно не забывать, что если мы пытаемся сравнить числа в виде строк, то результат скорее всего будет не тот, как мы ожидаем. Строки сравниваются посимвольно и "2" будет больше "10"
    Ответ написан
    5 комментариев
  • Как при помощи PHP и cUrl передать GET запрос с XML в теле запроса?

    puchkovk
    @puchkovk Автор вопроса
    Усложнять — просто. Упрощать — сложно.
    Промучавшись с cUrl весь вечер и часть утра, нашел статью на Хабре: habrahabr.ru/post/48726

    Сделал все при помощи file_get_contents.

    $url = 'http://site.ru/api/';
    $xml = '<request><tag>1</tag></request>';
    
    $username = 'user';
    $password = '12345';
    
    $opts = array('http' =>
        array(
            'method'  => 'GET',
            'header'  => "Content-Type: text/xml\r\n"
                . "Authorization: Basic ".base64_encode("$username:$password")."\r\n",
            'content' => $xml,
            'timeout' => 60
        )
    );
    
    $context  = stream_context_create($opts);
    
    $result = file_get_contents($url, false, $context, -1, 40000);


    Уже после того, как все заработало, наткнулся на HTTPFUL, и guzzle, обе библиотеки довольно мощные, httpful - попроще.
    Ответ написан
    Комментировать
  • Какие аудио курсы изучения английского языка скачать/купить?

    Во-первых, курсы на русском языке крайне не рекомендую. Сбивает мышление. Нужно сломать барьер - начать мыслить на английском. Если будет половина на русском, половина на английском - так не работает.
    Когда ломается барьер - удивительное ощущение. Это можно описать, примерно так: до этого вы все время, когда слышали "Red", думали, что это "Красный". После ломания барьера, вы слышите "Red" и понимаете, что это именно "Red". Red - это не красный, это red :). Сложно объяснить, но примерно так :).

    По существу: рекомендую курс "Power English" от A.J. Hoge.
    Слушал в машине по пути на работу, час в день.
    За полгода поднял уровень от intermediate до fluent. Смотрю фильмы и курсы без субтитров. Легко понимаю собеседников и легко разговариваю.

    Курс основан на подходе "ключ к языку - не глаза, ключ к языку - уши".
    На этом же подходе основан курс Пимслера. Но Пимслер - скучный. AJ Hoge - гораздо веселее и не надоедает.

    В этом курсе не тупое повторение, а интерактив - простые ответы на простые вопросы.

    Взять можно тут (либо на трекере):
    effortlessenglishclub.com

    Есть еще более старые курсы этого автора - Effortless English. Там можно начинать с уровня beginner и ниже.
    Ответ написан
    4 комментария
  • Какие преимущества фриланс имеет над работой в офисе?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Описываю по себе:
    1) Возможность создать свой собственный режим сна. Для меня вставать в 8-9 утра это настоящая боль. Уже год+ засыпаю между 3-4 часами ночи и просыпаюсь между 11-12. То есть абсолютно всегда сплю свою норму в 8 часов, для того чтобы чувствовать себя нормально и не пить никаких кофе.
    2) Отсутствие временных/моральных/физических затрат на дорогу до работы. Конкретно мне жаловаться не приходилось, ибо первое место работы было в 10 минутах ходьбы от дома, но вот люди в больших городах от этого явно страдают.
    3) Возможность жить и работать так, как это удобно ТЕБЕ. Вот сижу я днем, дописал только-что какой-то кусок проекта и смотрю в окно, а там солнышко светит и птички поют. Ну я беру и иду бегать на стадионе. И это все происходит в 2 часа дня. А что в офисе? Ходить проветривать мозги на улицу на официальных перерывах? А если заработался и пропустил перерыв, то что? Во многих компаниях придется сидеть дальше тупить.
    4) Возможность работать тогда, когда это наиболее удобно и эффективно для тебя. Один из самых важных пунктов. В офисе пришел и сидишь 8-часовой рабочий день. И ты же не можешь подойти к начальнику и сказать, что у тебя сейчас мозги не работают, и тебе бы хотелось свалить домой вообще. Ну может 1-2 раза отпустят, а что делать если тебя в каждый второй день после обеда парализует на пару часов? Будешь в итоге сидеть и накручивать спагетти-код на вилку. А потом его рефакторить, матерясь. Мне вот например ночью нравится работать, но где вы видели офисы, в которых вам позволят одну половину дня работать там, а другую ночью дома?
    5) Отсутствие привязанности к каким-то предпочтениям фирмы. Вот попали вы в веб-студию, делающую сайты на битриксе. И представим чисто теоретически что вам там платят нормальные деньги. А дальше что? Ну полгода вы попилите магазинчики. А потом еще полгода. И еще. Ну конечно не везде так уныло, но своих "особенностей" хватает во всех компаниях.
    6) Отсутствие видимого потолка по заработку. В стандартной компании вас посадят на оклад, +небольшие премиальные если вся команда в сроки будет сдавать проект например и нарисуют вам роадмап, по которому вы будете строить планы на жизнь. Аля "через полгода сдам 7 проектов и меня повысят, увеличив зп на 15%". А потом в один прекрасный вечер после работы вы сядите изучать что-то интересное дома. И будете изучать недели-месяцы. И вот приходите вы однажды на работу, с кучей новых знаний, а у вас в голове стойкое ощущение того, что сейчас вы достойны не то что этой прибавки в +15%, а вы на все 30% тяните. Но вам никто этого не даст. Просто потому-что обычные офисы живут по другим правилам.
    Ответ написан
    11 комментариев
  • Какие преимущества фриланс имеет над работой в офисе?

    Jump
    @Jump
    Системный администратор со стажем.
    Потому что в офис надо ходить. Там есть начальник который говорит что делать. Перечить ему нельзя, его надо слушаться.
    Если тебе хочется на рыбалку ты обязан спросить у начальника и надеяться что он разрешит отлучиться тебе на три дня. А может и не разрешит. В любом случае часто отпрашиваться нельзя.

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

    В общем лень мне в офис ходить, я спать с утра люблю.
    Ответ написан
    5 комментариев
  • Как изучать, что то новое имея фуллтайм работу?

    @hjk
    Для меня ключ к любой деятельности — хороший сон. Я всегда ценю возможность как следует отдохнуть и выспаться. Без этого мой день проходит исключительно непродуктивно. Излишняя раздражённость, сонливость, усталость даже в первой половине дня, отсутствие мотивации. Отсюда и недостаток энтузиазма заниматься чем-то после работы. Ситуация стала реально меняться к лучшему, когда я забил на часть дел и стал просто раньше ложиться. Так как вставать мне приходиться не то, чтобы очень рано — в шесть утра, такое решение отрезало значительный кусок из моего вечернего времени. Но я ни о чём не жалею, ложусь хоть и в десять вечера, зато за день успеваю отдохнувший и свежий гораздо больше.
    Мой совет — если есть возможность, постарайтесь спать побольше. От восьми часов желательно. Знаю, есть апологеты сна по четыре часа в сутки или мелкими отрезками на протяжении всего дня, но — лично я пробовал такое и лично для меня это абсолютно не работает, только голова закипает по поводу и без.
    Ответ написан
    5 комментариев
  • Как отследить нажатие кнопки "Назад" браузера?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    addEventListener("popstate",function(e){
        alert('yeees!');
    },false);
    Ответ написан
    2 комментария
  • Как изучать, что то новое имея фуллтайм работу?

    trevoga_su
    @trevoga_su
    Изучать на работе. Мне когда работа "позволяла" это делать - я и изучал и/или свой проект писал.
    Да-да. Именно так. Совесть пусть идет в жопу.

    Остальные советы - это бред школьников.
    Если человек спрашивает, значит у него реально нет времени. Если есть семья - то подавно.
    Если устает - то значит устает. Я помню, что значит тратить на дорогу 4 часа в день.
    По вых лучше не работать слишком много - реально можно перегореть. Сам сгорал не один раз.
    Оптимальное время для всего этого дела - будни.
    Ответ написан
    7 комментариев
  • Как поменять расположение главного файла стилей style.css в wp?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    файл style.css должен быть в теме обязательно, и там должна находиться декларация темы, иначе тема будет считаться поврежденной.
    сами же стили можете подключить откуда угодно, в вашем случае подключаем так
    function my_styles() {
        wp_enqueue_style( 'my-style', get_stylesheet_uri() . '/css/style.css');
    }
    add_action( 'wp_enqueue_scripts', 'my_styles' );
    Ответ написан
    Комментировать
  • Как изучать, что то новое имея фуллтайм работу?

    @PolkovnikBrumel
    1. Если ты добираешься на работу на общественном транспорте, то можно накачать учебников/обучающих курсов/роликов на телефон/планшет и читать/слушать/смотреть.
    2. Записаться на курсы, которые можно посещать после работы. Изучение чего-то в команде стимулирует соревновательность и не дает просто забить, если не хочется.
    3. Не надо исключать выходные. Всегда можно выделить пару-тройку часов на обучение.
    4. После работы, конечно, хочется отдохнуть, но если вы найдете себе интересное обучающее задание, то это и будет вашим отдыхом. Главное, повторюсь, чтобы было интересно.
    Ответ написан
    4 комментария
  • Из гуманитария в программисты, или как найти работу?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Предложу чуточку нестандартный вариант, вдруг поможет:
    1) Находите интересующие вас компании, где вы бы хотели теоретически работать. Естественно никаких гуглов/ораклов, что-нибудь местное или по удаленке.
    2) Находите собственно их почтовый ящик, на который они принимают письма общего/рекрутингового плана.
    3) Строчите туда письмо "от души". То есть хороший, красивый, структурированный текст, в котором в кратце даете понять что вы из себя представляете, как бы быстро обучаетесь, проводите параллели со своей бывшей работой рекламщика, рассказываете о былых невероятных заслугах и тд и тп. Ну в общем пишите письмо так, что если бы оно пришло например к вам на ящик, то вы бы его полностью прочитали, даже не понимая зачем вам его вообще читать.
    4) Надеетесь на лучшее. И даже если никто не возьмет к себе, то по-любому кто-то любезно ответит "простите, вы конечно классный, но совсем уж новички нам сейчас не нужны". И их можно будет сразу заносить в список, на случай смены работы, когда вы уже наконец-то поработаете на первой работе. + это хорошо повлияет на моральное состояние, ибо все эти топорные отказы по сухим резюме/или вообще отсутствие даже отказов, могут вгонять в депрессию поначалу.
    Ответ написан
    Комментировать
  • Как избавится от дублирования кода?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Я бы создал класс AbstractClass, чтобы CommonClass и ConcreteClass1 наследовались от него. ConcreteClass2 должен наследоваться от ConcreteClass1. В AbstractClass вынес бы из CommonClass те члены, которые должны быть общими для всех классов. Всё.
    Ответ написан
    Комментировать