Pull to refresh
49
0

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

Send message

Работаем с EMS по нарушению сроков доставки посылок — инструкция

Reading time 4 min
Views 212K
Недавний пост в «Я негодую» о работе EMS в нашей стране и полном пофигизме почтовых работников выявил потребность в инструкции о том, что можно сделать, чтобы когда-нибудь проблемы с посылками у EMS прекратились.

Сходу расстрою — посылкой управлять никак нельзя. Если она долго не «прилетает» в Россию (т.е. статус Экспорт стоит, а Импорт — нет) — тут вряд ли что-то поможет. Однако страхуемся, делаем по шагам, описанным ниже.
Порадовать тоже могу: процентов 95 посылок все-таки доходят. Объем для сравнений — порядка 10 посылок в месяц из США и Европы.
Обращаю внимание, что многие посылки (процентов 60 всех отправлений) я получаю «от себя», используя сервисе вроде Шипито. В некоторых случаях это означает, что почта не может отказать в претензиях по причине того, что они представляются «не отправителем». Однако во многих случаях рекомендую идти и биться за свою посылку при помощи процессов и документов, представленных ниже.
Читать дальше →
Total votes 175: ↑171 and ↓4 +167
Comments 108

Как найти показатель степени двойки за O(1) с помощью последовательности де Брёйна

Reading time 2 min
Views 29K

Аперитив


Всем, наверное, известно, как посчитать количество бит в числе. Например, подойдут следующие два способа:
while (n)
{
    ++count;
    n &= (n-1);
}

while (n)
{
    if (n&1)
        ++count;
    n >>= 1;
}

Упражнение: какое в среднем количество операций будет выполнено в первой и во второй реализации?

Блюдо


Пусть у нас есть n-битное число вида 2^i. Нам необходимо найти i за O(1).
Как это сделать? Пусть n = 2^k. Построим последовательность де Брёйна (de Bruijn) над алфавитом {0,1} для подстрок длины k.

Что такое последовательность де Брёйна?

Читать дальше →
Total votes 60: ↑52 and ↓8 +44
Comments 49

Отличия в адаптации сайта и AJAX веб-приложения для iOS

Reading time 6 min
Views 13K
Есть сейчас такая тенденция — делать в сайтах поддержку планшетов iPad и других устройств на iOS: iPhone, iPod. Но если для сайтов это достаточно просто, при хорошей верстке, можно добавить пару тегов в head и готово, то для веб-приложений, где есть сессии с использованием Cookies, все обстоит сложнее и есть подводные камни. Итак, возможно, еще не все знают, что в мобильном Safari можно нажать кнопку меню (со стрелкой, как на рисунке) и выбрать там «Добавить в Домой» / «Add to Home Screen», тогда для сайта появится иконка на рабочем столе. Но иконка будет просто запускать Safari с этим сайтом, а вот если добавить пару известных тегов (см. ниже), то все элементы управления Safar будут скрыты и приложение будет работать на полный экран, как обычные нативные приложения iOS. Так вот основная выявленная проблема в том, что в этом режиме сессия все время сбрасывается. Стоит переключится на другое приложение или рабочий стол, даже просто перейти по ссылке, и опять вернуться в веб-приложение, как страница перегрузится и сессионной Cookie уже не будет, нужно логиниться заново. Эту проблему то мы и решим.
Читать дальше →
Total votes 27: ↑27 and ↓0 +27
Comments 29

Мое водяное охлаждение

Reading time 2 min
Views 95K
Пока всякие понтуются и пиарятся, я преследовал одну простую цель — производительную тишину.
Мой системник достаточно простой, но с кулером идущим в подарок с процессором было не договориться, он или гудел на полных оборотах или свистел при попытках материнской платы взять управление оборотами на себя.
Дальше будут картинки и мало текста, если интересно прошу под кат
Читать дальше →
Total votes 69: ↑51 and ↓18 +33
Comments 118

За гранью Хабра (список изданий)

Reading time 2 min
Views 2.3K
Этот пост воодушевлен и является логическим продолжением недавно размещенного здесь материала «Хабр vs TechCrunch». Сам я с его авторами никак не связан, но выражаю им большую благодарность за то, что поделились своим опытом.

Несколько дней назад мне тоже захотелось поделиться некоторыми результатами бета-тестирования нашего нового SAAS продукта, инвайты на который мы рассылали ранее. Для этого был составлен список блогов и онлайн изданий, которых такая информация могла бы заинтересовать. Мы отказались от классической рассылки однотипного пресс-релиза. Каждому изданию из списка отправленно небольшое индивидуальное сообщение, подходящее им по формату.

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



Читать дальше →
Total votes 104: ↑96 and ↓8 +88
Comments 12

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

Reading time 6 min
Views 11K
image
Данный пост является началом серии статей про оптимизацию и улучшение производительности GWT-приложений. Поскольку материала у меня накопилось достаточно много, решил разбить его на 2-3 части.
Приступим к описанию того, что нас ждёт в первой статье.
Читать дальше →
Total votes 40: ↑37 and ↓3 +34
Comments 2

Эмуляция сетевых проблем с помощью WANem

Reading time 3 min
Views 29K
Картинка для привлечения внимания Недавно один из заказчиков TestLab² пожелал узнать, как будет работать его инсталлятор (с закачкой всякого на лету) на разных каналах. Внезапно первые подходы показали, что нам везет и обычные edge, umts и wimax-каналы (не говоря о проводных) в нашей округе как-то уж очень хорошо работают.
Чтобы создать тяжелые условия мы нашли и применили специализированный инструмент WANem, о котором я расскажу под катом.
Читать дальше →
Total votes 46: ↑46 and ↓0 +46
Comments 20

Мини-обзор Arduino-совместимых плат различных архитектур

Reading time 5 min
Views 97K
В тематическом блоге «Программинг микроконтроллеров» уже было несколько статей по поводу выбора первого микроконтроллера и начала работы с ним. Не менее интересны были и комментарии к таким статьям. Одна из мыслей, которая несколько раз поднималась там — это что не все, кто имеют интерес к МК, приходят к ним от транзисторов. Некоторые (дай бог, чтобы побольше), приходят к ним со стороны (прикладного) программирования. Рекомендовать таким людям брать в руки паяльник — не разумно, у них и так есть вещи, которые они могут «попаять». Так мы приходим к слову «Arduino», которое уже многие слышали. Среди бывалых с паяльниками существует стереотип — Arduino это платка на AVR для ленивых. Так ли это? Эта статья — попытка наглядно показать, что Arduino — это не про AVR и не про лень, Arduino — это архитектурно-независимая электронно-механическая платформа совместимых компонентов, по (относительной) значимости не менее важная, чем (в свое время) IBM S/360, IBM PC или USB.



Читать дальше →
Total votes 46: ↑43 and ↓3 +40
Comments 40

Lamport hash chain – страховка от кражи базы паролей клиентов

Reading time 7 min
Views 3.8K
Весьма интересный пост, опубликованный недавно на Хабре, и особенно комментарии к нему подтолкнули меня к описанию, пожалуй, единственной симметричной схемы, действительно обеспечивающей страховку от кражи базы паролей с сервера – схемы Лэмпорта («Lamport hash chain»). Алгоритм на самом деле чрезвычайно прост и предложен автором (L.Lamport) еще в 1981 году. Более того, схема в большинстве учебников уже упоминается как «устаревшая», т.к. целью ее разработки была в первую очередь защита от перехвата пароля на этапе передачи, а появившиеся позднее схемы семейства «challenge-handshake» (CHAP, CRAM) решают эту задачу гораздо более эффективно. А вот о втором интересном свойстве схемы Лэмпорта уже потихоньку забыли – она не требует конфиденциальности аутентификационных данных пользователей, хранимых на серверной стороне (свойство, обычно присущее только асимметричным схемам с сертификатам клиентов). Посмотрим, как можно достичь этого свойства с помощью одной только криптостойкой хеш-функции.
Читать дальше →
Total votes 76: ↑74 and ↓2 +72
Comments 19

Отслеживание скорости загрузки страниц на сайте

Reading time 1 min
Views 6.7K
Нередко возникает потребность определить скорость загрузки страниц на сайте, чтобы отловить медленные страницы и оптимизировать их. Но какого-то универсального решения для этого не было. Теперь же такое решение появилось в новой версии Google Analytics!

По-умолчанию эта функция в Google Analytics отключена. Для ее включения достаточно добавить одну строчку в код GA. Это вызов функции _trackPageLoadTime();, который нужно разместить после функции _trackPageview();

Вариант для асинхронного кода GA:
_gaq.push(['_trackPageview']);
_gaq.push(['_trackPageLoadTime']);


Вариант для стандартного кода GA:
pageTracker._trackPageview();
pageTracker._trackPageLoadTime();


После обновления кода отслеживания GA данные будут поступать в отчет «Содержание -> Скорость загрузки сайта». (! Данный отчет есть только в новом интерфейсе Google Analytics!) Отчет содержит список страниц сайта, отсортированный по среднему времени загрузки в секундах от большего к меньшему.

Очень полезный функционал, которому можно найти множество применений в веб-аналитике.

Более подробно об этой функции можно почитать в справке Google Analytics: http://www.google.com/support/analyticshelp/bin/answer.py?hlrm=en&answer=1205784&topic=112071
Total votes 69: ↑66 and ↓3 +63
Comments 25

GZip и nginx: влияние на производительность

Reading time 2 min
Views 35K
Добрый день. Недавно меня заинтересовал модуль ngx_http_gzip_static_module, и я решил погонять мой домашний сервер немного с разными настройками сжатия nginx, чтобы убедится, действительно ли современные процессоры настолько быстрые, что можно ставить сжатие в 9-тку и не париться. В качестве подопытного файла выступала слитая главная страница lenta.ru – 170кб. Во время тестирования обнаружилась интересная особенность, которая изменила мои взгляды на выбор количества процессов nginx.
Читать дальше →
Total votes 87: ↑82 and ↓5 +77
Comments 43

Фикс падения производительности при копировании/закачке файлов в Ubuntu

Reading time 4 min
Views 20K
Уже не помню, когда начились проблемы с производительностью при копировании файлов, но тогда я этому не придал большого значения так, как копировал файлы редко. Относительно недавно в моем распоряжении появилось высокоскоростное подключение к сети Интернет и теперь я часто копирую/качаю большие файлы и проблема падения производительности для меня стала очень актуальной.

Поверхностный гуглеж не дал результатов и я начал копать глубже, оказалось, что проблемы высокой нагрузки CPU есть у многих убунтоводов, если не у всех, а решение данной проблемы быстрым поиском не находится, поэтому я решил написать небольшой how-to по устранению высокой нагрузки на процессор при копировании файлов.
Читать дальше →
Total votes 93: ↑88 and ↓5 +83
Comments 36

Трансформация и перевод на другие языки web-сайтов на лету при помощи Nginx

Reading time 5 min
Views 9.4K




В моем первом посте я описал применение Apache Traffic Server в качестве кеширующего reverse-proxy. В отзывах меня спрашивали почему не nginx? Поскольку в ATS все равно не нашлось удобного способа трансформировать контент сайта, то я решил изучить возможности Nginx. Для решения задачи пришлось углубится в дебри документации, и вот что получилось…
Читать дальше →
Total votes 64: ↑56 and ↓8 +48
Comments 9

Ускоряем логин через SSH в Ubuntu в 100 раз

Reading time 2 min
Views 42K
Долгое время я мучился ужасно медленным удаленным логином на свои Ubuntu сервера (все 2 ). Ужасно медленно в данном случае — 2-3 секунды. Не то чтобы это было совсем фатально, но когда логин через ключ — хочется чтобы все работало мгновенно — в конце концов, у нас не 486SX.

Длительное гугление приводило только к стандартным решениям:
  1. UseDNS no в /etc/ssh/sshd_config — ускоряет логин в случае тормозного DNS. В моём случае стоял локальный кеширующий DNS, потому и так все было быстро.
  2. Принудительное указание IPv4 в SSH клиенте — особо не помогло, видимо не у всех тормозит
И на askubuntu.com вопрос c bounty уныло провисел долгие недели без ответа…

Читать дальше →
Total votes 145: ↑135 and ↓10 +125
Comments 44

20 наиболее необходимых инструментов для проверки отображения сайта

Reading time 5 min
Views 30K
Доступность контента и отображение информации на сайте чрезвычайно важна. Говоря простым языком, что хорошего может сделать то, что находится у вас на сайте, если определенные люди не смогут увидеть это? Конечно, этот новый модный дизайн с мелким шрифтом и малоконтрастными цветами для вас и ваших друзей выглядит классно, но вот что насчет тех, у кого слабое зрение, или тех, кто не различает некоторые цвета, или тех, у кого какие-либо другие проблемы со зрением — они ведь просто не смогут ничего найти, не говоря уже о том, чтобы прочитать хоть что-нибудь на вашем сайте. Вам надо, даже не «надо», а вы ДОЛЖНЫ сделать свой сайт доступным для как можно большего числа посетителей.

Только вот, что же делать, чтобы гарантировать доступность своего сайта? После прочтения данной статьи ваша задача значительно упростится. Ниже вы найдете 20 инструментов, помогающих сделать сайт более доступным.

Читать дальше →
Total votes 38: ↑35 and ↓3 +32
Comments 11

TOP'ай сюда

Reading time 5 min
Views 177K
Обзор практически всех *top утилит под linux (atop, iotop, htop, foobartop и т.д.).

top

Все мы знаем top — самую простую и самую распространённую утилиту из этого списка. Показывает примерно то же, что утилита vmstat, плюс рейтинг процессов по потреблению памяти или процессора. Совсем ничего не знает про загрузку сети или дисков. Позволяет минимальный набор операций с процессом: renice, kill (в смысле отправки сигнала, убийство — частный случай). По имени top суффикс "-top" получили и все остальные подобные утилиты в этом обзоре.

atop


Atop имеет два режима работы — сбор статистики и наблюдение за системой в реальном времени. В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин) скидывает состояние в двоичный журнал. Потом по этому журналу atop'ом же (ключ -r и имя лог-файла) можно бегать вперёд-назад кнопками T и t, наблюдая показания atop'а с усреднением за 10 минут в любой интересный момент времени.

В отличие от top отлично знает про существование блочных устройств и сетевых интерфейса, способен показывать их загрузку в процентах (на 10G, правда, процентов не получается, но хотя бы показывается количество мегабит).

Незаменимое средство для поиска источников лагов на сервере, так как сохраняет не только статистику загрузки системы, но и показатели каждого процесса — то есть «долистав» до нужного момента времени можно увидеть, кто этот счастливый момент с LA > 30 создал. И что именно было причиной — IO программ, своп (нехватка памяти), процесор или что-то ещё. Помимо большего количества информации ещё способен двумя цветами подсказывать, какие параметры выходят за разумные пределы.
Читать дальше →
Total votes 401: ↑389 and ↓12 +377
Comments 122

Фильтр Блума

Reading time 3 min
Views 62K
И снова здравствуйте! Сегодня я поведаю о фильтре Блума — структуре данных гениальной в своей простоте. По сути, этот фильтр реализует вероятностное множество всего с двумя операциями: добавление элемента к множеству и проверка принадлежности элемента множеству. Множество вероятностное потому, что последняя операция на вопрос «принадлежит ли этот элемент множеству?» даёт ответ не в форме «да/нет», а в форме «возможно/нет».

Как фильтр это делает?
Total votes 88: ↑85 and ↓3 +82
Comments 36

Установка Ubuntu Desktop на LVM

Reading time 6 min
Views 36K
Классические разделы, на которые чаще всего разбивается жёсткий диск для установки системы и хранения данных, имею ряд существенных недостатков. Их размер очень сложно изменять, они находятся в строгой последовательности и просто взять кусочек от первого раздела и добавить к последнему не получится, если между ними есть ещё разделы. Поэтому очень часто при начальном разбиении винчестера пользователи ломают себе голову — сколько места выделить под тот или иной раздел. И почти всегда в процессе использования системы приходят к выводу, что они сделали не правильный выбор.

К счастью, решить большинство этих проблем в Linux может технология LVM. Она создаёт дополнительную абстракцию — логические тома, которые видны в системе, как обычные разделы, однако реально ими не являются. Эта технология очень полезна для серверов, однако и на домашних компьютерах она приходится очень к месту. Я больше не думаю, какого размера диск выделить под систему, чтобы какой-нибудь texlive не забил бы всё место, но и чтобы лишние 5 — 10 гигабайт не пропадали просто так. LVM имеет ряд существенных преимуществ, значительно упрощающих жизнь:
  • Логические тома LVM больше не привязаны к физическому местоположению. В рамках LVM вообще не существует такого понятия, как порядок логических томов.
  • Размер логических томов можно увеличивать прямо на лету, а у отмонтированных томов можно кроме того легко уменьшать размер, не выходя из системы.
  • При необходимости можно размазать логические тома по нескольким физическим жёстким дискам, таким образом увеличив доступное место. При этом система всё так же будет видеть только один логический том, хотя размер его будет превышать доступные размеры жёстких дисков. Можно провести и обратную операцию, удалив жёсткий диск из LVM, таким образом освободив его для другого использования.
  • LVM поддерживает механизм снапшотов — мгновенных копий файловой системы тома. Это может очень пригодиться для создания бекапов.
  • Есть ещё масса плюсов, о которых можно почитать в специализированных статьях про LVM.
Читать дальше →
Total votes 89: ↑81 and ↓8 +73
Comments 88

Злая обезьянка повышает аптайм

Reading time 1 min
Views 4.4K


Системные администраторы сервиса Netflix нашли интересное решение, которое позволило улучшить архитектуру сервиса, и уменьшить влияние технических проблем на конечных пользователей.

В компании был написан и запущен внутренний сервис под названием «Chaos Monkey» (Обезьянка Хаоса (не путать с Хаусом!)), который случайным образом убивает инстансы AWS или процессы на серверах, обслуживающих сервис. Как ни странно, такой подход не вредит, а помогает технарям улучшать качество сервиса и повышать аптайм, убивая несколько обезьян зайцев — системы Netflix проходят круглосуточную проверку на то, что:

  • Все узлы системы имеют избыточное дублирование
  • Падение одного сервера или процесса не приводит к проблемам в оказании сервиса, даже минорным — например, ошибкам или дебаг-сообщениям на сайте
  • Сисадмины точно знают, что происходит при падении каждого из серверов и как это влияет на всю систему
  • Сисадмины имеют большой опыт решения проблем с серверами, почти на каждую проблему уже есть задокументированное решение


Этот оригинальный (если не сказать парадоксальный) подход сэкономил огромное количество денег и времени компании. А что об этом думают хабрагуру?
Total votes 119: ↑111 and ↓8 +103
Comments 78

Linux: Ускоряем софтрейд и RAID6 в домашнем сервере

Reading time 4 min
Views 31K
Чем можно заниматься в 0 часов 0 минут в Москве? Сидеть за праздничным столом и праздновать? Как бы не так. В этот праздничный миг я хочу поделиться с вами моими сегодняшними изысканиями по тюнингу производительности софтрейда в домашнем сервере. Можно пропустить теорию и сразу читать последний абзац где основная соль.

Почему RAID-6?


Как известно, RAID-5 выдерживает смерть одного веника, и после этой самой смерти – до момента когда закончится восстановление рейда с новым винчестером ваши данные под угрозой – восстановление обычно занимало до 70 часов для больших массивов и еще один веник может легко умереть в это время.
RAID-6 выдерживает смерть 2-х любых веников. Из минусов – общепризнанное мнение что тормозит, особенно запись, даже по сравнению с RAID-5. Что-ж, проверим.
Читать дальше →
Total votes 137: ↑131 and ↓6 +125
Comments 129
1

Information

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