This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-05-05
Channels
- # aleph (10)
- # announcements (2)
- # babashka (83)
- # beginners (41)
- # biff (2)
- # calva (6)
- # cider (7)
- # clerk (3)
- # clj-kondo (7)
- # clojure (89)
- # clojure-berlin (1)
- # clojure-brasil (4)
- # clojure-dev (15)
- # clojure-europe (16)
- # clojure-nl (1)
- # clojure-norway (54)
- # clojure-spec (1)
- # clojure-uk (4)
- # clojurescript (2)
- # conjure (3)
- # datomic (7)
- # emacs (4)
- # events (1)
- # figwheel-main (1)
- # graalvm (5)
- # gratitude (2)
- # honeysql (14)
- # hyperfiddle (86)
- # introduce-yourself (1)
- # joyride (9)
- # lsp (179)
- # malli (29)
- # music (1)
- # nyc (14)
- # off-topic (6)
- # polylith (16)
- # rdf (8)
- # releases (2)
- # rum (1)
- # shadow-cljs (26)
- # specter (2)
- # sql (4)
- # uncomplicate (2)
- # xtdb (16)
Kunne man brukt Spring Security fra Clojure? Altså som et bibliotek? Det er jo mye greier inni der som sikkert er nyttig og god oppdatert på sikkerhetsfronten (siden det er så mye brukt).
jepp, har et kapittel i Kotlin-boka om hvordan man kobler Kotlin-webapp-greier på en Jetty (akkurat som man kan koble Ring på Jetty) og så kobler man Spring Security på Jetty også, så er man good
kan være en fin brobygger om du er i en organisasjon som trenger Spring Security (f.eks via noe sindige plugins som gjør diverse enterprise-greier) men har lyst til å bruke hipster-språk og biblioteker
Greit å slippe, det er ikke det. Men hvis man befinner seg der, og har lyst til å bruke Clojure, så er det en inngangsport, kanskje.
En bra ting (?) med denne buddy
-øvelsen er jo at jeg har lært litt mer om hvordan JWT og slikt fungerer 😅 Har feks ikke egentlig tenkt over at well-known-endepunktene inneholder en jwk-uri hvor man kan hente public-key for å verifisere tokens. Har stort sett alltid brukt nøkler som ligger i miljøvariabler på systemet (som kanskje er bedre å gjøre uansett sånn rent sikkerhetsmessig 🤷)
Tok noe inspirasjon fra dette lille prosjektet: https://github.com/gethop-dev/buddy-auth.jwt-oidc/blob/master/src/dev/gethop/buddy_auth/jwt_oidc.clj
Og endte opp med en integrant-komponent som produserer auth-middleware. Ble ikke stort mer enn 43 linjer kode 🥳
der er du inne på noe viktig, ja! Og litt det Christian var inne på over. Det kan være en liten bøyg å komme i gang med libraries når man gjør det første gang, men så lærer man masse om hvordan ting henger sammen, og andre og tredje og tiende gang man setter opp en app så er det nokså plankekjøring
Det som er litt drit er at det er mange måter å gjøre feil på når man implementerer SSO. Protokollene er mange og vage, og konsekvensene av å gjøre feil er mange. Hvis man i tillegg legger til at testingen av innlogging er stateful (avhengig av tredjepart) og at negativ testing (bruker som ikke skal kunne logge inn, ikke får logget inn) er like om ikke enda viktigere enn positiv testing (bruker som skal kunne logge inn får logget inn).
Ja, det er liksom en type problem man nesten er nødt til å bli ekspert på med en gang man pusler med det, uten at man helst hadde lyst til å bli ekspert på det 😐 På Nais-plattformen i Nav har vi noe som heter “https://docs.nais.io/appendix/wonderwall/” som liksom skal hjelpe teamene til å ikke måtte forholde seg til detaljer rundt autentisering osv, men vet ikke hvor mange som har tatt det i bruk da det er ganske nytt.
forrige gang jeg satt opp auth på noe brukte jeg bare Cognito i AWS. Xtremt digg å bare outsource hele sulamitten
hvordan modellerer man “local dates” i Datomic? :thinking_face: Altså “noe skjedde denne dagen”, hvor tidssone osv ikke er relevant?
Hadde akkurat dette problemet hos Norled, så dette libbet har fått testet seg ganske grundig, ettersom det også er i bruk der vi er i dag. 🙂
er det noen større og dypere tanker bak at f.eks local date mappes til en string, i stedet for noe som “dager siden epoch” som long elns?
mest lesbarhet hvis du ser rett i indeksen, også matcher det hvordan java.time konstruerer disse
Hvis man mapper til epoch-seconds så gjør man seg vel plutselig avhengig av tidssonen til systemet som skriver/leser også? Skriver man en lokal dato inn i basen fra et system i Europa skal det jo leses ut likt i USA tenker jeg, ellers er det vel ikke en local date
men det jeg tenkte på var å lagre det som dager siden epoch altså, ikke epoch-seconds
jo, så kan man gjøre om til en local-date derfra, men i utgangspunktet så er det jo cleanere å ikke trenge gjøre om fra UTC heller - selv om det blir mest av alt en implementasjonsdetalj.
(for å ha muligheten til å gjøre range queries på datoene, eks alle datoer før X osv)
:thinking_face: Epoch-tid har vel et tidssone-aspekt ved seg så man må konvertere til og fra UTC, og da er man jo allerede kjørt? Lagrer man som dager siden så kan man også få feil dag når klokken er nær midnatt avhengig av hvilken tidssone man henter ut fra. Men hvis tanken feks bare er å konvertere local datetime til “sekunder siden år 0 i min tidssone” så hadde det kanskje fungert 😅
det jeg tenkte på var å lagre 1970-01-01 som 0, 1970-01-02 som 1, 1970-02-01 som 30, osv
men, i praksis har vi ikke data i systemet før år 1000 og etter år 10 000 så en string vil jo faktisk fungere fint for range queries ja!
tviler på at en irritert utvikler i år 10 000 vil anklage oss for å ha gjort det sånn når de sitter og vedlikeholder appen for å registrere nyfødte griser
lettere å lese queryen også, i tillegg til at implementasjonen slipper å kjenne til skuddår.
apropos (?): satt og lurte på her om dagen hva neste store kilde til rewrites blir. Nå er vi snart igjennom å ha gjort om gamle webapper til å bli mobilvennlige. Hva kommer til å skje om 1, 10 eller 20 år som gjør at man bare må skrive om de Clojure-baserte mobilvennlige webappene vi lager nå?
“det blir alt for uøkonomisk å ikke kunne bruke VR-brillene til å gjøre CRUD i metaverset”
Jeg har tenkt en del på at mange react og shadow-dom-baserte javascript-apper vil bli skrevet om til å ha mer server-side rendering sånn på kort sikt :thinking_face:
Jeg vet ikke svaret på spørsmålet ditt, men det fikk meg umiddelbart til å tenke på https://stackoverflow.com/users/22656/jon-skeet og hans bibliotek, https://nodatime.org/, som jeg tror var inspirert av Joda Time (men Noda Time har blitt fullstendig skrevet om i ettertid, så vidt jeg forstår). Jon Skeet har skrevet masse om slike ting og merkelige problemstillinger som har med tid å gjøre. Bare en liten aside.
Ja, java.time er laget av samme person som lagde Joda Time i sin tid, men denne gangen gjort riktig. Det er et helt utmerket tidsbibliotek. Gjetter på at det er en av grunnene til at Noda Time også er fullstendig omskrevet.
https://pca.st/episode/4880d570-3325-4de5-8cb2-0b401148b20c er ganske bra og gir en del innsikt i problemene og historien. Jeg synes det var ganske interessant!
Litt sein lunsj kanskje, men her er altså den aller siste episoden av ZombieCLJ sesong 2. https://www.zombieclj.no/s02e51.html
Visste ikke hva keep gjorde før jeg slo den opp nå. Takk! Og jeg må innrømme at det nesten var enda mer gøy å se dere spille på slutten enn å kode. Det var nesten så dere døde 😁
Det var bare gøy, vil jeg si. Litt styrete å skulle lage en episode i uka - og det fikk vi jo ikke alltid til heller - men veldig trivelig prosjekt.
Jeg har tenkt å prøve å sette ord på hva vi lærte, men jeg tror lærdommen kommer best til syne når man sammenligner med Parens of the Dead. Ganske stor forbedring der.
Kult! Jeg føler det ofte blir sånn med å lære praksis, i stedet for teori. Dere har jo valgt å gjøre en ekte greie på ekte måte. Ikke å forelese om noe teori. Synes alltid sånt er vanskeligere å formulere. "hvorfor driver vi egentlig med enhetstesting?" "joo, nå skal du høre ...".
Ja, det blir "show, don't tell" i praksis. Det er ikke så lett å kommunisere fordelene med et REPL, for eksempel, skriftlig (selv om @U9MKYDN4Q har gjort et hederlig forsøk https://www.kodemaker.no/blogg/2022-10-repl/) - så er det enkelte ting man nesten må se for å tro. 🙂