Skip to content

Latest commit

 

History

History
254 lines (182 loc) · 4.65 KB

File metadata and controls

254 lines (182 loc) · 4.65 KB

Micronomy



B3 Init

Jonas Linde <jonas.linde@b3.se>

Vad?

  • Micronomy är en webapp som pratar med Maconomys backend
  • med andra ord en alternativ frontend till Maconomy

img/question.png

Varför?

  • GUI:t i Maconomy är irriterande
  • Calle ville ha fler deltagare till Init-hack
  • Därför!

img/deltek-touch.jpg

API?

  • Maconomy RESTful Web Services - Programmer's Guide 2018
  • Firefox Web Developer tools

img/firebug.png

Språk?

  • Javascript
    • fördel: ingen extra server
    • nackdel: riskerar att bli långsamt
  • bash, curl & jq
    • fördel: enkelt
    • nackdel: svårt
  • Raku
    • fördel: ett riktigt språk
    • nackdel: extra server

img/curl.jpg

Första steget - autentisering

  • alternativ
    • Basic
    • OpenID
    • Kerberos
    • Reconnect
    • 2FA
  • val
    • Basic + Reconnect

img/padlock.png

Första steget - autentisering

server=b3iaccess.deltekenterprise.com
url=https://$server/containers/v1/b3/timeregistration

token=$(curl -Ins -H Maconomy-Authentication:X-Reconnect $url |
          sed -n 's/^Maconomy-Reconnect: //pi' | tr -d '\r\n')

curl -s -H Authorization:"X-Reconnect $token" \
     "$url/data;any?card.datevar=2019-12-06" | jq -C . | less

img/dominoes.png

Data

{
  "meta": {},
  "links": {},
  "panes": {
    "card": {},
    "table": {
      "meta": {},
      "links": {},
      "records": [
        {
          "meta": {},
          "links": {},
          "data": {}
        },
      ],
      ...
    }
  }
}

img/425.jpg

Registrera timmar

curl -H "Authorization: X-Reconnect $token"
     -H "Maconomy-Concurrency-Control: $concurrency" \
     -H "Content-Type: application/json" \
     -d '{"data": {"numberday5": 3}}' \
     "$url/data;any/table/$rownum?card.datevar=2019-12-06"
  • där
    • $concurrency kommer från .panes.table.records[$rownum].meta.concurrencyControl
    • $rownum pekar på vilket projekt datat gäller
    • veckodag anges med siffran i numberday5
    • vecka anges med card.datevar

img/clock.jpg

Cro

  • en bunt Raku-moduler för att bygga reaktiva distribuerade system
  • inbyggd HTTP-server
  • inbyggd HTTP-klient
  • flexibel request router
  • utbyggbar content decoder

img/cro.png

Cro::WebApp

├ service.p6
├ lib/
│ ├ Micronomy.pm6
│ └ Routes.pm6
└ resources/
  ├ b3.png
  ├ script/
  │ ├ jquery-3.4.1.slim.min.js
  │ └ nav.js
  ├ styles/
  │ └ micronomy.css
  └ templates/
    ├ login.html.tmpl
    └ timesheet.html.tmpl

img/206.jpg

Raku

  • Perl6 har bytt namn till Raku
  • Nya filändelser .raku och .rakumod istället för .p6 och .pm6
    • i specifikationsversion 6.e (under 2020)
  • Perl-familjen består nu av Perl, CPerl, RPerl och Raku
  • Perl6 akilleshäl var från början att det var långsamt
    • Raku är ofta snabbare än Python
    • Raku är oftast inte mycket långsammare än Perl5
    • Raku är snabbare än Perl5 i vissa fall

img/camelia-logo.png

Nytt mellan 6.c och 6.d

  • några exempel
    • .gist can be called on Attribute
    • min/max routines also work on Hash:es
    • next can be used in whenever
    • .first can take :kv
    • symlink: create a file symlink
    • new atomicint operators
    • , , and operators
    • $*KERNEL provides .hostname
    • $*HOME: user's home directory
    • Nil.chrs returns a \0
    • Zen slicing of Seq:s does not cache them
  • https://github.com/perl6/roast/blob/master/docs/announce/6.d.md
  • men framför allt mängder av performance-förbättringar

img/200.jpg

Tack för ordet!

img/dominoes2.jpg

img/509.jpg