• Типичное использование Observable объектов в Angular 4

      Представляю вашему вниманию типичные варианты использования Observable объектов в компонентах и сервисах Angular 4.



      Подписка на параметр роутера и мапинг на другой Observable


      Задача: При открытии страницы example.com/#/users/42, по userId получить данные пользователя.


      Решение: При инициализации компоненты UserDetailsComponent мы подписываемся на параметры роутера. То есть если userId будет меняться — будер срабатывать наша подписка. Используя полученный userId, мы из сервиса userService получаем Observable с данными пользователя.


      // UserDetailsComponent
      
      ngOnInit() {
        this.route.params
          .pluck('userId') // получаем userId из параметров
          .switchMap(userId => this.userService.getData(userId))
          .subscribe(user => this.user = user);
      }

      Читать дальше →
    • Как я создавал прибыльный глобальный SaaS проект, от разработки до продаж

      • Tutorial
      Некоторые люди здесь знают меня как основателя двух прибыльных SaaS проектов и автора популярных статей о них (статья про Postio, статья про Menumake). В этом тьюториале я расскажу о том как я, обыкновенный разработчик, в одиночку создавал свой первый глобальный проект и что из этого получилось (TL;DR: хеппи-энд и первые продажи). Ну и заодно пробежимся по всем проблемным вопросам, начиная о том как найти неконкурентную и гарантированно прибыльную идею (оставим создание следующего Гугла более амбициозным и умным людям), и заканчивая тем, как принимать платежи глобально, находясь при этом в России. Летс гоу.

      Ищем идею


      Я всегда был сторонником правила, что поиск хорошей идеи — это не случайность, а обычный аналитический процесс. Есть много мест и способов найти проверенную реальностью идею, но поскольку однажды я твитнул это…
      Читать дальше →
    • It's a (focus) Trap

        Люди которые пишут стандарты — очень хитро устроились. Им достаточно написать как должно все хорошо работать, а дальше уже не их проблемы.

        Примерно так и получилось с тем «как должны работать диалоги», точнее «правильные» с точки зрения a11y модальные диалоги.

        В описание к dialog role на MDN все написано очень просто:

        • The dialog must be properly labeled
        • Keyboard focus must be managed correctly

        Проблема в том, что MDN забыла еще об одном важном пункте, а все остальные забыли про один из сказанных – про то, что модал не должен выпускать фокус из своих рук. Активный элемент надо посадить под замок. Не дать ему сбежать из нашей ловушки.


        Это будет настоящий детектив!
      • Как я проходил собеседования на позицию Junior .Net Developer

          Приветствую всех. Сегодня расскажу вам как я проходил собеседования в Москве на позицию .Net Developer. Усиленно готовился к собеседованиям месяц, целыми днями сидел и смотрел вопросы и пытался отвечать на них, а также читал книжки по С#. В статье привожу интересные задачки и вопросы, которые мне задавали в разных компаниях в Москве. Заранее скажу, что я попал в ту компанию, в которой хотел. Я прошел 4 собеседования в этой компании и меня наконец то взяли! Много статей было прочитано в частности здесь и надеюсь, что эту статью тоже будут читать начинающие Net разработчики и спрашивать все в комментариях.

          Кому интересна тема прохождения собеседований, прошу под кат!
          Читать дальше →
        • Погружение в CSS: метрики шрифтов, line-height и vertical-align

          • Перевод
          image

          line-height и vertical-align — это простые свойства CSS. Настолько простые, что большинство из нас уверены, что понимают, как они работают и как их использовать. К сожалению, это не так — на самом деле они, пожалуй, являются самыми сложными свойствами, поскольку играют важную роль в создании малоизвестной особенности CSS под названием «строчный контекст форматирования» (inline formatting context).

          Например, line-height можно задать в виде длины или безразмерного значения, но его значение по умолчанию — normal (стандартное). Хорошо, но что значит «стандартное»? Зачастую пишут, что это (как правило) 1, или, может быть, 1,2. Даже в спецификации CSS нет четкого ответа на данный вопрос.

          Нам известно, что безразмерное значение line-height зависит от значения font-size, но проблема в том, что font-size: 100px выглядит по-разному для разных гарнитур. В связи с этим возникает вопрос: всегда ли line-height будет одинаковым или может различаться? Действительно ли это значение находится в промежутке от 1 до 1,2? А как vertical-align влияет на line-height?

          Давайте углубимся в не самый простой механизм CSS…
          Читать дальше →
          • +28
          • 8,9k
          • 9
        • Стоимость недвижимости на тепловых картах

          В статье рассказано о процессе создания тепловой карты цен по продаже недвижимости для Москвы и Санкт-Петербурга.


          Тепловая карта цен Москвы


          Меня зовут Дмитрий, я программист из Санкт-Петербурга и у меня есть хобби — это портал по недвижимости которым я занимаюсь в свободное от работы время вот уже почти 5 лет. Сайт авторский, и это дает достаточный уровень свободы для экспериментирования и реализации любых идей на нем. И одной из давних идей было создание тепловой карты цен.

          Читать дальше →
        • Анатомия запросов GraphQL

          • Перевод

          Джентльменский набор терминов


          Новый стандарт получения данных GraphQL стал популярен совсем недавно. Сейчас активно обсуждается развитие этой технологии, появляются все новые инструменты. Одно из достоинств GraphQL – он дает команде разработчиков универсальный язык для описания того, какие данные доступны в API. Но в каких терминах обсуждать сам язык запросов и технологию в целом?


          Спецификация GraphQL содержит почти исчерпывающий набор терминов по всем аспектам GraphQL. Но спецификация довольно объемна. В этой статье мы на конкретных примерах узнаем наиболее важные понятия и термины, которых достаточно для обсуждения GraphQL на уровне специалиста.

          Читать дальше →
        • Скрытые послания в именах свойств JavaScript

          • Перевод
          Для тестирования код нужно выделить и скопировать прямо из твита. — прим. пер.

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

          Вот тот сниппет:



          Что бы вы ожидали от него?

          Здесь используется цикл for in, который проходит через перечислимые свойства объекта. Поскольку указано только свойство A, можно предположить, что будет показано сообщение с буквой А. Ну… я ошибался. :D
          Читать дальше →
        • Унифицированный язык стилей

          • Перевод


          В последние годы мы наблюдали расцвет CSS-в-JS, в основном развивавшийся сообществом React. Конечно, процесс сопровождался спорами. Многие, особенно уже хорошо знакомые с CSS, смотрели на эту инициативу с недоумением.


          «Зачем кому-то писать CSS в JS?
          Конечно, это ужасная идея!
          Им бы просто выучить CSS!»


          Если такова была ваша реакция, читайте дальше. Мы поговорим о том, почему написание своих стилей в JavaScript в конце концов не является ужасной идеей, и почему целесообразно наблюдать за быстрым развитием этой технологии.

          Читать дальше →