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 ... 54
1
Nyt tärppäsi! Kohdan 1 display(p) toimi! Kiitos. Tämän ansiosta tuli tosin päivitettyä Plots uudemmaksi ja ilmeisen monipuolisemmaksi ja myös Julia tuli päiviettyä 1.8.5:ksi ja tutustuttua myös 1.9.0 betaan.

2
Mitä tiedosto solmu2.jl sisältää:

Se on tuolla ensimmäisessä viestissä. Siitä oli jäänyt viimeinen rivi pois. Laitan tähän uudelleen sisällön. Aiemmin nuo Julia-ohjelmat ovat piirtäneet ne käppyrät. Vaikuttaa siltä, että Kubuntun päivityksissä on tullut jotain, joka estää nyt piirroksen näkymisen. Tai Julian uudemmissa versioissa on jotain, joka Kubuntun kanssa ei nyt toimi. Itse ohjelma kyllä suoriutuu. Kokeilin muitakin käppyränpiirtämisiä eikä niitäkään tullut näkyviin. Plots asennusohjeen mukaan asensin Plots-moduulin uudestaan.

Koodia: [Valitse]
using Plots
t = range(0, 2*pi, length=500);
x = @. (2+cos(3*t))*cos(2*t);
y = @. (2+cos(3*t))*sin(2*t);
z = @. -sin(3*t);
points = [x,y,z] ;
Plots.plot(points[1,:],points[2,:], points[3,:], seriestype=:scatter, markersize = 2,legend=false)
readline()

Kokeilin nyt yhtä käppyränpiirto-ohjelmaaa, joka tallettaa kuvan gif-animaatioksi levylle. Se kuva näkyy selaimessa ja käppyrä liikkuu. Eli kyllä Plots sinänsä toimii. En käytä Waylandia. Tulkoon sekin mainittua.

Koodia: [Valitse]
using Plots
# define the Lorenz attractor
Base.@kwdef mutable struct Lorenz
    dt::Float64 = 0.02
    σ::Float64 = 10
    ρ::Float64 = 28
    β::Float64 = 8/3
    x::Float64 = 1
    y::Float64 = 1
    z::Float64 = 1
end

function step!(l::Lorenz)
    dx = l.σ * (l.y - l.x)
    dy = l.x * (l.ρ - l.z) - l.y
    dz = l.x * l.y - l.β * l.z
    l.x += l.dt * dx
    l.y += l.dt * dy
    l.z += l.dt * dz
end

attractor = Lorenz()


# initialize a 3D plot with 1 empty series
plt = plot3d(
    1,
    xlim = (-30, 30),
    ylim = (-30, 30),
    zlim = (0, 60),
    title = "Lorenz Attractor",
    legend = false,
    marker = 2,
)

# build an animated gif by pushing new points to the plot, saving every 10th frame
@gif for i=1:1500
    step!(attractor)
    push!(plt, attractor.x, attractor.y, attractor.z)
end every 10

3
Enterin painalluksella ohejlman suoritus meni loppuun. Edelleenkään käppyrää koordinaatistolla ei tullut näytölle.

4
Kubuntusta katosivat kaikki tiedot versio 20.04 lts.

Jos ihan kaikki tiedot ovat kadonneet, niin se viittaa tilanteeseen, että laite ei havaitse levyä. Tai ei havaitse levyllä olevaa levykirjanpitoa. Jos levyyn ei koske (=sotke sisältöä), se on vielä pelastettavissa. Tällaisen tilanteen sain kokea kun muutama vuosi sitten levy hajosi. Jonkin ajan kuluttua kun aloin ottaa levyä toisenlaiseen käytötön, sainkin sen aiemman sisällön näkyville Linuxin fsck-komennolla. Ja hommathan jatkuivat sitten hienosti.

5
Huomasin, että noin viikko sitten on Juliasta tullut versio 1.8.5. Asensin sen ja aloin ajaa tuota skriptiä. Kului mielettömän kauan aikaa Plots-kirjaston kääntämiseen ja lopulta Ctrl-C:llä lopetin sen. Ei mitään virheilmoitusta. Liekö tämän raudan joku juttu, jota Julia ei osaa nyt käsitellä?

Koodia: [Valitse]
$ julia -i solmu2.jl
[ Info: Precompiling Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80]
^CERROR: LoadError: InterruptException:
Stacktrace:
 [1] poptask(W::Base.InvasiveLinkedListSynchronized{Task})
   @ Base ./task.jl:921
 [2] wait()
   @ Base ./task.jl:930
 [3] wait(c::Base.GenericCondition{Base.Threads.SpinLock})
   @ Base ./condition.jl:124
 [4] readuntil(x::Base.TTY, c::UInt8; keep::Bool)
   @ Base ./stream.jl:1012
 [5] readline(s::Base.TTY; keep::Bool)
   @ Base ./io.jl:543
 [6] readline(s::Base.TTY) (repeats 2 times)
   @ Base ./io.jl:542
 [7] top-level scope
   @ /mnt/sda1/JuliaProjects/solmu2.jl:8
in expression starting at /mnt/sda1/JuliaProjects/solmu2.jl:8
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.8.5 (2023-01-08)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia>

Sitten huomasin, että joulukuussa on ilmestynyt Julian versio 1.9.0 beta. Sekin asennettu nyt. Google-haulla löytyy tietoa, että se voi olla paljon nopeampi kuin aiemmat versiot.

Ja nämä ovat nyt solmujen testausohejlmia, joita huvikseen tekee. Ei kiirettä saada ohjelmaa toimimaan. Varsin mielenkiintoinen matemaattinen lause on, että triviaalit solmut aukeavat 4:ssä ulottuvuudessa. Eli kengännauhoja ei voi solmia solmuun neljännessä ulottuvuudessa. Ja toisekseen avaruusasioissa on käytetty jopa 26-ulotteisia matemaattisia avaruuksia (Tähdet ja avaruus 6/2009).

6
Kubuntu 22.10, Julia 1.8.4. Näytönohjain MSI GeForce GT 1030 2GH LF OC. Näyttö LG 34GK950F. Näytölle ei tulostu mitään. Aiemmin on tulostunut. Koodaajan omalla koneella näkyy käppyrä.

Julia-ohjelma:
Koodia: [Valitse]
using Plots
t = range(0, 2*pi, length=500);
x = @. (2+cos(3*t))*cos(2*t);
y = @. (2+cos(3*t))*sin(2*t);
z = @. -sin(3*t);
points = [x,y,z] ;
Plots.plot(points[1,:],points[2,:], points[3,:], seriestype=:scatter, markersize = 2,legend=false)

7
Kääntämällä (translate) tietokoneohjelmia esimerkiksi englannista suomeksi oppii ohjelmasta sen ominaisuuksia. Nyt huomasin, että myös bugiraportteja läpikäymällä oppii. Esimerkkinä tähtitieteen Stellarium-ohjelma. Kääntäessä tutustui moniin tähtitieteen termeihin, jotka olivat ennestään tuntemattomia. Viime yönä bugiraporttien lukemisella ja kokeillessani niitä, huomasin, että tähtitieteellinen laskin onkin paljon muutakin kuin laskin.

Koko kääntämisjuttu alkoi kohdallani KDE:n KCalc-ohjelman suomennoksessa olleesta pienestä typo-virheestä. Halusin, että se oikaistaisiin. Aie johti ottamaan selvää, miten käännöksiä tehdään. Ja siitä sitten homma laajeni.

8
Ubuntu tietokoneissa / Vs: Päivitysten latausnopeus
« : 14.01.23 - klo:14.25 »
Mitä sanoo nettiyhteyden nopeustesti? Onko pullonkaula oman koneen ja Internetin välissä? Tässä on linkki yhteen puolueettomaksi nopeustestiksi itseään mainostavaan testiin.

9
Minulle tuli Linux-koneella (ilman dual-boottia) venäjän kieltä järjestelmäilmoituksissa silloin tällöin. Ja myöhemmin myös kiinan hantseja. Ne taisivat loppua kun järjestelmäasetuksissa poistin muut kielet, paitsi suomen. Tällä foorumilla tuli tieto, että järjestelmäasetuksiin ei tarvitse lisätä kieliä, jos käsittellyissä dokumenteissa on vierasta kieltä. Voit siis kirjoittaa venäjänkielisiä tekstidokumentteja ja järjestelmässä ei ole asetettu venäjän kieltä yhdeksi kieleksi.

Nykyään ei ole tullut tuollaisia. Ilmeisesti ne johtuvat myös siitä, että kyseisiä kohtia ei ole käännetty eli niissä kohden on tyhjää ja siihen tulee sitten tilalle vierasta kieltä. Enkä tiedä, onko tästä kysymys tuossa sinun tilanteessa.

10
Huomaan Kubuntu 22.10:n toimivan käyttööni tosi hyvin. Rautapuolikin on uutta. Pöydällä vieressä olevaa Windows 10 -konetta en ole käynnistänyt pitkiin aikoihin. KDE:n Plasma on kehittynyt vuonna 2022 paljon bugisuuden vähenemisenä, mutta myös uusien käyttöä helpottavien ominaisuuksien myötä. On tullut kirjoiteltua foorumillekin vähemmän kun tietokoneesta on tullut väline, jota ei edes huomaa. Huomio on asioissa, joita tekee.

11
Päivityksissä tulee yleensä uusia ominaisuuksia. Ja osa niistä helpottaa jokapäiväistä koneen käyttöä. Olen käyttänyt Kubuntua noin 15 vuotta. Jos vaihtaisin distroa, siihen pitäisi voida ainakin KDE asentaa. Ei ole tällä hetkellä tarvetta vaihtaa.

12
Lueskelin mielenkiintoista tietoa Python 3.10 ja 3.11 sekä Cyrhonin vertailusta. Mielenkiintoista luettavaa Python 3.11 tehokkuudesta verrattuna Python 3.10:een. Nimittäin kääntäjän/tulkin tekemästä automaattisesta optimoinnista usein toistuvissa toistoissa.

Hankin python IDE:n ammattilaisversion kun yksi suurimmista kriteereistä oli mahdollisuus käyttää profileria. Nyt sain tietää, että ilmainen snakeviz tekee juuri tuota. Ja sen saa asennettua pipillä. Tietysti voi olla makuasioita visuaalisuudesta yms.

Koodia: [Valitse]
$ pip3 install snakeviz
$ python -m cProfile -o program.prof ohjelma.py
$ snakeviz program.prof

Yritinpä tuota vielä putkituksella:

Koodia: [Valitse]
$ python -m cProfile ohjelma.py | snakeviz
$ python -m cProfile ohjelma.py > snakeviz

Jälkimmäinen ei tuilostanut mitään, edes virheilmoitusta. Kumpikaan eivät aukaisseet selainsivua tuloksille.

13
Tein KDE-ohjelmasta filelight bugiraportin, koska se ei näyttänyt yhtä ln-komrennolla tehtyä alihakemistoa. Ohjelman kehittäjä käski käyttää  22.12, sillä 22.08 ei enää tueta. Vähäsanaisesta vastauksesta päälttelen, että kysymys on KDE Gearista. Mielestäni Kubuntu 22.10:een ei ole vielä ilmestynyt Gearin versiota 22.12. Mutta mistä näen Gearin version? Sitä ei näy Tietokeskuksen tiedoissa.

Ja ilmeisesti filelight käyttää jotain Gearin ohjelmaa. Gearhan on kokoelma perusohjelmia. Riittäisi, jos se on päivitettävissä Gear 22.12 -tasolle. Taidan mieluummin odotella virallista Gearin uutta julkaisua. Versio 22.12.1 tulee tammikuun alkupäivinä. Tosin sen ilmestyminen Kubuntuun voi kestää jonkin aikaa siitä.

14
Tässä on se funktio. Voi hyvällä onnella jopa toimia. Pienillä muutoksilla ainakin.

Koodia: [Valitse]
def prepare(source, search="") -> str:
        pos = rivi.index(search)
        if (pos != False):
            korvaus = "</" + search + ">"
            dest = rivi.replace("</" + search + ">","")
            dest = dest.replace("<" + search + ">","")
            return dest
        else:
            return None

Vastaavat pääohjelman rivit:

Koodia: [Valitse]
    while (rivi != False):
        rivi = rivi.trim()                                                  # (rivi, " \n\r\t\v\x00")  Rivin alusta roskat pois        !!! !!! !!!

        start = prepare(rivi, "start")
        print('START:', start)
        hour = substr(start,11,2)                             # Poimitaan tunti
        # print('HOUR:', hour, '\n')

        end = prepare(rivi, "end")
        # print('END:', end, '\n')

        pos = prepare(rivi, "position")                           # <position> on tasatunti startsta alkaen       
   
        price = prepare(rivi "amount");                            # Vihdoinkin se oleellisin: hinta
        price /= 10;

15
Jos joku haluaa koodata, niin tuota koodia voisi lyhentää muuttamalla nuo loppuosan if-lausekkeet funktiokutsuiksi ja se palauttaisi sitten halutun arvon haluttuun muuttujaan. Ei mikään vaikea homma.  ;D

16
Tuollaisen sivun tulkinta vaatii kustomoitua koodia tai kehittyneen koneoppimismallin. Sivulle linkitetty PDF voisi olla helpompi lähde:
https://www.iihf.com/pdf/751/ihm751000_08_1_0

Koodia: [Valitse]
import pandas as pd  # version 1.5.2
import lxml  # version 4.9.2
from tabula import read_pdf

if __name__ == '__main__':
    site = 'https://www.iihf.com/pdf/751/ihm751000_08_1_0'
    # games = read_pdf(site)
    df = read_pdf(site, pages='all')
    df.info()

Tulee virheilmoitukset: (ja vaikuttaa minulle kohtalaisen aloittelijalle liian vaikeilta ratkoa muuten kuin tuo FORBIDDEN, joka tarkoittanee, että IIHF:n palvelin ei hyväksy tietopyyntöä.
Koodia: [Valitse]
Traceback (most recent call last):
  File "Projects/IIHF_M18/main.py", line 9, in <module>
    df = read_pdf(site, pages='all')
  File "/home/user/venv/lib/python3.10/site-packages/tabula/io.py", line 415, in read_pdf
    path, temporary = localize_file(input_path, user_agent, use_raw_url=use_raw_url)
  File "/home/user/venv/lib/python3.10/site-packages/tabula/file_util.py", line 59, in localize_file
    req = urlopen(path_or_buffer)
  File "/usr/lib/python3.10/urllib/request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.10/urllib/request.py", line 525, in open
    response = meth(req, response)
  File "/usr/lib/python3.10/urllib/request.py", line 634, in http_response
    response = self.parent.error(
  File "/usr/lib/python3.10/urllib/request.py", line 563, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.10/urllib/request.py", line 496, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.10/urllib/request.py", line 643, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

Process finished with exit code 1

Jää sitten vielä keinoksi kirjoittaa IIHF:lle kirje, että tarjoaisivat nuo .ics -tiedostona, joaa on huomioitu TimeZonet. Eli menee suoraan kalenteriin oikeilla kellonajoilla penkkiurheilijan kotimaassa. Tietysti helpottaisi jo se, että html-sivulla ajat olisivat penkkiurheilijan timezonessa. Mutta alkuperäinen idea oli tehdä pulautin, joka veisi nuo Google-kalenteriin. Optiolla vain Suomen pelit tai valinnan mukaan kaikki pelit.

17
voisiko sen tekemäsi koodin saada tänne?

Tässähän se. Sitä ei ole testattu kummemmin kun siitä puuttuu oleellisia osia: strtok ja file_get_contents . Ja joku saattaisi abstrahoida enemmän. Tuo on ihan perusväännetty.
Koodia: [Valitse]
# *******************************************************************************
# 261122 PTMusta, "Mistofeles", cordite(at)outlook.com
# Jos jaat ohjelmaa eteenpäin, toivon, että yllä oleva puumerkkini säilyisi
# If you copy and modify this program, I hope you don&#39;t remove my namestamp above##
#
# Ohjelma on tässä muodossaan testattu
# Linux Mint 20.3 Una, 5.4.0-132-generic, php 7.4
# Ubuntu 22.04.1 LTS, 5.15.0-53-generic, php 8.1
# Toimii varmasti muissaskin Linux-versioissa ainakin pienin muutoksin
# M$:n käyttöjärjestelmäyritelmä on kokeilijan vastuulla
#
# Ohjelma hakee ENTSO-E-palvelimelta sähkön spot-hinnan
# Tätä varten pitää rekisteröityä ENTSO-E -järjestelmään ja anoa [u]security tagia[/u] ohjeiden mukaan sähköpostilla
# OHJEITA:
# https://transparency.entsoe.eu/content/static_content/Static%20content/web%20api/Guide.html#_parameters
# https://transparency.entsoe.eu/content/static_content/download?path=/Static%20content/web%20api/RestfulAPI_IG.pdf
# ******************************************************************************************\
# Tulostetaan tämä ja huomispäivä. Kellonajat ovat UTC

import datetime

def strtok(con=None, sep="\n") -> str:
    return con

def file_get_contents(data, boo=False) -> str:
    return data


if __name__ == "__main__":
    alkaa = datetime.date.today()                               # alkaa=date(&#39;Ymd0000&&#39;);
    huominen = alkaa + datetime.timedelta(days=1)               # huominen = new DateTime(&#39;tomorrow&#39;)
    loppuu = huominen                                           # loppuu = huominen->format(&#39;Ymd0000&&#39;)

    # *******OHJELMAN YDIN***************//
    d1 = "https://transparency.entsoe.eu/api?"                  # Rakennetaan http-osoiterivi: (MUOKKAA riveille tuodaan päivämäärä)
    d2 = "securityToken=[b]<Security Tagi>[/b]"                 # Pistä tähän oma Security tagisi (ota hakaset pois):
    d3 = "documentType=A44&"                                    # DocumentType A44: pricedocument:
    d4 = "In_Domain=10YFI-1--------U&"                          # Maakoodit löytyvät: https://eepublicdownloads.entsoe.eu/clean-documents/EDI/Library/Market_Areas_v2.1.pdf
    d5 = "out_Domain=10YFI-1--------U&"
    d6 = "periodStart=" + alkaa.strftime("%y%m%d")
    d7 = "periodEnd=" + loppuu.strftime("%y%m%d")
    data = d1 + d2 + d3 + d4 + d5 + d6 + d7

    contents = "<start>2022-08-25T22:00Z</start> <end>2022-08-26T22:00Z</end> <position>1</position> <price.amount>206.93</price.amount>" # !!! !!! !!!
   
    s = file_get_contents(data, False)                          # Lähetetään pyyntö, talletetaan muuttujaan: s tyyppi on contents
    fp = open("raakadata", "w")                                 # Pannaan raakadatatalteen siltä varalta, että halutaan tutkia: Ei välttämätön
    fp.write(contents)
    fp.close()

    # ************************************//
    # Tästä eteenpäin haetun datan muokkausta ja tiivistystä. Haettavat rivit:
    # <start>2022-08-25T22:00Z</start> <end>2022-08-26T22:00Z</end> <position>1</position> <price.amount>206.93</price.amount>

    # Käsitellään muuttuja rivi kerrallaan. Irroitetaan <start><position> ja <price.amount>
    fd= open("loppudata.txt", "w")                               # Talletetaan vain tämän ja huomisen tiedot:

    rivi = strtok(contents)
    while (rivi != False):
        rivi = rivi.trim()  # (rivi, " \n\r\t\v\x00")                 # Rivin alusta roskat pois        !!! !!! !!!

        pos = rivi.index("start>")                              # onko etsittävä merkkiono tällä rivillä
        if (pos != False):
            start = rivi.replace("</start>","")                 # Rivin lopusta ja alusta tagit pois
            start = start.replace("<start>","")
            print('START:', start)
            hour = substr(start,11,2)                             # Poimitaan tunti
            # echo"HOUR:$hour\n";
   
        pos = rivi.index("end>")
        if (pos != False):
            endo = rivi.replace("</end>","")
            endo = endo.replace("<end>","")
            # print('END:', endo\n')

        pos = rivi.index("position>")                           # <position> on tasatunti startsta alkaen       
        if (pos != False):
            posi = rivi.replace("</position>","");
            posi = posi.replace("<position>","");
   
        pos = rivi.index("amount>");                            # Vihdoinkin se oleellisin: hinta
        if (pos != False):
            price = rivi.replace("</price.amount>","");
            price = price.replace("<price.amount>","");
            price /= 10;

           # Lasketaan hinnan kellonaika
        hetki = hour + posi
        if(hetki == 24):                                    # Vuorokausi vaihtuu:
            hour-=24;
            hetki += 1                                      # &#39;00&#39;
            day +=1                                         # $day -arvon laskennassa on virhe:

        print(day, ' ', hetki, ' ', price)                  # hetki:00hetki:00
        fwrite(fd, posi + price)                              # fwrite(fd, posi.",". price."\n")

    rivi=strtok()                                           # Poimitaan seuraava rivi käsittelyyn:

18
Teinpä kokeilun Python Pandalla. Aluksi ilman lxml:ää, mutta kun virheilmoitus antoi ymmärtää, että se tarvitaan, niin asensin pipillä sen. Sitten kun ajoin ohjelman, tuli monta riviä virheilmoitusta. Kun katselee tuota sivua, siinä on monimutkaisia rakenteita. Ja vielä kun katsoo sivun lähdekoodia, ei siellä taulukoita olekaan. Ilmeisesti Pandalla ei voikaan lukea tuota sivua. Yksi esimerkkiohjelma kykeni lataamaan Wikipediasta ison taulukon tiedot helposti.

Koodia: [Valitse]
import pandas as pd  # version 1.5.2
import lxml  # version 4.9.2

if __name__ == '__main__':
    site = 'https://www.iihf.com/en/events/2023/wm20/schedule'
    games = pd.read_html(site)
    games.info()

19
Ubuntu tietokoneissa / Vs: Puhe tekstiksi
« : 23.12.22 - klo:07.11 »
Kännykässä (ainakin Android) voi valita syöttötavaksi mikrofonin. Kun on Word auki kännykässä niin se kirjoittaa puheen tekstiksi sen minkä se ymmärtää. Ja kännykästä voi siirtää sitten tietokoneelle. Ollaan kokeiltu sitä. Kohtalaisen hyvin toimi.

20
Kirjoitin php:llä ohjelman, joka kaivaa spottihinnan esille.

Väänsin tuon Pythoniksi. Koodissa ei ole funktiota strtok eikä contents tietorakenteen/muuttujan kuvausta. Vääntäminen oli mukavaa harjoitusta. Ei ole Security tagia eikä tuntihintasopparia sähköyhtiön kanssa.

Sivuja: [1] 2 3 ... 54