Задать вопрос
  • Почему программисты идут работать в Яндекс?

    @yugoru
    Джуниорам вообще выбирать мало приходится, они чаще всего и не понимают что им нужно, а вот мидлы и выше часто идут за интересными проектами, так как Яндекс - огромная машина с большим количеством вариантов для работы (в которых, кстати, и зарплаты разные).
    Ответ написан
    Комментировать
  • Почему программисты идут работать в Яндекс?

    @amkruglov
    1) Один из этапов собеседования всегда связан с алгоритмами (даже несмотря на то, что в работе они использоваться не будут).

    Алгоритмы используются постоянно. Мы не только JSON перекладываем :) Один разработчик может писать код день, в то время как другой сделает больше и лучше за 2 часа. Потому что у него лучше базовые знания, алгоритмы, иногда теория и опыт. Или ситуация, когда нужно разобраться в новой незнакомой технологии, системе. Тут тоже поможет умение быстро решать задачи, анализировать проблемы.

    2) Как правило, собеседование состоит минимум из трех этапов.

    Для опытных и высокогрейдовых разработчиков мы проводим дополнительную секцию по Архитектуре, где оцениваются совсем другие знания, не алгоритмы. Или про управление людьми/проектами/..., если речь идет про руководящую должность.

    3) Требования выше, чем в среднем требуется для рассматриваемой позиции (особенно это касается джуниоров).

    А вот это вряд ли. Требования у нас есть, но и задачи сложные. Если понизим планку, то человек просто не справится с задачами.

    4) Заработная плата ниже, чем в среднем по рынку.

    Такое заблуждение присутствует, согласен, иногда слышу. Поговори с теми, кто уже тут работает давно, что они скажут.

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

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

    Возможность подобрать себе проект в соответствии с твоим уровнем, возможность поменять проект если захочется попробовать чего-то другого (ротация), стабильность. Возможность сфокусироваться на работе и абстрагироваться от многих бытовых проблем.
    Ответ написан
    1 комментарий
  • Почему программисты идут работать в Яндекс?

    @evmaksimenko
    Работаю в Яндексе разработчиком почти год.
    Могу ответить на некоторые вопросы.

    Про собеседования на технические вакансии есть отдельная страница.
    https://yandex.ru/jobs/ya-interview/
    Собеседование состоит обычно из трёх этапов.
    1. Skype предварительное
    2. Обычно серия очных собеседований
    3. Знакомство с командами.
    На 1 и 2 этапах разработчики решают задачи по алгоритмам. Причём решать задачи нужно на бумаге или на маркерной доске.
    Сказать, что в работе программиста не будут использоваться алгоритмы, это довольно смелое утверждение :) Тогда нужно готовиться на ревью своих PR очень убедительно рассказывать про эффективность выбранных решений.

    Про количество человек на позицию. Я не знаю откуда эту цифру можно узнать. Из количества человек, которые проходят собеседование в настоящий момент? Ну это вообще не показатель. Если команда готова тебя позвать к себе, то это выяснится на третьем этапе собеседования.
    И вообще количество вакансий достаточно велико (https://yandex.ru/jobs/vacancies/dev/), думаю можешь заранее рекрутеру сообщить, какая область тебе интересна.

    Про то, что зарплата ниже, чем в среднем по рынку сказать не готов. Насколько я знаю, ни в одной вакансии не указано точное значение з/п. Везде вилка. И наверное нужно проводить исследования, чтобы узнать сколько ты стоишь во всех компаниях :)
    Плюс в сравнении с другими компаниями корпоративный пакет выделяется в лучшую сторону (сравнивали, например со Сбером).

    Яндекс - он большой и разный. Там есть новые технологии и большие данные. У Яндекса огромное количество пользователей. Большое количество разнообразных сервисов. Яндекс умеет делать беспилотные автомобили :) Плюс общий уровень программистов очень высок.

    Если есть вопросы и интересно - постараюсь ответить.
    Ответ написан
    7 комментариев
  • Проверять вёрстку на переполнение?

    qork
    @qork
    { background: #F00B42 }
    https://habr.com/company/htmlacademy/blog/254171/
    Вёрстка проходит тест на переполнение контентом. Вёрстка не ломается:
    • При добавлении в элементы большего количества текста.
    • При использовании картинок с неподходящими размерами.
    • Текст не должен выпадать из объектов.
    • Переполнение контентными блоками не приводит к нарушению сетки.


    Тоже по теме:
    https://habr.com/company/2gis/blog/246831/
    https://isqua.ru/blog/2016/06/19/crash-test-viorstki/

    Можно быстро смотреть результат при включенном designMode
    https://developer.mozilla.org/ru/docs/Web/API/Docu...
    Ответ написан
    Комментировать
  • Можно ли как то настроить git хуки для работы с контейнером?

    Да. В скрипт хука post-commit поместите, к примеру, для очистки tmp внутри контейнера
    docker exec mycontainer rm -r /tmp/*
    Ответ написан
    Комментировать
  • Стоит ли переходить на React.PureComponent по-умолчанию?

    PQR
    @PQR
    React.PureComponent реализует метод shouldComponentUpdate таким образом, что он делает поверхностное сравнение props и state (не глубокое). Вот собственно код:
    https://github.com/facebook/react/blob/c8fbdac2271...
    shouldUpdate =
                !shallowEqual(prevProps, nextProps) ||
                !shallowEqual(inst.state, nextState);


    Что такое shallowEqual? Это по сути сравнение оператором === каждого элемента из prevProps с каждым элементом из nextProps. На всякий случай дам ссылку на реализацию для полного понимания: https://github.com/facebook/react/blob/6963ea4bfcd...

    В итоге всё зависит от структуры ваших props. Если в props вы передаёте объекты которые иногда мутируются, т.е. по ссылке они равны ===, но внутри какие-то данные поменялись (что само по себе выглядит странно в экосистеме redux + reselect, но вполне возможно технически), тогда использование PureComponent вам всё поломает, т.к. на экране какие-то компоненты перестанут перересовываться!

    Если же у вас всё по уму, данные которые передаются через props являются скалярными типами (string, int, float, bool) или immutable объектами, тогда смело используйте PureComponent - в некоторых случаях он поможет избавиться от лишних вызовов render.

    Важное замечание: PureComponent нужно использовать только для так называемых presentational components, т.е. для тех компонент, которые НЕ обёрнуты в вызов redux connect().

    Для container components (т.е. тех компонент, которые обёрнуты в redux connect()) нет смысла наследоваться от PureComponent, т.к. метод connect() оборачивает ваш компонент своей реализацией shouldComponentUpdate, которая также использует shallowEqual. Если вы по недосмотру унаследуете container component от PureComponent - ошибок не будет, но это не имеет никакого смыла, т.к. ваш код по сути будет дважды делать shallowEqual, а зачем делать лишнюю работу?

    Подводя итог, рецепт такой:
    - presentational components наследуем от React.PureComponent
    - container components (которые обёрнуты в redux connect()) наследуем от старого доброго React.Component
    Ответ написан
    1 комментарий
  • В чем суть биткоинов?

    Jump
    @Jump
    Системный администратор со стажем.
    За счет чего он добывается?
    Он не добывается. Его просто получают. Это просто запись в базе данных. Нет такого объекта - биткойн. Есть запись в базе данных что на счете таком-то столько-то биткойн.

    Как он хранится, почему его не подделать, ну вот допустим у меня есть 100р это вот бумажка со всякими отличительными знаками, а как же с биткойном?
    Хранится так же как и любая запись в базе данных на компьютере. Подделать невозможно потому что база данных представляет из себя непрерывную цепочку блоков, хранящуюся на множестве компьютеров.
    В итоге для подделки нужно либо физически изьять у всех участников сети все записи, либо подделать эти записи - но это потребует огромной вычислительной мощности.

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

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

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

    nevkusniy
    @nevkusniy
    KRATOR
    Собственно оба варианта корректны. Если рассматривать это в плане удобства использования, то второй вариант однозначно выигрывает. Один большой компонент будет разделен на несколько мелких, те еще на несколько, а те - еще. И вам будет проблематично перебрасывать каждый раз в параметры store.

    Provider вызывается один раз в корневом компоненте. Далее же вы просто любой из компонентов подключаете к redux store:
    import React, {Component} from "react";
    
    import {connect} from "react-redux";
    import {bindActionCreators} from "redux";
    
    /* ваш компонент */
    
    class MyComponent extends Component {
    	render() {
    		console.log(this.props);
    
    		return (<div></div>);
    	}
    }
    
    const mapStateToProps = (state) => {
    	return {
    		state
    	}
    };
    
    const mapDispatchesToProps = (dispatch) => {
    	return {
    		dispatch,
    		// это мы подключаем собственные actions
    		actions: bindActionCreators(actions, dispatch),
    	}
    };
    
    export default connect(mapStateToProps, mapDispatchesToProps)(MyComponent);
    Ответ написан
    Комментировать
  • Контроллер отрабатывает 5 раз. Почему? Как можно отследить это?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Дебаггер в вебшторме умеет отлаживать нодовские приложения, просто сделайте аккуратно по документации.

    app.use -- это будет не контроллер, а мидлварь (вангую, что вы хотели сделать app.get). Правда, 5 раз оно не должно вызываться все равно, так что надо копаться в коде.
    Ответ написан
    1 комментарий
  • Как реализовать параллельную разработку нескольких проектов на базе одного репозитория?

    egor_nullptr
    @egor_nullptr
    Выделить CMS в отдельный репозиторий. Подключать через composer или git submodule.
    Ответ написан
    Комментировать
  • Есть аналоги Wordpress но попроще?

    Antonoff
    @Antonoff
    Разработчик
    Ответ написан
    Комментировать
  • Есть аналоги Wordpress но попроще?

    @fetis26
    Ну, за фронтенд!
    Посмотрите в сторону генераторов статических сайтов типа Jekyll.

    На выходе просто HTML, ломаться там нечему, есть заготовки под блог.
    Ответ написан
    1 комментарий
  • Как позиционировать Блок в БЭМ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    это не бэм.

    Первый способ, как я понял, заворачивать в Элемент


    Не совсем "заворачивать", просто только элементы отвечают за позиционирование, а блоки - задают базовые стили.

    <!-- у элемента в принципе не обязательно должен быть блок, но желательно -->
    <div class="page__wrapper block"> 
        <div class="block__header header"></div>
    </div>


    Ну то есть идея примерно такая.

    а второй добавлять вспомогательные классы как-то так


    Это вообще не БЭМ, это... ну как через атрибут style только меньше проблем, но куча дублирования.

    Вообще рекомендую вам посмотреть вот это: WSD в Новосибирске // БЭМ — норм, Вадим Макеев
    Ответ написан
    5 комментариев
  • Как работать с проектом по FTP, соблюдая при этом всю этику?

    littleguga
    @littleguga
    Не стыдно не знать, а стыдно не интересоваться.
    1. Откажитесь от FTP, минимум SFTP, а лучше SSH или GIT + Continuous Integration.
    2. Посмотрите в сторону PHPStorm/WEBStorm.
    3. Используйте git, тогда вам нужно только подключиться к продакшену и git pull.
    Ответ написан
    3 комментария
  • Насколько сложно написать под Chrome?

    OrlovEvgenii
    @OrlovEvgenii
    golang developer / DevOps
    - Сложность реализации прямо пропорционально тому, что ты хочешь получить на выходе. Это очевидно.
    - HTML5, CSS, JS да этого достаточно.
    - habr жэ
    - Если ты задаешь столь очевидные вопросы тут, а не сидишь и "гуглишь".. то ставлю полтосик на то, что свое хорошее приложение для хрома ты будешь еще очень-очень долго реализовывать.
    Ответ написан
    1 комментарий
  • Как задать стиль множеству классов?

    MaxKassa
    @MaxKassa
    Представитель платежной системы MaxKassa
    Но лучше добавить всем 1 класс.
    <div class="product-category" data-id="24"></div>
    или
    <div class="product-category-conteiner">
    <div class="product-category_1"></div>
    <div class="product-category_2"></div>
    <div class="product-category_72"></div>
    </div>
    
    .product-category-conteiner > div{
        border: solid 1px #000;
    }
    Ответ написан
    Комментировать
  • Кто может поделиться версткой сайта с помощью sass?

    AppFA
    @AppFA
    Frontend developer at Yandex
    В своих проектах использую следующую структуру папок для sass:
    - sass
    -- blocks (Какие-то отдельные блоки по типу input, button, form, popup)
    -- core (Базовые стили которые я таскаю из проекта в проект)
    --- base.sass (Базовые стили, sass-плейсхолдеры)
    --- animation.sass (Анимации)
    --- settings.sass (Настройки проекта, цветовые схемы, шрифты, размеры экранов)
    --- media.sass (Миксины для медиа запросов)
    --- type.sass (Типографика)
    -- layouts (Лейауты страниц типа header, footer)
    -- pages (Стили для различных страниц)
    -- plugins (Сюда помещаю css файлы плагинов с расширением .scss)
    По поводу миксинов типа box-shadow, flex не использу, т.к. после компиляции sass -> css обрабатываю автопрефиксером и на выходе получаю все вендорные префиксы для flex
    Если интересно, могу скинуть в скайпе проект
    skype: lithium100500
    Ответ написан
    2 комментария
  • Где найти ресурс с крутыми ховер эффектами?

    @Allan11
    Фронтенд
    Ответ написан
    Комментировать
  • Как улучшить знание JS?

    @IceJOKER
    Web/Android developer
    Нужно пилить, пилить и пилить, чтоб что-нибудь получилось.
    А вы думаете у других было все так просто - прочел пару книжек и все пошло по маслу?

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