Одним из способов управления кэшированием страниц в asp.net является декларативный способ с помощью директивы <%@ OutputCache %>. Ниже приводится описание и исследование работы данной директивы. Большая часть сведений взята из msdn, но это не перевод, а скорее изложение. В тексте также присутствуют мои собственные исследования того, как тот или иной параметр влияет на http-заголовки.
Виталий Ф. @FuN_ViT
программист, синьор-помидор :)
Самый простой способ создать трафик на сетевом интерфейсе
1 min
34KЕсть программа iperf, которая позволяет проверять скорость интерфейсов (у меня на тестах из 10G интерфейса она выжимала 9.37 Гбит/с).
Пакет (в дебиане и убунте) так и называется — iperf.
Применение очень простое: на одном сервере запускаете iperf -s X.X.X.X (свой собственный адрес сервера, на котором слушать). Можно запустить просто
На клиентской части пишем
Пример: сервер имеет адрес 192.0.2.1, клиент 192.0.2.200. На сервере запускаем
Для того, чтобы сделать много байтов (привет хостерам с соотношениями) нужно просто указать опцию -t (время в секундах). Многие гигабайты трафика в нужном направлении вам обеспечены. С учётом текущих тарифов для дома — можно даже с домашней машины, за 3-4 часика можно выправить любое соотношение с минимальной нагрузкой как на сервер, так и на клиента.
Пакет (в дебиане и убунте) так и называется — iperf.
Применение очень простое: на одном сервере запускаете iperf -s X.X.X.X (свой собственный адрес сервера, на котором слушать). Можно запустить просто
iperf -s
, тогда слушать будет на всех интерфейсах.На клиентской части пишем
iperf -c X.X.X.X
(адрес сервера из предыдущего этапа). Клиент подключается, работает 10 с и показывает скорость работы канала.Пример: сервер имеет адрес 192.0.2.1, клиент 192.0.2.200. На сервере запускаем
iperf -s 192.0.2.1
на клиенте iperf -c 192.0.2.1
.Для того, чтобы сделать много байтов (привет хостерам с соотношениями) нужно просто указать опцию -t (время в секундах). Многие гигабайты трафика в нужном направлении вам обеспечены. С учётом текущих тарифов для дома — можно даже с домашней машины, за 3-4 часика можно выправить любое соотношение с минимальной нагрузкой как на сервер, так и на клиента.
+43
Сохранение и восстановление прошивки медиаплеера из журнала Vogue
7 min
13KЭксперименты с плеером из журнала Vogue это очень хорошо, но старая добрая админская привычка делать бекапы всего и вся не даёт мне покоя. Ибо испортить игрушку при экспериментах с чужими прошивками очень легко, а как вернуть её в первозданное состояние не ясно. Обидно будет испортить такую халяву.
Так вот после 3-х дневной мозговой атаки на этот девайс мною был разобран до мелочей процесс сохранения родной прошивки и заливание её обратно. Отдельное спасибо tronix286 за то, что он модифицировал оригинальную программу usb_boot, добавил в неё возможность чтения прошивки в файл и за то что подкинул пару дельных даташитов.
Так вот после 3-х дневной мозговой атаки на этот девайс мною был разобран до мелочей процесс сохранения родной прошивки и заливание её обратно. Отдельное спасибо tronix286 за то, что он модифицировал оригинальную программу usb_boot, добавил в неё возможность чтения прошивки в файл и за то что подкинул пару дельных даташитов.
+125
Synapse неплохая альтернатива для Alt+F2
1 min
20KSynapse — это весьма приятный лаунчер, с довольно интересными плюшками.
+27
Objective-C для C# разработчиков
5 min
20KTutorial
«Если единственный язык, который вы знаете — это Java или C#, я не думаю, что вы профессиональный программист — вы как молодой плотник, который пока работал только с одним видом дерева.»
Дядя Боб
Несколько месяцев назад я начал разрабатывать приложения для iPhone. Переключение с платформы .NET и C# на Cocoa и Objective-C проходило не без приключений, но было достаточно интересным и познавательным. Скоро мне предстоит помогать осваивать новую платформу и другим разработчикам нашей компании. Поэтому решил написать серию вводных заметок, которые, надеюсь, сделают этот переход более плавным.
Дядя Боб
Несколько месяцев назад я начал разрабатывать приложения для iPhone. Переключение с платформы .NET и C# на Cocoa и Objective-C проходило не без приключений, но было достаточно интересным и познавательным. Скоро мне предстоит помогать осваивать новую платформу и другим разработчикам нашей компании. Поэтому решил написать серию вводных заметок, которые, надеюсь, сделают этот переход более плавным.
+68
KBookOCR for Linux. Убийца FineReader-а для Linux на начальной стадии
4 min
24KВступление
Возможно каждый из нас переживал период в своей жизни который сопровождался активно оцифровкой аналогов материала. Я имею в виду необходимость работы с текстом из неоцифрованных источников. Имеется в виду не только проблема сканирования, но и так же множество материала который к сожалению доходит до конечного потребитель не совсем в пригодном для использования виде. И я думаю у каждого из нас очень часто в голове пробегали лестные мысли об распространителя книги в формате djvu или pdf в котором весь контент был представлен сугубо графически без возможности использование материалов для своей деятельности.
+43
Локальная уязвимость в ядре линукс (и не только), DoS
2 min
2.6KОпубликован код, приводящий к зависанию компьютера (100% загрузка всех ядер, исчерпание файловых дескрипторов).
Ссылка на код: lkml.org/lkml/2010/11/25/8
Проверял на 27, 32 — зависание воспроизводится. 32/64 бита.
Уточняю: через 1-2 секунды пролетает крашдамп (не успеваю прочитать), хост перегружается. В другом тесте система упала уже после завершения программы (примерно через 5-7 секунд).
PS Эксперты с лора говорят, что FreeBSD 8.1 тоже падает.
PPS Внезапно — на CentOS 5.5 с 2.6.18 не падает. Если запустить из-под рута, роняет, из-под пользователя — просто спокойно отрабатывает. При этом руту в соседней консоли ничего не мешает работать и система не падает.
Пытаюсь уточнить ситуацию:
1) CentOS 2.6.18/64 с непривелегированным пользователем не подвержен.
2) Debian Squeeze 2.6.34/64 с непривелегированным пользователем подвержен (kernel panic).
3) По слухам, в некоторых FreeBSD удалось воспроизвести (из комментариев — FreeBSD 8.2-PRERELEASE не воспроизводится)
4) Из комментариев — на Ubuntu 2.6.32/64 воспроизвести не удалось, на 2.6.36 воспроизводится.
5) Ubuntu 2.6.34/64 — воспроизводится
6) Из комментариев — RHEL5.5 не зависает, но тормозит и мешает убивать процесс.
7) Из комментариев: FreeBSD 4.11, 8.1, OpebBSD 4.6, 4.8, DragonFLY BSD 2.8.0 — подвержены
8) OpenVZ + 2.6.18 Debian/Centos — не воспроизводится.
PPPS тем, кто тестит — запускать надо от непривелегированного пользователя.
Ссылка на код: lkml.org/lkml/2010/11/25/8
Проверял на 27, 32 — зависание воспроизводится. 32/64 бита.
Уточняю: через 1-2 секунды пролетает крашдамп (не успеваю прочитать), хост перегружается. В другом тесте система упала уже после завершения программы (примерно через 5-7 секунд).
PS Эксперты с лора говорят, что FreeBSD 8.1 тоже падает.
PPS Внезапно — на CentOS 5.5 с 2.6.18 не падает. Если запустить из-под рута, роняет, из-под пользователя — просто спокойно отрабатывает. При этом руту в соседней консоли ничего не мешает работать и система не падает.
Пытаюсь уточнить ситуацию:
1) CentOS 2.6.18/64 с непривелегированным пользователем не подвержен.
2) Debian Squeeze 2.6.34/64 с непривелегированным пользователем подвержен (kernel panic).
3) По слухам, в некоторых FreeBSD удалось воспроизвести (из комментариев — FreeBSD 8.2-PRERELEASE не воспроизводится)
4) Из комментариев — на Ubuntu 2.6.32/64 воспроизвести не удалось, на 2.6.36 воспроизводится.
5) Ubuntu 2.6.34/64 — воспроизводится
6) Из комментариев — RHEL5.5 не зависает, но тормозит и мешает убивать процесс.
7) Из комментариев: FreeBSD 4.11, 8.1, OpebBSD 4.6, 4.8, DragonFLY BSD 2.8.0 — подвержены
8) OpenVZ + 2.6.18 Debian/Centos — не воспроизводится.
PPPS тем, кто тестит — запускать надо от непривелегированного пользователя.
+97
Настройка Active/Passive PostgreSQL Cluster с использованием Pacemaker, Corosync, и DRBD (CentOS 5,5)
16 min
29KTranslation
В этой статье объясняется, как настроить Active/Passive кластера PostgreSQL, с использованием Pacemaker, Corosync и DRBD.
Подготовлено Рафаэль Марангони, из команды BRLink Servidor Linux
Подготовлено Рафаэль Марангони, из команды BRLink Servidor Linux
+22
Взлом журнала Vogue или видео плеер за 119 руб
1 min
57KПоследний номер журнала Vogue, вышел с очень интересным вкладышем от Мартини.
ЗЫ. Видео удалили за нарушение авторских прав Americhip Russia. Перезалил на вимео
ЗЫ. Видео удалили за нарушение авторских прав Americhip Russia. Перезалил на вимео
+262
AmbilightUSB
3 min
40KПривет, strangers!
Обновление проекта Лайтпак: Прокачан и открыт
Эта история о том, как сделать супер мега дешевую и простую ambilight подсветку для эвм. В роли дирижера будет выступать микроконтроллер ATtiny44, а в роли оркестра 4 RGB-светодиода.
Несколько картинок, дабы пробудить интерес:


Кому лень читать: полное описание в «картинках» (=
UPDATE: Добавлено видео http://www.youtube.com/watch?v=tdp1QeS_JCg
UPDATE2: в списке деталей уточнил название используемого микроконтроллера (ATTINY44-20SSU)
UPDATE3: добавлены фьюзы (дико извиняюсь, что забыл про них)
UPDATE4: исправлена принципиальная схема (v2.1.3)
+196
Поддержка доменов.РФ в Бигго и Python
1 min
3.2KПару дней назад мы следуя общей тенденции стали поддерживать домены.РФ, к тому же сделать это оказалось несложно.
Как известно, перекодировка в punycode происходит на стороне клиента, поэтому все что нужно было сделать — это перекодировать кириллическое название в формах создания и переименования сайтов, а также в функциях работы с регистратором и DNS хостингом. Очень понравилось, что возможность перекодировки встроена в сам язык(Python):
То есть кодек idna делает все за нас. Сравните с решением на PHP =)
Названия доменов мы храним в виде xn--80aswg.xn--p1ai и это работает точно также как и для других доменов.
Обратно перевести можно так:
Как известно, перекодировка в punycode происходит на стороне клиента, поэтому все что нужно было сделать — это перекодировать кириллическое название в формах создания и переименования сайтов, а также в функциях работы с регистратором и DNS хостингом. Очень понравилось, что возможность перекодировки встроена в сам язык(Python):
domain_rf = u'сайт.рф'
domain = domain_rf.encode('idna')
То есть кодек idna делает все за нас. Сравните с решением на PHP =)
Названия доменов мы храним в виде xn--80aswg.xn--p1ai и это работает точно также как и для других доменов.
Обратно перевести можно так:
domain = u'xn--80aswg.xn--p1ai'
domain_rf = domain.decode('idna')
0
База GeoIP – страны и города
1 min
75KПри разработке одного проекта встала задача – определить по IP-адресу посетителя его страну и город, на русском языке. Поиск готового решения оказался безуспешным – русскоязычные базы стран можно найти (например, wipmania.com), но баз городов нет. Помощь пришла из-за границы, в лице англоязычного maxmind.com. База была приведена к нормальному состоянию (MySQL) и частично переведена на русский язык с помощью нескольких справочников (~6,000 названий, с учетом городов-тезок ~15,500). Результат этой работы доступен для свободного скачивания.
+82
Пользуетесь PHP на 64-х битной платформе? Значит потеряли в производительности!
4 min
1.7K
По идее, эта статья должна была выйти в блоге «Linux для всех». Однако, данная проблема не проявила себя в аналогичных тестах на python и perl, а следовательно специфично-зависимая от PHP и разрядности платформы. А так PHP у нас прежде всего связан с сайтами, то и блог соответствующий — хостинг.
Внимание! Следующий текст содержит
+6
Еще раз об архитектуре сетевых демонов
13 min
20KВо многих статьях, в том числе на хабре, упоминаются и даже описываются разные способы построения архитектуры сетевых сервисов (демонов). При этом мало у кого из авторов есть реальный опыт создания и оптимизации демонов, работающих с десятками тысяч одновременных соединений и/или гигабитным трафиком.
Так как большинство авторов не удосуживается хотя бы залезть в документацию, то обычно в таких статьях вся информация базируется на неких слухах и пересказах слухов. Эти слухи бродят по сети и поражают википедию, хабрахабр и другие уважаемые ресурсы. В результате получаются опусы вроде "Вы наверное шутите, мистер Дал, или почему Node.js" (пунктуация автора сохранена): она, в основном, верная по сути, но изобилует неточностями, содержит ряд фактических ошибок и изображает предмет с какого-то непонятного ракурса.
Мне было сложно пройти мимо статьи, изобилующей фразами вроде «эффективные реализации polling'а на сегодняшний день имеются лишь в *nix-системах» (как будто poll() есть где-то, кроме некоторых *nix). Этот пост начинался как комментарий, разъясняющий уважаемому inikulin ошибки в его статье. В процессе написания оказалось, что проще изложить предмет с самого начала, что я собственно и делаю отдельным постом.
В моем очерке нет срыва покровов или каких-то неизвестных трюков, здесь просто описываются преимущества и недостатки разных подходов человеком, который проверял, как всё это работает на практике в разных операционных системах.
Для желающих просветиться — добро пожаловать под кат.
Так как большинство авторов не удосуживается хотя бы залезть в документацию, то обычно в таких статьях вся информация базируется на неких слухах и пересказах слухов. Эти слухи бродят по сети и поражают википедию, хабрахабр и другие уважаемые ресурсы. В результате получаются опусы вроде "Вы наверное шутите, мистер Дал, или почему Node.js" (пунктуация автора сохранена): она, в основном, верная по сути, но изобилует неточностями, содержит ряд фактических ошибок и изображает предмет с какого-то непонятного ракурса.
Мне было сложно пройти мимо статьи, изобилующей фразами вроде «эффективные реализации polling'а на сегодняшний день имеются лишь в *nix-системах» (как будто poll() есть где-то, кроме некоторых *nix). Этот пост начинался как комментарий, разъясняющий уважаемому inikulin ошибки в его статье. В процессе написания оказалось, что проще изложить предмет с самого начала, что я собственно и делаю отдельным постом.
В моем очерке нет срыва покровов или каких-то неизвестных трюков, здесь просто описываются преимущества и недостатки разных подходов человеком, который проверял, как всё это работает на практике в разных операционных системах.
Для желающих просветиться — добро пожаловать под кат.
+156
OpenDPI (определение типов трафика) + iptables
6 min
23KOpenDPI — библиотека для классификации трафика на основе технологии глубокого анализа пакетов (DPI — Deep Packet Inspection). Проект IPP2P более не поддерживается, и, в качестве замены, предлагает использовать именно OpenDPI. В отличие от IPP2P, основной целью которого является определение именно p2p трафика, OpenDPI поддерживает широкий набор различных протоколов. OpenDPI изначально спроектирован для очень низкого уровня ложных положительных срабатываний. В отличие от L7-filter не требует наложения патчей на iptables и ядро; работает в виде модуля ядра и библиотеки xtables. Также определения протоколов представляют собой не список регэкспов, а модули на C, что повышает быстродействие. Недавно для этой библиотеки была реализована поддержка iptables.
А теперь давайте попробуем использовать OpenDPI на практике.
А теперь давайте попробуем использовать OpenDPI на практике.
+28
Видео с HighLoad++ в Mail.Ru: чего изволите?
1 min
5.2KДорогие коллеги!
26 и 28 октября в Mail.Ru прошли дни HighLoad ++. Как всегда, мы облегчили жизнь нашим многочисленным разработчикам высоконагруженных проектов, избавив их от необходимости выезжать в полном составе на конференцию.
Но сейчас не об этом: если вам интересно, мы готовы поделиться видеозаписями интересующих вас докладов.
Выбирайте, голосуйте!
Stoyan Stefanov (Yahoo) — Progressive Downloads and Rendering
Joe Damato — Performance tweaks and tools for Linux
Bruce Momjian (PostgreSQL) — Building Global Teams Like Postgres
James Golick — Scaling to Hundreds of Millions of Requests: What Worked and What Didn't
Константин Осипов (Oracle) — MySQL проблемы роста (о проблемах роста проекта и его команды)
Юрий Ковалев (Performance Lab) — Нагрузочное тестирование без границ
Петр Зайцев — Диагностика и исправление проблем производительности MySQL
26 и 28 октября в Mail.Ru прошли дни HighLoad ++. Как всегда, мы облегчили жизнь нашим многочисленным разработчикам высоконагруженных проектов, избавив их от необходимости выезжать в полном составе на конференцию.
Но сейчас не об этом: если вам интересно, мы готовы поделиться видеозаписями интересующих вас докладов.
Выбирайте, голосуйте!
Stoyan Stefanov (Yahoo) — Progressive Downloads and Rendering
Joe Damato — Performance tweaks and tools for Linux
Bruce Momjian (PostgreSQL) — Building Global Teams Like Postgres
James Golick — Scaling to Hundreds of Millions of Requests: What Worked and What Didn't
Константин Осипов (Oracle) — MySQL проблемы роста (о проблемах роста проекта и его команды)
Юрий Ковалев (Performance Lab) — Нагрузочное тестирование без границ
Петр Зайцев — Диагностика и исправление проблем производительности MySQL
+11
Sencha Animator — средство для создания анимации средствами CSS и HTML
2 min
5.4K
Пока компания Adobe анонсирует Edge prototype tool, компания Sencha выпускает пробный релиз Sencha Animator — декстопное приложение для создание анимации для всего, что поддерживает HTML5. Как утверждают создатели, создание такого инструмента вызвано заявлением Apple исключить Flash из их iOS, что приводит к тому, что приходится писать кучу строк кода для создания анимации через CSS3. Поэтому они предлагают для начала посмотреть демо, а потом скачать и воспользоваться аниматором самому.
+58
pv — маленькая, но очень полезная утилита
2 min
86KОдин мой друг сказал по поводу pv следующее «Я админю семь лет, мне нужна была эта тулза десятки раз, а я даже не знал что она существует». В размышлениях над тем как заполучить инвайт на Харбе, я набрал в поиске pv. И ничего не нашел.
+270
История развития и оптимизаций одного высоконагруженного ресурса
5 min
14K
Введение
Все началось с того, что я стал системным администратором у одного провинциального Интернет-провайдера. Помимо администрирования различного рода ресурсов, мне в присмотр достался один молодой, но бурно развивающийся ресурс. Ресурс представлял из себя классический LAMP проект. Сайт, на котором генераторами контента являлись обычные пользователи.
* К слову, в то время я ничего не понимал в *nix системах, хоть и все сервера которые мне достались, были именно на нем, разбирался я во всем этом достаточно быстро.
Как обычно бывает с ресурсами, набирающими популярность, железки на которых все крутится, перестают справляться. Ресурс стоял на стареньком двухпроцессорном сервере, на котором крутились практически все сервисы для пользователей. В то время начальство не воспринимало ресурс как нечто стоящее вложений, поэтому, к моему сожалению (а позже – счастью), денег под новую железку мне не выделяли.
+188
+39
Information
- Rating
- Does not participate
- Location
- Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity