This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2018-12-19
Channels
- # adventofcode (44)
- # announcements (2)
- # aws (9)
- # beginners (166)
- # braveandtrue (16)
- # calva (170)
- # cider (14)
- # cljdoc (9)
- # cljs-dev (4)
- # cljsrn (1)
- # clojars (1)
- # clojure (150)
- # clojure-dev (15)
- # clojure-europe (4)
- # clojure-india (3)
- # clojure-italy (93)
- # clojure-nl (18)
- # clojure-serbia (1)
- # clojure-spec (5)
- # clojure-uk (45)
- # clojurescript (54)
- # cursive (19)
- # data-science (8)
- # datomic (83)
- # emacs (6)
- # events (1)
- # hoplon (3)
- # hyperfiddle (3)
- # jobs (6)
- # jobs-discuss (1)
- # klipse (1)
- # lein-figwheel (6)
- # leiningen (15)
- # lumo (1)
- # nrepl (1)
- # pedestal (15)
- # re-frame (48)
- # reagent (4)
- # reitit (2)
- # remote-jobs (1)
- # rum (2)
- # shadow-cljs (111)
- # spacemacs (10)
- # sql (16)
- # testing (10)
- # tools-deps (5)
giornazzo
tornando al discorso uptime, ho alcuni REPL aperti da mesi… ci vorrebbe clojure.repl/uptime
🙂
purtroppo mi tocca di usare un mac per lavoro
che questa settimana e' crashato tre volte
tutto il sistema non tmux o altro 😢
quindi niente record qui
ce l’avevo prima quando, per varie ragioni, mi attaccavo/staccavo da display esterni di frequente.
cambiando totalmente discorso… 2019 e’ l’anno in cui sottomettero’ un paper per l’italian agile day
tmux che crasha mi è nuova...
user> (keys (array-map :id 1 :b 2))
(:b :id)
user> (keys (array-map :id 1 :b 2))
(:id :b)
la prima volta ha sputato (:b :id)
tutte le successive (:id :b)
abbiamo solo due test rotti cambiando a clojure 1.10 e sono relativi a quello
ma non sono sicuro se sia un bug o qualcosa su cui non si poteva fare affidamento in generale
λ: clj -A1.9
Clojure 1.9.0
user=> (keys (array-map :id 1 :b 2))
(:id :b)
λ: clj
Clojure 1.10.0
user=> (keys (array-map :id 1 :b 2))
(:id :b)
eh ma non e' deterministico almeno su 1.10
Puoi postare esempio minimale che dimostra il problema? Dubito che 1.10 vs 1.9 sia causa diretta
quei due test non erano mai falliti prima e in questo branch ho cambiato solo quello
quello che puo` succedere e` che l'ordine delle chiavi venga cambiato se quell'array-map diventa un hash-map
ci sono parecchi references a array-map nel changelog
quindi sicuro hanno cambiato qualcosa
e provo a fare un esempio minimale adesso
AFAICT gli unici ticket riguardanti sono https://dev.clojure.org/jira/browse/CLJ-1587 e https://dev.clojure.org/jira/browse/CLJ-1295
no sono tutte array-map
ma vabbeh ci do' un altra occhiata
beh, ottenere un ordine diverso usando solamente (array-map ..)
e` impossibile per costruzione
questo l'ho visto non l'ho sognato 😄
ma e' successo una volta sola
e ancora non riesco a riprodurlo
Una sorta di heisenbug
@andrea.crotti il motivo per cui ti dico che e` impossibile che tu stia vedendo quel che pensi, e` che l'implementazione di array-map funziona cosi`:
- gli argomenti sono salvati in una vararg seq, che e` ordinata
- viene estratto l'internal array di questa seq, che rimane ordinato
- viene invocato clojure.lang.PAM/createAsIfByAssoc sull'array, che semplicemente traversa l'array linearmente per eliminare duplicati
- l'array senza duplicati viene passato al costruttore di clojure.lang.PAM che lo salva as-is, quindi rimane ordinato
Quando invochi keys
, l'array-map viene seq
ato , e l'implementazione di seq
di PAM semplicemente riusa lo stesso array, che rimane ancora ordinato, e wrappa la Seq in una KeySeq che traversa linearmente questa seq estraendo le chiavi, che rimangono ordinate
niente di tutto questo e` stato cambiato in 1.10, gli unici cambiamenti hanno a che fare con :
- la quantita` di elementi necessary perche` il reader passi da PAM a PHM quando legge un literal (quindi non ti tocca in questo caso)
- performance di dissoc
, che non ti tocca
ti credo @bronsa ma credo anche ai miei occhi, due volte ho visto keys
(nel repl) tornare un ordine diverso adesso
e i test falliscono sempre, ora sto cercando di vedere se ci sono altre operazioni fatte su quell hash map e per ora non sembra
in piu' il fatto che questi test sono passati per mesi e ora falliscono sempre mi fanno pensare che qualcosa e' cambiato, anche se magari non e' un bug ma semplicemente un assunzione sbagliata
giusto per capire, stai vedendo letteralmente un' array-map
con solo :id
e :b
cambiare ordinamento?
si una volta sola e' succseso pero
e un altra volta con un array-map piu' grosso (quello dal codice di prod)
con cider ho fatto direttamente (keys grosso-array-map)
ed ha tornato un ordine diverso
anche quello una volta e basta sono riuscito a riprodurlo
e entrambe queste sono costruite letteralmente con (array-map el1 el2 ..)
, non con (apply array-map ..)
o literal vari?
si solo array-map
anche rileggendo l'implementazione non vedo come sia possibile, curioso di vedere un repro :)
boh vabbeh appena riesco a riprodurlo faccio un fischio
assicurati di star usando clojure.core/array-map
e non robe strane (tipo instrumented array-map
)
e` possibile che se stai usando qualche libreria con specs per clojure.core
, ti stia conform
/`unconform` ando gli argomenti usando un'hash-map intermedia, che ti potrebbe star shufflando gli argomenti
non sembrerebbe
ho trovato poi il problema con il test, usava una hashmap a un certo punto quindi ok
ancora non mi spiego quello che ho visto ma vabbeh se riesco a riprodurlo in qualche modo lo posto
adesso abbiamo qualche altro errore tipo
(:import
[org.flywaydb.core Flyway]
[ MigrationInfoDumper]
[java.sql.SQLException])
^^^^^^^^^^^^^^^^^^^^^^^
(:gen-class))
should satisfy
simple-symbol?
ma da lein cloverage
non e non da lein test
si ho visto che e' semplicemente sbagliato
non ho ben capito cosa lo fa fallire, forse semplicemente perche' cloverage
instrumenta tutto mentre lein test
no
Si, cloverage
aggiunge parecchia magia. Ho avuto anche io dei problemi con il fatto che l’instrumentation faceva cose buffe, ma non ricordo come ho risolto
avevamo delle librerie in :provided
che non dovrebbero essere la', strano che pero' funzionava con clojure 1.9 e scoppia con 1.10
in fase di strumentazione cloverage non lo digerisce piu' con l.1.10
il mio buon portatile linux invece va che e' un piacere
21:55:10 up 82 days, 1:25, 1 user, load average: 0.31, 0.42, 0.62
se puoi usare linux al lavoro @reborg magari ci faccio un pensierino (se assumete of course) 😄?
Ho un collega che ha un vecchio thinkpad con sopra openBSD con solo un tiling window manager
hehe hardcore
anche io solo i3, pero' linux arch ha supporto per tutto
openBSD un po' te la cerchi
si e’ una cosa un po’ fuori dagli schemi… e’ che lavora sul kernel “a cuore aperto” (per passione sua)
@reborg nella mia università c’era un kernel dev di openbsd! non è che magari è la stessa persona? 😄