• Продолжаем парсить RSS теперь уже kinozal'a используя grep, wget/curl

    • Tutorial
    RSS
    В моем предыдущем посте про автоматизацию загрузок новых эпизодов с RSS ленты LostFilm'а хабраюзер AmoN поднял правильный вопрос о невозможности описанным мною способом загрузки раздач, прямых ссылок на torrent файл которых в RSS ленте не содержится. В качестве примера был приведен трекер кинозал.тв. Именно решению этого вопроса посвящен сей пост ;)
    Читать дальше →
  • Перехват PPPoE сессии

    • Tutorial


    На видео показан практический способ угона сессии PPPoE с помощью врезки в кабель. При этом не происходит перехвата логина или пароля и не имеет значения используемый тип авторизации (CHAP/PAP).

    Большинство ethernet-провайдеров, к сожалению не используют шифрование всей сессии, ограничиваясь только шифрованием этапа авторизации. Это позволяет представиться легитимным клиентом, перехватив реквизиты существующего подключения.

    Читать дальше →
  • Автоматизация работы интернет-радио на Linux

    Привет, `whoami`.

    В этом посте я расскажу тебе об одном из методов автоматизации интернет-вещания – не самом надежном, но самом бюджетном. Сразу предупреждаю, что эта система заточена на использование ее под Linux, хотя с помощью знакомого многим «столярного инструмента», можно и под Windows реализовать. Эта статья расчитана на начинающих IT-шников, поэтому многие моменты я постарался «разжевать». Как у меня это получилось, решать тебе, мой дорогой читатель, но если мне удалось заинтересовать тебя, прошу под кат.
    Читать дальше →
  • Aspia 0.2.5

      После долгих месяцев разработки, я могу представить публике новую версию программы для сбора информации о компьютере для ОС Windows – Aspia 0.2.5. Дата релиза неоднократно сдвигалась с целью доделать все запланированные возможности, однако дальше тянуть с выходом я не мог. В связи с отсутствием железа для тестирования, я не смог сделать поддержки чтения данных SPD для DDR3 и получения температур с процессоров производства AMD. Однако, несмотря на все эти сложности, релиз получился достойным.

      Что же нового удалось реализовать?
      Читать дальше →
    • Ускоряем загрузку карты в World of Tanks


        Заметил я как-то, что на моём компьютере карты в WoT загружаются очень долго — больше минуты. Заходишь, бывает, в бой, а он уже секунд 30 идёт. А иногда вообще обнаруживаешь свой танк уже в виде горящих обломков. Компьютер мой, конечно, старенький и давно просит апгрейда, но вначале можно попытаться сделать что-то программным путём.
        Читать дальше →
      • Развертывание биллинга для небольшой сети с нуля

          Предыстория:
          Некие хорошие люди решили начинать провайдерский бизнес. Растянули и разварили оптику в небольшом районе, поставили ящички, засунули туда минимальные свичи, с помощью которых можно организовать VLAN-Per-User, закупили небольшой, для начала, канал у ближайшего магистрала. Встал у них вопрос о том, чем же считать пользователям трафик/денежки и нарезать скоростя.
          Общая схема сети должна выглядеть следующим образом:



          Кому интересно, далее под катом очень много букв и картинок.
          Читать дальше →
        • Разворачивание образов ОС при помощи FOG


            В этой статье я постараюсь вас познакомить с бесплатным продуктом FOG, который служит созданию и развертыванию образов ОС. К своему удивлению я не увидел статей на русскоязычных ресурсах, посвященных, безусловно, этому интересному продукту.
            Отмечу, что я не ставлю перед собой задачу описать абсолютно все нюансы и расписать всё. Ничего не заменит ваш личный опыт. Я хочу лишь приоткрыть занавес и помочь многим системным администраторам двигаться в нужном направлении, остальное в ваших руках.
            Читать дальше →
          • Признаки плохого программиста

            • Translation

            Неспособность рассуждать о коде


            «Рассуждать о коде» значит понимать порядок исполнения инструкций («исполнять программу в голове»), зная, каково предназначение кода.

            Симптомы

            • Наличие «волшебного», «вуду» кода или кода, который не имеет никакого отношения к целям программы, но всё равно тщательно поддерживается (например, инициализация переменных, которые никогда не используются, вызов функций, не имеющих отношения к цели, создание выходных данных, которые не используются, и т.д.).
            • Многократные вызовы идемпотентных функций (например, вызов save() по нескольку раз, «чтобы уж точно»).
            • Исправление ошибок написанием избыточного кода, который замещает данные, полученные при исполнении неисправного кода.
            • «Йо-йо код», который конвертирует значения в различные представления, а потом конвертирует их обратно ровно в то же представление, с которого начинали (например, преобразование десятичного числа в строку, а потом обратно в десятичное число, или padding строчки с последующим trim'ом).
            • «Бульдозерный код», который создает впечатление рефакторинга посредством разбития кусков кода на процедуры, которые, правда, затем невозможно использовать где-либо еще (высокая когезия).

            Читать дальше →
          • Хочется взять и расстрелять, или ликбез о том, почему не стоит использовать make install

              К написанию сей заметки меня сподвигло то, что я устал делать развёрнутые замечания на эту тему в комментариях к статьям, где в качестве части инструкции по сборке и настройке чего-либо для конкретного дистра предлагают выполнить make install.
              Суть сводится к тому, что эту команду в виде «make install» или «sudo make install» использовать в современных дистрибутивах нельзя.

              Но ведь авторы программ в руководствах по установке пишут, что нужно использовать эту команду, возможно, скажете вы. Да, пишут. Но это лишь означает, что они не знают, какой у вас дистрибутив, и дистрибутив ли это вообще, может, вы вступили в секту и обкурилисьчитались LFS и теперь решили под свою хтоническую систему скомпилять их творение. А make install является универсальным, хоть и зачастую неправильным способом это сделать.

              Читать дальше →
            • SQL инъекции. Проверка, взлом, защита

              SQL инъекция — это один из самых доступных способов взлома сайта.
              Суть таких инъекций – внедрение в данные (передаваемые через GET, POST запросы или значения Cookie) произвольного SQL кода. Если сайт уязвим и выполняет такие инъекции, то по сути есть возможность творить с БД (чаще всего это MySQL) что угодно.

              Как вычислить уязвимость, позволяющую внедрять SQL инъекции?


              Довольно легко. Например, есть тестовый сайт test.ru. На сайте выводится список новостей, с возможностью детального просомтра. Адрес страницы с детальным описанием новости выглядит так: test.ru/?detail=1. Т.е через GET запрос переменная detail передаёт значение 1 (которое является идентификатором записи в табице новостей).
              Читать дальше →
            • Простая GSM-сигнализация из подручных материалов

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


                Читать дальше →
              • Проксируем Cookies на Nginx при помощи модуля lua-nginx



                  Я уже писал о том, как с помощью Nginx трансформировать контент на лету. С момента публикации статьи на базе описанного метода запущен и развивается реальный проект ecommerce. Помимо перевода и трансформации также реализован и SEO рерайт по заветам руководства для начинающих от Google.

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

                  В чем суть проблемы


                  Проблема заключается в том, что любой нормальный сервер приложений всегда выставляет Cookie, например для того, чтобы сохранять сессию клиента или корзину с его товаром. Если этот сервер (точнее его администратор) озабочен поддержанием определенного уровня безопасности, то он выставляет в теле Cookie домен и путь, например domain= backend.org; path=/path1. Наш Nginx запущенный в режиме Reverse Proxy замечательно меняет все ссылки в теле документов с backend.org на frontend.org, но не делает этого для кук! Это означает что браузер клиента отвергнет такие куки.

                  Этот вопрос с давних пор волнует умы администраторов nginx, в рассылках он всплывает по 1-2 раза в год. Большинство вопрошавших, по-видимому, решили свои проблемы подкручивая логику backendа, но не я! После очередного апдейта оригинального сайта стало понятно, что костыль с PHP + Curl тянуть больше невозможно и надо непременно найти решение с помощью Nginx!

                  Я вернул тему в рассылку, попутно перебирая варианты из ngx_http_perl_module и переменной $upstream_http_set_cookie, даже заглянул в дебри сорсов с призрачной надеждой написать модуль самому. Но все было неудачно пока в один прекрасный момент я не получил письмо от Mikhail Mazursky, который дал ценный совет. Благодаря этому совету я не только с легкостью решил задачу проксирования Cookie, но и получил новый инструмент, с помощью которого можно создать версию 2.0 своего проекта.

                  Решение


                  Название этого инструмента lua-nginx-module, который написан еще одним китайским самородком с корнями из Taobao. Из названия легко понять, что речь об языке скриптов Lua встроенном в Nginx — но это больше чем просто интерпретатор! Эти ребята создали полностью неблокируемую реализацию с производительностью десятки тысяч операций в секунду, которая имеет хуки ко всем событиям внутри Nginx. То что раньше можно было реализовать только написав свой модуль на C, теперь можно сделать несколькими строчками на Lua. Заинтересовались?
                  Тогда добро пожаловать под кат!
                • GnuPG на смарт-картах. Как это выглядит…

                    image
                    Почти все знают что такое GPG. Многие им пользуются. Некоторые даже в курсе, что есть возможность хранить секретные ключи на внешнем носителе типа смарт-карты. Я-же хочу описать как это все выглядит на практике.

                    Несколько дней назад ко мне приехала пара «OpenPGP SmartCard v2». Заказаны они были у официального их распространителя — shop.kernelconcepts.de/index.php?language=en. Цена одной карты на данный момент составляет 17.14 евро. Две заказанные карты были отправлены чем-то вроде заказного письма и пересылка обошлась мне в 5 евро, что очень даже неплохо. Еще порадовало что карты без проблем прошли через таможню. Не уверен что так будет с большим количеством, но для личного использования, думаю, можно заказывать достаточно безопасно.

                    И вот они у меня...
                  • Cага о пакетном конвертировании pdf в text

                    В прошлом году была заказана, как казалось на первый взгляд, простая работа: создать систему пакетной обработки файлов — содержащих 12-ти колоночную таблицу, данные из которой экспортировать в БД. Все бы ничего — да вот файлы оказались документами в pdf, а заказчик утверждал что другого формата для обработки предоставить никак не может.

                    image
                    Образец того самого pdf-а — в файле сохранена структура, но подчищены все данные.

                    Чтож, несмотря на предупреждения знающих людей, а предупреждали они ой как не зря — я за работу взялся и пережил вот такое приключение:

                    Читать дальше →
                  • Неравномерно идущие часы


                      Идея этих часов состоит в том, что стрелки на них двигаются неравномерно, то ускоряясь, то отставая, но тем не менее, в среднем, часы показывают правильное время. Сейчас расскажу, как такие сделать.
                      Читать дальше →
                    • Немного про настройку впса и про скрипт добавления пользователей

                        В прошлую субботу я написал в комментариях на хабре «хорошо, на днях опубликую свой скрипт» и это на днях пришло. ВНЕЗАПНО.

                        Ссылка на скрипт.

                        Настройка впса в общих чертах



                        Перед настройкой я твёрдо решил что мой впс будет оплотом безопасности. Мне хотелось чтобы для каждого домена в системе был свой пользователь. Это очень аккуратно и хоть немного добавляет безопасти. Начал рассматривать варианты, их оказалось 5:

                        1. Проксировать ngingx на одного демона fcgi запущенного из под рута. Это прекрасное решение, но работает только в однодоменных вариантах, мне же хотелось нечто вроде шареда, а тут получалось что через один процесс можно было достучаться до любого домена на сервере. Не подходит.
                        2. Для каждого пользователя в системе запускать свой cgi процесс и постоянно держать их в памяти, проксировать nginx на них. Я засомневался в таком решении и не захотел его реализовывать (возможно у меня были какие-то объективные соображения, но я не помню). Но с другой стороны некто equand сказал мне в комментариях что это решение очень хорошо себя показывает. Поверю ему, но проверять буду на следущем впсе.
                        3. В freebsd, говорят, есть магическая штука «Jail» которая решает все проблемы. Но это ж freebsd. Не подходит.
                        4. Chroot'инг каждого домена. Решил не делать из-за громоздкости и дохлости впса.
                        5. Избрал традиционное и отвратительное по производительности решение с nginx + apache, но под апачем я использую модуль mpm-itk для безопасности. Ведёт себя хорошо, но производительность близится к уровню тыквы: 20 одновременных запросов к динамике серверу уже достаточно :).


                        Читать дальше →
                      • Легкий PERL-скрипт для отправки и приема SMS через мобильный телефон

                        Преамбула



                        В процессе самостоятельной разработки «Умного дома» ( далее по тексту УД) периодически возникала необходимость в написании небольших, но очень нужных утилит-программ-скриптов, в том или ином виде уже написанных и доступных на просторах интернет, но по тем или иным причинам непригодных для использования в проекте. «Почему непригодных?», спросит опытный Разработчик, может я просто «Не люблю кошек, потому, что не умею их готовить?».
                        Читать дальше →
                      • Основы стереозрения

                          В данной статье содержатся базовые сведения о математическом аппарате, используемом в стерео зрении. Идея ее написания появилась после того как я начал работать с методами стерео зрения, в частности использовать алгоритмы реализованные в OpenCV. Эти алгоритмы зачастую ссылаются на различные понятия, такие как "фундаментальная матрица", "эпиполярная геометрия", "триангуляция". Существуют очень хорошие книжки по компьютерному зрению, в которых описывается, в том числе и стерео зрение и все необходимые понятия, но в них, нередко, бывает представлено слишком много информации для новичка. Здесь же, в краткой форме изложены базовые сведения о том, как работает стерео зрение и основные связанные с ним необходимые понятия:
                          • проективная геометрия и однородные координаты
                          • модель камеры
                          • эпиполярная геометрия (epiporal geomerty), фундаментальная и существенная матрицы (fundamental matrix, essential matrix)
                          • триангуляция стереопары точек
                          • карта глубины(depth map), карта смещений(disparity map) и идея, лежащая в основе ее вычисления
                          Практически весь материал статьи основан на книге "Multiple View Geometry in Computer Vision" by Hartley, R. I. and Zisserman, A., а раздел про построение карты глубины описан на основе материала из "Learning OpenCV" by Gary Bradski, Adrian Kaehler.

                          Для понимания содержимого статьи достаточно иметь общее представление об аналитической геометрии и линейной алгебре: знать, что такое матрица, вектор, скалярное и векторное произведение.

                          Читать дальше →
                          • +41
                          • 80.6k
                          • 9
                        • Оно шевелится! Живые бэкапы Linux с помощью Remastersys

                          • Tutorial
                          О резервном копировании можно говорить много и со вкусом, но я не буду играть в Капитана Очевидность. Первые же ссылки в выдаче Google по запросу «Ubuntu backup» расскажут об rsync, partimage, fsarchiver, dd, tar, simple backup. Я потратил много часов, экспериментируя с этими инструментами и переустанавливая систему после неудачных экспериментов. Я хотел найти самый быстрый и простой способ восстановить систему после фатального сбоя и продолжать работать, как ни в чем не бывало. Текст под катом сэкономил бы мне в общей сложности пару рабочих дней, прочитай я его несколько месяцев назад, когда впервые поставил Ubuntu на рабочий ноутбук.
                          Читать дальше →