Pull to refresh
1
0
Карпенко Юрий @KYuri

Программист

Send message

Платформа для видеосервиса сроком в квартал

Reading time14 min
Views19K
Сегодня мы расскажем, как нам удалось построить свою платформу для сервиса видео на Одноклассниках на Java за 3 месяца.

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

В основном, это стандартный видеосервис. Пользователь загружает видео, дальше оно проходит модерацию, после чего другие пользователи могут его посмотреть.

Видеосервисом на Одноклассниках пользуется свыше 10 миллионов уникальных пользователей в день, которые смотрят свыше 70 миллионов видеороликов и загружает 50 тысяч видео в день.

Видеобаза Одноклассников насчитывает свыше 28 миллионов роликов. Исходящий трафик по вечерам достигает 80 гигабит в секунду. Ежедневно загружаемые 5 терабайт нового видео в день преобразуются в наш внутренний формат и на выходе получается 2 терабайта. Получившиеся файлы хранятся в трех копиях, что, в итоге, суммарно составляет 6 терабайт нового видео в день. Входящий трафик по загрузке достигает 2 гигабит в пиковые часы.


Читать дальше →
Total votes 50: ↑39 and ↓11+28
Comments9

Ceph: Cloud Storage без компромиссов

Reading time10 min
Views87K
Здравствуйте, уважаемые читатели!

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

Ни RAID-массивы, ни «железные» СХД не способны решить все перечисленные задачи одновременно. Именно поэтому все большее распространение в индустрии хостинга приобретает Software-defined storage. Одним из ярких представителей SDS является распределенное хранилище под названием Ceph.

Мы решили рассказать об этом замечательном продукте, который используется в CERN, 2GIS, Mail.ru и в нашем облачном хостинге.
image
Далее...
Total votes 49: ↑47 and ↓2+45
Comments51

Как умирает техника? Элементы теории надёжности

Reading time5 min
Views56K
Некоторые люди, которые интересуются нашими услугами, задают вопрос: «Серверы, которые вы предоставляете, новые или б/у?» Именно этот вопрос побудил нас немного углубиться в теорию надёжности и рассказать, чем не совсем новый сервер лучше совсем нового, а также какой смысл надписи «Срок службы» в документации к Вашему холодильнику, почему и из каких соображений нужно заранее думать о замене рабочего ноута и некоторые другие интересные вещи.


Читать дальше →
Total votes 56: ↑52 and ↓4+48
Comments53

Как мы деньги привлекали или 13 историй российских инвесторов

Reading time20 min
Views139K


В поисках инвестиций наш стартап по изучению английского онлайн Puzzle English провёл серию встреч с представителями российских фондов. Рынок венчурных инвестиций в нашей стране еще молод и у большинства инвесторов опыт ограничивается несколькими проектами, исход по которым пока не ясен. Примечательно, насколько разнятся между собой эти тринадцать историй.
читать дальше: 13 занимательных историй венчурного бизнеса
Total votes 133: ↑109 and ↓24+85
Comments32

Kenju форк Kendo UI Web (GPL3)

Reading time2 min
Views19K
Несколько дней назад произошло одно важное событие в развитии JS фреймворка Kendo UI от компании Telerik. Они выпустили OpenSource версию продукта, под лицензией Apache v2 — Kendo UI Core. На деле же всё оказалось не так просто и однозначно.

Ранее вся библиотека Kendo UI выпускалась под лицензией GPL v3, что не разрешало использовать её бесплатно в коммерческих продуктах, для коммерческих приложений на основе этой библиотеки была разработана Kendo UI commercial license. Но для OpenSource же эта библиотека была настоящим подарком. Конечно же есть и другие аналогичные библиотеки и у них огромное количество своих поклонников. Плюсами Kendo можно считать:
1) Полная поддержка JQuery
2) Большое количество виджетов, что позволяет обойтись одной JS библиотекой (не считая jquery) в большинстве случаев
3) Качественные и приятные темы оформления
4) Отличная поддержка Twitter Bootstrap. Для kendo даже есть своя тема оформления bootstrap, для одновременной работы с CSS фреймворком.

Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments7

Основы парсинга с помощью Python+lxml

Reading time6 min
Views187K
Добрый день, уважаемые читатели.
В сегодняшней статье я покажу основы разбора HTML разметки страниц с помощью библиотеки lxml для Python.
Если вкратце, то lxml это быстрая и гибкая библиотека для обработки разметки XML и HTML на Python. Кроме того, в ней присутствует возможность разложения элементов документа в дерево. В статье я постараюсь показать, насколько просто ее применение на практике.

Читать дальше →
Total votes 42: ↑38 and ↓4+34
Comments9

Как браузеры реализуют отзыв цифровых сертификатов

Reading time5 min
Views25K
В нашем посте, посвященном уязвимости Heartbleed, мы указывали, что одной из дополнительных мер безопасности при работе с HTTPS подключением является включенная в браузере опция проверки отозванного цифрового сертификата. Для Heartbleed это особенно актуально, так как после обновления уязвимой версии OpenSSL на сервере, специалистам компании необходимо заново получить новый приватный ключ (SSL/TLS) и сгенерировать новый сертификат, а старый отозвать. Браузеры должны различать подобные ситуации (использования в HTTPS отозванного цифрового сертификата) и уведомлять своих пользователей о том, что используемое ими соединение с сервером уже не является доверенным.

Цифровые сертификаты SSL или TLS используются для привязки криптографического открытого ключа к информации об организации (компании, сервисе и т. д.). Таким образом, будучи выданным центром сертификации (Certification Authority), он гарантирует клиенту этой организации, что используемый открытый ключ шифрования принадлежит именно этой организации. Безопасное HTTPS соединение использует преимущество такой системы шифрования с открытым ключом, при которой сертификаты SSL/TLS, а также закрытый ключ сервера, используются для установки полностью безопасного подключения, которому пользователь может безоговорочно доверять при передаче своих данных.

Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments11

JSCS: JavaScript Code Style

Reading time3 min
Views59K
Когда девять месяцев назад я написал для себя маленькую консольную утилиту, я и не подозревал, что вскоре она превратится в серьёзный и единственный в своём роде инструмент, которым будут пользоваться даже такие известные всем команды, как jQuery, Bootstrap, Angular. Сейчас, когда я пишу эту статью, у моего проекта на гитхабе 1010 звёздочек, и мне очень радостно думать о том, что так много людей смогли с помощью моей придумки сделать свою работу удобнее.

История этого проекта началась с моей личной боли.

Незадолго до этого момента я перевёлся из одной команды Яндекс.Карт в другую и постепенно вливался в разработку нового для меня продукта. Все было хорошо, новый проект мне нравился, но кодстайл, в котором писали ребята из моей новой команды, очень уж сильно отличался от того стиля кодирования, в котором писал я и ребята из моей прежней команды. Однажды меня даже посетила нелепая мысль, что кодстайл в этой группе писался в противоположность кодстайлу в прежней группе специально, чтобы запутать меня.

Читать дальше →
Total votes 126: ↑121 and ↓5+116
Comments118

jWidget — объектно-ориентированный JavaScript MV* framework

Reading time17 min
Views8.1K
Есть замечательный сайт http://todomvc.com/, на котором демонстрируется решение одной и той же задачи с помощью разных JavaScript MV* (Model-View-[Controller]) фреймворков. Сейчас там представлены десятки различных фреймворков, у каждого из которых есть свои преимущества и недостатки. Есть там и такие гиганты, как Angular, Ember и Backbone. Несмотря на высокую конкуренцию, я все равно хотел бы продемонстрировать свой MV* фреймворк — jWidget.

Я быстро просмотрел все решения, представленные на сайте TodoMVC, и не нашел ни одного фреймворка, похожего на jWidget. Дело в том, что, помимо JavaScript, я много программирую на объектно-ориентированных языках программирования, таких как Java, C#, а в прошлом и на C++. Поэтому я большой фанат объектно-ориентированного программирования, SOLID принципов и паттернов объектно-ориентированного проектирования. Мне не нужен фреймворк, который стеснял бы меня в возможности применения стандартных объектно-ориентированных решений. То, что я увидел в существующих решениях TodoMVC, не внушает доверия в этом отношении. Как правило, они предоставляют некий декларативный синтаксис и мощный шаблонный движок, но объектно-ориентированная основа всего этого, даже если она существует, скрыта от наших глаз.

Читать дальше →
Total votes 28: ↑20 and ↓8+12
Comments27

Облачная платформа Яндекса: Cocaine в действии

Reading time21 min
Views38K
Мы уже рассказали вам, что такое Cocaine и как его развернуть «в домашних условиях». Сегодня речь пойдёт о том, как пользоваться его инфраструктурой на уровне программиста. Кстати, 26 апреля в 14:00 в московском офисе Яндекса пройдет встреча, на которой можно будет вживую пообщаться с нами — командой, которая делает Cocaine. Приходите, но не забывайте регистрироваться.



Итак, из сегодняшнего поста вы узнаете:

  • как писать приложения;
  • как пользоваться приложениями и сервисами нативно, используя предоставленные фреймворки;
  • как изменить приложение, чтобы оно отвечало по http, а также как потестировать эти приложения, используя Cocaine http proxy;
  • как написать собственный сервис.

Давайте же начнем наше погружение в «кокаиновые» будни программиста.
Много кода инсайд
Total votes 80: ↑72 and ↓8+64
Comments18

Интернет-радио с множеством ведущих из разных городов и звонками в прямом эфире

Reading time11 min
Views16K
С 1 по 4 мая 2014 года в Воронеже уже в пятнадцатый раз пройдёт ежегодный всероссийский фестиваль японской анимации. Фестиваль стал для нас традицией, посетители съезжаются со многих городов России.

У участников и посетителей возникает множество вопросов и идей относительно фестиваля. И хотя у них есть много возможностей задать эти вопросы нам и получить ответы, организаторы придумали способ дать им ещё одну возможность — организовать интернет-радио и возможность позвонить в прямой эфир и задать вопрос там.

Однако, это осложнено тем, что сам оргкомитет фестиваля географически весьма распределён. Мы находимся в разных городах, в числе которых Кобе (Япония), Москва, Ростов-на-Дону, Вальдкирх (Германия), Краснодар, и конечно же, Воронеж, и это весьма долго и дорого — собраться физически в одном месте. (Достаточно того, что на сам фестиваль все съезжаются.) А нужно ещё организовать входящие звонки в эфир, и желательно тоже бесплатно. При этом хотелось бы максимально простых и безопасных инструкций, например, использования уже имеющегося ПО на компьютерах аудитории.

Организаторы достаточно успешно делают фестиваль, используя голосовые конференции в Skype. Естественной идеей было собраться в конференцию и как-то завернуть её в радио. А для приёма звонков — запустить на компьютере второй Skype, с другой учётной записью, и в нужный момент после приёма вызова заворачивать его на радио и в конференцию (и также конференцию в него).

Всё нижесказанное относится к Linux. Я сознательно не привожу точных названий пакетов, поскольку в разных дистрибутивах они могут различаться. Также должен сразу предупредить, что я не работаю с Windows уже много лет, и не имею ни малейшего понятия, как то же самое сделать в ней.

Примечание по поводу скриншотов: они были сделаны не в самый последний момент. Они отражают суть, но не точные настройки, которые использовались. Если что-то отличается, верить следует тексту, а не картинкам.
Читать дальше →
Total votes 30: ↑25 and ↓5+20
Comments24

Библиотека для обмена событиями, данными и задачами между вкладками браузера

Reading time11 min
Views19K
Приветствую, уважаемое Хабрасообщество!

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

Сейчас библиотека выложена с парой примеров на GitHub, а под хабракатом хотелось бы осветить некоторые тонкости её применения и часть внутренней логики. Буду рад, если моя библиотека поможет кому-то сэкономить n-ое количество времени и позволит избежать изобретения собственного велосипеда.

Кому интересно — добро пожаловать под кат.
Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments16

Вышли компиляторы GCC 4.9.0 с множеством новых «фишек»

Reading time2 min
Views28K
Якуб Елинек (Jakub Jelinek) от имени всех разработчиков свободных компиляторов GNU Compiler Collection из Фонда свободного ПО официально объявил о выпуске новой версии GCC 4.9.0.

«Один год и один месяц прошли с момента выпуска последней мажорной версии GNU Compiler Collection, — пишет Елинек, — так что пришло время объявить о новом основном релизе. GCC 4.9.0 несёт в себе важные новые функции, недоступные в GCC 4.8.x или предыдущих версиях GCC».

Среди самого главного можно отметить поддержку OpenMP 4.0, последней версии спецификаций программирования для многоядерных процессоров. Кстати говоря, в LLVM/Clang вообще отсутствует поддержка хоть какой-нибудь версии OpenMP.
Читать дальше →
Total votes 79: ↑70 and ↓9+61
Comments22

Где наша бизнес-логика для идеалиста?

Reading time11 min
Views25K
В этой статье я попробую сам разобраться в себе и в своих аргументах. Для начала попробую оппонировать автору статьи, перевод которой нашел на хабре Где наша бизнес-логика, сынок?. Её писал такой же идеалист, которым я был еще лет 10 назад. Поэтому по сути в этой статье я буду спорить сам с собой. Дело в том, что чем больше приложений я разрабатываю тем больше красивые теории перестают вписываться в идеальные схемы. Идеальные схемы хороши тем, что они просты. Вас спрашивают где бизнес слой? И ты легко можешь сказать на стороне клиента или на стороне сервера. Если смешенно многозначительно крутят носом и говорят «гавно-код». С этим я не согласен. Реальный мир не вкладывается в идеалистические концепции, точнее его можно туда запихнуть, но мы от этого скорее потеряем. Поэтому вначале подсознательно я понимал, что есть разные случаи. А теперь все более пытаюсь сформулировать, что влияет на то или иное решение по размещению бизнес логики. Здесь мы оставим красивые теории без аргументации молодым утопистам желающим простых решений.

Читать дальше →
Total votes 10: ↑7 and ↓3+4
Comments37

Опять вконтакте: о старом по-новому

Reading time1 min
Views13K
Пару месяцев назад, проскочила новость о том, как узнать фамилию и имя со страницы за которой закреплен интересующий нас телефонный номер.

Привожу инструкцию:
1. Заходим на мобильную версию сайта m.vk.com ( именно мобильная, на обычной спрашивает Фамилию)
2. Жмем «Забыли пароль?»
3. Вводим номер телефона
4. Получаем имя и аватар
Читать дальше →
Total votes 88: ↑20 and ↓68-48
Comments30

Безопасная платежная карта своими руками

Reading time1 min
Views59K
Для оплаты товаров или услуг через интернет платежная карточка не требуется. Достаточно знать всего-навсего три группы цифр (16+4+3):
— номер карты (16 цифр);
— срок действия: месяц и год (4 цифры);
— секретный CVV2 код (3 цифры на обратной стороне).

Если карточка попадает в руки жуликов, переписать указанные 23 цифры можно за считанные секунды. Не говоря уже о ситуации физической утери, от которой не застрахован никто.

Поэтому делюсь своей практикой: от греха подальше CVV2 код с карт Visa и Master стирать. Лучше ножницами. Предварительно, конечно, где-то его продублировав. А для удобства оплаты счетов в интернете написать ключ от кода фломастером (маркером) прямо на карточке.

image
Защищенная карточка (после манипуляций).

Читать дальше →
Total votes 91: ↑42 and ↓49-7
Comments102

Анекдот о том, как я GRUB2.0 в BURG превращал или Самогон можно гнать даже из табурета

Reading time2 min
Views8.9K
Это маленькая ерунда, которая в студенческое время помогла мне избежать сборки и подтягивания зависимостей BURG для хомячковой бубунты, получив горизонтальное графическое меню выбора системы.
Никаких крутых тем тогда не было и меню выбора даже в графическом варианте было только вертикальное.

Введение какое-то, что ли

Какое-то время назад я долго заглядывался на BURG. В меню загрузки у меня стоял православный «консольный» GRUB 1.99 с рсх-ным (если не вру) самолетиком на фоне. Но как только я увидел гладкое, многопиксельное графическое меню BURG, я сразу его захотел. На том все и кончилось: для того конкретного дистрибутива Linux, которым я тогда пользовался, сборки не было, а попытка собрать из исходников несколько раз упала из-за все новых и новых неразрешенных зависимостей. Мне стало грустно и лень.

Но вот совсем скоро вышел GRUB 2.0. Радости были полные штаны, ведь там тоже уже было красивое меню «скартинками», без всяких насадок в виде BURG. Как горный козел, я поскакал ставить обновку и «вышивать в ней перед зеркалом», предав идеи брутальных консольных мачо, смотрящих фильмы прямо из нее родимой (рисуя оверлей через fbdev). Но тут внезапно меня ждало огорчение. Почему-то я с самого начала прикипел душой к горизонтальным меню. Как на тех пошлых картинках из интернетов, где в рядок стояли какие-то убунты, макось и виндось. А новый блестящий граб предлагал только вертикальные, хоть и всех цветов и оттенков.
Читать дальше →
Total votes 17: ↑10 and ↓7+3
Comments7

Что показали тесты новой flash-СХД EMC XtremIO

Reading time4 min
Views26K
image
Вот так выглядела транспортная коробка, которая к нам приехала. Железка стоит по прайсу как 3-4 квартиры в Москве.

В начале марта мы проводили открытый тест-драйв новой flash СХД от EMC — EMC XtremIO. Система считается одной из самых быстрых в мире СХД. Особенность — inline-дедупликация на борту. Железо дорогое, но как сказал один из наших заказчиков: «Нифига себе, я только на лицензиях буду экономить 3 миллиона долларов в год». Потому что массив позволяет сократиться с 128 ядер до 64, а лицензии часто считаются именно по ядрам. И ещё, особенно интересна система будет тем, кто работает с виртуальными средами, кто ищет способ уменьшить время отклика СХД и у кого есть проблемы с производительностью.

В меню были включены следующие тесты: IOPS 100% read, random 4k; IOPS 50% read 50% write, random 4k; IOPS 100% write, random 4k. Проводились с помощью IOmeter. Еще пробовали систему в боевом режиме, смотрели ее реакцию на отказы компонентов (вытаскивали диск «на живую» под высокой нагрузкой, перезагружали контроллер, отключали питание по одному из вводов, выключали UPS) и пиковую нагрузку.
В общем, было на что посмотреть. Подробности ниже.
Читать дальше →
Total votes 34: ↑29 and ↓5+24
Comments18

Горизонтальное масштабирование небольших Web-приложений на Java (вопросы собеседований)

Reading time4 min
Views35K
Эта тема была поднята в ходе нескольких (3+) собеседований который я прошёл за последние полтора месяца — в разных вариациях но примерно об одном. Казалось бы, известные вещи — но собрав все ответы и объяснения какие я давал (и кое-что что нашёл позже в гугле), решил сохранить их не у себя в гугл-драйве, а написать краткий обзор.

Речь шла о небольших и типовых приложениях Enterprise / Web на Java, каких пишется множество (ну такие, на 10-100 тысяч клиентов, миллион посещений и т.п.). Пусть это будет обобщённый диалог в виде вопросов и ответов.

 

В: Допустим, у вас есть приложение (самое обычное — JSP, Spring, Hibernate например) развернутое на томкате (Apache Tomcat) и вы однажды замечаете что сервер с томкатом загружен на 80% в среднем. Что делать?

Читать дальше →
Total votes 53: ↑44 and ↓9+35
Comments87

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity