Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Революция масштабирования — Rsizr.com

Чулан

В этом хабратопике многоужаваемый eject представил нам новую технологию масштабирования изображений Seam Carving, разработанную в Исследовательской лаборатории Mitsubishi Electric. Кому лень читать, суть состоит в «умном» масштабировании, позволяющим неравномерно изменять пропорции картинки таким образом, чтобы оставить смысловое наполнение максимально нетронутым.

Вот первая известная мне реализация — Rsizr.com. Нужно сказать, очень впечатляет!

Комментарии, как говорится, излишни. Просто залейте своё изображение и поиграйте с масштабом. Только не советую загружать большие файлы — потребуется много времени на обработку.

По мотивам моего блога.

UPD: Наглядная демонстрация: http://youtube.com/watch?v=vIFCV2spKtg и http://rsizr.com/about/gallery.
Всего голосов 28: ↑27 и ↓1 +26
Просмотры323
Комментарии 36

Основы масштабирования

Разработка веб-сайтов
Прочитав в этом блоге о балансировке на стороне клиента, решил опубликовать свою статью, в которой описаны основные принципы масштабирования для web-проектов. Надеюсь, хабралюдям будет интересно почитать.

Основы масштабирования



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

Обычно о масштабировании начинают думать тогда, когда один
сервер не справляется с возложенной на него работой. С чем именно он не
справляется? Работа любого web-сервера по большому счету сводится к основному
занятию компьютеров — обработке данных. Ответ на HTTP (или любой другой) запрос
подразумевает проведение некоторых операций над некими данными. Соответственно,
у нас есть две основные сущности — это данные (характеризуемые своим объемом) и
вычисления (характеризуемые сложностью). Сервер может не справляться со своей
работой по причине большого объема данных (они могут физически не помещаться на
сервере), либо по причине большой вычислительной нагрузки. Речь здесь идет,
конечно, о суммарной нагрузке — сложность обработки одного запроса может быть
невелика, но большое их количество может «завалить» сервер.

Читать дальше →
Всего голосов 68: ↑67 и ↓1 +66
Просмотры50.3K
Комментарии 49

Row Locking во время выборки в MySQL

Разработка веб-сайтов
Да-да, все «реальные пацаны» умеют строить веб-системы, способные выдержать монументальные нагрузки. Ну а для «непацанофф» всегда есть гугл и масса сайтов посвящёных данной тематике. Однако «проблема роста» включает в себя не только вопрос верной сервировки данных клиенту и их грамотной репликации/распределении на кластере. Зачастую проблемы возникают от того, что всё как раз-таки наоборот — слишком шустро работает. Рассмотрим пример из недавней практики:

Читать дальше →
Всего голосов 24: ↑18 и ↓6 +12
Просмотры9.5K
Комментарии 42

Кластеризация memcached и выбор ключа кэширования

Разработка веб-сайтов
Серия постов под общим заглавием “Web, кэширование и memcached” продолжается. В первом мы поговорили о memcached, его архитектуре и возможном применении.

Сегодня речь пойдет о:
  • выборе ключа кэширования;
  • кластеризации memcached и алгоритмах распределения ключей.

Следующий пост будет посвящен атомарности операций и счетчикам в memcached.

Итак, поехали!
Всего голосов 61: ↑61 и ↓0 +61
Просмотры19.2K
Комментарии 42

Пакетное масштабирование изображений

Настройка Linux
Столкнулся с необходимостью масштабирования большого количества фотографий. Конечно, думаю есть и более элегантное решение,
но поскольку гугла под руками не было — быстро набросал фронт к imagemagick на bash. Думаю, кому-то он может пригодиться.
Читать дальше →
Всего голосов 55: ↑44 и ↓11 +33
Просмотры2.4K
Комментарии 47

Сжатие картинок под нужный размер в Windows

Чулан
Хочу поделиться с ХабраЛюдьми одной АйТишной историей, что произошла со мной в Новогодние праздники. Одним из моих новогодних подарков стала цифровая фоторамка от DICOM(вполне приличная, кстати, вещь). Содержит она в себе 128 МБ встроенной памяти и удобный интерфейс для заливки фоток — ака флэшка. Но вот ни задача — в домашнем архиве на компе фотки хранятся полноразмерные, а вот на флешке они ужимаются до малых размеров и показываются умиленному пользователю. Надо как то бороться с расточительством — сжимать каждую фотку ручками дело хлопотное!

Читать дальше →
Всего голосов 18: ↑15 и ↓3 +12
Просмотры703
Комментарии 22

Делаем Liquid Resize своими руками

Алгоритмы
Вы наверное уже слышали о технологии масштабирования Liquid Resize, которая учитывает содержимое изображения. Если вам интересно как оно все работает и как можно реализовать все это самому, то читайте далее (осторожно, много рисунков).


(НЛО прилетело и растянуло этот рисунок здесь)
Читать дальше →
Всего голосов 230: ↑226.5 и ↓3.5 +223
Просмотры13.7K
Комментарии 125

Как сделать сайт более iPhone-совместимым за 5 шагов

Веб-дизайн
Тот факт, что iPhone предлагает наиболее развитый мобильный браузер среди мобильных платформ, пожалуй, ни у кого не вызовет сомнений. Однако не все знают, что довольно небольшими усилиями можно сайт сделать еще более дружественным к тем, кто смотрят его на iPhone или iPod Touch.

Ниже предлагаются простые 5 шагов, с которых можно начать, на примере сайта WHOIS Digger.

Шаг 1. Аналог favicon.ico

Когда пользователь создает ссылку на ваш сайт в виде иконки в SpringBoard, iPhone автоматически формирует картинку из скриншота страницы. В результате почти всегда получается неразборчивая каша, которая на гордое звание «иконки для iPhone» никак не тянет. Пропишите этот тег в заголовке страницы:

<link rel="apple-touch-icon" href="res/iphone_icon.png" />

и добавьте соответствующую картинку res/iphone_icon.png размером 57х57 пикселов. iPhone сам добавит скругленные углы и полукруглый блик, сделав вашу иконку похожей на остальные.

Вот так выглядит исходная картинка и иконка на рабочем столе iPhone:


Читать дальше →
Всего голосов 95: ↑85 и ↓10 +75
Просмотры50.8K
Комментарии 38

Твиттер откроет собственный дата-центр

Социальные сети и сообщества
image
В последнее время пользователи Твиттера наблюдали, что социальная сеть не справлялась с нагрузками и испытывала проблемы надежности. Отчасти это было связано с проведением Чемпионатом мира по футболу в ЮАР, отчасти из-за быстрых темпов роста в последнее время – за последнее время было создано более 300 000 новых аккаунтов. Это подтолкнуло компанию к шагу о создании собственного хранилища данных в Солт-Лэйк Сити, США.
Читать дальше →
Всего голосов 57: ↑40 и ↓17 +23
Просмотры356
Комментарии 32

Настройка и масштабирование PostgreSQL

PostgreSQL
Написал небольшой мануал по настройке и масштабированию PostgreSQL. Сподвигло меня на это то, что материала по этой теме мало, он устарел или его просто нет.

Скачать можно здесь:
http://github.com/le0pard/postgresql_book/raw/master/postgresql.pdf
Исходники:
http://github.com/le0pard/postgresql_book/

Страница:
http://postgresql.leopard.in.ua/
Всего голосов 84: ↑83 и ↓1 +82
Просмотры3.8K
Комментарии 27

Масштабируем до сотен миллионов запросов: что работает, а что нет

NoSQL
Прекрасная тридцатиминутная история (на английском) от Джеймса Голика — CTO американской бдсм-соцсети выдерживающей 180 000 000 реквестов в месяц, при среднем времени отдачи ~200 мс, имея шесть серверов. В двух словах — смотрите тэги.

Всего голосов 35: ↑26 и ↓9 +17
Просмотры2.3K
Комментарии 31

Масштабируемый сервер в облаке — Scale Server

Блог компании Clodo
Несомненно, «облачные» вычисления в данный момент являются трендом рынка хостинговых услуг. Почти каждый хостинг-провайдер предоставляющий услуги аренды виртуальных серверов заявляет, что работает в «облаке». Зачастую эти заявления всего лишь красивая маркетинговая обложка скрывающая за собой традиционный подход к предоставлению услуг аренды VDS/VPS.

Следуя тенденциям рынка, мы отбросили в сторону маркетинговые фантики и рады анонсировать на Хабре нашу новую услугу — Scale Server.
Читать дальше →
Всего голосов 26: ↑16 и ↓10 +6
Просмотры11.3K
Комментарии 88

Работа с Postgresql: настройка, масштабирование. Дополненное издание

PostgreSQL
image
Привет всему хабросообществу.

Время не стоит на месте. После публикации моего справочника по Postgresql очень многое успело поменяться, а точнее добавиться в эту отличную СУБД. После выхода PostgreSQL 9 версии я понял, что потребуется добавить информацию о нововведениях для этой версии. Тем более, что 9 версия знаменуется выходом репликации из коробки.
Читать дальше →
Всего голосов 88: ↑87 и ↓1 +86
Просмотры3.5K
Комментарии 26

Масштабирование веб-приложений с помощью HMVC

Kohana
Перевод
Последние десять лет мы наблюдаем второй цикл веб-дизайна – сайты превращаются в приложения и уже практически не появляется новых проектов, не обладающих некой долей интерактивности. Увеличение сложности ПО, разрабатываемого для интернета, вызвало необходимость в структурированном и взвешенном проектировании приложений.

На сегодняшний день наиболее часто используемым паттерном проектирования сайтов является Модель-Вид-Контроллер (MVC). Повсеместное его использование отчасти вызвано успехом и популярностью фреймворка Ruby on Rails. Сейчас MVC является практически синонимом веб-разработки среди всех платформ.

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

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

Для уменьшения первоначальных вложений обычно принимают решение о том, что приложение должно быть спроектировано в виде целостной программы, содержащей все требуемые функции. Если сайт быстро обретет популярность, это станет проблемой. У меня остались не очень приятные впечатления от рефакторинга плохо масштабируемых кодовых баз. К тому же, это может потребовать большого количества ресурсов и денег. В идеале приложения должны расти по мере необходимости и не требовать в процессе этого крупных финансовых затрат.
Читать дальше →
Всего голосов 58: ↑49 и ↓9 +40
Просмотры16.9K
Комментарии 41

Независимая ширина сетевого канала в облаке Скалакси

Блог компании Оверсан
Отличные новости! Компания Оверсан не стоит на месте, и сегодня мы анонсируем очередной релиз, маркированный, как 0.41, облака Скалакси.

На этот раз реализована сложная функция, которая потенциально сослужит добрую службу всем нашим клиентам. А именно — независимое масштабирование.

Можно сколько угодно ходить вокруг да около, но главный смысл передается одним предложением — отныне каждая виртуальная машина обладает ресурсом для масштабирования ширины внешнего сетевого канала, вне зависимости от оперативной памяти, в диапазоне от 5 Мбит/с до 300 Мбит/с, с шагом в 5 Мбит/с.

Соответственно, изменилась и тарификация используемых ресурсов. Раньше цельный слот, состоящий из 512 Mбайт RAM и 5 Мбит/с пропускной способности, стоил 65 копеек в час. Сейчас мы тарифицируем отдельно мегабайты оперативной памяти (по 40 копеек за 512 Мбайт в час) и пропускную способность сети (по 5 копеек за 1 Мбит/с в час).
Читать дальше →
Всего голосов 58: ↑45 и ↓13 +32
Просмотры5.7K
Комментарии 37

Гигагерцы задешево — Win 2008R2 Core на Amazon

Облачные вычисления
Из песочницы
Занимаясь стартапами я, наконец-то, дошел до той точки, когда нужно быть готовым отмасштабировать приложение на N серверов для 1M просмотров в день и я начал думать, как же это сделать наиболее эффективно с использованием Amazon Ec2.

Примерный план известен всем — сервер помощнее для базы данных и набор небольших серверов, которые запускаются/останавливаются по мере необходимости в зависимости от нагрузки.

Из недорогих серверов у амазона особого выбора нет. Изначально я планировал использовать для этого Small Instance — именно этот вариант рекомендует amazon по умолчанию. В нем 1.7 GB RAM, что довольно комфортно для windows, но только 1 ECU. На практике в памяти можно разместить 5-8 рабочих процессов, однако, толком работать одновременно они не способны — ядро одно и очень слабое: 1 ECU это всего-то 1 Ghz одного ядра Xeon образца 2007 года. По моим оценкам, примерный эквивалент — процессор Celeron на частоте 1.5 Ghz. Стоит такой сервер $0.12 в час ~ $86 в месяц, десяток — $860 в месяц… Было очевидно, что эта конфигурация сервера не совсем отвечает моим задачам.

Поэтому я решил попробовать Micro instance — всего-навсего 613 MB памяти, но зато:
  • производительность достигает 2 ECU
  • он в 4 раза дешевле
  • можно использовать 64 битную платформу Windows Server 2008 R2 Core


Читать дальше →
Всего голосов 45: ↑36 и ↓9 +27
Просмотры4.6K
Комментарии 29

Использование Amazon Web Services на примере wikipaintings.org

Разработка веб-сайтов
Думаю, уважаемому сообществу будет интересно узнать о моем опыте разработки интернет проекта с использованием amazon web services.

Я не берусь утверждать, что весь проект идеален, однако я постараюсь описать основные решения, которые помогли сделать этот проект. Wikipedia.org, которая нас вдохновляла на работу, отдает 12 миллиардов страниц в месяц и поэтому мы старались с самого начала готовить код к росту популярности.

Что такое wikipaintings.org — www.wikipaintings.org/ru/About
Сейчас заканчивается первый этап разработки и основные задачи следующего этапа — привлечение волонтеров к наполнению сайта.

Если кому-то кажется, что картины – это скучно, оцените творчество Archimboldo — www.wikipaintings.org/ru/giuseppe-arcimboldo/spring-1573#supersized-artistPaintings-184903

Если же вам интересно наконец-то понять классификацию стилей живописи, добро пожаловать на www.wikipaintings.org/ru/paintings-by-style

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

Читать дальше →
Всего голосов 35: ↑32 и ↓3 +29
Просмотры4.9K
Комментарии 38

Gearman – фреймворк для распределения задач, введение

Серверная оптимизация
Из песочницы


    В этой статье, мне бы хотелось рассмотреть один из необычных способов оптимизации приложения, а именно использование проекта Gearman для распределения задач. Gearman является фреймворком для построения таких систем. Примеров кода в статье нет, статья больше вводная, хоть и содержит в себе достаточно практической информации.
Читать дальше →
Всего голосов 56: ↑52 и ↓4 +48
Просмотры35.3K
Комментарии 40

In-memory-data-grid. Масштабируемые хранилища данных

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

1) Кэширование результатов выполнения запросов
  • плюсы: высокая скорость доступа к данным
  • минусы: требует компромисса между актуальностью данных и скоростью доступа, т.к. данные в кэше могут устареть, а удалять старые данные из кэша с последующим кэшированием новых — это дополнительные задержки и нагрузка на систему

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

Сегодня я хочу познакомить вас с таким типом хранилища данных, который объединяет достоинства обоих подходов и при этом имеет ряд преимуществ перед упомянутыми выше решениями: In-memory-data-grid (IMDG).
Читать дальше →
Всего голосов 33: ↑31 и ↓2 +29
Просмотры22.2K
Комментарии 41

In-memory-data-grid. Режимы работы, индексы, блокировки

Высокая производительность
Я продолжаю небольшой цикл статей на тему In-memory-data-grid.
В первой статье была раскрыта сама концепция IMDG без конкретных примеров и деталей реализации. Сегодня мы копнем чуть глубже.
Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Просмотры10.9K
Комментарии 4