Search
Write a publication
Pull to refresh
0
0
Send message

dklab vzfirewall: простое управление firewall-ом в OpenVZ

Reading time5 min
Views2.6K
Dklab vzfirewall — это утилита для OpenVZ, позволяющая конфигурировать firewall без утомительного ввода iptables-правил и без «завязки» на множество IP-адресов виртуальных машин. Главный принцип утилиты — быть настолько простой в использовании, насколько это возможно. Цель, которую я преследовал при создании утилиты, — избавить системного администратора от головной боли, связанной с конфигурированием iptables; надеюсь, у меня это хоть немного получилось.

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

Примеры


Листинг 0: Установка
cd /usr/sbin
wget http://github.com/DmitryKoterov/vzfirewall/raw/master/vzfirewall
chmod +x vzfirewall

Листинг 1: Файл /etc/sysconfig/vz-scripts/101.conf
Читать дальше →

Подключение к Yota из Linux

Reading time2 min
Views21K
Доброго времени суток. Сегодня я расскажу о том, как подключить устройство под управлением Linux к сети Yota. В моём случае это Asus EEE 1003, с установленной EEEbuntu 3 Standart(которая из себя представляет модифицированную Ubuntu 9.04) на борту. Если у вас за работу WiMax`a отвечает Intel`овский чип(можно узнать выполнив lspci) — этот рецепт вам поможет. Дистрибутив особой роли не играет.
далее

Всем по сообщению

Reading time6 min
Views15K
В сегодняшних веб-приложениях часто требуется выдать посетителю некоторое оповещение. Будь то «Ваш комментарий сохранён и ожидает модерации» или же «Благодарим за проявленный интерес, мы обязательно вышлем Вам приглашение, как только откроемся», эти небольшие сообщения появляются то тут, то там постоянно, так что весьма здорово иметь удобный интерфейс для отображения их пользователю.

Идущее в поставке с Django приложение аутентификации и авторизации (django.contrib.auth) всегда включало базовый функционал для отображения всплывающих сообщений пользователю, но он имел несколько досадных недостатков. В Django 1.2 же теперь есть совершенно новый фреймворк для таких сообщений, написанный в первую очередь Тобаясом Макналти (Tobias McNulty).

Читать дальше →

Как FriendFeed использует MySQL для хранения данных без схемы

Reading time7 min
Views3.3K

Условия


Мы используем MySQL для хранения любых данных FriendFeed. Наша база данных растёт вместе с числом пользователей. Сейчас у нас более 250 миллионов записей, это записи пользователей (post'ы), комментарии, оценки («likes»)

По мере того как росла база данных, мы время от времени имели дело с проблемами масштабируемости. Мы решали проблемы стандартными путями: slave-сервера, используемые только для чтения, memcache для увеличения пропускной способности чтения и секционирование для увеличения пропускной способности записи. Однако, по мере роста, использованные методы масштабируемости привели к затруднению добавлению новой функциональности.

В частности, изменение схемы базы данных или добавление индексов к существующим 10-20 миллионов записей приводили к полной блокировке сервера на несколько часов. Удаление старых индексов требовало времени, а не удаление ударяло по производительности, так как база данных продолжала использовать их на каждом INSERT. Существуют сложные процедуры с помощью которых можно обойти эти проблемы (например создание нового индекса на slave-сервере, и последующий обмен местами master'a и slave), однако эти процедуры настолько тяжелые и опасные, что они окончательно лишили нас желания добавлять что-то новое, требующее изменение схемы или индекса. А так как наши базы сильно распределены, реляционные вещи MySQL как например JOIN никогда не работали для нас. Тогда мы решили поискать решение проблем, лежащее вне реляционных баз данных.

Существует множество проектов, призванных решить проблему хранения данных с гибкой схемой и построением индексов на лету (например CouchDB). Однако, по-видимому ни один из них не используется крупными сайтами. В тестах о которых мы читали и прогоняли сами, ни один из проектов не показал себя стабильным, достаточно зрелым для наших целей (см. this somewhat outdated article on CouchDB, например). А все это время MySQL работал. Он не портил данные. Репликация работала. Мы уже в достаточной мере понимали все его узкие места. Нам нравился MySQL именно как хранилище, вне реляционных шаблонов.

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

«Распределенное управление информационными потоками»/«Distributed Information Flow Control»

Reading time5 min
Views3.6K
Недавно по просьбе своего научного руководителя делал компиляцию и обзор для своей группы некоторых актуальных топиков в сфере безопасности ОС и систем в целом: automated trust negotiation (автоматическое «обсуждение» прав доступа — не знаю как правильно перевести) и information flow control (контроль потоков информации). Хотел запостить эту компиляцию, но к своему удивлению нашел, на мой взгляд, необоснованно мало сведений о DIFC (distributed information flow control/распределенном управлении инфромационными потоками) в .RU и поэтому решил написать эту небольшую статью по DIFC.

Мотивация
Практически единственным способом обеспечивать безопасность и приватность данных в системе принято считать аутенификацию (отвечает на вопрос: «Кто это сказал?») и авторизацию («Что он имеет право делать с этими данными»). Т.е. если программе необходим доступ к некоторым данным, мы фактически имеем 2 варианта: отказать или поверить. Если мы не доверяем этой программе, то теряем возможность работать с ней и возможно лишаемся важной функциональности. Если же мы решаем, что доверяем программе (и/или ее разработчикам), то программа фактически становится «полновластным хозяином» этой информации (или копии). Такой принцип в литературе называют All-Or-Nothing — «Все или ничего».

Естественно, что этот принцип недостаточно гибок и кроме того является основной причиной многих уязвимостей в системах, таких как переполнение буфера. В общем случае, этот принцип не позволяет создавать более интересные приложения, где права доступа не ограничиваются традиционными: «no access», «read only» и «read/write». Оказывается, что существуют системы, которые позволяют намного более гибкие разграничения прав доступа к данным — системы с поддержкой управления информационными потоками. Самой главной особенностью этих систем является то, что они следят за данными на всем протяжении их жизненного цикла в системе. Вспомним, что традиционно система ответственна только за начальный доступ к данным, например, проверку имеет ли программа доступ к файлу, а что после этого программа делает с этими данными систему уже не интересует.

Классический пример. Допустим, что в системе есть 2 пользователя Алиса и Боб. Они хотят назначить встречу, но так чтобы не раскрывать слишком много информации о своем расписании недели. Можно ли в многопользовательской системе Linux/Unix/Windows написать программу таким образом, чтобы она имела одновременный доступ к календарям и Алисы, и Боба и гарантировала конфиденциальность обоих пользователей системы?
И можно ли?!

Развертывание сайта на Джанго, используя FastCGI

Reading time9 min
Views16K

От переводчика


Данную статью я прочитал на Django Advent приуроченному к уже скорому выходу Django 1.2 и она показалось мне настолько интересной, что я решил ее перевести. Далее текст статьи.

Когда разрабатываешь сайт на Джанго, так легко просто открыть консоль и напечатать:

python manage.py runserver

С этой простой командой управления ваши медиа файлы админки сайта поддерживаются правильным образом, PYTHONPATH правильно настроен и включает корневую папку нашего проекта, а так же запущен автоматически перегружающийся веб-сервер на указанном нами порту (от переводчика: по умолчанию порт 8000). Так просто!

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

Однако иногда Apache не идеальное решение. Может быть ваш VPS имеет только 256 МБ памяти, а может быть вы хотите избежать сложности настройки Apache при установке. Или может быть вам просто не нравиться Apache. По любой из этих причин мы можем обратить свое внимание на FastCGI.
Читать дальше →

Деревья в админке django

Reading time2 min
Views12K
Редактировать модели, представляющие собой деревья в админке django очень неудобно и ненаглядно. Сразу возникло желание выводить вместо списка объектов дерево, для этого можно использовать замечательную библиотеку jstree.
Чтобы эффективно работать с деревьями в django существует mptt, которая добавляет в модель поля для эффективной выборки и методы для этого, а также шаблонные теги для вывода деревьев и т.п.
Если вы не используете mptt, у вас есть просто ссылка на parent — jstree можно подключить к с помощью одного javascript, про это — отдельная статья.
Далее про модели, использующие mptt.
Читать дальше →

Как управлять стадом OpenVZ контейнеров, если их количество > 300-500

Reading time2 min
Views1.7K
Как с помощью обвиртуализовывания всего и вся получить отряд хорошо вышколенных сервисов вместо цирка-шапито в виде нагромождения демонов на голом железе и какой вообще в этом смысл.

Читать дальше →

Сортировка изображений по разрешению с помощью Python и PIL

Reading time3 min
Views6.3K
image

Захотелось зарегистрироваться на Хабре, но так как знаниями особо не блещу, а аудитория тут как раз наоборот, решил попробовать выложить скрипт на питоне, который написал по просьбе знакомого за бутылку 7апа :) Мне скриптик так же помог упорядочить свалку картинок ~15гб.

Скрипт проходит по директории и создает в ней папки вида ШиринахВысота и пихает туда соответствующие по разрешению изображения.

P.S. Ошибок не совершает тот, кто ничего не делает.

Читать дальше

Скачиваем Google Docs без браузера

Reading time2 min
Views7.4K
Скриптик выглядит как-то так:

#!/bin/bash
token=$(curl -s www.google.com/accounts/ClientLogin -d Email=user.name@gmail.com -d Passwd=qwerty -d accountType=GOOGLE -d service=writely -d Gdata-version=3.0 |cut -d "=" -f 2)
set $token
curl --silent --header "Gdata-Version: 3.0" --header "Authorization: GoogleLogin auth=$3" "http://docs.google.com/feeds/user.name@gmail.com/private/full" | tidy -xml -indent -utf8 -quiet > /tmp/gdocs.xml
file=(doc1 doc2 doc3 doc4)
resourceId=(document:0ASpnxqo7zPlfZGQ3Z2Zwc183NWZteDNiM2Y ...) # и ещё 3 resourceId
i=0
while (( i < 4 )) # match num_files
do
wget --header "Gdata-Version: 3.0" --header "Authorization: GoogleLogin auth=$3" "https://docs.google.com/feeds/download/documents/Export?docID=${resourceId[$i]}&exportFormat=txt" -O /tmp/${file[$i]}.txt

sleep 2
i=$i+1
done

А теперь, как принято, разоблачение.
Читать дальше →

Python: советы, уловки, хаки (часть 1)

Reading time8 min
Views265K
Предлагаю читателям «Хабрахабра» перевод статьи «Python Tips, Tricks, and Hacks». Статья будет полезна на начальном и среднем этапах изучения Python.

Хотите писать более лаконичный и читаемый код? Вы хотите уместить как можно больше смысла в одно выражение? Считаете, что прочитать о нескольких уловках лучше, чем провести остаток жизни за чтением документации? Вы обратились по адресу. Мы начнем с маленьких уловок, которые вы уже могли встретить, если немного работали с Python. Но я обещаю, что ближе к концу статьи вас ожидает больше безумных вещей.

Содержание

1. Маленькие уловки. Четыре типа кавычек. Правдивость различных объектов. Проверка на вхождение подстроки. Красивый вывод списка. Целочисленное деление и деление с плавающей точкой. Лямбда-функции.
2. Списки. Генераторы списков и выражения-генераторы.
Читать дальше →

Как устроен GIL в Python

Reading time6 min
Views128K
Почему после распараллеливания выполнение вашей программы может замедлиться вдвое?
Почему после создания потока перестает работать Ctrl-C?
Представляю вашему вниманию перевод статьи David Beazley «Inside the Python GIL». В ней рассматриваются некоторые тонкости работы потоков и обработки сигналов в Python.

GIL
Читать дальше →

Язык Scheme

Reading time1 min
Views19K

Если здесь HD-режим недоступен, значит нужно перейти на vimeo.

Знакомство с языком программирования Scheme в рамках проекта CS Student. В видео мы познакомимся с некоторыми простыми типами данных, порядком обработки процедур и выполним парочку заданий из моего курса Programming Paradigms. Во второй части будет решение задачек немного посложнее и знакомство с другими возможностями языка. Ссылки:

Интерпретаторы

Что такое лямбда?

Reading time1 min
Views9.4K


14й выпуск computer science student и второй, посвященный языку Scheme. В сегодняшнем коротком скринкасте я расскажу о том, что такое лямбда в функциональном языке программирования.

Видео доступно на vimeo, youtube и rpod.

Scheme и классы

Reading time1 min
Views1.8K
Представлю вам последнее видео, посвященное языку программирования Scheme. Дальше мы переходим на Пролог, а напоследок постараемся реализовать классы в функциональном языке.


Если не доступен режим HD, то перейдите, пожалуйста, на vimeo.

Полное решение третьего задание по курсу Programming Paradigms, включающее набранный в видео код.

Видео доступно:

Материалы продвинутого уровня по Питону

Reading time5 min
Views46K
PythonВ мире все примерно распределяется в соответствии с принципом Паретто. Меньшая часть — богатые, большая часть — бедные (читающий, ты входишь в золотой миллиард). Тоже касается и материалов о программировании. Порой очень сложно найти хоть что-нибудь не начального уровня.

После прочтения Dive into Python или подобной ей и ознакомления с документацией возникает вопрос, а что читать дальше? Можно обратиться к списку книг на python.org. Там есть раздел Advanced Books, но в нем всего лишь 6 книг (седьмая не выходила), и только одну я бы назвал по-настоящему стоящей.

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

Ниже собраны сложные материлы про Питон, его устройство и возможности. Все на английском (грех, не знать технический английский). Про Dive into Python я слукавил. Большинство приведенных материалов требуют хорошее знание Питона и наличие опыта программирования на нем.

Подробнее

Быстрочтение featuring Восприятие текста

Reading time8 min
Views79K
Привет всем. Основываясь на предыдущем опыте, считаю нужным сразу расставить все точи над ё. Описанная ниже методика — не мое изобретение. Однако из собственного опыта могу уверить вас, что она работает. Ровно так, как обещано.
Идея, описанная в посте, появилась давно (под катом есть история), в том виде, в каком расскажу ее я, по большей части она представлена в чудесных книгах Тони Бузана Use You Head и The Speed Reading Book (в последней много воды).

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

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

Прежде чем приступить к самому главному, прошу вас пройти тест из шести вопросов на Да/Нет.

1. Чтение со скоростью свыше 1000 слов в минуту невозможно?
2. Медленная скорость чтения способствует лучшему пониманию текста?
3. Пропускать слова во время чтения — плохая привычка, ухудшающая понимание текста?
4. По умолчанию мы все читаем с «естественной» для нас скоростью, а следовательно, наилучшей?
5. Если вы не поняли слово или предложение, лучше перечитать его и понять?
6. Ваши глаза находятся в непрерывном движении во время чтения?
За результатами и, наконец-то, интересными штуками добро пожаловать под кат.
Читать дальше →

Тюнинг консольного клиента MySQL

Reading time2 min
Views4.5K
Мне довольно часто, даже постоянно приходится обращаться к разным базам данных MySQL. Испробовав немало разных GUI клиентов я понял, что они все меня не удовлетворяют. То проблемы с кодировкой, то отсутствует автодополнение кода, то не работает история запросов. В общем пришел я к использованию консольного клиента mysql. И вроде все хорошо, но была пара проблем.
Во-первых заходя в очередную закладку с открытым соединением mysql я тупо смотрел в строку приглашения и старался понять на каком я сервере нахожусь и к какой базе данных подключен. Во-вторых при выводе большого количества полей или при выводе поля с длиной превышающей ширину терминала получалась каша из черточек, букв и палочек :). На днях я покопался в документации и с кое-чем разобрался.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Registered
Activity