• Основы React: всё, что нужно знать для начала работы

    • Перевод
    Хотите узнать о том, что такое React, но вам всё никак не выпадает шанс изучить его? Или, может быть, вы уже пробовали освоить React, но не смогли толком понять? А может, вы разобрались с основами, но хотите привести в порядок знания? Эта статья написана специально для тех, кто положительно ответил хотя бы на один из этих вопросов. Сегодня мы создадим простой музыкальный проигрыватель, раскрывая основные концепции React по мере продвижения к цели.

    image

    Разобравшись с этим материалом, вы освоите следующее:

    • Компоненты React.
    • Рендеринг ReactDOM.
    • Классы компонентов и функциональных компоненты.
    • JSX.
    • Состояние (state).
    • Обработка событий.
    • Асинхронный метод setState.
    • Свойства (props).
    • Ссылки (refs).

    Это — практически всё, что нужно знать для того, чтобы создавать и поддерживать React-приложения.
    Читать дальше →
  • Инструкция: что делать, если вы не успеваете к дедлайну

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


      Читать дальше →
      • +6
      • 12,5k
      • 8
    • Алгоритм выбора location в Nginx

        Алгоритм выбора location обязателен к знанию при настройке nginx. Тем не менее, на официальном сайте nginx (на 2018 год) не сказано ни слова про алгоритм выбора в случаях, когда какие-то location'ы вложены друг в друга, а в статьях в интернете приводятся в корне неверные алгоритмы. В статье также будет дан пример уязвимого конфига.
        Читать дальше →
      • Лабораторная работа: введение в Docker с нуля. Ваш первый микросервис

        • Tutorial
        Привет, хабрапользователь! Сегодня я попробую представить тебе очередную статью о докере. Зачем я это делаю, если таких статей уже множество? Ответов здесь несколько. Во-первых не все они описывают то, что мне самому бы очень пригодилось в самом начале моего пути изучения докера. Во-вторых хотелось бы дать людям к теории немного практики прямо по этой теории. Одна из немаловажных причин — уложить весь накопленный за этот недолгий период изучения докера опыт (я работаю с ним чуть более полугода) в какой-то сформированный формат, до конца разложив для себя все по-полочкам. Ну и в конце-концов излить душу, описывая некоторые грабли на которые я уже наступил (дать советы о них) и вилы, решение которых в докере просто не предусмотрено из коробки и о проблемах которых стоило бы задуматься на этапе когда вас распирает от острого желания перевести весь мир вокруг себя в контейнеры до осознавания что не для всех вещей эта технология годна.

        Что мы будем рассматривать в данной статье?

        В Части 0 (теоретической) я расскажу вам о контейнерах, что это и с чем едят
        В Частях 1-5 будет теория и практическое задание, где мы напишем микросервис на python, работающий с очередью rabbitmq.
        В Части 6 — послесловие
        Читать дальше →
      • Ищем имена с опечатками в PostgreSQL

          Все началось с того, что мне нужно было разработать поиск пациентов для одной внутренней медицинской системы. Логика работы была в том, что если мы не нашли человека в системе, то его нужно создать (а дубли пациентов плодить нельзя). В связи с этим одной из подзадач стала реализация поиска людей с учетом опечаток в их именах. Ну а поскольку я люблю PostgreSQL (а когда в руках у тебя молоток, то все похоже на гвозди), не сложно угадать, на чем я решил реализовать поиск с опечатками…


          Читать дальше →
        • DockStation. Почему мы решили сделать этот проект

            Работа с Docker не самая простая задача. В этой статье хотелось бы рассказать что нас подтолкнуло с созданию DockStation проекта и что у нас уже реализовано на данный момент.

            Начало


            Я работаю разработчиком уже больше 8 лет, и для меня всегда была болью настройка dev окружения для разработки при переходе на другую OС или смене рабочей машины.
            Читать дальше →
          • Курс молодого бойца PostgreSQL

            • Tutorial


            Хочу поделиться полезными приемами работы с PostgreSQL (другие СУБД имеют схожий функционал, но могут иметь иной синтаксис).

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

            Данный материал будет полезен тем, кто полностью освоил базовые навыки SQL и желает учиться дальше. Советую выполнять и экспериментировать с примерами в pgAdmin'e, я сделал все SQL-запросы выполнимыми без разворачивания каких-либо дампов.

            Поехали!
            Читать дальше →
          • Свежий KDE от разработчиков плюс стабильность Ubuntu 16.04 -> KDE Neon


              Я думаю, что никто из Linux-адептов не будет отрицать большой вклад в развитие экосистемы, который внесла Ubuntu. Да, ресурсов на многое не хватает, проекты нередко забрасываются на половине пути. Но, как мне кажется, они сумели достичь прекрасного баланса между стабильностью и свежестью пакетной базы. Какая-то очень правильная грань между выдержанностью благородной плесени у Debian и непрерывным поиском того, что отломалось при обновлении в Arch Linux. Хочется просто работать? Сидим на LTS версиях дистрибутива с дефолтными репозиториями. Нужен какой-то специфический софт? Подключаем PPA от разработчика. Поставили свежее железо, нужна поддержка в ядре, но с LTS уходить не хочется — используем LTS Enablement Stacks (HWE).

              Не всем нравится дефолтная оболочка Unity, но тут к услугам пользователя все семейство Ubuntu Flavours. Я в своем выборе остановился на KDE и Kubuntu соответственно. Все было хорошо, но сидение на LTS релизах неизбежно вызывает тягу к приключениям и ломанию системы. И тогда я пошел на поиски чего-то нового.
              Читать дальше →
            • Анализ тарифов на виртуальные серверы

                Предлагаю обзор хостеров по версии Поиск VPS. Количество компаний в каталоге на момент написания обзора — 198, количество тарифов на виртуальные серверы — 1798. Практически все хостеры — русскоязычные.


                Читать дальше →
                • +17
                • 9,5k
                • 5
              • OpenResty: превращаем NGINX в полноценный сервер приложений

                  Мы вновь публикуем расшифровку доклада с конференции HighLoad++ 2016, которая проходила в подмосковном Сколково 7—8 ноября прошлого года. Владимир Протасов рассказывает, как расширить функциональность NGINX с помощью OpenResty и Lua.

                  Всем привет, меня зовут Владимир Протасов, я работаю в Parallels. Расскажу чуть-чуть о себе. Три четверти своей жизни я занимаюсь тем, что пишу код. Стал программистом до мозга костей в прямом смысле: я иногда во сне вижу код. Четверть жизни — промышленная разработка, написание кода, который идёт прямо в продакшн. Код, которым некоторые из вас пользуются, но не догадываются об этом.

                  Чтобы вы понимали насколько всё было плохо. Когда я был маленьким джуниором, я пришёл, и мне выдали такие двухтерабайтные базы. Это сейчас тут у всех highload. Я ходил на конференции, спрашивал: «Ребят, расскажите, у вас big data, всё круто? Сколько у вас там базы?» Мне отвечали: «У нас 100 гигабайт!» Я говорил: «Круто, 100 гигабайт!» А про себя думал, как бы аккуратненько сохранить покерфейс. Думаешь, да, ребята крутые, а потом возвращаешься и ковыряешься с этими многотерабайтными базами. И это — будучи джуниором. Представляете себе, какой это удар?

                  Я знаю больше 20 языков программирования. Это то, в чём мне пришлось разобраться в процессе работы. Тебе выдают код на Erlang, на C, на С++, на Lua, на Python, на Ruby, на чем-то еще, и тебе надо это всё пилить. В общем пришлось. Точное количество посчитать так и не удалось, но где-то на 20 число потерялось.
                  Читать дальше →
                • Антистресс-маска

                  image

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

                  На данный момент было найдено два популярных решения:

                  1. jQuery.Inputmask
                  2. jQuery-Mask-Plugin

                  Те, кто пытался использовать маски в своих и без того непростых проектах, скорее всего были бы рады выбросить все это дело и использовать просто валидацию. Особенно если маска должна быть динамической, зависеть от уже введенных символов, нужна возможность получать размаскированное значение даже если пользователь ввел его не целиком, или нужно полностью скрыть placeholder… Что работало в одной библиотеке — не работало в другой, как только извращаться не приходилось. Уж проще самому написать, в конце то концов, программисты мы или кто!? Да и коллеги тоже не потерялись, написали под Android же.

                  Кому не терпится, вот оно: imaskjs.
                  Поломать демку можно здесь.
                  Читать дальше →
                • Browser Fingerprint – анонимная идентификация браузеров



                    Валентин Васильев (Machinio.com)


                    Что же такое Browser Fingerprint? Или идентификация браузеров. Очень простая формулировка — это присвоение идентификатора браузеру. Формулировка простая, но идея очень сложная и интересная. Для чего она используется? Для чего мы хотим присвоить браузеру идентификатор?


                    • Мы хотим учитывать наших пользователей. Мы хотим знать, пришел ли пользователь к нам первый раз, пришел он во второй раз или в третий. Если пользователь пришел во второй раз, мы хотим знать, на какие страницы он заходил, что он до этого делал. С анонимными пользователями это невозможно. Если у вас есть система учета записей, пользователь логинится, мы все про него знаем — мы знаем его учетную запись, его персональные данные, мы можем привязать любые действия к этому пользователю. Здесь все просто. В случае с анонимными пользователями все становится гораздо сложнее.
                    Читать дальше →
                  • Генерация документов в doc, excel, pdf и других форматах на сервере

                      Выгрузка отчетов в различных форматах — типовая задача для многих проектов. И сейчас есть немало инструментов для этого. Среди них есть интересный вариант, который применяется, как мне кажется, не часто, но он однозначно стоит внимания. Потому что позволяет получить документ в нужном формате буквально одной командой. О нем и расскажу.

                      image

                      Читать дальше →
                    • Эй, запрос! Ты живой? Как легко обработать блокировки в PostgreSQL

                      Доброе время суток! Администрирование и сопровождение реляционных баз данных чаще всего является нетривиальной задачей. Иногда запросы, работавшие быстро, внезапно начинают «тормозить» по непонятным причинам, размер таблиц растет и в целом производительность базы данных снижается.

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

                      Чтобы разобраться в сложившейся ситуации, администратору БД необходимо понять, какой процесс блокирует и какой процесс является блокируемым, а также иметь возможность отменить или «убить» блокирующий процесс и в конце проверить результат.

                      В этой статье я хочу коснуться темы блокировок в PostgreSQL и рассказать об инструментах для работы с ними. Но сначала попробуем разобраться в самой теме.
                      Читать дальше →
                      • +29
                      • 27,6k
                      • 1
                    • Разделение текста на предложения с помощью Томита-парсера

                        Чтобы подготовить русскоязычные тексты для дальнейшего анализа, мне однажды понадобилось разбить их на предложения. Разумеется, автоматически. Что приходит на ум в первую очередь, если нужно разделить текст на предложения? Разбить по точкам — угадал?

                        Если вы начнете это делать, то довольно быстро столкнетесь с тем, что точка — это не всегда разделитель предложений (“т.к.”, “т.д.”, “т.п.”, “пр.”, “S.T.A.L.K.E.R.”). Причем эти токены не всегда будут исключениями при разбивке текста на предложения. Например, “т.п.” может быть в середине предложения, а может и в конце.

                        Вопросительный и восклицательный знак тоже не всегда разделяют текст на предложения. Например, “Yahoo!”. Предложения могут разделять и другие знаки, например, двоеточие (когда следует список из отдельных утверждений).

                        Поэтому я долго не думая поискал готовый инструмент и остановился на Томита-парсере от Яндекса. О нем и расскажу.
                        Читать дальше →
                      • Верстка интернет-магазина: список товаров



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


                          Некоторые приемы уже были рассмотрены в различных статьях. Однако у меня возникло желание объединить их и проиллюстрировать отдельными демо. Надеюсь, в таком виде наработки окажутся полезны верстальщикам, которым часто приходится работать над интернет-магазинами.

                          Читать дальше →
                        • Производительность запросов в PostgreSQL – шаг за шагом



                            Илья Космодемьянский ( hydrobiont )


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

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

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

                              image
                              Читать дальше →
                            • Подборка фреймворков для машинного обучения



                                В последние годы машинное обучение превратилось в мейнстрим небывалой силы. Эта тенденция подпитывается не только дешевизной облачных сред, но и доступностью мощнейших видеокарт, применяемых для подобных вычислений, — появилась ещё и масса фреймворков для машинного обучения. Почти все из них open source, но куда важнее то, что эти фреймворки проектируются таким образом, чтобы абстрагироваться от самых трудных частей машинного обучения, делая эти технологии более доступными широкому классу разработчиков. Под катом представлена подборка фреймворков для машинного обучения, как недавно созданных, так переработанных в уходящем году. Если у вас все хорошо с английским, то статья в оригинале доступна здесь.
                                Читать дальше →
                              • Docker, GitLab, бесплатные SSL-сертификаты и другие плюшки современной веб-разработки

                                • Tutorial

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


                                Начинать написание нового материала после столь продолжительного отдыха от этого дела — труднее всего. Но раз цель поставлена — надо идти до конца. Начну немного издалека.


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


                                Под хабракатом вы найдете Quick Start по использованию Docker на уровне, необходимом для решения конкретных задач, обозначенных ниже, без углубления в "дебри" виртуализации и прочих сопутствующих тем. Если вы до сих пор хотите начать успешно использовать эту современную технологию, тем самым значительно упростив целый ряд процессов: от разработки веб-продуктов и до разворачивания и переноса оных под какое-либо современное оборудование — прошу под кат!


                                Opening Illustration - Docker

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