• Как запоминать код, который писал две недели назад?

    @nirvimel
    1. Как писать много кода, оставляя его простым, как в начале?
    2. Также советую прочесть "Совершенный код" С.Макконнелла.
    3. Качественный код не требует того, чтобы его запоминали. Качественный код может быть забыт сразу после того, как он начнет проходить все тесты. Держать в голове нужно только программные интерфейсы, но даже не все, а только, используемые на текущем уровне абстракции.
    Ответ написан
    Комментировать
  • Верстать ли Pixel perfect?

    kapuletti
    @kapuletti
    Pixel Perfet нужен только в том случае, если дизайнер об этом просит. Если каждый пиксель на счету и должен иметь свое место, то, пожалуй да, этим можно заморочиться. Но во всем должен быть разумный предел. Как отметили выше, есть разные браузеры, разные системы, разные методы рендера. Пытаться бороться с этим не вижу смысла, это впустую потраченное время. Это должен понимать и сам дизайнер, когда выдвигает такие требование к макетам.

    Если же дизайнер рисует все «на глаз», то, естественно ни о каком PP речи быть не может. Бывали верстальщики, которые делали PP с кривых макетов, например, у одного элемента 27px отступ, у другого 24. И так с каждым элементом. Возьмите и выравнивайте до 25, зачем дублировать ошибки дизайнера? Думайте своей головой, а не «так было в макете».
    Ответ написан
    3 комментария
  • Какие библиотеки, плагины и прочее для верстки вы используете в своих проектах?

    SergGrbanoff
    @SergGrbanoff
    UX/UI Desinger, Front-End Developer
    Фреймворки, библиотеки и плагины для верстки сайта.

    1. Bootstrap - самый популярный HTML, CSS, и JS фреймворк в мире для разработки отзывчивых, mobile-first проектов в вебе.

    2. slick - Адаптивный слайдер для сайта

    3. Owl Carousel 2 - красивый, отзывчивый карусельный слайдер

    4. Fotorama - плагин для создания галереи на сайте

    5. MagnificPopup - плагин для создания модальных окон

    6. FancyBox - построениe всплывающих окон

    7. Mmenu - мобильное меню


    8. bxSlider - отзывчивый jQuery-слайдер для контента


    9. Fullscreen Slit Slider - слайдер с интересной анимацией

    10. parallax.js - эффект Parallax

    Первая 10-ка
    Ответ написан
    Комментировать
  • Как развить навык проектирования приложения или как стать Senior?

    devspec
    @devspec
    Помогло? Отметь решением
    Вам помогут только время и большое количество реализованных проектов. Всё приходит с опытом.
    Я, например, каждые полгода делаю ревью собственного кода за предыдущие полгода и ужасаюсь - как я мог так писать? А ведь полгода назад я мнил себя профессионалом... и так каждые полгода ))
    Ответ написан
    2 комментария
  • Какой редактор+плагины лучше использовать?

    BBmike
    @BBmike
    То есть ты пользуешься вот этим всем функционалом и не в состоянии купить лицензию на то, что принесет тебе хлеб с маслом?
    мне кажется, тут дело в танцоре и малом размере ботинок
    Ответ написан
    2 комментария
  • Какой редактор+плагины лучше использовать?

    @cssman
    50к рублей на бушные циски не жалко, а лицензию зажопил покупать? :)
    сказочный персонаж на тостере
    Ответ написан
    Комментировать
  • Как грамотно воспользоваться опцией @import в LESS?

    @Makito Автор вопроса
    Есть решение!
    Путем перебора стилей в функциях обнаружил что ему не нравится определение:
    background: url(@sprite_border) 0 0 repeat-y;
    

    переписал данные куски с учетом работы со строками
    background: url('@{sprite_border}') 0 0 repeat-y;
    

    и вуаля — все компилируется :)

    Но все равно не понятно — почему не было ругани, когда данный кусок кода стоял непосредственно в main.less
    Ответ написан
    Комментировать
  • Как сделать правильно ajax запрос в React Redux?

    @vsuhachev
    Т.к. ajax запросы асинхронные то на каждый такой запрос делается 3 ветки развития событий:
    • запрос отправлен
    • запрос завершился успешно
    • запрос завершился с ошибкой


    В коде это будет выглядеть как-то так
    export function loadInfo() {
        return dispatch => {
    
            dispatch({
                type: 'LOAD_INFO_REQUESTED'
            });
    
            request.get(
                Routes.root_path(),
                {headers: {'Accept': 'application/json'}}
            )
                .then(result => {
                    dispatch({
                        type: 'LOAD_INFO_OK',
                        info: result.data
                    })
                })
                .catch(result => {
                    dispatch({
                        type: 'LOAD_INFO_FAIL',
                        errors: result.statusText
                    })
                })
        }
    }

    Т.е. сначала экшн оповещает хранилище(store) что начал запрос и делает сам запрос. Далее в зависимости от результата хранилище будет оповещено либо от успехе либо об неудаче.
    Чтобы получить доступ к dispatch внутри экшена используется redux-thunk, который вы уже установили.

    Далее редуцер, обрабатывается 3 типа событий из экшена
    const defaultState = { loading: false, info: null, errors: null };
    
    export default function info(state = defaultState, action) {
      switch (action.type) {
    
        case LOAD_INFO_REQUESTED:
          return { loading: true };
    
        case LOAD_INFO_OK:
          return { loading: false, info: action.info, errors: null };
    
        case LOAD_INFO_FAIL:
          return { loading: false, info: null, errors: action.errors };
    
        default:
          return state;
      }
    }


    Компонент должен быть подключен к хранилищу с помощью connect, без него компонент не увидит store
    @connect(state => ({
        info: state.info
    }))
    
    class Info extends Component {
    
        componentDidMount() {
            const { dispatch } = this.props;
            dispatch(loadInfo()) // Вызываем загрузку
        }
    
      render() {
        const { loading, info, errors } = this.props.info;
    
        if (loadind) { return (<div>Loading</div>) }
        if (errors != null) { return (<div>Error!</div>) }
        return (
          <div>
            { info }
          </div>
        );
      }
    }


    Вобщем как-то так. В хэлпе на redux это все описано.
    Ответ написан
    5 комментариев
  • Расскажите подробно про php://input, как пользоваться?

    php://input возвращает все необработанные данные после HTTP-заголовков запроса, независимо от типа контента.

    Данные, могут быть:
    • application/x-www-form-urlencoded ( application/x-www-form-urlencoded тип application/x-www-form-urlencoded для простых форм- application/x-www-form-urlencoded ) или
    • multipart/form-data-encoded (в основном multipart/form-data-encoded для загрузки файлов)

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

    Если вы просто отправляете POST-ом обычную HTML-форму, запрос выглядит примерно так:
    POST /page.php HTTP/1.1
    key1=value1&key2=value2&key3=value3

    Но если вы много работаете с Ajax, может понадобиться обмен более сложными данными с типами (строка, int, bool) и структурами (массивы, объекты), поэтому в большинстве случаев JSON является лучшим выбором. Но запрос с JSON-полезной нагрузкой выглядел бы примерно так:
    POST /page.php HTTP/1.1
    {"key1":"value1","key2":"value2","key3":"value3"}

    Теперь содержимое будет application/json (или, по крайней мере, ни один из вышеперечисленных), так что $_POST -wrapper из PHP не знает, как с этим справиться (пока).

    Данные всё еще там, вы просто не можете получить к нему доступ через $_POST. Поэтому вам нужно получить его с "сыром" виде помощью file_get_contents('php://input') (если он не закодирован в формате multipart/form-data).

    Это также способ доступа к XML-данным или любому другому нестандартному типу контента.
    Ответ написан
    Комментировать
  • Есть ли курсы,скринкасты или учебники на русском по React js?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Три курса:
    React.js на русском
    React + Redux на русском
    React + React-router (+ Redux) на русском

    Вся информация текстом, можно скачать в формате книги. Почти к каждой главе приложен исходный код.
    Ответ написан
    Комментировать
  • Спрашивать ли бюджет у клиента или сразу называть свою цену?

    Заказчику всегда приятнее работать с тем, кто знает себе цену, чем с тем, кто старается выкружить денег по максимуму. Тем более, чем с тем, кто готов работать за еду, потому что большего не заложено в бюджет. Не все заказчики об этом знают, но по результату всегда получается так. Если честный специалист без стремления к торгу не вызывает у заказчика доверия - это повод поискать заказчика повменяемее.

    Ваша работа стоит столько, за сколько вы готовы её сделать. Так что интересоваться надо не бюджетом, а ТЗ, и из него называть цену. Потом, разумеется, надо уточнить бюджет, хотя бы чтобы понять как себя вести при запросе добавок и доделок.
    Ответ написан
    13 комментариев
  • С чего начать рефакторинг?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Ответ написан
    Комментировать
  • Как учиться новому после рабочего дня?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    1. 9 часов. Это уже ошибка. КЗОТ писали не дурни. 8 часов достаточно для работы, если человек не чаи пьет
    2. Пересмотрите процесс работы. По приходу на работу сначала делать самые важные. Прошу прочесть внимательно: сначала важные, а только потом срочные и другие. Отличие важных от срочных в том, что одни, как правило, делаются разово и про них забываются, а другие хоть и не срочные, но они влияют стратегически.
    3. Уделяйте время на то, чтобы подумать над "светлым будущим", т.е. создать\актуализировать список страгеческих целей и задач
    4. Делайте утром зарядку. Растяжку, отжимания, приседания. Это влияет на энергетику в организме
    5. Делайте перерывы во время работы.
    6. Чаще пейте воду
    7. Займитесь спортом. На своей шкуре опробовал и четко знаю то, что до занятия плаванием делал меньше, чем сейчас
    8. Окружите себя теми, кто куда-то стремится. Это не значит что надо всех других послать в Южную Америку на оз. Нахой. Это значит, что надо чаще общаться с одним типом людей и меньше с другим
    9. Стремитесь работать на результат, а не подсчет "жопочасов". В дальнейшем ставьте работодателю на собеседовании вопрос "Вам нужны жопо-часы или результаты?". Старайтесь выявить жмотов. Если вы вдруг справились не за 5, а за 4 часа, а работодатель жмотится и боится выделить время на самообучение сотрудника, хотя эти же знания будут применены при решении рабочих задач, то уходите от такого работодателя!

    Не смотря на то, что возникает соблазн прочесть еще одну главу в книге или что-то попрограммировать в ущерб занятиям спортом не стоит этого делать! Спорт обогащает энергетикой! При нём много чего развивается. К примеру из физических качеств развиваются выносливость и мышцы, а среди психологических стрессоустойчивость и упорство.

    После работы лучше тупить. Мозг должен "отдыхать". То есть заниматься структуризацией, обработкой того, что произошло за день.

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

    petermzg
    @petermzg
    Самый лучший программист
    Так учитесь новому, до начала рабочего дня. Вставайте раньше, учите нужное, затем на работу, а после работы отдых.
    Ответ написан
    7 комментариев
  • Где можно искать проекты помимо UpWork и других популярных фриланс биржах?

    petermzg
    @petermzg
    Самый лучший программист
    Да везде.
    Вот в Тостере реклама висит, ищут клиентов.
    Я находил проекты даже в ЖЖ Фуршете Артемия Лебедева.
    Если всюду давать о себе знать, то вас найдут.
    Ответ написан
    Комментировать
  • Как вы планировали своё учебное время?

    @xfg
    В любом длительном деле главное заинтересованность. Вам нужно начать делать любой интересный для вас проект. В процессе, когда вам требуется сделать то или иное для вашего проекта, вы гуглите, читаете, делаете и даже что-то запоминаете. Изначально по любому вопросу будет требоваться гугл, но очень скоро обнаружите, что уже изучили добрую половину API языка javascript, спроектировали и сверстали несколько UI экранов вашего проекта.

    Радуйтесь маленьким победам. Когда вы делаете интересный лично для вас проект, вы понимаете зачем вы сейчас читаете тот или иной материал. Вы практикуетесь, вы решаете реальные задачи. Я никак не планировал учебное время, я 15 лет назад захотел свой сайт, открыл блокнот, нашел в сети учебник по html читал и сразу делал свой сайт. Потом захотел бекенд и открыл php.net, далее возникло желание, чтобы код был не просто лапшой, а имел какую-то структуру так познакомился с различными фреймворками. Потом захотел, на свой код тесты и так познакомился с TDD/BDD. Далее захотел независимую от фреймворка бизнес-логику и так познакомился с DDD. Ну и так далее.

    Английский учил также. Сразу взял интересную мне статью и запоминал все важные незнакомые в ней слова. Иногда что-то о попадавшихся грамматических конструкциях читал если смысл предложения оставался не понятным зная все слова. Важно то, что я никогда не изучал всё сразу, только то, что нужно мне прямо сейчас, для решения моей задачи.

    Если задуматься, все наши предки делали примерно также. Сначала была задача, а только потом они искали решение этой задачи. Человек захотел подняться в небо и только потом, он искал решение. Не наоборот. И это был не боинг.
    Ответ написан
    Комментировать
  • Как не засыпать при чтении?

    saboteur_kiev
    @saboteur_kiev Куратор тега Книги
    software engineer
    Вы пытаетесь себя обмануть, говоря что эта книга (с большим количеством информации) вам интересна.

    На самом деле нет, не интересна. Может быть полезна, может быть развивает, но неинтересна.
    + банальная усталость.
    Ответ написан
    3 комментария
  • Знания Junior php разработчика?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    что должен знать идеальный джуниор (мое личное мнение):

    - Сетевой стэк. Нужно иметь хотя бы базовое представление о том как с сервером общаются. Ну то есть не нужно лезть в дебри, но понимать что такое HTTP или чем TCP от UDP отличается - нужно. В целом это пара часов чтения википедии.
    - GIT или любая другая распределенная VCS. Базовые навыки, что бы хотя бы понимал что есть git revert или git rebase, что такое фичабрэнчи и примерное представление как это работает и зачем надо.
    - Базовые основы unix. Ну то есть что бы не пугаться таких вещей как ssh хотя бы.
    - PHP. Без этого никуда. Он должен понимать что такое слабая динамическая типизация (не заучивать табличку кастов типов, а понимать плюсы и минусы, такая же история с приоритетами операторов - не заучивать а знать как избегать проблем с чтением кода)
    - Понимать что код чаще читают чем пишут, а потому не экономить 5 минут на написании кода, а писать так, чтобы сэкономить 30 минут человеку, разбирающемуся в куске кода.
    - Знать базовые вещи в плане безопасности. XSS и как защищаться, SQL инъекции и как защищаться, CSRF, MITM. Понимать что такое NDA, что данные пользователей - секретная информация. Как хэшировать пароли (не md5 а password_hash) и почему это важно.
    - Знать SQL. Глубоких знаний не требуется, нужно лишь понимание того, что такое нормальная форма, желательно разобраться с вопросом денормализации данных. Идеально иметь хотя бы базовые представления о том как работать с NoSQL решениями.
    - Процедурное программирование: почему глобальные переменные порождают сложность, что такое состояние, как можно использовать классы для изоляции состояния и т.д. Инкапсуляция. Инварианты, пост/пред условия, сохранение целостности...
    - Разделение ответственности. Это один из важнейших принципов, и упрощать все это до "mvc фреймворк" слегка неправильно. Вы должны понимать что от чего отделяете и главное зачем.
    - Автоматические тесты. Джуниор должен знать что это такое и иметь хотя бы минимальный опыт их написания. Должен понимать разницу между юнит и интеграционными тестами. Быть знакомым с пирамидой тестирования.
    - Уметь решать стандартные задачи не задавая слишком много вопросов. Например регистрацию пользователя по email-у вы должны написать, или авторизацию через соц сети, или комментарии, или новостную ленту.
    - Уметь дебажить. xdebug, blackfire и тд.

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

    p.s. Я в списке специально не указывал ООП, поскольку всеравно первые пару лет у разработчиков выходит процедурщина на классах. Это не плохо, но того что в моем списке более чем должно хватать для решения стандартных задач. Но термины вроде "инкапсуляция/полиморфизм/наследование" требуются в обязательном порядке подавляющем количеством интервьюверов, а стало быть знать это надо. Единственное что - рекомендую в свободное время глубже погрузиться в этот вопрос а не тупо заучивать формулировки.

    Так же вещи вроде docker джуниорам знать не обязательно просто потому, что их врядли допустят сходу к управлению инфраструктурой. А так пару неделек на изучение и вперед.
    Ответ написан
    12 комментариев
  • Что значит хорошо знать фреймворк?

    @YuryBorodkin
    Android dev
    Довольно просто, хорошо знать - значит знать ЧТО гуглить, чтобы решить проблему. Учить его - да что за дичь? он устареет через год, потом будет еще стопицот других, еще моднее.
    Ответ написан
    Комментировать