clojure-poland

jaen 2016-03-02T08:11:44.000264Z

Tak patrzę i trochę scary shit ; d Po co w ogóle Ci te pola poza data potrzebne? Czemuś co je persistuje?

jaen 2016-03-02T08:12:17.000265Z

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

mostr 2016-03-02T09:08:12.000266Z

o, kolejny rozsądny głos

mostr 2016-03-02T09:08:35.000267Z

ale @nooga pewnie robi to z tego samego powodu dlaczego pies liże się po jajkach - bo może :simple_smile:

jan.zy 2016-03-02T09:27:25.000268Z

lol proste

2016-03-02T09:29:59.000269Z

@jaen: mozesz podac przyklad?

jaen 2016-03-02T09:31:34.000271Z

W sensie, po prostu {:dont-touch-this/id :dont-touch-this/stuff :dont-touch-this/flags :jakis "inny klucz" :z-tego "data"}

jaen 2016-03-02T09:32:01.000272Z

Tylko oczywiście zamiast dont-touch-this coś mądrzejszego, typu project-name.internal czy coś.

jaen 2016-03-02T09:32:20.000273Z

@nooga: ^

2016-03-02T09:32:28.000274Z

no ale

2016-03-02T09:32:31.000275Z

czytales example?

2016-03-02T09:32:49.000276Z

ja chce miec implementacje mapy, ktora przy okazji notuje sobie, ktore klucze byly dotykane

2016-03-02T09:32:57.000277Z

wiec napisalem taka implementacje oparta o zwykla mape

2016-03-02T09:33:06.000278Z

moze tak przedstawie problem 😄

2016-03-02T09:33:17.000279Z

nie chodzi mi o to zeby ukryc te pola rekordu

2016-03-02T09:33:40.000280Z

tylko zeby zrobic zeby moj rekord wygladal jak mapa i robil automagicznie accounting

jaen 2016-03-02T09:33:45.000281Z

Czytałem co pisałeś, może jestem ślepy, ale to co teraz powiedziałeś to jakoś z tego nie wynikało, chyba.

2016-03-02T09:34:05.000283Z

komentarz na dole

jaen 2016-03-02T09:34:42.000284Z

No dobra, to ja po prostu nie domyśliłem się, że o to chodzi : V

jaen 2016-03-02T09:34:56.000285Z

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

jaen 2016-03-02T09:35:11.000286Z

Ale mówiłeś że Ci zależy na korzystaniu z tych wszystkich update-in i innych wbudowanych rzeczy łatwo

2016-03-02T09:35:13.000287Z

no wlasnie

jaen 2016-03-02T09:35:22.000288Z

Więc, no chyba trzeba tak.

2016-03-02T10:20:43.000289Z

no a mnie tu od czci odżegnują

2016-03-02T10:20:44.000290Z

;d

mostr 2016-03-02T10:24:26.000291Z

ej, zaraz - ja też inaczej zrozumiałem 😕

mostr 2016-03-02T10:25:12.000292Z

ale w sumie jestem clj-noobem więc i tak wiele bym nie pomógł :simple_smile:

2016-03-02T10:28:25.000293Z

no mea culpa, moze zle wyjasnilem co chcialem miec bo sam do konca nie mialem tego wykrystalizowanego

2016-03-02T10:28:35.000294Z

zanim nie wpadlem na ten example z journalem

2016-03-02T10:36:19.000295Z

swoja droga nigdy nie widzialem valAt, containsKey, without i entryAt in the wild

2016-03-02T10:36:44.000296Z

widocznie corowe funkcje z tego korzystają

jan.zy 2016-03-02T11:00:20.000298Z

SIEMA SMOLAREK

jan.zy 2016-03-02T11:00:21.000299Z

CO TAM

2016-03-02T11:07:56.000300Z

dobsz ZINIEWICZ

2016-03-02T11:09:07.000301Z

ucze się clojure, co tam u CIEBIE

2016-03-02T11:16:16.000302Z

o cześć adam

2016-03-02T11:18:42.000303Z

cześć tomek

2016-03-02T11:29:01.000306Z

co tu sie

2016-03-02T11:29:35.000307Z

nie wiem, myślałem że to taka tradycja

2016-03-02T11:31:56.000308Z

ano w sumie, mozna z etgo zrobic tradycje

jaen 2016-03-02T13:01:01.000309Z

paczę na kanał a tu jakiś kotek; moja pierwsza reackja to

jaen 2016-03-02T13:01:23.000311Z

P ;

jaen 2016-03-02T13:01:34.000312Z

Ale widzę że to tylko nowi ludzie; nowi ludzie zawsze na propsie

2016-03-02T13:06:53.000313Z

zobaczymy jak sie beda odzywac 😄

2016-03-02T13:07:01.000314Z

wszyscy tylko lurkuja

2016-03-02T13:10:32.000316Z

jest jakieś rpc do clojure?

jaen 2016-03-02T13:14:02.000317Z

Coś by się znalazło, ale klienta CORBA to raczej nie uświadczysz ; d

jaen 2016-03-02T13:15:41.000318Z

https://github.com/hoplon/castra oraz https://github.com/sunng87/slacker mi przychodzą na myśl

2016-03-02T13:24:34.000322Z

ale po co

jaen 2016-03-02T13:34:23.000323Z

A to też jest dobre pytanie.

jaen 2016-03-02T13:37:04.000324Z

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?

2016-03-02T13:44:31.000325Z

ja tam chyba niedluge bede po prostu owijal rzeczy w channele z ew. translacja

2016-03-02T13:47:13.000326Z

system as a smalltalk

jaen 2016-03-02T13:49:11.000327Z

back to the seventies P ;

jaen 2016-03-02T13:49:29.000328Z

Aczkolwiek — to nadal jest jakaś forma RPC

jaen 2016-03-02T13:49:59.000329Z

Tylko na tyle prosto jest to zwykle zrobić, że średnio do tego potrzeba aż całego liba.

pwojnowski 2016-03-02T13:51:06.000330Z

@jedi w javie nazywa się to RMI (https://docs.oracle.com/javase/tutorial/rmi/)

2016-03-02T13:52:26.000332Z

wiem jak to się nazywa w javie :simple_smile:, nawet napisałem swoje (też w javie 😉 ) https://github.com/adamsmo/protobuff-rpc

2016-03-02T13:52:53.000334Z

RMI jest trochę uciążliwe w używaniu

2016-03-02T14:38:24.000336Z

@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

2016-03-02T14:39:07.000337Z

@jedi: mysle, ze daloby sie z clojure uzywac jakiegos javowego pewnie ale wygladaloby to nieprzystojnie

jaen 2016-03-02T14:40:04.000338Z

No w wykonaniu Javowym to na pewno tak wygląda, ale sam termin RPC czegoś takiego chyba nie implikuje.

jaen 2016-03-02T14:40:15.000339Z

Przykładowo aktorzy Erlangowi to RPC też, a wygląda sensowniej ; d

jaen 2016-03-02T14:41:33.000340Z

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

jaen 2016-03-02T14:41:52.000341Z

Ale nie wykorzystywałem czegoś takie praktyce więc może są też inne minusy tego

jaen 2016-03-02T14:42:24.000342Z

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.

2016-03-02T14:42:38.000343Z

ale na poziomie f-cji

2016-03-02T14:42:40.000344Z

hm

2016-03-02T14:42:49.000345Z

tzn zeby wywolywac funkcje gdzies z daleka

2016-03-02T14:43:01.000347Z

np przez http

2016-03-02T14:43:11.000348Z

to pewnie wystarczylyby 2 makra ;d

2016-03-02T14:46:25.000349Z

ale żeby wołać nie po http ale np. po tcp

jaen 2016-03-02T14:47:03.000350Z

Po tcp to też nie jakiś kosmos byłby, musiałbyś tylko więcej trochę kodu napisać do obsługi protokołu i tyle.

jaen 2016-03-02T14:47:18.000351Z

I serializować dane jakoś binarnie (nippy, transit do msgpacka).

2016-03-02T14:47:40.000353Z

nie no

2016-03-02T14:47:44.000354Z

aleph

👌 2
2016-03-02T14:47:56.000355Z

czekajcie ja wam tu zaraz napisze rpc

jaen 2016-03-02T14:48:14.000356Z

No tak, aleph ma klienta/serwera dla tpc, racja ; d

jaen 2016-03-02T14:48:46.000358Z

To w sumie rzeczywiście mogłoby sie zamknąć w kilkudziesięciu liniach xD

2016-03-02T14:51:14.000359Z

transit/msgpack do tego

jaen 2016-03-02T14:52:42.000360Z

Nom, aczkolwiek nippy chyba szybszy jest

jaen 2016-03-02T14:53:53.000361Z

A nie, źle pamiętałem, tu jest tylko porównanie z tym formatem serializacji od Datomica - https://github.com/ptaoussanis/nippy#performance

2016-03-02T15:51:08.000365Z

tak na brudno ;d

2016-03-02T15:53:00.000366Z

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

2016-03-02T15:54:28.000367Z

tylko ze nie ma tutaj ogarniania, ktory wynik jest do czego wiec trzeba wywolywac po kolei

2016-03-02T15:54:33.000368Z

no i thread unsafe ;f

2016-03-02T15:54:52.000369Z

no i da sie na pewno zrobic kuku serwerowi

2016-03-02T15:55:08.000370Z

ale powiedzmy ze kolejne 30 linijek i powinno byc juz top notch

2016-03-02T15:55:16.000371Z

i na githuba z tym

jaen 2016-03-02T15:58:57.000375Z

TFW lisp xD

2016-03-02T15:59:15.000376Z

dokladnie ;d

2016-03-02T16:00:04.000377Z

w sumie kurde, nie wiem

2016-03-02T16:00:16.000378Z

skompiluje to pozniej i dopisze to o czym pisalem

2016-03-02T16:00:23.000379Z

i dam na gh, a co

2016-03-02T16:00:36.000380Z

jeszcze ktos tego uzyje w powaznym projekcie

2016-03-02T16:00:42.000381Z

i wtedy bede sie smial

2016-03-02T16:06:51.000382Z

chociaz w sumie

2016-03-02T16:07:11.000383Z

@jedi: jak to dla ciebie wyglada? np. w porownaniu z pisaniem prostego liba RPC w javie czy tam scali?

2016-03-02T16:07:17.000384Z

jest zwięźlej?

2016-03-02T16:07:50.000385Z

w porównaniu z javą jest dużo lepiej, w scali nie pisałem (libów do rpc)

2016-03-02T16:08:15.000387Z

@karol juz pisal kiedys tutaj, ze czasem to czlowiek sie czuje jakby oszukiwal

2016-03-02T16:09:33.000388Z

nie wiem do końca co robi aleph, więc nie mam pełnego porównania

2016-03-02T16:09:35.000389Z

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 😛

2016-03-02T16:10:08.000391Z

aleph zapewnia ci sockety tcp

2016-03-02T16:10:18.000392Z

websockety i low level http

2016-03-02T16:10:35.000393Z

nippy serializuje/deserializuje w takim binarnym formacie

2016-03-02T16:11:50.000394Z

najbardziej niszczy to: (s/connect (s/map #(execute-call fns %) s) s))

2016-03-02T16:12:08.000395Z

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)?

2016-03-02T16:13:28.000397Z

no nie, nippy rzuci jak bedzie mial malformed data, jego nie obchodiz zawartosc, musialbys sobie dopisac walidacje w call-remote i execute-call

2016-03-02T16:13:34.000398Z

ale my tu anwet nei rozmawiamy o api

2016-03-02T16:13:44.000399Z

ten snippet daje ci mozliwosc wykonywania funkcji zdalnie

2016-03-02T16:13:55.000400Z

imozesz zadeklarowac, ktore to maja byc

2016-03-02T16:14:30.000401Z

wiec twoje api wyglada tak: (rpc-server 10001 ['costam 'costam1 'costam2])

2016-03-02T16:14:46.000402Z

i klient jesli zrobi (declrpc costam…)

2016-03-02T16:15:07.000403Z

to moze uzywac sobie w kodzie np. (costam1 client 1 2 3 4 blah)

2016-03-02T16:15:23.000404Z

i serwer powinien to zrobic i przyslac to co wyszlo

jaen 2016-03-02T16:15:34.000405Z

@jedi: stoi na netty IIRC

2016-03-02T16:15:39.000406Z

albo przysalc exception ze swojej strony, wtedy costam1 rzuci

2016-03-02T16:15:46.000407Z

tak, aleph stoi na netty

2016-03-02T16:18:34.000408Z

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)

2016-03-02T16:19:25.000409Z

mm no tak

2016-03-02T16:20:32.000410Z

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)

2016-03-02T16:20:55.000411Z

może nie ma znaczenia

2016-03-02T16:21:35.000412Z

wiadomo, ze jakies publiczne api by tak nei wygladalo

2016-03-02T16:21:49.000413Z

albo mialoby dookola milion walidacji i schemy

2016-03-02T16:22:25.000414Z

ale raczej nie, bo tam jest eval w srodku

2016-03-02T16:22:31.000415Z

;d

2016-03-02T16:32:45.000418Z

ooo

2016-03-02T16:32:52.000419Z

to tutaj sie tak da

2016-03-02T16:49:07.000421Z

@karol nie spamuj ;d

2016-03-02T16:49:31.000422Z

po za tym (dotimes [i 100] …)

2016-03-02T16:50:02.000423Z

wiem ale chcialem cos sprawdzic i pamietalem ze doseq na 100% pozwala na side effecty

2016-03-02T16:52:19.000424Z

no i jest repeatedly ale nigdy nie pamietam jak sie pisze

2016-03-02T16:52:39.000425Z

powinienem zostac na uczelni i wszystko spolszczac

jaen 2016-03-02T17:07:46.000426Z

(w-kółko 0 zwiększ)

jaen 2016-03-02T17:07:48.000427Z

Brzmi dobrze

jaen 2016-03-02T17:10:43.000428Z

@nooga: bo nie dałeś importów, to s to co, manifold?

2016-03-02T17:14:05.000429Z

manifold.stream

2016-03-02T17:14:10.000430Z

nie dalem bo tego nie kompilowalem

2016-03-02T17:14:13.000431Z

;d

2016-03-02T17:14:19.000432Z

tzn napsialem tutaj w snippecie

2016-03-02T17:14:25.000433Z

ale mysle, ze powinno ruszac

2016-03-02T17:16:14.000434Z

@annapawlicka: cześć, mialabys moze mozliwosc usuniecia tego outputu clojurebota z kanalu?

jaen 2016-03-02T17:16:30.000435Z

Że tak powiem, brzmi działalnie

annapawlicka 2016-03-02T17:17:13.000437Z

usuniete

2016-03-02T17:18:26.000438Z

dzieki

2016-03-02T17:18:44.000439Z

@jaen: jak ci sie chce to zapakuj to w projekt i sie podziel 😄

jaen 2016-03-02T17:21:17.000440Z

Hehehe, może po piątku, trzeba wykuć głupie pytania na obronę : V

2016-03-02T17:22:32.000441Z

> (w-kółko 0 zwiększ)

2016-03-02T17:22:43.000442Z

mozna zrobic clojure.core.pl

jaen 2016-03-02T17:23:39.000443Z

To jak ten chiński Python? xD

2016-03-02T17:23:45.000444Z

a nie widzialem 😄

jaen 2016-03-02T17:23:50.000445Z

I widziałem gdzieś też Clojure w hindi chyba.

jaen 2016-03-02T17:24:06.000448Z

NI HAO

2016-03-02T17:24:09.000449Z

compat milion

2016-03-02T18:05:14.000450Z

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

jaen 2016-03-02T18:07:50.000451Z

PPT

jaen 2016-03-02T18:07:56.000452Z

(tak, to tłumaczenie STM)

jaen 2016-03-02T18:18:52.000453Z

PS uwielbiam potrzebuj, typowo angielskie czasownikowanie rzeczowników w polskim <3

2016-03-02T18:26:11.000454Z

wymagaj

jaen 2016-03-02T18:26:49.000455Z

To już nie tak śmieszne : D

2016-03-02T18:27:38.000456Z

(pozwól [x 10] ...)

2016-03-02T18:27:41.000457Z

xD

2016-03-02T18:28:23.000458Z

wykonaj wykonaj-sekw wykonaj-wiele-razy wykonaj-wszystkie

2016-03-02T18:29:55.000459Z

nie wiem czemu

2016-03-02T18:30:04.000460Z

niby te slowa maja bardzo bliskie znaczenie

2016-03-02T18:30:08.000461Z

ale jak sie to napisze po polsku

2016-03-02T18:30:15.000462Z

to jakos tak okropnie wyglada

2016-03-02T18:30:31.000463Z

zaraz czuc zapach politechnicznego korytarza i starego papieru

jaen 2016-03-02T18:30:35.000464Z

xD

jaen 2016-03-02T18:30:46.000465Z

pozwól to już trochę trollowanie jest, ale zabawne

jaen 2016-03-02T18:30:54.000466Z

bo to raczej swojskie, matematycznie niech

2016-03-02T18:30:57.000467Z

no no

2016-03-02T18:31:03.000468Z

specjalnie napisałem pozwól

2016-03-02T18:31:05.000469Z

;d

2016-03-02T18:31:14.000470Z

albo

jaen 2016-03-02T18:31:14.000471Z

Założyłę ; d

2016-03-02T18:31:17.000472Z

po ślunsku

jaen 2016-03-02T18:31:59.000473Z

oż jerunie

2016-03-02T18:36:32.000474Z

ech, w gwarze nie ma takich abstrakcyjnych słów

2016-03-02T18:37:11.000475Z

future - leda-kiedy

2016-03-02T18:37:23.000476Z

if - jeliby

😂 1
jaen 2016-03-02T18:39:18.000477Z

Szkoda, że nie ma gdzieś where, kaj by było idealne xD

2016-03-02T18:39:26.000478Z

constantly - sztyjc

jaen 2016-03-02T18:40:04.000479Z

Przydałby się tu prawdziwy ślązok, ja tu tylko mieszkam xD

jaen 2016-03-02T18:40:09.000480Z

Chociaż Tobie chyba nieźle idzie xD

2016-03-02T18:40:32.000481Z

bo mam słownik 😄

2016-03-02T18:41:10.000482Z

chociaż w poznaniu też jest trochę gwary, a ja wielkopolanin to jakoś tak mi naturalnie przychodzi

2016-03-02T18:41:45.000483Z

dissoc - na-gemele

jaen 2016-03-02T18:44:25.000484Z

Co xD

jaen 2016-03-02T18:45:23.000485Z

Ja to chyba najbardziej ciekaw jestem Świętej Trójcy map / filter / fold : D

2016-03-02T18:48:14.000486Z

przekabać, cedzitko, łozginaj

2016-03-02T18:48:26.000487Z

xD

2016-03-02T18:53:01.000488Z

nil - psinco

jaen 2016-03-02T18:58:27.000489Z

psinco

jaen 2016-03-02T18:58:28.000490Z

okt

jaen 2016-03-02T18:58:32.000491Z

to jest wygryw tego wątku

jaen 2016-03-02T18:58:36.000492Z

już lepszego nie będzie xD

szymon_k 2016-03-02T19:35:36.000493Z

😄 😄 😄

szymon_k 2016-03-02T19:35:39.000494Z

popłakałem się

2016-03-02T19:43:28.000495Z

@szymon_k: moze ty masz jakies pomysly ;d

szymon_k 2016-03-02T19:43:36.000496Z

dopóty?

2016-03-02T19:43:40.000497Z

😄

2016-03-02T19:43:52.000498Z

wtenczas

2016-03-02T20:03:54.000499Z

azaliż

2016-03-02T20:39:37.000501Z

ld

2016-03-02T20:39:39.000502Z

;d

2016-03-02T20:42:04.000503Z

jakbym mial tak pisac to wyrzuciłbym komputer i został pasterzem

jaen 2016-03-02T21:05:48.000504Z

DO SZOPY HEJ PASTERZE