• CSS: интересные возможности border-radius

    • Перевод
    • Tutorial
    Что можно сделать с помощью CSS-свойства border-radius? Автор материала, перевод которого мы публикуем, говорит, что больше, чем кажется на первый взгляд. В частности, речь идёт о том, что углы элементов, скруглённые с помощью этого свойства, могут иметь весьма интересную форму.


    Предлагаем поговорить о тонкостях использования border-radius.
    Читать дальше →
    • +28
    • 3,7k
    • 2
  • Mobx — управление состоянием вашего приложения

    • Перевод

    MobX это простое, опробованное в бою решение для управления состоянием вашего приложения. Этот туториал научит вас основным концептам MobX. MobX это автономная библиотека, но большинство используют ее в связке с React и этот туториал будет сфокусирован на этой комбинации.


    Основная идея


    Состояние (state ориг.) это сердце каждого приложения и нет более быстрого способа создания забагованого, неуправляемого приложения, как отсутствие консистентности состояния. Или состояние, которое несогласованно с локальными переменными вокруг. Поэтому множество решений по управлению состоянием пытаются ограничить способы, которыми можно его изменять, например сделать состояние неизменяемым. Но это порождает новые проблемы, данные нуждаются в нормализации, нет гарантии ссылочной целостности и становится почти невозможно использовать такие мощные концепты как прототипы(prototypes ориг.).


    MobX позволяет сделать управление состоянием вновь простым, вернувшись к корню проблемы: он делает невозможным инконсистентность состояния. Стратегия достижения этого довольно проста: убедится что, все что может быть вынуто из состояния, будет вынуто. Автоматически.

    Читать дальше →
  • Несколько советов по Angular

    Прошло уже достаточно времени с выхода обновленного Angular. В настоящее время множество проектов завершено. От "getting started" множество разработчиков уже перешло к осмысленному использованию этого фреймворка, его возможностей, научились обходить подводные камни. Каждый разработчик и/или команда либо уже сформировали свои style guides и best practice либо используют чужие. Но в тоже время часто приходится сталкиваться с большим количеством кода на Angular, в котором не используются многие возможности этого фреймворка и/или написанного в стиле AngularJS.


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

    Читать дальше →
    • +21
    • 3,3k
    • 8
  • Правила разработки в Яндекс.Здоровье

      Многим кажется, что Яндекс — это большая монолитная корпорация с жёсткими регламентированными процессами, однако это не так. Мы постоянно ищем новые направления, начинаем новые проекты и пробуем новые рынки. Сервис для онлайн-консультаций с врачом "Яндекс.Здоровье" — один из классических внутренних стартапов.

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

      Disclaimer:
      У стартапа есть свои особенности. Основная наша задача – делать максимальное количество экспериментов в единицу времени и выдавать продуктовые фичи с максимально возможной скоростью. При этом мы должны держать качество продукта на таком уровне, чтобы за него было не стыдно. [Место для флейма про отсутствующую у некоторых совесть]. Замечу, что высокая скорость доставки фич подразумевает в том числе поддержание достаточно высокого качества кода. Иначе продукт рано или поздно захлёбывается в багах.

      Все пункты ниже так или иначе выстраданы, практически на каждый есть кейс из реальной жизни.



      Качество кода и архитектура


      • Мы минимизируем время доведения фичи до продакшна при сохранении приемлемого качества.
      • Любая задача предполагает два решения: быстрое и правильное. Для любой фичи мы продумываем оба варианта так, чтобы была возможность апгрейдить быстрое решение до правильного, делая минимум ненужной работы «на выброс». Выкатив быстрое решение, некоторое время смотрим и понимаем, нужно ли правильное.
      • Критично. Зачастую, разница по времени между тем, чтобы «решить первым попавшимся способом, забив костыль» и «решить красиво и аккуратно» – десять минут. Поэтому мы всегда думаем, перед тем как писать.

      Читать дальше →
    • Эмиграция и всё о ней в телеграм-блогах

        «Хорошо там, где нас нет» — думают многие и годами живут на одном и том же месте. Но мир слишком разнообразен, чтобы всю жизнь провести в одной стране.

        image
        Карта каналов об эмиграции

        На помощь приходит Telegram, где в последние годы появилось уникальное сообщество авторов жанра «я — эмигрант».

        Каждый день очередной эмигрант решает вещать из своей страны и заводит канал в телеграме. Ребята (а 90% из них работают в IT или около IT индустрии) делятся полезными советами, общаются с читателями в чатах, пропагандируют свободу перемещения, рассказывают о плюсах и минусах эмигрантской жизни, честно и без прикрас выдают информацию, которую не найти в поисковиках.

        Какие на самом деле жители выбранной ими страны? Как найти жилье? Как устроится на работу? В чем отличия менталитета? Или даже Как проходят свидания? Как строится личная жизнь в другой стране? Такого нет в Google! :)

        Я собрал максимально большой список таких блогов, отсортировал по странам и делюсь с вами.
        Читать далее
      • Браузерные расширения для GitHub, которые увеличат продуктивность вашей работы



          Сейчас GitHub — самый популярный среди разработчиков сервис для совместной разработки программного обеспечения и размещения исходников в «облаке». Его используют как независимые разработчики, у которых в портфолио 1-2 приложения, так и технологические гиганты, включая Microsoft, Google и Facebook, у которых тысячи проектов.

          Собственно, рассказывать на Хабре о том, что такое GitHub, смысла нет; этот пост посвящен его браузерным расширениям, которые позволяют увеличить скорость и продуктивность работы. Вообще говоря, расширений этих очень много, поэтому мы выбрали те из них, которые используем в своей работе сами или которые порекомендовали коллеги.
          Читать дальше →
          • +32
          • 7,3k
          • 6
        • Собеседование по TypeScript: 20 вопросов и ответов

          • Перевод
          Язык TypeScript основан на том же синтаксисе и семантике, которые хорошо знакомы миллионам JavaScript-разработчиков. TypeScript даёт возможность работать с самыми свежими и ещё только появляющимися возможностями JS, включая те, которые имеются в ECMAScript 2015, и те, которые пока существуют лишь в виде предложений. Среди таких возможностей, например, асинхронные функции и декораторы. Всё это направлено на то, чтобы помочь разработчику в создании надёжных и современных приложений.

          TypeScript-программа компилируется в обычный JavaScript-код, который может выполняться в любом браузере или в среде Node.js. Этот код будет понятен любому JS-движку, который поддерживает стандарт ECMAScript 3 или более новый.



          Материал, перевод которого мы сегодня публикуем, содержит разбор двадцати вопросов, которые вполне могут задать тому, кто собирается пройти собеседование, претендуя на позицию TypeScript-программиста.
          Читать дальше →
        • Делаем «умный» контроллер для кондиционера на ESP8266

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

            Задача


            В квартире стоят четыре кондиционера, ими нужно научиться управлять:

            • Из веб-интерфейса (у меня это Home Assistant, крутящийся на отдельном Raspberry Pi, но в идеале хочется простого подключения к любой системе);
            • Голосом (Google Assistant подойдёт, потом подумаем об Алисе);
            • Скриптами;
            • Дёшево...

            Читать дальше →
          • Просто о сложном. Начало создания беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo

            • Tutorial

            Часть первая: Небольшая пошаговая инструкция по установке и первоначальной настройке «Умного дома»


            image

            Так случилось, что жизнь заставила приступить к частичной автоматизации квартиры, особенно в части её безопасности, краны, газ, вход, электричество, ну а потом уже всё остальное.

            Для себя определил следующие критерии:

            1. Место — квартира, где переделка (существенная переделка чего-либо не планируется).
            2. Возможность интеграции всех решений в единую систему УД с открытым кодом .
            3. Возможность постепенного расширения (масштабирования) функционала.
            4. По-возможности, минимальные затраты.
            5. По возможности покупка элементов системы в РБ или же в РФ, без всяких заказов с зарубежных сайтов. Пришел, посмотрел, купил.
            6. По возможности русскоязычный интерфейс, документация, поддержка.

            Для себя определил открытый протокол Z-wave, сердце системы – однопалатный компьютер Raspberry PI (как раз у меня по работе такой и был) с контроллером Razberry, работающем на протоколе Z-Wave+. Программное обеспечение выбрал MajorDoMo. И протокол и ПО удовлетворяют мои требования.

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

            Вот и решил немного восполнить этот пробел.
            Читать дальше →
          • У нас проблемы с промисами

            • Перевод
            Разрешите представить вам перевод статьи Нолана Лоусона «У нас проблемы с промисами», одной из лучших по теме из тех, что мне доводилось читать.

            У нас проблемы с промисами


            Дорогие JavaScript разработчики, настал момент признать это — у нас проблемы с промисами.

            Нет, не с самими промисами. Их реализация по спецификации A+ превосходна. Основная проблема, которая сама предстала передо мной за годы наблюдений за тем, как многие программисты борются с богатыми на промисы API, заключается в следующем:

            — Многие из нас используют промисы без действительного их понимания.

            Если вы мне не верите, решите такую задачку:

            Вопрос: В чем разница между этими четырьмя вариантами использования промисов?

            doSomething().then(function () {
              return doSomethingElse();
            });
            
            doSomething().then(function () {
              doSomethingElse();
            });
            
            doSomething().then(doSomethingElse());
            
            doSomething().then(doSomethingElse);
            

            Узнайте решение задачи
          • Простое объяснение принципов SOLID

            • Перевод


            Принципы SOLID — это стандарт программирования, который все разработчики должны хорошо понимать, чтобы избегать создания плохой архитектуры. Этот стандарт широко используется в ООП. Если применять его правильно, он делает код более расширяемым, логичным и читабельным. Когда разработчик создаёт приложение, руководствуясь плохой архитектурой, код получается негибким, даже небольшие изменения в нём могут привести к багам. Поэтому нужно следовать принципам SOLID.

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

            Чтобы понять принципы SOLID, нужно чётко понимать, как использовать интерфейсы. Если у вас такого понимания нет, то сначала почитайте документацию.

            Я буду объяснять SOLID самым простым способом, так что новичкам легче будет разобраться. Будем рассматривать принципы один за другим.
            Читать дальше →
          • Удаленный мониторинг и наблюдение за больными (пожилыми) людьми, на основе IP камеры Xiaomi MiJia Mi Home Security 360 °

            Видеокамера Xiaomi MiJia Mi Home Security 360 ° (на момент покупки цена в Минске, 140 рублей РБ (70 USD), сейчас снизилась до 120 рублей (60 USD). Была приобретена к выписке тещи из больницы после третьего инсульта.

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

            Возможно, опыт и практика применения этой камеры сможет кому-то помочь.

            Небольшая информация о видеокамере


            Более подробные технические данные, можно посмотреть на официальном сайте.

            image

            Дизайн камера мне понравился, изготовлена в форме шара на полукруглой подставке. Размеры — небольшие 115х78х78 мм.

            Угол обзора камеры составляет 360 градусов по горизонтали и 85 градусов по вертикали.
            Камера комплектуется блоком питания USB — micro USB 5В, 2 А., кабелем — длиной около 2 м, а также специальной площадкой для крепления. На коробке на задней стороне нанесены её технические характеристики на английском языке. Инструкции по подключению и эксплуатации в коробке не было.

            Для цели контроля за больным главные функции и возможности камеры:


            1. Возможность поворота камеры, как по горизонтали, так и по вертикали, и удаленное управление камерой. Отмечу бесшумность работы механизма.
            2. Возможность съемки при недостаточной освещённости и незаметность светодиодов подсветки.
            3. Детектор движения.
            4. Возможность двухсторонней аудио связи.
            5. Запись видео на флэш память или память смартфона (при подключении к одной сети).
            Читать дальше →
          • Как заработать свои первые 100$ в Google Play Market — мой опыт

              В этой статье я расскажу, как мне удалось заработать первые 100$ на моих приложениях в Google Play Market. Какие стратегии более успешные и на что стоит обратить внимание новичку.
              Читать дальше →
            • Переход с AngularJS на Angular: цели, планы и правила переноса элементов (1/3)


                В январе мы в Skyeng закончили перевод нашей платформы Vimbox с AngularJS на Angular 4. За время подготовки и перехода у нас накопилось много записей, посвященных планированию, решению возникающих проблем и новым конвенциям работы, и мы решили поделиться ими в трех статьях на Хабре. Надеемся, что наши заметки окажутся полезными структурно похожим на наш Vimbox проектам, которые только начали переезжать или собираются сделать это.

                Читать дальше →
                • +27
                • 8,2k
                • 4
              • Как получить более 3500 звезд на GitHub за неделю и зачем это нужно

                • Перевод
                Недавно мы запустили новый проект под названием Froala Design Blocks. Через несколько дней мы попали в список самых популярных репозиториев GitHub. Спустя неделю мы набрали 3500 звезд и в течении следующих двух стабильно собирали еще по 500 в сутки.



                В отличие от Twitter или Facebook, где можно набрать подписчиков или лайки через рекламные схемы, на GitHub звезды вам ставят только те, на кого ваш проект действительно произвел впечатление. Поэтому их число о многом говорит — это надежный показатель, который пробуждает доверие и влияет на решение людей, когда они думают, стоит ли пробовать продукт.

                Froala Design Blocks — не первый наш продукт, мы на GitHub уже несколько лет. Но я только недавно стала осознавать ценность звезд и вникать, каких правил нужно придерживаться, чтобы люди их ставили. Так что надеюсь, и новички, и ветераны найдут здесь что-нибудь новое для себя о том, как в полной мере использовать потенциал звезд для представления и усовершенствования своего проекта.
                Читать дальше →
              • Как я создавал прибыльный глобальный SaaS проект, от разработки до продаж

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

                Ищем идею


                Я всегда был сторонником правила, что поиск хорошей идеи — это не случайность, а обычный аналитический процесс. Есть много мест и способов найти проверенную реальностью идею, но поскольку однажды я твитнул это…
                Читать дальше →
              • [в закладки] PDF-версия статей про Bash-скрипты

                  Привет Хабр! Летом мы переводили цикл статей про Bash-скрипты — судя по отклику, статьи оказались для вас полезными. И, по многочисленным просьбам, мы решили сделать PDF-версию перевода.



                  Подробности под катом.
                  Читать дальше →
                • Мальта как новое направление для IT специалистов

                    Если вы подумали о солнце, море и яхтах — тогда вы все верно поняли.



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

                    Климат подходит для всех любителей солнца и моря. Почти всегда солнечно, даже зимой. Хотя раз в 3 года зима бывает очень дождливой, а при температуре +14 и ветре может быть довольно прохладно. Зато остров расцветает зеленью!
                    Читать дальше →
                  • Play with Docker — онлайн-сервис для практического знакомства с Docker



                      В конце прошлого года два капитана Docker представили свою разработку под названием Play with Docker (PWD) — «игровую площадку для Docker». Пользователям предлагается бесплатно поработать со сборкой и запуском Docker-контейнеров прямо в веб-браузере, а также выполнить лабораторные работы для знакомства с Docker с нуля и совершенствования своих навыков.
                      Читать дальше →
                      • +39
                      • 35,3k
                      • 6
                    • От b2b-приложений к массовому сервису по всему миру


                        Привет, Хабр! Меня зовут Евгений Лисовский, я руковожу проектом MAPS.ME — это международный проект, интересный и очень амбициозный. Наша задача — конкурировать с Google, Apple и несколькими компаниями второго эшелона. Сегодня я кратко расскажу о своём трудовом пути, чтобы затем подробнее остановиться на самых интересных этапах.


                        До института я подрабатывал, собирал компьютеры на заказ. А свой компьютер у меня появился в 1995 году, в 13 лет — спасибо родителям, это было реально очень круто. В институте я начал сам изучать PHP, MySQL, соорудил собственный движок для интернет-магазина. Сделал три сайта, брал по 300 долларов за каждый. С 2004 года я работал в международной компании Radmin.com, которая создаёт b2b-продукт для удалённого управления компьютерами, там я провёл шесть лет. Потом ломанулся в стартапы: KupiBonus, детские товары BabyBoom. Там было интересно! Важны не только успешные проекты, но и фейлы: надо хорошо анализировать, почему они происходили. Потом был Litres. Очень интересный бизнес — продавать электронные книги при уровне пиратства 96 %. В 2015 году мы заработали 15 млн долларов, с 2011 года выручка выросла в 18 раз. Затем я вместе с партнерами запустил собственный проект MoikaMoika.ru. Не то чтобы основатели сразу стали миллионерами, но это интересный опыт. Проект жив и развивается. А дальше про всё это — более подробно.

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