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

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

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

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

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

    Krasnodar_etc
    @Krasnodar_etc
    fundraiseup
    Я бы делил на:
    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)

    Теперь и aspect-ratio
    Ответ написан
    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 за такое бьют. Даже если бы селектор был нормальный, а не по тэгу.
    Ответ написан
    Комментировать
  • Как работают классовые компоненты в React?

    Реакт сам создает екземпляр класса и сам вызывает метод рендер, более того он сам вызывает кучу методов жизненного цикла, но я рекомендую пользоваться функциональными компонентами и хуками.
    https://reactjs.org/docs/hooks-intro.html#complex-...
    1) Потому что Fiber лучше работает с функциональными компонентами.
    2) Есть полтора случая на 1000000 когда на функциональном компоненте нельзя реализовать то, что на классовом и все они описаны в официальной документации.
    3) В реакте единственное возможное наследование это class Board extends React.Component, все, дальше начинается композиция, и в реакте думать в категориях OOP скорее вредно, чем полезно.
    https://reactjs.org/docs/composition-vs-inheritanc...

    So What About Inheritance?

    At Facebook, we use React in thousands of components, and we haven’t found any use cases where we would recommend creating component inheritance hierarchies.


    Поэтому забудьте про class based кмопоненты и сами пишите все на функциональных. А жизненный цикл class based компонент прочитайте внимательно пару (десятков) раз, чтобы запомнить и просто разбираться в чужом коде.
    Ответ написан
    Комментировать