Witam.
Ja się podejmę stworzenia nowego demona jak będę miał trochę więcej danych, jak ma to działać. Choć w zasadzie almsd był moim pierwszym większym kontaktem z C, to jednak widać (tak mi się wydaje), że szybko się uczę. Piszesz o Smarty. Czyli konfigi miałyby być generowane ręcznie, a demon by je tylko podmieniał - bułka z masłem. Ja myślałem raczej o jakimś automacie, który sam wszystko robi, ale żeby to zgrać z takimi templejtami, trzeba by Zdecydowanie więcej roboty, ale może by się udało.
Hm. Napisz taki parser. Ja nie znam w ogóle C, ale... Generalnie smarciak jest i pewnie algorytm z niego można by było jakoś zaimplementować. O ile podstawianie pod zmienne to bułka z masłem jest (no, takowoż zakładam) o tyle np. wykrywanie pętli, foreach'ów i ifów to pewnie by była niezła sieczka. Jeżeli mielibyśmy z poziomu UI generować konfigi, a na demon zwalić parę innych rzeczy, to pozostaje nam napisać ładny iface do edycji konfigów. Akurat składnia templejtów Smarty jest idealna... Wyjątki, srątki, ify, srify i inne takie. And it works. A i może być bardzo proste. Kwestia jak to użyjemy.
BTW - wiesz że taki mały hack zadziała?:
$SMARTY->assign('DB',$DB); ... {foreach from=$DB->GetAll('SELECT * FROM users') item=user}
Generalnie nawet w perlu nie udało mi się znaleźć czegoś podobnego. A jak wykrywać zmiany? Hm. Tutaj przy demonie pobierającym configi zaczynają się jazdy. Ale to zaraz. Taki demonik może być nawet w perlu, w czymkolwiek. Natomiast plik konfiguracyjny musiałby zawierać:
wspólne: url do lms'a, ssl (tak/nie), 'secret' per-plik: nazwa templejtu, co zrobić po.
Przy czym dostarczyć możemy tyle plików konfiguracyjnych z komentarzami że głowa mała. Dodatkowo w templejtach możemy pisać własne zapytania SQL:
<? foreach from=$DB->GetOne('SELECT * FROM nodes') item=node ?> $node.name <? /foreach ?>
A co do jazd. Daję polecenie reloadu. Chwila minie zanim demon to załapię. Co jeżeli w tym momencie zrobić coś bardzo głupiego [tm] co odetnie mnie od sieci? :-) I zdąże zrobić to przed reloadem?
Pozostaje jeszcze nieustalona kwestia wykrywania zmian i reloadu, nie wiem czy planowana w 1.9 przez ciebie tabela 'events' to załatwi.
Miejmy nadzieję. Featuresy każdy umie wymyślać. Gorzej opracowaniem recepty na nie, a jeszcze gorzej z realizacją powyższej (nawet NFZ radzi sobie lepiej niż my)
P.
uczestnicy (1)
-
Łukasz Jarosław Mozer