This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-03-02
Channels
- # admin-announcements (9)
- # alda (21)
- # announcements (1)
- # beginners (68)
- # boot (241)
- # braid-chat (18)
- # cider (32)
- # cljs-dev (4)
- # cljsrn (11)
- # clojure (60)
- # clojure-dusseldorf (1)
- # clojure-germany (1)
- # clojure-poland (212)
- # clojure-russia (64)
- # clojure-sg (10)
- # clojurescript (212)
- # core-async (1)
- # css (14)
- # datomic (1)
- # emacs (9)
- # funcool (2)
- # hoplon (18)
- # jobs (1)
- # ldnclj (1)
- # lein-figwheel (5)
- # leiningen (3)
- # om (190)
- # onyx (46)
- # parinfer (13)
- # proton (3)
- # re-frame (7)
- # reagent (10)
- # ring-swagger (2)
- # slack-help (3)
- # specter (1)
- # yada (31)
Tak patrzę i trochę scary shit ; d Po co w ogóle Ci te pola poza data potrzebne? Czemuś co je persistuje?
Bo tak w sumie, niby to działa, ale nie prościej było po prostu użyć mapy i te "sekretne" klucze zanamespace'ować żeby nie było kolizji i "nazwać to dniem"? ; d
ale @nooga pewnie robi to z tego samego powodu dlaczego pies liże się po jajkach - bo może
W sensie, po prostu {:dont-touch-this/id :dont-touch-this/stuff :dont-touch-this/flags :jakis "inny klucz" :z-tego "data"}
Tylko oczywiście zamiast dont-touch-this
coś mądrzejszego, typu project-name.internal
czy coś.
ja chce miec implementacje mapy, ktora przy okazji notuje sobie, ktore klucze byly dotykane
Czytałem co pisałeś, może jestem ślepy, ale to co teraz powiedziałeś to jakoś z tego nie wynikało, chyba.
Jeżeli tak przedstawiasz problem, no to chyba to ma sens, bo inna alternatywa to napisanie funkcji operujących na mapie w sposób, w jaki chcesz
Ale mówiłeś że Ci zależy na korzystaniu z tych wszystkich update-in
i innych wbudowanych rzeczy łatwo
no mea culpa, moze zle wyjasnilem co chcialem miec bo sam do konca nie mialem tego wykrystalizowanego
https://github.com/hoplon/castra oraz https://github.com/sunng87/slacker mi przychodzą na myśl
Co prawda pisanie każdego sieciowego API się sprowadza w zasadzie do implementacji jakiegoś synchronicznego lub asynchronicznego (jak kto woli) RPC, ale czy skorzystanie z gotowego liba w takim wypadku rozwiązuje automagicznie wszystkie problemy?
@jedi w javie nazywa się to RMI (https://docs.oracle.com/javase/tutorial/rmi/)
wiem jak to się nazywa w javie , nawet napisałem swoje (też w javie 😉 ) https://github.com/adamsmo/protobuff-rpc
@jaen: mi sie RPC kojarzy wlasnie z czyms takim, ze partie dziela sie klasami i wywolania RPC maja niby wygladac jak normalne wywolanie dla usera
@jedi: mysle, ze daloby sie z clojure uzywac jakiegos javowego pewnie ale wygladaloby to nieprzystojnie
No w wykonaniu Javowym to na pewno tak wygląda, ale sam termin RPC czegoś takiego chyba nie implikuje.
W każdym razie udawanie, że to jest lokalna funkcja w 100% to zły pomysł, bo nie da się ukryć tego, że sieć jest asynchroniczna mimo wszystko, ale jakieś RPC zwracające promises nie wydają mi się brzmieć aż tak tragicznie
No i też się zgadzam, że korzystanie z jakiegoś Javowego RPC w Clojure by było okropne; trzeba by było zacząć AOTować, sadzić :gen-class
i w ogóle pełen smuteg.
Po tcp to też nie jakiś kosmos byłby, musiałbyś tylko więcej trochę kodu napisać do obsługi protokołu i tyle.
A nie, źle pamiętałem, tu jest tylko porównanie z tym formatem serializacji od Datomica - https://github.com/ptaoussanis/nippy#performance
serwer: (def plus +) (rpc-server 1984 ['plus])
klient: (def t (rpc-client "127.0.0.1” 1984)) (declrpc plus [a b]) (plus t 1 2) ;; => 3
tylko ze nie ma tutaj ogarniania, ktory wynik jest do czego wiec trzeba wywolywac po kolei
@jedi: jak to dla ciebie wyglada? np. w porownaniu z pisaniem prostego liba RPC w javie czy tam scali?
no bo taka prawda. po kobylach javowych czlowiek czasami sie dziwnie czuje jak pisze w kilkadziesiat linijek serwer ktory robi co ma robic i robi to dobrze 😛
czy aleph używa do komunikacji NIO (non blocking/new IO)? czy nippy rzuci wyjątkiem gdy będzie deserializował coś co będzie podobne do requesta (request z innej wersji api)?
no nie, nippy rzuci jak bedzie mial malformed data, jego nie obchodiz zawartosc, musialbys sobie dopisac walidacje w call-remote
i execute-call
to troche jest „oszukiwanie” bo to co pisałem bezpośrednio korzystało z kanałów w nettym, dodatkowo google protocol buffers jest w stanie łyknąć request z kolejnej wersji api i zdeserializować go tak żeby stara wersja go przyjęła (przydaje się przy deployowaniu, jak cześć maszyn chodzi jeszcze ze starym api)
pytanie czy to wszytsko jest potrzebne jesli mozesz sobie po prostu wywolywac whitelistowane funkcje w zdalnym procesie i nie musisz w ogole deklarowac jakie one maja parametry (najwyzej dostaniesz wyjatkiem od serwera)
@annapawlicka: cześć, mialabys moze mozliwosc usuniecia tego outputu clojurebota z kanalu?
usuniete
http://33.media.tumblr.com/7c697dd8d1e0fb7b099058168eaa703a/tumblr_inline_n0i4hgyrm11s6w77p.jpg
Jak bysmy zrobili clojure.pl to powinno tez przeciagac nazwy projektow z clojars przez google translate i by sie np :potrzebuj biblioteke AppEngine - lokalna -runtime - wspólne