• 1
Круто ! Круто !
У меня есть просьб: а давайте плкгинную систему вы сделаете на столько гибкую, чтобы без особых проблни иожно было сделать авторизацию по опенайди плпгином ?
ну и конечно же хочется разные рендереры, в количестве. Вот у меня сейчас кажется получится зарелизить xslt.

Ещё вопрос: Треды ? fastcgi ? http ?

> У меня есть просьб: а давайте плкгинную систему вы сделаете на столько гибкую, чтобы без особых проблни иожно было сделать авторизацию по опенайди плпгином ?

Постараемся :) Я бы даже с удовольствием попробовал родить его сам для Maya.

> ну и конечно же хочется разные рендереры, в количестве. Вот у меня сейчас кажется получится зарелизить xslt.

все что сможем сделаем. Но у нас совсем не вагон времени, как может показатся. Писать _рабочий_ код под Rakudo все еще очень долгое дело. Я только пока черновичек маленький набрасывал запостил два мерзеньких бага. А сейчас вот отлавливал банальные "Use of unitialized value" в November в течении получаса. Потому что где это случилось Rakudo говорить все еще не научился :(

> Ещё вопрос: Треды ?
А?!
В тредах я лох, честно говоря.

> fastcgi ?
FastCGI хочу, но кто бы дал нам хоть примитивное IO, а? Мы только файлики читать можем, да STDIN, STDOUT юзать ничего больше.

> http ?
хочется сделать целиком и полностью, вон Carl портирует Rack во всю.

IO я сделаю. В следующие выходные. Так что и fastcgi и http можно будет сделать.

УРА! Хочу IO! :)

Ну я за вчера чуток отрессюректил io/socket_unix.c. Осталось его завернуть в Socket.pmc и начну проталкивать в Parrot.

Да, за всякие opendir/readdir я не брался ещё. Надо?

Эта, а в pdd написано что оно должно быть мультиплексирующее.
Это правда ? С событиями о прочитанных данных ?

Ну да. Только вот для начала я таки сделаю синхронный вариант.

Нееееееееееет !
Бацек нинада.
Я уже год назад хотел сделатль ио, потому что не хватает реально, и не решился.
По тому как я нормально мультиплексное не сделаю. а если сделать и закоммитиь обычное, которое буит требовать реализации select в программе, то народ поставит в головах галочку 'готово' и начнёт использовать.
И потом нормальное ио ты никогда уже не внедришь.
Давай лучше починим евенты, сделаем треды, а только потом, под весь этот огород сделаем ио.
У меня есть времени по выходным.
А ребята пока libfastcgi через nci поюзают ?

bacek@icering:~/src/parrot$ cat s.pir                                                                           
.sub 'main' :main
    $P0 = socket 2,1,0
    $P0.'connect'('www.ibm.com:80')
    $P0.'send'("HEAD /en/us HTTP/1.0\r\nHost: www.ibm.com\r\nConnection: close\r\n\r\n")

  loop:
    $S0 = $P0.'recv'()
    unless $S0 goto done
    print $S0
    goto loop
  done:
    say ""
    say "DONE!!!"
.end

# vim: ft=pir
bacek@icering:~/src/parrot$ ./parrot s.pir 
HTTP/1.1 404 Not Found
Date: Mon, 23 Mar 2009 12:11:20 GMT
Server: IBM_HTTP_Server
Content-Type: text/html
Cache-Control: no-cache
Expires: Sun, 22 Mar 2009 12:11:20 GMT
Last-Modified: Thu, 06 Sep 2007 07:41:58 GMT
ETag: "21f0-a835dd80"
Accept-Ranges: bytes
Content-Length: 8688
Kp-eeAlive: timeout=10, max=69
Connection: Keep-Alive


DONE!!!


Хех :)

а в чем там проблематика с IO если в 2х словах?
мне оно не надо, но т.к. я с io копался долго и упорно, мож оно мне понравится настолько что я сам полезу

А вот ты как раз умеешь такое делать, помню помню.
Фишка в том, что IO должно быть с блэкджеком и шлюхами, мультиплексированное и через события.
Вообщем: http://docs.parrot.org/parrot/latest/html/docs/pdds/pdd22_io.pod.html

Бацек, а ведь я придумал как легко и безопасно начать делать треды.
Пока что для фряхи ... и евенты вроде тоже ...
У нас есть где нить дока, как работает система сборки ?

Я не думаю, что фряхоспецифичное возьмут в паррот. Или даже зависимость от какого-нибудь libnevent согласяться подтянуть. Ибо винда.

А зачем тебе деать треды??? Они же вроде работают.

.sub 'main' :main
    .local pmc thr
    .local pmc pool

    pool = new 'ResizablePMCArray'
    
    $P0 = get_hll_global 'thread_func'
    thr = new ['ParrotThread']
    thr.'run_clone'($P0, 3)
    push pool, thr
    thr = new ['ParrotThread']
    thr.'run_clone'($P0, 1)
    push pool, thr
    thr = new ['ParrotThread']
    thr.'run_clone'($P0, 2)
    push pool, thr

    .local pmc it
    it = iter pool
  loop:
    unless it goto done
    $P0 = shift it
    $P0.'join'()
    goto loop
  done:
.end

.sub 'thread_func'
    .param int sl
    say "IN THREAD"
    say sl
    sleep sl
    say "OUT THREAD"
    say sl
.end

bacek@icering:~/src/parrot$ ./parrot t.pir 
IN THREAD
3
IN THREAD
1
IN THREAD
2
OUT THREAD
1
OUT THREAD
2
OUT THREAD
3


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

Они на самом деле не работают... Вернее треды работают, а вот GC уже нет :(

Да разобрался уже, там унаследован интерпретер, который сам умеет.
С евентами ... хуже.

А зачем тебе ивенты, если есть кложуры?

корутины ?
И самому очередь задач держать ?

1. А почему бы и не держать?
2. Ну и по любому треды не работают... :(

Позже! Мне самому сокеты хочется заполучить :)

Илья, вот тоглко честно скажи, а вы можете пока без ио ?
Просто берёшь libfastcgi и через nci им пользуешься ?
Немножко через задницу, зато быстро, и fastcgi engine с появлением норммального ио рефакторить не придётся ?

х.з. это мне нужно со всей этой через задницей разобраться, у меня нет большого и светлого опыта через задницы, поэтому не уверен. Да и IO уже почти вот оно, вроде.

bacek@icering:~/src/parrot$ ./parrot httpd.pir 
Running webserver on port 1234 of localhost.
The Parrot documentation can now be accessed at http://localhost:1234
Be sure that the HTML docs have been generated with 'make html'.
served file './docs/html/docs/tests.pod.html'
served file './docs/resources/parrot.css'
served file './docs/resources/parrot_logo.png'
served file './docs/html/index.html'
served file './docs/resources/parrot.css'
served file './docs/resources/parrot_logo.png'


Ну вот можно подчищать и пробовать протолкнуть в паррот :)

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

Так вот, а мысль следующая:
вот есть у вас аппликейшен сервер на пэйроте (я недавно узнал как оно правильно произносится).
Так вот он есть в виде одного процесса.
У него есть один тред мудьтиплексный http или fastcgi сервер, который запросы получает, и тут же пробрасывает их работающим тредам. [треды сейчас исследую, общее вчепятление - не работают =(]
Так вот, на получсение запроса и посыл ответа никакого проца не надо, всё в одном потоке сделать можно, а мысль в том, что таких потоков внутри можно поднять разных, в конфигурации с fastcgi - Engine::FastCGI, при работе с http - Engine::HTTP, и чтоб они отдавали запрос в одинаковом виде в диспатчер, ну диспатчер у вас простенький, MRO говорят во всю работает.

Так вот, на этом мы не заканчиваем мысль, так же как и движки для запросов, в системе должен крутится логгер и общее хранилище. Логгеров пару разных классов, и хранилищей тоже, с хранилищем вообще всё просто, большой хэш и мьютекс на него.

И того, получается некая система, в которой крутятся пользовательские воркеры, и общаются через очередь с пользователем через http, с логами через логгер, друг с другом через хранилище, или через очередь задач. Кста, а вот евенты кажись работают.

И мы получаем фреймворк мечты, в который не составит труда вставить jabber транспорт, и диспатчить его сообщения стандартным способом.

ЗЫ, я клоню к тому, что я точно захочу в это вставить видео маршрутизатор для видео чатов, уже где то год об этом мечтаю =)

Как ты красиво Каталист расписал :)

Каталист собака без взаимодействия между воркерами и вообщем то только для http. =(

А так - да =)

http://search.cpan.org/~druoso/Catalyst-Engine-XMPP2-0.3/lib/Catalyst/Engine/XMPP2.pm

Взаимодействие между воркерами делается одной строчкой в App.pm: our %shared : shared;

Гы ..... Нада попробовать, вечерком ...
А то я только http://search.cpan.org/~nperez/POE-Component-Jabber-3.00/lib/POE/Component/Jabber.pm
Пробовал, понравилось. Но нет потоков.

прошу прощения, что встреваю

>вот есть у вас аппликейшен сервер на пэйроте (я недавно узнал как оно правильно произносится).

parrot [pærət] все-таки не пэйрот читается


Re: прошу прощения, что встреваю


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

> я сейчас пишу на голом пире, xml парсер и xslt процессор к нему.
> Парсер уже ... проходит тесты, я довольно

Carl хочет реализовать шаблонизатор тип Genshi, я думаю ему может пригодится XML-прасер, где бы на него посмотреть?

Сча тестю, через неделю тогда отдам.

  • 1
?

Log in