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

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

 

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

gna
.NET › Elipsa a rozpočítání bodů
15. 8. 2022   #390373

#62 Jerry
Dědku, to snad není možný!

gna
.NET › Elipsa a rozpočítání bodů
11. 8. 2022   #390340
gna
.NET › Elipsa a rozpočítání bodů
11. 8. 2022   #390339

Mně asi uniká nějaký podstatný detail :)

gna
Oracle › insert nebo update
10. 8. 2022   #390336

V insert-values taky můžeš použít tu zdrojovou tabulku a nemusíš ty hodnoty uvádět dvakrát.

gna
Oracle › insert nebo update
9. 8. 2022   #390333

Myslím si, že ti to řve při parsovaní toho SETu kvůli závorkám kolem přiřazení. Ale nemám to kde vyzkoušet a nevím, jestli je tam Oracle dovoluje.

Pak ti to nejspíš ještě zařve za běhu, protože v `dual` neexistují ty selectované/matchované sloupce. A i pokud toto projde, tak ti to nic nevrátí a nezmerguje.

Merge funguje takhle:

dst.id
1
2

src.id
2
3

merge on id
dst src op
1       (nic)
2   2   matched then update ...
    3   not matched then insert ...

Ten "trik" s tabulkou `dual` spočívá v tom, že je v ní jeden záznam, který se bude mergovat, ale jeho obsah nás nezajímá. Zajímá nás jen cílová tabulka pro rozhodnutí, jestli to bude nebo nebude jako match:

MERGE INTO dst D
  USING dual
  ON (D.id = 'XXX')
  WHEN MATCHED THEN
    UPDATE ...
  WHEN NOT MATCHED THEN
    INSERT ...
gna
.NET › Elipsa a rozpočítání bodů
6. 8. 2022   #390328

Dej tam 2pi a nech tam atanxy (nebo prohoď parametry atan2) a máš to hotové.

gna
.NET › Elipsa a rozpočítání bodů
6. 8. 2022   #390326

To je převod na radiány. 360 * deg je 2 * PI

gna
.NET › Elipsa a rozpočítání bodů
3. 8. 2022   #390318

No o tom "eliptickém zkreslení" jsem uvažoval hned na začátku, že by to mohlo jít spočítat, ale to nedám (jestli to vůbec jde).

gna
.NET › Elipsa a rozpočítání bodů
3. 8. 2022   #390316

I s tímhle přístupem nemusíš počítat přesně. Co dostaneš navíc jedním krokem, tak můžeš zase ubrat na dalším kroku a nikde to neujede víc než 1px. Průsečík je to nejmenší :-)

gna
.NET › Elipsa a rozpočítání bodů
3. 8. 2022   #390312

Já jsem to půlení intervalu taky zkoušel, ale tady nejde jednoznačně říct, jestli je potřeba prodloužit nebo zkrátit, tak to nemůže fungovat (obecně).

Triviální a zároveň rychlé řešení mě nenapadá.

gna
.NET › Elipsa a rozpočítání bodů
1. 8. 2022   #390306

  

gna
.NET › Elipsa a rozpočítání bodů
31. 7. 2022   #390300

Já si naopak myslím, že tohle řešení je vpoho, protože něco "chytrého" by byly rovnice jako kráva.

gna
.NET › Elipsa a rozpočítání bodů
31. 7. 2022   #390298

Možná by šlo spočítat délku té strany a pak ty body najít jako průsečíky s kružnicí, ale z toho se mi vaří hlava. A možná jen uvažuju špatným směrem.

Jestli nepotřebuješ perfektní matematické řešení, tak bych to prostě vybrutil. Vezmu minimum a maximum z vepsané a opsané kružnice a pak půlením intervalu najdu hodnotu, se kterou to vyjde na elipse. Asi by při tom mělo i jít testovat úhel "zalomení" a rychle poznat slepou uličku, tak by to nemuselo být pomalé.

gna
PHP › HTML na prostý text, aby ner…
26. 7. 2022   #390295

#12 Kit
Já jsem právě celou dobu myslel na to, že už jsi mu minule poradil DOMDocument, tak proč to dělá jinak.

gna
PHP › HTML na prostý text, aby ner…
26. 7. 2022   #390293

No já jsem se trochu unáhlil. Nevím, co má pak dál. Teoreticky to může pokračovat ke zdárnému konci, ale známe fixe... :-)

gna
PHP › HTML na prostý text, aby ner…
25. 7. 2022   #390291

Prosím tě, podívej se k čemu ty zmíněné funkce jsou a pak ti snad dojde, že tohle vůbec nic neřeší.

gna
JavaScript, AJAX, jQuery › Výběr typu uložení dat pro G…
24. 7. 2022   #390288

Objekty jsou v JavaScriptu (resp. ECMAScriptu) od začátku. Ale ano, technicky je to asociativní pole.

Mně šlo jen o upřesnění, že `{}` se říká objekt, aby nenarazil na nepochopení s pojmem `arraylist`, což je něco jiného a v JS takový pojem neexistuje.

gna
JavaScript, AJAX, jQuery › Výběr typu uložení dat pro G…
22. 7. 2022   #390285

V JS arraylist neexistuje a {} je objekt.

gna
.NET › Začátečník - komponenta Data…
22. 7. 2022   #390281

V CellFormatting můžeš měnit formát podle hodnoty. V příkladu v dokumentaci je zrovna změna barvy.

gna
PHP › HTML na prostý text, aby ner…
21. 7. 2022   #390278

Entity budou ukončené středníkem. Pokud tam ten středník chybí, tak je to oříznutá entita na konci stringu. Nic jiného se nesmaže.

gna
PHP › HTML na prostý text, aby ner…
21. 7. 2022   #390275

HTML můžeš převést na prostý text pomocí strip_tags a htmlspecialchars_decode (apod.). (A spousty inteligentnějších knihoven).

Pak pokud je v tom XML nějaký limit na délku hodnoty, tak to pravděpodobně bude dekódovaná délka. Takže ten text budeš ořezávat před enkódováním a nedostaneš rozbité entity. Pokud to opravu potřebuješ ořezávat až po enkódování, tak prostě tu případnou rozbitou entitu odmázni [třeba preg_replace('/&[^;]*$/', '', $s)].

Na začátku teda dekóduješ z HTML a pak enkóduješ do XML, tak v těch funkcích použij odpovídající flagy.

gna
JavaScript, AJAX, jQuery › Webová aplikace - HTML,CCS a…
19. 7. 2022   #390248

Věděl bych, že lokální proměnné funkce nejsou vidět mimo tu funkci, Že ve standardní knihovně není objekt `google`. Že moje volná funkce se magicky nestane jeho metodou. Že v konzoli uvidím běhové chyby... prostě takové ty tiviality, co se člověk naučí do týdne.

Taky bych z několikařádkového ukázkového kódu poznal, kde tam je přidávání položky do pole a převod celého pole do HTML, takže přesně to bych pak v tom svém přidaném formuláři použil.

Tak tady to máš, jen tak zhruba. Nejsem webař a neříkám, že to má být zrovna takhle. Třeba CSS jsem částečně prasil vědomě a částečně protože to prostě lépe neumím, ale máš tam dost věcí, abys měl na pár dní co Googlit, pokud něčemu nerozumíš.

<html>
  <head>
    <style type="text/css">
      .page {
        padding: 0px 30px;
      }

      .page.active {
        display: block;
      }

      .page.hidden {
        display: none;
      }

      ul {
        list-style-type: none;
        margin: 0;
        padding: 0;
        overflow: hidden;
        background-color: #333;
      }

      li {
        float: left;
      }

      li a {
        display: block;
        color: white;
        text-align: center;
        padding: 20px 20px;
        text-decoration: none;
      }

      li a:hover {
        background-color: black;
      }

      table,
      th,
      td {
        padding: 10px;
        border-collapse: collapse;
      }

      #userList table {
        width: 100%;
      }

      #userList table,
      #userList th,
      #userList td {
        border: 1px solid black;
        text-align: left;
      }

      #userForm table {
        margin-left: auto;
        margin-right: auto;
      }

      input[type="button"] {
        display: block;
        margin: auto;
        padding: 10px 30px;
      }
    </style>
    <script type="text/javascript">
      class Pojistenec {
        constructor(jmeno, prijmeni, vek, tel) {
          this.jmeno = jmeno;
          this.prijmeni = prijmeni;
          this.vek = vek;
          this.tel = tel;
        }
      }

      let databaze = [
        new Pojistenec("Jana", "Svobodová", 24, "+420123456789"),
        new Pojistenec("Jiří", "Novák", 25, "+420123456790"),
        new Pojistenec("Jan", "Novotný", 26, "+420123456791"),
      ];

      function addUser(form) {
        databaze.push(
          new Pojistenec(
            form.jmeno.value,
            form.prijmeni.value,
            +form.vek.value,
            form.tel.value
          )
        );
        renderUserList();
      }

      function renderUserList() {
        const tbody = document.querySelector("#userList tbody");
        tbody.innerHTML = "";

        for (const user of databaze) {
          const row = document.createElement("tr");
          [user.jmeno + " " + user.prijmeni, user.tel, user.vek].forEach(
            (text) => {
              const td = document.createElement("td");
              td.innerText = text;
              row.appendChild(td);
            }
          );
          tbody.appendChild(row);
        }
      }

      function showPage(pageId) {
        for (const page of document.querySelectorAll(".page")) {
          if (page.id == pageId) {
            page.classList.remove("hidden");
            page.classList.add("active");
          } else {
            page.classList.remove("active");
            page.classList.add("hidden");
          }
        }
      }
    </script>
  </head>
  <body onload="renderUserList()">
    <ul>
      <li>
        <a href="#" onclick="showPage('pageUsers'); return false;">Pojištěnci</a>
      </li>
      <li>
        <a href="#" onclick="showPage('pageAbout'); return false;">O aplikaci</a>
      </li>
    </ul>
    <div id="pageUsers" class="page active">
      <div id="userList">
        <h2>Pojištěnci</h2>
        <table>
          <thead>
            <tr>
              <th>Jméno a příjmení</th>
              <th>Telefon</th>
              <th>Věk</th>
            </tr>
          </thead>
          <tbody></tbody>
        </table>
      </div>
      <div id="userForm">
        <h2>Nový pojištěnec</h2>
        <form>
          <table>
            <tr>
              <td>
                <label for="jmeno">Jméno</label><br />
                <input type="text" name="jmeno" />
              </td>
              <td>
                <label for="prijmeni">Příjmení</label><br />
                <input type="text" name="prijmeni" /><br />
              </td>
            </tr>
            <tr>
              <td>
                <label for="vek">Věk</label><br />
                <input type="number" name="vek" /><br />
              </td>
              <td>
                <label for="tel">Telefon</label><br />
                <input type="telnum" name="tel" /><br />
              </td>
            </tr>
            <tr>
              <td colspan="2">
                <input type="button" value="Uložit" onclick="addUser(this.form)" />
              </td>
            </tr>
          </table>
        </form>
      </div>
    </div>
    <div id="pageAbout" class="page hidden">
      <h2>Výplod v0.1</h2>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
        tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
        veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
        commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
        velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
        occaecat cupidatat non proident, sunt in culpa qui officia deserunt
        mollit anim id est laborum.
      </p>
    </div>
  </body>
</html>
gna
JavaScript, AJAX, jQuery › Webová aplikace - HTML,CCS a…
19. 7. 2022   #390245

To je zase náš slavný Montezo. Namatlá dohromady náhodné kusy kódu a baví se tím, jak se to snažíme pobrat.

gna
JavaScript, AJAX, jQuery › Webová aplikace - HTML,CCS a…
19. 7. 2022   #390242

Ještě tě to trolení nepustilo? Jdi s tím na psychinu.

gna
JavaScript, AJAX, jQuery › Webová aplikace - HTML,CCS a…
16. 7. 2022   #390230

Teda to HTML takhle není úplně pěkné, ale mně šlo o ten JS, abys mohl nějak začít.

gna
JavaScript, AJAX, jQuery › Webová aplikace - HTML,CCS a…
16. 7. 2022   #390229

   

<html>
<body>
<pre id="databaze"></pre>
<script>
class Pojistenec {
    constructor(jmeno, prijmeni, vek, tel) {
        this.jmeno = jmeno;
        this.prijmeni = prijmeni;
        this.vek = vek;
        this.tel = tel;
    }

    toString() {
        return `${this.tel}, ${this.jmeno} ${this.prijmeni}, ${this.vek}`;
    }
}

let databaze = [
    new Pojistenec('Jana', 'Svobodová', 24, '+420123456789'),
    new Pojistenec('Jiří', 'Novák', 25, '+420123456790'),
    
];

databaze.push(new Pojistenec('Jan', 'Novotný', 26, '+420123456791'));

document.getElementById('databaze').innerText = databaze.join('\n');
</script>
</body>
</html>
gna
PHP › Integrace php codu - socialn…
15. 7. 2022   #390225

Já řeším jen to, jak zachytit výstup té funkce, abys ho mohl dát do té proměnné $html. Charitativní úprava designu komerčního projektu je momentálně mimo můj zájem.

gna
Python › Volání "Notepad.exe" z progr…
15. 7. 2022   #390224

Na skončení procesu můžeš počkat metodou wait.

p1 = subprocess.Popen(["Notepad.exe", "myfile.txt"])
p1.wait()

Pokud nepotřebuješ s tím procesem nějak operovat, tak můžeš místo Popen použít call (a pak nepotřebuješ wait).

subprocess.call(["Notepad.exe", "myfile.txt"])
gna
PHP › Integrace php codu - socialn…
15. 7. 2022   #390221

Když na té stránce na něco klikneš pravým tlačítkem, tak v nástrojích pro vývojaře uvidíš strukturu toho dokumentu, a co je co. To pak dohledej v tom zdrojáku a uprav si to, jak potřebuješ.

V principu by mohlo fungovat, když místo:

$html .="</h2>
<div id='playeroptions' class='{$ulclass}'><ul id='playeroptionsul' class='{$set_mode}'>";

Dáš: 

$html .="</h2>";

ob_start();
doo_social_sharelink($post->ID);
$social_links = ob_get_clean();

$html .= $social_links;
$html .= "<div id='playeroptions' class='{$ulclass}'><ul id='playeroptionsul' class='{$set_mode}'>";

Ale nevím, co ta funkce generuje, a jestli v tom novém místě máš tu proměnnou $post, a tak. Bez širšího kontextu z tohodle moc nevykoukám.

gna
PHP › Integrace php codu - socialn…
14. 7. 2022   #390219

Předpokládám, že ta funkce prostě vypíše ty linky a ty je teda z nějakého důvodu chceš mít v té proměnné. Tak můžeš použít output buffering.

ob_start();
doo_social_sharelink($post->ID);
$share_links = ob_get_clean();

...

$html .= $share_links;
gna
PHP › HTML v GET parametru proměnné
12. 7. 2022   #390216

Oops, jsem nepostřehl, že už jsi to vykoumal. Tak nic :-)

gna
PHP › HTML v GET parametru proměnné
12. 7. 2022   #390215

   

$nazev = 'nazev...';
$popis = 'popis...';

$url = '?nameid=' . urlencode($nazev) . '&popis=' . urlencode($popis);
$js = 'location.href=' . json_encode($url); // to v tomhle případě není nutné, když víš, že tam není nic problémového
$attr = htmlspecialchars($js, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401);

echo "<i class='nc-icon nc-settings-90' onClick='$attr'></i>";
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.

 

 

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