diff --git a/2015/demot/tim/demot.md b/2015/demot/tim/demot.md index 0904a164208fca0f019fd68e1932e0bc0dca13a9..78dfba667a4490515e88d227b86c3237f54b4757 100644 --- a/2015/demot/tim/demot.md +++ b/2015/demot/tim/demot.md @@ -259,42 +259,41 @@ tag: tiedostonpalautus_d06 # Palautuslokerot vapaaehtoisille bonus-tehtäville -# -#~~~~ {#vastaustiedosto_v01 plugin="uploader"} -#prompt: | -# Bonusdemon 1 palautettava tiedosto. -#tag: tiedostonpalautus_v01 -#~~~~ -#~~~~ {#vastaustiedosto_v02 plugin="uploader"} -#prompt: | -# Bonusdemon 2 palautettava tiedosto. -#tag: tiedostonpalautus_v02 -#~~~~ +~~~~ {#vastaustiedosto_v01 plugin="uploader"} +prompt: | + Bonusdemon 1 palautettava tiedosto. +tag: tiedostonpalautus_v01 +~~~~ -#~~~~ {#vastaustiedosto_v03 plugin="uploader"} -#prompt: | -# Bonusdemon 3 palautettava tiedosto. -#tag: tiedostonpalautus_v03 -#~~~~ +~~~~ {#vastaustiedosto_v02 plugin="uploader"} +prompt: | + Bonusdemon 2 palautettava tiedosto. +tag: tiedostonpalautus_v02 +~~~~ -#~~~~ {#vastaustiedosto_v04 plugin="uploader"} -#prompt: | -# Bonusdemon 4 palautettava tiedosto. -#tag: tiedostonpalautus_v04 -#~~~~ +~~~~ {#vastaustiedosto_v03 plugin="uploader"} +prompt: | + Bonusdemon 3 palautettava tiedosto. +tag: tiedostonpalautus_v03 +~~~~ +~~~~ {#vastaustiedosto_v04 plugin="uploader"} +prompt: | + Bonusdemon 4 palautettava tiedosto. +tag: tiedostonpalautus_v04 +~~~~ -#~~~~ {#vastaustiedosto_v05 plugin="uploader"} -#prompt: | -# Bonusdemon 5 palautettava tiedosto. -#tag: tiedostonpalautus_v05 -#~~~~ +~~~~ {#vastaustiedosto_v05 plugin="uploader"} +prompt: | + Bonusdemon 5 palautettava tiedosto. +tag: tiedostonpalautus_v05 +~~~~ -#~~~~ {#vastaustiedosto_v06 plugin="uploader"} -#prompt: | -# Bonusdemon 6 palautettava tiedosto. -#tag: tiedostonpalautus_v06 -#~~~~ +~~~~ {#vastaustiedosto_v06 plugin="uploader"} +prompt: | + Bonusdemon 6 palautettava tiedosto. +tag: tiedostonpalautus_v06 +~~~~ diff --git a/2015/demot/yleispalautteita.txt b/2015/demot/yleispalautteita.txt index 6ee37ccca091904bf645e14a1933a154adcf363b..27c39b7771412921904b190b2f9fbc987af55b7c 100644 --- a/2015/demot/yleispalautteita.txt +++ b/2015/demot/yleispalautteita.txt @@ -1,5 +1,67 @@ Yleisiä palautepätkiä, joita tarvitsi copy-pastata useaan vastaukseen. +v01_vaarallisia_ohjelmia +--------------------------- + +Hyväksytään, kun on yritetty tehdä ja kommentoitu prosessia uskottavasti. +EI OLE KUITENKAAN MISSÄÄN NIMESSÄ OIKEIN! Syy: + +Hyväksytään, kun on yritetty tehdä. +EI OLE KUITENKAAN MISSÄÄN NIMESSÄ OIKEIN! Syy: + + + +Toimivalta näyttää. Kohteliasta tosin olisi vapauttaa lopussa vielä c, +koska se on dynaamisesti varattua muistia. Esim. jos nykyinen +pääohjelma refaktoroinnin yhteydessä siirrettäisiin yleiskäyttöiseksi +aliohjelmaksi, niin kyseinen aliohjelma saattaisi epähuomiossa jäädä +vuotamaan muistia osoitteessa c. + +Pääsääntönä tulisi olla tarkkana ja vapauttaa aina eksplisiittisesti +kaikki, mitä on varannutkin. Jäisi se toimintamalli +"selkäytimeen". Tässä esimerkissähän koko ohjelman loppuminen kyllä +vapauttaa kaiken prosessilla käytössä olleen muistin. Todellisia +ongelmia voi tulla prosessien yhteisten resurssien, kuten +viestijonojen tai semaforien kanssa. Näiden osaltahan ei auta edes +uudempien alustakirjastojen turvavyöt, koska vain sovelluksen tekijä +tietää, tuleeko ohjelman vapauttaa resurssi vai jättää se myöhempien +prosessien käyttöön. Näilläkin voi olla kiintiömäärä, jonka loputtua +uutta vastaavaa resurssia ei saa enää varattua. (Ja muistia vievät +toki nämäkin, joskin käyttöjärjestelmän muistialueen puolelta! Ja +viestijonon jäädessä eloon jää sinne myös toistaiseksi +käsittelemättömät viestit viemään oman osansa muistista.) + + + +Huom.. nohevan opiskelijan cross-platform -koodi: + +#if defined(_WIN32) || defined(_WIN64) || defined(OS_WINDOWS) +#include <windows.h> +#else +#include <unistd.h> // for usleep +#endif + +#include<stdio.h> +#include<string.h> +#include<stdlib.h> +//#include "turvavyo.h" + +void sleep_ms(int milliseconds) // cross-platform sleep function +{ +#ifdef WIN32 + Sleep(milliseconds); +#else + usleep(milliseconds * 1000); +#endif +} + + +v02_toteutuskatsaus +--------------------- + + + + d01_sormet_unixiin -------------------