• Эффект кофты на шейдерах для мобильных устройств

      Пролог


      Доброго времени суток! После опубликовании статьи о визуализации квадратичного дерева(Quad-tree), меня попросили написать статью, показывающую работу шейдера, переводящего изображение в «кофту».



      Так что, давай рассмотрим данную методику.
      Читать дальше →
      • +49
      • 15.7k
      • 6
    • Прототипное ООП для Lua

        Привет, я придумал свой велосипед для реализации прототипного подхода ООП в Lua.

        Основные фишки
        • Single inheritance
        • Traits
        • LuaJIT


        Перейдем сразу к примерам.

        -- подключаем модуль
        local object = require("object")
        
        -- определяем наш класс, который на самом деле объект
        local HelloClass = object:extend(function(class)
          -- конструктор (необязательно)
          function class:init(name)
            self.name = name
          end
        
          -- метод класса
          function class:sayHello()
            print("Hello " .. self.name)
          end
        end)
        
        local hello = HelloClass:new("John")
        hello:sayHello()
        

        Читать дальше →
        • +10
        • 11.2k
        • 4
      • Разрабатываем ИК-пульт ДУ для фотоаппарата



        После прочтения статьи на Хабре «Делаем ИК-пульт ДУ для фотоаппарата», захотелось поделиться опытом разработки ИК-пульта ДУ для фотоаппаратов в виде приложения под Android (от идеи до публикации).
        Читать дальше →
        • +15
        • 17.7k
        • 7
      • Олдскул, хардкор, AY-3-8912. «Железный» чиптюн с последовательным входом



          Клона Spectrum 128K, оснащенного музыкальным сопроцессором AY-3-8910 (YM2149F) у меня не было. Был 48K с расширенной клавиатурой и убогим блоком питания, перегревающим внутренности через час-два работы. От этого, помнится. домики посреди моря в Sim City образовывались и другие веселые артефакты. Но к делу данные воспоминания не относятся. Вдохновившись материалом tronix286, я решил восполнить пробел в ретро-образовании и склепать что-нибудь на легендарном (и при этом, легко добываемом и недорогом) чипе.

          В ходе изучения различных поделок, идея сформировалась следующая: надо делать модуль с последовательным (UART) входом. Чтобы его уже можно было подключить с минимальными затратами к любому девайсу, добавляя тем самым +146 к чиптюновости. В процессе также было решено освоить пару дополнительных навыков, вроде программирования AVR и изготовления печатных плат с применением фоторезиста.

          Сразу опишу результаты: модуль разработан и пиликает, побочные навыки прокачаны, грабли собраны, можно радоваться, расширять и углублять.
          Читать дальше →
        • «Галоп пикселя — часть первая» — базовые понятия, этапы взросления, прикладные упражнения

          • Tutorial


          «Галоп пикселя», часть I — базовые понятия, этапы взросления, прикладные упражнения (линк)
          «Галоп пикселя», часть II — перспектива, цвет, анатомия и прикладные упражнения (линк)
          «Галоп пикселя», часть III — Анимация (линк)
          «Галоп пикселя», часть IV — Анимация света и тени (линк)
          «Галоп пикселя», часть V — Анимация персонажей. Ходьба (линк)

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

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

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


          Лопатить пиксели
        • Лучшие плагины Photoshop для веб-дизайнера

          • Translation

          Divine Elemente



          Это, пожалуй, один из лучших проектов, которые я видел. Divine Elemente позволяет дизайнерам создавать тему WordPress без знания каких-либо frontend/backend. К сожалению, у меня не было возможности опробовать этот плагин в действии, так как он сущетсвует только для Windows. Для работы дизайнов необходимо создавать их в точности с предустановленными шаблонами. Выглядит оно все почти что как Twitter Bootstrap. Разработчики предоставили нам все: SEO, семантичные названия классов и легко читаемый код. Замечательно!
          Читать дальше →
          • +7
          • 15.8k
          • 1
        • Кастомные социальные кнопки

          Недавно участвовал в разработке одного проекта — фото конкурса. По задумке, рейтинг фото альбомов должен формироваться из суммы всех публикаций в социальных сетях: Facebook, Вконтакте, Twitter. Т.е. общий рейтинг фотоальбома расчитывается:
          Рейтинг фотоальбома = кол-во «Share» в Facebook + кол-во «Сохранить» в Вконтакте + кол-во «Retweet» в Twitter

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

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

          Итак:
          • количество лайков будем получать от REST сервисов каждой социалки
          • кнопки рисуем свои и обрабатываем событие click

          Читать дальше →
        • Выбираем лаунчер для телефонов с Android

          • Translation
          Представляю вам вольный перевод статьи "Android Home Screen Launchers: Six of the Best"

          Вся прелесть операционной системы Android заключается в том, что буквально все настраивается, поскольку платформа имеет открытый исходный код. Другие мобильные операционные системы предоставляют мало возможностей для настройки главного домашнего экрана вашего телефона, однако, Android имеет сразу несколько приложений, которые могут изменить вид главного рабочего стола вашего телефона. Такие приложения называются «лаунчеры», эти приложения позволяют настраивать способ отображения экрана, когда вы нажимаете кнопку «Домой» (Home) на вашем телефоне. Самое приятное в лаунчерах то, насколько просто заменить обычный рабочий стол на более функциональны. Для этого достаточно совершить простые действия: скачать, установить и настроить параметры.
          Под катом обзор лаунчеров, скриншоты и QR-коды
        • Использовать Lua c С++ легче, чем вы думаете. Tutorial по LuaBridge

          • Tutorial
          Данная статья — перевод моего туториала, который я изначально писал на английском. Однако этот перевод содержит дополнения и улучшения по сравнению с оригиналом.
          Туториал не требует знания Lua, а вот C++ нужно знать на уровне чуть выше базового, но сложного кода здесь нет.

          Когда-то я написал статью про использование Lua с C++ с помощью Lua C API. В то время, как написать простой враппер для Lua, поддерживающий простые переменные и функции, не составляет особого труда, написать враппер, который будет поддерживать более сложные вещи (функции, классы, исключения, пространства имён), уже затруднительно.
          Врапперов для использования Lua и C++ написано довольно много. С многими из них можно ознакомиться здесь.
          Я протестировал многие из них, и больше всего мне понравился LuaBridge. В LuaBridge есть многое: удобный интерфейс, exceptions, namespaces и ещё много всего.
          Но начнём по порядку, зачем вообще использовать Lua c С++?
          Читать дальше →
        • Использование Vim в качестве C/C++ IDE

          Привет, Хабрахабр. Меня зовут Алексей и я занимаюсь тем, что разрабатываю встраиваемые операционные системы.

          Сегодня я хочу рассказать, как я использую Vim в качестве IDE для C/C++ проектов.

          Несмотря на то, что я использую Vim для C/C++, многие из рекоммендаций довольно общие и могут использоваться в любом проекте.
          Читать дальше →
        • Смотрим сериалы с субтитрами в 2 клика


            Я, как и большинство, смотрю много сериалов. И, чтобы не ждать перевода, смотрю в оригинале с субтитрами. Из-за этого скачивание серии иногда превращается в приключение. Мне захотелось оптимизировать этот процесс. Web-приложение я делать как-то не рискнул, поэтому встречайте series_list. Оно:
            • берёт релизы с eztv или piratebay;
            • берёт субтитры с addicted или уведомляет, если их ещё нет;
            • берёт обложки с imdb;
            • скачивает последовательно (можно начинать смотреть, когда ещё не всё скачалось);
            • имеет открытый исходный код.

            Читать дальше →
          • Создаем платформер за 30 минут

            • Tutorial
            Здравствуйте! Сегодня мы будем писать платформер, используя C++, Box2D и SFML, а также редактор 2D карт для игр Tiled Map Editor.

            image

            Вот результат (карта создавалась 5 минут + во время сьемки игра тормозила + экран не так растянут — дефект Bandicam):



            Исходники и exe — внизу статьи.
            Читать дальше →
          • Фотонаблюдение или timelapse видео на Raspberry Pi


            Недавно у меня возникла необходимость соорудить некое подобие видеонаблюдения. Требования были довольно простые:
            • возможность наблюдать через интернет
            • не обязателен режим реального времени, достаточно вечером просмотреть основные события за день (скажем, узнать, сидит ли кто-нибудь за вашим любимым компом, пока вы на работе)
            • отсутствие необходимости тратить часы на отсмотр результатов
            • максимально возможное качество картинки
            • минимальная стоимость

            Исходя из критериев, можно было бы остановиться на готовых решениях в виде IP-камер. Однако, проведенный на скорую руку анализ рынка показал, что в устройствах, стоимостью до $100, размер картинки редко превышает 640x480 точек, и, при этом, они не могут похвастать хорошими возможностями для настройки софта. То есть, вполне возможно, что купив такую камеру, вам придется мириться с кривизной заводской прошивки и невозможностью в полной мере реализовать свои замыслы.

            В противовес готовым решениям, самоделка на Raspberry Pi – это достаточно недорого, куда более увлекательно, и гораздо более гибко, благодаря полноценной ОС на борту и терабайтам готового софта на любой вкус.
            Читать дальше →
          • «Boost.Asio C++ Network Programming». Глава 3: Эхо сервер/клиент

            • Tutorial
            Всем привет!
            Продолжаю перевод книги John Torjo «Boost.Asio C++ Network Programming».

            Содержание:


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



            Здесь будет приводиться не весь код целиком, а только его части, весь код можно посмотреть по ссылке в конце статьи.
            Читать дальше →
            • +29
            • 50.4k
            • 1
          • Абсолютное горизонтальное и вертикальное центрирование

            • Translation
            • Tutorial
            Сколько уже было сломано копий о задачу выравнивания элементов на странице. Предлагаю вашему вниманию перевод отличной статьи с решением этой проблемы от Стефана Шоу (Stephen Shaw) для Smashing Magazine — Absolute Horizontal And Vertical Centering In CSS.

            Все мы знали о margin: 0 auto; для горизонтального центрирования, но margin: auto; не работало для вертикального. Это можно легко исправить, просто задав высоту и применив следующие стили:

            .Absolute-Center {
              margin: auto;
              position: absolute;
              top: 0; left: 0; bottom: 0; right: 0;
            }
            

            Я не первый, кто предложил это решение, однако такой подход редко применяется при вертикальном выравнивании. В комментариях к статье How to Center Anything With CSS Simon ссылается на пример jsFiddle, где приводится отличное решение для вертикального центрирования. Вот еще несколько источников на эту тему.

            Рассмотрим способ поближе.
            Читать дальше →
          • Подборка полезного для любителей Twitter Bootstrap

              В подборке инструменты, плагины и другие полезности, облегчающие работу с Twitter Bootstrap. Предыдущая подборка.

              Инструменты




              Bootstraptor — подборка большого количества бесплатных и премиум тем, в том числе Starter Kit, на основе Bootstrap.
              Читать дальше →
            • Коллекция ресурсов для frontend и backend разработчиков

                image

                Некий dypsilon выложил на GitHub огромную коллекцию ссылок на ресурсы по веб-разработке, за что ему огромное спасибо.

                Список состоит из ссылок на библиотеки, руководства и статьи.

                Frontend: github.com/dypsilon/frontend-dev-bookmarks
                Backend: gist.github.com/dypsilon/5819528 (много node.js)

                Ссылок много, но все — строго по делу и упорядочены по группам (пример для фронтенда):
                1. Архитектура
                2. Фреймворки
                3. Cross Browser
                4. Cross Device
                5. Паттерны и сниппеты
                6. Манипуляция с DOM
                7. … и многое другое

                matmuchrapna советует еще frontdesk Вячеслава Олиянчука.
                Настоятельно рекомендуется добавить в закладки, а лучше — почитать.
              • Пишем музыку с помощью PHP

                • Translation
                Я не специалист по теории вероятностей, искусственного интеллекта и машинного обучения, кроме того уроки начальной музыкальной школы давно забыты. Но если вы уделите мне 10 минут, то обнаружите, что даже небольшой запас знаний может дать впечатляющие результаты при их творческом применении. Я хочу поделиться с вами, как научить PHP сочинять музыку.

                Например, такую:

                сгенерированная мелодия
                Читать дальше →