Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Artem Chuprina
Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Tue, 20 Jun 2006 
01:27:56 +0400:

 >>  DEO> поясни мне тогда пожалуйста :)
 >> 
 >> Возьми книжку по перлу, хотя бы свою, по 5.6, и прочти там, что такое
 >> glob (не функция, а внутренняя перловая конструкция).  Да, книжка,
 >> видимо, должна быть вполне конкретная - Programming Perl.  Кукбуки
 >> обычно этого не описывают.
 DEO> дык взял почитал
 DEO> никакого, нет не так
 DEO> НИКАКОГО отношения глобы к файлам не имеют.
 DEO> то что их так применяют - дело десятое
 DEO> глоб - это лишь "ссылка на все с данным именем" (ц) Л. Уолл

Ну да.  На все.  Каковых 4 то ли 5 различных видов возможно.  Скаляр,
массив, хэш, файлхендл, функция.  Кажется.

-- 
Artem Chuprina
RFC2822:  Jabber: [EMAIL PROTECTED]

Кто первый встал, того и грабли
Д. Белявский


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Artem Chuprina
Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Tue, 20 Jun 2006 
00:16:04 +0400:

 >> Ты путаешь определенность глоба как такового и заполнение его
 >> файлхендлового гнезда.
 DEO> а не ты путаешь файлхендлы с глобами?
 DEO> насколько я понимаю глобы отнюдь не для файлхендлов задуманы :)

Если бы ты сказал "отнюдь не только для файлхендлов", я бы тебе даже
поверил.  По версию 4 включительно файлхендлы бывали только в глобах.  В
5.0.005 бывали еще как объекты иерархии IO::*, но их нельзя было
передавать в системные функции.  В 5.6 стало можно.  Я вот не пойму, ты
меня пытаешься убедить, что старый перл, который у тебя на хостинге,
должен жрать конструкции от нового?  Ну, предположим, меня ты убедишь.
Он что, от этого начнет их жрать?

-- 
Artem Chuprina
RFC2822:  Jabber: [EMAIL PROTECTED]

Если ты не боишься синего экрана, то почему боишься черного?
(c) Д.Белявский


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Artem Chuprina
Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Tue, 20 Jun 2006 
00:10:15 +0400:

 >> Ты путаешь определенность глоба как такового и заполнение его
 >> файлхендлового гнезда.
 DEO> поясни мне тогда пожалуйста :)

Возьми книжку по перлу, хотя бы свою, по 5.6, и прочти там, что такое
glob (не функция, а внутренняя перловая конструкция).  Да, книжка,
видимо, должна быть вполне конкретная - Programming Perl.  Кукбуки
обычно этого не описывают.

 >>  DEO> у меня книжка по 5.6 (насколько помню)
 >>  DEO> там написано что если передавать простой скаляр, то он становится
 >>  DEO> объектом, "самооживляется" в их терминологии. закрывает файлы по 
 >> выходе
 >>  DEO> из области видимости итп
 >> 
 >> А в 5.0.005 этого еще нет.  Ы?
 DEO> ну выше ж приводил - матюкается он на это.

Естественно.  Раз в нем этого еще нет, то он на это и матюкается.

-- 
Artem Chuprina
RFC2822:  Jabber: [EMAIL PROTECTED]

Дуля со смещенным центром тяжести


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Artem Chuprina
Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Mon, 19 Jun 2006 
23:16:24 +0400:

 >>  >>  DEO> тогда пойдем от слова "неопределенный"
 >>  >> 
 >>  >>  DEO> что в первом что во втором варианте именно вызываемая функция 
 >> делает
 >>  >>  DEO> хендл определенным, определяет его.
 >>  >>  DEO> :)
 >>  >> 
 >>  >> Хендл - допустим.  А вот переменную она делает определенной только во
 >>  >> втором случае.  В первом случае глоб делает определенным упоминание его
 >>  >> в коде.
 >>  DEO> ты опять назовешь меня ламером но про второй случай я не понял.
 >>  DEO> о каком глобе может идти речь _до_ вызова функции?
 >> 
 >> О глобе FILE.  Когда именно он будет создан - на стадии компиляции
 >> (perl, видя в этом месте bareword, уже в курсе, что имеется в виду глоб)
 >> или непосредственно перед вызовом функции, я не скажу, но что до вызова
 >> - факт.
 DEO> а вот это легко проверяется. я выше приводил текст про ошибки
 DEO> он ругается именно на стадии выполнения (если используем глобы).
 DEO> и ошибки навроде
 DEO> print FILEE "бла-бла"; (предполагается что FILE неверно написан)
 DEO> тоже только на этапе работы выясняются, а не на этапе компиляции.
 DEO> (собственно об этом и речь была выше), так что представляется крайне
 DEO> сомнительным что что-то там такое определяется на этапе компиляции  :D

Ты путаешь определенность глоба как такового и заполнение его
файлхендлового гнезда.

 >> Заполнено его файлхендловое гнездо будет, да, уже внутри.
 >> 
 >> Собственно, в open, print и т.п. можно передавать ссылку на глоб.
 >> Которую можно присвоить переменной.  Что-то типа
 >> 
 >> my $handle = \*FILE; open($handle, ...);
 >> 
 >> Этот фокус в 5.0 работал.  Во всяком случае, в 5.0.005.
 DEO> у меня книжка по 5.6 (насколько помню)
 DEO> там написано что если передавать простой скаляр, то он становится
 DEO> объектом, "самооживляется" в их терминологии. закрывает файлы по выходе
 DEO> из области видимости итп

А в 5.0.005 этого еще нет.  Ы?

-- 
Artem Chuprina
RFC2822:  Jabber: [EMAIL PROTECTED]

Все гениальное просто.
Но со вкусом.
Кнышев.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Artem Chuprina
Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Mon, 19 Jun 2006 
22:19:38 +0400:

 >>  >> Так мне его проверить негде.  А разница между версиями - материя тонкая,
 >>  >> я тебе набросаю, а ты опять придешь, скажешь "не работает".  А я твое
 >>  >> письмо читай...
 >> 
 >>  DEO> тогда пойдем от слова "неопределенный"
 >> 
 >>  DEO> что в первом что во втором варианте именно вызываемая функция делает
 >>  DEO> хендл определенным, определяет его.
 >>  DEO> :)
 >> 
 >> Хендл - допустим.  А вот переменную она делает определенной только во
 >> втором случае.  В первом случае глоб делает определенным упоминание его
 >> в коде.
 DEO> ты опять назовешь меня ламером но про второй случай я не понял.
 DEO> о каком глобе может идти речь _до_ вызова функции?

О глобе FILE.  Когда именно он будет создан - на стадии компиляции
(perl, видя в этом месте bareword, уже в курсе, что имеется в виду глоб)
или непосредственно перед вызовом функции, я не скажу, но что до вызова
- факт.  Заполнено его файлхендловое гнездо будет, да, уже внутри.

Собственно, в open, print и т.п. можно передавать ссылку на глоб.
Которую можно присвоить переменной.  Что-то типа

my $handle = \*FILE; open($handle, ...);

Этот фокус в 5.0 работал.  Во всяком случае, в 5.0.005.

-- 
Artem Chuprina
RFC2822:  Jabber: [EMAIL PROTECTED]

Попрошу благородного дона не обобщать с утра пораньше! (С)энта


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Artem Chuprina
Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Mon, 19 Jun 2006 
17:52:43 +0400:

 >>  DEO> по моему что в 
 >>  DEO> open(FILE, "бла-бла");
 >> 
 >>  DEO> что в 
 >>  DEO> my $file;
 >>  DEO> open($file, "бла-бла");
 >> 
 >>  DEO> он неопределенный ;)
 >> 
 >> Так мне его проверить негде.  А разница между версиями - материя тонкая,
 >> я тебе набросаю, а ты опять придешь, скажешь "не работает".  А я твое
 >> письмо читай...

 DEO> тогда пойдем от слова "неопределенный"

 DEO> что в первом что во втором варианте именно вызываемая функция делает
 DEO> хендл определенным, определяет его.
 DEO> :)

Хендл - допустим.  А вот переменную она делает определенной только во
втором случае.  В первом случае глоб делает определенным упоминание его
в коде.

-- 
Artem Chuprina
RFC2822:  Jabber: [EMAIL PROTECTED]

Человек - терновый венец природы.
Кнышев


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Artem Chuprina
Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Mon, 19 Jun 2006 
15:34:48 +0400:

 >>  DEO> вот я спрашивал как гуру рекомендуют сию задачу разруливать?
 >>  DEO> мне второй вариант нравился (и нравится), но как выяснилось немножко
 >>  DEO> выше, он не везде работоспособен :-\
 >> 
 >> Гуру рекомендуют выбирать хостинг, версии софта на котором тебя
 >> устраивают.  Сильно нервы экономит, однако.
 DEO> тут другой альтернативы нет просто :-\
 DEO> все продолжается история которая выше в топике
 DEO> "прокси-сервер на скриптах"

 DEO> я тогда поигрался с попытками портировать Net::Proxy на пятый перл, но
 DEO> там по цепочке мнооого либ тащилось, я где-то половину проковырял, а
 DEO> потом нашел более простое решение: сваял CGI-шку, которая пускает на 
 DEO> серваке ssh с ключами -R -L, ну товарищ имел три месяца 100 мегабит 
 DEO> инет бесплатный (у них по умолчанию инет где-то 200$/мес 64кбит :-\), 
 DEO> сейчас они прочухались, сунули ssh в группу и запретили доступ 

 DEO> ну вот я и думаю теперь открыть два сокета и скрипт пусть тупо данные
 DEO> между ними пробрасывает (в двух процессах), а на двух сторонах тунеля 
 DEO> там Perl5.8 там уже можно нормальные библиотеки юзать...

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

-- 
Artem Chuprina
RFC2822:  Jabber: [EMAIL PROTECTED]

Дело говоришь!
Теперь делай его.
Кнышев.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Artem Chuprina
Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Mon, 19 Jun 2006 
15:48:05 +0400:

 >>  >> Потому что не надо путать необъявленные с неопределенными.
 >>  DEO> я там смайлик поставил ;)
 >>  DEO> не просто так :D
 >> 
 >> А я не поставил.  Но тоже не просто так...
 DEO> я думал ты примерчик набросаешь где брать определенный хендл

 DEO> по моему что в 
 DEO> open(FILE, "бла-бла");

 DEO> что в 
 DEO> my $file;
 DEO> open($file, "бла-бла");

 DEO> он неопределенный ;)

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

-- 
Artem Chuprina
RFC2822:  Jabber: [EMAIL PROTECTED]

Обновление Windows изменило интуитивно ясный интерфейс Вашего компьютера.
Загрузите обновление интуиции с сайта Microsoft.
(С)энта


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Artem Chuprina
Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Mon, 19 Jun 2006 
15:34:48 +0400:

 DEO> я выше спрашивал: никто русскоязычной рассылки по Perl не знает?

fido7.ru.perl, fido7.ru.cgi.perl.

-- 
Artem Chuprina
RFC2822:  Jabber: [EMAIL PROTECTED]

The Eclipse Platform is an open and extensible platform
for anything and yet nothing in particular.
apt-cache show eclipse-platform


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Artem Chuprina
Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Mon, 19 Jun 2006 
15:16:01 +0400:

 >>  >>  DEO> я жду, мне обещали shell на ту машинку, там и разберемся.
 >>  >>  DEO> варианты проапгрейдить перл не подходят, потому что там стоит 
 >> BSD, а у
 >>  >>  DEO> нее как обычно с обновлениями траблы и они на это не пойдут :(
 >>  >> 
 >>  >> Тогда забудь про возможность подсовывать неопределенные переменные в
 >>  >> вызовы socket, open и т.п.
 >>  DEO> это почему же они неопределенные?
 >>  DEO> написано же my $socket; ;)
 >> 
 >> Потому что не надо путать необъявленные с неопределенными.
 DEO> я там смайлик поставил ;)
 DEO> не просто так :D

А я не поставил.  Но тоже не просто так...

-- 
Artem Chuprina
RFC2822:  Jabber: [EMAIL PROTECTED]

Делу время, потехе - деньги.
Кнышев


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Artem Chuprina
Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Mon, 19 Jun 2006 
14:55:15 +0400:

 DEO> вот я спрашивал как гуру рекомендуют сию задачу разруливать?
 DEO> мне второй вариант нравился (и нравится), но как выяснилось немножко
 DEO> выше, он не везде работоспособен :-\

Гуру рекомендуют выбирать хостинг, версии софта на котором тебя
устраивают.  Сильно нервы экономит, однако.  Хотя меня бы и 5.0
устроил...  Что до данной проблемы, то кажется, IO::* там уже были.
Только их нельзя было передавать в системные функции, надо пользоваться
методами.  Т.е. my $socket = IO::Socket->new(...);
$socket->connect(...);  Но не факт, что я правильно помню...

-- 
Artem Chuprina
RFC2822:  Jabber: [EMAIL PROTECTED]

/dev/null-транспортировка


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Dmitry Fedorov

Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Mon, 19 Jun 2006 
12:23:12 +0400:

 DEO> тут проблема: пишется некий скрипт для системы где стоит Perl5.0,
 DEO> в котором много чего нет. в частности use warnings, не говоря уж о


local $^W=1; # use warnings only since 5.006


Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Artem Chuprina
Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Mon, 19 Jun 2006 
14:10:49 +0400:

 >>  DEO> я жду, мне обещали shell на ту машинку, там и разберемся.
 >>  DEO> варианты проапгрейдить перл не подходят, потому что там стоит BSD, а у
 >>  DEO> нее как обычно с обновлениями траблы и они на это не пойдут :(
 >> 
 >> Тогда забудь про возможность подсовывать неопределенные переменные в
 >> вызовы socket, open и т.п.
 DEO> это почему же они неопределенные?
 DEO> написано же my $socket; ;)

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

-- 
Artem Chuprina
RFC2822:  Jabber: [EMAIL PROTECTED]

If it's there and you can see it---it's real
If it's not there and you can see it---it's virtual
If it's there and you can't see it---it's transparent
If it's not there and you can't see it---you erased it!
IBM poster explaining virtual memory, circa 1978


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Sergey Brutsky




Dmitry E. Oboukhov пишет:

  мне не нравятся конструкции вроде

open(FILE, "filename");

потому что даже с use strict они не делают die если неверно написал имя
хендла.
я понимаю что опять я видимо ламерский вопрос задал, но извиняйте, не
могу удержаться.
я для себя взял за правило писать сперва my $file;  чтобы разрешить эту
проблему, а как с ней борются гуру? ;)

open(FILE, "filename") or die $!;




Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Artem Chuprina
Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Mon, 19 Jun 2006 
12:23:12 +0400:

 >> IO::Socket::INET гораздо проще в работе.
 >> 
 >> В Птн, 16/06/2006 в 20:46 +0300, Sergey Brutsky пишет:
 >> > можно как-то научить print'ы писать в сокет?
 >> > 
 >> > !/usr/bin/perl -W
 >> > 
 >> > use Socket;
 >> > 
 >> > socket(Socket_Handle, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
 >> > connect(Socket_Handle, sockaddr_in( 80, inet_aton("213.180.204.8")));
 >> > select Socket_Handle; $| = 1;
 >> > print Socket_Handle "GET / HTTP1/.0\n\n";
 >> > print STDOUT ;
 >> > close(Socket_Handle);
 DEO> тут проблема: пишется некий скрипт для системы где стоит Perl5.0,
 DEO> в котором много чего нет. в частности use warnings, не говоря уж о
 DEO> библиотеках.

С библиотеками как раз проще.

 DEO> например на строку:
 DEO> connect($socket, sockaddr_in(80, inet_aton("127.0.0.1")));
 DEO> тот перл ругается так:

 DEO> Bad symbol for filehandle at /path/to...

 DEO> ===
 DEO> use Socket;
 DEO> my $socket;
 DEO> socket($socket, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
 DEO> connect($socket, sockaddr_in(80, inet_aton("127.0.0.1")));
 DEO> ===

 DEO> хотя этот код работает в perl 5.8

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

Тогда забудь про возможность подсовывать неопределенные переменные в
вызовы socket, open и т.п.  Вышеприведенный вариант, где используется
bareword Socket_Handle, скорее всего, работать будет.

-- 
Artem Chuprina
RFC2822:  Jabber: [EMAIL PROTECTED]

А еще следует потребовать, чтобы программисты, перед тем, как писать код,
внимательно прочли спецификацию: с сыром - это чизбургер.
Игус в <[EMAIL PROTECTED]>


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Alexander Vlasov
И охота вам извращаться, господа?
IO::Socket::INET гораздо проще в работе.

В Птн, 16/06/2006 в 20:46 +0300, Sergey Brutsky пишет:
> можно как-то научить print'ы писать в сокет?
> 
> !/usr/bin/perl -W
> 
> use Socket;
> 
> socket(Socket_Handle, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
> connect(Socket_Handle, sockaddr_in( 80, inet_aton("213.180.204.8")));
> select Socket_Handle; $| = 1;
> print Socket_Handle "GET / HTTP1/.0\n\n";
> print STDOUT ;
> close(Socket_Handle);
> 
> 
-- 
Alexander Vlasov
ZULU-UANIC
JID: zulu  jabber.kiev.ua


Re: пара отвлеченных вопросов, офтопик

2006-06-19 Пенетрантность Alexander Vlasov
Как не работает?
Живой фрагмент...

sub login {
my $sock = IO::Socket::INET->new("127.0.0.1:3339");

select((select($sock), $| = 1)[0]);
binmode $sock, ':utf8';

print $sock "login name='$USER' password='$PASSWORD' node=
$AUTHPOINT ip=127.0.0.1\r\n\r\n";
sleep (2);
print $sock "gender node=$AUTHPOINT name=m\r\n\r\n";


В Птн, 16/06/2006 в 20:44 +0400, Dmitry E. Oboukhov пишет:
> > 2. по Perl русскоязычной рассылки никто не знает?
> ладно раз никто не знает по рассылке, может кто ответит по Perl?
> 
> я нигде не нашел ответа на вопрос можно ли с сокетами в перл работать
> как с файлами?
> 
> 
> в смысле чтения из сокета я попробовал работает
> $line=<$socket>;
> 
> а вот в смысле записи в сокет экспериментально попробовал - не работает
> print $socket "бла-бла";
> 
> да я знаю про send, но в данный момент стоит вопрос использования кода
> куда хочется сокет вместо файла подсунуть...
> 
> можно как-то научить print'ы писать в сокет?
> 
> 
-- 
Alexander Vlasov
ZULU-UANIC
JID: zulu  jabber.kiev.ua


Re: пара отвлеченных вопросов, офтопик

2006-06-18 Пенетрантность Anton Petrusevich
On Saturday 17 June 2006 17:53, Dmitry E. Oboukhov wrote:
> > И с _такими_
> > элементарными вопросами меня ты уже заколебал.
> ну не читай ;)

Окей, новое правило в фильтре.
-- 
Anton Petrusevich


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-17 Пенетрантность Sergey Brutsky



my $socket;
socket($socket, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
connect($socket, sockaddr_in(80, inet_aton("127.0.0.1")));
print $socket "GET / HTTP/1.0\n\n";
print while(<$socket>);

почему-то висит и ответа сервера не печатает

а вот если 
print $socket "GET / HTTP/1.0\n\n";


заменить на send то работает так как предполагалось.
  

select $socket; $| = 1;
print $socket "GET / HTTP/1.0\n\n";


Re: пара отвлеченных вопросов, офтопик

2006-06-16 Пенетрантность Anton Petrusevich
On Friday 16 June 2006 21:18, Dmitry E. Oboukhov wrote:
> а вот оно в чем дело, спасибо большое!

Ну, кстати, в любом учебнике/руководстве/книге/документации это всё описано. И 
про my $fh = selct ($socket); $| = 1; select($fh) тоже. И с _такими_ 
элементарными вопросами меня ты уже заколебал. К тому же, оффтопик. 
-- 
Anton Petrusevich


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-16 Пенетрантность Alexander Lourier
В сообщении от Пятница 16 Июнь 2006 22:37 Dmitry E. Oboukhov написал(a):

use IO::Handle

> my $socket;
> socket($socket, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
> connect($socket, sockaddr_in(80, inet_aton("127.0.0.1")));
$socket->autoflush(1)
> print $socket "GET / HTTP/1.0\n\n";
> print while(<$socket>);
>
> почему-то висит и ответа сервера не печатает

Потому что данные из буфера не уходят в сокет.

-- 
Alexander Lourier, http://aml.rulezz.ru


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-16 Пенетрантность Sergey Brutsky

можно как-то научить print'ы писать в сокет?

!/usr/bin/perl -W

use Socket;

socket(Socket_Handle, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
connect(Socket_Handle, sockaddr_in( 80, inet_aton("213.180.204.8")));
select Socket_Handle; $| = 1;
print Socket_Handle "GET / HTTP1/.0\n\n";
print STDOUT ;
close(Socket_Handle);



Re: пара отвлеченных вопросов, офтопик

2006-06-16 Пенетрантность Alexander Lourier
В сообщении от Пятница 16 Июнь 2006 20:44 Dmitry E. Oboukhov написал(a):


> я нигде не нашел ответа на вопрос можно ли с сокетами в перл работать
> как с файлами?

Да.

> а вот в смысле записи в сокет экспериментально попробовал - не работает
> print $socket "бла-бла";

Что значит не работает? Как проверяли?

Может быть не хватает use IO::Handle;
$socket->autoflush(1);

-- 
Alexander Lourier, http://aml.rulezz.ru


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-14 Пенетрантность Nikita V. Youshchenko
>> Забавно. Не знал. Хотя это выглядит скорее извращением -
> 
> Само ядро использует.

Заинтересовался. Посмотрел. Все такие использования по пальцам пересчитать
можно, и они более или менее очевидно заменяются на использование
внутреннего kernel api.

Особенно порадовал вызов getpid() в arch/sh64/kernel/process.c
Использовать current->pid кому-то религия не позволила :)
(хотя судя по контексту, там какой-то отладочный код, где наверное важен
факт системного вызова, а не осуществляемые вызовом действия).

>> особенно если учесть, скажем, размер структуры pt_regs для RISC
>> архитектур.
> 
> И зачем мне его учитывать?

Даже если код собирается с CONFIG-4KSTACKS ?


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-14 Пенетрантность Dmitry Fedorov

15.06.06, Nikita V. Youshchenko<[EMAIL PROTECTED]> написал(а):


Это с каких пор? А url можно?


Извиняюсь, перепутал - 3-е издание.



Забавно. Не знал. Хотя это выглядит скорее извращением -


Само ядро использует.


особенно если учесть, скажем, размер структуры pt_regs для RISC архитектур.


И зачем мне его учитывать?


Re: пара отвлеченных вопросов, офтопик

2006-06-14 Пенетрантность Nikita V. Youshchenko


> 14.06.06, Nikita V. Youshchenko<[EMAIL PROTECTED]> написал(а):
>>
>> > 14.06.06, Nikita V. Youshchenko<[EMAIL PROTECTED]> написал(а):
>> > > Ядро - это замкнутый в себе статический бинарник.
>> >
>> > А загружаемые модули?
>>
>> А загружаемые модули линкуются внутрь ядра; им доступны только символы,
>> экспортируемые ядром или другими загруженными модулями.
> 
> Значит, уже не замкнутый и не статический.

Ядро - замкнутое и статическое. Оно не может использовать неопределённые в
нём символы. Хотя само экспортирует что-то для модулей.

>> Советую почитать "Linux device drivers, 3rd edition" - доступно в сети.
> 
> Спасибо за совет. Читал. Лучшая из всех и, тем не менее, крайне
> недостаточная. 4th edition давно в сети.

Это с каких пор? А url можно?

>> > Из ядра можно вызывать любой системный вызов, доступный из user space.
>>
>> Ну если только не играться с ассемблером, то это не так.
> 
> Никаких игр с ассемблером. Всё штатными средствами ядра.
> Всё ассемблерное и платформо-зависимое предоставлено ядром.
> 
>> Системному вызову
>> xxx() соответствует в ядре функция sys_xxx(), и эти функции не
>> экспортируются
> 
> Экспорт не нужен.
> 
>> (так как, помимо прочего, используют специальные binary
>> calling conventions).
> 
> Любые calling conventions описаны в прототипах.
> Неважно.
> 
>> > Просто нужно знать как. Это не документировано, но без этого маханизма
>> > само ядро обойтись не может, а потому это будет доступно всегда.
>>
>> А с этого момента поподробнее пожалуйста. Многолетний опыт работы в ядре
>> заставляет усомниться в ваших словах ...
> 
> Ну тогда можно и без подробностей - смотрите  и
> приложенный файл - надёргал фрагментов из рабочего кода.

Забавно. Не знал. Хотя это выглядит скорее извращением - особенно если
учесть, скажем, размер структуры pt_regs для RISC архитектур.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: пара отвлеченных вопросов, офтопик

2006-06-14 Пенетрантность Dmitry Fedorov

14.06.06, Stanislav Maslovski<[EMAIL PROTECTED]> написал(а):

On Wed, Jun 14, 2006 at 07:26:37PM +0400, Victor Wagner wrote:
> Так вроде ж FUSE это Filesystem in User Space. Т.е. по определению
> должна позволять использовать любые user-space библиотеки.

А что получится, если вызов из модуля некой процедуры из внешней библиотеки
приведет к обращению к файловой системе, которую сам этот модуль обслуживает?

Наверняка всем сразу поплохеет...


1. Правильное проектирование избавляет от таких проблем.

2. Ядерному модулю FUSE никакие библиотеки не нужны.
User-space daemon, реализующий FS, для доступа к нужным ему
библиотекам в ядерном модуле FUSE обычно не нуждается.
А если нуждается, смотри п.1.


Re: пара отвлеченных вопросов, офтопик

2006-06-14 Пенетрантность Dmitry Fedorov

14.06.06, Nikita V. Youshchenko<[EMAIL PROTECTED]> написал(а):


> 14.06.06, Nikita V. Youshchenko<[EMAIL PROTECTED]> написал(а):
> > Ядро - это замкнутый в себе статический бинарник.
>
> А загружаемые модули?

А загружаемые модули линкуются внутрь ядра; им доступны только символы,
экспортируемые ядром или другими загруженными модулями.


Значит, уже не замкнутый и не статический.


Советую почитать "Linux device drivers, 3rd edition" - доступно в сети.


Спасибо за совет. Читал. Лучшая из всех и, тем не менее, крайне недостаточная.
4th edition давно в сети.


> Из ядра можно вызывать любой системный вызов, доступный из user space.

Ну если только не играться с ассемблером, то это не так.


Никаких игр с ассемблером. Всё штатными средствами ядра.
Всё ассемблерное и платформо-зависимое предоставлено ядром.


Системному вызову
xxx() соответствует в ядре функция sys_xxx(), и эти функции не
экспортируются


Экспорт не нужен.


(так как, помимо прочего, используют специальные binary
calling conventions).


Любые calling conventions описаны в прототипах.
Неважно.


> Просто нужно знать как. Это не документировано, но без этого маханизма
> само ядро обойтись не может, а потому это будет доступно всегда.

А с этого момента поподробнее пожалуйста. Многолетний опыт работы в ядре
заставляет усомниться в ваших словах ...


Ну тогда можно и без подробностей - смотрите  и
приложенный файл - надёргал фрагментов из рабочего кода.
# include 	/* mm_segment_t  */
# include 	/* set_fs, get_fs, KERNEL_DS */
# include 	/* system calls */


// returns old mm segment.
extern inline
mm_segment_t df_get_and_set_fs(mm_segment_t newfs)
{
mm_segment_t oldfs = get_fs();
set_fs(newfs);
return oldfs;
}


static inline _syscall3(int, chown,
			const char __user*, filename,
			uid_t, user,
			gid_t, group)

int df_chown(const char __kernel* filename,  uid_t user, gid_t group)
{
mm_segment_t old_fs = df_get_and_set_fs(KERNEL_DS);

int rc = chown((const char __user*)filename, user, group);

set_fs(old_fs);

return rc<0 ? errno : rc;
}


static inline _syscall3(int, mknod,
			const char __user*,filename,
			mode_t,mode,
			dev_t,dev)

int df_mknod(const char __kernel* filename, mode_t mode, dev_t dev)
{
mm_segment_t old_fs = df_get_and_set_fs(KERNEL_DS);

int rc = mknod((const char __user*)filename, mode, dev);

set_fs(old_fs);

return rc<0 ? errno : rc;
}



Re: пара отвлеченных вопросов, офтопик

2006-06-14 Пенетрантность Nikita V. Youshchenko

> 14.06.06, Nikita V. Youshchenko<[EMAIL PROTECTED]> написал(а):
> > Ядро - это замкнутый в себе статический бинарник.
>
> А загружаемые модули?

А загружаемые модули линкуются внутрь ядра; им доступны только символы, 
экспортируемые ядром или другими загруженными модулями.

Советую почитать "Linux device drivers, 3rd edition" - доступно в сети.

>
> > Чтобы использовать внутри ядра библиотеку, надо поместить эту
> > библиотеку внутрь ядра. Что можно сделать далеко не с любым кодом:
> > например, код не должен использовать системные вызовы (либо их
> > использование должно быть заменено на вызов внутренних функций ядра,
> > их реализующих - а эти функции не всегда экспортируются);
>
> Из ядра можно вызывать любой системный вызов, доступный из user space.

Ну если только не играться с ассемблером, то это не так. Системному вызову 
xxx() соответствует в ядре функция sys_xxx(), и эти функции не 
экспортируются (так как, помимо прочего, используют специальные binary 
calling conventions).
Содержательная функциональность некоторых - но не всех! - системных вызовов 
доступны в виде внутреннего ядерного API.

А игры с ассемблером в ядре до добра не доводят.

> Просто нужно знать как. Это не документировано, но без этого маханизма
> само ядро обойтись не может, а потому это будет доступно всегда.

А с этого момента поподробнее пожалуйста. Многолетний опыт работы в ядре 
заставляет усомниться в ваших словах ...


pgpo8u0UznDkp.pgp
Description: PGP signature


Re: пара отвлеченных вопросов, офтопик

2006-06-14 Пенетрантность Dmitry Fedorov

14.06.06, Nikita V. Youshchenko<[EMAIL PROTECTED]> написал(а):


Ядро - это замкнутый в себе статический бинарник.


А загружаемые модули?


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


Из ядра можно вызывать любой системный вызов, доступный из user space.
Просто нужно знать как. Это не документировано, но без этого маханизма
само ядро обойтись не может, а потому это будет доступно всегда.


Re: пара отвлеченных вопросов, офтопик

2006-06-14 Пенетрантность Nikita V. Youshchenko


> 1. залез я за C, давно на нем ничего не писал, а тут модулек для ядра
> назрело написать. наткнулся на то что модули ядра не все подряд функции
> могут вызывать.

Ядро - это замкнутый в себе статический бинарник.
Чтобы использовать внутри ядра библиотеку, надо поместить эту библиотеку
внутрь ядра. Что можно сделать далеко не с любым кодом: например, код не
должен использовать системные вызовы (либо их использование должно быть
заменено на вызов внутренних функций ядра, их реализующих - а эти функции
не всегда экспортируются); имеются ограничения на использование
динамической памяти; сильно ограничен доступный размер стека, и т.д.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]