Как стать автором
Обновить
2
0
userID = '11855' @bvasya

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

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

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

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

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



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

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

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

Создание сложных приложений в ExtJS.

Время на прочтение8 мин
Количество просмотров4.8K
Автор: Jozef Sakalos, aka Saki
Статья в оригинале: Создание сложного приложение в Ext на blog.extjs.eu

Предисловие


Я решил написать эту статью для тех пользователей Ext 2.x, которые уже переросли одну единственную HTML-страницу со встроенными скриптом, создающим простое окно или форму, для тех, которые уже решили, что Ext — это их путь и для тех, которые превозмогая трудности связанные с большими объемами кода, понимают, что нуждаются в его структурировании.
Сколько людей, столько и мнений. И поэтому способ, который я опишу ниже, не является одним единственным возможным. Также хотелось бы отметить, что не каждое приложение, написанное с применением этого подхода, является гарантированно хорошим. Ничего подобного.
Замечу, что описываемый подход является работоспособным, четко структурированным, без труда поддерживаемым и, одним словом: рабочим!
Читать дальше →
Всего голосов 44: ↑44 и ↓0+44
Комментарии17

Борьба с DDOS и DOS на уровне nginx

Время на прочтение1 мин
Количество просмотров8.3K
FreeBSD, сетевая Intel fxp, порт 100Мбит, polling, http accept-filter
в sysctl:

sysctl kern.maxfiles=90000
sysctl kern.maxfilesperproc=80000
sysctl net.inet.tcp.blackhole=2
sysctl net.inet.udp.blackhole=1
sysctl kern.polling.burst_max=1000
sysctl kern.polling.each_burst=50
sysctl kern.ipc.somaxconn=32768
sysctl net.inet.tcp.msl=3000
sysctl net.inet.tcp.maxtcptw=40960
sysctl net.inet.tcp.nolocaltimewait=1
sysctl net.inet.ip.portrange.first=1024
sysctl net.inet.ip.portrange.last=65535
sysctl net.inet.ip.portrange.randomized=0

Читать дальше →
Всего голосов 48: ↑45 и ↓3+42
Комментарии42

Всё (или почти всё) о пробеле

Время на прочтение13 мин
Количество просмотров137K
Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Вообще говоря, пробел — это любое пустое место в рукописном, печатном или отображаемом на любом другом носителе тексте. Так что пробелы бывают разные:
  • спусковые (большие вертикальные пропуски в первой полосе издания) и концевые пробелы полосы,
  • абзацные отступы и концевые пробелы абзаца,
  • межстрочные пробелы (между строками текста),
  • межсловные пробелы (между словами в одной строке),
  • межбуквенные пробелы (между буквами в слове).
Далее речь пойдёт о межсловных пробелах, разделяющих слова, и функционально принадлежащих к знакам препинания.
Читать дальше →
Всего голосов 134: ↑130 и ↓4+126
Комментарии132

Woopra

Время на прочтение2 мин
Количество просмотров4.5K
Вот как любопытно получилось, только вчера писал на хабре о Piwik. А сегодня мне друг прислал на другой проект тоже вышедший недавно на стадию beta-тестирования — Woopra. Этот сервис также позиционирует себя как альтернатива Google Analytics. Правда, на данный момент Woopra выглядит перспективней Piwik’a, и обещает по-больше.

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

А теперь подробнее о возможностях Woopra
Всего голосов 17: ↑15 и ↓2+13
Комментарии13

Microsoft раздает домены на халяву.

Время на прочтение1 мин
Количество просмотров2.7K
Microsoft в рамках акции «10 000 доменов в подарок» начала регистрировать домены в зоне .ru любым желающим! Вы можете зарегистрировать один домен на себя. В процессе регистрации указываете свои паспортные данные, регистрируетесь в неком «Персонал-Н» и вуаля. Инструкция к действиям:

1. Заходим на platforma2008.ru/Materials.aspx?…
2. Регаемся
3. Заходим в личные данные.
Читать дальше →
Всего голосов 94: ↑85 и ↓9+76
Комментарии339

data URI

Время на прочтение2 мин
Количество просмотров7.8K
Пару лет назад я занимался проблемой data URL в Internet Explorer, добился определённых результатов, но то, что получилось, использовать было невозможно. Data URL (иногда его ещё называют «протокол data:») — возможность вставлять ресурсы (графику, CSS, JavaScript и так далее) в HTML код.


Подробнее о data URL можно узнать из свежей статьи на «Хабре» «Картинки в теле страницы с помощью data:URL». Хотелось только её дополнить двумя замечаниями: IE8b1 поддерживает data URL длиной не более 32Кб, в современных версиях других браузеров ограничений увидеть не удалось, Safari/Opera/FF показали изображения размером около 700Кб.


Теперь амбула.


Вчера ночью мне пришла в голову идея как можно попытаться корректно совместить data URL и включение картинок через протокол mhtml. То, что у меня не получилось два года назад, получилось сейчас.


Результат — готовый код на PHP из двух функций. Первую функцию («bolk_data_uri_header») нужно вызвать в самом начале перед выводом любого вашего кода, вторую («bolk_data_uri») собственно для включения картинки в код.


Надеюсь на примерах всё понятно:
bolk_data_uri_header();
bolk_data_uri('myjpeg.jpg');
bolk_data_uri('ourpng.png', 'border: 2px dotted red');


Код самой библиотеки:
function bolk_data_uri_header() 
{ 
    echo "<!--\n" 
        ."Content-Type: multipart/related; boundary=\"=_NextPart_01C6A9B1.539AB070\"\n\n" 
        ."--=_NextPart_01C6A9B1.539AB070\n" 
        ."Content-Transfer-Encoding: base64\n" 
        ."Content-Type: text/html\n" 
        ."-->\n\n"; 

} 

function bolk_data_uri($file, $style = '') 
{ 
    if (!( file_exists($file) && ($data = @getimagesize($file)) )) return false; 

    $name = uniqid('', true); 

    if ($style <> '') $style = ' style="'.htmlspecialchars($style).'"'; 
    $mime = strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') ? " type='{$data['mime']}" : '';

    echo "<!--\n" 
        ."--=_NextPart_01C6A9B1.539AB070\n" 
        ."Content-Location: {$name}\n" 
        ."Content-Transfer-Encoding: base64\n" 
        ."Content-Type: {$data['mime']}; -->\n" 
        ."<object data='data:{$data['mime']};base64,\n\n"; 

    echo base64_encode(file_get_contents($file)); 

    echo "' {$data[3]}{$style}{$mime}'><img " 
        ."src='mhtml:http://{$_SERVER['HTTP_HOST']}"
        ."{$_SERVER['REQUEST_URI']}!{$name}' {$data[3]}{$style} /></object>\n\n" 
        ."<!--\n" 
        ."--=_NextPart_01C6A9B1.539AB070-->"; 

    return true; 
}



Секрет в совмещении данных, чтобы IE, обратившись к странице по протоколу mhtml нашёл нужный кусор, «спрятанный» внутри тега, а остальные браузеры увидели бы картинку через data URL.


Код тестировался под Opera 9.50b, FF 2.0.0.13, Safari 3.1 и IE6. Предложения и результаты испытаний — прошу в комментарии.


Оригинал записи опубликован в моём блоге.
Всего голосов 46: ↑43 и ↓3+40
Комментарии85

40 советов по оптимизации вашего PHP-кода

Время на прочтение4 мин
Количество просмотров57K
Всем доброго времени суток.

Перевод заметки "40 Tips for optimizing your php code". Автор — Reinhold Weber.

  1. Если метод может быть статическим, объявляйте его статическим.
  2. echo быстрее, чем print.
  3. Передавайте в echo несколько параметров, вместо того, чтобы использовать конкатенацию строк.
  4. Устанавливайте максимальное количество проходов ваших циклов for до цикла, а не во время его выполнения.
  5. Удаляйте свои переменные для освобождения памяти, тем более, если это большие массивы.
  6. Остерегайтесь магических методов, таких как __set, __get, __autoload.
  7. require_once дорого обходится.
  8. Указывайте полные пути в конструкциях include/require, меньше времени будет тратится на поиск файла.
  9. Если вам необходимо определить время, когда скрипт был запущен, используйте $_SERVER[’REQUEST_TIME’] вместо time().
  10. Старайтесь использовать strncasecmp, strpbrk и stripos вместо регулярных выражений.

Читать дальше →
Всего голосов 79: ↑65 и ↓14+51
Комментарии201

markItUp! легкий редактор на JavaScript

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


markItUp! это «легкий» редактор для jQuery. Это не WYSIWYG редактор и никогда им не будет. Вся «соль» этого редактора в том, что можно настроить его для использования с любыми средствами подсветки. BBCode, Markdown, Wiki синтаксис, Textile и конечно же HTML.

Особенности:
— Легкая интеграция
— Поддержка «горячих» клавиш
— Панель управления легко настраивается
— Легко изменяется и настраивается
— Просмотр результатов через AJAX
— Настраиваемый внешний вид

Примеры использования
Домашняя страница
Всего голосов 44: ↑41 и ↓3+38
Комментарии47

sup рвёт тексты

Время на прочтение1 мин
Количество просмотров4.1K
Почти все сайты использующие тег SUP никак не инструктируют браузер как его отображать. А ведь отображение по-умолчанию откровенно хромает — тег этот рвёт тексты, высота строки где присутствует SUP увеличивается и в результате нам предстают хаотично разбросанные строки, а не параграф. Сложно даже быстро понять, является ли такое экстра-пространство разбивкой между строками, или между параграфами.


Два варианта superscript'а: «мой» и стандартный.

Самое интересное, что такое поведение можно легко исправить, достаточно добавить глобальный стиль навроде этого:
Читать дальше →
Всего голосов 70: ↑69 и ↓1+68
Комментарии90

Разгоняем CSS-селекторы. Часть 2: транзитивность

Время на прочтение1 мин
Количество просмотров1.4K
После статьи «Разгоняем CSS-селекторы: стоит ли?» было предложено рассмотреть несколько дополнительных случаев, учитывающих транзитивность селекторов (например, насколько быстрее a c, чем a b c, или наоборот). Данное исследование посвящено как раз разбору таких случаев.

Методика



Методика и уменьшение погрешности подробно рассматривались в первой статье, на них сильно много останавливаться не буду. Скажу лишь, что при наращивании количества классов и идентификаторов Opera стала значительно медленнее (раза в 3) отображать код (при этом общий его объем увеличился примерно в 1,5-2 раза). Скорее всего, в следующую статью войдет исследование влияния количества классов/идентификаторов/размера кода на общую производительность браузера.

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

читать дальше на webo.in →
Всего голосов 29: ↑22 и ↓7+15
Комментарии27

Веб сервер за пару вечеров — II

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

Многие из нас собирали компьютер сами, из комплектующих. Дело не сложное, соединить с десяток шлейфов, да завинтить столько же винтиков. Но мало кто сталкивался с самостоятельной сборкой серверов, причем не обычных а в промышленном формате под стойку 19 дюймов. В этом небольшом обзоре я опишу свой опыт сборки такого сервера, постараюсь показать что это не сложно, и остановлюсь на главных моментах, на что нужно смотреть. На написание этого обзора меня толкнуло то, что информации о сборке rack 19’ серверов в рунете очень мало, и приходилось её искать буквально по крупицам.
Читать дальше →
Всего голосов 142: ↑141 и ↓1+140
Комментарии191

Собеседования на должность PHP разработчика

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

Довольно часто (постоянно) мне приходиться проводить собеседование людей желающих устроитсья в мой отдел на должность «junior PHP developer» и «PHP developer». И, с завидным постоянством, я и team-lead отдела задаем одни и те же вопросы…
Читать дальше →
Всего голосов 86: ↑70 и ↓16+54
Комментарии515

Краткий справочник по PostgreSQL 8.3

Время на прочтение1 мин
Количество просмотров3.4K
Всего голосов 17: ↑16 и ↓1+15
Комментарии3

Высокопроизводительные AJAX-приложения

Время на прочтение1 мин
Количество просмотров732
Примечание: ниже перевод презентации «High Performance Ajax Applications», подготовленной ведущим специалистом из Yahoo (а теперь уже из Apple) Julien Lecomte. В ней автор освещает некоторые аспекты оптимизации как JavaScript-приложений, так и веб-сайтов вообще. В целом, советов много, и почти все, действительно, по делу. Однако, встречается и откровенная реклама Yahoo :) Мои комментарии далее курсивом.

Часть 1. Разработка для высокой производительности



Планируем и проектируем для высокой производительности



  • Ориентируемся на производительность с самого первого дня
  • Тесно работаем с дизайнерами и менеджерами продукта
  • Понимаем рациональность дизайна
  • Объясняем компромиссы между дизайном и производительностью
  • Предлагаем альтернативы и показываем, что еще возможно (на уровне прототипа)
  • Пробуем силы в реализации нетривиального дизайна (нельзя сразу говорит «нет»)
  • Помогаем упростить дизайн и взаимодействие с пользователем (добиваемся компромисса)


читать дальше на webo.in →
Всего голосов 77: ↑73 и ↓4+69
Комментарии28

О финансовом сравнении Microsoft, Google и Yahoo! (глава первая — доходы и расходы)

Время на прочтение5 мин
Количество просмотров1K
Знаете, в последнее время все больше и больше разгораются страсти вокруг предложения Microsoft Yahoo!
В принципе, не хочу сказать ничего хорошего или плохого об этой сделке, но недавняя картинка с рыбками меня удивила :)



Сразу скажу, что мне запало в голову — так это размер рыбок. Интересно, автор картинки (Daryl Cagle) его откуда брал? Из собственной головы?

Поэтому пришла следующая простая идея — поскольку все компании являются акционерными, это означает, что отчетность свою они публикуют. Т.е. я могу из открытого источника взять данные за 2007 год и поглядеть, что и как. Заодно и проанализировать.

А кроме того, можно увидеть, а что же получится в результате слияния, к примеру, Microsoft и Yahoo! (если первым удастся-таки это сделать). Google мы возьмем для третьего, чтобы масштабы игры были очевиднее.

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

Как выпускать финансово успешные стартапы. Взгляд создателей МойКруга и МирТесен. Часть 2

Время на прочтение6 мин
Количество просмотров617
Продолжение начатой ранее беседы с Николаем Самохваловым и Иваном Золотухиным. В первой части мы остановились на обсуждении сети МирТесен, дальше освещается бизнес-модель проектов команды, предпочитаемые способы продвижения своих проектов и деятельность по популяризации PostgreSQL.
Читать дальше →
Всего голосов 19: ↑14 и ↓5+9
Комментарии8

Предварительный одновременный просмотр CSS в Firefox и Internet Explorer

Время на прочтение2 мин
Количество просмотров2.1K
Хотя эта программа существует уже достаточно давно, я удосужился добраться до нее только сегодня. Итак, CSS Vista — легковесная софтина, позволяющая в реальном времени просматривать результат CSS-верстки одновременно в Firefox и IE6, что само по себе является отличной альтернативой запуску трех приложений отдельно.



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

Эластичные шаблоны

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

Большинство дизайнов ориентировано на использование фиксированных значений при верстке: ширина и высота блоков, размер шрифта. Это позволяет сверстанному шаблону «не разваливаться» при изменении масштабов просмотра и сохранять свойство кроссбраузерности. Однако в этом есть один большой минус – при большом разрешении экрана маленькие фиксированные блоки теряются на большой площади и остаются незамеченными. Тут даже не спасет «резиновая» верстка, т.к. сайт будет выглядеть еще более нечитабельным, например на 19'' мониторах при разрешении большем 1280 по ширине. Для меня это актуально, т.к. на ноутбуке 17'' с разрешением 1400х800 просматривать «резиновый» сайт очень неудобно. И желание оставаться на таком сайте отпадает быстро. Существует ли способ, позволяющий управлять масштабами не только текста, но и всего сайта?
Читать дальше →
Всего голосов 75: ↑69 и ↓6+63
Комментарии112

Как выпускать финансово успешные стартапы. Взгляд создателей МойКруга и МирТесен. Часть 1

Время на прочтение6 мин
Количество просмотров594
В последнее время интернет-стартапов появлятся как никогда много. Но как и в обычном бизнесе, большинство стартапов не становятся прибыльными.
В беседе с Николаем Самохваловым и Иваном Золотухиным (разработчиками социальных сетей MoйКруг и МирТесен и активистами СУБД PostgreSQL из Postgresmen) хочется обратить внимание начинающих на то, что же позволило им добиться успеха. А еще на распространенное представление о «воровстве идей», которое в результате логических рассуждений представляется заблуждением.
Читать дальше →
Всего голосов 67: ↑49 и ↓18+31
Комментарии68

Информация

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