• Во Flutter с использованием MobX не обновляется значение в AppBar, в чём проблема?

    vadimpopov94
    @vadimpopov94
    Dev
    Измени вот это

    appBar: AppBar(
      title: Text('MobX Counter ${counter.value}'),
    ),


    на это

    appBar: Observer(
      builder: (_) => AppBar(
         title: Text('MobX Counter ${counter.value}'),
    )),


    И теперь этот виджет будет перерисовываться при изменении counter.value
    Ответ написан
    2 комментария
  • Где, когда, зачем и почему надо применять DTO?

    @kttotto
    пофиг на чем писать
    1. DTO модели, это всего лишь прослойка между сервисами и их предназначение перенести данные от одного сервиса/слоя к другому. Это всегда чистые POCO модели. Если Вы из одного сервиса сразу будете передавать данные в другой сервис, то у Вас выйдет зависимость от типа данных. Т.е., если в первом сервисе изменится тип отдаваемых данных, то придется менять тип входных данных второго сервиса и возможно что-то даже править в коде.

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

    Конечно же DTO слой добавляет сложности проекту. Во первых лишний слой, лишние классы, во вторых нужны правила мапинга от одного сервиса к DTO и от DTO ко второму сервису. Поэтому это все оправдывается на крупных долгоживущих проектах с большим ожиданием изменений.

    Собственно по поводу конкретики применения я ответил: перед тем как отдать данные - мапите в DTO, получили DTO - сразу мапите в локальные модели. Больше внутри нигде их не используете, они только переносят данные.

    2. Фабрика нужна там, где нужен контроль создания объекта. Либо ограничение прав его создания, либо принятие решения создания по условию и.т.д.
    Ответ написан
    Комментировать
  • Есть ли польза от codewars?

    theobroma
    @theobroma
    javascript developer (ReactJS)
    2 года назад CodeWars помог мне выучить JavaScript. Сухая теория не заходила вообще, а вот с практикой совсем другое дело... Решал задачки 8-7 kyu. На уровнях выше начинаются уже не основы языка, а больше упор на алгоритмы, знание математики и т.д. На 7 уровне не должно возникать проблем точно.
    Пишу код для решение на locahost в своем редакторе или IDE. Дебажу в консоли браузера. Когда вижу, что результат похож на правду, копирую код с редактора в окно для решения CodeWars. Проганяю предложенные тесты. Если все ОК, то сабмит, а если нет, то смотрю результаты тестов и допиливаю решение.
    Результаты не открываю пока сам не решу. В топовых и хитрых решения других всегда разбираюсь.
    Не стоит сильно зацикливаться на определенной задачи, которая не получается... Возможно не хватает знаний языка программирования. Бывает, что не могу понять условие задачи как таковое... Можно немного заморочиться, но если не идет, то смело откладываю на потом. Неудачи снижают боевой дух, а это ничем не помогает.
    Ответ написан
    1 комментарий
  • С чего начать в функциональном программировании на js?

    Еще я понял, что ramda это самая близкая к фп библиотека , а другие что то типо либ общего назначения.

    Это так. В Ramda все функции каррированы из коробки, аргументы передаются в удобном для функционального стиля порядке, функции не мутируют данные, а создают новые копии.

    Подскажите с какой библиотеки лучше начать.

    Определённо, с Ramda.

    А может Elm?

    Если уже знаете JS то проще будет начать с Ramda. Хотя Elm жёстче в плане соблюдения правил функционального подхода.

    Еще такая проблема , что я обычно читаю документацию с плагином google translate и нормально понимаю смысл, но с фп у меня так не выходит (пытался читать документацию ramda и underscore). Может сталкивались с переводами документаций или их подобиями?

    Учите английский. Без него изучать программирование в любом случае затруднительно.

    Алсо, маст хэв для ФП в JS - Fantasy Land (можно добавить ещё Static Land). Но это следующий уровень, после того как освоите основные приёмы ФП и прочитаете пару статей о монадах, функторах и т.д.
    Ответ написан
    Комментировать
  • Как правильно вставлять в редактор vi текст из внешнего буфера?

    @brar
    Установите vim.
    Откройте файл:
    vim /etc/apt/sourses.list
    В режиме редактирования (кнопка i) ставите курсор туда, куда надо вставить скопированный в буфер текст и shift+insert (или среднее колесо мыши, но это если primary и secondary буферы одинаковые, это зависит от вашей среды). Жмете ESC (это выход из режима редактирования).
    А вообще почитайте туториалы по виму, и про Primary и Secondary буфферы в линуксе.
    Ответ написан
    6 комментариев
  • Почему не срабатывает событие resize?

    0xD34F
    @0xD34F
    События не срабатывают. Никакие и никогда. Срабатывают обработчики событий.

    по какой-то причине срабатывает только первый console.log()

    Так, первый, отлично. А второй какой? Это который в componentWillUnmount? Ну так правильно не срабатывает. Когда компонент будет удаляться из DOM - тогда и сработает. Или вы ждёте, что повторно сработает первый? - если так, то это абсурд.

    Всё работает так, как и должно. Вы сделайте вывод свойств width и height в render - увидите, что они изменяются при изменении размеров окна (или перенесите console.log в updateDimensions).
    Ответ написан
    Комментировать
  • Как убрать смещение страницы влево при появлении полосы прокрутки?

    Pongo
    @Pongo
    При помощи calc(100vw - 100%) можно вычислить ширину скроллбара (а если он не отображается, то будет 0). Идея: при помощи отрицательного margin-right увеличить ширину <html> на эту ширину. При этом появляется горизонтальная полоса прокрутки — ее скрываем.

    html {
      overflow-x: hidden;
      margin-right: calc(-1 * (100vw - 100%));
    }

    Пример. Нажатие кнопки "change min-height" скрывает\отображает скроллбар.
    Ответ написан
    8 комментариев
  • Reactjs Context API как изменить стейт при изменении размера экрана пользователя?

    RomReed
    @RomReed
    JavaScript, Flutter, ReactNative, Redux, Firebase
    import React from 'react';
    
    class ShowWindowDimensions extends React.Component {
      state = { width: 0, height: 0 };
      render() {
        return <span>Window size: {this.state.width} x {this.state.height}</span>;
      }
      updateDimensions = () => {
        this.setState({ width: window.innerWidth, height: window.innerHeight });
      };
      componentDidMount() {
        window.addEventListener('resize', this.updateDimensions);
      }
      componentWillUnmount() {
        window.removeEventListener('resize', this.updateDimensions);
      }
    }
    Ответ написан
    Комментировать
  • Когда использовать useCallback, useMemo и useEffect?

    @LEXA_JA
    useEffect - это хук, который позволяет использовать сайд эффект. В классах его аналогом было использование componentDidMount, componentDidUpdate и componentWillUnmount. В нем можно делать подписки, отправлять запросы управлять анимацией и т. д.
    const [data, setData] = useState(null);
    
    useEffect(() => {
      const controller = new AbortController()
      fetchData(controller.signal).then(setData)
    
      return () => controller.abort()
    }, [fetchData, setData])


    useCallback и useMemo предназначены для оптимизации. useCallback получает на функцию и массив аргументов, и возвращает одну и туже функцию, до тех пор, пока аргументы не изменились. useMemo отличается тем, что он возвращает не саму функцию, а результат её выполнения. По большому счету они являются взаимозаменямыми.
    Таким образом, useMemo используется для сохранения результатов тяжёлых вычислений, например обработка массива.
    const data = useMemo(() => array.map(mapper).filter(predicate).reduce(reducer), [array])

    А useCallback используется, когда важна постоянность ссылок на функцию. Например, когда мы передаём ссылку в компонент, который использует React.PureComponent или React.memo, или, когда функция используется в качестве аргумента в других хуках
    const handler = useCallback(() => {
      // что-то сделать 
    }, [])
    
    useEffect(() => {
      handler(value)
      // если не использовать useCallback, эффект будет срабатывать постоянно 
    }, [handler, value])
    Ответ написан
    Комментировать
  • Существует ли аналог cssFier для VSCode?

    @cupacabka Автор вопроса
    Нашел, если кому интересно HTML to CSS / LESS / SCSS
    Подхватывает все вложенные элементы.
    Ответ написан
    Комментировать
  • Пройти путь с 0(frontend)?

    понимание основ есть.

    Когда пройдешь:
    - курсы htmlacademy (там верстка, и интенсивы не советую, если только не можешь после курсов взять и сверстать макет то можно на интенсив)
    - прочитаешь learn.javascript.ru
    - основы программирования - hexlet
    - практика - codewars
    - дока по выбранному фреимворку и проекты для практики.
    Вот это будет понимание основ
    дальше https://roadmap.sh/frontend
    Может смотреть на YouTube как человек пишит код и повторять за ним?

    Да, практика решает в итоге.

    Блог новичка
    Ответ написан
    Комментировать
  • Можно ли дублировать строки в VS Code?

    AndrewHaze
    @AndrewHaze
    Умею гуглить яндексом
    Конечно можно
    Shift + Alt + Down или Shift + Alt + Up

    P.S. Файл > Настройки > Сочетания клавиш

    Там же можно добавлять свои клавиатурные команды. Для этого нужно нажать на ссылку keybindings.json и разместить свой код в правом окне, затем сохранить файл keybindings.json.

    Например, так можно добавить возможность менять регистр символов с помощью клавиш CTRL+SHIFT+U и CTRL+SHIFT+L:
    [
     {
        "key": "ctrl+shift+u",
        "command": "editor.action.transformToUppercase",
        "when": "editorTextFocus"
     },
     {
        "key": "ctrl+shift+l",
        "command": "editor.action.transformToLowercase",
        "when": "editorTextFocus"
     }
    ]
    Ответ написан
    4 комментария
  • Реально ли заниматься веб разработкой на планшете?

    bingo347
    @bingo347
    Crazy on performance...
    Самой большой проблемой станет отсутствие dev-tools во всех (известных мне) браузерах под android и iOS - iPad сразу в пролете, андроид планшеты можно попробовать прошить каким нить armbian, но скорее всего будут проблемы с драйверами. Но тут есть планшеты на win10, полноценных линуксах и т.д., да и собрать самодельный планшет из малинки - вопрос прямых рук.
    Так же немаловажный момент - это удобство. Маленький экран и тормоза ide из-за ограниченных ресурсов создадут не мало дискомфорта не только на планшете, но и на большинстве бюджетных ноутов.
    Ну и если рассматривать вариант планшет + клавиатура против ноута - ноут опять же будет удобнее.
    Ответ написан
    Комментировать
  • Реально ли заниматься веб разработкой на планшете?

    @aglgl
    Ну если только сурфейс купить.
    На андройде с док станцией я пробывал, не очень удобно, если просто сверстать что-то простое либо какую нибудь cms на хостинг ставить и настраивать, то нормально.
    Когда что-то более тяжёлое или нужен гит планшет не вариант.
    Но по халтуркам помотаться к заказчикам периодически хватало.
    Ответ написан
    Комментировать
  • Реально ли заниматься веб разработкой на планшете?

    FeNUMe
    @FeNUMe
    Конечно реально, но однозначно не эффективно. Это скорее вариант внести какие-то правки в проект пока ты в отпуске валяешься на пляже, чем инструмент для постоянной работы.
    Ответ написан
    Комментировать
  • Реально ли заниматься веб разработкой на планшете?

    @antonwx
    Более чем реально, да и на одном VS свет клином не сошёлся. Удобно ли - другой вопрос, а реально ли - однозначно да.
    Ответ написан
    Комментировать
  • Какой проект сделать front-end разработчику?

    @cema93
    WordPress разработчик
    Предлагаю присоединиться к моему проекту Центр прав призывника. Проект не коммерческий и ищет волонтеров с вашими умениями :)
    Ответ написан
    Комментировать
  • Как поставить Avocode на Ubuntu 19.10?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Вы используете только что вышедшую версию Ubuntu (спокойнее конечно сидеть на LTS, ну да ладно), которая связана с нестабильной веткой Debian, из которой недавно вырезали пакет gir1.2-gnomekeyring-1.0. Вероятно по этой причине он и не ставится (а разработчики Avocode еще не успели все у себя поправить и убрать его из зависимостей). Думаю, что для вас проще всего в этой ситуации будет воспользоваться "Easy way to install" в конце вашей инструкции, а не пытаться своими руками исправить проблему с традиционной установкой.
    Ответ написан
    Комментировать