Пользователь
Метод динамического программирования для подсчёта числа циклов на прямоугольной решетке
В статье я покажу как использовать метод динамического программирования по профилю для решения задачи о подсчёте количества гамильтоновых циклов на прямоугольной решётке размером m на n. На Хабре есть несколько статей, посвященных теме динамического программирования (например, эта), но нигде не идёт речь о более сложном применении метода. Данный подход также можно называть методом матрицы переноса, кому как нравится.
Предупреждаю, что статья содержит около 2000 слов (8 страниц А4), но дорогу осилит идущий.
Псевдографика в консоли Unix/Linux. Немного больше User Friendly чем вы могли себе позволить
Балансировка нагрузки с LVS
Защита от DDOS атаки случайными аргументами при помощи Nginx
GET someurl/?t1555ss5326=5326
, где someurl — найденный ботом php скрипт.Но если атакуемый сайт поддерживает ЧПУ, то такие запросы к нему должны отсутствовать в принципе. ЧПУ сейчас является стандартом де-факто, по этому можно смело отрезать такие запросы, логируя IP ботов.
Для этого очень удобен nginx, и его переменная is_args, которая имеет значение "?", если в URI идут аргументы. Базовая конструкция выглядит так:
if ($is_args = "?") {
return 403 444;
}
Очень просто и красиво, правда?
Вот как выглядит LA после включения этой защиты:
load average: 1.50, 3.09, 6.96
Текущий ботнет из ~20000 зомби, делают 5-8k одновременных запросов.
Asterisk, или домашняя телефония для (про)двинутых пользователей
Итогом стало открытие для себя SIP-телефонии.
И вот несколько месяцев назад, из статей на Хабре, выясняю, что чужим дядям можно и не платить за межгород, если надо позвонить откуда-то в родной город через Интернет! Достаточно поставить VoIP сервер и настроить его так, как надо именно тебе!
И вот, взяв в руки Asterisk, я приступил к операции по борьбе с излишней жадностью ОпСоСов…
Домашний linux сервер своими руками
![image](https://habrastorage.org/getpro/habr/post_images/b0e/cc5/4d0/b0ecc54d00f01a745259662aa064c328.jpg)
Из софта на домашнем сервере будет «крутиться» следующий набор:
- torrent клиент с web-мордой
- DHCP — раздаем ip адреса и сетевые настройки
- TFTP — для сетевой загрузки
- OpenVPN — для хождения в сеть с нетбука из недоверенных сетей
- FTP/Samba/NFS — сетевые шары для доступа с домашних машин
- Radius — для WPA2 авторизации
- DigiTemp — мониторинг домашней температуры
Настройка Yota в Ubuntu 10.04 для WiMAX карты Intel 5150
![](https://habrastorage.org/storage/c9c2b062/61a3a9fa/9668ed66/74d9166c.png)
Сейчас в многие ноутбуки встраивается чип WiMAX, для пользователей Windows в этом плане всё просто и всё работает с завода и всем этим заправляет Yota Acсess. Но те кто использует Linux остаются в стороне потому, что драйвер для него ещё не написан. И как это часто в таких случаях бывает сообществу приходится выкручиваться самому.
Эта инструкция по настройке WiMAX карты (Intel 5150) на примере Ubuntu 10.04 + скрипт для автонастройки.
Декодирование JPEG для чайников
[FF D8]
Вам когда-нибудь хотелось узнать как устроен jpg-файл? Сейчас разберемся! Прогревайте ваш любимый компилятор и hex-редактор, будем декодировать это:
Специально взял рисунок поменьше. Это знакомый, но сильно пережатый favicon Гугла:
Последующее описание упрощено, и приведенная информация не полная, но зато потом будет легко понять спецификацию.
Даже не зная, как происходит кодирование, мы уже можем кое-что извлечь из файла.
[FF D8] — маркер начала. Он всегда находится в начале всех jpg-файлов.
Следом идут байты [FF FE]. Это маркер, означающий начало секции с комментарием. Следующие 2 байта [00 04] — длина секции (включая эти 2 байта). Значит в следующих двух [3A 29] — сам комментарий. Это коды символов ":" и ")", т.е. обычного смайлика. Вы можете увидеть его в первой строке правой части hex-редактора.
6 способов убить Ваши сервера — познаем масштабируемость трудным путем
Несколько лет назад ко мне пришел мой босс и сказал: «У нас есть новый проект для тебя. Это перенос сайта, который уже имеет 1 миллион посетителей в месяц. Тебенеобходимо его перенести и убедиться, что посещаемость может вырасти в будущем без всяких проблем.» Я уже был опытным программистом, но не имел никакого опыта в области масштабируемости. И мне пришлось познавать масштабируемость трудным путем.
Цветовое оформление консольного вывода
ИТ инфраструктура университета
Пост больше организационного плана, а не технического: в реализации описываемых вещей технически сложных проблем нет, если вопросы возникнут – постараюсь более подробно ответить в комментариях.
Удалённая переустановка linux на примере Debian
Удивлённо поднимем брови, умиляясь тому, как гибка наша любимая операционка, засучим рукава и приступим к делу.
Неприступный почтовый сервер, или жизнь без спама
![](https://habrastorage.org/storage/habraeffect/40/64/406409d2ee1d52d7ed3507f9ed6951e2.png)
Чаще всего встречается подход «добавим кучу RBL (DNSBL) и будем радоваться жизни». Подход не верный чуть более, чем полностью. Второй по популярности — контент-фильтры, зачастую купленные за бешеные деньги. Такой подход тоже в большинстве случаев совершенно неоправдан.
А ведь всё так просто, для спокойной жизни достаточно всего лишь пристально присматриваться к трём заголовкам входящей SMTP сессии. Порывшись на Хабре и в закоулках интернета так и не нашёл исчерпывающей статьи на тему правильной настройки SMTP сервера с точки зрения противодействия спаму. Поэтому решил расписать всё, что знаю на эту тему сам и чем успешно пользуюсь.
Кстати: эта статья конечно ориентирована в первую очередь на администраторов, желающих сделать качественный фильтр спама. Однако с другой стороны она содержит очень важные сведения для тех, кому приходится просто работать с почтой, но кто плохо разбирается во всех тонкостях процесса электронной пересылки корреспонденции.
Итак, если вы хотите обезопасить своих пользователей от спама или наоборот, хотите чтобы кто-то случайно не обезопасил пользователей от ваших писем — добро пожаловать под кат.
![](https://habrastorage.org/storage/15d99bea/74da9b7e/c6a0ca3b/ad80903c.png)
Динамические поддомены с использованием nginx+apache
Проблема в том, что этот вопрос везде освещается только с точки зрения перенаправления с поддомена в папку и вся динамичность поддомена заключается в том, что ты создал папку — поддомен у тебя заработал.
Иногда же требуется решение другой проблемы — например вынос на поддомен профиля пользователя и всего функционала, который с ним связан.
Например, у нас есть готовый сайт, на котором работают профили по такому url: www.example.com/users/username, и есть всякие дополнительные возможности (например www.example.com/users/username/contact и другие страницы, связанные с этим юзером).
И мы теперь хотим вынести все, что связано с юзером, на поддомен, например username.example.com, username.example.com/contact и т.д.)
Решения, которые были найдены в интернете, меня не удовлетворили по 2 причинам:
- Не нашел решения как заставить ее работать, сохранив работоспособность домена www.example.com
- Все найденные решения подходят только для перенаправления в папку и не работают если дальше должны работать какие то правила
На нашем сайте стоит nginx над апачем (как и на многих других), поэтому пришлось изобретать велосипед самому, используя эту связку (nginx+ apache, благо сейчас почти на всех крупных сайтах стоит проксирующий nginx над апачем)
Kismet
20 терабайт своими руками
На что им народ насоветовал какие-то супер-пупер профессиональные решения на сотни тысяч рублей, что, конечно, круто, но…
Я-же со своей стороны — дал раскладку по тому сервачку, который сделал для себя сам года три назад и успешно его юзаю…
Сервер содержит 11 жёстких дисков, из которых один — загрузочный и 10 — файлопомойка.
Как не сложно посчитать, 10 дисков по 2 терабайта — дадут искомые 20 терабайт!
Как этого достичь?
Сейчас расскажу!
ПыСы Это перенос моей статьи из Песочницы. С момента её написания выяснил пару «весёлых» вещей, которые тут и были добавлены.
ПыПыСы Это именно самодеятельное решение по запихиванию такой оравы дисков в один комп.
Надёжность реализуется исходя из того, что при ТАКОМ числе дисков — можно часть поставить в RAID, а при необходимости — легко и непринуждённо заменить вылетевший!
Мечта параноика или Еще раз о шифровании
ЦЕЛИ:
- Весь винт(винты) должны быть надежно зашифрованы
- На винтах не должно быть абсолютно никакой разбивки, так как будто это новый(или стертый) винт
- ОС должна стоять на зашифрованных разделах
- Должна быть возможность увеличения дискового пространства, путем добавления новых винтов
- Загрузка системы без ввода ключа от шифрованных данных
Реализация отказоустойчивого файлового сервиса на базе SAMBA
![](https://habrastorage.org/storage2/081/e5e/431/081e5e4311f024e715e3046a7ce869e2.gif)
Samba – это сервис CIFS, разработанный для того чтобы обеспечить семантику протокола CIFS (и соответственно доступ с машин под управлением Windows) к среде, использующей POSIX файловую систему. Основная функция Samba – преобразовать богатую семантику, которую используют клиенты на базе Windows к значительно более бедной семантике файловой системы POSIX.
Управление ISC DHCPd 4.x из скриптов
Для DHCPd нужно было реализовать:
- добавление новой статичной резервации (по маку либо порту свитча — опция 82),
- «привязка» юзера с IP выданным динамически (то есть из пула свободных IP) в статичную резервацию
- удаление статичной резервации
- удаление динамической лизы до истечения срока резервации
- Различные отчёты по подсетям, мак-адресам, свободным и занятым аресам
Хочу поделиться информацией, собранной в процессе реализации, на какие подводные камни наткнулся, как обходил, что так и не обошёл. Возможно кому-то сэкономит несколько часов времени.
Информация
- В рейтинге
- Не участвует
- Откуда
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Зарегистрирован
- Активность