• Шесть задачек для Front-End разработчика

    • Translation

    1. Форма кредитной карты


    Клёвая форма кредитной карты с гладкими и приятными микровзаимодействиями. Включает форматирование чисел, проверку и автоматическое определение типа карты. Она построена на Vue.js, а также полностью адаптивная. (Посмотреть можно здесь.)

    image

    credit-card-form

    Чему научитесь:

    • Обрабатывать и валидировать формы
    • Обрабатывать события (например, при изменении полей)
    • Разберетесь как отображать и размещать элементы на странице, особенно данные кредитной карты, которая поверх формы
    Читать дальше →
  • Чему я научился на своём горьком опыте (за 30 лет в разработке ПО)

    • Translation
    • Tutorial
    image

    Это циничная, клиническая коллекция того, чему я научился за 30 лет работы в разработке программного обеспечения. Повторюсь, некоторые вещи весьма циничны, а остальное — результат долгих наблюдений на разных местах работы.
    Читать дальше →
  • Королев. Лекарство для веба

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


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

      Читать дальше →
    • Возвращаясь к Неразмеченным Конечным Интерпретаторам с Dotty

      Неразмеченные Конечные Интепретаторы (Tagless Final interpreters — прим. пер.) — это альтернативный подход традиционным Алгебраическим Типам Данных (и обобщённым ADT), основанный на реализации паттерна "интерпретатор". Этот текст представляет "неразмеченный конечный" подход в Scala, и демонстрирует каким образом Dotty с его недавно добавленными типами неявных функций делает этот подход ещё более привлекательным. Все примеры кода — это прямое переложение их Haskell версий, представленных в Typed Tagless Final Interpreters: Lecture Notes (раздел 2).


      Паттерн "интерпретатор" в последнее время привлекает всё больше внимания в сообществе Scala. Множество усилий было затрачено на борьбу с наиболее ярким недостатком решений, основанных на ADT/GADT: расширяемость. Для начала можно взглянуть на typeclass Inject из cats как на реализацию идей Data Type à la Carte. Библиотека Freek предоставляет средства для комбинирования более двух алгебр, используя украшения с задействованием аппарата операций на уровне типов. Решение, предложенное в работе Freer Monads, More Extensible Effects также ставит акцент на расширяемости, и вдохновлено набором небольших Scala-библиотек, таких как eff, emm и paperdoll. Неразмеченные конечные интерпретаторы подходят в некотором смысле с противоположной стороны, используя типы классов в своём непосредственном основании вместо более традиционных ADT/GADT. Они также поставляются с большим превосходством в расширяемости "из коробки" без каких-то явных опасностей.


      Читать дальше →
    • Программный синтез звука на ранних персональных компьютерах. Часть 1

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

        Перейти ко второй части

        Читать дальше →
      • Обзор техник реализации игрового ИИ

        • Translation
        image

        Введение


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

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

        Что же такое «игровой ИИ»?


        Игровой ИИ в основном занимается выбором действий сущности в зависимости от текущих условий. В традиционной литературе по ИИ называет это управлением "интеллектуальными агентами". Агентом обычно является персонаж игры, но это может быть и машина, робот или даже нечто более абстрактное — целая группа сущностей, страна или цивилизация. В любом случае это объект, следящий за своим окружением, принимающий на основании него решения и действующий в соответствии с этими решениями. Иногда это называют циклом «восприятие-мышление-действие» (Sense/Think/Act):

        • Восприятие: агент распознаёт — или ему сообщают — информацию об окружении, которая может влиять на его поведение (например, находящиеся поблизости опасности, собираемые предметы, важные точки и так далее)
        • Мышление: агент принимает решение о том, как поступить в ответ (например, решает, достаточно ли безопасно собрать предметы, стоит ли ему сражаться или лучше сначала спрятаться)
        • Действие: агент выполняет действия для реализации своих решений (например, начинает двигаться по маршруту к врагу или к предмету, и так далее)
        • … затем из-за действий персонажей ситуация изменяется, поэтому цикл должен повториться с новыми данными.
        Читать дальше →
      • N+6 полезных книг



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

          Первая в списке — «Агрессия» Конрада Лоренца. Она вообще-то про зверей и людей, но эта штука настолько системная и захватывающая, что прямо накладывается на бизнес. Ну и просто на жизнь. Особенно интересны выкладки про уровень агрессии в разных сообществах. Ну и у него описаны баги разных зверей, что меня лично всегда дико радует.

          Коллаборация — Мортен Хансен
          Это инструкция по совместной работе и взаимодействию между людьми в команде и командами. Она меня здорово успокоила рядом исследований, например, тем, что вообще-то не надо заниматься нетворкингом, если ты занимаешься делом. Не надо знать 200-400 человек, чтобы найти нужного — надо знать 10 человек, каждый из которых знает по 50-100. А это в разы проще и эффективнее. Нетворкинг для интроверта — это прекрасно.
          Читать дальше →
        • Продвижение ПО на Запад: ожидание vs.реальность на примере одного видеоредактора


            Статьи о продвижении IT-продуктов, как правило, можно разделить на две категории.

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

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

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

            В качестве примера мы будем опираться на результаты продвижения видеоредактора VSDC на западный рынок, которым занимались последний год, и расскажем, какие методы сработали, а какие — нет.
            Читать дальше →
          • Книги для тимлидов и руководителей проектов

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

              В отечественном IT я часто наблюдаю следующую картину: тимлидом часто становился лучший (?) разработчик из команды (aka 23-летний сеньор). А чтобы стать руководителем проекта (project manager) иногда достаточно просто знать английский и «павэрпойнт» на уровне пользователя. Это реалии отечественного аутсорсинга и с этим нужно как-то жить.

              В итоге часто получается как-то так:
              Потому что на десять сеньоров по статистике девять тупят.
              Читать дальше →
            • Байесовские многорукие бандиты против A/B тестов

                Здравствуйте, коллеги. Рассмотрим обычный онлайн-эксперимент в некоторой компании «Усы и когти». У неё есть веб-сайт, на котором есть красная кнопка в форме прямоугольника с закругленными краями. Если пользователь нажимает на эту кнопку, то где-то в мире мурлычет от радости один котенок. Задача компании — максимизация мурлыкания. Также есть отдел маркетинга, который усердно исследует формы кнопок и то, как они влияют на конверсию показов в клико-мурлыкания. Потратив почти весь бюджет компании на уникальные исследования, отдел маркетинга разделился на четыре противоборствующие группировоки. У каждой группировки есть своя гениальная идея того, как должна выглядеть кнопка. В целом никто не против формы кнопки, но красный цвет раздражает всех маркетологов, и в итоге было предложено четыре альтернативных варианта. На самом деле, даже не так важно, какие именно это варианты, нас интересует тот вариант, который максимизирует мурлыкания. Маркетинг предлагает провести A/B/n-тест, но мы не согласны: и так на эти сомнительные исследования спущено денег немерено. Попробуем осчастливить как можно больше котят и сэкономить на трафике. Для оптимизации трафика, пущенного на тесты, мы будем использовать шайку многоруких байесовских бандитов (bayesian multi-armed bandits). Вперед.

                Читать дальше →
              • Топ инструментов разработки для PostgreSQL

                  Конференция PG Day Russia растет и масштабируется: этим летом мы готовим для вас доклады и тренинги по всем наиболее популярным базам данных, а также по администрированию и хранению данных. в рамках подготовки мы запустили корпоративный блог, где планируем делиться ценной информацией о происходящем в мире баз данных. Первый пост посвящен инструментам разработки для PostgreSQL, его автор varanio будет рад ответить на ваши вопросы и комментарии!


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


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


                  Если вашего инструмента нет в списке, или у вас просто есть что сказать, добро пожаловать в комментарии.


                  Итак, вот неформальный топ и субъективное описание.

                  Читать дальше →
                • Влияние ambient-музыки на процесс написания кода

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



                    Человек работающий и музыка


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

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

                    На том же Хабре есть масса отличных статей о том, как музыка влияет на рабочий климат офиса, на концентрацию работника и т.п. Но данный материал немного о другом.
                    Читать дальше →
                  • Хороший триггер, плохой триггер: как мы мониторим сотни серверов по всему миру



                      Необходимость мониторинга должна быть очевидна практически для любой компании, однако я не раз сталкивался с примерами, когда к такому выводу ребята приходили только после падения продакшна. Причем нередко команда узнавала об этом уже постфактум — от своего генерального директора, которому на недоступность проекта пожаловались его друзья, решившие вдруг взглянуть на стартап. И вот он в гневе звонит членам команды с вопросом даже не «почему все упало», а почему он об этом знает, а они — нет. И тут им в голову приходит мысль, а почему бы не настроить мониторинг? Казалось бы, что может быть проще…

                      Нам, например, круглосуточно требуется мониторить более 46 000 метрик на более чем 500 серверах в 6 дата-центрах и 4 странах, а DAU игры War Robots стабильно переваливает за 1 500 000 человек.

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

                      • Tutorial
                      Что делать, если хочется сделать для своего проекта классный логотип, а денег на это нет? Последние десять лет я занимался дизайном, поэтому всегда мог сделать лого для своих проектов самостоятельно. А как можно сделать классный логотип, если ты не дизайнер?

                      image
                      Читать дальше →
                    • Как мы с друзьями прокачали наш сторонний проект до бизнеса с доходом в $17 000 в месяц

                      • Translation
                      В 2014 мы с друзьями решили создать настолько крутые инструменты веб-дизайна, насколько это вообще возможно. Мы создали UI kitsAdmin DashboardsTemplates и Plugins.

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



                      С точки зрения доходов, если не брать во внимание Черную пятницу с ее распродажами (которая помогла нам удвоить прибыль ноября 2016 года), мы выросли примерно до $ 22 000 выручки в месяц. Часть ее уходит на оплату комиссии по партнерской программе, НДС, налога поставщиков и другие траты. В результате на данный момент мы имеем около $17,000 ежемесячной чистой прибыли.
                      Сегодня я хочу поделиться с вами, как мы создавали свои продукты и как немного раскрутили этот побочный бизнес.
                      Читать дальше →
                    • Микросервисы: опыт использования в нагруженном проекте



                        На конференции HighLoad++ 2016 руководитель разработки «М-Тех» Вадим Мадисон рассказал о росте от системы, для которой сотня микросервисов казалась огромным числом, до нагруженного проекта, где пара тысяч микросервисов — обыденность.

                        Тема моего доклада — то, как мы запускали в продакшн микросервисы на достаточно нагруженном проекте. Это некий агрегированный опыт, но поскольку я работаю в компании «M-Tех», то давайте я пару слов расскажу о том, кто мы.

                        Если коротко, то мы занимаемся видеоотдачей — отдаём видео в реальном времени. Мы являемся видеоплатформой для «НТВ-Плюс» и «Матч ТВ». Это 300 тысяч одновременных пользователей, которые прибегают за 5 минут. Это 300 терабайт контента, который мы отдаем в час. Это такая интересная задача. Как это всё обслужить?

                        Про что сама эта история? Это про то, как мы росли, как проект развивался, как происходило какое-то переосмысление каких-то его частей, какого-то взаимодействия. Так или иначе, это про масштабирование проекта, потому что это всё — ради того, чтобы выдержать ещё больше нагрузки, предоставить клиентам ещё больше функционала и при этом не упасть, не потерять ключевых характеристик. В общем, чтобы клиент остался доволен. Ну и немного про то, какой путь мы прошли. С чего мы начинали.
                        Читать дальше →
                      • Архитектура растущего проекта на примере ВКонтакте



                          Алексей Акулович объясняет жизненный путь высоконагруженного проекта на PHP. Это — расшифровка Highload ++ 2016.

                          Меня зовут Лёша, я пишу на PHP.

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

                          Начнём.
                          Читать дальше →
                        • Моя — идея, твоя — программа, или три реальные истории о том, как автор идеи и разработчик делили в суде стартап

                          Споры между основателями стартапов о принадлежности интеллектуальных прав на созданный продукт — не редкость. Вспоминается, например, судебный иск Регги Брауна к двум другим основателям Snapchat. В большинстве случаев конфликты заканчиваются уходом кого-то из основателей из проекта. Российской судебной практике также известно немало примеров, когда создатели сервисов и приложений спорят о правах на них (и о праве контроля над стартапом в целом). Чаще всего конфликты происходят в проектах, где один из основателей придумал идею стартапа и алгоритм функционирования сервиса, а другой написал исходный код программы. В этом материале мы расскажем несколько невыдуманных историй, как такие споры решаются в России, и попытаемся понять юридические причины конфликтных ситуаций. Возможно, кто-то в этих историях «увидит» себя, а кому-то наш пост поможет не повторить ошибок его героев.
                          Читать дальше →
                        • PR для стартапа: какие сайты обязательно должны написать про вашу компанию

                            Известный маркетолог Эндрю Чен в одном из эссе писал, что есть всего несколько каналов для масштабирования роста аудитории:

                            • Платный трафик
                            • Прямые продажи
                            • Виральность
                            • SEO


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

                            Чтобы поисковики поняли, что ваш сайт хороший и на него стоит отправлять посетителей, вам нужен качественный продукт и много хороших ссылок с других сайтов. Времена покупных ссылок постепенно уходят, линкбилдинг становится намного более трудоемким занятием, тесно срастается с PR, каждая ссылка требует творческого подхода.
                            Читать дальше →
                            • +11
                            • 9.8k
                            • 8
                          • Документирование по ГОСТ 34* — это просто

                              Сегодня мы поговорим об отечественных стандартах на проектную документацию. Как эти стандарты работают на практике, чем они плохи и чем хороши. При разработке документации для государственных и серьезных частных заказчиков у нас обычно нет выбора — в требования по документированию ТЗ вписано соблюдение стандартов. На практике мне приходилось сталкиваться с различными примерами недопонимания структуры стандартов, того, что должно быть в документах и зачем эти документы нужны. В итоге из-под пера техписателей, аналитиков и специалистов выходят порой такие перлы, что непонятно, в каком состоянии сознания они писались. А ведь на самом деле все достаточно просто. Поиск по Хабру не вернул ссылок на более-менее целостный материал на данную тему, потому предлагаю закрасить этот досадный пробел.
                              Читать дальше →