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

Льет, как из ведра? У Леонида та же проблема.
image

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

Аналитики системы электронных платежей PayOnline внимательно следят за развитием рынка безналичных платежей в России и изменением платежных привычек россиян. По итогам первого полугодия 2014 годы мы подготовили свежий срез рынка банковских карт и рады представить его читателям в инфографике цикла «Рунет в картинках»: «Банковские карты в мире и в России 2014».

Из инфографики вы узнаете сколько банковских карт различных типов (расчетные, кредитные, расчетные с овердрафом) эмитировано в России на сегодняшний день, какой была динамика роста количества карт с 2008 года по 2014 год, в каком году платежных операций, совершаемых с помощью банковских карт стало больше, чем операций по снятию наличных, сколько карт сегодня приходится на одного россиянина. Также в материале представлен небольшой срез по крупнейшим мировым платежным системам.



Смотреть инфографику

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


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

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


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

Комбинаторные (монадические) парсеры достаточно хорошо известны (wikibooks). Они представляют из себя библиотеку маленьких парсеров, которые распознают простые элементы грамматики, и способы объединять несколько парсеров в один (комбинировать — от сюда и название). Монадические они потому что один из способов комбинирования, порождения парсера остатка текста на основе результата разбора начала, удовлетворяет условиям, накладываемым на математический объект «монада». В языке Haskell это позволяет воспользоваться мощным сервисом, предоставляемым языком и библиотеками. В других языках название «монадические» можно смело игнорировать — это не будет мешать их реализации и использованию, включая упомянутую выше операцию «bind».

Проще всего комбинаторные парсеры реализуются в языках с поддержкой замыканий, но можно воспользоваться и классическим ООП (пример описан Rebecca Parsons в книге Мартина Фаулера «Предметно-ориентированные языки»).
К преимуществам комбинаторных парсеров относится простота использования (запись на языке программирования практически не отличается от обычного описания грамматики), независимость от препроцессора (как yacc/bison, happy или ocamlyacc), возможность реализовать некоторые элементы, плохо укладывающиеся в контекстно-свободную грамматику, прямо на языке программирования общего назначения.

К недостаткам — сложность составления сообщений об ошибке, неспособность работать с леворекурсивной грамматикой (приводит к зацикливанию), а так же то, что очень легко сделать этот парсер не эффективным по быстродействию и памяти. (Одна из причин — компилятор не может произвести оптимизацию в терминах грамматики, так как работает на уровне языка программирования. Но есть и другие тонкости, требующие внимания, если требуется эффективность.)
Как альтернативу можно рассмотреть реализации в виде макросов (например OCaml streams parsers). В Perl6 поддержка грамматик встроена в язык.

Наследование

Персер конкретного языка состоит из множества более специализированных парсеров, ссылающихся друг на друга. В этом отношении парсеры напоминают методы некого объекта. Возникает желание порождать парсеры новых версий языков, подменяя отдельные подпарсеры (как это делается в паттерне проектирования «шаблонный метод» из ООП). Для экспериментов с этим подходом (а так же в порядке изучения очередного языка) я выбрал язык Julia — динамически-типизированном с особым подходом к наследованию (подобному CLOS из Common Lisp и R).
В отличие от обычных комбинаторных парсеров, подход с наследованием является экспериментальным (хотя в некотором виде поддерживается библиотекой макросов OCaml и языком Perl6). Пока он порождает не очень читабельный код. Исходный код доступен на Github.
Читать дальше →

Комбинаторные (монадические) парсеры достаточно хорошо известны (wikibooks). Они представляют из себя библиотеку маленьких парсеров, которые распознают простые элементы грамматики, и способы объединять несколько парсеров в один (комбинировать — от сюда и название). Монадические они потому что один из способов комбинирования, порождения парсера остатка текста на основе результата разбора начала, удовлетворяет условиям, накладываемым на математический объект «монада». В языке Haskell это позволяет воспользоваться мощным сервисом, предоставляемым языком и библиотеками. В других языках название «монадические» можно смело игнорировать — это не будет мешать их реализации и использованию, включая упомянутую выше операцию «bind».

Проще всего комбинаторные парсеры реализуются в языках с поддержкой замыканий, но можно воспользоваться и классическим ООП (пример описан Rebecca Parsons в книге Мартина Фаулера «Предметно-ориентированные языки»).
К преимуществам комбинаторных парсеров относится простота использования (запись на языке программирования практически не отличается от обычного описания грамматики), независимость от препроцессора (как yacc/bison, happy или ocamlyacc), возможность реализовать некоторые элементы, плохо укладывающиеся в контекстно-свободную грамматику, прямо на языке программирования общего назначения.

К недостаткам — сложность составления сообщений об ошибке, неспособность работать с леворекурсивной грамматикой (приводит к зацикливанию), а так же то, что очень легко сделать этот парсер не эффективным по быстродействию и памяти. (Одна из причин — компилятор не может произвести оптимизацию в терминах грамматики, так как работает на уровне языка программирования. Но есть и другие тонкости, требующие внимания, если требуется эффективность.)
Как альтернативу можно рассмотреть реализации в виде макросов (например OCaml streams parsers). В Perl6 поддержка грамматик встроена в язык.

Наследование

Персер конкретного языка состоит из множества более специализированных парсеров, ссылающихся друг на друга. В этом отношении парсеры напоминают методы некого объекта. Возникает желание порождать парсеры новых версий языков, подменяя отдельные подпарсеры (как это делается в паттерне проектирования «шаблонный метод» из ООП). Для экспериментов с этим подходом (а так же в порядке изучения очередного языка) я выбрал язык Julia — динамически-типизированном с особым подходом к наследованию (подобному CLOS из Common Lisp и R).
В отличие от обычных комбинаторных парсеров, подход с наследованием является экспериментальным (хотя в некотором виде поддерживается библиотекой макросов OCaml и языком Perl6). Пока он порождает не очень читабельный код. Исходный код доступен на Github.
Читать дальше →

Не сомневаюсь, что большая часть читающих этот пост родилась еще в пленочную эру, и прекрасно помнит, зачем нужно зажигать особую красную лампу, и чем фиксаж отличается проявителя. У себя в ванных мы превращали отщелканную пленку в настоящие фотографии, а многие этим балуются и до сих пор. Но, цифровая фотография сегодня вне конкуренции, на самом деле, она существует с 1975 года. А первая цифрозеркалка появились уже в 1991 году. Kodak DCS 100 была модифицированной пленочной Nikon F3 с внешним жестким диском. По началу, это были дорогие и громоздкие решения. К тому же, вплоть до появления Nikon D1 и Canon EOS 1D в 2001 году, качество снимков, получаемых с пленки, радикально превосходило цифру.

image
Процесс проявки

Что будущее именно за цифровым фото стало окончательно понятно в 2003 году. И успех первой недорогой зеркалки Canon 300D, с ценником менее 1000$, тому подтверждение. Вплоть до 2008 года зеркалки практически безраздельно царствовали на рынке, однако серьезные камеры со сменной оптикой, но без зеркала, отстали от появления 300D всего на один год. Читать дальше →

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

Удивительно, но новое фотоприложение пока создают только лишь для платформы Android. Для разработки приложения под iOS еще только ищут подходящего разработчика. Приложение будет копировать популярный Instagram. У пользователя будет возможность делать фотографии, накладывать на них фильтры и делать минимальную обработку на основе уже созданного соцсетью фоторедактора. «Делают что-то вроде Facebook Camera, — говорит источник „Известий“. — Олег Илларионов (старший разработчик «ВКонтакте») большой энтузиаст нового проекта. Он выбил под этот проект ресурсы и верит, что сервис понравится пользователям».



Не каждый из нас хочет поведать всему миру про свой очередной гениальный стартап.
Тем же, кто все-таки сможет его не только в голове носит годами, но и сделать, а еще и сможет больше года продержаться, скорее всего нужно «выходить в люди». А именно — проводить презентации, ходить на выставки или, как в нашем случае, сходить на Moscow Startup Day. Сразу скажу отдельное спасибо geektimes! Именно благодаря тому, что мы разместили у вас статью о нашем проекте и получили грамотную обратную связь, мы и решили выйти на мероприятие с лозунгом: «Главное событие для стартапов и тех, кому они интересны».
Читать дальше →

Для пользователей баннерорезалок вроде AdBlock видео на Rutube теперь принудительно показывается в минимальном качестве и с соответствующим уведомлением:


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