From a523211c43121bde6c655a37039e2134b320f1be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Bruer-Skarsb=C3=B8?= Date: Wed, 3 Apr 2024 18:02:29 +0200 Subject: [PATCH] Removed old pages --- dapla-manual/statistikkere/dashboard.qmd | 4 +- dapla-manual/statistikkere/jobbe-med-kode.qmd | 2 +- .../statistikkere/nytt-ssbproject.qmd | 222 ------------------ dapla-manual/statistikkere/ssbproject.qmd | 13 - 4 files changed, 3 insertions(+), 238 deletions(-) delete mode 100644 dapla-manual/statistikkere/nytt-ssbproject.qmd delete mode 100644 dapla-manual/statistikkere/ssbproject.qmd diff --git a/dapla-manual/statistikkere/dashboard.qmd b/dapla-manual/statistikkere/dashboard.qmd index 3f73512f..85515fdb 100644 --- a/dapla-manual/statistikkere/dashboard.qmd +++ b/dapla-manual/statistikkere/dashboard.qmd @@ -4,7 +4,7 @@ Hvis en ønsker å lage ett dashbord som et brukergrensesnitt, så kan pakken Da ## Anbefalte nødvendige pakker -I SSB kan man lage dashbord i virtuelle miljøer, gjerne satt opp med [ssb-project](./ssbproject.html), men man trenger helt spesifikke pakker for å få det oppe å gå. Mer info om å sette opp et eget miljø med ssb-project finner du [her](./nytt-ssbproject.html). Tabell under viser navn på pakkene, og gjeldende versjoner som er benyttet i skrivende stund av eksempel i neste avsnitt. Vel og merke kan nyere versjoner også fungere fint, noe man må prøve ut selv, men følgende versjoner fungerer fint. +I SSB kan man lage dashbord i virtuelle miljøer, gjerne satt opp med [ssb-project](./jobbe-med-kode.html), men man trenger helt spesifikke pakker for å få det oppe å gå. Mer info om å sette opp et eget miljø med ssb-project finner du [her](./jobbe-med-kode.html). Tabell under viser navn på pakkene, og gjeldende versjoner som er benyttet i skrivende stund av eksempel i neste avsnitt. Vel og merke kan nyere versjoner også fungere fint, noe man må prøve ut selv, men følgende versjoner fungerer fint. | Pakke | Versjon (i skrivende stund) | | ------------------------- | --------------------------- | @@ -15,7 +15,7 @@ I SSB kan man lage dashbord i virtuelle miljøer, gjerne satt opp med [ssb-proje | ipykernel | 6.21.3 | | dash-bootstrap-components | 1.3.0 (hvis ønskelig) | -For mer om håndtering av pakker i ett virtuelt miljø satt opp med ssb-project kan man se nærmere [her](./nytt-ssbproject.qmd#installere-pakker). For å legge til disse pakkene kan man gjøre følgende i terminalen: +For mer om håndtering av pakker i ett virtuelt miljø satt opp med ssb-project kan man se nærmere [her](./jobbe-med-kode#installere-pakker). For å legge til disse pakkene kan man gjøre følgende i terminalen: ```{.python filename="terminal"} poetry add dash jupyter-dash jupyter-server-proxy jupyterlab-dash ipykernel diff --git a/dapla-manual/statistikkere/jobbe-med-kode.qmd b/dapla-manual/statistikkere/jobbe-med-kode.qmd index 4a9e2dfd..485a7dad 100644 --- a/dapla-manual/statistikkere/jobbe-med-kode.qmd +++ b/dapla-manual/statistikkere/jobbe-med-kode.qmd @@ -67,7 +67,7 @@ Det er også å anbefale at du [lagrer PAT lokalt](git-og-github.qmd#lagre-pat) ## Opprett ssb-project ::: {.callout-warning appearance="simple"} -Har du Github bruker? Noe funksjonalitet i `ssb-project` krever det. Finn ut hvordan ved å lese [ forrige kapittel](https://jupyter.dapla.ssb.no/user/obr@ssb.no/proxy/4272/nytt-ssbproject.html#forberedelser). +Har du Github bruker? Noe funksjonalitet i `ssb-project` krever det. Finn ut hvordan ved å lese [ forrige kapittel](./jobbe-med-kode.qmd#forberedelser). ::: **ssb-project** lar deg opprette en prosjekt-mappe med og uten GitHub-repo. La oss ta for oss hver av alternativene. diff --git a/dapla-manual/statistikkere/nytt-ssbproject.qmd b/dapla-manual/statistikkere/nytt-ssbproject.qmd deleted file mode 100644 index 5026eb11..00000000 --- a/dapla-manual/statistikkere/nytt-ssbproject.qmd +++ /dev/null @@ -1,222 +0,0 @@ -# Nytt ssb-project - -I dette kapittelet forklarer vi hvordan du oppretter et [ssb-project](https://github.com/statisticsnorway/ssb-project-cli) og hva det innebærer. **ssb-project** er et CLI^[CLI = Command-Line-Interface. Dvs. et program som er skrevet for å brukes terminalen ved hjelp av enkle kommandoer.] for å raskt komme i gang med koding på Dapla, hvor en del SSB-spesifikke beste-prakiser er ivaretatt. Kode som naturlig hører sammen, f.eks. koden til et produksjonsløp for en statistikk, er målgruppen for dette programmet. Kort fortalt kan du kjøre denne kommandoen i en terminal - -```{.bash filename="terminal"} -ssb-project create stat-testprod -``` - -og du vil få en mappe som heter **stat-testprod** med følgende innhold: - -1. **Standard mappestruktur** -En standard mappestruktur gjør det lettere å dele og samarbeide om kode, som igjen reduserer sårbarheten knyttet til at få personer kjenner koden. -2. **Virtuelt miljø** -Virtuelle miljøer isolerer og lagrer informasjon knyttet til kode. For eksempel hvilken versjon av Python du bruker og tilhørende pakkeversjoner. Det er viktig for at publiserte tall skal være reproduserbare. Verktøyet for å lage virtuelt miljø er [Poetry](https://python-poetry.org/docs/). -3. **Versjonshåndtering med Git** -Initierer versjonshåndtering med [Git](https://git-scm.com/) og legger til SSBs anbefalte *.gitignore* og *.gitattributes*. Det sikrer at du ikke versjonhåndterer filer/informasjon som ikke skal versjonshåndteres. - -I tillegg lar **ssb-project** deg opprette et GitHub-repo hvis du ønsker. Les mer om hvordan du kan ta i bruk dette verktøyet under. - -:::{.callout-note} -Dokumentasjonen for `ssb-project` finnes her: . -Det oppdateres hver gang en ny versjon av `ssb-project` slippes. -::: - -## Forberedelser - -Før du kan ta i bruk **ssb-project** så er det et par ting som må være på plass: - -1. Du må ha opprettet en **git-bruker** og **git-epost** lokalt der du skal kalle på programmet ([les mer om hvordan her](git-og-github.qmd#oppsett-av-git)). -2. Hvis du ønsker at **ssb-project** også skal opprette et GitHub-repo for deg må du også følgende være på plass: - a. Du må ha en **GitHub-bruker** ([les hvordan her](git-og-github.qmd#opprett-github-bruker)) - b. Skru på **2-faktor autentisering** for GitHub-brukeren din ([les hvordan her](git-og-github.qmd#sec-tofaktor)) - c. Være koblet mot SSBs organisasjon [statisticsnorway](https://github.com/statisticsnorway) på GitHub ([les hvordan her](git-og-github.qmd#koble-deg-til-ssb)) - d. Opprette **Personal Access Token (PAT)** og godkjenne det for bruk mot **statisticsnorway** ([les hvordan her](git-og-github.qmd#personal-access-token-pat)) - -Det er også å anbefale at du [lagrer PAT lokalt](git-og-github.qmd#lagre-pat) slik at du ikke trenger å forholde deg til det når jobber med Git og GitHub. Hvis du har alt dette på plass så kan du bare fortsette å følge de neste kapitlene. - -## Opprett ssb-project - -::: {.callout-warning appearance="simple"} -Har du Github bruker? Noe funksjonalitet i `ssb-project` krever det. Finn ut hvordan ved å lese [ forrige kapittel](https://jupyter.dapla.ssb.no/user/obr@ssb.no/proxy/4272/nytt-ssbproject.html#forberedelser). -::: - -**ssb-project** lar deg opprette en prosjekt-mappe med og uten GitHub-repo. La oss ta for oss hver av alternativene. - -### Uten GitHub-repo - -For å opprette et nytt **ssb-project** uten GitHub-repo gjør du følgende: - -1. Åpne en terminal. De fleste vil gjøre dette i Jupyterlab på bakke eller sky og da kan de bare trykke på det blå ➕-tegnet i Jupyterlab og velge **Terminal**. - -2. Før vi kjører programmet må vi være obs på at **ssb-project** vil opprette en ny mappe der vi står. Gå derfor til den mappen du ønsker å ha den nye prosjektmappen. For å opprette et prosjekt som heter **stat-testprod** så skriver du følgende i terminalen: - -```{.bash filename="terminal"} -ssb-project create stat-testprod -``` - -::: {.grid} - -::: {.g-col-8} -Hvis du stod i hjemmemappen din på når du skrev inn kommandoen over i terminalen, så har du fått mappestrukturen som vises i @fig-ssb-proj-folder. ^[Filer og mapper som starter med punktum er skjulte med mindre man ber om å se dem. I Jupyterlab kan disse vises i filutforskeren ved å velge **View** fra menylinjen, og deretter velge **Show hidden files**. I en terminal skriver man `ls -a` for å se de.]. Den inneholder følgende : - -- **.git**-mappe som blir opprettet for å versjonshåndtere med Git. -- **src**-mappe som skal inneholde all koden som utgjør produksjonsløpet. -- **tests**-mappe som inneholder tester du skriver for koden din. -- **LICENCE**-fil som skal benyttes for public-repos i SSB. -- **poetry.lock**-fil som inneholder alle versjoner av Python-pakker som blir brukt. -- **README.md**-fil som brukes for tekstlig innhold på GitHub-siden for prosjektet. - - -::: - -::: {.g-col-4} -![Mappen som ble opprettet av ssb-project.](../images/ssbproject_folders.png){fig-alt="Bilde av filutforskeren i Jupyterlab med en mappe laget av ssb-project" #fig-ssb-proj-folder} - -::: - -::: - -### Med Github-repo - -Over så opprettet vi et **ssb-project** uten å opprette et GitHub-repo. Hvis du ønsker å opprette et GitHub-repo også må du endre kommandoen over til: - -```{.bash filename="terminal"} -ssb-project create stat-testprod --github --github-token='blablabla' -``` - -Kommandoen over oppretter en mappestruktur slik vi så tidligere, men også et ssb-project som heter **stat-testprod** med et GitHub-repo med samme navn. Som du ser så må vi da sende med opsjonen `--github` og PAT med opsjonen `--github-token='blablabla'`. Repoet i GitHub ser da ut som i @fig-ssb-proj-github. - -![GitHub-repo som er opprettet av ssb-project](../images/ssbproject_github.png){fig-alt="Bilde av et GitHub-repo som ble opprettet av ssb-project" #fig-ssb-proj-github} - -::: {.callout-warning appearance="simple"} -Når du har opprettet et nytt ssb-project, eller bygget et eksisterende prosjekt, så kan det ta rundt 30 sekunder før kernelen viser seg i Jupterlab-launcher. Vær tålmodig! -::: - -## Installere pakker - -Når du har opprettet et **ssb-project** så kan du installere de python-pakkene du trenger [fra PyPI](https://pypi.org/). Hvis du for eksempel ønsker å installere [Pandas](https://pandas.pydata.org/), et populært data wrangling bibliotek, så kan du gjøre følgende: - -1. Åpne en terminal i Jupyterlab. -2. Gå inn i prosjektmappen din ved å skrive - -```{.bash filename="terminal"} -cd -``` - -3. Lag en *branch*/utviklingsg som f.eks. heter **install-pandas**: - -```{.bash filename="terminal"} -git checkout -b install-pandas -``` - -4. Installer **Pandas** ved å skrive følgende - -```{.bash filename="terminal"} -poetry add pandas -``` - -![Installasjon av Pandas med ssb-project](../images/jupyterlab_terminal_install.png){fig-alt="Bilde av et GitHub-repo som ble opprettet av ssb-project" #fig-ssb-proj-install} - -@fig-ssb-proj-install viser hvordan dette vil se ut i en Jupyterlab-terminal. Kommandoen for å installere noe er `poetry add` etterfulgt av pakkenavnet. Vi ser også at den automatisk legger til Pandas-versjonen i filen **poetry.lock**. Les mer om [hvordan man installerer pakker](pakke-install.html#python) her. - - -## Push til GitHub - -Når du nå har installert en pakke så har filen **poetry.lock** endret seg. La oss for eksempelets skyld anta at du ønsker å bruke **Git** til å dokumentere denne hendelsen, og dele det med en kollega via GitHub. Hvis vi har opprettet et **ssb-project** [med et GitHub-repo](nytt-ssbproject.html#med-github-repo) så kan vi gjøre akkurat dette: - -1. Vi kan *stage* alle endringer med følgende kommando i terminalen når vi står i prosjektmappen: - -```{.bash filename="terminal"} -git add -A -``` - -2. Videre kan *commit* en endring, dvs. ta et stillbilde av koden i dette øyeblikket, ved å skrive følgende: - -```{.bash filename="terminal"} -git commit -m "Installert pandas" -``` - -3. Push det opp til GitHub^[Å pushe til GitHub uten å sende ved *Personal Access Token* fordrer at du har lagret det lokalt så Git kan finne det. [Her et eksempel på hvordan det kan gjøres](git-og-github.qmd#lagre-pat).]. Anta at vi gjorde dette i *branchen* *install-pandas* som ble opprettet tidligere. Da kan vi skrive følgende: - -```{.bash filename="terminal"} -git push --set-upstream origin install-pandas -``` - -Mer kommer her. - - -## Bygg eksisterende ssb-project - -Når vi skal samarbeide med andre om kode så gjør vi dette via **GitHub**. Når du *pusher* koden din til GitHub, så kan samarbeidspartnere *pulle* ned koden og jobbe videre med den. Men når de henter ned koden så vil de bare hente ned selve koden, ikke pakker og Python-versjonen som ble brukt. De må installere alt som du hadde installert. I tillegg trenger de en kernel hvis de skal jobbe i Jupyterlab. **ssb-project** gjør det svært enkelt å bygge opp det du trenger, siden det virtuelle miljøet har all informasjon om hva som trengs. - -For at samarbeidspartneren din skal kunne bygge miljøet på nytt, må de ha gjort en minimal konfigurering av Git. [Les mer om hvordan](git-og-github.qmd#oppsett-av-git) du frem for å gjøre dette her. - - -For å bygge opp et eksisterende miljø gjør du følgende: - -1. Først må du kopiere prosjektet ned lokalt, eller *klone* repoet med git-terminologi - -```{.bash filename="terminal"} -git clone https://github.com/statisticsnorway/ -``` - -2. Gå inn i mappen du klonet - -```{.bash filename="terminal"} -cd -``` - -3. Skape et virtuelt miljø og installere en tilsvarende Jupyter kernel med - -```{.bash filename="terminal"} -ssb-project build -``` - -## Rydd opp etter deg - -Det vil være tilfeller hvor man ønsker å slette et ssb-project, enten fordi man ikke trenger koden lenger eller fordi man bare testet litt. - -### Lokalt - -Hvis man jobber med flere prosjekter så kan det fort bli mange Jupyter kerneler hengende igjen. Derfor er det også mulighet å kjøre - -```{.bash filename="terminal"} -ssb-project clean stat-testprod -``` - -som sletter Jupyter-kernelen og de installerte pakkene i prosjektet. Hvis du også ønsker å slette selve mappen med kode må du gjøre det manuelt^[Dette kan også gjøres ved å høyreklikke på mappen i Jupyterlab sin filutforsker og velge **Delete**.]: - -```{.bash filename="terminal"} -rm -rf ~/stat-testprod/ -``` - -Prosjektmappen over lå direkte i hjemmemappen min og hjemmemappen på Linux kan alltid referes til med et tilda-tegn **~**. - -### Arkiver GitHub-repo - -GitHub-repoer som er opprettet under SSB sin organinasjons [statisticsnorway]() på GitHub kan ikke slettes, bare arkiveres. Grunnen er at hvis man oppdager en sårbarhet senere så er det viktig å kunne se repoet for å forstå hva som har skjedd. - -Hvis du ikke trenger et GitHub-repo lenger kan man **arkivere repoet**. Det gjør du på følgende måte: - -1. Gi inn i repoet **Settings** slik som vist med rød pil i @fig-github-repo-settings. - -![Settings for repoet.](../images/github_repo_settings.png){fig-alt="Bilde som viser hvor Settings til et spesifikt repo" #fig-github-repo-settings} - -2. Under **General** scroller du deg ned til delen som heter **Danger Zone** og velger **Archive this repository**, slik som vist på @fig-github-repo-settings-archive. - -![Arkivering av et repo.](../images/github_repo_settings_archive.png){fig-alt="Bilde som viser hvordan man arkiverer et repo." #fig-github-repo-settings-archive} - -3. I dialogboksen som dukker opp fyller du inn reponavnet som beskrevet og trykker på **I understand the consequences, archive this repository**, som vist i @fig-github-repo-settings-archive-warning. - -![Bekreftelse av arkiveringen.](../images/github_repo_settings_archive_warning.png){fig-alt="Bilde som viser at man må bekrefte at virkelig vil arkivere repoet." #fig-github-repo-settings-archive-warning} - -Når det er gjort så er repoet lesbart, men man kan ikke jobbe med det. Men som vi ser av @#fig-github-repo-settings-archive-warning kan man omgjøre arkiveringen senere hvis det skulle være ønskelig. - -## Hva med R? - -Vi har foreløpig ikke integret **R** i **ssb-project**. Grunnen er at det mest populære *virtuelle miljø*-verktøet for R, [renv](https://rstudio.github.io/renv/index.html), kun tilbyr å passe på versjoner av R-pakker og ikke selve R-installasjonen. Det er en svakhet som trolig gjør det vanskeligere enn nødvendig å gjenskape tidligere publiserte resultater med **ssb-project**. I tillegg klarer den ikke å gjenkjenne pakker som blir brukt i ipynb-filer. - -Planen er å finne et annet verktøy enn **renv** som kan også reprodusere R-versjonen. Team Statistikktjenester ser nærmere på hvilke alternativer som finnes og vil tilby noe i fremtiden. - -I mellomtiden kan man bruke renv slik det er [beskrevet her for skymiljøet](pakke-install.html#r), og med [denne modifiseringen](pakke-install-bakken.html#r) for bakkemiljøet. diff --git a/dapla-manual/statistikkere/ssbproject.qmd b/dapla-manual/statistikkere/ssbproject.qmd deleted file mode 100644 index e3bdde1e..00000000 --- a/dapla-manual/statistikkere/ssbproject.qmd +++ /dev/null @@ -1,13 +0,0 @@ -# SSB-project - -I forrige del forklarte vi hvordan man jobber med skarpe data på Dapla. Det neste steget vil ofte være å begynne å utvikle kode i Python og/eller R. Dette innebærer at man helst skal: - -- versjonshåndtere med **Git** -- opprette et **GitHub**-repo -- opprette et **virtuelt miljø** som husker hvilke versjoner av pakker og programmeringsspråk du brukte - -I tillegg må alt dette konfigureres for hvordan SSB sine systemer er satt opp. Dette har vist seg å være unødvendig krevende for mange. Team Statistikktjenester har derfor utviklet et program som gjør alt dette for deg på en enkel måte som heter **ssb-project**. - -Vi mener at **ssb-project** er et naturlig sted å starte når man skal bygge opp koden i Python eller R. Det gjelder både på bakken og på sky. I denne delen av boken forklarer vi først hvordan du bruker **ssb-project** i det første kapittelet. Siden programmet skjuler mye av kompleksiteten rundt dette, så bruker vi de andre kapitlene til å forklare hvordan man ville satt opp dette uten hjelp av programmet. Dermed vil det være lett for SSB-ansatte å skjønne hva som gjøres og hvorfor det er nødvendig. - -[Her kan du kan lese mer om hvordan et SSB-project kan opprettes.](https://manual.dapla.ssb.no/nytt-ssbproject.html#med-github-repo)