-Поиск по дневнику

Поиск сообщений в ISoulflY

 -Подписка по e-mail

 

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 12.05.2011
Записей: 756
Комментариев: 11
Написано: 772


Как работают интерпретаторы

Пятница, 17 Июня 2011 г. 19:40 + в цитатник
PYTHON - мощь и красота, сочетающаяся с непритязательностью. Икона программиста. А вообще - неплохой калькулятор))). Может решать уравнения любой сложности - как в даилоговом режиме, так и в режиме прогонки...
Ну да ладно с Питоном, его задача - жрать кроликов. Хотелось бы немного уточнить - а сложно ли написать подбоный калькулятор на... скажем на си?
Проштудировав море советов, как полезных, так и не очень, на данную тематику, нашёл очень простое решение по данному вопросу. Настолько, что я даже сначала усомнился - правильное ли оно...
Итак, метод называется методом рекурсивного спуска. Суть заключается в следующем - существует набор связанных друг с другом подпрограмм, одна из которых может обращаться к самому началу списка. То есть - сложная рекурсия. Система похожа на мусульманские чётки - одна из бусинок, нанизаных на ниточку больше остальных - с неё начинается молитва и ей же она заканчивается.
Перейдём к примерам.
Вот наши чётки:

char *input;
char symbol;
char tokentype;
char token[16];

void getsymbol()
{
symbol=*input;
if(symbol)
{
input++;
}
}

void gettoken()
{
char *s=token;
tokentype=symbol;
if(isdigit(symbol))
for(;isdigit(symbol);getsymbol()) *(s++)=symbol;
else
getsymbol();
*s=0;
}

int expression();
int factor()
{
int r;
if(tokentype=='(')
{
gettoken();
r=expression();
if(tokentype==')')
gettoken();
} else
if(isdigit(tokentype))
{
r=atoi(token);
gettoken();
}
return r;
}

int term()
{
char o;
int r;
r=factor();
while(tokentype=='*'||tokentype=='/'||tokentype=='%')
{
o=tokentype;
gettoken();
if(o=='*')
{
r*=factor();
} else
if(o=='/')
{
r/=factor();
} else
if(o=='%')
{
r%=factor();
}
}
return r;
}


int expression()
{
char o;
int r;
r=term();
while(tokentype=='+'||tokentype=='-')
{
o=tokentype;
gettoken();
if(o=='+')
{
r+=term();
} else
if(o=='-')
{
r-=term();
}
}
return r;
}

int main(char argc,char *argv[])
{
if(argc==2)
{
input=argv[1];
getsymbol();
gettoken();
printf("%d\n",expression());
}
}

теперь пояснения.
как известно, подпрограмме с "оригинальным" названием main операционаая система отправляет маляву с посылкой. в маляве указано, что должно быть в посылке. а в посылке должно быть ни много ни мало - строка. причём чётко одна, иначе наша программка аргумента даже не заметит.
получив строку, программка прежде всего копирует её себе (input=argv[1]), а потом лезет за первым символом - подпрограмма getsymbol как раз его и берёт. вообще, задача этой маленькой подпрограммки - брать по очереди все символы и копировать их в специальную переменную symbol. следующая подпрограммка - gettoken работает исключительно со словами. она-то как раз и занимается отделением мух от котлет - числа от знаков препинания. и всё это основываясь на предварительно читаемых символах. все совпадающие по духу символы складываются по очереди в массив token. кроме знаков препинания - покольку "многабуквеных" команд у нас нету - смысл двойного копирования неясен. первый прочтённый символ каждого слова упаковывается в переменную tokentype - именно на основе её содержимого интерпретатор принимает решение - лезть читать слово из token или довольствоваться малым - то есть содержимым переменной tokentype.
дальше по лестнице у нас идёт самая низкокалорийная пища - то бишь подпрограмма, имеющая самый низкий приоритет. я назвал её expression. именно она является самой жирной бусинкой в наших чётках - если посмотреть на самый "верх" нашей программки - то увидим там обязательную ссылку на неё. она нам 100% пригодиться. здесь мы видим ссылку на "прокачку левела" - следующую по иеарархии подпрограммку term. после возврата из неё мы внимательно читаем очередной "прибежавший" в tokentype символ и, если он является нужным нам на данном уровне "оружием" - символом сложения или вычитания, то мы запоминаем возвращаемое в качестве первого аргумента операции. запоминаем операцию в специальном месте под названием "о" и выгребаем из "верхнего левела" ещё один агрумент. производим над обоими аргументами магическое действие "о" и смываем в канализацию (то бишь вниз) результат наших трудов.
второй уровень нашей игрушки очень похож на первый. только воюет он с другим "оружием" - умножением и делением. и так же само "спускает" результат вниз.
на самом деле "левелов" в нашей RPG может быть великое множество. но в конце "должен остаться кто-то один". на вершине нашего хит-парада это замысловатая программка factor. у неё двойное назначение (которое, впрочем, можно разделить ещё на два приоритетных "левела" при желании) - первое - она обрабатывает скобки - именно за этим вверху неё "красуется" гордый "рекурсивный" expression. и она же "загружает" наш первый аргумент - число. которое тут же передаёт подпрограммке снизу. каждая из этих программок не встретив "своих" управляющих символов просто "спускает" агрумент дальше по цепочке вниз. так что если у нас в строке введено только число - без знаков операций - то на выходе мы тоже получим это же число.
итак, предстартовая проверка:
откомпилируем нашу "прелесть":
#gcc -o calc calc.c
и проверим:
#./calc "8192/2-(1000+1048)"
2048
ура,товарищи!

О Боге

Пятница, 17 Июня 2011 г. 19:39 + в цитатник
есть тысяча аргументов в пользу Его существоания.

и один агрумент против - Его никто ещё не видел.

О вкусах

Пятница, 17 Июня 2011 г. 19:38 + в цитатник
то, что вам кажется очевидной истиной - на самом деле это правда - её отражение в вашей интерпретации.

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


Понравилось: 1 пользователю

Пророчества

Пятница, 17 Июня 2011 г. 19:37 + в цитатник
Пророк писал пророчество одно,
Оно не сбылось - тоже так бывает.
В узор судьбы нам часто вплетено -
Что Бог молитвам нашим не внимает.
Глух к обещаниям своим Дворец Небес,
Вселенский Зодчий воплям не ответит,
И в ритме стука каменных сердец
Мы друг у друга есть - нам большего не светит.
Сыграй ещё, прошу, последний раз
В судьбы брезгливой глупую рулетку -
Путь повезёт - душа ведь - не алмаз,
Чтоб не отдать - не спрыгнув с табуретки.
Чтобы не ждать попутчиков, любя
Их вечное на праздник опаздание,
Когда-нибудь ведь не было тебя -
А всё такое ж было мироздание...

...

Пятница, 17 Июня 2011 г. 19:36 + в цитатник
если тебя бросила девушка по причине того, что ты ей что-то пообещал - и не исполнил, то это не кошмар...

это последствия кошмара...

Untitled Song

Пятница, 17 Июня 2011 г. 19:36 + в цитатник
сон намекал на сказку сновидения...
я всех их спал. ещё когда-нибудь
я буду помнить... а пока - сомнения...
мне юность шепчет - будь со мной всегда...

О треугольниках

Пятница, 17 Июня 2011 г. 19:35 + в цитатник
Любовный треугольник тоже подчиняется законам логики:
и не только математики уверены, что в таком треугольнике по крайней мере один угол - тупой.


Понравилось: 2 пользователям

Побелить экран 45 строками

Пятница, 17 Июня 2011 г. 19:35 + в цитатник
Итак... Если кто экспериментировал в написании бутовых прог для 386наследников, предлагаю вашему вниманию свою, отнюдь не оригинальную, но всё ж идею - запустить графическую ось прям с бутсектора со всеми потрохами. Задача - в 512 байт всунуть если не целый Windows-MacOS-Linux - нужное подчеркнуть, то хотя бы что-то, что рисовало б на экране кружочки, буковки или ещё чё. Поскольку дальше белого квадрата (в ответ К.Малевичу) моя хуйдожественная фантазия не продвинулась, я решил на нём, родном и остановиться...
Итак. В качестве Компайлера я взял малоинтересный, но высокоэффективный в такого рода делах странновато-корявый пакет под названием... дай бог памяти - 86utils (или типа того). Если не считать, что его общение создаёт впечатление деревенской недалёкости, то сей премудрый ассемблер (а вкупе с ним и сишный компайлер такого же характера), то он вполне годен для написания всяких бутовых штук - от ОСей до вирусов...
Итак (снова Итак))). Берём и создаём файл с оригинальнейшим названием - boot.s (заметьте, всё это я делаю под Linux в оболочке MC - но ничто не помешает вам запустить Far под Windows и исполнять ТАМ). Начинаем ваять:

use16 ; вдруг компайлер думает что надо 32х разрядную адресацию включать?
org 0000 ; люблю бессмысленные команды))))
cli ; запрещаем все маскируемые прерывания
in al,0x70 ; и
or al,#0x80 ; маскируемые
out 0x70,al ; тоже
mov ax,#0x0013 ; включим какой-нить
int #0x10 ; VGA-режим
call empty_8042 ; подождём разчехления клаві
mov al,#0xd1 ; подадим команду ждать команды ( :) )
out #0x64,al ; отправим её
call empty_8042 ; подождём
mov al,#0xdf ; подадим команду включить нам A20
out #0x60,al ; и сольём её
call empty_8042 ; опять ждём
mov ax,#0x0000 ; зададим точкой остчёта
mov ds,ax ; начало адресного пространства
lgdt gdtr+0x7c00 ; и загрузим таблицу сегментов
mov ax,#0x0001 ; потом расскажем процессору
lmsw ax ; что нужно переключиться в режим защиты
jmp #0x0008:protect+0x7c00 ; и загрузить в сегмент текущей задачи "правильный" адрес
use32 ; скажем компайлеру, что мы уже в 32х битовом гиперпространстве
protect: ; и вот мы уже летим на совсем другой скорости
mov ax,#0x0010 ; теперь настроим регистр данных на такой же "правильный" адрес
mov es,ax ; и напомним процу номер нашего звездолёта
mov edi,#0x000a0000 ; поскольку система очёта у нас идёт от пола к потолку, соотв. видеопамять для вышеупомянутого режима лежит в этой плоскости)))
mov cx,#320*50 ; а сюда запишем размер видеопамяти в четырёхбайтовых словах
mov eax,#0x07070707 ; за основу возьмём белую краску - и намочем ею сразу 4 кисточки
repz ; и начнём
stosd ; мазать
stop_running: ; тут мы жостко затупим
jmp stop_running ; ожидая разчехляющего нажатия RESET
empty_8042: ; подрограмма ожидания очистки стека клавы
in al,#0x64 ; посмотрим,
test al,#2 ; что нам говорит
jnz empty_8042 ; клавиатура и снова посмотрим...
ret ; или выйдем из цикла
gdtr: ; тут мы запимеш адрес таблицы сегментов
dw 0x0018 ; это её размер (3 поля - одно пустое, одно - для программы и ещё одно - для данных).
dd gdt+0x7c00 ; это - адрес таблицы сегментов
gdt: ; таблица сегментов собственной персоной
dd 0x00000000,0x00000000 ; это пустое поле - мы его и оставляем пустым
dd 0x0000ffff,0x00cf9a00 ; это - типичное поле кода ( с максимальным размером сегмента)
dd 0x0000ffff,0x00cf9200 ; а это - типичное поле данных
org 0x01fe ; в конце программы неплохо поставить
dw 0xaa55 ; отметку - печать с сертификатом качества, чтобы BIOS "схавал" наш загрузчик.

небольшое резюме:
этот код я подсмотрел в буте FreeBSD, выкинув из него всё, что мне казалось лишним, так что не претендую на оригинальность. скажу лишь, что сначала я хотел вместо обращения к портам клавиатуры пойти другим путём - а именно обращением в порт 92 (т.н. "быстрый A20"):
in al,#0x92 ;
or al,#0x02 ; "fast A20" version
out #0x92,al ; some chips have only this
но, похоже, что виртуалка, на которой я всё это испытывал (qemu) - наотрез оказалась "хавать" мой код. или эт я чё напутал? хз, короче, остановился на старом, проверенном, дедовском способе.
и заместо пришедьшего из эпохи Р2Д2 "звёздных войн" загрузки машинного слова (lmsw) я тоже планировал поставить более "современный" способ:
mov eax,cr0 ; загрузить регистр состояния
or al,#0x01 ; помухлевать с ним
mov cr0,eax ; передать дальше
опять же - или собственная криворукость или криворукость создателей qemu - но пришлось опять же - тулить более архаичные средства.
но пацан сказал - пацан сделал - на экране - табула раса - на душе - приятный позитив, как после секаса с мулаткой, мы таки уломали глупую машину совершить нам маленькое чудо)))
желаю творческих успехов!

Чужие

Воскресенье, 12 Июня 2011 г. 23:23 + в цитатник
Порой минутная слабость бросает вызов силе воли:
и ты становишся способным бросить свой мир к ногам чужого человека...

А этот человек так и остаётся чужим...

Хэви-метал Иегове

Воскресенье, 12 Июня 2011 г. 23:22 + в цитатник
о межконфессионных трениях
...был случай однажды... Точнее - шесть лет назад. Я познакомился с верующими ребятами из церкви харизматов. Поскольку я увлекался музыкой - мне предложили играть в службе прославления церкви "Победа"... На тот момент сотрудничество не срослось, на чём я и поставил крест на музыке, перепрофилировавшись в специалиста по компьютерам... Но тогда я довольно успешно играл на соло-ритм-гитаре, репетируя перед, так и не состоявшимся для меня Большим Выступлением - всё-таки в споре с пастором по поводу возможности играть в группе некрещёному выигрывает почему-то пастор. Тем летом было оговорено организовать небольшой рок-фестиваль в Броварах, дабы привлечь в церковь молодёж. Задумка была интересная. Пастор идею поддержал, только, видимо забыл предупредить своих особо рьяных помощников... А дело было так - в небольшой зал набилось битком народу - местные неформалы, а также "свита" из фанатов приехавших на концерт киевских оркестров. Играли всевозможную музыку - от индастриала до дет-металла (называемого христианами вайт-метал). Последними выступала довольна схожая стилем исполнения с "Мумий-Троллем" Водолечебница. Как раз только ребята начали исполнять песню "фантики-жевачки" - зал стал заполнятся бритоголовыми молодцами чисто гопницкой наружности - как позднее выяснилось "братьями" из реабилитационного центра для алкашей и наркоманов при церкви "Победа". Затем погас свет на сцене и туда выдерлась какая-то бабушка с криками "немедленно прекратить издевательство в божьем храме". Назревал скандал. В рядах публики началась потасовка между братьями-наркоманами и неформалами, не желающими уходить с концерта. Собственно, всё закончилось довольно плохо - молодые люди покинули церковь в полной уверенности, что бабушка, рвавщая душу за Христа - служитель Сатаны, а её бритоголовые помощники - его приспешники... Кто был прав, кто виноват в этой ситуации - тяжело судить. С одной стороны виновата старая женщина и "братья", не разобравшись с ходу решившись включить "бычку" - больше подходящую гопарю с раёна, а не служителю культа. С другой стороны - ребята, забывшие почаще упоминать, во имя чьё было организовано собрание. Ведь, заметьте, не каждый разглядит в неряшливых небритых людях приверженцев Христа. Но, в зале веял дух зла и народ в пылу борьбы больше был занят собственным виденьем происходящего. А истина - единственное - в очах Господа - верное решение - как обычно, была где-то посередине, никем не замеченная...


Понравилось: 1 пользователю

Огнеупорное безразличие

Воскресенье, 12 Июня 2011 г. 23:21 + в цитатник
огонь любви, сжигающий сердца,
когда нас разделяют расстоянья -
быть может эхо слов мольбы в устах -
не оставаться без желанного вниманья...
чужой судьбой играя налегке,
мы можем душу ранить осторожно -
когда назло оставшись вдалеке -
возможное оставим невозможным...


Понравилось: 1 пользователю

Понятия

Воскресенье, 12 Июня 2011 г. 23:21 + в цитатник
- когда ты поняла, что потеряла его?

- когда сказала "прощай" и захлопнула двери...

Прощание

Воскресенье, 12 Июня 2011 г. 23:20 + в цитатник
Сегодня ты с самого утра бухаешь. Тебе скучно. Завтра ты встречаешься с горячо любимой супругой. Возле загса. Чтобы официально расторгнуть давно надоевшие обоим узы брака. С чем и поздравляю тебя от души... Думаю, что завтра ты тоже будешь пить. От тоски. Ты стал ненужен ещё одному человеку на земле. Это печально... Ну и забей. Согласен - одному жить всё-таки выгоднее. И иметь с каждым годом всё меньше связей на стороне. Но тут уж как в задачке по геометрии - с каждым годом угол наклона члена приближается к 180. Соответсвенно - меньше толку от баб...
Я о чём хотел спросить тебя, как профессионального психолога - чем отличаются такие понятия - вера и фанатизм? Может ли быть так, что человек, являющийся приВЕРженцем тех или иных традиций может позволить себе и, к примеру, ароматический кальян покурить или коньяка выпить? Потому что ему нравится ВКУС табака или крепкого вина... А вот фанат не имеет привычки быть рабом, он наоборот - становится рабом привычки... Строго выкуривать не меньше пачки в день, а по особым дням - и две. Или если проблемы со здоровьем - то не меньше половины. Или вот, к примеру, алкоголь - от рюмки-другой по праздникам, или перед обедом до непрерывного заливания до тех пор, пока не уснёш. Последняя стадия - самая мрачная. Потому что ты сам себя убеждаешь, что ты не сможешь остановиться. Спроси у торчка, хочет ли он ширнуться - и он не скажет, что ХОЧЕТ. Он ответит, что он ДОЛЖЕН ширнуться. Потому что ему будет ПЛОХО. А он хочет, чтобы ему всегда было ХОРОШО. Такая невинная привычка обязательно находит людей, способных ей потакать. Любое пристрастие тут же становиться прибыльным бизнесом. Люди, выезжающие на чужой зависимости, выезжают туда, куда, вполне возможно, могли бы выехать те, кто старательно, начиная от дорогих кабаков и заканчивая банальным пьянством за углом гастронома, проёбывают... Своё природное тунеядство ты заполняешь постоянными походами в магаз и обратно. И тебе всегда некогда - ты общаешься с людьми. С друзьями, с клиентами, сам, сидя в парке на лавочке...Но это тебе кажется, что ты окружён друзьями. На самом деле все они или твои собутыльники или продавцы в АЛКОГОЛЬНИХ НАПОЯХ... Друг ведь никогда не посоветует тебе то, что причинит тебе неприятности? Ты просто коллективно убегаешь от проблем. Это твоё решение. Весьма, признаюсь, проблемное... Ты уничтожаешь свою жизнь и основательно портишь жизни тех людей, которые ещё остались рядом...
Однажды я очнулся от этого сна - мне пришлось отвлечься от пьяного кошмара, чтобы не укорачивать и без того короткий век, отпущенный мне ПРОВИДЕНИЕМ. Жизнь будет царапаться и кусаться и, я считаю что прожить её стоит достойно, а не прятаться в песок, как страус...
Впрочем... Завтра ты опять с самого утра нажрёшься. Вероятно, устроишь какой-то дикий цирк в помещении загса и прийдёшь домой спать поздно вечером весь в блевотине и завалишься прямо в одежде спать беспробудным сном. Чтобы утром проснуться со страшной головной болью и неодолимым желанем опохмелиться...
Прощай, друг!
Встретимся завтра...

Харизматам

Воскресенье, 12 Июня 2011 г. 23:20 + в цитатник
Оскал чумы пустопорожних мыслей -

Бездумный бред слепого словоизлияния,

Так точно - нет в твоих молитвах смысла,

Как нет со стороны Престола к ним внимания.


Унылый зуд чудесных трелей, отче,

Как будто ангелам подаренных наречий -

Ты будто хлеб с икрой заморской топчешь,

И бред в устах твоих всё безупречней.


Не каждый харизмат их понимает,

Но всё же херувимов речь в ходу -

Любой алкаш после ноль-пять так заливает -

Как не шептались ангелы в Эдемовом Саду...

Из ответов без вопросов

Воскресенье, 12 Июня 2011 г. 23:16 + в цитатник
всё просто. у каждого есть темперамент. как у химических элементов валентность... или реактивность... называй как хочешь. в общем это мера того, сколько он может отдать или принять из окружающей среды. например - от других элементов... именно она определяет - способен ли человек обрастать связями и в какую сторону... то есть человек может или использовать другого человека или наоборот... зависит от ситуации. дружба и любовь - это лишь части взаимоотношений между людьми. но и они подчиняются тем же законам... прежде всего люди должны сходится характерами - иначе... я верю в то, что любой человек ищет общий язык, любые точки соприкосновения с другими людьми... по себе сужу, так что это не обязательно должно быть истиной, завереной у нотариуса))) насчет отношения с... противоположным полом помимо эмоций учавствует инстинкт - на чашу весов ложится весомый аргумент))) насколько я понимаю - это распространяется как на виртуальные так и на реальные знакомства... ну... я так думаю (з ганной базулик на 1+1 щосуботи)))) вобщем, со временем стереотипы меняются... иногда радикально... как например, насилие - очень весомый и неприятный аргумент, способный вызвать отвращение к людям надолго... так что, вполне вероятно, что если сейчас тебе не нравится такое пристальное внимание к твоей персоне, то вполне возможно, что в будущем тебе как раз будет нехватать того, что ты вращаешься в центре событий - человек, к сожалению привыкает ко всему. это явление называют толерантность...

Наваждения

Воскресенье, 12 Июня 2011 г. 23:15 + в цитатник
Вешать ярлыки, продуцировать аксиомы - это излюбленное занятие рассудка... Собака, если ей нечем занятся - лижет свои яйца. Человек - строит аналогии. Иногда довольно зыбкие. Камень преткновения для себя - просто камень. А спотыкаются об него те, кто считают его камнем преткновения. Земля миллиарды лет вращалась вокруг Солнца даже не предполагая что в какой-то момент истории человечество ощутило себя в центре Вселенной, а свою обитель - плоской, как блюдце. Это виртуальная реальность канувших в лету поколений - нет их - и нет их плоского мира... Я часто задумываюсь над этими вещами - что важнее - первопричина или первоисточник? Предмет или явление - или наше к нему отношение? Ведь по-сути, будь я Вселенной, мне было бы глубоко побоку, что кто-то не может сообразить - сужаюсь я или расширяюсь на текущем этапе своего развития. У меня полно своих забот. Отчего же столь сообразительные наши мозги в то же время обладают столь внушительной инерцией мышления, что тысячи раз столкнувшись с истиной - какой она есть - без прикрас - всё равно способны не замечать возникающих между ней и нашей "правдой" противоречий и способны унести свои заблуждения в могилу, возможно даже - с несокрушимой верой в собственное бессмертие...

Построение системы автоматического учёта траффика небольшой локальной сети ЭВМ

Воскресенье, 12 Июня 2011 г. 23:15 + в цитатник
завернул...
короче идея создания биллинговой системы возникла в тот самый момент, когда у меня, собственно появилась сеть...
покупать коряво-ебанутые платные решения типа но-денай и лан-биллинг не было желания (да и возможности).
начиналось всё с мелкой-мелкой проги для автоматического создания правил файервола в... дай бог памяти... асп-линукс. с тех пор я дружу только с красной шапкой (ред-хат-клоны) и напрочь не понимаю системы управления брандмауэром фри (хотя говорят что привинтить биллинг впринципе могно к любой системе - активно, целеустремлённо не верю, ибо... ибо).
за основу я взял пхп-скриптование (со своим опытом ковыряния си-проэктов для меня проще было выучить именно этот лангвич, похожий на него слишком заумный перл меня непоперл) - наиболее простой способ достичь консенсуса с роутером.
итак, на основе сложных расчётов нам необходимо создавать простые команды ВЫКЛ и ВКЛ на отдельного пользователя.
пример команд:

ВКЛ)
iptables -t nat -A POSTROUTING -s X.X.X.X -j SNAT --to-source Y.Y.Y.Y;

данная конструкция говорит брандмауэру, что надо создать правело подстановки вместо адреса X.X.X.X клиента внутренней сети адрес Y.Y.Y.Y роутера в интернете (и наоборот).
именно она позволяет пробрасывать пакеты разных клиентов через один внешний адрес.
обратная команда удаления звучит так:

ВЫКЛ)
iptables -t nat -D POSTROUTING -s X.X.X.X -j SNAT --to-source Y.Y.Y.Y;

собственно называние таблицы (nat) и цепочки (POSTROUTING) не меняются.
адрес шлюза в интернете - если он один на всех - тоже.
создадим функции, позволяющие команды ВКЛ и ВЫКЛ передавать операционной системе:

function rule_on($ip)
{
shell_exec("iptables -t nat -A POSTROUTING -s $ip -j SNAT --to-source Y.Y.Y.Y");
}

function rule_off($ip)
{
shell_exec("iptables -t nat -D POSTROUTING -s $ip -j SNAT --to-source Y.Y.Y.Y");
}

для того, чтобы правила срабатывали, необходимо, чтобы скрипт выполнялся с правами администратора. то есть апач должен быть соответственным образом настроен (например, позволив управлять ему сетью через sudoers).
дальнейшее, как говорится - дело техники. можно завести базу, где складываются не только айпи клиентов, но и их состояние - чтобы быть уверенным, что то или иное правило ДОЛЖНО БЫТЬ ВКЛЮЧЕНО или ОТКЛЮЧЕНО. при управлении с админки, к примеру, вы нажимаете "ВКЛ" на определённой записи и передаёте команду скрипту, выгребающему из БД данные об этой записи (айпи и состояние) и меняете его на противоположное, после чего загоняете обновлённые данные о состоянии обратно в базу.
пример скрипта автоматического отключения должников:

$result=mysql_query("SELECT ip,state FROM users WHERE cash<0");
while($array=mysql_fetch_array($result))
{
if($array["state"]!=0) rule_off($array["ip"]);
}
mysql_query("UPDATE users SET state=0 WHERE cash<0 and state!=0");

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

Картина маслом? Нехуй делать!

Воскресенье, 12 Июня 2011 г. 23:14 + в цитатник
Счастье - есть.
Оно не может не есть...
Люблю играть в аналогии и слова. Это для меня свщенный бисер. Слова важнее даже, чем те, кому они адресованы. Слова, рисующие узоры вселенной - это сама вселенная - вот она, доступна взору в любое время дня и ночи... Она всегда есть. И это не может не радовать.
Какая к чёрту разница, что творится за занавесками рассудка? Люди выхватывают из зубов друг у друга реальные вещи, которые быстро чахнут в пылу борьбы и становятся никому ненужными. Их красота - как шелуха ореха - слетает во время чистки.
Меня как ребёнка радует лучезарная перспектива мира. Его краски сияют извечной новизной и разнообразием. Я бережно снимаю с них копии и навсегда сохраняю в своих воспоминаниях. Вот оно счастье - владеть всем миром... И никому не мешать...
- Ну, за то, чтобы у нас всё было...
- И нам за это чтобы ничего не было!


Понравилось: 1 пользователю

посвящается анне д...

Среда, 01 Июня 2011 г. 04:17 + в цитатник
ангелы спускаются с небес чтобы узреть опасные игры смертных... меня это достало. меня раздражает твоё вечное нытьё - я так хочу, но я так не могу, я так буду но никогда не сейчас, а всегда когда-нибудь потом. чего ты добиваешься? чтобы я ушёл? почему же тогда запираешь двери? почему твоё "прости" идёт вперемешку с оскорблениями и во всех твоих любовных блюдах есть изрядная доля приправы из ненависти? твоя душа - потёмки. твоё тело обворожительно красиво, особенно когда ты сверху... когда мы занимаемся любовью - нам плевать на то, что мы такие разные. наши судьбы сходятся и расходятся. ты меня любишь. и ты меня презираешь. но я тебе верю. и не сомневаюсь. ты стала чуточку добрее - когда ушла от меня молча.


Понравилось: 1 пользователю

Я хочу умереть

Среда, 01 Июня 2011 г. 04:14 + в цитатник
Срываясь с воображаемого престола Сатана летит камнем в бездну. Бездна поглощает дерзких. Дерзкие ненавидят праведных. Праведные презирают мерзость. Мерзость копошиться под их стопами. Стопы утопают в грязи. Грязь бесстыдно морщится. Морщины убивают красоту. Красота неописуема. Неописуемость красоты вызывает отчаянье. Отчаянье имеет горький привкус. О вкусах не спорят - я хочу умереть.


Понравилось: 1 пользователю

Поиск сообщений в ISoulflY
Страницы: 38 ... 21 20 [19] 18 17 ..
.. 1 Календарь