• Субпиксельный рендеринг произвольных векторных изображений (Haarmony LCD)

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


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



      Как выглядят исходные изображения


      Фотографией, сложно передать преимущества. Для сравнения можете посмотреть на следующую картинку. Если одна из конфигураций пикселей такая же, как у вашего монитора, разница должна быть существенной.


      Читать дальше →
    • Уместить звездное небо на WebGL в 1009 байт JavaScript

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

        JS1k — ежегодное соревнование, где надо вместить демо, игру или все что угодно, в 1024 символа на JavaScript. В этом году мое демо заняло четвертое место (до третьего не хватило каких-то два балла). Посмотреть демо можно на сайте JS1k. У кого не открывается или не работает, выглядеть должно так:



        Минифицированный и полный исходный код лежит на github. А под катом разбор того, как сейчас минифицируют JavaScript для таких конкурсов.

        Читать дальше →
      • PornHub как замена VK


          11 декабря PornHub опубликовал ежегодный отчет о своей работе в 2018. В 20 стран с наибольшим трафиком в этом году впервые вошла Украина. Занимая 16 место по трафику, украинские пользователи поднялись сразу на 11 позиций в сравнении с 2017 годом.


          Неочевидной причиной столь резкого роста популярности PornHubʼа стал запрет вконтакте на территории Украины с мая 2017 года. Часть аудитории социальной сети, которая пользовалось вконтакте как PornHubʼом на протяжении последних полутора лет плавно мигрировала на PornHub.


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

          Читать дальше →
        • Сервис такси разыгрывает базу контактов клиентов и водителей

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


            В оригинальном видео адреса не размыты, их для статьи размыл я, чтобы не распространять эти данные дальше. На мое письмо в их поддержку, что это не очень хорошая идея:
            Добрый день!
            Нельзя в видео (ссылка) выкладывать адреса и имена людей.
            1. Во-первых, ваши конкуренты могут получить список ваших клиентов и водителей
            2. Во-вторых, вы нарушаете закон Украины про доступ к персональным данным

            Они ответили, что им все равно:
            Здравствуйте, Денис, при регистрации каждый пользователь дает согласие на использование его персональных данных uklon.com.ua/document/useragreement — пункт 2.6. Большое спасибо за ваш отзыв.

            Поэтому я решил написать небольшой пост, как можно получить контактные данные с видео, не используя какие-то специальные умения. Дисклаймер: этот пост носит образовательный характер, и демонстрирует как не стоит обращаться с данными клиентов.
            Читать дальше →
          • Эрланг для веб-разработки (2) -> БД и деплой;

            • Tutorial

            В первой статье мы познакомились с Эрлангом и фреймворком n2o. В этой части мы продолжим делать наш блог:
            • добавим авторизацию через фейсбук, для этого будем из клиента вызывать функции на сервере;
            • будем сохранять комментарии и посты в NoSQL базе;
            • развернем наш блог на DigitalOcean и замерим производительность (спойлер — 1300 запросов в секунду).


            Код из статей https://github.com/denys-potapov/n2o-blog-example, готовый проект можно посмотреть по адресу http://46.101.118.21:8001/.

            Читать дальше →
          • Эрланг для веб-разработки (1) -> Знакомство;

            • Tutorial

            Продолжение о базе данных и деплое во второй статье.

            Я начинаю публиковать серию статей о веб-разработке на Эрланге. Многие хотят попробовать Эрланг, но сталкиваются с проблемой, что вводные курсы в основном касаются Эрланга как функционального языка и далеки от реальных проектов (Learn You Some Erlang for great good! — хорошая и подробная книга). С другой стороны все обучающие материалы по веб-разработке подразумевают, что читатель уже хорошо знает Эрланг.

            Эта серия статей рассчитана для разработчиков, у которых есть опыт в веб-разработке (PHP, Ruby, Java), но не имеют опыта разработки на Эрланге.

            Задачей будет сделать блог. Код из статей https://github.com/denys-potapov/n2o-blog-example, готовый проект можно посмотреть по адресу http://46.101.118.21:8001/. Особенности проекта:
            • обновление комментариев в реальном времени;
            • авторизация через фейсбук;
            • данные храним в mnesia.

            В основе проекта феймворк n2o. Выбор довольно субъективен, но из живых Эрланг фреймворков, n2o мне показался наиболее «эрлангоподобным», в тоже время ChicagoBoss больше похож на MVC фреймворки в других языках.
            Читать дальше →
          • Простыми словами о Twelve-Factor App

              Известный провайдер heroku поддерживает манифест, который называется «12-факторное приложение» (Twelve-Factor App). Это набор лучших практик для разработки современных веб приложений на любой платформе. Практики описывают приложения, которые готовы:
              • к горизонтальному масштабированию;
              • к непрерывному развертыванию;
              • к современным облачным хостингам.

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

              Манифест (на хабре есть отличный перевод) слишком подробен и хорош для детального изучения. В этой же статье, я коротко остановлюсь на основных преимуществах.
              Читать дальше →
              • +9
              • 25.9k
              • 1
            • Открытая бухгалтерия в Министерстве образования и науки Украины

                В 2009 Тим Бернерс-Ли в своем выступлении на TED говорил об открытых данных и будущем интернета. На 10 минуте он вместе с залом скандирует «Raw data, now!» (сырые данные, сейчас же). Рекомендую всем, кто этого еще не сделал, посмотреть это выступление.



                21 февраля 2014 года студенты заняли здание Министерства образование и науки Украины с требованиями перемен. Вместе с политическими требованиями, они выдвинули требования открытой бухгалтерии. Уже 24 марта новый министр подписал указ №85-а о ежедневной публикации всех бухгалтерских проводок за день на сайте министерства. Само по себе открытие данных не должно было занять время, но оказалось, что в МОН фактически не было учетной системы, и, например, главная книга велась на бумаге.

                Сегодня данные доступны на сайте министерства (UPD: спасибо за новую ссылку sad. Дамп можно скачать по ссылке), а под катом короткая инструкция как обрабатывать данные, кабель на миллион гривен (около 50 тыс. долларов), и почему пока открытая бухгалтерия не так эффективна.
                Читать дальше →
              • Стартапы вдохновленные сексом: плюсы, минусы, подводные камни

                • Translation
                Когда стартап сосредоточен на сексе, он встречает массу препятствий на пути от финансирования до рекламы. Вивьен Зянг рассказывает, как ориентированные на секс стартапы ищут пути чтобы оплатить счета без ущерба для своей миссии.

                От переводчика: Статья рассказывает о трудностях со стартапами только для взрослых на западе, и надо помнить, что в постсоветских реалиях большинство из описанных стартапов попадают под действие статей 242 УК РФ (до шести лет) или 301 УК Украины (до семи лет).

                Текст без картинок
              • Дэвид Чэппел о облаках и будущем разработки

                  На конференции DevDay*Kyiv 2014 мне удалось пообщаться с автором ключевого доклада Дэвидом Чэппелом. Дэвид — известный спикер, консультант и автор книг, многие из которых используются для обучения в MIT и ETH. В своей работе он стремится помочь людям в ИТ понимать, использовать и принимать решения о новых технологиях.

                  image

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

                  Вопросы и ответы
                  • +17
                  • 13.7k
                  • 3
                • Генерация xkcd паролей на PHP

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


                    Перевод, оригинал

                    Все текущие реализации этого метода генерации паролей рассчитаны на английские слова, а значит пароли сложнее запомнить русскоязычным. Я вооружился частотным словарем русского языка, и сделал PHP библиотеку, которая поддерживает генерацию паролей из нескольких наборов слов:
                    • английские слова (например, «idea critic happy chinese»);
                    • русские слова (например, «порошок земля нуль платье»);
                    • транслитерированные русские слова (например, «vysota razum bumazhka razmer»).

                    Код и списки слов на GitHub.

                    Описание библиотеки
                  • Объектная гимнастика

                    • Translation
                    В первых двух абзацах оригинального текста автор описывает как он пил пиво с друзьями. Я заменил их пятничной картинкой о гимнастике из детства.

                    Объектная гимнастика (англ. Object Calisthenics) — это упражнения в программировании, которые состоят из 9 правил, которые Джефф Бей описал в своей книге «The ThoughWorks Anthology». Пытаясь как можно точней следовать этим правилам, вы измените свои привычки написания кода. Это не значит, что вы должны постоянно соблюдать все эти правила. Найдите баланс и используйте только те, которые вам удобны.

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

                    Ниже я прокомментирую этих 9 правил:
                    1. Только один уровень отступа в методе
                    2. Не используйте Else
                    3. Оберните все примитивные типы и строки
                    4. Коллекции первого класса
                    5. Одна точка на строку
                    6. Не используйте сокращения
                    7. Сохраняйте сущности короткими
                    8. Никаких классов с более чем 2 атрибутами
                    9. Никаких геттеров, сеттеров и свойств

                    Читать дальше →
                  • Идеи для конкурса Nokia

                      К выходу Lumia 1020 Nokia организовывала конкурс Future/Capture (о нем писали на хабре). На конкурс можно было подать три идеи приложений, которые в полной мере используют 41-мегапиксельную камеру. Я воспользовался этой возможностью, но не прошел отбор.

                      Мои идеи довольно сильно привязаны к большому разрешению фотографий, и я не вижу как их реализовать в таком виде. Обидно оставлять их пылиться, поэтому, я передаю три идеи приложений в общественное достояние (CC0), и буду рад если они кому нибудь пригодятся или натолкнут на какие-нибудь другие идеи.

                      1. Где Вальдо?


                      Интерактивное приложение с игровым процессом похожим на книги и игры "Где Вальдо".

                      Как работает?

                      1. Вы делаете фотографию с большим количеством мелких деталей, например концерт, пляж или лес.
                      2. Вы делаете квест из вашей фотографии — отмечаете маленькие зоны интереса (например вас, котят, небольшие предметы).
                      3. Делитесь квестом с вашими друзьями.
                      4. Задача ваших друзей найти точки, которые вы отметили. Это могут быть соревнования между друзьями, поиски на время или рейтинги.

                      3 котенка


                      Еще 2 идеи ...
                      • +10
                      • 10.3k
                      • 5
                    • Притча о покрытии кода тестами

                      • Translation

                      Ранним утром программист спросил великого мастера:
                      — Я готов писать модульные тесты. К какому покрытию кода я должен стремиться?
                      Великий мастер ответил:
                      — Не переживай о покрытии, просто пиши хорошие тесты.
                      Программист улыбнулся, поклонился и ушел.

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

                        Когда у вас возникнет вопрос, как выбрать диагональ экрана, или в каком разрешении скачать фильм, предлагаю воспользоваться таблицей Головина для выбора диагонали экрана (pdf, 85 Кб). Название я придумал сам, надеюсь, Головин был бы не против.



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

                        Инструкция и теория
                      • Баннер Автокадабры и ГОСТ Р 52289-2004

                          Баннер Автокадабры на Хабре висит лет 5 (ссылка для тех, кто не видит рекламу). На привычные вещи не обращаешь внимания годами, пока не увидишь на них изъян, который потом будешь замечать каждый раз.

                          Поэтому, я не могу больше это видеть, и прошу администрацию исправить баннер:
                          1. Машинки должны двигаться в правильном направлении.
                          2. Заменить одинарную на двойную сплошную, а прерывистую перед пешеходным переходом на сплошную.



                          Разметку можно посмотреть на панорамах Яндекса или почитать в ГОСТ Р 52289-2004 пункты 6.2.3. и 6.2.7.

                          UPD: С подачи Werdas — тротуар с противоположной стороны.
                        • Анимированный GIF со звуком

                            «Что позволило остаться GIF, это — циклическое проигрывание анимации, которое добавил Netscape. Если бы Netscape не добавил поддержку GIF в свой браузер, GIF умер бы в 1998»

                            — Александр Тревор (Alexander Trevor),
                            руководитель команды по созданию GIF в CompuServe

                            Формат GIF в июне этого года отпраздновал свое 25-летие, и является сегодня самым старым графическим форматом, который распространен в интернете. Посвящая выходные просмотру смешных анимированных гифок понимаешь, что некоторые из них были бы в разы лучше со звуком. Все текущие решения для циклической анимации со звуком (например: coub.com, gifsound.com) предлагают отказаться от GIF, но это — не выход. И я решил пожертвовать просмотром гифок на выходных для решения этой крайне важной проблемы.

                            Первая в интернете гифка со звуком по ссылке. Надо нажать на синюю кнопку, а потом на гифке. Плеер должен работать во всех современных браузерах (тестировался в последнем Firefox и Chrome).

                            Гифок под катом не будет, а будет процесс создания расширения для стандарта, написания конвертера и плеера.
                            детали реализации
                          • Что записано внутри бесконтактных карт Киевского метрополитена?

                              Бесконтактные карты в киевском метро начали вводить в 2007 году (информация на сайте метро, укр), но широкое распространение и внедрение они получили только к концу 2008 года. На сегодняшний день существуют два основных типа проездных билетов: проездные со сроком действия, и проездные на количеств поездок. В проездных используются бесконтактные карты MIFARE Classic 1K.


                              Фото — Metromuseum.net

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

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

                              Согласен
                            • Вертикальные экраны в digital signage

                                «Пользователь, который проводит за компьютером 6 часов в день, в среднем в год на скроллинг тратит 86 часов»

                                portrait vs landscape
                                В эпиграф я вынес аргумент, который используют в бесконечных спорах обсуждениях о вертикальной ориентации мониторов в работе (Например, в комментариях к этому посту развернулось подобное обсуждение). При таком количестве информации о вертикальном и горизонтальном расположении экрана, я не нашел информации об ориентации экранов в digital signage.

                                Digital signage — это любые вывески, таблички, плакаты, которые были заменены на цифровые дисплеи: рекламные экраны в магазинах, информационные табло в аэропортах, LED экраны, вывески и т.д. Я не нашел корректного перевода словосочетания digital signage, поэтому заранее прощу прощение у тех, кому не нравится использование английского в русском тексте.

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

                                Аргументы
                              • Просмотри видео на сканере штрихкодов


                                  «Из всех искусств для нас важнейшими являются кино и цирк»
                                  — В.И. Ленин


                                  Просмотр видео — одно из любимых развлечений в современном мире, фильмы сейчас смотрят практически на всех устройствах, даже на холодильниках. К сожалению, рядом не оказалось подходящего холодильника, и я решил просмотреть фильм на сканере штрихкодов. Под рукой оказался сканер Cipher Lab 8001. Технические характеристики плеера сканера:
                                  • 16-битный CMOS процессор
                                  • 1 Мб памяти для программ
                                  • 1 Мб SRAM для данных
                                  • FSTN дисплей с LED подсветкой разрешением 100×64

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