Noob + non-cjl alert: mozecie polecic jakas literature odnosnie pisania parserow? Potrzebuje napisac parser CSS (wlasciwie to postcss) ktory bedzie wypluwal AST, generalnie to moglbym uzyc gotowych bibliotek, ale zalezy mi by sie czegos nauczyc.
Dragon Book!
A tak bardziej poważnie.
Skoro piszesz "non-clj" to znaczy że nie bedziesz tego pisał w Clojure?
Bo zastanawiam się jak bardzo sugerować kombinatory parserów : D
Wlasnie chce napisac w clojure, generalnie to chce napisac plugin do boota ktory parsuje postcss i wypluwa css
Hmm, jak piszesz w funkcyjnym to serio sugeruję spróbować kombinatorów parserów
Bardzo fajnie się w tym składa gramatyki
http://www.infoq.com/presentations/Parser-Combinators to IIRC dobra prezentacja wprowadzająca do tematu
Ew. dobrą opcją też mogłyby być Parsing Expression Grammars
Wielkie dzieki jaen, sprawdze to!
Ciekawymi parserami są też parsery Pratta
Nie wiem jak łatwo by było to przenieść na grunt Clojure
Ale generalnie polecam dwa ostatnie blogposty stąd - http://journal.stuffwithstuff.com/category/parsing/
Koleś zarąbiście pisze i tłumaczy
(w ogóle cały jego blog polecam)
Jeszcze ostatni link zanim skończę spam - http://www.cs.uu.nl/research/techreps/repo/CS-2008/2008-044.pdf - tłumaczy kombinatory parserów krok po kroku, ale wykorzystuje Haskella, więc YMMV czy to będzie zrozumiałe
Super, dziekuje, dodane to listy :simple_smile:. Pewnie caly ten projekcik latwy dla mnie nie bedzie, gdyz jest to totalnie dla mnie nowa rzecz (+ computer science zaczalem sie interesowac calkiem niedawno 😉).
Albo kłamałem że ostatni - tu też jest całkiem legitny przykład implementacji kombinatorów od zera (też Haskell) http://dev.stephendiehl.com/fun/002_parsers.html
mysle ze tutaj duzo moglby @nooga pomoc
W każdym razie - powodzenia, parsing to ciekawa sprawa bardzo : D
PS jak napiszesz i zołpensorsujesz to się pochwal ; d
Tak zrobie, zaczynam research i dlubanie w ten weekend :simple_smile:
jak Ci nie zalezy na zglebianiu ciekawych algorytmow to uzyj po prostu https://github.com/Engelberg/instaparse
CSS ma chyba dosc duza gramatyke i pewnie juz gdzies jest jakis BNF, ktory moznaby sobie zaadaptowac
to chyba najszybszy sposob
But where's the adventure in that! P ;
dzieki nooga!
smiesznie, ze reader clojure to jest w ogole chyba RDP 😄
z tego co pamietam jak tam ostatnio zagladalem
No generalnie Clojure jest handwritten mocno
I ta indentacja P ;
nie ma nic zlego w RDP
sa szybkie i czytelne 😄
dopisalem do pixie unquote-splicing dla map czytajac kod clojure
Och, korzystaci z pixie w jakiejś formie?
nie, ale podoba mi sie i zawsze chcialem pogrzebac w jakims jezyku
wiec zrobilem pull request i teraz jestem na payrollu xD
ale ogolnie to byl slaby patch, nie rozumiem do konca jak to wsyztsko dziala
tak samo z cljs
trudno sie w to wgryzc
> kompilator cljs
> zrozumiały
Serio, pick one.Bawiłem się tym próbując dodać bardziej rozbudowany preprocessing modułów
Straszne doświadczenie
w pixie masz jeszcze pypy pod maska i tam jest juz w ogole totalny mindfsck
Kod już trochę zbitrotował, ale żeby to działało sensownie musiałem rozbić kawałki kompilatora na namespace'y - https://github.com/jaen/clojurescript/commit/46d7fc2e068e139c5ba15dcdbdfe961d21ca6cd7
To było totalnie nietrywialne
bo czesc runtimu jest w pythonie, czesc jest w rpythonie, czesc jest w pixie
Nie mam pojęcia dlaczego Hickey i Nolen piszą taki monolityczny kod : V
pozniej sam kompilator tak na prawde kompiluje do jakiegos kodu posredniego
do ktorego jest interpreter w rpythonie
i pozniej to wchodzi w pypy, ktory robi z tego jutujacy kompilator
jitujacy*
poprzez konwersje rpythona na jakis traceable stuff
nie wiem, mi sie wydaje, ze hickey ma podejscie troche w stylu “zrobie zeby dzialalo”
i pozniej niech inni szlifuja
No ogólną zasadę RPythona ogarniam
Ale jak kiedyś widziałem przykłady
To wydawało się dość skomplikowane w praktyce
jak sie pisze w tym to trudno spamietac gdzie jestes
Nom, trochę ma takie Hickey chyba; tylko problem jest taki że nikt tego nie szlifuje momentami
I potem masz takie kwiatki jak absolutnie okropne UX błędów ; d
No bo po co poprawiać co działa
ja mam podobne podejscie
I zwykle zaawansowanegmu programiście to nie przeszkadza ; d
bo jestem leniwy
zwykle jak uknuje jakis solidny koncept to doprowadzam go do jako takiego dzialania
a jakies nudziarstwo typu obsluge bledow i bugi to juz moglby ktos inny za mnei zrobic
bo robota jest skonczona
nie ma wiecej myslenia
😐
Coś w tym jest
Ale z drugiej strony porównaj sobie ClojureScript i Elma w tej kwestii : V
A Nolen też ma dość… charakterystyczne podejście do rzeczy
Głównie dlatego nie dociągnąłem tego motywu z modułami, bo mi się nie chciało z nim użerać
Jakoś mi działa na nerwy
nolen?
mhm
good guy nolen?
No to może ze mną jest coś nie tak ; d
Ale jest dla mnie drażniąco szorstki jakoś tak. YMMV oczywiście.
ja sie zawsze zastanawiam skad ci ludzie biora czas
np taki ztellman
ten koles produkuje milion łebskich libów
No, ztellman musi być niezłym mózgiem
Z resztą Nolen też jest, po prostu charakterem mi trochę nie odpowiada ; d
ale om.next jest smiertelny
W jakim sensie "śmiertelny"? ; d
skutkuje naglym zgonem
w przypadku uzycia
Mówisz?
Om.prev w porównaniu z regentem uważam za przekombinowany
Ale akura IMO om.next koncepcyjnie jest bardzo dobrze przemyślany
Relay, Falcor i te sprawy to IMO właściwy kierunek rozwoju SPA
Ba, piszę inżynierkę o tym właśnie i generalnie zgadzam się z tym kierunkiem rozwoju.
Ale pisząc swoje rozwiązanie nie miałem czasu bawić się om.next
Jest całkiem możliwe że choć koncepcyjnie jest IMO dobry
W praktyce jest letalny w użyciu
Om.next jak om.next, ale generalnie - http://tonsky.me/blog/the-web-after-tomorrow/
tak, dokladnie
ciekawe jaka bedzie odpowiedz PHP
Na pewno zjebana : V
Pehap powstał do tworzenia MPA a nie SPA i im bardziej próbuje się go wcisnąć w tą rolę, tym bardziej to się mija z celem
Już ot choćby sama koncepcja CGI jest w takim wypadku złym pomysłem
Serwer obsługujący taką bardziej skomplikowaną aplikację powinien być w stanie być long lived ot choćby po to żeby móc powiadamiać klienta przez websockety o zmianach
To raczej trudno zrobić jak jesteś krótkożyjącym procesem odpowiadającym na jedno zapytanie
Choć nie wiem, może pehapowcy mają swojego node'a?
Nie śledzę ich za uważnie
nie wiem
ale kiedys probowalem jednemu wytlumaczyc, ze apliakcja powinna jakby posiadac swoj serwer http w sobie
i mu sie styki popalily
No właśnie
A w kierunku w którym zmierza internet, to raczej się od tego nie ucieknie : V
no ale przeciez apache i memcached!
No ale to już jest ich wina jak nie umieją zrozumieć, że w przypadku SPA które musi działać offline i synchronizować się pomiędzy różnymi urządzeniami to REST i CGI to jedne z gorszych pomysłów : V
hm hm
znacie jakis thread safe sposob na szybkie unique id?
np cos w stylu
Ale w sensie mądrzejszy niż to poniżej?
(def counter (atom 0))
(defn get-id! []
(swap! counter inc))
myslalem, ze jakis madrzejszy jest 😄
No ale to działa; zmiany atomu są serializowane, bo to pod spodem jest to - https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html
no
wiem
No to ja bym chyba bardziej nie kombinował
A w razie czego jak na cos wpadniesz później to możesz po prostu podmienić implementację funkcji
Bo takie id i tak powinno być opaque
zgeneralizowalem to xD
To już totalnie mogłeś sparametryzować to żeby można było podać next-id-fn
czy coś ; d
No ale generalnie
Działa? Działa.
Nie trzeba było pisać dziesiątek linii muteksów xD
w sumie
jeszcze z 5 linijek i bedzie z tego vector clock
Vector clock? No to widzę już idziemy w jakieś poważne zastosowania : D
jeszcze 5k loc i bedzie riak
Riak brzmi ciekawie generalnie, ale jako że płatny to nigdy bliżej mu się nie przyglądałem
Przynajmniej był, teraz chyba jakoś inaczej jest
kiedys spotkalem z ludzi z basho i mi powiedzieli zebym przyszedl sie zatrudnic 😄
ale nie skorzystalem ;f
enterprise support jest płatny, z replikacją multi-dc
cluster można stawiać śmiało za darmo
Teraz tak, ale wydaje mi się że kiedyś tak nie było, był całkiem płatny
Ale może źle pamiętam
ale produkt chyba raczej umiera
chyba źle, od początku był na githubie
chociaż to w sumie nic nie znaczy
więc się nie mądruję
basho zostało dosyć mocno przeczesane odkąd pojawił się ten aktualny ceo
chyba nic już dobrego z tego nie będzie
Szkoda, bo z tego kojarzę o riaku wydawał się dosć ciekawą bazą
bardzo, i naprawdę nieźle działającą
ja dostalem licencje na datomica
i @karol tez dostal
musimy sie w koncu za to zabrac
wypadaloby 😛
teraz sprzedają jakiegoś kota w worku, próbują zrobić enterprise-bundle, który robi wszystko i nic do spółki ze sparkiem, redisem i SOLR-em, poza tym bzdury o data gravity i nie wiadomo co
na samego riaka ciężko było realny use case znaleźć, teraz to już w ogóle 😉
a, riak jest napisany w erlangu nie?
tak
Datomic jest dziwny
Niby spoko
Ale brak sortowania i limitowania zapytań mnie dziwi bardzo
no bo one sie dzieja lokalnie
idea jest chyba taka zebys sam sobie posortowal jak juz wypadnie
albo lepiej, puscil przez jakis transducer
Znaczy tak, zdaje sobie z tego sprawę, że to się dzieje lokalnie, ale to nadal jest weird, że jak masz zapytanie które spełniają tysiące obiektów, a potrzebujesz tylko 10
To nadal ściągasz cały tysiąc bo te zapytania nie są leniwe
rich by powiedzial, ze pamiec jest tania i ogolnie twoj peer powinien stac zaraz obok bazy wiec nie ma problemu ;d
Mam wrażenie że w Clojure "ale to przecież nie jest problem" jest dość częstą odpowiedzią : D
no i dobrze
dziala? dziala
😄
Ale gdzie mój dowód na 40 stron A4!
dowod jest na koncie bankowym ;d
Chyba jestem za mało pragmatyczny w takich kwestiach : D