Как стать автором
Обновить
283
0
Денис Потапов @PatapSmile

Обо всём и ни о чём

Отправить сообщение

20_20 — год, в котором подчеркивание в числовых литералах победило

Время на прочтение3 мин
Количество просмотров10K

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


<?php

print(1_00);
print(100);

Выведет 100100 (проверить онлайн). Этот синтаксический сахар появился в Ada в 1980 году, и он имел переменный успех последние 40 лет. Но за последний год его добавили в javascript, PHP, Go, Scala и даже консервативный Erlang. Я не могу объяснить, что послужило всплеском популярности, поэтому в статье просто опишу историю разделителей в цифрах.

Читать дальше →
Всего голосов 50: ↑49 и ↓1+48
Комментарии36

readable — еще один линтер для PHP

Время на прочтение2 мин
Количество просмотров3.5K

Хочу представить линтер для PHP readable. Сейчас в нем 16 правил, которые должны улучшить читабельность кода. К основным преимуществам можно отнести:


  • скорость — меньше секунды на 1000 файлов
  • настройка baseline — можно не исправлять все ошибки в проекте сразу, а создать конфигурацию с текущими ошибками. И игнорировать их, но реагировать на новые.
  • правила писать проще чем в аналогах (субъективно)


Важные два дисклаймера:


  1. Я основной контрибьютор, поэтому могу быть субъективным. Изначально, readable написан для бельгийской компании officient. Они уже некоторое время его используют у себя внутри, и решили сделать readable открытым проектом.
  2. Он написан на JS.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии15

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

Время на прочтение2 мин
Количество просмотров7.2K

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


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



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


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


Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии12

Уместить звездное небо на WebGL в 1009 байт JavaScript

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

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



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

Всего голосов 51: ↑43 и ↓8+35
Комментарии23

PornHub как замена VK

Время на прочтение2 мин
Количество просмотров91K


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


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


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

Читать дальше →
Всего голосов 116: ↑92 и ↓24+68
Комментарии131

Сервис такси разыгрывает базу контактов клиентов и водителей

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


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

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

Поэтому я решил написать небольшой пост, как можно получить контактные данные с видео, не используя какие-то специальные умения. Дисклаймер: этот пост носит образовательный характер, и демонстрирует как не стоит обращаться с данными клиентов.
Читать дальше →
Всего голосов 64: ↑62 и ↓2+60
Комментарии40

Эрланг для веб-разработки (2) -> БД и деплой;

Время на прочтение10 мин
Количество просмотров13K

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


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

Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии13

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

Время на прочтение7 мин
Количество просмотров29K

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

Я начинаю публиковать серию статей о веб-разработке на Эрланге. Многие хотят попробовать Эрланг, но сталкиваются с проблемой, что вводные курсы в основном касаются Эрланга как функционального языка и далеки от реальных проектов (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 фреймворки в других языках.
Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии121

Простыми словами о Twelve-Factor App

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

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

Манифест (на хабре есть отличный перевод) слишком подробен и хорош для детального изучения. В этой же статье, я коротко остановлюсь на основных преимуществах.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии1

Открытая бухгалтерия в Министерстве образования и науки Украины

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



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

Сегодня данные доступны на сайте министерства (UPD: спасибо за новую ссылку sad. Дамп можно скачать по ссылке), а под катом короткая инструкция как обрабатывать данные, кабель на миллион гривен (около 50 тыс. долларов), и почему пока открытая бухгалтерия не так эффективна.
Читать дальше →
Всего голосов 84: ↑66 и ↓18+48
Комментарии47

Стартапы вдохновленные сексом: плюсы, минусы, подводные камни

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

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

Текст без картинок
Всего голосов 78: ↑54 и ↓24+30
Комментарии69

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

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

image

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

Вопросы и ответы
Всего голосов 19: ↑18 и ↓1+17
Комментарии3

Генерация xkcd паролей на PHP

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


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

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

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

Описание библиотеки
Всего голосов 53: ↑43 и ↓10+33
Комментарии53

Объектная гимнастика

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

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

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

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

Читать дальше →
Всего голосов 53: ↑26 и ↓27-1
Комментарии23

Идеи для конкурса Nokia

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

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

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


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

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

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

3 котенка


Еще 2 идеи ...
Всего голосов 32: ↑21 и ↓11+10
Комментарии5

Притча о покрытии кода тестами

Время на прочтение2 мин
Количество просмотров42K

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

Немного времени спустя другой программист задала этот же вопрос. Великий мастер указал на котел с кипящей водой и сказал:
— Сколько зерен риса я должен положить в этот котел?
Программист с озадаченным видом ответила:
— Как я могу ответить наверняка? Все зависит от того, сколько людей вам надо накормить, насколько они голодны, какие еще блюда вы подаете, сколько риса у вас есть и от многого другого.
— Совершенно верно. — сказал великий мастер.
Второй программист улыбнулась, поклонилась и ушла.
В конце дня...
Всего голосов 143: ↑127 и ↓16+111
Комментарии65

Таблица для выбора диагонали экрана и разрешения

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



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

Инструкция и теория
Всего голосов 117: ↑107 и ↓10+97
Комментарии31

Баннер Автокадабры и ГОСТ Р 52289-2004

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

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



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

UPD: С подачи Werdas — тротуар с противоположной стороны.
Всего голосов 302: ↑277 и ↓25+252
Комментарии68

Анимированный GIF со звуком

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

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

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

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

Гифок под катом не будет, а будет процесс создания расширения для стандарта, написания конвертера и плеера.
детали реализации
Всего голосов 68: ↑61 и ↓7+54
Комментарии39

Что записано внутри бесконтактных карт Киевского метрополитена?

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


Фото — Metromuseum.net

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

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

Согласен
Всего голосов 123: ↑120 и ↓3+117
Комментарии84
1

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность