Как стать автором
Обновить
58
0
Олег Полудненко @uaoleg

Пользователь

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

Compass — инструмент для эффективной работы с CSS

Время на прочтение7 мин
Количество просмотров108K
С выходом CSS3 появилось множество новшеств: с новыми свойствами стили стали сложнее, но не появилось никаких улучшений для поддержки новых и старых сложностей, в том числе дупликации кода. В чистом CSS отсутствует модульность, так как разбиение стилей на файлы и их подключение через @import пагубно влияет на производительность.
Решение этих проблем нашлось в CSS препроцессорах, с их помощью стало возможным использование переменных, выполнение математических подсчетов в коде, появилась возможность повторно использовать код с помощью миксинов и наследования.
Читать дальше →
Всего голосов 38: ↑30 и ↓8+22
Комментарии43

0 A.D. — свободная стратегия в реальном времени собирает деньги на Indiegogo

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


Wildfire Games — группа независимых разработчиков, расположенных по всему свету, которая уже более 4 лет разрабатывает open-source стратегию под названием 0 A.D. Игра напоминает популярную Age of Empires, которая и послужила источником вдохновения для авторов. Изначально у игры был закрытый код, но в 2008 году компания решила сменить модель разработки и выложила код под GPL 2+, а игровой контент под CC-BY-SA. Игра разрабатывается для Windows, OS X и Linux.

Изначально в проекте участвовало 10-15 человек, но теперь команда сильно разрослась — до сотни человек. Многие из них непостоянно участвуют в разработке игры, некоторые ограничиваются единичным вкладом, но на протяжении этих лет образовалась основная группа разработчиков, которая готова упорно продолжать работу.

В игре представлены 10 цивилизаций: Афины, Македония, Спарта, бритты, галлы, племена иберов, Карфаген, Персидская империя, Римская республика и империя Маурьев. По окончании кампании планируется ввести эллинистический Египет и государство Селевкидов. Кстати, названия объектов для всех цивилизаций написаны на их собственных языках.
Читать дальше →
Всего голосов 131: ↑123 и ↓8+115
Комментарии35

Создание видео редактора — полезные рецепты avconv (ffmpeg)

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


Недавно потребовалось написать небольшой видеоредактор с веб-интерфейсом.
До этого изредка доводилось пользоваться командами типа
ffmpeg -i file.avi file.mp3

в основном для конвертации из одного формата в другой. Все всегда было более менее гладко и сложно было представить, сколько на самом деле существует всяких нюансов для работы с видео и аудио.
Но начнем с начала. С некоторых пор моя ubuntu начала выдавать:
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.

В целом, пока это использовалось по-мелочам, это было не особо важно, но закладывать уже устаревающую фичу в проект как-то «не оно». Пришлось гуглить что к чему и выяснилось, что проект ffmpeg некоторое время назад раскололся и часть разработчиков занялась созданием библиотеки libav, которая и включена в настоящее время в ubuntu по-умолчанию. Разумеется, совместимость передовых фич была принесена в жертву первой. Заодно и с переименованием проекта исполняемый файл ffmpeg был переименован в avconv, о чём и было вышеупомянутое предупреждение.

Под катом небольшая выжимка основных фич, которые пригодились.
Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии13

Верстка писем, набор сниппетов

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


Автор изображения MVBen

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

В ходе работ у меня накопилось немного готовых решений, которые я сам ныне держу у себя под рукой и крайне часто использую, чем и с вами хочу поделиться.
Читать дальше →
Всего голосов 57: ↑49 и ↓8+41
Комментарии16

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю № 74 (8—14 сентября 2013)

Время на прочтение6 мин
Количество просмотров40K
Предлагаем вашему вниманию очередную подборку с ссылками на новости, интересные материалы и полезные ресурсы.


Читать дальше →
Всего голосов 57: ↑51 и ↓6+45
Комментарии11

Хранение деревьев в базе данных. Часть первая, теоретическая

Время на прочтение4 мин
Количество просмотров130K
Полгода назад написал бандл ClosureTable для фреймворка Laravel 3. Поводом для написания стала вот эта замечательная презентация Билла Карвина о способах хранения и обработки иерархических данных в MySQL с использованием PHP.

Итак. Существует несколько шаблонов проектирования баз данных для хранения и обработки иерархических структур:
  • Adjacency List («список смежности»)
  • Materialized Path («материализованный путь»)
  • Nested Sets («вложенные множества»)
  • Closure Table («таблица связей»)

Читать дальше →
Всего голосов 47: ↑41 и ↓6+35
Комментарии66

Разбор регулярных выражений

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


Хочу просто поделиться недавно найденным сервисом для работы с регулярными выражениями. Да, это еще один сервис. Но у него есть особенность — он позволяет не только составлять регулярные выражения, но и помогает разбирать уже написанные — эдакий regexp-декомпилятор.
Сервис называется Regex101.

Читать дальше →
Всего голосов 99: ↑94 и ↓5+89
Комментарии53

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю № 73 (1—7 сентября 2013)

Время на прочтение6 мин
Количество просмотров30K
Предлагаем вашему вниманию очередную подборку с ссылками на новости, интересные материалы и полезные ресурсы.


Читать дальше →
Всего голосов 53: ↑44 и ↓9+35
Комментарии14

HTML5 и drag & drop нескольких объектов

Время на прочтение4 мин
Количество просмотров43K
Перетаскиванием объектов на HTML5 никого уже не удивишь, но все же попробую рассказать кое о чем интересном, а именно, как сделать красивое перетаскивание нескольких объектов, используя только HTML5.

На странице есть набор элементов типа А, которые можно по одному или группой перетащить в элемент типа Б. Пользователь должен видеть, перетаскивает он один элемент или несколько. Перетаскивать один элемент просто, достаточно присвоить свойству draggable значение true, наверняка, все это делали.
Как перетаскивать несколько?
Всего голосов 29: ↑29 и ↓0+29
Комментарии12

Code coverage в Badoo

Время на прочтение5 мин
Количество просмотров16K
Несколько месяцев назад мы ускорили генерацию code coverage с 70 до 2,5 часов. Реализовано это было как дополнительный формат в экспорте/импорте coverage. А недавно наши pull requests попали в официальные репозитории phpunit, phpcov и php-code-coverage.

Мы не раз рассказывали на конференциях и в статьях о том, что мы «гоняем» десятки тысяч юнит-тестов за короткое время. Основной эффект достигается, как несложно догадаться, за счёт многопоточности. И всё бы хорошо, но одна из важных метрик тестирования ― это покрытие кода тестами.
Сегодня мы расскажем, как его считать в условиях многопоточности, агрегировать и делать это очень быстро. Без наших оптимизаций подсчёт покрытия занимал более 70 часов только для юнит-тестов. После оптимизации мы тратим всего 2,5 часа на то, чтобы посчитать покрытие по всем юнит-тестам и двум наборам интеграционных тестов общим числом более 30 тысяч.
Читать дальше →
Всего голосов 111: ↑101 и ↓10+91
Комментарии27

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

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

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

По условиям программы поощрений, те кто находит ошибки и публикует их согласно правилам, получают вознаграждение. Минимальная выплата за любую ошибку составляет $500. Однако Фейсбук может заплатить и больше, в зависимости критичности найденной уязвимости. Большинство выплат, как правило, составляют $1500. В своём блоге, исследователь безопасности Арул Кумар пишет, что получил $12 500 премиальных — приблизительно 25 базовых выплат.
Почему так много?
Всего голосов 64: ↑59 и ↓5+54
Комментарии30

Ким Дотком организовывает политическую партию в Новой Зеландии

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

Основатель Меги подтвердил в Твиттере намерение создать собственную политическую партию к парламентским выборам в 2014 году.
Читать дальше →
Всего голосов 36: ↑30 и ↓6+24
Комментарии9

Генераторы в действии

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

Небольшое вступление


Не так давно я решил для себя, что пора восполнить большой пробел в знаниях и решил прочитать про переходы между версиями PHP, т.к. понимал, что остался где-то между 5.2 и 5.3 и этот пробел необходимо как-то устранить. До этого я читал про namespaces, traits и т.д, но дальше чтения не уходило. И вот тут я заметил генераторы, почитал документацию, одну из статей на хабре на этот счет и после этого возникла мысль — а как раньше без них жили-то?

Данным переводом хочу помочь хотя бы новичкам, поскольку на php.net документация по генераторам на английском и, на мой взгляд, должным образом не раскрывает всю идею и места применения. Текста много, кода чуть меньше, картинок нет. Потребуются общие знания, например, про итераторы. Очевидный код комментировать не буду, а вот сложные для понимания примеры постараюсь объяснить в силу своих знаний.

UPD1: Изменил расплывчатую формулировку, про которую говорили в комментариях.
UPD2: Добавил решение с принудительным break.

И сразу под хабракат
Всего голосов 59: ↑55 и ↓4+51
Комментарии25

Посты-рекордсмены. Продолжение

Время на прочтение5 мин
Количество просмотров30K
Судя по реакции на предыдущий пост, тема парсинга Хабра и альтернативных топов интересна не только мне, поэтому продолжу.
Спасибо всем, кто голосовал и комментировал и отдельно тем, кто присылал идеи новых рейтингов и исследований.

В предыдущем посте (Посты-рекордсмены / Хабрахабр), я пробовал различные варианты сортировки постов Хабра, отличные от обычного рейтинга. В этом я буду сортировать по рейтингу, но не все посты, а отобранные по определённым критериям.
Читать дальше →
Всего голосов 80: ↑75 и ↓5+70
Комментарии13

Yii, непрерывная интеграция — как не сломать все

Время на прочтение7 мин
Количество просмотров32K
Мы часто экспериментируем с архитектурой, кодом, производительностью. Постоянно добавляем новый функционал. Мы постепенно обвязываем Yii своей “архитектурной” прослойкой — шардинг, работа с временно недоступными данными, разнообразные кеши и многое другое. Да, плод нашей работы, когда он будет заврешен, пойдет в Open Source.

Задача применяемой у нас Непрерывной Интеграции (Continuous Integration, CI) — не тестирование. Задача CI — обезопасится от разрушительных изменений в следствие рефакторинга, добавления нового функционала, изменений архитектуры. Также мы защищаемся от “плохого кода”, часто повторяющихся багов, “кривых” merge.

Для своего CI мы используем Jenkins под Debian. Время на развертку CI я затратил 12 часов — до полностью рабочего состояния. На поддержку CI я не трачу ни минуты в день — я не пишу тесты на каждую мелочь, не практикую TDD. Тем не менее, CI работает и спасает нас от глупых ошибок.

“Давайте будем внимательней”/”Давайте не делать ошибок” — взывал я к разработчикам, но это помогало лишь временно и то не на все 100%. Людям свойственно ошибаться, забывать, совершать оплошности. Нет, я не изобрел “серебряную пулю” для web-проектов и даже маленьку пульку для Yii — я придумал как стабилизировать свое приложение. Ваше приложение отличается от моего и мои методы у Вас могут не работать, да и не должны — я же делал их не для Вашего приложения, если мои методы работаю у Вас — примите это как чудо или как везение. Зато идея такого CI будет работать везде. Всего лишь идея.

Читать дальше →
Всего голосов 52: ↑47 и ↓5+42
Комментарии46

Электромобиль Tesla S сломал оборудование для проведения краш-тестов

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


Национальная администрация безопасности дорожного движения США (NHTSA) присудила наивысший рейтинг 5 звёзд электромобилю Model S производства компании Tesla Motors во всех категориях тестирования. Эта модель показала абсолютный лучший результат за всё время проведения таких тестов, хотя их обязательно проходит каждая модель, предлагаемая для продажи на территории США.

Хотя Tesla Model S выпускается в кузове седан, но её оценка выше, чем у всех внедорожников и микроавтобусов. В подробных результатах тестирования, которые высылают производителям, указан итоговый результат 5,4 балла.
Читать дальше →
Всего голосов 253: ↑238 и ↓15+223
Комментарии710

Отправка сообщения от любого пользователя любому. ̶$̶6̶0̶0̶ Бесплатно ;)

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


Немного новостей с рынка продажи эксплойтов


Для введения в экскурс дела — существуют различные биржи эксплойтов, и сегодня на одной из них — 1337day.com, появился эксплойт со следующим названием — "Facebook Send Messages From Anyone 0day" с ценой в $600…
Читать дальше →
Всего голосов 79: ↑72 и ↓7+65
Комментарии31

HTML-атрибуты data-* для хранения параметров и получения их в js

Время на прочтение3 мин
Количество просмотров304K
В HTML 5 были введены такие атрибуты тегов, как data-*.
Про них вы наверняка слышали или видели в разных проектах.
Например, их используют такие модные товарищи, как Twitter Bootstrap и jQuery Mobile.

Раньше использовали классы, ради сохранения информации в HTML, с целью последующего использования в js.

Например, для сохранения уникального номера блока часто пишут так:

<div class="items">
  <div class="item1">...</div>
  <div class="item3">...</div>
  <div class="item6">...</div>
  <div class="item1">...</div>
  ...
</div>


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

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

Иногда используют атрибут ‘rel’, но его можно использовать только для ссылок, хотя я видел и у других элементов. И опять же недостаток — мы можем записать в него только одно значение.

И вот нам на помощь спешат Чип и Дейл атрибуты data-*.
Читать дальше →
Всего голосов 71: ↑46 и ↓25+21
Комментарии82

JavaScript F.A.Q: Часть 1

Время на прочтение15 мин
Количество просмотров73K
image

Несколько дней назад мы с TheShock создали топик в котором собирали ваши вопросы, касательно JavaScript (архитектура, фрэймворки, проблемы). Настало время ответить на них. Мы получили очень много вопросов, как в комментариях так и по email. Эта первая часть ответов — те вопросы, которые достались мне.
Читать дальше →
Всего голосов 232: ↑227 и ↓5+222
Комментарии50

JavaScript F.A.Q: Часть 2

Время на прочтение14 мин
Количество просмотров76K
image

Около 2-х месяцев назад я и TheShock собирали вопросы по JavaScript в теме FAQ по JavaScript: задавайте вопросы. Первая часть, те вопросы, которые достались мне, появилась буквально через несколько дней JavaScript F.A.Q: Часть 1, а вот вторая часть все не выходит и не выходит. TheShock сейчас переезжает в другую страну и поэтому ему не до ответов. Он попросил меня ответить на его часть. Итак вторая часть ответов — те вопросы, которые достались тоже мне.
Читать дальше →
Всего голосов 185: ↑180 и ↓5+175
Комментарии100

Информация

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