• AWS vs GoogleCloud vs DigitalOcean – как выбрать облако?

    inoise
    @inoise Куратор тега Amazon Web Services
    Solution Architect, AWS Certified, Serverless
    Итак, для начала DigitalOcean - НЕ ОБЛАКО. Это просто набор связанных сервисов. Зайти в DigitalOcean очень просто, выйти тоже, все понятно и прозрачно но там даже горизонтального масштабирования нет. Это слегка прокачанные те же VPS-ки.

    Теперь по всему остальному. Есть золотая троица AWS/Azure/GCP, но тут начинают играть другие правила.
    1. Стоит обратить внимание на то что им действительно надо учиться и это занимает время. Чтобы сделать решение, а не поделку и не влететь на деньги месяца не хватит ибо там очень много всего.
    2. Я могу сказать что переезд из одного облака в другой возможен при двух условиях: вы пользуетесь только базовыми сервисам (вроде виртуалок, БД, S3) и у вас есть 2 архитектора с сильным пониманием этих облаков
    3. Два архитектора по тому что я не знаю ни одного такого человека кто потратил достаточно сил и вник сразу в несколько облаков достаточно глубоко. Я был там везде и в результате все-равно остановился на AWS, хотя Azure и GCP имеют свои преимущества
    4. Про сервисы - ехать в облако и не пользоваться особыми сервисами и фичами этого облака - дорого и глупо
    5. А самое интересное что сделать и мигрировать проект проще чем обучить людей и изменить подходы к прайсингу
    6. Миграция в облако и из облака - не делается по щелчку пальцев, особенно если есть много данных


    По AWS могу поделиться гайдами как туда ехать, да и у них Cloud Migration очень понятный раздел с документацией. Если сравнивать эти облака то:
    • AWS - serverless, cutting-edge solutions, прозрачная инфраструктура
    • Azure - экосистема от MS, прекрасный CosmosDB (но это скорее про цены)
    • GCP - глобальные ресурсы, BigData

    При этом большинство этих фич в том или ином виде есть в других облаках.

    И маленькая ремарочка по k8s. Если вы едете не в GCP то он вам не нужен. AWS и Azure сделали так что вы можете его туда удобно загнать, но это будет дороже. Тот же AWS ECS + Fargate куда удобнее и я не знаю тех System Engeneer что по собственному желанию пересаживались с этого на k8s
    Ответ написан
    8 комментариев
  • Есть ли смысл в покупке MacBook Air 256 8gb m1 or MacBook Pro 8gb m1 для веб-дизайна?

    lamer350
    @lamer350
    กำลังสูงสุด
    Все зависит от того как вы любите работать и чувствуете машину:
    figma - самая прожорливая по оперативке будет, у меня один проектик небольшой занимает 3-4gb ram
    Хром и вкладки все очень относительно, если к примеру у вас там будет открыт конструктор тильды на одной вкладке, он может потреблять и 1Гб (1 вкладка), так что тут не угадать.
    Иллюстратор под M1 только через розетту, Фотошоп в бете

    Если вы хотите все приложения держать открытыми постоянно оперативки будет мало.
    Mac будет использоваться своп, хоть он и быстрый но затупы на 1-2 секунды бывают, меня лично это напрягает и это не вариант (мое субъективное мнение)... Для кого то такая задержка - ничего, для меня - вечность)
    Ответ написан
    6 комментариев
  • Есть ли смысл в покупке MacBook Air 256 8gb m1 or MacBook Pro 8gb m1 для веб-дизайна?

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

    kawabanga
    @kawabanga
    Влад Поезжаев,
    Я бы купил и 8гб air на m1. Судя по тестам, 8 гб там работает прекрасно. Я готов переходить на M1 в целом. Но для себя купил бы 16 гб, чтобы обезопаситься.
    По поводу софта - пока не весь софт есть, но это лишь дело времени. Да и некоторый софт все равно можно заменить другими программами.
    Отметьте для себя, что 16гб оперативы это + 20 тыс рублей. Размажьте эту сумму на 5-6 лет, что вы будете пользоваться этим ноутом, и получится цена не больше кружки кофе.

    Сейчас я нахожусь в след ситуации:
    1) Macbook 15 который был у меня 6 лет - продан.
    2) Сижу на macbook 13 2017 жены с 8 гб оперативы. Страдаю но ок.
    3) Macbook 13 pro m1 вышел, но я люблю побольше диагональ.
    4) Macbook 16 pro m1x выйдет в июне.

    И вот сижу думаю, купить жене air m1 с 8 гб оперативы на замену старому ее маку, а сам буду ждать 16pro m1x,
    Либо не страдать фигней и купить pro m1 16gb и работать. Но диагональ если честно, сильно решает.
    Ответ написан
    7 комментариев
  • Как именно устроены session и cookies?

    @deliro
    1. Нет никакой синхронизации. Сервер может только указать клиенту, что ему нужно установить куку X в значение Y хэдером Set-Cookie и считать с пришедшего на сервер запроса куки (все куки отправляются в каждом запросе на сервер).
    2. Сессии могут храниться на клиенте (signed cookie session). При этом используется подпись куки с помощью HMAC, чтобы данные сессии не могли быть свободно изменены клиентом. Но обычно сессии хранятся на сервере. Тут выбор огромный: от баз данных и key-value хранилищ (Redis, например) до простых файлов. При этом, клиенту посылается кука ID сессии (так сервер идентифицирует юзера), которую злоумышленник может стащить. Таким кукам, дабы защитить юзеров от XSS, ставится флаг HttpOnly, который советует браузеру не давать эту куку скриптам вроде JS. В этом случае, стащить куку получится только завладев браузером, файловой системой юзера или через багу браузера.
    3. Смотри второй ответ. В некоторых случаях - да. Но редко.
    4. Можно передавать значение session id в строке URL (GET - параметром), вроде такого: example.com/some/page/?session_id=2af26905dcf31a1d... Некоторые сервисы используют это, как fallback вариант, однако, он очень небезопасен, т.к. любой XSS или простой безобидный JS вроде Яндекс.Метрика видит весь URL. Так что, посылаем юзера включать куки.
    Ответ написан
    4 комментария
  • У кого имеется рабочий стул Маркус из Икеи?

    @DES3
    Всего понемножку
    Маркус - оптимальное на мой взгляд рабочее кресло (не взирая на некоторые нюансы описанные далее). Удобная посадка с поддержкой поясницы, всей спины да ещё с подголовником. С некоторыми из моих брюк не очень дружит - ткань брюк (видимо скользкие сорта какие-то) по ткани кресла понемногу проскальзывает, поддержка поясницы пропадает и осанка нарушается. Хочется постелить противоскользящий коврик) Не разваливается как великое множество других офисных представителей. Брать надо тканевое, т.к. кожзам хоть и выглядит поначалу более привлекательно, но скорее всего не дышит, и пятая точка будет преть. Стоит вменяемых денег, остальные хорошие варианты стоят уже как правило значительно дороже и психологически неприемлемо :)

    Правда неприятно начал скрипеть через 4 года при ежедневной эксплуатации по 8 часов в будние дни. Буду пробовать смазать маслом, если не поможет, то к гарантии взывать.

    У Икеи ещё было подешевле невысокое офисное кресло с удобной посадкой и тоже с сетчатой спинкой, но сейчас оно в каталоге не находится.
    Ответ написан
    1 комментарий
  • Двухпанельный файловый менеджер Mac OS

    DevMan
    @DevMan
    Лучше ForkLift не встречал.
    Ответ написан
    Комментировать
  • Как составить план обучения html и css?

    SkiperX
    @SkiperX Куратор тега CSS
    основы в htmlacademy
    потом вот подробный план обучения
    webmasters.teamdev.com

    решает в итоге практика, бери psd и верстай, смотри как это делают в ютубе
    Ответ написан
  • Как получить chat id используя Telegram API?

    @reaget Автор вопроса
    Здесь написано как получить Id чатов Как получить peer id используя Telegram API?
    Сообщения у меня не удавалось получить до тех пор, пока я не указал параметр 'type'
    Вот решение:
    // chatId - это Id, которое мы получаем способом выше
    telegramApi.getHistory({
        id: chatId,
        type: 'user' // Вот этот параметр
    }).then(function(e) {
        // Делаем что-то с сообщениями
    })
    Ответ написан
    Комментировать
  • БЭМ для малых и средних проектов?

    Вот пример верстки выполненной на БЭМ для небольшого проекта https://github.com/alexbaumgertner/hunter-boat
    Там можно проследить коммиты и оценить трудозатраты.

    Лично я для себя из-за лени использую генераторы статичных сайтов, в частности middleman. Все равно, в основном заказчику на выходе надо отдать html/js/css/img в собранном виде, а какие там исходники его мало парят. Правда стараюсь соблюдать методологию БЭМ.

    Возможно потом перейду на сам БЭМ когда будет не лень донастроить виртуалку (я работаю под Windows с нодой там есть проблемы).
    Ответ написан
    2 комментария
  • Как побороть CORS в Nginx?

    yarkov
    @yarkov Автор вопроса
    Помог ответ? Отметь решением.
    И как обычно лучше оф.документации нет ничего ))
    https://enable-cors.org/server_nginx.html
    Ответ написан
    Комментировать
  • Покупка macbook pro 2018 vs 2019?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Flexgate в 2018 исправили, просто никому не сказали. Его удлинили на 2 мм. Пользуюсь почти полгода и из нареканий только стал подзависать тачбар при изменении звука при некоторых роликах на Ютубе и то что корпус таки мягче старых, но ограничилось парой точечных вмятинках на ребре ( видно так пользуюсь). С бабочкой проблем нет, не дул ее не разу - не залипает, нет левых срабатываний.

    Ждать 2019 можно. Ещё можно ждать 2020 и конца света. А смысл?
    Ответ написан
    Комментировать
  • Есть ли смысл использовать Immutable вместе с React?

    devellopah
    @devellopah
    у преимущества библиотеки immutable над Object.assign ( or spread operator ) есть имя - structural data sharing.
    Опять-таки всё сводится к увеличению буста. Если у вас настолько сложный проект, что эффективности нативных вариантов недостаточно - подключайте immutable смело. В противном случае - нет необходимости.
    Ответ написан
    Комментировать
  • Может ли работодатель в Slack читать переписку?

    Можно если тариф Plus. В стандартном тарифе тоже можно запросить полный экспорт, но придется указать причину, по которой администратору это потребовалось и заручиться согласием всех участников переписки либо предоставить юридические документы, подтверждающие законность экспорта этой информации.
    Ответ написан
    Комментировать
  • Как сделать запрос к API Яндекс.Диска?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    https://tech.yandex.ru/disk/api/concepts/quickstar...
    Тут же написано, в самом низу. В виде заголовка нужно передать токен.

    Полученный токен следует передавать в заголовке Authorization при каждом вызове API Диска, указывая тип токена перед его значением. Пример такого заголовка:
    Authorization: OAuth 0c4181a7c2cf4521964a72ff57a34a07


    А вот так можно передать заголовки с помощью jQuery.
    Ответ написан
    3 комментария
  • Поговорим про ReactJS и BEM, JSX и BEMJSON?

    veged
    @veged
    Fais ce que dois, advienne, que pourra
    БЭМ методология хорошо совместима с React.js — есть https://github.com/bem/bem-react-core и несколько видео докладов (например: https://youtu.be/NyUxGqBEa3Q https://youtu.be/ztDWggzH8W4).
    Ответ написан
    Комментировать
  • Какие вопросы задают на собеседовании?

    drno-reg
    @drno-reg
    см не кратко
    зачастую вижу как соискателя гоняют по тем вещам, которые используют именно так и именно в том месте, пытаясь найти сразу кандидата, на которого можно будет через 3 дня навесить задачи тех, которые работают не 1 год. Когда я принимал участие в подобного рода мероприятиях, я просто кандидату дал задачу, которую решал сам и посмотрел, что он с ней будет делать. В итоге он с ней справился. Далее мы побеседовали о его, как это сейчас модно говориться, бекграунде. Я дал свою обратную связь. В итоге сейчас этот человек работает и все довольны.
    Ответ написан
    Комментировать
  • Что можно считать глубокими знаниями в js?

    pm_wanderer
    @pm_wanderer
    junior-HTML
    Немного дополню, чтобы новички не пугались. А то страшилок много о том, что надо знать все, хотя в реальности, тех кто действительно "знает все" можно пересчитать по пальцам:

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

    Как работает V8 - опять же, достаточно общего представлени об event loop. Все остальное пусть остается скрыто и используется через API.

    Оптимизация кода под браузерные движки - в большинстве случаев вообще не надо.

    Утечки памяти - если умышленно не стрелять себе в ногу, то тоже никаких проблем с этим не будет.

    Написание быстрого кода - практически не нужно (он и так будет достаточно быстрый). Лучше сосредоточиться над написанием читаемого, тестируемого и поддерживаемого кода.

    К общему списку еще можно добавить паттерны проектирования. Это будет намного полезней, чем всякие техники спичечной оптимизации)
    Ответ написан
    40 комментариев
  • Что такое Redux простыми словами?

    jQuery "видит" весь DOM целиком. И манипулирует DOM-ом, доступ к которому предоставляет браузер. Но можно и по-другому.

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

    Затем отделим состояние от поведения и представления. Состояние можно описать статической структурой данных, JSON-ом, например. А поведение - это чистая функция, из предыдущего состояния и некоего события (действия) делающая следующее состояние. Представление же "знает", как визуализировать состояние. Можно этот принцип воспроизвести от самых мелких компонент (не имеющих потомков) в нашем дереве и до корня. Тогда весь жизненный цикл приложения можно изобразить как цепочку состояний от некоего начального и до текущего, ведомую событиями (действиями).

    Для того, чтобы это всё отобразить, не обязательно в ходе вычисления следующего состояния (или представления) сразу манипулировать DOM-ом. Можно построить из состояния и его представления фрагмент DOM-а, каким он должен получиться. А потом вычислить diff между этим построенным фрагментом (виртуальным DOM-ом) и реальным браузерным. И этот diff применить к реальному DOMу. Один раз. Получится быстро.

    Насколько мне известно (поправьте, если это не так), Redux заимствован из Elm-а. Elm - это экосистема и функциональный язык, компилируемый в JS, сделанный для того, чтобы фронтэнд можно было разрабатывать удобно, быстро и без runtime-ошибок. По синтаксису - это адаптация Haskell-a. Ключевым элементом Elm-а является как раз вот эта самая архитектура. Советую подробнее почитать в первоисточнике. https://guide.elm-lang.org/architecture/

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

    С точки зрения функционального программирования, при таком подходе текущее состояние является результатом функции leftFold, применённой к исходному состоянию, последовательности событий (действий), приводящих к текущему и функции, умеющей вычислять следующее состояние.
    Ответ написан
    Комментировать
  • Какой необходимый уровень знаний для junior React.js Разработчика?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    UPDATE: реальные тестовые задания и разборы здесь, ответы на все вопросы из поста в моем блоге об обучении react.

    не включая основы js

    Извините, но стандартная задача, про "напишите функуцию add, которая при вызове add(1)(2) вернет 3" - многих положила на лопатки =) Поэтому будьте готовы..

    React
    0) Какую проблему решает react ?
    1) Мгновенно ли срабатывает setState? Если нет, то как выполнить код, который 100% выполнится после того, как новый state будет установлен?
    2) Зачем многие постоянно пишут в constructor: this.FUNCTION_NAME = this.FUNCTION_NAME.bind(this) и отсюда вопрос вытекает чему равно this в разных местах вашего компонента...
    3) в каких методах жизненого цикла стоит выполнять xhr запросы? В каких стоит "обновлять state на основе props"?
    4) Что будет если вызвать this.setState в render методе компонента?
    5) зачем нужен componenWIllUnmount, приведите пример..
    6) Контролируемые, не контролируемые компоненты
    7) Как организовать роутинг в реакт приложении? (ответ: взять react-router - подходит, но было бы круто, если бы вы рассказали, как он примерно работает)*
    8) Зачем нужны propTypes? Что происходит с ними в production сборке?
    9) Как можно удобно "отлаживать" чужой код приложения, написанного на react (намек в сторону React devtools)
    ...

    Redux
    0) Какую проблему решает redux?
    1) Зачем многие создают типы действий NAME_REQUEST / NAME_SUCCESS ? А заодно, что такое "действие", а что такое "создатель действия"...
    2) Что такое редьюсер? Можете написать простой редьюсер без react/redux?*
    3) Для чего нужен redux-thunk? Как он работает? Напишите (можно псевдокод) асинхронный создатель действия (либо, если надоело говорить "терминами" - асинхронный aciton)
    4) Как компоненты приложения получают "пропсы" из "стора"?*
    5) Можно ли (и считается ли это нормальным) использовать state, если используется Redux?
    6) Почему в reducer'ax мы возвращаем новые объекты? Приведите пример, когда вы возвращаете новый объект, а когда тот же самый.
    6.5) А так же, "как в js вообще это работает?". Например:
    let obj1 { name: 'Test', age: 100 }
    let obj2 = obj1
    obj2.name = 'Test_new'

    Что будет в obj1, почему? В каких случаях объекты могут быть равны?
    7) Что возвращает функция connect (из react-redux)?
    ...

    Общее:
    0) package.json
    1) Webpack, gulp, etc...
    2) node.js
    3) promise

    Что-нибудь практическое:
    1) Как бы вы валидировали форму, если ошибки валидации приходят после submit'a ее на сервер..
    2) Почему не работает следующий код, сделайте чтобы работало
    ...
    На истину не претендую, но такие вопросы имели место быть на собеседованиях. В беседе можно многое разузнать дополнительными вопросами и так далее. Так же, если часть вопросов вам неизвестна - не беда, многие и на половину ответить не могут.

    p.s. возможно дополню...
    p.p.s. звездочкой отметил, на мой взгляд не самые необходимые для junior-собеседования вопросы.
    Ответ написан
    31 комментарий