Näytä kirjoitukset

Tässä osiossa voit tarkastella kaikkia tämän jäsenen viestejä. Huomaa, että näet viestit vain niiltä alueilta, joihin sinulla on pääsy.


Viestit - ilkant

Sivuja: [1] 2 3 ... 81
1
Yleistä keskustelua / Ohjelmointikielien historiapuu
« : tänään kello 02:18 »
Siirsin tuolta Ubuntun uuden version keskusteluketjusta tämän ohjelmointikielien historian tänne omaksi viestiksi. Sopii paremmin tänne alueelle.

Ohjelmointikielien historiapuu. Ja jos tuota kaaviota vähän kritisoisi, niin Pythonissa on mielestäni jonkinmoiset listojen käsittelyominaisuudet kuten Lispissä.

Tein tuolle historiapuulle Linuxin dot-ohjelman ohjaustiedoston ohjelmointikielet.dot ja sen kuva. Saa käyttää, mutta toivon, että lisäyksistä ilmoitetaan, jotta voin lisätä ne tuohon omaan kaaviooni.

Tuossa kaaviossa ei ole Basic-kieltä. Siitäkin on versio Simon's Basic. Ehkä muitakin. Sitten 1970-luvun loppupuolella tuli ohjelmoitavia laskimia. Texas Instrumentsin laskimessa oli AOS-logiikka, jolla pystyi tekemään yksinkertaisia ohjelmia (funktioita).

2
Tämä Microsoftin vaatimus voi vähän rajoittaa Win 11 -ohjelmien käyttöä.

3
Ubuntun kehitysversio / Vs: Ubuntu 25.10 Questing Quokka
« : tänään kello 00:37 »
Noin 20 vuotta sitten juttelin jonkun kanssa, että onko Rust parempi kuin Python.

Vähän liioittelun makua, kun Rust 1.0 julkaistiin 2015 ja ensimmäinen julkinen versiokin oli vasta 2012. :)

https://en.wikipedia.org/wiki/Rust_(programming_language)

Mietin tarkemmin ja se on ollut Javan aikaa kun joku toinen ohjelmointikieli tuli markkinoille ja oli Javaa parempi. Ei siis Pythonia. On todennäköisesti ollut 2000-luvun ihan alkupuolta.

Löytyihän se tieto viimein. Se oli Ruby.

4
Tässä on uudempi versio, joka ottaa vain siinä hakemistossa olevat python-ohjelmat. Aiempi ottaa myös alihakemistot. Huomasin niissä paljon kirjastopaketteja yms.

Koodia: [Valitse]
import os

def laske_python_rivit(hakemisto):
    yhteensa_koodi = 0
    yhteensa_kommentit = 0

    # Käydään läpi vain annetun hakemiston tiedostot, ei alihakemistoja
    for tiedosto in os.listdir(hakemisto):
        if tiedosto.endswith(".py"):
            tiedoston_polku = os.path.join(hakemisto, tiedosto)
            if not os.path.isfile(tiedoston_polku):
                continue

            try:
                with open(tiedoston_polku, 'r', encoding='utf-8') as f:
                    rivit = f.readlines()

                    koodi_rivit = 0
                    kommentti_rivit = 0
                    monirivi_kommentti = False

                    for rivi in rivit:
                        teksti = rivi.strip()

                        # Ohita tyhjät rivit
                        if not teksti:
                            continue

                        # Tarkista moniriviset kommentit (''' ... ''')
                        if teksti.startswith("'''") and teksti.endswith("'''") and len(teksti) > 6:
                            # yhdellä rivillä alkava ja loppuva monirivinen kommentti
                            kommentti_rivit += 1
                            continue
                        elif teksti.startswith("'''") and not monirivi_kommentti:
                            monirivi_kommentti = True
                            kommentti_rivit += 1
                            continue
                        elif teksti.endswith("'''") and monirivi_kommentti:
                            monirivi_kommentti = False
                            kommentti_rivit += 1
                            continue
                        elif monirivi_kommentti:
                            kommentti_rivit += 1
                            continue

                        # Yksiriviset kommentit
                        if teksti.startswith("#"):
                            kommentti_rivit += 1
                        else:
                            koodi_rivit += 1

                    yhteensa_koodi += koodi_rivit
                    yhteensa_kommentit += kommentti_rivit

                    print(f"{tiedosto}: {koodi_rivit} koodiriviä, {kommentti_rivit} kommenttiriviä")

            except Exception as e:
                print(f"Virhe tiedoston {tiedoston_polku} käsittelyssä: {e}")

    print(f"\nYhteensä kaikissa tiedostoissa:")
    print(f"  Koodirivejä: {yhteensa_koodi}")
    print(f"  Kommenttirivejä (myös moniriviset): {yhteensa_kommentit}")
    print(f"  Yhteensä: {yhteensa_koodi + yhteensa_kommentit}")
    return yhteensa_koodi, yhteensa_kommentit


if __name__ == "__main__":
    hakemisto = input("Anna hakemiston polku: ").strip()
    laske_python_rivit(hakemisto)

Esimerkkiajo:
Koodia: [Valitse]
Yhteensä kaikissa tiedostoissa:
  Koodirivejä: 1598
  Kommenttirivejä (myös moniriviset): 221
  Yhteensä: 1819

Tämä jättää pois myös ''' alkuiset kommentit. Jätin tuon aiemman vielä näkyviin, jos joku haluaa sellaista käyttää. Siinä on os.listdir:in sijaan os.walk .

5
Yleistä keskustelua / 500 vierasta ja 2 jäsentä
« : 08.10.25 - klo:13.32 »
Foorumilla oli äsken 500 vierasta ja 2 jäsentä. Hyvin moni lukee tämän foorumin sisältöä. Foorumilla on merkitystä.

6
Ubuntun kehitysversio / Vs: Ubuntu 25.10 Questing Quokka
« : 08.10.25 - klo:13.25 »
Tuossa uudessa versiossa käytetään Rust-kieltä. Monet ovat pelänneet, että se syöksee Ubuntun (ja Kubuntun) kehityksen alas. Toisten mielestä se voi entisestään vähentää bugeja. Olen tuon jälkimmäisen ajatuksen kannalla. Noin 20 vuotta sitten juttelin jonkun kanssa, että onko Rust parempi kuin Python. Hän oli sitä mieltä, että Rustissa tarvitaan vähemmän koodirivejä. Se on siis tehokkaampi ja ilmaisuvoimaisempi kieli.

Esimerkkinä komento sudo. Vähän aikaa on rinnakkain käytettävissä sudo ja sudo-rs. Hieman rohkeutta tarvitaan sudo-rs:n käyttöön. Rustilla koko järjestelmän voisi saada sekaisin ylläpitäjän oikeuksilla.  8)

Heti tämän kirjoittamisen jälkeen foorumi taisi kyykätä. Luulin jo saaneeni ikuiset bannit tänne kun tuollaisia kirjoitin.  ;D

7
Tätä voi soveltaa muiden kielien projekteihin myös. Ja tekoälyltä voi pyytää sen muun kielisen ohjelman luomista, jos pythonia ei ole käytössä. Tuo os.walk mahdollistaa myös alihakemistojen läpikäynnin.

8
Nykyisin uv on erittäin varteenotettava ratkaisu Pythonin pakettienhallintaan. Se korvaa pipin ja venvin omalla toteutuksellaan.

Tutustuin tuohon uv:hen ja tuntuu ihan pätevältä systeemiltä. Kiitos tiedosta. Luen vielä lisää siitä.

9
Tekoäly teki minulle python-ohjelman, joka laskee yhden projektin python-koodirivien määrän. Tällä voi katsoa hiukan, miten laaja projekti kysymyksessä on. Aloitin 8 vuotta sitten Pythonin opettelun yhdellä genetiikan ohjelmiston kehittämisellä. Sitten projekti keskeytyi ulkoisista syistä. Yritin jatkaa sitä 4 vuotta sitten. Mutta ei oiekin into syttynyt. Nyt tekoälyllä tein sen projektin merkkipohjaisesta toimintavalikoista KDE Qt6 ohjlmen. Sen käyttöliittymän se osasikin tehdä graafisena ihan mukiinmenevällä tavalla. Innostuin sitten koodaamaan lisää. Ja tavoite on saada siitä toimiva ohjelma.

Tiedän yhden genetiikan firman, joka on sanonut käyttävänsä tekoälyä pyhologeneettisen puun rakentamiseen. Ehkä toinen firma käyttää myös. Ja minäkin voisin ratkaista tuon oman ohejlmani ydintoiminnot tekoälyavusteisesti.

Tässä on python-ohjelma, joka laskee projektin python-koodirivien määrän. Se osaa eritellä kommenttirivit erikseen. Ja ei ota huomioon tyhjiä rivejä.

Koodia: [Valitse]
import os

def laske_python_rivit(hakemisto):
    yhteensa_koodi = 0
    yhteensa_kommentit = 0

    for polku, _, tiedostot in os.walk(hakemisto):
        for tiedosto in tiedostot:
            if tiedosto.endswith(".py"):
                tiedoston_polku = os.path.join(polku, tiedosto)
                try:
                    with open(tiedoston_polku, 'r', encoding='utf-8') as f:
                        rivit = f.readlines()

                        koodi_rivit = 0
                        kommentti_rivit = 0
                        monirivi_kommentti = False

                        for rivi in rivit:
                            teksti = rivi.strip()

                            # Ohita tyhjät rivit
                            if not teksti:
                                continue

                            # Tarkista monirivinen kommentti (""" tai ''')
                            if teksti.startswith(("'''", '"""')):
                                if teksti.count("'''") == 2 or teksti.count('"""') == 2:
                                    # Yhdellä rivillä alkava ja loppuva kommentti
                                    kommentti_rivit += 1
                                else:
                                    # Aloitetaan tai lopetetaan monirivinen kommentti
                                    monirivi_kommentti = not monirivi_kommentti
                                    kommentti_rivit += 1
                                continue

                            if monirivi_kommentti:
                                kommentti_rivit += 1
                                continue

                            # Yksirivinen kommentti
                            if teksti.startswith("#"):
                                kommentti_rivit += 1
                            else:
                                koodi_rivit += 1

                        yhteensa_koodi += koodi_rivit
                        yhteensa_kommentit += kommentti_rivit

                        print(f"{tiedosto}: {koodi_rivit} koodiriviä, {kommentti_rivit} kommenttiriviä")

                except Exception as e:
                    print(f"Virhe tiedoston {tiedoston_polku} käsittelyssä: {e}")

    print(f"\nYhteensä:")
    print(f"  Koodirivejä: {yhteensa_koodi}")
    print(f"  Kommenttirivejä: {yhteensa_kommentit}")
    print(f"  Yhteensä (molemmat): {yhteensa_koodi + yhteensa_kommentit}")
    return yhteensa_koodi, yhteensa_kommentit


if __name__ == "__main__":
    hakemisto = input("Anna hakemiston polku: ").strip()
    laske_python_rivit(hakemisto)

Ja tässä on koeajo:

Koodia: [Valitse]
Yhteensä:
  Koodirivejä: 290109
  Kommenttirivejä: 167012
  Yhteensä (molemmat): 457121

Tästä voisi kehitellä vielä lisää analytiikkaa, jos haluaa...

10
Onko tässä nyt kysymys siitä, että asennus yrittää asentaa vanhemman version numpystä kuin mitä järjestelmässä on? Järjestelmä on Kubuntu 25.04. Miten sen asennusvirheen voisi ohittaa siten, että wordcloudein asennus menisi onnistuneesti loppuun.

Koodia: [Valitse]
$ sudo pip install --break-system-packages wordcloud
Collecting wordcloud
  Using cached wordcloud-1.9.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.4 kB)
Requirement already satisfied: numpy>=1.6.1 in /usr/lib/python3/dist-packages (from wordcloud) (2.2.3)
Requirement already satisfied: pillow in /usr/lib/python3/dist-packages (from wordcloud) (11.1.0)
Requirement already satisfied: matplotlib in /usr/lib/python3/dist-packages (from wordcloud) (3.8.3)
Requirement already satisfied: contourpy>=1.0.1 in /usr/lib/python3/dist-packages (from matplotlib->wordcloud) (1.3.1)
Requirement already satisfied: cycler>=0.10 in /usr/lib/python3/dist-packages (from matplotlib->wordcloud) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /usr/lib/python3/dist-packages (from matplotlib->wordcloud) (4.55.3)
Requirement already satisfied: kiwisolver>=1.3.1 in /usr/lib/python3/dist-packages (from matplotlib->wordcloud) (1.4.7)
Collecting numpy>=1.6.1 (from wordcloud)
  Using cached numpy-1.26.4-cp313-cp313-linux_x86_64.whl
Requirement already satisfied: packaging>=20.0 in /usr/lib/python3/dist-packages (from matplotlib->wordcloud) (24.2)
Requirement already satisfied: pyparsing>=2.3.1 in /usr/lib/python3/dist-packages (from matplotlib->wordcloud) (3.1.2)
Requirement already satisfied: python-dateutil>=2.7 in /usr/lib/python3/dist-packages (from matplotlib->wordcloud) (2.9.0)
Using cached wordcloud-1.9.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (537 kB)
Installing collected packages: numpy, wordcloud
  Attempting uninstall: numpy
    Found existing installation: numpy 2.2.3
error: uninstall-no-record-file

× Cannot uninstall numpy 2.2.3
╰─> The package's contents are unknown: no RECORD file was found for numpy.

hint: The package was installed by debian. You should check if it can uninstall the package.

11
Yleistä keskustelua / Viestien tykkäykset
« : 29.09.25 - klo:13.41 »
Olen useammin kuin kerran kaivannut tänne viestien peukutusta. Siis keskustelunavauksiin ja myös vastauksiin. Tästä foorumisoftasta SMF 2.0.19 on olemassa uudempia versioita, mm. 2.1 sarja. Keskustelua tykkäyksistä[/url] löytyy myös. Tähän(kin) SMF 2.0.19 voi asentaa modin Like Posts.

Peukutus olisi kätevä. On aika turhaa kirjoittaa vastaus, jossa sanoo "tykkään tuosta kommentista". Siinä vastauksessa ei näet ole sinänsä mitään lisää keskusteluun.

12
Lehtiartikkelissa oli neuvo "Älä klikkaa sähköpostissa tullutta linkkiä noin vain". Jos tätä yksinkertaista ohjetta ei ihminen ymmärrä, niin sitten voi tulla vaaran hetkiä.

13
Sain tehtyä asennustikun KDE Neon unstablen iso-imagesta tänään 24.9.2025. Kun aloin asentaa sillä tikulla tuota käyttistä, niin asennuksessa tuli joku Magic number error. Otin tikun sitten pois ja boottasin tuohon aiemmin asennettuun KDE Neon Testing -versioon. Siihen tuli päivityksiä. Kun kone boottasi sen jälkeen, hämmästys oli suuri. Ruudulle tuli ilmoitus KDE Plasma 6.5 Betasta. Järjestelmän info sanoi Plasman versioksi 6.4.90. Eli se on 6.5 Beta.

Nyt ei sitten tarvitsekaan sitä unstablea asentaa. Ja voi akateemisesta mielenkiinnosta pohtia Magic number -virhettä. Ilmeisesti unstablessa voi noinkin olla. Tai kehittäjät eivät ole vielä törmänneet Acerin läppäriin.

Ne muistivirheet ovat olleet vähäisempiä kun käyttö on vähentynyt. Mutta nyt niitä alkaa taas olla. Ehkä koneen lämpötila vaikuttaa hiukan.

14
Ongelma ohi. Ensin tein ilmaisen tekoälyn antamin ohjein:

Koodia: [Valitse]
sudo apt install --reinstall udisks2 gvfs gvfs-backends kio-extras

Kun ei vielä toiminut, niin käynnistin Gparted-ohjelman ja alustin tikulle ext4. Kun poistin tikun usb-asemasta ja laitoin takaisin, niin Kubuntu näki tikun ja kun painoin ilmoituksesta Liitä, niin se liitti sen järjestelmään ja avautui tiedostonäkymänä (tyhjänä sellaisena). Homma pelittää! Kiitos mielenkiinnosta. Tuli tutkittua myös dmesg-tulostuksia. Se ilmoitti jotain virheitä. Yllä olevalla jutulla niitä ei nyt enää ole.

15
Kun laitan USB-tikun USB-väylään, se ilmestyy Kubuntuun ilmoituksena. Se näkyy palkissa kyllä, mutta levyt ja laitteet (avautuu ohjelmapalkista) Taltio-osassa on kyllä tiku nimi oikein, mutta kuvassa on punaisella taustalla ruksi ja teksti Tätä laitetta ei voida liittää. Huomionarvoista on, että aiemmin liitetyt laitteet usb-väylään toimivat ok jokaisen bootin jälkeen.

On mahdollista, että olen vahingossa poistanut jonkun komponentin ohjelmistosta, joka estää nyt tämän liittämisen. Kun yritin asentaa apt:llä uudelleen mount-ohjelmaa, se ilmoittaa: mount on jo uusimmassa versiossa (2.40.2-14ubuntu1.1). Turhien ohjelmapakettien poistossa kävi lopulta niin, että selaimet Chromium sekä Firefox ei enää käynnistyneet, vaikka ohjelmapalkista ne käynnistikin. Ja kun yritin asentaa uudelleen ohjelmia, niin asennus johti joka kerta virheeseen. Lopulta netistä löytynein ohjein poistin koko snapin (ja snapd:n). Ja kesti jonkin aikaa ja usita kokeiluja, ennen kuin sain asennukset onnistumaan. Tuo usb-tikun liittäminen oli jo aiemmin, joten nuo eivät ole sitä tehneet.

Olen poistellut turhia ohjelmia aiemmin. Voisiko olla niin, että snapin core-komponenteista jokin puuttuu? Tai jokin muu ohjelmapaketti?

Ja onko vinkkejä, miten tämän voisi korjata? Mitä kaikkea ohjelmia kone käyttää kun yrittää liittää tikkua järjestelmään loogisesti?

17
Parasta sisältöä tuossa on kyllä nuo ehdotetut selvityskeinot. Löysikö tuo muuten myös linkin siihen bugiraporttiin? Jos löysi ja se vastasi kuvausta, niin se voi todellakin olla hyödyllistä.

Se linkki oli Lauchpadiin. Pitääpä katsoa sieltä lisää. Tämä jäätyily tuntuu olevan ajottaista. Joskus voi aika pitkäänkin toimia ilman jäätymistä ja sitten niitä tulee ja joskus tulee usein.

18
Plasma 6.5 betan sivuilla ehdotetaan kahta helppoa vaihtoehtoa testaamiseen: USB-tikulta käynnistettävää livejärjestelmää tai Docker-imagea. Lisää Docker-ohjeita näyttää olevan täällä: https://community.kde.org/Neon/Containers
Veikkaan että Plasma 6.5 beta on tällä hetkellä ainoastaan Neonin unstable- ja developer-versioissa.

Tuosta kun valitsee KDE Neonin, niin se vie sivulle, josta voi ladata kokonaisen KDE Neonin. Pitäisikö se siis asentaa kokonaan uusiksi? Onko tämä Testing vielä joku eri versio kuin unstable tai developer versio? Sinänsä kun tuo läppäri on lähinnä testauskäyttöön tarkoitettu, niin voisin vaikka tuon developer-version asentaa. Pieni harmi, jos jossain kokouksen äänestyksessä järjestelmä bugaa eikä pysty äänestämään tärkeitä asioita. :) Kokouksia aika harvoin.

19
Tuollaisella sivulla puhutaan Plasma 6.5:stä, mutta linkki KDE Neoniin tuo sivun, jolta saisi Plasma 6.2:n ladattua. Tässä on nyt jo Plasma 6.4.5.

20
KDE Plasma 6.5 kehoitetaan testaamaan kun siitä on olemassa beta1 -versio. Yritin asentaa sellaista KDE Neon Testing -järjestelmään. En löytänyt miltään sivulta mitään pakettia tuolle betalle. Sitten kokeilin järjestelmäpäivityksellä. Joku tekoäly neuvoi, että /etc/pacman.conf tiedostoon pitäisi laittaa joku ENABLE. No, koko pacman.conf -tiedostoa ei tusta hakemistosta löytynyt. Editoin sellaisen tiedoston ja laitoin muuttujalle =ENABLE. En muista nyt sitä muuttujaa. Mitään ei tapahtunut rebootin jälkeen. Tai siis ei Discoveriin ilmestynyt beta pakettia. Sitten laitoin johonkin upgrade-tiedostoon sellaisen määritteen, että järjestelmä päivittäisi kaikki muutkin kuin lts-päivitykset ja normaalit päivitykset. Ei siis mitään kotnrollia. Ei auttanut.

Mitenhän tuon Plasma 6.5 betan voisi asentaa?

Sivuja: [1] 2 3 ... 81