Как стать автором
Обновить
14
0
Anton @kav

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

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

Watir: простой парсинг сложных сайтов

Время на прочтение4 мин
Количество просмотров51K
imageКаждый, кто пишет парсеры, знает, что можно распарсить сто сайтов, а на сто-первом застрять на несколько дней. Структура очередного отмороженного сайта может быть сколь угодно сложной, и, когда дело касается сжатых javascript-ов и ajax-запросов, расшифровать их и извлечь информацию с помощью обычного curl-а и регекспов становится дороже самой информации.

Грубо говоря, проблема в том, что в браузере работает javascript, а на сервере его нет. Нужно либо писать интерпретатор js на одном из серверных языков (jParser и jTokenizer), либо ставить на сервер браузер, посылать в него запросы и вытаскивать итоговое dom-дерево.

В древности в таких случаях мы строили свой велосипед: на отдельной машине запускали браузер, в нем js, который постоянно стучался на сервер и получал от него задания (джобы), сам сайт грузился в iframe, а скрипт извне отправлял dom-дерево ифрейма обратно на сервер.

Сейчас появились более продвинутые средства — xulrunner (crowbar) и watir. Первый — безголовый firefox. У crowbar есть даже ff-плагин для визуального выделения нужных данных, который генерит специальный парсер-js-код, однако там не поддерживаются cookies, а допиливать неохота. Watir позиционируется разработчиками как средство отладки, но мы будем его использовать по прямому назначению и в качестве примера вытащим какие-нибудь данные с сайта travelocity.com.

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

Ускоряем раздачу фоток

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

С проблемой медленной отдачи статического контента рано или поздно сталкивается каждый сисадмин.

Проявляется это приблизительно так: иногда 3Kb картинка грузится так, как будто бы она весит 3Mb, на ровном месте начинают «залипать» (отдаваться очень медленно) css-ы и JavaScript-ы. Вы нажимаете ctrl + reload — и уже, вроде, проблемы нет, потом спустя всего несколько минут все повторяется опять.

Не всегда истинная причина «тормозов» очевидна и мы косо поглядываем то на nginx, то на хостера, то на «забитый» канал, то на «тормозной» или «глючный» браузер :)

На самом деле проблема в несовершенстве современного винчестера, который до сих пор не расстался с механическими подсистемами вращения шпинделя и позиционирования головок.

В этой статье я предложу Вам свое решение этой проблемы, основанное на практическом опыте использования SSD дисков совместно с web-сервером nginx.
Читать дальше →
Всего голосов 128: ↑126 и ↓2+124
Комментарии69

Большие потоки трафика и управление прерываниями в Linux

Время на прочтение4 мин
Количество просмотров63K
В этой заметке я опишу методы увеличения производительности линуксового маршрутизатора. Для меня эта тема стала актуальна, когда проходящий сетевой трафик через один линуксовый маршрутизатор стал достаточно высоким (>150 Мбит/с, > 50 Kpps). Маршрутизатор помимо роутинга еще занимается шейпированием и выступает в качестве файрволла.
Читать дальше →
Всего голосов 107: ↑102 и ↓5+97
Комментарии42

Linux HA на основе Pacemaker

Время на прочтение5 мин
Количество просмотров121K
В своей предыдущей статье я вкратце коснулся темы создания High Availability решения на основе демона heartbeat. Однако, как выяснилось, что-то сложнее чем 2-х узловой кластер на нем делать не так уж удобно. Изучение проблемы вывело меня на след проекта Pacemaker. Его-то мы сейчас в кратце и рассмотрим.
Читать дальше →
Всего голосов 59: ↑54 и ↓5+49
Комментарии32

Новичкам в программировании под Mac/iPhone: смотрите видеоролики от эпла под Маком — сможете увидеть субтитры! (а также несколько самых важных ссылок)

Время на прочтение2 мин
Количество просмотров6.8K
По моему мнению, осваивать новые фреймворки при программирования под айфон (и, возможно, под мак) крайне удобно, посмотрев про них видеоролики, лежащие бесплатно в iTunes University (каждый длиной около часа, их штук 50). После просмотра видеоролика в голове создается четкая картина, что с чем связано и как что вызывает, какие у классов есть возможности, и после этого достаточно reference, что встроен в Xcode, чтобы посмотреть прототипы методов и имена свойств. IMHO, без этих видео, используя лишь reference и guide и примеры, разобраться в том же фреймворке на порядки сложнее и дольше (особенно во всяких, связанных с видео и аудио).

Все время смотрел эти видеоролики на айфоне во время поездок на транспорте (ну и иногда под виндой, используя quicktime player v 7.6.6 — это практически текущая версия). Недавно первый раз запустил проигрывание видеоролика под макосью, и по доброму офигел — у них, оказывается, есть субтитры на английском! Это крайне удобно для тех, кто плохо понимает английский на слух.

UPD: На айфоне и айпэде субтитры тоже можно включить!!! Ткните на кнопку слева от слайдера уровня громкости.

Надеюсь, кому-то это поможет (особенно тем, кто еще не имеет комп с макосью, но подумывает о разработке под айфон и знакомится с документацией).

Ну и любезно предоставленная коллекция ссылок для начинающих от xzDeveloper — что почитать, что посмотреть (в порядке удаления от первоисточника):
Всего голосов 65: ↑49 и ↓16+33
Комментарии46

Перехват и редактирование файлов http-трафика на примере торрента

Время на прочтение4 мин
Количество просмотров11K
Пару лет назад возникла идея сделать локальный bittorrent-ретрекер для пользователей нашей «домашней» городской сети, чтобы и пользователи быстрее скачивали и у нас меньше трафика было. Установкой самого ретрекера дело только начиналось, необходимо было как-то анонсировать его для скачиваемых торрентов. В процессе выяснения способов и механизмов анонса я пришёл к достаточно общему и универсальному алгоритму, с которым и предлагаю познакомиться.

Итак, первое:
Читать дальше →
Всего голосов 114: ↑112 и ↓2+110
Комментарии104

Сумбурные заметки про python и django

Время на прочтение5 мин
Количество просмотров47K
Накопилось несколько маленьких заметок/советов про python и django, которые на отдельные топики не тянут, поэтому публикую все сразу.

Под катом:
  • как упростить код вьюх ровно в 2 раза
  • легкий способ рисования графиков
  • почему Ian Bicking воскликнул «Cool!»
  • приложения для ВКонтакте на django за 5 минут
  • хорош ли pymorphy?
  • пара фишек насчет выкладки пакетов на pypi
  • что общего между декораторами и with-контекст-менеджерами
  • принимаем оплату на django-сайтах
  • показываем Яндекс.Карту для заданного адреса

Читать дальше →
Всего голосов 159: ↑153 и ↓6+147
Комментарии37

Как редактировать данные о компаниях и другую информацию на Картах Google

Время на прочтение2 мин
Количество просмотров19K
Брианна Брекке (Brianna Brekke), Старший стратег, Места на карте Google.

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

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

Как сообщить о проблеме

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

Как редактировать данные о компаниях прямо на Картах Google
  • Вы можете обновить местоположение объекта прямо на Картах Google. После того, как вы проверите и сохраните свои правки, они появятся на картах в течение нескольких часов.
  • Если вы – владелец компании и хотите, чтобы данные о ней присутствовали на наших картах, ознакомьтесь с приведенной ниже информацией о Местах на карте Google.
Как сообщить об ошибке в данных о компаниях
  • Лучший способ сообщить об обнаруженных вами неточностях в информации о компаниях – это использовать инструмент Сообщить о проблеме.
  • После проверки присланной пользователями информации, в течение нескольких недель произойдет обновление карт.
Если вы владелец бизнеса, вам нужно зарегистрировать свою компанию в Местах на карте Google и ввести данные о ней. Эти данные будут выводиться в поиске Google и на Картах Google. Вы размещаете информацию о компании абсолютно бесплатно, а затем подтверждаете ее. Вы не только будете уверены, что на странице Места на карте будет представлена самая точная информация о вашей компании, но и сможете расширить свое присутствие в сети, загрузив фотографии, видеоролики, а также публикуя специальные предложения (например, товар недели) в режиме реального времени.

Как заявить права на свой бизнес на Картах Google
  • Сообщите нам о том, что вы являетесь владельцем компании, на странице http://www.google.com/places или нажав на ссылку «Владелец бизнеса?» в описании вашей компании.
  • Затем мы пришлем вам PIN-код, и вы подтвердите регистрацию своей компании по телефону или при помощи почтовой открытки. В течение часа после подтверждения вы увидите информацию о своей компании на карте, перейдя по ссылке «Просмотреть».
  • Если информация о вашей компании некорректна, существует много разных способов сообщить нам об этом. Мы обязательно внесем все необходимые исправления.
Всего голосов 36: ↑24 и ↓12+12
Комментарии8

Asterisk, или домашняя телефония для (про)двинутых пользователей

Время на прочтение14 мин
Количество просмотров121K
Эта история началась два долгих года назад, когда во время командировки в США я ВДРУГ остался без мобильной связи: с дуру перед поездкой поменял телефон, а он оказался «двух-диапазонником»… Да и роуминг не дешёвый…
Итогом стало открытие для себя SIP-телефонии.

И вот несколько месяцев назад, из статей на Хабре, выясняю, что чужим дядям можно и не платить за межгород, если надо позвонить откуда-то в родной город через Интернет! Достаточно поставить VoIP сервер и настроить его так, как надо именно тебе!

И вот, взяв в руки Asterisk, я приступил к операции по борьбе с излишней жадностью ОпСоСов…

Читать дальше →
Всего голосов 177: ↑174 и ↓3+171
Комментарии110

Современные возможности виртуализации

Время на прочтение9 мин
Количество просмотров7.6K
После недавних дискуссий о том, какой гипервизор лучше, возникла идея выписать функциональность современных систем виртуализации без привязки к конкретным названиям. Это не сравнение «кто лучше», это ответ на вопрос «что можно сделать с помощью виртуализации?», общий обзор возможностей промышленной виртуализации.

Исполнение кода


Так как гипервизор полностью контролирует виртуальные машины, он может специфичным образом управлять процессом работы машины.

Различные системы виртуализации предлагают несколько методов исполнения кода (полная эмуляция в список не включена, так как не используется в промышленной виртуализации):
  • binary rewriting. Этот подход использует VMWare и Connectix Virtual PC (куплен microsoft) при виртуализации на хосте без аппаратной виртуализации. Гипервизор (виртуализатор) просматривает исполняемый код и помечает инструкции, требующие «виртуализации» брейкпоинтами и эмулирующий (виртуализирующий) только такие инструкции.

Читать дальше →
Всего голосов 65: ↑60 и ↓5+55
Комментарии95

10 хитростей Google Analytics

Время на прочтение4 мин
Количество просмотров36K
Казалось бы, установка и настройка счетчика Google Analytics — задачи простые. На деле, эта «простота» скрывает за собой множество подводных камней. Мы постоянно сталкиваемся с тонкостями, неочевидными особенностями подсчета и глубоко спрятавшимися ошибками (конечно, обычно виноваты мы сами:).

На базе нашего опыта я сформулировал 10 советов, которые пригодятся большинству пользователей Analytics – когда-то это были и наши грабли! Некоторые темы заслуживают отдельных статей, но пока расскажу о более-менее очевидных и простых технических хитростях.

Проверка регулярных выражений при установке целей

Достаточно часто при указании адреса цели приходится использовать регулярные выражения: например, если искомый фрагмент адреса окружен другими частями. Регулярные выражения – тонкая материя, а ждать обновления данных для проверки правильности написания не хочется. Проверить правильность выражения можно мгновенно, перейдя в раздел «Содержание – Самое популярное содержание» и введя в поле фильтра выражение. Содержимое сразу же отфильтруется, а вы сможете убедиться в корректности кода.
Читать дальше →
Всего голосов 83: ↑63 и ↓20+43
Комментарии18

Быстрая реализация резервного копирования в Amazon S3

Время на прочтение3 мин
Количество просмотров25K
Я устал испытывать определённые опасения за сохранность данных на выделенном сервере, наблюдая за происходящим у хостеров последнее время… 3FN, Agava, Hosting.UA, МакХост — тенденция получается очень нехорошая.

В итоге, МакХост стал последней каплей, и, чтобы не оказаться в числе тех, кто «уже делает бекапы», я перевёл систему бекапов своего сервера на Amazon S3. Получилось вполне себе быстро и прозрачно.

Хочу поделиться с общественностью простейшей реализацией.
Читать дальше →
Всего голосов 170: ↑167 и ↓3+164
Комментарии62

KIWI Image System: атака клонов

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

⇒Введение


Когда у вас есть очень много одинаковых машин (кластер веб-серверов, куча терминалов оплаты, зал с публичными компьютерами), возникает вопрос о поддержании всех машин синхронизированными по версиям установленного ПО.
Традиционным решением является настройка репозиториев и регулярное обновление всех машин средствами пакетного менеджера. Не менее традиционным — сборка в одном месте и почти ручное раскладывание по всем машинам новой версии пакета.

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


А потом пришли фрукты и спасли мир
Всего голосов 46: ↑37 и ↓9+28
Комментарии24

Простой и эффективный метод отразить http DDoS от 50мбит с помощью nginx и iptables

Время на прочтение7 мин
Количество просмотров67K
Здравствуй, Хабр!
Предлагаю твоему вниманию простой и в то же время эффективный метод борьбы с http DDoS. На основе сервера Xeon 2.5GHz / 4Gb RAM / SAS можно отражать атаку примерно до 300 Мбит/с (значение получено методом экстраполяции).

Способ реализация

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

Область применения

Борьба с Http DDoS на выделенном сервере или ВПС. Максимальная возможная мощность сдерживания DDoS атаки ограничивается физическими возможностями сервера и пропускной способностью канала.

SEO под DDoS-ом

Ваш сайт будет правильно индексироваться во время атаки, что позволит сохранить позиции в выдаче поисковых систем. Особенно актуально для сайтов с большими SEO бюджетами.

Стоимость и эффективность

На время атаки придется отказаться от некоторых сервисов вашего сайта. Возможно, придется расширить полосу канала, перенести сайт на более мощный сервер. Эффективность достигается максимизацией коэффициента масштабируемости системы. Обеспечивается быстрое наращивание аппаратных ресурсов при увеличении мощности атаки.
Читать дальше →
Всего голосов 193: ↑179 и ↓14+165
Комментарии78

Минздрав предупреждает: 3d-фильмы вредят здоровью

Время на прочтение3 мин
Количество просмотров27K
Итак, ура товарищи. Свершилось то, чего все так долго ждали-теперь можно быть непосредственным участником действа киноленты, можно попасть в самую гущу, в самую атмосферу фильма-теперь все больше и больше лент снимаются в формате 3d. Людям нравится, инженерам есть работа, компаниям капает $. Вроде все довольны. Но мало кто задумывается засчет чего достигается 3d эффект и что он реально может вредить здоровью.
image

Под катом-простое русское объяснение чем же безобидная объемная картинка может навредить простому обывателю.

Читать дальше →
Всего голосов 262: ↑168 и ↓94+74
Комментарии233

Полноценный интернет-магазин на вашем сайте

Время на прочтение1 мин
Количество просмотров897
Для тех, кто следит за обновлениями компонентов публикации I'm Sync, есть хорошая новость. Как мы и обещали, теперь компонент публикации «Магазин» позволяет добавлять товары в корзину и оформлять заказ. Прямо на вашем сайте!

Читать дальше →
Всего голосов 84: ↑62 и ↓22+40
Комментарии47

Как обойти URL-фильтры с помощью математики

Время на прочтение1 мин
Количество просмотров5.1K
Может быть для кого-то станет открытием, но современные браузеры могут воспринимать URL не только в десятичной системе, но также в 8-ричной и 16-ричной, и даже единым 32-битным числом. То есть URL типа 66.102.13.19 можно представить несколькими разными способами.

0x42.0x66.0x0d.0x63
0x42660d63
1113984355
00000102.00000146.00000015.00000143

Щёлкаете по любому из вариантов — и попадаете на google.com.
Читать дальше →
Всего голосов 141: ↑92 и ↓49+43
Комментарии72

Защищаем SSH от брутфорса на любом порту

Время на прочтение3 мин
Количество просмотров113K
Сегодня меня заинтересовал опрос надо ли перевешивать SSH на нестандартный порт. Сам опрос не так интересен как способ автора zivot_je_cudo защищать SSH от подбора пароля: после неверной попытки подключения блокировать новые попытки в течение 20 секунд. Задержка, видимо, выбрана эмпирически, исходя их двух противположных пожеланий: чтобы не заблокировать в случае опечатки себя надолго, и в тоже время усложнить жизнь подбиральщика. Я хочу поделиться своим способом противодействия брут-форсу, который применяю уже несколько лет. Он имеет два преимущества:
— дает мне больше попыток для набора правильного пароля
— но при этом блокирует брутфорсеров «навечно».

Как можно достичь этих двух противоположных целей?
Читать дальше →
Всего голосов 114: ↑106 и ↓8+98
Комментарии139

Информация

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