Как стать автором
Обновить
37
Mike Eremin @sublimelionread⁠-⁠only

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

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

Тюним память и сетевой стек в Linux: история перевода высоконагруженных серверов на свежий дистрибутив

Время на прочтение10 мин
Количество просмотров95K
image

До недавнего времени в Одноклассниках в качестве основного Linux-дистрибутива использовался частично обновлённый OpenSuSE 10.2. Однако, поддерживать его становилось всё труднее, поэтому с прошлого года мы перешли к активной миграции на CentOS 7. На подготовительном этапе перехода для CentOS были отработаны все внутренние процедуры, подготовлены конфиги и политики настройки (мы используем CFEngine). Поэтому сейчас во многих случаях миграция с одного дистрибутива на другой заключается в установке ОС через kickstart и развёртывании приложения с помощью системы деплоя нашей разработки — всё остальное осуществляется без участия человека. Так происходит во многих случаях, хотя и не во всех.

Но с самыми большими проблемами мы столкнулись при миграции серверов раздачи видео. На их решение у нас ушло полгода.
Читать дальше →
Всего голосов 110: ↑104 и ↓6+98
Комментарии73

Linux Malware Detect — антивирус для веб-серверов

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


Интернет уже не тот, что прежде — кругом враги. Тема обнаружения непосредственного заражения сайта и поиска вредоносных/зараженных скриптов на взломанном сайте рассмотрена слабо, попробуем это исправить.
Итак, представляем вашему вниманию Linux Malware Detect.

Linux Malware Detect (LMD) — это сканер для Linux, предназначенный для поиска веб-шеллов, спам-ботов, троянов, злонамеренных скриптов и прочих типичных угроз характерных для веб-пространств и особенно актуален для виртуальных шаред-хостинг платформ. Главное отличие от прочих Linux-антивирусов — его веб направленность, сканирование файлов веб-сайтов, ведь обычные антивирусы ориентируются на более глобальные угрозы уровня системы.
Читать дальше →
Всего голосов 43: ↑38 и ↓5+33
Комментарии48

Важнейшие $in'ы: производительность MongoDB в диапазонах

Время на прочтение3 мин
Количество просмотров12K
Перевод этой статьи уже есть на хабре, но он ужасен и содержит ложную информацию.

Приветствую, искатели приключений! Путешествуя по территории индексации MongoDB хотя бы некоторое время, вы, возможно, познакомились с таким правилом: если ваш запрос содержит сортировку/порядок (orderby) – добавьте сортируемое поле в конец индекса который используется для запроса.

Во многих случаях когда запрос содержит равенство (то есть поиск конкретного значения, например, {“name”: “Charlie”}) данная мантра бывает весьма полезной.

Запрос

db.drivers.find({"country": {"$in": ["A", "G"]}}).sort({"carsOwned": 1})

Индекс

{"country": 1, "carsOwned": 1}

Такая комбинация будет не такой эффективной, как может показаться, не смотря на то, что индекс соответствует правилу. В этом запросе есть ловушка, в которую вы с легкостью попадете следуя общепринятому мнению.
Читать дальше →
Всего голосов 42: ↑40 и ↓2+38
Комментарии9

Оптимальные опции для x86 GCC

Время на прочтение4 мин
Количество просмотров56K
      Распространено мнение, что GCC отстает по производительности от других компиляторов. В этой статье мы постараемся разобраться, какие базовые оптимизации GCC компилятора стоит применить для достижения приемлемой производительности.

Читать дальше →
Всего голосов 89: ↑85 и ↓4+81
Комментарии53

PRTG: Система мониторинга и некоторые полезные советы

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


На рынке существует огромное множество систем мониторинга, начиная от самых простых и бесплатных и заканчивая дорогими решениями от известных производителей, таких как Hewlett-Packard и Microsoft.

В этой статье я расскажу вам о системе PRTG Network Monitor от компании Paessler AG. Сразу хочу оговориться, что я не являюсь серьезным IT специалистом, а работаю в области безопасности, хотя и достаточно тесно сотрудничаю с департаментами IT и IT Security.

Выбор ПО производился мной на основании поверхностного анализа сайтов производителей.
Читать дальше →
Всего голосов 13: ↑7 и ↓6+1
Комментарии7

Piecon — динамическая круговая диаграмма в фавиконе

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

Крошечная (2 килобайта в минифицированном виде) JavaScript-библиотека Piecon генерирует круговую диаграмму на месте фавикона. API предельно прост и состоит из трёх методов объекта Piecon.
Читать дальше →
Всего голосов 84: ↑78 и ↓6+72
Комментарии13

Полноценное Python приложение на Android

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


В этой статье я хотел бы рассказать о том, как создать полноценное приложение на Python для Android. Нет, это не очередной мануал для создания скрипта для sl4a, это мануал по созданию полноценного приложения с UI, возможностью собрать apk и выложить на Android Market. Заодно я хотел бы похвалиться своим первым приложением на google.play, это не hello world, а полезное приложение для фотографов, хотя и узко специализированное.
Читать дальше →
Всего голосов 109: ↑106 и ↓3+103
Комментарии45

Юникод для чайников

Время на прочтение8 мин
Количество просмотров327K
logo
Сам я не очень люблю заголовки вроде «Покемоны в собственном соку для чайников\кастрюль\сковородок», но это кажется именно тот случай — говорить будем о базовых вещах, работа с которыми довольно часто приводить к купе набитых шишек и уйме потерянного времени вокруг вопроса — «Почему же оно не работает?». Если вы до сих пор боитесь и\или не понимаете Юникода — прошу под кат.

Читать дальше →
Всего голосов 121: ↑115 и ↓6+109
Комментарии53

Как работает yield

Время на прочтение6 мин
Количество просмотров689K
На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

Вот исходный вопрос:
Как используется ключевое слово yield в Python? Что оно делает?

Например, я пытаюсь понять этот код (**):
def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild

Вызывается он так:
result, candidates = list(), [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
        candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
        return result


Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

Подробный и обстоятельный ответ
Всего голосов 141: ↑136 и ↓5+131
Комментарии41

Application Verifier для программиста: тестирование Windows-приложений

Время на прочтение7 мин
Количество просмотров20K
Возможно в Вашем проекте и не пишут try { /* code */ } catch(...) { } для того чтобы избежать исключений при работе с памятью, умеют закрывать хендлы и знают о виртуализации Windows Vista, а программы никогда не падают по непонятным и редко повторяемым причинам.

Тогда Вам повезло, можете переходить к следующему топику.
Но если это не так...
Всего голосов 60: ↑55 и ↓5+50
Комментарии20

Делаем фото на документы

Время на прочтение2 мин
Количество просмотров12K
imageФото на документы — написанная мною программа, которая предназначена для подготовки фотографии человека на российские документы. Программа больше года используется в десятках точках типа «фото на документы за 5 минут». Кроме этого, программу можно использовать дома, получая значительную экономию.

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

Читать дальше →
Всего голосов 165: ↑152 и ↓13+139
Комментарии108

Shrew бесплатная альтернатива Cisco VPN Client

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


Столкнулся с проблемой установки Cisco VPN Client на Windows 7 да еще к тому же x64,
если на Windows 7 x86 с шаманским бубном можно запустить, то на x64 все попытки будут тщетны(Cisco почти принципиально не хочет делать x64 Vpn Client).

Читать дальше →
Всего голосов 49: ↑46 и ↓3+43
Комментарии40

qutIM 0.2. Релиз готов!

Время на прочтение2 мин
Количество просмотров2K
В честь праздника Хэллоуин хотим вас всех поздравить и представить вам новую версию мессенджера qutIM!

Больше года прошло уже с начала разработки версии 0.2, за этот год мы встречались со многими трудностями, были проблемы с серверами, был недостаток разработчиков (и пожалуй пока еще эта проблема остается), был и есть недостаток (точнее полное отсутствие) дизайнеров. Перед нами время от времени стоял выбор — использовать распространенные технологии или делать ставку на темных лошадок — долго решали между iris'ом, уже зарекомендовавшим себя в таких клиентах как Psi и Kopete, и мало кому известным gloox'ом, который оказался более перспективной разработкой.

qutIM — это молодой, перспективный и свободный многопротокольный клиент для общения в реальном времени. Начиная с версии 0.1.1 ядро было полностью переписано, реализация ICQ протокола перетерпела множественные изменения и была вынесена в отдельный плагин, были добавлены поддержки и многих других протоколов, так что теперь qutIM официально поддерживает следующие протоколы:
  • ICQ
  • Jabber
  • MRIM
  • IRC
  • VKontakte



Читать дальше →
Всего голосов 199: ↑186 и ↓13+173
Комментарии455

Веб-аналитика: анализируй это! Часть 2. Сбор данных

Время на прочтение5 мин
Количество просмотров18K
Перед тем, как анализировать данные статистики, нужно понимать, как они были собраны, какие из них могут быть неточными, и почему.

Сервер в интернете получает от браузера пользователя запросы и отдает данные. На каждый просмотр страницы сервер получает один запрос (на тело страницы), а затем несколько дополнительных (картинки, скрипты, таблицы стилей и другие дополнительные данные для отображения страницы). Скрипты на странице также могут генерировать запросы к серверу — в том числе, к отдельному серверу статистики.
Читать дальше →
Всего голосов 34: ↑28 и ↓6+22
Комментарии24

Веб-аналитика: анализируй это! Часть 1. Вступление

Время на прочтение3 мин
Количество просмотров27K
Часть 1. Вступление.
Часть 2. Сбор данных.
Часть 3. Базовые метрики.
Часть 4. От статистики к аналитике
Часть 5. Разделяй и думай
Часть 6. Action!
Счетчики посещаемости знакомы всем пользователям интернета уже много лет. Многие владельцы сайтов ставят сразу несколько иконок разных счетчиков, и день за днём цифры на них растут и всё больше радуют хозяина.



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

Сейчас большинство успешных коммерческих сайтов уделяет огромное внимание сбору и анализу статистических данных. В частности, крупнейший международный онлайн-магазин Amazon.com создал целый культ аналитики.
Читать дальше →
Всего голосов 48: ↑42 и ↓6+36
Комментарии39

Информация

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