• Как передать ссылку на объект в качестве compileContext?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    Angular HTML compiler
    Вот компонент которому можно передать динамический темплейт в строке и объект с данными, В проде тоже работает, там в главном модуле нужно один раз прописать модуль для jit
    Ответ написан
    Комментировать
  • Как сделать табы на Angular подобным образом?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    Посмотрите в этом направлении https://www.npmjs.com/package/@codehint-ng/tabs
    Тут можно что угодно помещать в заголовки и контент табов можно размещать в произвольных компонентах в произвольных местах.
    Ответ написан
    Комментировать
  • Удаленщики развиваются медленнее?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    По своему опыту могу сказать, что при переходе на удалённую работу(10 лет) из офиса(7 лет) мое развитие и производительность увеличились в разы.
    1) В офисе ты можешь ничего не делать, а просто показывать лицо и с умным видом рассуждать о полиморфизме. На удалёнке тебя никто не видит, а видят только твои результаты- это обязывает шевелиться быстрее и только по делу.
    2) В офисе ты слишком призязан к месту и организации, зачастую тебя берут на какой нибудь вырост, а в последствии могут дать поддерживать старую программку на фортране или на бейсике, или сунут печатать документы и рисовать рисунки и т.п. и ничего не скажешь. На удалёнке тебе легко поменять проект, если закончились твои задачи, ты смотришь на работу не как на что-то вечное и стабильное, а как на проект, на который тебя взяли из-за определенных скиллов, под конкретные задачи и от тебя ждут конкретные результаты.
    3) В офисе тебя отвлекают разговорами, совещаниями, теннисом и т.п., купят тот стул и комп, который купят, а не который ты хочешь, на удаленке у тебя отдельная комната - как минимум, кресло и мощный игровой ноут (легко поднимающий виртуальные машины или докер-контейнеры), которые ты сам себе выбрал.
    4) Да, экономия на времени, дороге, спорте, месте жительства само собой.
    5) В офисе обучение предлагается/навязывается, но так как вроде положение там стабильное то и оно не так и хочется прям учится, на удалёнке ты понимаешь что это твое конкурентное преимущество и без обучения никак, ты ищешь, анализируешь, что в тренде и больше востребовано, и подгоняешь свои скилы под общие требования рынка, а не конкретной организации.
    6) в офисе не особо поднимают тебе зарплаты типа никуда не денешься, а попросить неудобно, на удалёнке ты с каждым новым проектом пересматриваешь свою цену и приобретенный опыт. (ну хотя здесь немного вру, в офисе повышали нормально, после удачных релизов )

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

    И да... в офисе, мне сказали сразу, что тебя наняли решать задачи, а не отвлекать коллег, так что на то, что там кто-то делиться опытом, мне наверно не повезло.
    Ответ написан
    6 комментариев
  • Что такое Angular простым языком?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    Да ангуляр-приложение представляйте как приложение работающее на машине пользователя, как десктопное или мобильное приложение. Только оно крутится в экосистеме браузеров, а не операционных систем.
    Ответ написан
    Комментировать
  • Как защитить авторизацию в реакте от ручного добавления левого токена?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    Если будет левый токен, то при навигации по закрытым страницам вы же все равно какие то данные запрашиваете. Токен передается серверу в каждом таком запросе в хедере (данные закрытых страниц должны быть защищены на сервере), и если токен левый вам сервер вернёт ошибку 401, и если вы ее получили то делайте редирект на логин страницу или на страницу ошибки 401 и удаляйте токен.
    Ответ написан
    1 комментарий
  • Как встроить чат на angular в сайт написанный на yii2?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    Не слушайте никого и используйте ангулар где хотите, хоть в статичных страницах, хоть в других фреймворках. Смотрите сюда, ангуляр крут Angular Elements
    Ответ написан
    1 комментарий
  • Можно ли вытащить поля из объекта, основываясь на массиве строк?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    // Объект
    const obj = {
       a: 1, b: 2, c: 3, d: 4, e: 5
    }
    
    // Массив названий полей, которые нам нужны
    const arrayOfRequiredFields = [ 'a', 'b', 'd' ]
    
    
    const resObj = Object.keys(obj).reduce(
     (acc, key) => arrayOfRequiredFields.some(field => field === key) ? {...acc, key: obj[key]} : acc
    , {});
    Ответ написан
    Комментировать
  • Почему такая ошибка as been blocked by CORS policy?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    У вас в браузере Chrome установлено левое расширение, скорее всего из неофициальных источников, malware, которое пытается отправлять данные вашей активности в браузере в Яндекс. А хром его блокирует. Зайдите в расширения хрома и удалите/отключите его.
    Это не вирус, но что то нехорошее это расширение делает: chrome-extension://mdpljndcmbeikfnlflcggaipgnhiedbl

    Как удалить расширение в Google Chrome
    Ответ написан
  • Как сделать перебор массива с условием в JS?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    if (!stop_list.some(word => name.indexOf(word) !== -1)) {
       console.log(name);
    }


    Или так немного подлиннее, но подробней и фиксить такое удобнее, если что
    const isConsistWord = (str, word) => str.indexOf(word) !== -1;
    const isConsistFromList = (str, list) => list.some(word => isConsistWord(str, word));
    
    var name = 'Овощное рагу из яблок';
    var stop_list = ["Ябл", "Апел", "Гру"]
    if (!isConsistFromList(name, stop_list)) {
       console.log(name);
    }
    Ответ написан
  • Стоит ли обучаться работе с Linux frontend разработчику?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    Ваше понимание линукса компаниям не нужно, Иногда компаниям (если нет девопса в штате) нужно чтобы вы развернули свой фронтенд на хосте и прицепили к нему домен, чтобы пользователи смогли увидеть результаты вашего труда как фронтендера. И тогда небольшое понимание линукса станет очень нужно вам.

    А вообще это редко бывает в компаниях, чтобы фронтендеру надо было деплоить свой продукт, скорее это просто будет приятный бонус если вы будете это уметь.
    Ответ написан
    Комментировать
  • Как установить ssl сертификат на Ubuntu + docker?

    mazhekin
    @mazhekin Автор вопроса
    Frontend, Backend Web Developer
    Все разобрался, создал один прокси-контейнер nginx туда смаунтил конфиг nginx и сертификат.
    Спасибо ребятам из reg.ru помогли настроить сертификат. (как оказалось это не сложно, но я забыл как)
    В docker-compose создал сеть типа nginx_net.
    И потом каждый новый контейнер, если мне нужно его выставить на новом порту, настраиваю не на внешний порт, а на сеть nginx_net. А внешний порт открываю в прокси-контейнере.

    Таким образом, сертификат проброшен только в один контейнер, а остальные контейнеры видят только локальную сеть докера nginx_net и нет необходимости каждый контейнер настраивать на внешние порты, ssl-сертификаты, домены и т.п.
    Ответ написан
    Комментировать
  • Наименование вакансии?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    Это девопс инженер, а не техлид

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

    Например, когда человек называет свою специализацию сразу понятно чем человек занимается на проекте, то ли это девопс-инженер, или ux-дизанер, или скрам-мастер, тестировщик, бекенд-разработчик, фронтенд-разработчик. Вопросов нет, понятно чем люди занимаются и за что отвечают. Техлид или тимлид, обычно туманно и непонятно объясняет свою позицию на проекте и владеет всем по чуть-чуть, но ничего глубоко и профессионально.
    Ответ написан
    Комментировать
  • Когда заказчик просит просто дописать?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    Законченный, якобы, проект с кривым кодом(архитектурой) - это как дом с кривым фундаментом, зачастую у него не то что низкая, у него отрицательная стоимость. То есть с нуля действительно дешевле переписать будет. Но как избежать повтора ситуации (когда вроде бы все готово, но по мелочам ничего не работает)? Для этого нужно заказчику или руководителю проекта добиватся законченных изолированных микро-решений на каждом участке (на каждой форме - диалоге - старнице). Нужно не боятся и менять первоначальные решения (просить дополнять или изменять функционалность) и смотреть как програмист будет подстраиватся под изменившиеся бизнес-требования (это реальные ситуации которые будут возникать в промышленном использовании продукта от пользователей). Если программист застревает - это и есть реальная скорость разработки проекта и признаки что проект не будет доведен до конца и выведен в эксплуатацию. А то что заказчику. там "архитекторы" накидывают код, и говорят что там все сделано и надо только дописать - это разработка нулевая или даже с минусовой стоимостью.

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

    Ну начинается проект все ок. Программист пишет - пишет вроде бы начинают появляться рабочие экраны или работающий функционал, но он не следит за чистотой кода, игнорит или не знает рекомендованные стайлгайды, стиль кода постоянно меняется, все накручивается на базовых примитивах типа for-if, нарушаются декомпозиционные сущности, рефакторинг собственного кода (для дальнейшего облегчения понимания) отсутствует (главное чтоб работал). Постоянно его костылит. И код превращается в кучу крепко завязанного, запутанного говна. Попытки внести фиксы или дополнительный функционал в такой код приводят к ещё большим проблемам. Причем снаружи - это действительно выглядит как будто что то не работает по мелочам. Но поддержка и развитие такого проекта останавливается и автору коду уже невмоготу с ним работать, потому что петля этого монолита уже крепко затянута. И человек либо тянет время и просит нанять ещё разработчиков, либо просто уходит на "лучший офер". Заказчик думает что там осталось совсем чуть чуть. И любая попытка погрузить нового программиста в этот проект проваливается.

    Объясняйте заказчику, что код очень сильно запутан. Приводите упрощенные примеры запутанности и приводите примеры их решения. Воспринимайте этот запутанный проект - как челендж для себя. Думайте о том, что если вы его распутаете, поблочно перепишете и разложите все по полочкам, ваша стоимость увеличится в разы как специалиста. Оцените свои силы, научитесь жёсткому параллельному рефакторингу вместе с текущими задачами, декомпозируйте код на части, изолируйте части кода. Заказчику не произносите слово "рефакторинг". А писать с нуля - это не вариант. Вы просто протянете время и не факт, что не придёте к тому же, что сделал предыдущий разработчик. И потом свалите. Лучше научитесь плавно метаморфизировать проект при этом выполняя текущие задачи.

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

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

    Да... работа такая у программиста запутанное(сложное) делать понятным(простым), а не наоборот.
    Ответ написан
    Комментировать
  • Как установить Ssl сертификат на чистую ubuntu 18 минимальными усилиями?

    mazhekin
    @mazhekin Автор вопроса
    Frontend, Backend Web Developer
    этот вопрос лучше удалить, я его не точно сформулировал тут точнее Как установить ssl сертификат на Ubuntu + docker?
    Ответ написан
  • Стоит ли принимать приглашение на работу?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    По-моему вы тут нагородили проблем из ничего. Из вами написанного вывод: ни в чем не уверен, ничего полностью не знаю, нет опыта, предлагают синицу в руках, а вы думаете может поболтаться ещё без работы и без опыта и искать какие то коммерческие рельсы. Там не спокойные рельсы, а очень высокая конкуренция особенно среди джуниоров. Конечно соглашайтесь на текущее предложение, сейчас вы никто с дипломом, а после пары лет будете специалист с опытом, и вас коммерческие рельсы сами найдут. Тем более, что опыт работы программистом в Минобороны для коммерческих рельс звучит впечатляюще.
    Ответ написан
    Комментировать
  • Какие книги посоветуете для будущего Team Lead'a?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    В сторону тимлида не надо развиваться - это промежуточное состояние, неопределившегося пока специалиста - и не программист (зачастую программировать уже не охота и начинают утрачиваться программистские скилы), и не управленец (не успевает освоить нужные знания по управлению), просто пока думает куда развиваться дальше, либо продолжать программировать, проектировать ПО и развиваться сильным техническим спецом (айти архитектура), либо углубляться и переходить в профессиональное управление разработкой и становиться скрам-мастером. Профессии будущего.
    Ответ написан
    Комментировать
  • Как правильно построить очередность выполнения кода?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    Заверните в промисы и устанавливайте очередность какую пожелаете.
    image$ = new Promise((resolve) => {
     $('.image').load(() => {
      alert ('2'); 
      resolve();
     });
    });
    
    alert1$ = new Promise(
    (resolve) => {
     alert(1); resolve();
    })
    
    alert3$ = new Promise....
    
    // желаемую очередность установите тут
    image$.then(() => { 
     return alert1$;
    }).then(() => {
     return alert3$;
    }).then(() => {  });
    Ответ написан
  • Насколько обоснованы замечания по тестовому заданию?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    Да не переживайте, это обычная ситуация, это скорее всего случай когда валится проект, руководство ищет выход из кризиса, какому нибудь лиду предлагает кандидатов, а он упирается и отсеевает всех, чтобы все от него зависело. А если вы ещё и знания показываете вам вообще туда дорога закрыта. В крайнем случае там может появится очень сильно лояльный джун на которого потом повесят ответственность за весь факап (типа лучше него невозможно спецов найти). И ничего по большому счету тут сделать нельзя, пока все не лопнет, и не поменяют всех вместе с лидом.
    Ответ написан
    Комментировать
  • Что вы делаете с программистами, которые завалили спринт?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    Не спешите, пройдите еще пару-тройку спринтов, выясните реальную скорость команды (https://www.scruminc.com/velocity/) быть может завалили спринт не потому что плохо работали, а ошиблись в оценках. Декомпозируйте с командой большие таски, на более мелкие. Их легче оценить точнее. А таск трекер вам их просуммирует автоматически и вы будете видеть картину в целом. Проводите дейли статусы и выясняйте какие препятствия есть у разработчиков и какой прогресс за один день происходит (что сделано вчера и планируется сегодня). Более плотно работайте с командой. Если команда проигрывает постоянно, и ничего не улучшается, в первую очередь меняют тренера, если он не смог настроить или пересобрать команду так, чтобы она выигрывала.
    Ответ написан
    Комментировать