<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="https://skagemo.no/xml/base.min.xml"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Steinar Skagemo on forvaltningsinformatiker Steinar Skagemo</title><link>https://skagemo.no/</link><description>Recent content in Steinar Skagemo on forvaltningsinformatiker Steinar Skagemo</description><generator>Hugo -- gohugo.io</generator><language>no-nb</language><lastBuildDate>Thu, 01 Jan 1970 00:00:00 +0000</lastBuildDate><atom:link href="https://skagemo.no/index.xml" rel="self" type="application/rss+xml"/><item><title>Første blogginnlegg automatisk fra reMarkable</title><link>https://skagemo.no/blog/2023/03/foerste-blogginnlegg-automatisk-fra-remarkable/</link><pubDate>Thu, 23 Mar 2023 11:50:00 +0100</pubDate><guid>https://skagemo.no/blog/2023/03/foerste-blogginnlegg-automatisk-fra-remarkable/</guid><description>&lt;p>Hvis du kan lese dette så har jeg lyktes i å få til følgende:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Skrive et innlegg på min reMarkable (med tastaturet Type Folio)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Sende teksten som epost til en egen epostadresse&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Automatisk tagge eposten som et nytt innlegg&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Få Google Apps Script til å oppdage det nye innlegget og &amp;ldquo;commite&amp;rdquo; det
til riktig sted på Github slik at det dukker opp på bloggen&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>(samt et ørlite manuelt kvalitetssikringssteg inni der som jeg kan gjøre
fra mobiltelefonen)&lt;/p>
&lt;p>En liten fun-fact er at jeg trengte litt kode for å lage et filnavn basert
på innholdet i teksten. Ikke veldig avansert, men likevel noe som krevde
noen få linjer JavaScript-kode (Google Apps Script bruker JavaScript). Jeg
regnet med at jeg ville klare å finne det ut siden jeg kjenner til hvordan
man gjør det med Python, men sånt tar alltid litt tid og mye prøving og
feiling.&lt;/p>
&lt;p>Da slo det meg at det finnes en venn for slike anledninger; OpenAIs
ChatGPT. Så jeg skrev koden i Python og testet at den gjorde det jeg ville,
og så ba jeg bare om å få den samme koden som JavaScript. Det fungerte
feilfritt på første forsøk :-)&lt;/p>
&lt;p>Enda en grunn til å lære Python; du kan få hjelp av ChatGPT til å skrive
det om til JavaScript, og kanskje andre programmeringsspråk også, hvis du
trenger det senere. (Vel, det samme argumentet kan sikkert brukes andre
veien også, men det overser jeg akkurat nå &amp;hellip;)&lt;/p>
&lt;p>&lt;em>Oppdatering - fra PC-en:&lt;/em>&lt;/p>
&lt;h3 id="nedenfor-er-dialogen-med-chatgpt">
&lt;a class="Heading-link u-clickable" href="https://skagemo.no/blog/2023/03/foerste-blogginnlegg-automatisk-fra-remarkable/#nedenfor-er-dialogen-med-chatgpt">Nedenfor er dialogen med ChatGPT&lt;/a>
&lt;/h3>
&lt;blockquote>
&lt;p>Can you translate this python code to javascript?&lt;/p>
&lt;/blockquote>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">with&lt;/span> open(&lt;span style="color:#e6db74">&amp;#39;testdata.txt&amp;#39;&lt;/span>, mode&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#39;r&amp;#39;&lt;/span>, encoding&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#39;utf-8&amp;#39;&lt;/span>) &lt;span style="color:#66d9ef">as&lt;/span> file:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> data &lt;span style="color:#f92672">=&lt;/span> file&lt;span style="color:#f92672">.&lt;/span>read()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lines &lt;span style="color:#f92672">=&lt;/span> data&lt;span style="color:#f92672">.&lt;/span>split(&lt;span style="color:#e6db74">&amp;#39;&lt;/span>&lt;span style="color:#ae81ff">\n&lt;/span>&lt;span style="color:#e6db74">&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># finner linjen som starter med &amp;#34;slug:&amp;#34;, fjerner &amp;#34;slug:&amp;#34; og slår sammen resten &lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> med bindestrek
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> slug &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#39;-&amp;#39;&lt;/span>&lt;span style="color:#f92672">.&lt;/span>join([line &lt;span style="color:#66d9ef">for&lt;/span> line &lt;span style="color:#f92672">in&lt;/span> lines &lt;span style="color:#66d9ef">if&lt;/span> line&lt;span style="color:#f92672">.&lt;/span>startswith(&lt;span style="color:#e6db74">&amp;#39;slug:&amp;#39;&lt;/span>)][&lt;span style="color:#ae81ff">0&lt;/span>][&lt;span style="color:#ae81ff">6&lt;/span>:]&lt;span style="color:#f92672">.&lt;/span>split(&lt;span style="color:#e6db74">&amp;#39; &amp;#39;&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>print(slug)&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Svar:&lt;/p>
&lt;blockquote>
&lt;p>Sure! Here&amp;rsquo;s the JavaScript equivalent of the Python code:&lt;/p>
&lt;/blockquote>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-js" data-lang="js">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">const&lt;/span> &lt;span style="color:#a6e22e">fs&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">require&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;fs&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">const&lt;/span> &lt;span style="color:#a6e22e">path&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">require&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;path&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">const&lt;/span> &lt;span style="color:#a6e22e">filePath&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">path&lt;/span>.&lt;span style="color:#a6e22e">join&lt;/span>(&lt;span style="color:#a6e22e">__dirname&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;testdata.txt&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">const&lt;/span> &lt;span style="color:#a6e22e">data&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">fs&lt;/span>.&lt;span style="color:#a6e22e">readFileSync&lt;/span>(&lt;span style="color:#a6e22e">filePath&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;utf-8&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">const&lt;/span> &lt;span style="color:#a6e22e">lines&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">data&lt;/span>.&lt;span style="color:#a6e22e">split&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;\n&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">// finner linjen som starter med &amp;#34;slug:&amp;#34;, fjerner &amp;#34;slug:&amp;#34; og slår sammen resten med bindestrek
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">const&lt;/span> &lt;span style="color:#a6e22e">slug&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">lines&lt;/span>.&lt;span style="color:#a6e22e">filter&lt;/span>(&lt;span style="color:#a6e22e">line&lt;/span> =&amp;gt; &lt;span style="color:#a6e22e">line&lt;/span>.&lt;span style="color:#a6e22e">startsWith&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;slug:&amp;#39;&lt;/span>))[&lt;span style="color:#ae81ff">0&lt;/span>].&lt;span style="color:#a6e22e">substring&lt;/span>(&lt;span style="color:#ae81ff">6&lt;/span>).&lt;span style="color:#a6e22e">split&lt;/span>(&lt;span style="color:#e6db74">&amp;#39; &amp;#39;&lt;/span>).&lt;span style="color:#a6e22e">join&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;-&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">console&lt;/span>.&lt;span style="color:#a6e22e">log&lt;/span>(&lt;span style="color:#a6e22e">slug&lt;/span>);&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>ReMarkable -- med tastatur!</title><link>https://skagemo.no/blog/2023/03/remarkable--med-tastatur/</link><pubDate>Wed, 08 Mar 2023 17:30:00 +0100</pubDate><guid>https://skagemo.no/blog/2023/03/remarkable--med-tastatur/</guid><description>&lt;p>Noe av det første jeg gjorde da vi flyttet til hjemmekontor vinteren 2020, var å slå til på et introduksjonstilbud på &lt;a href="https://remarkable.com/store">reMarkable 2&lt;/a>.&lt;/p>
&lt;p>Det tok noen måneder med venting, men i september 2020 mottok jeg mitt eksemplar.&lt;/p>
&lt;p>Jeg har vært veldig fornøyd med min reMarkable, og &amp;ldquo;killer&amp;rdquo;-funksjonen for min del, er at den ikke er full av forstyrrende elementer. Hverken &amp;ldquo;pling&amp;rdquo; fra epost, eller nettleseren som &lt;em>alltid&lt;/em> er der og lokker med nyheter, LinkedIn og muligheten til å finne svar på hva jeg til enhver tid er &lt;em>litt&lt;/em> i tvil om.&lt;/p>
&lt;p>På samme måte som med når jeg tar notater på papir i møter, følger jeg med på det som skjer i møtet, istedenfor å &amp;ldquo;sone ut&amp;rdquo; og begynne å svare på epost, lese på LinkedIn eller sjekke nyheter.&lt;/p>
&lt;p>Siden omtrent 2015 har jeg skrevet ut på papir når det har vært dokumenter jeg har hatt behov for å lese. Det har både økt sannsynligheten for at jeg klarer å konsentrere meg (særlig hvis jeg setter meg et stykke unna PC-en og telefonen), og gjort det mer fristende å lese jobb-ting på kvelden.&lt;/p>
&lt;p>Jeg har i mange år hatt en en sterk motstand mot å skru på PC-en etter arbeidstid. Selv om jeg &amp;ldquo;bare&amp;rdquo; skulle lese et dokument, så ville det uunngåelig blitt en tur innom eposten, noe som sannsynligvis ville engasjert meg og distrahert meg, eller stresset meg unødvendig. Å lese på papir, og notere med blyant, derimot, har gjort det enklere å få med seg innholdet, og lettere å gi innspill.&lt;/p>
&lt;p>Men ulempen er selvsagt at notatene mine på papir, ikke kommer frem til noen &amp;hellip; med ReMarkable derimot, får jeg både fordelen av papir, men i tillegg en rekke andre fordeler:&lt;/p>
&lt;ul>
&lt;li>Jeg slipper å ta utskrift - som både krever papir, og en tur til en printer (som jeg ikke har hjemme)&lt;/li>
&lt;li>Jeg slipper dilemmaet om hva jeg skal gjøre med alle utskriftene jeg har tatt notater på, og som jeg gjerne vil beholde&lt;/li>
&lt;li>Jeg kan veldig enkelt dele notatene/kommentarene digitalt. Denne fordelen er &lt;em>litt&lt;/em> begrenset av at det ikke er sikkert mottakeren skjønner hva jeg har skrevet &amp;hellip;&lt;/li>
&lt;/ul>
&lt;p>I det siste har jeg blitt stadig mer klar over at jeg savner å kombinere alle fordelene reMarkable har, med et annet verktøy jeg setter veldig stor pris på: Tastatur! Det er fint å skrive for hånd, og skrive stikkord eller kortere tekster. Men hvis jeg har mye som skal nedtegnes blir jeg på et tidspunkt frustrert over at det går sakte, og at jeg vet at det blir vanskelig å gjenbruke det jeg skriver. Da savner jeg å kunne skifte til et fysisk tastatur.&lt;/p>
&lt;p>Det kan virke dumt at jeg sitter rett i nærheten av en PC og savner et tastatur, men jeg vil gjerne fortsette å ikke bli forstyrret!&lt;/p>
&lt;p>Jeg leste en del om ulike måter å få koblet til tastatur på, ved å modifisere programvaren, blant annet &lt;a href="https://www.mashupsthatmatter.com/blog/USB-keyboard-reMarkable2">denne oppskriften&lt;/a>. Men jeg fant ut at jeg ikke var tøff nok til å prøve meg på det, selv om det virket veldig fristende.&lt;/p>
&lt;p>Så derfor var det en &lt;em>veldig&lt;/em> enkel beslutning da jeg igår ble oppmerksom på at reMarkable endelig har lansert et offisielt tastatur, kalt &lt;a href="https://remarkable.com/store/remarkable-2/type-folio">Type Folio&lt;/a>. Det ble umiddelbart bestilt, og jeg ser frem til å teste det ut!&lt;/p></description></item><item><title>Venter i spenning på PyCon!</title><link>https://skagemo.no/blog/2023/03/venter-i-spenning-p%C3%A5-pycon/</link><pubDate>Wed, 08 Mar 2023 14:00:00 +0100</pubDate><guid>https://skagemo.no/blog/2023/03/venter-i-spenning-p%C3%A5-pycon/</guid><description>&lt;p>Jeg tror PyScript kan bidra til å gjøre det mye, mye enklere for mange flere å bruke Python!&lt;/p>
&lt;p>Med dagens strenge begrensninger hos mange arbeidsgivere
for hva man får lov til å gjøre, og ikke gjøre, på PC-ene på jobben, så kan det være vanskelig å få på tilgang til Python på en god måte.&lt;/p>
&lt;p>Med PyScript blir Python-universet tilgjengelig i nettleseren, og det løser samtidig en annen utfordring
med å bruke Python, nemlig behovet for å sette opp et separat &amp;ldquo;miljø&amp;rdquo; med de relevante pakkene, for hvert program.
Hver PyScript-nettside kan spesifisere sitt eget miljø, og de relevante pakkene lastes ned og installeres uten
at brukeren må gjøre noe.&lt;/p>
&lt;p>Det er fortsatt mye &amp;ldquo;work in progress&amp;rdquo;, men det er mye som skjer. En svært spennende utvikling er at
PyScript ser på MicroPython som et alternativ, i visse tilfeller. Det er allerede laget en &amp;ldquo;&lt;a href="https://pyscript.net/tech-preview/micropython/repl.html">technical preview&lt;/a>&amp;rdquo;
og der er siden ferdig med å laste ned og starte Python på et par sekunder.&lt;/p>
&lt;p>Det gjenstår fortsatt mye arbeid for å øke farten, og samtidig tilby full integrasjon med nettleseren og øvrig nettsideteknologi. 22. april skal det være en
presentasjon på Python-konferansen PyCon US som oppsummerer det som har skjedd det siste året, og hva som er er status og veien videre for Python i nettleseren:&lt;/p>
&lt;p>&lt;a href="https://us.pycon.org/2023/schedule/presentation/77/">PyScript and the magic of Python in the browser&lt;/a>&lt;/p>
&lt;p>Fra beskrivelsen:&lt;/p>
&lt;blockquote>
&lt;p>A year after its announcement, PyScript is a very different project. From major performance improvements to great plugins, PyScript applications allow a new way to create fun and
educational opportunities that were not possible until now. This talk summarizes the work done over the past year, and what you might expect in the future. In this talk I will:
Give a quick overview of what PyScript is&lt;/p>
&lt;ul>
&lt;li>Talk about features and changes introduced this year:&lt;/li>
&lt;li>Support for the blazing fast MicroPython interpreter&lt;/li>
&lt;li>Improved support for data&lt;/li>
&lt;li>&amp;hellip;&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>Mens vi venter &amp;hellip; følger jeg tett med på github, og blir entusiastisk når jeg leser meldinger som dette:&lt;/p>
&lt;blockquote>
&lt;p>Since we are deploying soon, this PR adds tests for the snippets in the docs (mostly just the tutorials and one guide), we probably should expand to include other guides.&lt;/p>
&lt;/blockquote>
&lt;p>(Fra en rykende fersk &amp;ldquo;&lt;a href="https://github.com/pyscript/pyscript/pull/1264">Pull Request&lt;/a>&amp;rdquo;)&lt;/p></description></item><item><title>Kodeeksempel som kan testes</title><link>https://skagemo.no/blog/2023/02/kodeeksempel-som-kan-testes/</link><pubDate>Tue, 14 Feb 2023 20:00:00 +0100</pubDate><guid>https://skagemo.no/blog/2023/02/kodeeksempel-som-kan-testes/</guid><description>&lt;p>Enda mer tilfredsstillende ennå se interessante kodeeksempler, er å kunne teste dem, og aller helst med mulighet til å justere på dem.&lt;/p>
&lt;p>På disse innleggene er kodeeksemplene bare tekst:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;gt;&amp;gt;&amp;gt;&lt;/span> liste &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;en to tre fire fem seks&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;gt;&amp;gt;&amp;gt;&lt;/span> liste&lt;span style="color:#f92672">.&lt;/span>split()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#e6db74">&amp;#39;en&amp;#39;&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;to&amp;#39;&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;tre&amp;#39;&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;fire&amp;#39;&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;fem&amp;#39;&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;seks&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Men med &lt;a href="https://pyscript.net/">PyScript&lt;/a> er det nå enkelt å tilby en nettside tilbyr Python, og hvor du som bruker kan kjøre denne koden selv. Du kan også endre den eller skrive helt egen kode.&lt;/p>
&lt;p>Prøv selv, åpne siden &lt;a href="https://skagemo.no/pyscript/kodeeksempel-som-kan-testes.html">Kodeeksempel som kan testes&lt;/a>.&lt;/p>
&lt;p>&lt;em>NB! Det tar litt tid, ~20-30 sekunder, før siden er ferdig lastet og du kan kjøre koden.&lt;/em>&lt;/p></description></item><item><title>Beste bruk av ChatGPT for programmering med Python?</title><link>https://skagemo.no/blog/2023/02/beste-bruk-av-chatgpt-for-programmering-med-python/</link><pubDate>Mon, 13 Feb 2023 11:00:00 +0100</pubDate><guid>https://skagemo.no/blog/2023/02/beste-bruk-av-chatgpt-for-programmering-med-python/</guid><description>&lt;p>Det er mye diskusjon om hvordan ChatGPT vil endre verden, og om det isåfall er til det bedre. Men underveis er det nyttig å se hvordan ChatGPT kan hjelpe oss, her og nå.&lt;/p>
&lt;p>I artikkelen &lt;a href="https://davidamos.dev/chatgpt-is-an-extra-ordinary-python-programmer/">ChatGPT Is An Extra-Ordinary Python Programmer&lt;/a> &amp;ndash; der poenget er at ChatGPT er mer ordinær enn de fleste &amp;hellip; &amp;ndash; viser David Amos hvordan det bærer galt av sted når han ber ChatGPT gjøre for mye på en gang (&amp;ldquo;skriv et program som &amp;hellip;&amp;rdquo;), men til gjengjeld får veldig god hjelp til å lage et program der han har store deler av oppbygning klart for seg.&lt;/p>
&lt;p>I det første forsøket får han allerede fra start et program som er &lt;em>nesten&lt;/em> riktig, men hvert forsøk på å få rettet opp manglene tar han bare lenger og lenger vekk fra målet, og han avslutter til slutt den delen av samtalen med &amp;ldquo;&lt;em>Absolute rubbish&lt;/em>&amp;rdquo;.&lt;/p>
&lt;p>I det andre forsøket ber han om en og en funksjon, som hver for seg løser en bit av oppgaven. Disse er stort sett riktige på første forsøk. Til slutt ber han om et program som syr disse funksjonene sammen, og da fungerer det:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;&lt;em>Exactly what I wanted. The whole process took about 10 minutes.&lt;/em>&amp;rdquo; (David Amos)&lt;/p>
&lt;/blockquote></description></item><item><title>Innlegg med kodeeksempler</title><link>https://skagemo.no/blog/2023/02/innlegg-med-kodeeksempler/</link><pubDate>Mon, 13 Feb 2023 09:50:00 +0100</pubDate><guid>https://skagemo.no/blog/2023/02/innlegg-med-kodeeksempler/</guid><description>&lt;p>En av grunnene til at jeg ønsker å få igang en nettside, er at jeg ofte får lyst til å dele ting jeg har lært om Python. Ikke minst for å øke sjansen for å huske det selv &amp;hellip; Da er det nyttig å på en enkel måte dele kodeeksempler, for eksempel sånn som dette:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>url &lt;span style="color:#f92672">=&lt;/span> (
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;saft.xml&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>saft &lt;span style="color:#f92672">=&lt;/span> saft2dataframe(open_url(url)) &lt;span style="color:#75715e"># leser en SAF-T Financial fil&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>saft&lt;span style="color:#f92672">.&lt;/span>loc[
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>( &lt;span style="color:#75715e"># filtrerer de relevante transaksjonene (tid og kontoer):&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> saft[&lt;span style="color:#e6db74">&amp;#39;Transaction.TransactionDate&amp;#39;&lt;/span>] &lt;span style="color:#f92672">&amp;gt;=&lt;/span> &lt;span style="color:#e6db74">&amp;#39;2017-01-01&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;amp;&lt;/span> (saft[&lt;span style="color:#e6db74">&amp;#39;Transaction.TransactionDate&amp;#39;&lt;/span>] &lt;span style="color:#f92672">&amp;lt;&lt;/span> &lt;span style="color:#e6db74">&amp;#39;2017-02-01&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;amp;&lt;/span> (saft[&lt;span style="color:#e6db74">&amp;#39;Line.AccountID&amp;#39;&lt;/span>] &lt;span style="color:#f92672">&amp;gt;=&lt;/span> &lt;span style="color:#ae81ff">3000&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;amp;&lt;/span> (saft[&lt;span style="color:#e6db74">&amp;#39;Line.AccountID&amp;#39;&lt;/span>] &lt;span style="color:#f92672">&amp;lt;&lt;/span> &lt;span style="color:#ae81ff">4000&lt;/span>)] \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [[ &lt;span style="color:#75715e"># summerer de relevante beløpene for rapportering til SSB:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#39;Line.DebitAmount.Amount&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#39;Line.TaxAmount.Amount&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#39;Line.CreditAmount.Amount&amp;#39;&lt;/span>,]]&lt;span style="color:#f92672">.&lt;/span>sum()&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Eksempelet over er hentet fra en nettside som &lt;a href="https://nordicsmartgovernment.github.io/saf-t_analyse_pwa/">demonstrerer hvordan python nå kan kjøre direkte i nettleseren&lt;/a>, og bruker python og pandas
til å lese og analysere en SAF-T fil med bokføringsdata.&lt;/p>
&lt;p>Dette kan for eksempel være nyttig hvis
SSB vil gjøre det lettere for bedrifter å rapportere. Mange av deres rapporter ber om tall som kan
utledes av bokføringen, og istedenfor å gjøre den jobben (delvis) manuelt, kan en nettside som den jeg har lenket til over, ha den nødvendige koden for å lese, analysere og trekke ut de relevante tallene
som skal rapporteres. Det er også mulig å ha kode som rapporterer tallene direkte til et API, dersom
SSB eller Altinn lager et slikt API.&lt;/p></description></item><item><title>Innlegg fra mobiltelefonen</title><link>https://skagemo.no/blog/2023/02/innlegg-fra-mobiltelefonen/</link><pubDate>Mon, 13 Feb 2023 09:35:00 +0100</pubDate><guid>https://skagemo.no/blog/2023/02/innlegg-fra-mobiltelefonen/</guid><description>&lt;p>Dette innlegget er skrevet på mobiltelefonen,
ved hjelp av funksjonaliteten for å redigere
filer på GitHubs nettsider.&lt;/p>
&lt;p>Jeg får stort sett kløe av å skrive direkte
på mobiltelefonen, men for en del år siden
(våren 2015) kjøpte
jeg et lite reisetastatur (Logitech Keys-To-Go),
og hver gang jeg husker å bruke det &amp;ndash; sånn som
nå &amp;ndash; blir jeg minnet på at det er kanskje
et av de aller beste kjøpene jeg har gjort.
Det kostet ca 700,- dengang.&lt;/p>
&lt;p>Gjett hvor glad jeg ville blitt hvis jeg også
kunne ha koblet det til min ReMarkable &amp;hellip; Da
kunne jeg kombinere distraksjonsfrihet skriving
med &lt;em>effektiv&lt;/em> skriving. Jeg elsker muligheten
til å notere for hånd, men hvis jeg skal skrive
litt lengre tekster savner jeg et tastatur.&lt;/p>
&lt;p>Men det var ikke det dette innlegget skulle handle
om, så jeg tror vi avslutter der, og ser om dette
virker etter planen!&lt;/p></description></item><item><title>Innlegg fra Github</title><link>https://skagemo.no/blog/2023/02/innlegg-fra-github/</link><pubDate>Mon, 13 Feb 2023 09:20:00 +0100</pubDate><guid>https://skagemo.no/blog/2023/02/innlegg-fra-github/</guid><description>&lt;p>Et av målene med å sette opp ny nettside, er å gjøre det relativt enkelt å publisere og endre, uten å være avhengig av å bruke helt nye verktøy,
og helst uavhengig av et oppsett på én spesifikk PC. Nå som innholdet vedlikeholdes på Github, og (visstnok) skal publiseres automatisk ved endringer
her, så tror jeg det skal være løst.&lt;/p>
&lt;p>Dette innlegget vil isåfall være et bevis på det. Dette er skrevet på en PC, og etterpå tror jeg jeg må teste om det også er noenlunde enkelt å gjøre
det samme fra mobiltelefonen.&lt;/p></description></item><item><title>Ny nettside</title><link>https://skagemo.no/blog/2023/02/ny-nettside/</link><pubDate>Sun, 12 Feb 2023 11:42:23 +0100</pubDate><guid>https://skagemo.no/blog/2023/02/ny-nettside/</guid><description>&lt;p>Etter noen måneder uten en hjemmeside har jeg fått opp en (relativt) enkel løsning, som jeg tror (håper) jeg skal klare å holde på lufta, og sånn noenlunde oppdatert fremover.&lt;/p>
&lt;p>Blogg-ambisjonene er minimale, men noen ganger klør det litt etter å ha et sted på nettet å putte tanker og meninger, så det er fint å kunne gjøre det med enkle midler.&lt;/p>
&lt;p>Jeg har startet med et veldig enkelt &amp;ldquo;theme&amp;rdquo; for Hugo, kalt &lt;a href="https://github.com/de-souza/hugo-flex">hugo-flex&lt;/a>, i håp om å ikke gå meg bort i mange innstillinger. Kanskje blir det frustrerende etterhvert, men da får jeg heller bytte.&lt;/p></description></item></channel></rss>