Vapaa kuvaus

Aloituksia

20

Kommenttia

64

  1. Varmastikin hyviä vinkkejä nuo, jos joku tätä ketjua läpi kahlatessaan on etsimässä välineitä web-kehitykseen. Taitaa suurin haaste kehityksessä olla valinnan vaikeus kun vaihtoehtoja on runsaasti ja jotta pystyy valitsemaan fiksusti, niin niihin pitää perehtyä. Sen sijaan että olisi yksi standardi tapa, ja extroihin tarvitsisi perehtyä vasta kun standardipaletilla ei pärjää.

    Kun hiilijalanjäljestä ollaan nykyään kovin huolissaan, niin harvemmin törmää softan hiilijalanjäljestä keskusteluun. Ensimmäisenä tuo taisi nousta pintaa epäsuorasti kryptovaluuttojen louhinnan virrankulutuksen ja hiljan AI:n sähkön tarpeen kasvun myötä. Sen sijaan en muista että kukaan olisi peräänkuuluttanut ekotehokkaampia kääntäjiä tai JVM:iä puhumattakaan ohjelmistojen siirtämistä tulkattavista kielistä käännettäviin.
  2. 3/4 Kysyin ChatGPT:ltä: "Kuinka purescriptillä muodostetaan dialogi-ikkuna näytölle?"

    Vastaus:

    Vaihe 1: Projektin alustaminen
    Jos sinulla ei vielä ole PureScript-projektia, luo uusi projekti seuraavasti:

    bash
    Kopioi koodi
    spago init
    Lisää sitten tarvittavat riippuvuudet, kuten dom ja effect:

    bash
    Kopioi koodi
    spago install dom effect

    Vaihe 2: HTML-tiedosto
    Tässä on yksinkertainen HTML, johon dialogi-ikkuna integroidaan:

    html
    Kopioi koodi
    <!DOCTYPE html>
    <html lang="fi">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PureScript Dialogi-ikkuna</title>
    </head>
    <body>
    <button id="openButton">Avaa Dialogi</button>

    <div id="dialog" style="display: none; background-color: rgba(0, 0, 0, 0.5); position: fixed; top: 0; left: 0; width: 100%; height: 100%; justify-content: center; align-items: center;">
    <div style="background-color: white; padding: 20px; border-radius: 5px;">
    <p>Tämä on dialogi-ikkuna!</p>
    <button id="closeButton">Sulje</button>
    </div>
    </div>

    <script src="output/Main/index.js"></script>
    </body>
    </html>

    Vaihe 3: PureScript-koodi
    Seuraavaksi kirjoitetaan PureScript-koodi, joka hallitsee dialogi-ikkunan avaamista ja sulkemista.

    Luo tiedosto src/Main.purs ja lisää seuraava sisältö:

    purescript
    Kopioi koodi
    module Main where

    import Prelude
    import Effect (Effect)
    import Effect.Console (log)
    import Effect.Uncurried (EffectFn1, mkEffectFn1)
    import Web.DOM (window)
    import Web.HTML (window)
    import Web.HTML.Window (document)
    import Web.HTML.Document (getElementById)
    import Web.HTML.HTMLElement (htmlElementToElement)
    import Web.HTML.Element (setAttribute)
    import Web.HTML.Event (EventType(..), preventDefault)
    import Web.HTML.Event.EventTarget (addEventListener)
    import Web.HTML.Event.Event (target)
    import Web.HTML.HTMLButtonElement (htmlButtonElementToElement)

    -- Pääfunktio
    main :: Effect Unit
    main = do
    -- Hae ikkunan dokumentti
    doc <- window >>= document

    -- Hae dialogi-elementti
    dialog <- getElementById "dialog" doc

    case dialog of
    Just dlg -> do
    -- Hae nappula, joka avaa dialogin
    openButton <- getElementById "openButton" doc
    case openButton of
    Just btn -> do
    -- Lisää kuuntelija avaamaan dialogi
    addEventListener Click (openDialog dlg) (htmlElementToElement btn)
    Nothing -> log "Avaa-nappulaa ei löytynyt."

    -- Hae nappula, joka sulkee dialogin
    closeButton <- getElementById "closeButton" doc
    case closeButton of
    Just btn -> do
    -- Lisää kuuntelija sulkemaan dialogi
    addEventListener Click (closeDialog dlg) (htmlElementToElement btn)
    Nothing -> log "Sulje-nappulaa ei löytynyt."
    Nothing -> log "Dialogi-elementtiä ei löytynyt."

    -- Funktio dialogin avaamiseksi
    openDialog :: forall a. Element -> EffectFn1 Event a
    openDialog dlg = mkEffectFn1 \_ -> do
    setAttribute "style" "display: flex;" dlg

    -- Funktio dialogin sulkemiseksi
    closeDialog :: forall a. Element -> EffectFn1 Event a
    closeDialog dlg = mkEffectFn1 \_ -> do
    setAttribute "style" "display: none;" dlg

    Vaihe 4: Käännä PureScript-koodi
    Käännä projekti käyttämällä Spagoa:

    bash
    Kopioi koodi
    spago build
  3. 2/4 Kysyin ChatGPT:ltä: "Kuinka elm-kielellä muodostetaan dialogi-ikkuna näytölle?"

    vastaus:

    Varmista, että sinulla on asennettuna Elm ja tarvittavat riippuvuudet. Luo Elm-projekti ja lisää paketteja tarvittaessa:

    bash
    Kopioi koodi
    elm init
    Vaihe 2: Koodi Elmissä
    Tässä on täydellinen esimerkki Elm-koodista, joka näyttää dialogi-ikkunan ja antaa käyttäjän avata tai sulkea sen:

    elm
    Kopioi koodi
    module Main exposing (..)

    import Browser
    import Html exposing (Html, button, div, text)
    import Html.Attributes exposing (class)
    import Html.Events exposing (onClick)


    -- Malli eli sovelluksen tila
    type alias Model =
    { isDialogOpen : Bool }


    -- Alkuarvot sovellukselle
    init : Model
    init =
    { isDialogOpen = False }


    -- Sovelluksen eri viestit eli tapahtumat
    type Msg
    = OpenDialog
    | CloseDialog


    -- Sovelluksen tilan päivittäminen tapahtuman perusteella
    update : Msg -> Model -> Model
    update msg model =
    case msg of
    OpenDialog ->
    { model | isDialogOpen = True }

    CloseDialog ->
    { model | isDialogOpen = False }


    -- Näkymän määrittely
    view : Model -> Html Msg
    view model =
    div []
    [ button [ onClick OpenDialog ] [ text "Avaa Dialogi" ]
    , viewDialog model
    ]


    -- Dialogin määrittely, joka näkyy vain, jos isDialogOpen on tosi
    viewDialog : Model -> Html Msg
    viewDialog model =
    if model.isDialogOpen then
    div [ class "modal" ]
    [ div [ class "modal-content" ]
    [ text "Tämä on dialogi-ikkuna!"
    , button [ onClick CloseDialog ] [ text "Sulje" ]
    ]
    ]
    else
    text ""


    -- Pääfunktio sovelluksen ajamiseen
    main =
    Browser.sandbox { init = init, update = update, view = view }
    Vaihe 3: CSS modaalille
    Jotta dialogi näyttää modaalilta (keskellä ruutua oleva ikkuna, joka peittää muun sisällön), lisää seuraavanlainen CSS-tiedosto:

    css
    Kopioi koodi
    /* Yleinen dialogin taustatyyli */
    .modal {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);
    display: flex;
    justify-content: center;
    align-items: center;
    }

    /* Dialogi-ikkunan sisältö */
    .modal-content {
    background-color: white;
    padding: 20px;
    border-radius: 5px;
    text-align: center;
    }
  4. Olisiko sillä lattiankannattajan vaihtamisella puusta betoniharkkoon ratkaisevaa merkitystä kuitenkaan, edustaahan palkkien ala alle 10 % prosenttia lattia-alasta ja palkkien päällä kuitenkin 65 mm XPS-eristettä (siis jos tästä oli kyse)? Aika minimaalisia alapohjan kautta tapahtuvat lämpöhäviöt noin ylipäätäänsäkään ovat. Merkitsevät häviöt tässä tapahtuisivat viherhuoneen seinien, ikkunoiden ja katteen läpi. Toki perusmuuriin tarvittaisiin tuhdisti lämmöneristettä ja maahan vaakaan normaalit vahvuudet routaa vastaan.

    Mikäli viherhuoneen lattialaatan alapinta sijaitsisi hieman rossipohjaeristeiden alapintaa alempana siirtyisi laatan alla auringon lämmittämä ilma koko rossipohjan alalle ja lämpösäteily absorboituisi alla olevaan soraan ja lämmittäisi maata kesäkauden mittaan useamman metrin syvyyteen. Syksyn mittaan lämpövirta kääntyisi päinvastaiseen suuntaan ja maapohjaan varastoitunut lämpö lämmittäisi viherhuonetta ja pitäisi asuintilojen alapohjan lämpöhäviöt minimaalisina.
  5. Kiitoksia+vakuuttavista+kommenteista!+Jostain+siis+pitää+saada+lämpöenergiaa+radikaalisti+enemmän+maahan,+mikäli+ilman+lattiaeristeitä+meininki+selvitä.+Sivulla+http://maaputki.mbnet.fi/hobits.html+kirjoitetaan: "Syvälle+maahan+tuotu+lämpö+leviää+pallomaisesti+kaikkiin+suuntiin,+ylös-+ja+alassuunnat+eivät+eroa+toisistaan.+Lämpö+siirtyy+kuivassa+maaperässä+johtumalla,+lämpörintaman+edetessä+karkeasti+metrin+kuukaudessa.+Siten+maan+lämpötila+on+tasoittunut+kuuden+metrin+syvyydessä+hyvin+lähelle+ilman+vuotuista+keskiarvoa.+Aurinkolämpöä+kesällä+siirtäen+maansisäistä+vakiolämpötilaa+on+mahdollista+kohottaa+Etelä-+&+Keski-Suomen+2-6°C:sta+vaikka+noin+19°C:seen,+mikä+riittää+kattamaan+talon+lämmitys-+ja+ilmastointitarpeen."Mitäs+jos+talon+keskelle+tehdään+6-8+m+syvä+energiakaivo+betonirenkaista,+asennetaan+pohjalle+muutama+muovipinnoitettu+kuparikierukka+sekä+meno-+ja+paluuputket+ja+täytetään+kaivanto+hiekalla+lämmön+dumppausosuudelta+ja+ylempää+soralla,+ja+johdetaan+tuonne+huhtikuusta+lokakuuhun+aurinkokeräinkentästä+ylijäämäenergia?+Maahan+dumpattu+lämpö+saavuttaisi+lattian+noin+puoli+vuotta+viivästyneenä+eli+sopivasti+lämmittämään+talvipakkasilla+rakennusta.+Betonirengaskaivot+ovat+tosin+sen+verran+kalliita,+että+ehkä+halvemmaksi+tulisi+porauttaa+muutama+-+puolen+tusinaa+perinteisempää+energiakaivoa+keskelle+talon+maapohjaa;+mutta+ymmärtääkseni+noissa+vakiona+käytettävät+lämmönkeruuputkistot+eivät+kestä++80–100+°C+lämpötila-alueella,+joten+niihin+joutuisi+teettämään+erikoiskomponentit+kuparista;+mikä+tulisi+varsin+tyyriiksi.+Toisaalta+tuota+voisi+kompensoida+lisäämällä+kaivojen+määrää,+mikä+puolestaan+lisäisi+aurinkokeräinten+hyötysuhdetta,+mutta+nyt+taaseen+lämmön+joutuisi+dumppaamaan+lähemmäs+talon+reunoja,+jolloin+taas+lämpä+karkaisi+aikaisemmin+ympäröiviin+maamassoihin+eli+siksi+tuo+yksi+betonikaivo+keskelle+taloa.+Saikohan+tästä+kukaan+mitään+tolkkua...+:)