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
PHP › Pocuvanie UDP a spracovanie…
před 7 hodinami   #390957

A jestli to použiješ, tak do té sekce Service asi ještě přidej User=... a Group=... pod kterými to má běžet.

gna
PHP › Pocuvanie UDP a spracovanie…
před 7 hodinami   #390956

Od PHP jako takového bych problém nečekal a ta knihovna pro MQTT vypadá dobře, takže když preferuješ PHP, tak bych se nebál to zkusit. Kdyžtak můžeš třeba pro jistotu po každých 1000 zprávách ten skript ukončit.

Na tom Debianu ti pravděpodobně beží systemd, tak [re]start můžeš řešit přes něj.

/etc/systemd/system/zigbeemqtt.service

[Unit]
Description=zigbeemqtt
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service
StartLimitIntervalSec=300
StartLimitBurst=5

[Service]
ExecStart=/foo/bar baz
Restart=on-failure
RestartSec=1s

[Install]
WantedBy=multi-user.target
gna
Python › AI analýza textu, gramatika…
27. 1. 2023   #390943

Jestli tou analýzou myslíš kontrolu nebo doplňování interpunkce, tak češtinu prostě nejde strojově analyzovat pro jednoznačné pochopení významu a bez toho nejde (stoprocentně) opravovat interpunkci. Link nemám, ale když nad tím budeš koumat, tak tě určitě pár přikladů napadne.

Natrénování toho, čemu se dneska říká AI (která neví, ale dost dobře hádá) taky nevidím nadějně.

gna
Assembler › Pomoc- Assembler
18. 1. 2023   #390839

#6 JerryM
Provokatér jsi ty. Já jsem taky držka nevymáchaná, ale to, jak ty každého zjebeš dementní sáhodlouhou rozpravou k ničemu je fakt síla.

gna
Assembler › Pomoc- Assembler
18. 1. 2023   #390835

RLC/RRC rotuje přes carry flag. Tzn. že jak se ty bity posunují, tak se ten jeden krajní vyšoupne do carry a ten na druhé straně zase doplní z předchozí hodnoty carry. To nechceš.

Zkrátka místo RLC/RRC použij RL/RR.

Jinak tam nic vyloženě špatně nevidím. Kromě toho, že to není dokončené.

gna
Java › náhodná velikost pole
15. 1. 2023   #390818

   

rd.nextInt(limit);
gna
Python › súčtová pyramída
15. 1. 2023   #390816

A co nevíš?

gna
Assembler › x86 NASM čtení z terminálu a…
11. 1. 2023   #390801

#8 JerryM
Ty vole, ty seš takovej vůl.

gna
Assembler › x86 NASM čtení z terminálu a…
11. 1. 2023   #390799

Tak mě napadá, že už při načítání můžeš ukládat jen půlku řádku a rovnou s tím ukončovačem. Tím se to dost zjednoduší.

gna
Assembler › x86 NASM čtení z terminálu a…
11. 1. 2023   #390798

OK, u té funkce 0x0A je v tom bufferu 1 byte určující kapacitu, pak 1 byte určující délku načtených dat, a pak X byte těch dat.

Nevím, jak s touhle funkcí zjistit konec vstupu. Asi ji používáte tak budeš vědět, jak to děláte.

To, že rovnou máš v paměti [delka, data...] se hodí a použil bych to pro uložení všech řádků. Takže nakonec můžeš mít kompletní data ve formátu:

3, 'abc', 6, 'nazdar', 5, 'bazar'

Ty řetězce pak projdeš a před výpisem doprostřed vložíš ten ukončovací '$' pro funkci 0x09.

V pseudokódu celý program může vypadat nějak takhle:

max_line_count  equ 600
max_line_len    equ 100

segment code

start:
    ...

read_lines:
    if line_count == max_line_count
        goto print_lines

    ; nacteni radku
    buffer.used = 0
    int21.read(buffer)

    ; nevim jak s touto funkci detekovat konec vstupu
    ; dejme tomu, ze to bude zadani <ctrl-z>, <enter>
    ; tj. v bufferu bude jeden znak s hodnotu 26
    if buffer.used == 1 and buffer.data[0] == 26:
        goto print_lines

    ; ulozeni radku. delka + data
    copy_src = @buffer.used
    copy_dst = save.ptr
    copy_len = buffer.used + 1
    copy(copy_dst, copy_src, copy_len)

    line_count += 1
    save.ptr += copy_len

    goto read_lines

; vypsat prvni polovinu nactenych radku
; a z kazdeho radku jen prvni polovinu nactenych bajtu
print_lines:
    line_count = line_count / 2
    save.ptr = @save.data

next_line:
    if line_count == 0
        goto end
    line_count -= 1

    line_length = save.ptr[0]
    line_data = save.ptr + 1
    save.ptr += 1 + line_length

    line_length = line_length / 2
    if line_length == 0
        goto end_line

    line_data[line_length] = '$'
    int21.print(line_data)

end_line:
    int21.print(crlf)

    goto next_line

end:
    int21.exit(0)


segment data

line_count  dw      0
crlf        db      13, 10, '$'

buffer:
.max        db      max_line_len + 1
.used       db      0
.data       resb    max_line_len + 1

save:
.data       resb    (1 + max_line_len + 1) * max_line_count
.ptr        dw      save.data
gna
Assembler › x86 NASM čtení z terminálu a…
10. 1. 2023   #390793

Pokud to nemusí běžet na DOS 1, tak s funkcemi 0x3F/0x40 to podle mě bude jednodušší.

gna
Assembler › x86 NASM čtení z terminálu a…
10. 1. 2023   #390789

Tak v první řadě pro funkci 0x0a musí být v tom bufferu jeho délka, a pro funkci 0x09 musí být ten řetězec ukončený dolarem.

gna
Python › Pdf a Acro Form
4. 1. 2023   #390768

 To je zvláštní, že to nemá tu definici Fields, ale toto teda (u mě) chodí.

from pdfrw import PdfReader, PdfWriter, PdfDict, PdfName, PdfString

def merge(outfile, seznam):
    writer = PdfWriter()
    merged_acroform = None

    for idx, fname in enumerate(seznam):
        reader = PdfReader(fname)
        assert not reader.Root.AcroForm or not reader.Root.AcroForm.Fields

        if merged_acroform is None and reader.Root.AcroForm:
            merged_acroform = reader.Root.AcroForm

        for page in reader.pages:
            for annot in page.Annots or []:
                name = annot.T[1:-1]
                annot.T = f"{name}_merge{idx}"

        writer.addpages(reader.pages)

    if merged_acroform:
        writer.trailer.Root.AcroForm = merged_acroform
    else:
        writer.trailer.Root.AcroForm = PdfDict({PdfName("NeedAppearances"): PdfString("true")})
    writer.write(outfile)
gna
Python › Pdf a Acro Form
4. 1. 2023   #390766

Jestli můžeš, tak pošli 2 ukázkové soubory. Já na to mrknu.

gna
Python › Pdf a Acro Form
4. 1. 2023   #390764

Mně funguje zopakování a přejmenování definice polí. (Merguju stejné formuláře)

from pdfrw import PdfReader, PdfWriter, PdfName

def merge(outfile, seznam):
    PdfT = PdfName("T")
    PdfFields = PdfName("Fields")

    writer = PdfWriter()
    merged_acroform = None

    for idx, fname in enumerate(seznam):
        reader = PdfReader(fname)
        form = reader.Root.AcroForm
        fields = form[PdfFields]
        for field in fields:
            name = field[PdfT][1:-1]
            field[PdfT] = f"{name}_merge{idx}"

        if merged_acroform is None:
            merged_acroform = form
        else:
            merged_acroform[PdfFields] += fields

        writer.addpages(reader.pages)

    writer.trailer.Root.AcroForm = merged_acroform
    writer.write(outfile)
gna
C / C++ › Typedef v C ?
1. 1. 2023   #390759

Můžeš si napsat pomocnou funkci nebo makro, ale jinak ne, C nemá výchozí hodnoty nebo konstruktory struktur.

#define FRAM(name) Fram name = { .staticS = 0b111 };
...
FRAM(fram);
fram.w1 = ...;
gna
Python › list s využitím if
31. 12. 2022   #390756

Nevím, vypisuješ obsah toho seznamu, tak bys měl vidět, co tam je a není, ale tipl bych, že třeba zadáváš ta jména jako "petr, pavel" a pak tam máš tu mezeru navíc ("petr" a " pavel").

gna
JavaScript, AJAX, jQuery › jquery odpočet
29. 12. 2022   #390753

A ty funkce parseTimespan a formatTimespan neexistují. Jde jen o princip.

gna
JavaScript, AJAX, jQuery › jquery odpočet
29. 12. 2022   #390752

Funkcí setInterval můžeš naplánovat periodické spouštění funkce, ve které ty časy upravíš.

function startTimer() {
    setInterval(updateTimes, 1000);
}
function updateTimes() {
    for (const el of document.querySelectorAll('.timer')) {
        el.innerText = formatTimespan(parseTimespan(el.innerText) - 1);;
    }
}

To časování není úplně přesné, takže takový pokus každou sekundu odečíst 1 sekundu se ti při delším běhu trochu rozjede. Ideální by bylo, kdybys tam měl finální čas expirace a vždycky z aktuálního času počítal zbývající dobu.

gna
MS SQL › Moje semetrální práce
26. 12. 2022   #390746

#2 Missu
Máš tam i řešení, co ti nefunguje?

gna
C / C++ › Přepis v souboru na velká pí…
20. 12. 2022   #390742

Tohle je těžké. Jedna věc je se na něčem zaseknout a hodně jiná věc je mít (zkopírovat) 5 funkcí a nechápat ani řádek.

Tak na ten kód chvíli zírej a uvidiš, že se funkcím předávají nějaké hodnoty jako parametry a vracejí jiné hodnoty jako výsledky. A pak stačí stejným způsobem tu konverzní funkci aplikovat na načtený text.

gna
C / C++ › BFS - C++
18. 12. 2022   #390735

Třeba máš ty uzly očíslované, tak začátek a konec zadáš jako číslo.

Při návštěvě každého uzlu si můžeš uložit, odkud jsi na něj přišel a z toho pak zrekonstruovat cestu.

gna
C / C++ › string vypisuje 2x
17. 12. 2022   #390733

Protože příznak konce souboru (nebo chyby) se nastaví až když se pokusíš číst za koncem a protože getline tu výstupní proměnnou nijak nemění když nic nenačte.

  • Čili načteš poslední řádek a vypíšeš ho.
  • Soubor je vpořádku, tak čteš dál. Fakticky jsi na jeho konci, tak teď to selže a do myline se nic nevloží a je tam předchozí hodnota, kterou znova vypíšeš.
  • Až teď detekuješ konec souboru a cyklus končí.

Můžeš dát přímo getline jako podmínku toho cyklu.

while (getline(myfile, myline))
{ 
    cout << myline << '\n';
}
gna
Python › Python unit test
12. 12. 2022   #390719

Nepoužil jsi nic z toho, co jsem ti poradil a máš to ještě blběji než předtím.

gna
Python › Python unit test
11. 12. 2022   #390717

   

# === example.py
def coding(s):
    ...
    return void  # nazev `void` je hodne blby

def decoding(s):
    ...
    return void

def main():
    while ...:
        ...
        if d==1:
            print(coding(vstup))
        else:
            print(decoding(vstup))

if __name__ == "__main__":
    main()

# === test.py
def test_coding():
    assert coding("A") == ".-"
    ...
gna
Python › Python unit test
10. 12. 2022   #390715

Ve funkci `decoding` máš pracovat s parametrem `s`, ne s globální proměnnou `a`.

Tu interaktivní smyčku spouštěj jen při přímém spuštění skriptu, ne při jeho importu odjinud (z testu). Přímé spuštění poznáš tak, že proměnná `__name__` má hodnotu "__main__".

V tom testu ve funkci `test_coding` budeš testovat funkci `coding` (ne test_coding). A `coding` tedy nebude výsledek vypisovat, ale bude ho vracet jako návratovou hodnotu (příkaz return). To samé pro `decoding`.

`pytest.raises` testuje jestli někde (kdekoliv) v tom bloku dojde k uvedené vyjímce. Ty asi chceš testovat, že všechny ty varianty tu vyjímku vyhodí (a tam mi není jasné proč by "r" mělo házet TypeErrror).

gna
PHP › Funkce XOR obecně
8. 12. 2022   #390710

#3 oxidián
XOP a !== přece není jedno a to samé

Když už sis to rozepsal do té tabulky, tak přece musíš vidět, že tě prakticky zajímá rovnost (a potažmo, že test nerovnosti je jako xor).

gna
Pascal › Lazarus - databaze SDF
7. 12. 2022   #390705

Podle Wikipedie SQLCE podporuje OLEDB, takže by to mohlo jít, ale nevím.

gna
Webové servery (Apache, IIS...), .htaccess › Apache a nastavení mod rewri…
3. 12. 2022   #390701

Pořád nevím, jestli tomu rozumím správně :-)

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule "^(.*)$" "clanky/$1.php" [QSA,L]
gna
Webové servery (Apache, IIS...), .htaccess › Apache a nastavení mod rewri…
3. 12. 2022   #390696

Mně není jasné, jak to má fungovat. Možná to spíš rozepiš jako adresy.

index... => index...
foo => clanky/foo.php
??? => ???

Nebo všechno směruj na jeden skript, kde si to url rozparsuješ a naincluduješ soubory jak chceš. Ať už rewritem nebo jako ErrorDocument.

gna
Webové servery (Apache, IIS...), .htaccess › Apache a nastavení mod rewri…
2. 12. 2022   #390693

Nepostřehl jsem ten edit, že už ti to chodí. Asi se ti to stejně chová jinak než mně, ale hlavně, že to šlape :-)

gna
Webové servery (Apache, IIS...), .htaccess › Apache a nastavení mod rewri…
2. 12. 2022   #390692

Aha, to jsem špatně pochopil ten první konfig.

Ale prostě to přepisuje na /clanky/, tak tam buď dej celou cestu, nebo umaž to lomítko a "předponu" dej do rewritebase.

gna
Webové servery (Apache, IIS...), .htaccess › Apache a nastavení mod rewri…
2. 12. 2022   #390690

#12 oxidián
Přitom to tam je. Takže by to měl najít.

Něco tam je, když ti to projde přes cond -f. Ale asi tam není /clanky/ když je to /adresarstranky/clanky/

gna
Webové servery (Apache, IIS...), .htaccess › Apache a nastavení mod rewri…
2. 12. 2022   #390688

Já jsem to zkusil bez toho lomítka a funguje to. Dává to smysl, nevím proč jsem měl zafixováno, že se RewriteBase přidává vždycky.

gna
Webové servery (Apache, IIS...), .htaccess › Apache a nastavení mod rewri…
2. 12. 2022   #390686

Nevím, možná pages bez toho počátečního lomítka, ale myslím si, že by se RewriteBase mělo vždycky předřadit. V dokumentaci taky nic nevidím a instalovat se mi to nechce :-)

Nebo možná prostě napiš do RewriteRule tu cestu celou.

gna
Webové servery (Apache, IIS...), .htaccess › Apache a nastavení mod rewri…
2. 12. 2022   #390684

dev a prod jako "development" a "production" server.

Přidej tam [R] ať vidíš kam to přesměrovává.

gna
Visual Basic › Zkopírování hodnot barev a n…
2. 12. 2022   #390682

Co bys tady do toho komentáře napsal? Že Interior je vnitřek a Color je barva?

gna
Webové servery (Apache, IIS...), .htaccess › Apache a nastavení mod rewri…
2. 12. 2022   #390681

Jj, na tom localhostu potřebuješ zachovat to počáteční /mojestranka. Mělo by stačit upravit RewriteBase.

# dev
RewriteBase /mojestranka
# prod
RewriteBase /
gna
Webové servery (Apache, IIS...), .htaccess › Apache a nastavení mod rewri…
1. 12. 2022   #390671

Jestli správně chápu, o co ti jde, tak to bude fungovat, tak jak chceš.

Ten přepis proběhne jen na serveru. Z pohledu prohlížeče, když budeš mít "/foo" a v něm "něco.css", tak to bude "/něco.css".

To [L] znamená last / konec zpracování. Jestli nechceš dělat nic dalšího, tak to tam můžeš přidat.

A asi bych do toho regexu na konec přidal $, pokud chceš matchovat jen "bar" a ne třeba i "barman".

gna
MySQL › Identifikácia hostu clienta
30. 11. 2022   #390667

MySQL dělá obousměrný překlad ipadresa->hostname->ipadresa a ty adresy musí sedět. Výsledky se cachují, možná ti tam z testování visí negativní záznam.

Takže ověř, že se ti to v obou směrech resolvuje správně a vyprázdni DNS cache pomocí FLUSH HOSTS.  A pro jistotu se podívej jestli jsi tam nezapomněl nějaké testovací účty, které by navzájem kolidovaly.

gna
JavaScript, AJAX, jQuery › Když se obrázek nevejde na š…
29. 11. 2022   #390663

#13 oxidián
Já jsem chytil toho skrolování, protože na mobilech typicky nechytáš a netaháš posuvníky na kraji okna, ale vnitřní obsah toho okna. Takže efekt je stejný.

gna
JavaScript, AJAX, jQuery › Když se obrázek nevejde na š…
29. 11. 2022   #390660

#11 oxidián
No, ty jsi chtěl šoupat obrázek. To je skrolování. Já jsem navrhl to nedělat programově, ale dát ho do skrolovatelného divu (overflow: auto).

Původně mi to fungovalo pěkně (sáhnu na obrázek a posunu ho), ale když jsem to později zkoušel znova, tak to často kvedlalo celou stránkou. To je na prd.

Tak jsem to ještě zkusil skrolovat programově a to funguje dobře.

gna
JavaScript, AJAX, jQuery › Když se obrázek nevejde na š…
29. 11. 2022   #390658

To draggable byl jen první nápad, kdyby sis s tím chtěl hrát.

Spíš jsem myslel nechat to scrolování na prohlížeči. Ale jak jsem si s tím hrál, tak mi to dost často scrolovalo celou stránku místo jen obrázku. S nabindovanými touch událostmi to ale pěkně scroluje jen obrázek.

A ještě raději asi jak to napsal Peter. Zobrazit ten obrázek celý a zase nechat zoomování na prohlížeči, pokud je to použitelné.

gna
JavaScript, AJAX, jQuery › Když se obrázek nevejde na š…
28. 11. 2022   #390653

Touchpad je prakticky myš a touchscreen na mobilech taky funguje podobně jako myš. "Chmatání" na tlačítka funguje stejně, jako bys na ně klepnul myší.

Zkoušet to můžeš i na desktopu, když přepneš do mobilního režimu (Ve FF a Ch je to zkratka Ctrl+Shift+M)

gna
JavaScript, AJAX, jQuery › Když se obrázek nevejde na š…
28. 11. 2022   #390647

jQuery UI má funcki draggable, která by mohla jít rozchodit na mobilech pomocí jQuery UI Touch Punch, ale mně se to nepovedlo.

Ale jednoduchý scrolovatelný div mi funguje pěkně. 

#scroll {
  width: 200px;
  height: 200px;
  overflow: auto;
}
--
<div id="scroll">
<img src="elephant.jpg">
</div>
gna
PHP › Nedaří se mi uspořádat pole…
27. 11. 2022   #390642

Mně to připadá, že chceš sortovat o úroveň hlouběji.

// ne tak
$img_list[$k]['Q_alternative'][$i]
// ale tak
$img_list[$k]['Q_alternative'][$i][...]

Ale moc do detailu jsem to nezkoumal (je to dlouhýýý)

gna
Delphi › Jak převést tři bajty RGB na…
25. 11. 2022   #390634
gna
Delphi › Jak převést tři bajty RGB na…
25. 11. 2022   #390633

#30 oxidián
Že 205 jede a 206 spadne je k ničemu. Podívej se na hodnoty těch pointerů.

Ten řádek máš v pd0 a voláš to s ps0. Už ten předhozí kód jsem se ani nepokoušel pochopit, protože prostě nedává smysl.

Jestli ti nějaký kód přepisem přestal fungovat, tak jsi ho prostě přepsal blbě :)

gna
Delphi › Jak převést tři bajty RGB na…
25. 11. 2022   #390632

#29 MilanL
Dokumentace vypadá, že změna formátu ta data přeformátuje. A zdá se, že mu to padá ještě před tím než by narazil na rozdíl mezi 24/32.

gna
Delphi › Jak převést tři bajty RGB na…
25. 11. 2022   #390628

Jo, a to co jsem chtěl napsat je, že bitmapa může být uložená shora dolů nebo zdola nahoru. Nevím, co je windowsí nebo delphácký default, ale ta verze zdola nahoru by možná vysvětlovala, proč ti to padá. Tj. pokud je první řádek fyzický poslední, tak při pokusu koukat na další řádky za ním, saháš úplně mimo.

Předpokládám, že to zase půjde ověřit kouknutím na pointerý vrácené ze Scanline.

gna
Delphi › Jak převést tři bajty RGB na…
25. 11. 2022   #390627

Integer v Delphi je vždycky 32b. Dword nejspíš taky. Ale velikosti pointerů se na 32/64 liší. To už psal Milan, že ta konverze není dobrý nápad. Ale když to budeš kompilovat jako 32b aplikaci, tak prostě bude 32b a když pak poběží na 64b systému, tak se o případné konverze postará systém.

To, že by Scanline zpřístupňovala jen jediný řádek se mi zdá nepravděpodobné.

Myslím, že Delphi obsahuje zdrojáky VCL, tak bys krokováním dovnitř Scanline měl vidět, co dělá. A i bez zdrojáků by asi měl být vidět aspoň disassemblovaný stroják a na tom taky poznáš, jestli to jen násobí šířku řádku, nebo něco čaruje.

Nebo ještě jednodušeji prostě zkusit dva různé řádky a podívat se jak se ty vrácené pointery liší. To taky už psal Milan :-)

gna
Delphi › Jak převést tři bajty RGB na…
23. 11. 2022   #390612

jj, já jsem to zrovna teď zkoušel a nevšiml jsem si, že ty už taky :)

gna
Delphi › Jak převést tři bajty RGB na…
23. 11. 2022   #390611

A asi to teda je arr^[x]

gna
Delphi › Jak převést tři bajty RGB na…
23. 11. 2022   #390609

Chce měnit barvu pixelu. Já ale chci v proceduře nabrat výběr barev, ne je měnit.

Nejdřív ho načte, pak otestuje a pak případně mění.

Jak odkázat na 32bitů a uložit to na integer?

Dostaneš obecný ukazatel, ten přetypuješ na ukazatel na 32b typ, takže dereferencí dostaneš odkazovanou 32b hodnotu. Už to Milan napsal.

Jednoduchý trik je použít ukazatel na pole, ale netuším jestli to ještě funguje.

type
  PArray32 = ^TArray32;
  TArray32 = array [0..0] of DWORD;

var
  a32: PArray32;
...
a32 := ...ScanLine[0];
{$R-}  // to pole je definovane jako 0..0, takze vypnout range check, pokud ho mas zapnuty
a32[0]
a32[1]
a32[2]
{$R+}
gna
Právo a podnikání › Konkurencna dolozka
23. 11. 2022   #390602

To je celkem normálka. Akorát bývá zvykem konkrétně uvést kolik ti po tu dobu budou platit, ale možná to není nutné a předpokládá se zákonné minimum. A netuším, jak to máte na Slovensku.

Podstatný je smysl takové doložky. Pokud ti zaměstnavatel platí školení, dává přístup k technologiím, nějak získáváš jejich know-how, atd. tak to nedělá proto, abys mu pak utekl a přebral zákazníky.

Jako živnostník v takové situaci nejspíš nejsi a ta doložka je nesmyslná. U nás automaticky neplatná.

Pokud je platná, tak ji můžete zrušit. Prostě se s nimi dohodni. (Nebo můžeš tu pokutu zaplatit předem, ale to asi není to, co bys chtěl :-)) A i pokud není platná, tak si to zavčas písemně vyjasněte.

gna
Matematika › Jak sloučit výsledky ze Sobl…
22. 11. 2022   #390597

Tak se mi ta "hustší" verze zdá lepší.

gna
Matematika › Jak sloučit výsledky ze Sobl…
22. 11. 2022   #390596

V principu jo, když ten kernel otočíš na diagonálu, tak bude detekovat diagonální hrany.

Akorát takhle kolem té diagonály "vzorkuješ trojúhelníky". To nedovedu intuitivně odhadnout, jak se to bude chovat a jestli by nebylo lepší ten kernel zvětšit. Jako takhle:

-1| 0| 1
-2| 0| 2
-1| 0| 1

A pootočit takhle:
  |  |-1|  |
  |-2|  | 0|
-1|  | 0|  | 1
  | 0|  | 2|
  |  | 1|  |

Ale fakt nevím.

gna
Matematika › Jak sloučit výsledky ze Sobl…
22. 11. 2022   #390588

Vezmeš pixel a jeho "sousedy", takže máš 3x3 pixely a matici 3x3 definující jejich "váhy". Jednotlivé pixely vynásobíš jejich váhami a ty násobky pak sečteš. A to uděláš pro všechny pixely.

Když se na ty matice/kernely podíváš, tak vidíš, že se stejné (nebo podobné) hodnoty nulují a rozdíly vynikají. Výrazné rozdíly jsou hrany. To je celé.

A když teda máš vertikální a horizontální hrany a chceš je sloučit, tak pro spoustu účelů je stačí normálně sečíst. Ale když je to teda vlastně vektor, tak se nabízí výpočet velikosti toho vektoru. A když máš vektor, tak máš i úhel. Jakoby kterým směrem je ten rozdíl "nejstrmější".  V rámci těch 9 pixelů.

Na tom není nic k přemýšlení. A Matlab umí násobit a sčítat prvky matic, zázrak.

Co se týče toho odstraňování čísel, tak ty nejspíš budou všechny stejným fontem. Takže hrubě vytipovat oblasti, kde by mohly být a pak zkusit jestli tam opravdu jsou číslice.

gna
Java › JAVA - výpis inputu na jedno…
28. 10. 2022   #390496

Terminál/konzole je typicky v řádkovém režimu. To znamená, že se zadávaná data pošlou do programu až když Enterem ukončíš řádek. A Scanner podporuje i mezery jako oddělovač dat.

Jestli chceš zadat více hodnot na jednom řádku, tak nemusíš nic upravovat a prostě je tak zadej :)

Ale jinak teda teď asi po každém načtení hodnoty ji hned vypisuješ. Takže v jednom cyklu jen načti hodnoty a až potom je v dalším cyklu vypiš. (A zavání to tím, že budeš počítat průměr. Součet a počet můžeš počítat průběžně a ty hodnoty nepotřebuješ ukládat).

gna
Java › JAVA - while cyklus
28. 10. 2022   #390492

Pokud chceš vyloženě 4 čísla, třeba jako nějaké řídící parametry, tak je prostě načti do samostatných proměnných. Pokud jsou to nějaká data, která se hodí mít pohromadě, tak třeba do pole. A pokud nevíš velikost, jako třeba to čtení do 0, tak nějaký List.

double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
double d = scanner.nextDouble();
// ======
double poleCisel[] = new double[4];
for (int i = 0; i < 4; i++) {
    poleCisel[i] = scanner.nextDouble();
}
// ======
ArrayList<Double> listCisel = new ArrayList<>();
while ((cislo = scanner.nextDouble()) != 0.0) {
    listCisel.add(cislo);
}
gna
Java › Lokalni extremy
26. 10. 2022   #390480

Máš tam jasně napsané, že krok toho cyklu bude delta. Takže projdeš ten interval a najdeš a ty extrémy.

gna
.NET › čtení z win registru - zobra…
24. 10. 2022   #390456

#3 davhoos
Na té odkazované stránce je i ukázkový kód nastavující text.

gna
C / C++ › Proč nejde zkompilovat proje…
24. 10. 2022   #390449

Někde v nastavení buildu je volba úrovně logování. Zkus dát co nejvyšší a třeba pak půjde vidět, co konkrétně tomu chybí.

gna
MySQL › Vypsání řádků od jednoho spe…
9. 10. 2022   #390441

A toto teda vyžaduje, aby ten sub-select něco našel. Pokud chceš, aby to fungovalo vždy, tak to můžeš třeba zabalit do IFNULL. 

IFNULL( (select ... ), 0 )
gna
MySQL › Vypsání řádků od jednoho spe…
9. 10. 2022   #390440

V SQL jde dělat "subquery". Můžeš tak použít výsledek selectu jako hodnotu v jiném výrazu. To může být dost neefektivní, ale v tomhle případě na tom nesejde.

Takže můžeš třeba vyselektovat datum posledního plnění a to použít pro vyselektování novějších záznamů.

SELECT *
FROM   tabulka
WHERE  datetime > (SELECT Max(datetime)
                   FROM   tabulka
                   WHERE  ticks = -1)
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íš.

 

 

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