• Как получить фундаментальные знания CS?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Единственное чем хороша база института - математика. Но предлагаю только ознакомиться с базовыми предметами, не вдаваясь в глубокие подробности (не нужно уметь интегрировать в уме).
    Тут предлагаю курсы CS Center на степике - https://stepik.org/org/compscicenter
    Там есть дискретная математика, мат. анализ и математическая статистика, алгоритмы. Больше и не нужно.

    За практикой идти в универститет не следует. Сфера развивается стремительно и программа поспевать не будет.
    Ответ написан
    Комментировать
  • Какую структуру репозиториев выбрать в проекте?

    @sergiodev
    Если честно, не вижу проблемы с одним репозиторием и отдельным папками внутри него для backend, web, mobile. Я так постоянно делаю в своих личных проектах. Единственной проблемой с таким подходом пока что было развёртывание приложения на сервер через git на каком-нибудь PaaS-сервисе типа Heroku, где не поддерживается сборка из подкаталога (т.е. только из корня репозиториия). Но это ограничение можно обойти через "git subtree split".
    Ответ написан
    Комментировать
  • Какую структуру репозиториев выбрать в проекте?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    • Бэк
    • Фронт
    • Мобилка
    • Либа проекта 1
    • Либа проекта ...
    • Либа проекта N

    Фронт так же можно сделать поддеревом/подмодулем бэка. Зачем выносить общий код в отдельные репозитории? Дык декомпозиция же. Удобнее работать с кучкой маленьких, законченных и более-менее автономными модулями/пакетами, чем размазывать одинаковый код по куче разных репозиториев и потом гадать что новее, старее, совместимее, оптимальнее и прочее. Да, можно сделать один общий репозиторий и держать там миллион разных модулей и прочего (ну или один большой и толстый). А потом копать кротовые норы с красными глазами в этой горе непонятно чего в поисках ошибок и нужного кода.
    Ответ написан
    Комментировать
  • Какую структуру репозиториев выбрать в проекте?

    Krasnodar_etc
    @Krasnodar_etc
    avito front
    Я бы делил на:
    1 - mobile
    2 - client core (subtree для 1 и 3)
    3 - main (web front + backend)

    Почему:
    Я не уверен, но по-моему мобильный фронт живёт свое жизнью - ему не нужен SSR, у него свой релизный цикл и сборка, он никуда никогда не деплоится, нет никакой необходимости ему лежать в той же кодовой базе. Зачем он вам как subtree в основном репозитории?

    Общий код вполне можно вынести в subtree

    Веб фронту нужен SSR (?). Конечно, при старте проекта на работе я бы разделил SSR и API на разные репозитории, чтоб API можно было переписывать/релизить отдельно от сср и фронта, но для пет проекта не вижу в этом большого профита, кажется, удобнее весь бэкенд писать в одном месте

    Честно говоря, для своего проекта я б вообще всё таки оставил монорепу + workspaces, просто чтоб не тратить время на переключения
    Ответ написан
    Комментировать
  • Можно ли джуну тратить рабочее время на обучение?

    @ByJumping
    Почему все советуют спросить у работодателя? Как вы себе это представляете?)

    А по факту любому бизнесу важно, что бы ты был полезен, то есть выполнял поставленные задачи. Сделал все за 2 часа? Тогда спокойно сиди и обучайся, потому что в перспективе твое обучение это еще плюс и самому бизнесу, если работодатель такое не понимает, то оттуда просто бежать нужно. Но о таком я не думаю, что стоит спрашивать, любой работодатель будет думать "щас он будет тратить время на обучение, а работу не успеет выполнить" или "а он разве не должен это уметь?". Тебе это надо? тебе это не надо))
    Ответ написан
    Комментировать
  • Как происходит работа с Git в крупных проектах?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Есть такая штука - культура разработки. Для каждой команды она своя.
    Когда команда сыграна, она может себе позволить отказаться от GitFlow в пользу Trunk-based и даже пушить в мастер.
    Поэтому, если команда ищет человека с определёнными профессиональными навыками, маловероятно, что знание внутрикомандной культуры разработки будет важным критерием.
    Однако, чем чаще коммитятся и пушатся изменения, тем лучше.
    Ответ написан
    Комментировать
  • Как происходит работа с Git в крупных проектах?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    В проекте имеются ветви: master, dev, release и features. Я создал feature от master и, при попытке слияния с dev, вижу, что моя ветка отстаёт от dev на 200 коммитов


    Тогда может надо было создавать feature от dev, а не от master?
    или выяснить почему ваш dev так отстает от master

    git flow в каждом проекте может быть немного свой, но он должен быть описан и установлен тимлидом/архитектором. Если в вашем проекте хаос бардак и никто не париться, то имеет смысл всем собраться и продумать как минимизировать конфликты.

    200 коммитов разницы это довольно много, или слишком долго висел feature или реально бардак в проекте.
    Ответ написан
    Комментировать
  • Как происходит работа с Git в крупных проектах?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я ни разу не работал с git в команде и в крупных проектах, поэтому не знаю, что нужно делать.

    Тебе и не нужно это знать. И мы не сможем перечислить все роли и задачи участников на проекте и все их возможные комбинации поэтому заранее рассказывать об этом бесполезно.

    Git - это просто инструмент. Но как делается review или кто его делает. Или голосуют. Или мержат или ребейзят.
    Или создают теги или бранчи. Или сколько делают осей разработки master/trunk, dev/stg/prod - это все частные договоренности. GitFlow, GitLabFlow. Интеграция Atlassian. С Gerrit. Это все-все частные случаи управления версиями кода на частных проектах. Нету общих рекомендаций.

    Узнать их можно на проекте. Пришел. Прочитал Developers process guide. И начал работать.

    А управление процессами разработки с помощью Git это большая и частная тема.

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

    @sryze
    Как-то так:

    git add список_файлов
    git commit --amend
    git push origin название_ветки --force


    Если не получилось запушить, то на серверной стороне скорее всего запрещена перезапись истории коммитов через --force - в таком случае скорее всего есть какая-то галочка в настройках репозитория, которую надо подкрутить (и потому лучше всего вернуть обратно).

    А вообще, так делать не принято, если вы работаете над репозиторием с кем-то ещё и он использует ту же самую ветку. Лучше по возможности добавить ещё один коммит. Можно оставить такой же комментарий и дописать что-то вроде "часть 2" в конце, чтобы было понятно, что это дополнения к предыдещему изменению.
    Ответ написан
    Комментировать
  • Можно ли джуну тратить рабочее время на обучение?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Мне бы хотелось выделять час или два рабочего времени на чтение документации, прохождение курсов и создание учебных проектов.

    Чтение документации это часть разработки.
    А так - согласовывайте ваш перформанс с вашим куратором или дайрект менеджером. Они же дают задачи со сроками, если в сроки вкладываетесь, остальное время учишься.
    В некоторых компаниях вообще есть курсы или оплата внешних курсов, о чем тоже можно договориться (но обычно уже после пройденного испытательного)

    Так же есть проблема с дебагом кода. На работе мы используем Android Studio с виртуальными устройствами, и я пока не могу ковыряться в ней дома, так как мой ноутбук ее не тянет.

    Спроси выдает ли компания корпоративный ноутбук для работы.

    Как вы думаете можно ли так делать и нормальная ли это практика? Как вы сами организовываете свое время, занимаясь самообразованием?

    По-разному.
    Ответ написан
    Комментировать
  • Можно ли джуну тратить рабочее время на обучение?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Это не только можно, но и нужно. В том смысле что у тебя просто нет другой возможности работать (не то чтобы расти). Если у вас в лавке нет внутренних курсов - значит ты должен расти самостоятельно. Я слышал такую оценку что джун поначалу должен тратить половину времени на (само)обучение, считаю её даже заниженной. Так что твои 2 часа в день или целый день в неделю - это мало, надо больше. Другое дело что это должно быть согласовано с твоим руководителем, возможно, даже с ним надо составить некий план, включающий те вещи, которые лавке нужны в первую очередь. Ну и вопросов надо побольше задавать - чтобы меньше тыкаться вслепую.

    Несколько дней назад ..... ещё не до конца разобрался

    Да ты просто реактивный джун! Несколько дней и уже делаешь таски :) У меня до "первого прода" прошло больше года, правда по пути случилась пара проектов, на которые ушло по несколько месяцев и которые в итоге "положили в стол" - надобность временно отпала. Но у меня не было "очень простых задач", мне как-то сразу стали наваливать не по-деццки :)
    Ответ написан
    Комментировать
  • Можно ли джуну тратить рабочее время на обучение?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Загляните в должностную инструкцию, там написано, что вы должны знать и чем заниматься. Скорее всего, работодатель рассчитывает, что вы обладаете необходимыми для осуществления работы компетенциями, полный рабочий день будете производить продукт и повышать свой профессиональный уровень только в рамках практики на рабочих задачах. Если экспертизы у вас не хватает, то стоит обсудить с непосредственным руководителем, как так вышло и что с этим делать.
    Ответ написан
    Комментировать
  • Можно ли джуну тратить рабочее время на обучение?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Уточните это у вашего работодателя. Обычно относятся к этому положительно, но не более 1 дня в неделю.
    Ответ написан
    Комментировать
  • Нормально ли делать множество последовательных запросов на сервер?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    REST в целом такой подход и предполагает. Другое дело что это не эффективно, да и все данные разом грузить - тоже перебор.

    В данном случае вам поможет переход на GraphQL. Вот посмотрите этот туториал на полчаса, там примерно ваша ситуация разбирается и полностью решается на GraphQL: https://www.youtube.com/watch?v=ZQL7tL2S0oQ
    Ответ написан
    Комментировать
  • Почему не вызывается второй аргумент внутри React.memo()?

    0xD34F
    @0xD34F Куратор тега React
    Открываем документацию и видим, что

    React.memo затрагивает только изменения пропсов. Если функциональный компонент обёрнут в React.memo и использует useState, useReducer или useContext, он будет повторно рендериться при изменении состояния или контекста.
    Ответ написан
    Комментировать
  • Как правильно передавать контекст в subChild компоненты, находящиеся в других модулях?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Похоже, ты не понял, зачем контекст вообще нужен.
    Он позволяет передать значение на несколько уровней вниз. При этом, если значение в контексте поменяется, то будет перерендер всех компонентов, которые его используют.
    Можно передавать и некоторое постоянное значение, например экземпляр какого-нибудь стора, как это делает тот же реакт-редукс. В этом случае не используется отслеживание смены значения (оно постоянное), но есть архитектурная польза - это такой своеобразный DI в вёрстку. Который, например, можно поменять в тестах или ещё где. То есть компонент не прибивается гвоздями к заимпорченому значению, а получает его в параметры, с позднейшим резолвом зависимости.
    Ответ написан
    Комментировать
  • Возможно ли сохранить изображение по ссылке?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    const result = await fetch('https://images.pexels.com/photos/3408744/pexels-photo-3408744.jpeg?auto=compress&cs=tinysrgb&h=130');
    const img = await result.blob();
    Ответ написан
    2 комментария
  • Как использовать значение width для height на css calc()?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Да, можно, например, с помощью псевдоэлементов. Блок всегда заданных пропорций (высота считается как % от ширины): https://jsfiddle.net/Ankhena/cLhxv7eq/
    В примере всегда квадратный блок, для изменения пропорций нужно изменять %%

    Через переменные не получится, потому что:
    либо мы знаем ширину в точках или vw - тогда не нужен calc
    либо она у нас в процентах - получим проценты, но проценты эти будут от высоты родителя, а не ширины. (Собственно для умножения процентов тоже не нужен calc)
    Ответ написан
    5 комментариев
  • Как работает функция componentDidUpdate?

    @slide13
    frontend/web-developer
    1. Вы ввели "1", нажали кнопку: у родителя меняется состояние на {value: "1"}, Child обновляется первый раз
    2. componentDidUpdate не срабатывает при первом рендере, поэтому в Child просто выводится Hello!
    3. В инпуте все еще "1", вы нажали второй раз кнопку. Снова вызывается setState с {value: "1"}, но каждый вызов setState приводит к перерендеру компонента, поэтому после второго клика происходит обновление родителя и вслед за ним потомка
    4. На второй перерендер у Child срабатывает componentDidUpdate, и т.к. состояние в потомке не определено, т.е. по дефолту равно null, то срабатывает условие в if в componentDidUpdate
    5. Child обновляет свой state и записывает туда {value: "1"}, после снова обновляется, но т.к. теперь предыдущий state был равен null, а текущий {value: "1"}, то условие if в componentDidUpdate уже не выполняется
    6. Добавляете в инпуте цифру "2", нажимаете кнопку. Родитель меняет состояние на {value: "12"} и обновляется вместе с потомком
    7. И дальше ответ на ваш вопрос: у Child снова после обновления срабатывает componentDidUpdate. При этом предыдущее значение у него в state осталось то, что было записано в пункте 5 и текущее тоже равно этому же значению, т.е. в этом случае опять сработает if и в Child изменится состояние на {value: "12"}
    8. Child снова обновляется после изменения своего состояния, срабатывает componentDidUpdate, предыдущее значение состояния value выводит "1", а текущее уже "12" так что if снова не срабатывает


    Надеюсь понятно написал ) Не понятно только зачем вам в Child нужно состояние, которое дублирует пропы, так делать не надо
    Ответ написан
    3 комментария
  • Почему при использовании setState элементы в массиве дублируются?

    @beem7
    Ну clickHandler сколько раз вызывается - 2 или 1?
    Если 1, то проблема с вашим setState. А он у вас экзотический какой-то... Не знаю, зачем это надо.
    Я бы сделал так
    this.setState({ taskArray: [...this.state.taskArray, inputVal] });

    Заодно в этом случае "taskArray и newArray НЕ являются по сути одним и тем же массивом" . spread создает новый массив.

    И эту хрень уберите потом куда-нибудь подальше из React:
    document.querySelector('input').value
    А то в React за такое бьют. Даже если бы селектор был нормальный, а не по тэгу.
    Ответ написан
    Комментировать