• Работа с событиями в Laravel. Рассылка push уведомлений при публикации статьи

    • Tutorial
    В комментариях к одной из первых статей в моем блоге читатель посоветовал мне прикрутить push-уведомления через сервис "Onesignal" На тот момент я понятия не имел, что это за зверь и с чем его едят. Про сами уведомления я, конечно, знал, про сервис — нет.
    Легко нагуглил и оказалось, что это сервис, который позволяет рассылать push уведомления абсолютно разного рода, по всем платформам и девайсам. При этом имеет удобную панель управления/отчетности, возможность отложенной отправки и тд.
    На настройке самого сервиса останавливаться не буду. Есть и его российские аналоги, ссылки при необходимости легко находятся. Да и речь больше не о самом сервисе, а о правильной архитектуре приложения на Laravel.
    Читать дальше →
  • Тестируем вёрстку правильно

      Makeup — инструмент для комфортного ручного регрессионного тестирования вёрстки

      Что не так с тестированием вёрстки


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

      Проблема тестирования вёрстки в том, что только живой человек может сказать, хорошо свёрстан блок на странице или нет. Поэтому чаще всего мы тестируем HTML и CSS вручную: проверяем, как будет вести себя блок, если в нем будет слишком много (или слишком мало) текста или дочерних элементов; смотрим, чтобы все возможные варианты отображения блока смотрелись корректно; помним о том, как блоки должны адаптироваться к разным устройствам и разрешениям экрана.
      Можем ли мы перестать делать это руками?
    • Unity — Концептуальные идеи и подсказки для новичков игродева. Мощная оптимизация 2D проекта

      • Tutorial
      Ссылка на первую статью из этой серии.

      Быстрое вступление

      Я долго думал какую тему выбрать на этот раз, и решил, что расскажу про некоторые фишки, которые помогут оптимизировать вашу игру. Особенно это будет актуально для новичков, потому что чаще всего первая игра оказывается игрой для смартфонов и планшетов. А на мобилках, сколько бы там ядер не оказывалось — 6 или 8, игры все ещё очень несбалансированные в плане потребления ресурсов. Код и его идея, которые будут приводится в этой статье являются немного более сложными для понимания чем те две строчки кода, которые я приводил в своей предыдущей публикации. Хотя, я не правильно выразился — код легко понять — но порог вхождения в это понимание будет чуть выше чем легко (для новичков конечно), придется посидеть минут 5.

      Введение в идею

      Как вы создаете объекты в Unity из префабов? Только Instantiate и никак иначе — другой функции там просто не существует.

      Для тех кто не помнит или еще не знает, что такое Instantiate (), маленькая справка — *аргументы инстанции*. Вот вы их создаете (объекты), и создаете, иногда удаляете, потом опять создаете, и так в течении всего уровня. Это бьёт по оптимизации и существенно — почему? Потому что так написано на всех форумах Unity, а иногда проглядывается и в документации, а документацию надо слушаться. Как Instantiate бьет по про производительности?
      Читать дальше →
    • Настройка сервера и деплоя: rvm, rails, puma, nginx, mina

      Предыстория


      На создание этой статьи меня толкнула недавняя публикация о деплое. В приведённой статье описан способ разворачивания проекта на основе rbenv, я же опишу ситуацию с rvm и настройкой upstart.

      Задачи и требования


      Итак, дано: простейшее RubyOnRails-приложение. В случае разворачивания своего проекта я ставил перед собой следующие задачи:
      • ОС Ubuntu LTS 14.04;
      • Веб-сервер Nginx;
      • Сервер приложения Puma;
      • Использование RVM для установки ruby требуемой версии;
      • Автоматический запуск приложения при запуске VPS-сервера, возможность управлять приложением как службой;
      • Автоматизация процесса деплоя с помощью mina;

      Почему Ubuntu?
      Просто я к ней привык (точнее к её производной — Linux Mint).

      Почему puma, а не unicorn или passenger?
      О пуме я слышал неплохие отзывы, а у unicron страшненький сайт. Passenger, на мой взгляд, нарушает принцип единственной обязанности — я хочу иметь веб-сервер и приложение-сервер.

      Почему RVM?
      Я к нему привык — у меня он установлен на локальной машине, хочу его видеть и на production.

      Почему mina?
      Она действительно проще чем capistrano и при этом быстрее. Скорость достигается за счёт того, что для каждой задачи capistrano создаёт отдельное ssh-соединение. Mina же формирует shell-скрипт и выполняет его в рамках одного соединения.

      В данном случае задача легко разбивается на 3 этапа:
      1. Убедиться, что приложение корректно запускается (пока без автоматизации);
      2. Настроить сервер так, чтобы наше rails-приложение работало как полноценная служба;
      3. На основе этого настроить автоматизированное разворачивание с помощью mina.

      Читать дальше →
      • +12
      • 9.5k
      • 7
    • Очень большой Postgres

      Так уж случилось, что последнее время приходилось заниматься оптимизацией и масштабированием различных систем. Одной из задач было масштабирование PostgreSQL. Как обычно происходит оптимизация БД? Наверное, в первую очередь смотрят на то, как правильно выбрать оптимальные настройки для работы и какие индексы можно создать. Если обойтись малой кровью не вышло, переходят к наращиванию мощностей сервера, выносу файлов журнала на отдельный диск, балансировке нагрузки, разбиению таблиц на партиции и к всякого рода рефакторингу и перепроектированию модели. И вот уже все идеально настроено, но наступает момент, когда всех этих телодвижения оказывается недостаточно. Что делать дальше? Горизонтальное масштабирование и шардинг данных.


      Читать дальше →
    • Нюансы коммерческой разработки на WordPress



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

        По большей части информация будет «технического плана», касательно CMS Worpdress, «по верхушкам». Я рассказываю лишь про наш путь, для кого использование технологий, путей, приемов etc. вопрос религии — просьба воздержаться от холиваров.
        Приступим
      • Про создание платформера на Unity. Часть 4.1, злодейская

        • Tutorial
        Привет, Хабр!

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



        Осторожно, под катом по-прежнему много гифок!

        Читать дальше →
      • Первый опыт в игровой разработке. Ошибки и выводы

        После прочтения одной из статей на Хабре решил заняться разработкой игр для мобильных платформ. Решено было сделать игру для андроида, так как Window Store мне не нравится, a регистрация в Appstore стоит 100$.

        Через 10 минут я придумал механику, которую ни у одной игры ещё не видел. По задумке, камера располагалась сверху (Top-down), на персонажа с разных сторон шли враги он автоматически по ним стрелял. От игрока только требовалось перемещать персонажа по экрану, чтобы враги его не задели. Суть игры в том, чтобы набрать как можно больше очков.
        Читать дальше →
      • Визуальный конфигуратор окон, написанный за один час

        Решал интересную задачу – сделать визуальный редактор-конфигуратор окон.

        Подробностями процесса разработки я с вами, коллеги, и поделюсь.


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

        Спасибо за отклики!
        Читать дальше →
      • Если вы никого не злите, возможно вы не делаете ничего существенного

        Это перевод статьи Оливера Эмбертона (Oliver Emberton) «If you’re not pissing someone off, you probably aren’t doing anything important». Оригинал можно найти здесь.

        Невероятно, но ваши значимые действия склонны раздражать окружающих


        Боретесь с лишним весом? — «Нужно принять и любить своё тело таким, какое оно есть!»
        Спасаете детей в Африке? — «Свою страну спасать нужно!»
        Нашли лекарство от рака? — «А где ты раньше был?»



        Что бы вы ни делали, вы обязательно кого-нибудь разозлите, а это порой не так уж плохо. Позвольте я покажу, как полезно иногда быть козлом.
        Читать дальше →
      • Новые бесплатные курсы виртуальной академии Microsoft Virtual Academy, ноябрь 2014

          image

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

          Хит! Введение в программирование игр на Unity

          Создавать игры просто и весело. Цель этого курса – познакомить вас с тем, как создавать 2D-игры на Unity, и по итогам курса сделать свою собственную игру. Мы разберемся, как создать персонажа, научиться им управлять и добавить в игру несколько уровней, наполненных препятствиями и призами. Кроме того, курс содержит в себе базовую информацию, необходимую для того, чтобы начать программировать на C# в рамках Unity.

          Плюс еще курсы: Разработка 2D-игр на HTML5 | Создание игр на Project Spark | Быстрое испытание: Project Spark

          Хит! Бизнес и облако: лучшие практики решений – по материалам конференции Azure Business Talks

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

          Хит! Модернизация инфраструктуры организации с помощью Windows Server 2012 R2

          14 июля 2015 года завершится поддержка серверных операционных систем Windows Server 2003 и Windows Server 2003 R2. Во многих компаниях, использующих эти ОС, запускаются проекты модернизации ИТ-инфраструктуры и миграции на более современные системы. Именно поэтому ИТ-специалистам будет особенно полезно взглянуть на технологические решения, заложенные в новейшую ОС семейства Windows Server – Windows Server 2012 R2. В рамках этого курса рассмотрены усовершенствования компонент, применяемых практически в любой организации: службы Active Directory, инструменты построения СХД, средства автоматизации административных задач. Кроме того, вы сможете познакомиться с решениями по управлению идентификационными данными в гибридных структурах, в частности с сервисом Azure Active Directory Premium.

          Хит! Быстрый старт: создание приложений на Node.js

          Разработчики, хотелось ли вам попробовать Node.js? Интересуетесь тем, как добавить двустороннее взаимодействие в свои приложения? Посмотрите как эксперты Stacey Mulcahy и Rami Sayar рассказывают о использовании Node.js, как простейшем способе разработки приложений обменивающихся сообщениями в реальном времени. Узнайте как работать с Node.js в Visual Studio и Azure на примере разработки с нуля приложения чата.
          Читать дальше →
          • +12
          • 14.4k
          • 1
        • Создаем сетку с помощью Susy



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

          В этой публикации будут рассмотрены основные возможности Susy на примерах, а так же будет добавлен вывод с использованием flexbox.
          Читать дальше →
          • +17
          • 46.9k
          • 5
        • Два способа разработки программного обеспечения, или Одна ночь из жизни программиста Миши



            «Две тропинки идут рядом: путь жизни и путь смерти… Люди не идут никаким путём, ни путём жизни, ни путем смерти. Вихрь носит их, как солому.»
            Густав Майринк, «Голем»

            В офисе было тихо и темно, лишь стук клавиш и редкие щелчки мыши нарушали едва различимое жужжание кулера, да широкоформатный монитор освещал измождённое лицо regular developer'а Миши. Сторонний наблюдатель мог бы подумать, что идёт обычная рабочая ночь с пятницы на субботу. Так оно и было для тысяч других разработчиков по всему миру, но только не для Миши. Поставив очередную пустую бутылку под стол, он внезапно почувствовал, что граница, отделяющая его от гордого титула «senior developer», не так уж и далека.

            «Я встаю не раньше полудня, работаю до двух часов ночи и выпиваю за раз до трёх литров пива. Наверное, я становлюсь профессионалом», — подумал Миша, и в этот самый момент почувствовал на себе чей-то тяжёлый взгляд. То, что он увидел, подняв глаза от монитора, заставило его замереть от ужаса. Две фигуры в серых балахонах стояли по обоим сторонам его стола. Лица, скрытые низко надвинутыми капюшонами, смотрели сурово, и в то же время безразлично. Страшно было пошевелить хотя бы пальцем или вздохнуть, а сознание отчаянно отказывалось верить в реальность происходящего — ведь Миша узнал этих двоих. Старшие коллеги рассказывали ему, что всякий раз, когда кто-нибудь подбирается к мистической грани между простым разработчиком и старшим, к нему приходят эти двое, чтобы посвятить в свои мрачные тайны.

            Миша сглотнул и тихо спросил дрожащим голосом:

            — Тим-лид Коля? Проджект-менеджер Изя? Рабочий день уже давно закончился, что вы здесь делаете? И к чему весь этот маскарад?
            Читать дальше →
          • Очень быстрый и эффективный способ расслабления глаз

              Предисловие


              imageНе знаю, все ли программисты всесторонне любознательные люди, но я всегда пытаюсь получить фундаментальные знания во всех областях, которые могут быть практически полезны. В то время, когда мне в голову пришла эта идея я изучал анатомию и физиологию по журналам «Тело человека. Снаружи и внутри», ну а по работе я занимался стерео-варио фотографиями (для тех кто не знает — были такие советские календарики с ребристой поверхностью, где картинка либо казалась объемной, либо менялась). Так вот, в один из вечеров мне пришла в голову замечательная идея, которую я на протяжении уже 4х лет использую для поддержания своего зрения.
              Обещаю, что эффект почувствуете сразу!
              Читать дальше →
            • Medal for Return — полнометражный мультфильм

                Шесть лет в одиночку и полнометражный мультфильм готов.
                Автор сего произведения, некий житель Владивостока — Александр Тимченко.



                Как весело заметили на youtube, «мопед не мой»!

                Обратите внимание на продолжительность ролика.

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

                Читать дальше →
              • Публикация на стене Вконтакте средствами php

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

                В действительности всё оказалось довольно просто, и чтение документации по API часто помогает сэкономить время.

                Читать дальше →
              • Реанимация старого дедушки 386

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



                  Ну и естественно я решил оживить старичка :)
                  Подробности и много фотографий под катом.
                  Читать дальше →
                • Используем Google Voice Search в своем приложении .NET



                    Функция распознавания речи с некоторого времени доступна в браузере Google Chrome. Посмотреть как это выглядит можно, например, здесь.

                    Так как исходный Chromium открыт, возникает закономерное желание подсмотреть, можно ли использовать технологию в своих корыстных целях наступления мира на земле.

                    Как это часто бывает, все уже сделано за нас в этой статье. Все оказывается очень просто, необходимо сделать POST запрос на адрес www.google.com/speech-api/v1/recognize со звуковыми данными в формате FLAC или Speex. Реализуем демонстрацию распознавания WAVE-файлов с помощью C#.

                    Читать далее
                  • Как получить и измерить высокоскоростное соединение по TCP

                      Надежная передача данных в Интернете осуществляется на базе протокола TCP (Transmission Control Protocol), спецификация к которому была опубликована почти 30 лет назад. Алгоритм TCP (RFC793), позволяет подключенному устройству адаптироваться для работы в сети на скоростях в пределах десятков мегабит в секунду и задержки до 100 секунд. С бурным развитием новых технологий передачи данных, уже через 10 лет после внедрения стало ясно что производительность протокола не будет хватать для более широких каналов.
                      Читать дальше →