Anonymní profil zdenda – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil zdenda – Programujte.comAnonymní profil zdenda – Programujte.com

 

Příspěvky odeslané z IP adresy 213.211.51.–

gna
PHP › Folmular PHP - skladove miesto
17. 6. 2022   #390203

Je to tabulka o skladovém místě, nebo o zboží? V obou případech má nesmyslnou strukturu.

"pocet prijatych jednotiek, pocet vyskladnenych poloziek, skladove miesto vyprazdnené"

Pokud chceš evidovat pohyby, tak to budou samostatné doklady - Příjemky, Výdejky, apod. Na skladě máš prostě nějaké množství něčeho. Takže taky nepotřebuješ samostatný sloupec na "vyprázdněnost". Ta hodnota buď je nebo není 0, hotovo.

Takže teda asi znáš SELECT a INSERT. Pak je ještě UPDATE:

UPDATE tabulka SET mnozstvi=mnozstvi-X where ID=Y
-- a jeste muzes pridat
AND mnozstvi>=X

Víc asi zatím nepotřebuješ. Akorát si možná nejdříve vyzkoušej nějaký existující skladový systém ať máš představu, co vlastně chceš dělat (a možná tě pak i pustí potřeba dělat vlastní   ).

gna
Python › Tkinter - nefunguje
12. 6. 2022   #390196

Na začátek přidej ještě

import os
gna
Pascal › Lazarus temperature component
6. 6. 2022   #390194

Lazarus/FreePascal má režim kompatibility s Delphi.  {$mode delphi} a {$mode delphiunicode} 

Pokud použiješ komponentu s otevřeným kódem, tak je slušná šance, že ji v Lazaru rozchodíš.

gna
.NET › .NET 6 API - parametr list o…
3. 6. 2022   #390192

Vypadá to, že Swagger pole objektů v query neumí (resp. to OpenAPI nedefinuje).

Ale ten query string by asi měl vypadat takhle, tak se ti to třeba podaří nějak znásilnit:

studentProperty[0].Teacher=aa&studentProperty[0].Grade=3
gna
C / C++ › Problém s #include
25. 5. 2022   #390187

Ty příklady jsem napsal dost blbě :) Ale závěr platí.

gna
C / C++ › Problém s #include
25. 5. 2022   #390186

V C se soubory kompilují po jednom a jen v rámci té jedné kompilace existují definy.

Takže ten "include guard" bude fungovat v takovéto situaci: 

== core.h:
struct core {
	int foo;
};

== utils.h
#include "core.h"

struct helper {
	struct core core;
	int bar;
}

== main.c
#include "core.h"
#include "utils.h"

======
Guardem se zabrání dvojitému includu "core" do Main.

Ale ne v této situaci: 

== core.h
struct core {
	int foo;
};

struct core main_core;  // !!!

== utils.c
#include "core.h"

== main.c
#include "core.h"

======
Utils a Main se kompilují nezávisle a v obou bude stejná definice.

Zkrátka, jestli tam máš nějaké definice, tak je vyhoď do .c a v tom .h nech jen deklarace.

== neco.c
int odpoved = 42;

== neco.h
extern int odpoved;
gna
Python › Vložení jedné funkce do kódu
23. 5. 2022   #390177

   

if sum(kombinace) == 15:
    neco
gna
Python › Apply - ako zistiť prve pism…
5. 5. 2022   #390153

   

>>> s = "nazdar"
>>> s[0]
'n'
gna
JavaScript, AJAX, jQuery › Ajax problém konzola neodpov…
1. 5. 2022   #390148

Těžko hádat bez kódu. Možná ti ten ajax vůbec neproběhne, nebo vrátí chybu. Na záložce "Network" by mělo jít vidět, jestli to něco dělá a s jakým výsledkem.

gna
.NET › grafika GDI vs GDI+
8. 4. 2022   #390096

#13 Honza
To vůbec netuším.

gna
.NET › grafika GDI vs GDI+
8. 4. 2022   #390093

#7 Honza
Takže tím je to divný, nejprve používali novější GDI+ a pak kvůli kompatibilitě přešli na GDI?

GDI+ není novější v tom smyslu, že by nahrazovalo staré GDI (i když má nové fíčury), ale prostě existují paralelně. I když původní plán nejspíš byl, že všechno pěkně vymazlí a bude to paráda. Na GDI pak přešli kvůli výkonu, je to hnusný, ale rychlý :) Kompatibilita v názvu té property znamená jen to, že si můžeš zapnout vykreslování postaru.

gna
.NET › grafika GDI vs GDI+
7. 4. 2022   #390086

#1 Honza
GDI+ je novější. To použití v .NET nebylo, že by začali se starým a s příchodem novějšího přešli na nový systém. Prostě dříve používali Graphics (GDI+) a pak přešli na TextRenderer (GDI).

gna
.NET › grafika GDI vs GDI+
7. 4. 2022   #390085

#3 JerryM
Popletený to máš ty, tak jako vždycky. Dělá se hezky, běž okopávat zahrádku, dědku :P

gna
Python › While cyklus
2. 4. 2022   #390074

Tak teď máš globální úplně všechno tak na jedné proměnné asi nesejde. Každopádně nemá smysl, aby ta funkce svůj výsledek někam ukládala misto, aby ho prostě vrátla returnem.

def kontrola_radku(hraci_plocha):
    for i in range(3):
        if hraci_plocha[i].count("X") == 3:
            return "X"
        if hraci_plocha[i].count("O") == 3:
            return "O"


def kontrola(hraci_plocha):
    return (
        kontrola_radku(hraci_plocha)
        or kontrola_sloupce(hraci_plocha)
        or kontrola_diagonaly(hraci_plocha)
    )


def main():
    hraci_plocha = ...

    while not (vitez := kontrola(hraci_plocha)):
        # takhle je trochu blbé, že to udělá první kontrolu, i když ještě není co kontrolovat, ale na tom nesejde
        # ...

    print("vyhrál", vitez)


if __name__ == "__main__":
    main()
gna
Python › While cyklus
2. 4. 2022   #390072

Ve výsledku v obou případech používáš globální proměnnou, což je to čemu je dobré se vyhnout.

Pravděpodobně to půjde přesat třeba tímhle stylem:

while item := get_data():
    doX(item)
    doY(item)


for item in get_data():
    doX(item)
    doY(item)

Popiš víc, co konkrétně chceš dělat, pak se dá konkrétněji poradit.

gna
Python › PyQt + Matplotlib
31. 3. 2022   #390065

1) Nebudeš dělat místo pro tlačítka, ale prostě tam vložíš tlačítka. Ale VBox teda vkládá widgety pod sebe, tak ta tlačítka můžeš ještě zabalit do HBoxu (vedle sebe) a ten pak vložit do VBoxu.

2) Netuším, co myslíš.

3) mělo by jít použít třeba metodu resize.

from PyQt6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QHBoxLayout, QPushButton, QWidget
from matplotlib.backends.backend_qtagg import FigureCanvas
from matplotlib.figure import Figure


class ApplicationWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.resize(500, 500)

        self._main = QWidget()
        self.setCentralWidget(self._main)
        vbox = QVBoxLayout(self._main)

        hbox = QHBoxLayout()
        for i in range(4):
            button = QPushButton(f"Button {i}", self)
            hbox.addWidget(button)
        vbox.addLayout(hbox)

        figure_canvas = FigureCanvas(Figure())
        vbox.addWidget(figure_canvas)

        ax = figure_canvas.figure.subplots()
        x = y = [2, 4, 6, 8]
        ax.plot(x, y)


if __name__ == "__main__":
    import sys

    app = QApplication(sys.argv)
    win = ApplicationWindow()
    win.show()
    app.exec()
gna
Python › PyQt + Matplotlib
30. 3. 2022   #390060

Nevím, jestli je backend_qt5agg použitelný s PyQt6 (zkus backend_qt6agg [netuším, jestli existuje] nebo backend_qtagg [bez čísla]). Ale jinak je to celé. Tak jak do toho okna vkládáš jiné widgety, tak stejně tam vložíš i ten FigureCanvas. A aby ti widgety reagovaly na změnu velikosti okna, tak je nebudeš pozicovat absolutně, ale použiješ nějaký layout manager.

Příklad je v dokumentaci.

gna
Python › Podprogramy s proměnnou
29. 3. 2022   #390054

Netuším, co u těch louží znamená ta hodnota 1000 a proč pak ty hodnoty testuješ místo abys ten interval rovnou definoval, jak ho chceš mít.

Jestli správně chápu, co chceš tím větším rozestupem louží, tak na to můžeš použít funci randrange(od, do, krok). Stejné parametry má i funkce range a můžeš je využít při kreslení příček toho žebříku.

A když je to program na podprogramy/funkce, tak je trochu k ničemu funkcí řešit jen jednu věc.

import random
import tkinter


def nakresli_dvojici_krapniku(canvas, x, delka, y_strop, y_podlaha):
    x1, y1 = x, y_strop
    x2, y2 = x, y_strop + delka
    canvas.create_line(x1, y1, x2, y2, fill="green")
    x1, y1 = x, y_podlaha - delka
    x2, y2 = x, y_podlaha
    canvas.create_line(x1, y1, x2, y2, fill="green")


def nakresli_louzi(canvas, x, y, sirka, vyska):
    vlevo, vpravo = x, x + sirka
    nahore, dole = y, y + vyska
    canvas.create_oval(vlevo, nahore, vpravo, dole, fill="blue")


def nakresli_zebrik(canvas, x, y, sirka, vyska, rozestup):
    vlevo, vpravo = x, x + sirka
    nahore, dole = y, y + vyska
    canvas.create_line(vlevo, nahore, vpravo, nahore, fill="brown", width=3)
    canvas.create_line(vlevo, dole, vpravo, dole, fill="brown", width=3)
    for pricka in range(vlevo + rozestup, vpravo, rozestup):
        canvas.create_line(pricka, nahore, pricka, dole, fill="brown", width=3)


# zacatek
canvas_width, canvas_height = 700, 400
canvas = tkinter.Canvas(width=canvas_width, height=canvas_height)
canvas.pack()

# krapniky
for x in range(canvas_width):
    delka = random.randint(20, 70)
    nakresli_dvojici_krapniku(canvas, x, delka, 0, canvas_height)

# louze
pocet = random.randint(10, 20)
for i in range(pocet):
    x = random.randrange(100, canvas_width - 100, 50)  # střílím od boku. netuším, jak toto chceš mít
    y = random.randrange(100, canvas_height - 100, 50)
    sirka = random.randint(20, 100)
    vyska = random.randint(20, 100)
    nakresli_louzi(canvas, x, y, sirka, vyska)

# zebrik
nakresli_zebrik(canvas, 0, 150, canvas_width, 70, 70)

tkinter.mainloop()
gna
Python › Podprogramy s proměnnou
28. 3. 2022   #390049

   

for x in range(50):
    ^
gna
Python › Podprogramy s proměnnou
27. 3. 2022   #390043

Ta funkce jen nakreslí dvě čáry. Když si ji přečteš, tak přece musíš hned vidět význam těch parametru.

gna
Python › Podprogramy s proměnnou
27. 3. 2022   #390041

Ta funkce prostě dostává nějaké parametry. Jeden z nich je canvas, na který má kreslit.

Obě čáry uvidíš, když parametr pro pozici podlahy upravíš tak, aby odpovídal tomu, jak velký máš canvas.

gna
Python › Podprogramy s proměnnou
27. 3. 2022   #390039

   

def nakresli_dvojici_krapniku(canvas, x, delka, y_strop, y_podlaha):
    x1, y1 = x, y_strop
    x2, y2 = x, y_strop + delka
    canvas.create_line(x1, y1, x2, y2, fill="green")
    x1, y1 = x, y_podlaha - delka
    x2, y2 = x, y_podlaha
    canvas.create_line(x1, y1, x2, y2, fill="blue")

# ...
delka = random.randint(20, 70)
nakresli_dvojici_krapniku(canvas, x, delka, 10, 390)
gna
Python › Podprogramy s proměnnou
27. 3. 2022   #390038

Souřadnice jsou 0,0 vlevo nahoře a rostou směrem doprava a dolů. Tak je zadáš tak, jak je chceš mít a uděláš ty čáry dvě. Na vygenerování té delky můžeš použít třeba metodu randint z modulu random.

nevím kam to mám napsat

Jakpak je to možné?

gna
Python › Podprogramy s proměnnou
27. 3. 2022   #390035

Tak vygeneruješ tu délku krápniku od 20 do 70 a pak stejně dlouhou čáru nakreslíš na obě strany.

Něco ve stylu nahoře od 0 do délkakrápníku a pak dole od výškaplátna-délkakrápníku do výškaplátna.

gna
Python › Vytištění RGB palety v obdél…
27. 3. 2022   #390034

To RGB jsou jednotlivé barevné komponenty (red, green, blue) výsledné barvy.

Jasně tam vidíš červený, zelený a modrý pruh. To mezi tím je přechod mezi těmi barvami. Takže třeba mezi červenou a zelenou začínáš na plně červené, chvíli přidáváš zelenou (z červené vzniká žlutá) a pak zase ubíraš červenou (ze žluté vzniká zelená). Podobně pro další přechody.

Nevím, jestli záleží na tom, jak konkrétně budete ten přechod generovat, ale ta ukázka vypadá na cosinus.

Připojen obrázek.

A nakonec je tam to, že dolní pixely jsou tmavší než horní. Nejspíš to půjde celé nacpat do jedné šikovné rovnice, ale je to jen primitivní šaškování se třemi čísly.

Jestli potřebuješ poradit víc, tak napiš, co konkrétně máš a co nevíš a nechoď sem jen se zadáním. Ve školách se prostě nedávají úkoly na věci, co nemůžete znát a jestli dostávate všichni koule, tak jste všichni dementi.

gna
Python › Podprogramy s proměnnou
26. 3. 2022   #390028

S čím konkrétně si nevíš rady?

gna
HTML / XHTML › Jaký je rozdíl ?
24. 3. 2022   #390025

Neni v tom zadny rozdil?
Do "text\ntext" jde vkladat zalamovani radku pres \n.

To platí třeba v PHP nebo Perlu. Kód v dotazu je JavaScript a tam mezi ' a " není rozdíl.

gna
HTML / XHTML › Jaký je rozdíl ?
24. 3. 2022   #390023

Proč nenapíšeš přímo to, co chceš vědět? Jaký je rozdíl mezi řetězcovými konstantami definovanými v apostrofech a uvozkovkách. Žádný.

gna
Python › [Python] generovat tabulku z…
24. 3. 2022   #390020

   

table_data = []
for row in data:
    if zs in row[5]:
        table_data.append(row)

Nebo úsporněji: 

table_data = [row for row in data if zs in row[5]]

Ale to už napsal Pavel. Já jsem chtěl doplnit, že i v té šabloně renderuješ jen jeden řádek.

{% for row in data %}
  <tr>
  {% for cell in row %}
    <td>{{ cell }}</td>
  {% endfor %}
  </tr>
{% endfor %}
gna
Assembler › Assembler:error: symbol `sta…
22. 3. 2022   #390012

Jo, ty registry se "překrývají" a jen ah je "posunutý".

    6         5         4         3         2         1         
4321098765432109876543210987654321098765432109876543210987654321
^------------------------------rax-----------------------------^
                                ^--------------eax-------------^
                                                ^------ax------^
                                                ^--ah--^^--al--^

Ale, když na 64b systému zapíšeš do 32b registru, tak se horních 32b vynuluje. 

mov    rax,0xfffffffffffffff0  ; rax = 0xfffffffffffffff0
or     al,1                    ; rax = 0xfffffffffffffff1
or     ax,2                    ; rax = 0xfffffffffffffff3
or     eax,4                   ; rax =         0xfffffff7 !
or     rax,8                   ; rax =         0xffffffff
gna
Assembler › Assembler:error: symbol `sta…
20. 3. 2022   #390006

To je ten selektor.

Kompletní adresa má formát segment:offset a výsledek je segment+offset. V 32-bit režimu jsou místo segmentů selektory, takže je to selektor:offset a výsledek je bázová_adresa_selektoru+offset. Ta bázovka je definovaná v těch deskriptorech v GDT/LDT.

A většinou se pracuje jen s offsety, tj. selektor se nemění a je dán prováděnou instrukcí (kód je na cs:xxx, data jsou na ds:xxx, zásobník je na ss:xxx, ...). Když se někde píše, že adresa aktuálně prováděné instrukce je v registru eip (nebo ip/rip, teď jsme ve 32-bit, tak eip), tak ve skutečnosti je to cs:eip, ale cs nás nezajímá.

Takže pro jmp většinou definuješ jen offset: 

jmp offset
; eip = offset

Ale můžeš uvést i kompletní adresu: 

jmp selektor:offset
; cs = selektor
; eip = offset

Ten selektor má nějaký význam/formát a ve tvém případě je to teda 1<<3 (čili 8, nebo binárně 1000), což znamená toto: 

DDDDDDDDDDDDDPPT
0000000000001000

D = deskriptor 1
P = privilege level 0 (to je na další povídání)
T = table 0 (GDT)

Takže v pseudokódu to jakoby dělá toto: 

jmp GDT[1]:start32
gna
Assembler › Assembler:error: symbol `sta…
20. 3. 2022   #390004

A i mně to "zavání" Montezem.

gna
Assembler › Assembler:error: symbol `sta…
20. 3. 2022   #390003

Při učení od začátku se naučíš, že instrukce jmp skočí na zadanou adresu a assembler, také zvaný jazyk symbolických adres, mimo jiné umožňuje místo adres psát symboly, které je ovšem potřeba nejdříve definovat.

    ...
    jmp mujlabel
    ...

mujlabel:
    ; sem to skoci

Tady je far jump s uvedením selektoru, který je definovaný v GDT (s komentářem x32 code descriptor), ale výsledek je stejný.

Kompletní kód po kompilaci nepřilinkuješ "někam", ale zapíšeš ho do boot sektoru disku, ze kterého nabootuješ. Proces zavádění systému je opět potřeba nejdříve nastudovat. Nicméně v téhle fázi to nic nedělá.

Nejde vzít náhodných 10 řádků z třetí kapitoly nějaké knihy a jaksi magicky to rozchodit.

gna
.NET › Dvourozměrné pole
20. 2. 2022   #389912

Není možné, aby ses se za tu dobu, co sem chodíš, nenaučil vůbec nic. Chodíš sem jen trollit. Tak si užij nedělní večer, čau.

gna
.NET › Dvourozměrné pole
20. 2. 2022   #389908

Tak to máš veliké štěstí, protože v mojí odpovědi máš jejich řešení.

gna
.NET › Potíže s datetime ve struct
20. 2. 2022   #389907

Takže jsi typ toho parametru změnil z int na DateTime. OK

A pak jsi ještě zrušil metodu Main. Proč?

gna
.NET › Dvourozměrné pole
20. 2. 2022   #389905

A co ti v tom brání?

gna
.NET › Dvourozměrné pole
20. 2. 2022   #389902

Rozměry pole se nezadávají jakou double. Tj. ne [10.0, 10.0] ale [10, 10]. A pokoušíš se definovat pole 10x10, ale incializuješ ho hodnotami 10x2.

Při přístupu k hodnotám pole se jako indexy také nepoužívají doubly a to pole je přece dvourozměrné. Takže ne [double], ale [int,int].

gna
.NET › Potíže s datetime ve struct
20. 2. 2022   #389901

   

date = d;

Pokoušíš se přiřadit int do DateTime. Je snadné na to přijít, protože přesně to se píše v chybové hlášce.

gna
Java › Trojuhelnik z cisel z pole
19. 2. 2022   #389892

Dvourozměrné pole je jako pole polí, tj pole jehož položky jsou zase pole.

Takže nejdřív ti to vytvoří pole s 16 položkami. 

triangle = {
    /* 0*/ null,
    /* 1*/ null,
    /* 2*/ null,
    ...
    /*15*/ null,
}

Pak to tohle pole projde a naplní ho hodnotami (těmi vnitřními poli s délkou a obsahem podle aktuálního indexu). 

triangle = {
    /* 0*/ {0},
    /* 1*/ {0,1},
    /* 2*/ {0,1,2},
    ...
    /*15*/ {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},
}

Konstrukce for (X : Y) provede tělo cyklu pro každý prvek kolekce Y s tím, že aktuální prvek je v X. Takže to projde položky vnějšího pole (což jsem teda zase pole) a pak položky toho vnitřního pole (inty) a vypíše je.

Otazníky za printem a dotaz, jak zavolat metodu mě vytáčí. Prošel jsi několika programovacími jazyky a roky se ptáš na základní věci, které všude fungují stejně.

gna
Python › Python souřadnice
13. 2. 2022   #389865

Tak nebudeš barvu určovat podle toho, jestli je kulička napravo nebo nalevo, ale podle toho, jestli je nahoře nebo dole.

Místo X budeš testovat Y.

gna
Python › Prosím o pomoc s python - graf
13. 2. 2022   #389863

Obdélník je definovaný souřadnicemi (x1, y1, x2, y2). S čím potřebuješ poradit?

gna
Python › Python souřadnice
13. 2. 2022   #389862

Když je X vetší nebo rovno 190, tak uděláš kuličku červeně, jinak modře. Takže napravo máš červené a nalevo modré.

Co na tom změnit? Peter už ti odpověděl. Budeš testovat Y.

gna
Python › Python - počty, hledání znaků
13. 2. 2022   #389861

   

In [1]: len("hrcprc")
Out[1]: 6

In [2]: "hrcprc".count("r")
Out[2]: 2
gna
.NET › Parallax mapping
13. 2. 2022   #389860

V GIS se z výškových dat dělá tzv. hillshade, možná by ti to mohlo stačit a umí to třeba GDAL. Není úplně rychlý, ale jde to.

gdaldem hillshade inheightmap.png -of PNG outshade.png
# + případně další parametry na umístění zdroje světla

Pak vím, že třeba POV-Ray umí vyrenderovat výškovou mapu. Ten nemám nainstalovaný a z hlavy to nedám, ale je to příkaz height_field. To je teda ray tracer a taky nebude rychlý.

Parallax mapping je jen takové šizení světla na placaté textuře, ale ty obrázky, jak je máš tady by to mělo zvládnout. Nemusíš se nic moc učit, jen najdi nějaký ukázkový program, který to dělá a místo textury dej šedý čtverec a místo height mapy tu svoji.

gna
CSS › Wordpress - nelze se zbavit…
13. 2. 2022   #389850

Koukl jsem na to jen rychle, tak si nejsem jistý, ale zdá se mi, že to negeneruje přímo Astra. Nemáš tam aktivní ještě nějaký plugin?

Přinejhorším je to v samostatném divu, tak by měl jít pomocí CSS skrýt.

gna
JavaScript, AJAX, jQuery › Zachytávání stránky do souboru
9. 2. 2022   #389841

Mně to zní tak, že máš ten server pod kontrolou, tak tam asi můžeš implementovat i ukládání a stahování toho obsahu.

Jinak jak píše Peter, přímo do souboru zapisovat nemůžeš, ale můžeš to ukládat v prohlížeči a pak stáhnout (Blob + window.URL.createObjectURL).

gna
Python › Prosim o pomoc......
1. 2. 2022   #389828

Nebo teda varianta asi stravitelnější pro začátečníka:

puvodni = [2,4,3,1]
zamichany = puvodni[:]
random.shuffle(zamichany)

pozice = []
for hodnota in puvodni:
    pozice.append(zamichany.index(hodnota) + 1)

print("puvodni  ", puvodni)
print("zamichany", zamichany)
print("pozice   ", pozice)
gna
Python › Prosim o pomoc......
1. 2. 2022   #389827

 list má metodu index, která vrátí pozici zadané hodnoty

pozice = [zamichany.index(hodnota) + 1 for hodnota in puvodni]
gna
Python › update grafu
30. 1. 2022   #389805

Ty plochy si můžeš definovat jak chceš, já ani ty možnosti pořádně neznám. Toto mi připadá jednoduché:

# grid 2x10 a která políčka obsadit
ax1 = plt.subplot(2, 10, (1, 7))
ax2 = plt.subplot(2, 10, (11, 20))
gna
.NET › RedirectStandardOutput to ri…
29. 1. 2022   #389803

StandardError

gna
.NET › RedirectStandardOutput to ri…
29. 1. 2022   #389800

wget vypisuje na stderr a jde to změnit parametrem -o-.

gna
Python › update grafu
28. 1. 2022   #389786

List se indexuje od 0 a k ničemu ho nepotřebuješ. Na vracení hodnot z funkce je příkaz return. 

def getdata():
    ser.reset_input_buffer()
    ser.write(b"r")
    serial_data = ser.read(SAMPLES * 4)
    unpacked_data = s.unpack(serial_data)
    ser.close()
    return unpacked_data

To FFT máš skoro správně. Zkus to spustit a poopravuj, to co řve :)

gna
Python › update grafu
27. 1. 2022   #389769

   

import random
import matplotlib.pyplot as plt
from matplotlib.widgets import Button


def getdata():
    return (
        [random.random() for _ in range(100)],
        [random.random() for _ in range(100)]
    )

def update(event):
    set1, set2 = getdata()
    line1.set_ydata(set1)
    line2.set_ydata(set2)
    plt.draw()

fig, (ax1, ax2) = plt.subplots(2)

set1, set2 = getdata()
line1, = ax1.plot(set1)
line2, = ax2.plot(set2)

btnax = plt.axes([0.4, 0.9, 0.2, 0.1])
button = Button(btnax, 'Update')
button.on_clicked(update)

plt.show()
gna
Python › Promenna z promenne string
26. 1. 2022   #389750

   

eval(f"TEST_{i}")

Ale takové brikule se nedělají. Použij něco "normálního" 

test = [10, 20]
test[0]  # 10
test[1]  # 20
gna
JavaScript, AJAX, jQuery › Auto spustenie jQuery po nač…
25. 1. 2022   #389738

#13 Majovic
Z tohodle nic nevykoukáme. Hoď někam ten "routescrn.js" a dej sem odkaz.

gna
.NET › Chyba CS0246 ??
24. 1. 2022   #389712

#8 Montezo
To je přesně ten problém. Nechápeš na tom kódu ani písmenko, že to je jméno třídy, že ji nejdřív musí někdo napsat. Desetkrát ti může člověk vysvětlit, jak to funguje a ty se znova zeptáš, proč někde nějaká třída není vidět a čekáš kouzelnou radu bez toho, že bysme ten kód viděli. Takže zpátky k tomu telefonnímu seznamu.

gna
.NET › Chyba CS0246 ??
24. 1. 2022   #389699

Odkud to máš?

gna
.NET › Chyba CS0246 ??
24. 1. 2022   #389695

Ptáš se pořád na to samé.

gna
.NET › The public keyword is not al…
23. 1. 2022   #389677

Čínsky se nenaučíš tak, že budeš zírat na čínský text. Šachy se nenaučíš tak, že budeš hrát s velmistrem. Prostě musíš projít postupným učením.

Já jsem si myslel, že jako zralý chlap s jasným cílem (mně je taky přes 40) se tomu budeš systematicky věnovat a i když na to třeba máš čas jen pár hodin o víkendu, tak to dáš. Ale ty po buhví jak dlouhé době nedáš dokupy pár příkazů, děcka se ti tady smějou a ty místo, aby ses nasral a máknul, tak pořád vymýšlíš koniny.

gna
.NET › Všechny using?
23. 1. 2022   #389676

Buď vrtáš do hotového projektu, tak tam není potřeba doplňovat usingy. Nebo to smolíš sám a tu třídu tam prostě nemáš.

gna
JavaScript, AJAX, jQuery › Auto spustenie jQuery po nač…
23. 1. 2022   #389672

Tak dej odkaz na ten skript a já se podívám, jak funguje.

gna
.NET › Všechny using?
23. 1. 2022   #389671

#6 hlucheucho
Já jsem věděl, že se toho někdo chytne :-) Ale jo, máš samozřejmě pravdu.

gna
.NET › Všechny using?
23. 1. 2022   #389667

Nějaký projekt eshopu má nějakou třídu Product. Co čekáš, že ti k tomu Google řekne?

Udělej si telefonní seznam, nebo piškvorky, nebo prostě něco pro začátečníky a nevrtej se v kódu, kde nechápeš ani řádek.

gna
.NET › The public keyword is not al…
23. 1. 2022   #389666

A syntaxi už ses naučil? Nehodila by se tam někam složená závorka?

A na serverý projekt prostě nemáš, tak to nedělej.

gna
.NET › Vyhledávání ve více souborech
23. 1. 2022   #389663

Find in files (ctrl+shift+f)

gna
.NET › Chyba CS0535
23. 1. 2022   #389661

Třeba se vrať ve svých studijních materiálech o 15 kapitol zpátky.

gna
.NET › Všechny using?
23. 1. 2022   #389659

Když třeba v namespace "Hrc" implementuješ třídu "Prc", tak její celé jméno je "Hrc.Prc". Nebo můžeš použít "using Hrc" a pak psát jen "Prc", protože using definuje, ve kterých "jmenných prostorech" se mají vyhledávat "jména".

Takže těch usingů je nekonečně mnoho, protože každý si může věci pojmenovat libovolně. A můžeš Hrc nebo Prc zkoušet do aleluja a nebude to fungovat, dokud překladač nemá jejich implementaci.

Což je jedna z věcí, kterou najdeš v popisu toho chybového kódu. Zřejmě ti chybí nějaké závislosti.

gna
.NET › Chyba CS0535
23. 1. 2022   #389657

Jak, co z toho? Třída implementující nějaký interface musí implementovat metody definované v tom interface.

gna
JavaScript, AJAX, jQuery › Auto spustenie jQuery po nač…
22. 1. 2022   #389654

Nevím, možná je toto příliš brzy. Takhle se to spustí až když se všechno načte: 

$(window).on("load", function() {
  route.scrn([200, 50, 50, 50, 200]);
});

Jinak se zeptej autora "routescrn.js" jak se má používat.

gna
JavaScript, AJAX, jQuery › Auto spustenie jQuery po nač…
22. 1. 2022   #389652

Teď ti to při kliknutí vytáhne z toho elementu text a spustí ho jako skript. Tak ho spusť rovnou.

<script type="text/javascript">
$(function() {
  route.scrn([200, 50, 50, 50, 200]);
});
</script>
gna
.NET › #region Helpers
22. 1. 2022   #389650

To je jen jako nápověda pro editor, že ten blok kódu patří k sobě a pak jde ten region vizuálně sbalit a rozbalit.

gna
JavaScript, AJAX, jQuery › Auto spustenie jQuery po nač…
22. 1. 2022   #389649

A pokud teda chceš zachovat to, že ten kód je v divu a zároveň ho chceš spustit, tak ten kód nemusíš psát dvakrát. Třeba takhle:

<script type="text/javascript">
$(function() {
  var code = $("#iddivuskodem").text();
  eval(code);
});
</script>
gna
JavaScript, AJAX, jQuery › Auto spustenie jQuery po nač…
22. 1. 2022   #389648

   

<script type="text/javascript">
$(function() {
  TO_CO_MAS_V_TOM_DIVU
});
</script>
gna
Python › Python, obdelníky
18. 1. 2022   #389634

Nechápu dotaz. Když máš třeba jeden čtverec 50x50 a pak druhý umístíš o 50 pixelů dál (nebo níž, nebo něco), tak bude vedle (nebo pod...) toho prvního. Nevím v čem je problém.

gna
Python › tkinter - sloupec
17. 1. 2022   #389631

   

for y in range(20, 220, 20):
    color = random.choice(("white", "black", "red", "green", "blue", "cyan", "yellow", "magenta"))
    canvas.create_text(50, y, text="python", fill=color)
gna
.NET › Jak pracuje Lock(object) - t…
17. 1. 2022   #389627

  

gna
.NET › Jak pracuje Lock(object) - t…
17. 1. 2022   #389625

Přesně to jsem napsal.

gna
Java › Bitwise operations, testing
17. 1. 2022   #389623

#3 gna
Byl jsem o fous pomalejší :-)

gna
Java › Bitwise operations, testing
17. 1. 2022   #389622

& - and - výsledek bude 1 pokud oba operandy jsou 1
| - or - 1 pokud alespoň jeden z operandů je 1
^ - xor - 1 pokud pouze jeden z operandů je 1
<< - shl - bitový posun do leva
>> - shr - bitový posun do prava

gna
.NET › Jak pracuje Lock(object) - t…
17. 1. 2022   #389619

Na úrovni procesoru to funguje stejně. Když třeba na x86 použiju prefix LOCK, tak se cache zamkne do dokončení instrukce.

gna
.NET › Jak pracuje Lock(object) - t…
16. 1. 2022   #389614

Nemotej do toho cache a zásobník, když nevíš, co to je.

Lock funguje v podstatě takhle:

while (lock != 0) {
    // čekám na odemčení
}
lock = 1; // zamknu


// něco dělám
...


lock = 0; // odemknu

Konkrétně tomuhle se říká spin-lock a ten while+lock je implementován atomickými instrukcemi. Samozřejmě nemusí být vždycky vhodné, aby každé vlákno takhle aktivně ten zámek pořád dokola testovalo a tak se třeba uspí a pak probudí po jeho odemčení apod.

To je celé, když nějaké vlákno chce lock, který už drží jiné vlákno, tak se "zasekne" dokud ho předchozí držitel nepustí.

gna
MS SQL › Potřebné SQL příkazy?
15. 1. 2022   #389607

Leda kulový. Kolik těch příkazů je? Projít je a udělat si představu o jejich použití je max na jeden den.

gna
MS SQL › Tabulka se nezobrazuje
15. 1. 2022   #389605

A mě při pití čaje bolí oko. Zkus nějak vydedukovat, že to souvisí s tím, že z hrnku nevytahuju lžičku.

Jaká tabulka by tam měla být; jak jsi ten příkaz napsal; co ti to hlásilo po jeho spuštění; vybral jsi správnou databázi nebo dokonce server; není potřeba ten seznam refreshnout? Křišťálová koule v servisu.

gna
MS SQL › Potřebné SQL příkazy?
15. 1. 2022   #389601

#1 Montezo
Vyber si nějaké téma a věnuj se mu. Od začátku. Přečti si dokumentaci, zkoukni nějaký kurz nebo sérii tutoriálů. Přestaň skákat z jednoho na druhé a ptát se na krávoviny.

gna
Java › Vyklad kodu, filed, instance.
15. 1. 2022   #389599

Vždyť s třídami a objekty děláš pořád dokola a najednou nevíš. Máš třidu a vytváříš její instance a přes ně pak můžeš přistupovat k jejim veřejným proměnným a metodám. 

class Clovek
{
    public String jmeno;  // instancni promenna

    public Clovek(String jmeno) {
        this.jmeno = jmeno;
    }
}
...
Clovek c1 = new Clovek("Pepik");
Clovek c2 = new Clovek("Honzik");

System.out.println(c1.jmeno + " a " + c2.jmeno); // Pepik a Honzik
c2.jmeno = "Jirik";
System.out.println(c1.jmeno + " a " + c2.jmeno); // Pepik a Jirik

A pak můžeš mít taky třídní proměnné (static), které nejsou spjaté s konkrétní instancí a když k nim přistupuješ přes instanci, tak to jde, ale dostaneš warning.

class Math
{
    public static final double PI = 3.14;  // tridni promenna
}
...
System.out.println(Math.PI);  // OK

Math m = new Math();
System.out.println(m.PI);  // jde, ale dostanes warning
gna
JavaScript, AJAX, jQuery › curl request z PHP do node.js
14. 1. 2022   #389594

Nevím, možná se zkus podívat jestli nemáš nějakou starší verzi těch knihoven.

Já jsem je instaloval až teď, takže mám poslední socks 2.6.1 a socks-proxy-agent 6.1.1 a chodí to.

gna
JavaScript, AJAX, jQuery › curl request z PHP do node.js
13. 1. 2022   #389590

Mně to takhle funguje (i s .onion). Hlásí to nějakou chybu?

gna
Matematika › SQL příkaz
10. 1. 2022   #389570

join objednavky-zakaznici, sum castka, group by zakaznik, where rok 2021, order by suma, limit 10

gna
.NET › Xamarin - Nastaveni prav a a…
10. 1. 2022   #389564

Proč máš external-path zakomentovaný?

gna
.NET › Překrytí X přetížení
10. 1. 2022   #389560

Jo.

gna
Java › Android studio - timer
10. 1. 2022   #389556

Pomocí Timeru můžeš spustit TimerTask. Pak bacha na to, že poběží v jiném vlákně. Jestli chceš sahat na UI, tak můžeš použít třeba runOnUiThread nebo Handler (a v tom případě se pak obejdeš i bez Timeru, protože Handler má metody postAtTime a postDelayed).

gna
.NET › Překrytí X přetížení
10. 1. 2022   #389555

Skoro, akorát se "neaktivuji" a "neupravují" částečně.

Přetížení: Metody mají stejné jméno, ale jiné parametry. Jde o různé metody a podle toho s jakými parametry je voláš se pozná, která se má zavolat.

Překrytí: Odvozená třída dědí metody rodičovské třídy. Metody definované v odvozené třídě překrývají (resp. mohou překrývat) metody zděděné z rodičovské třídy.

gna
Java › Kotlin - AsyncTask, doInBack…
8. 1. 2022   #389550

Prostě místo jedné adresy předáš seznam adres. Ten pak v cyklu projdeš, zpracuješ a vrátíš seznam výsledků.

Případně nemusíš vracet seznam výsledů, ale můžeš je reportovat průběžně. Tj. v tom cyklu použiješ publishProgress pro poslání dat do onProgressUpdate.

Pokud chceš to stahování dělat paralelně, tak prostě vytvoř samostatný task pro každou adresu. Ideálně asi v kombinaci s ThreadPoolExecutorem, kde definuješ velikost fronty a kolik tasků se má zpracovávat souběžně.

V Kotlinu nedělám, takže konkretní kód ti neukážu.

gna
.NET › Práce s .json soubory...
6. 1. 2022   #389523

Někde v nastavení projektu se dá nastavit s jakým pracovním adresářem se má program spouštět. Nebo můžeš programově zjistit, kde ten exáč je, ale nejspíš to nepotřebuješ.

Už teď když ten program spustíš přímo, třeba z průzkumníka, tak pracovní adresář bude adresář exáče.

gna
.NET › Práce s .json soubory...
6. 1. 2022   #389521

File.WriteAllText při chybě háže vyjímku, takže buď dostaneš vyjímku z popisem chyby, nebo k chybě nedošlo a ten soubor se vytvořil. Možná jen je jinde, než ho očekáváš.

Windows (a další systémy) mají koncept "pracovního adresáře" a program může mít jiný pracovní adresář, než je umístění programu. Když název souboru není uveden s celou cestou, tak se vytváří v tom pracovním adresáři. Jestli to spouštíš z VS, tak tam to bývá tak, že pracovní adresář není adresář s exáčem. Prohledej adresář projektu.

gna
.NET › Práce s .json soubory...
6. 1. 2022   #389519

   

var json = JsonConvert.SerializeObject(query);  // serializuj objekt do souboru JSON
var result = json;
File.WriteAllText("vystup.json", json);  // data jsou zapsána do souboru vystup.json
Console.WriteLine(result);

Do souboru zapisuješ stejnou hodnotu, jakou vypisuješ na konzoli. Pořád nechápu v čem je problém.

gna
Python › Tkinter Game
6. 1. 2022   #389517

Jestli to správně chápu, tak balón sestřelíš tím, že na něj klikneš.

Objekt z canvasu můžeš odstranit pomocí .delete a místo globálního click-handleru a zjišťování, na co jsi kliknul, bude jednodušší nastavit ten handler přímo na tom balónu pomocí .tag_bind.

Taky by se asi hodilo, aby tělo toho balónu i jeho provázek byl jeden objekt, ať to nemusíš dohledávat.

Pohyb pak uděláš tak, že pomocí .after budeš periodicky ty balóny posunovat.

Třeba nějak takhle:

import tkinter


class Balloon:
    def __init__(self, canvas, x, y):
        self.alive = True
        self.canvas = canvas
        self.balloon = canvas.create_oval(x, y, x + 40, y + 50, fill="red")
        self.string = canvas.create_line(x + 20, y + 50, x + 20, y + 90)
        self.canvas.tag_bind(self.balloon, "<Button-1>", self.kill)

    def move(self):
        if self.alive and self.canvas.coords(self.balloon)[1] > 0:  # coords == (x1, y2, x2, y2)
            self.canvas.move(self.balloon, 0, -10)
            self.canvas.move(self.string, 0, -10)

    def kill(self, event):
        if self.alive:
            self.canvas.delete(self.balloon)
            self.canvas.delete(self.string)
            self.alive = False


def create_balloons(canvas):
    balloons = []
    for x in range(1, 400, 75):
        balloons.append(Balloon(canvas, x, 300))
    return balloons


def move_balloons(canvas, balloons):
    for balloon in balloons:
        balloon.move()
    canvas.after(100, move_balloons, canvas, balloons)


canvas = tkinter.Canvas(width=450, height=400)
canvas.pack()

balloons = create_balloons(canvas)
canvas.after(100, move_balloons, canvas, balloons)

tkinter.mainloop()
gna
.NET › Práce s .json soubory...
6. 1. 2022   #389516

Já si myslím, že by to takhle mohlo fungovat. Co se ti tam zapíše a co chceš jinak?

gna
Python › Řazení slov na styl slovního…
5. 1. 2022   #389511

Pokud je to reálný ukol z nějakého cvičeni, tak se dá předpokládat, že to teda asi bude řešitelné v rozumném čase i bez účasti na tajném čínském sympóziu o algoritmech minulý týden.

Možná česká slova opravdu mají takové parametry, že to nebude taková hrůzna, nebo je ten seznam pečlivě vybraný, nebo něco.

Zkus pogooglit a opsat nějaký z existujících algoritmů a uvidíš.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032022 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý