Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - A. F.

Stran: [1] 2 3 4
1
Vývoj / Re:Změna pořadí prvků modelu nested set
« kdy: 28. 07. 2020, 16:23:54 »
1) Presouvane prvky oznacit pro tranzit odectenim od nuly

Ono používání záporného čísla nemusí být tak dobrý nápad, jak by se mohlo na první pohled zdát. Nemůžeš pak použít UNSIGNED, a díky tomu vlastně máš poloviční rozsah těch čísel (-2147483648..2147483647 na místo 0..4294967295). Třeba ti to nevadí, neříkám nic. Ale je dobré o tom vědět.
+1

2
Vývoj / Re:Změna pořadí prvků modelu nested set
« kdy: 23. 07. 2020, 21:15:03 »
Prvy za zdrojovým ojbektem - nechat být

Tak to je pak další optimalizace: Můžeš si vytáhnout idečka přesouvaného uzlu, a při přepočítávání lft a rgt k nim přihlížet. Pak by se by oko vystačilo se dvěma UPDATY, a navíc se nebudou ničit indexy u řádek, které nás nezajímají. Drobná nevýhoda je, že nemůžu postavit unikátní index nad lft a rgt.
A nebo je přesouvat na konec a až pak teprve do díry... no, prostor pro optimalizaci tu je.

3
Vývoj / Re:Změna pořadí prvků modelu nested set
« kdy: 23. 07. 2020, 18:56:32 »
omlouvam se spatne jsem to napsal 1.3 potrebuji zobrazovat jako prvni v seznamu pod 1 tzn.

1.
  1.3
  1.1
  1.2

proto potrebuju lft a rgt preskladat nasledovne
Kód: [Vybrat]
name      lft rgt
 1          1   8
 1.3        6   7
 1.2        2   3
 1.1        4   5

order je prave "BY RGT"
 

ale vubec nevim jakym postupem to spravne preskladat
OK, v tom případě tedy:

Máš:
Kód: [Vybrat]
name      lft rgt
 1          1   8
 1.3        2   3
 1.1        4   5
 1.2        6   7
A chceš to mít takto:
Kód: [Vybrat]
name      lft rgt
 1          1   8
 1.3        2   3
 1.2        4   5
 1.1        6   7
To znamená posunout 1.2 nahoru. To znamená podle mého návodu:

1.krok - vytvoření díry
Kód: [Vybrat]
name      lft rgt
 1          1   8
 1.3        2   3
 1.1        6   8
 1.2        9   10

2.krok - přesun uzlu
Kód: [Vybrat]
name      lft rgt
 1          1   8
 1.3        2   3
 1.2        4   5
 1.1        6   8
A protože 1.2 byla poslední, není co uklízet.

order je prave "BY RGT"
Seřazení má být BY lft ASC, ale BY rgt ASC by asi mělo jít taky, i když je to takové řazení "zezadu".

4
Vývoj / Re:Změna pořadí prvků modelu nested set
« kdy: 23. 07. 2020, 18:33:58 »
Kód: [Vybrat]
name      lft rgt
 1          1   8
 1.3        2   3
 1.2        4   5
 1.1        6   7

se ve vysledku zobrazuje
1.
  1.1
  1.2
  1.3

1.3 potrebuji zobrazovat jako prvni

Kód: [Vybrat]
name      lft rgt
 1          1   8
 1.3        6   7
 1.2        2   3
 1.1        4   5

Jo ták. Tak to je proto, protože to máš blbě seřazené. Výpis bude vždycky ... ORDER BY lft. To znamená, že potřebuješ přeskládat ty lft a rgt.

Tedy:

Kód: [Vybrat]
name      lft rgt
 1          1   8
 1.3        2   3
 1.2        4   5
 1.1        6   7
je správně, a máš to definovaný jak to chceš aby se to zobrazovalo. Pokud nezobrazuje, tak máš špatně řazení. To bude ten problém.

5
Vývoj / Re:Změna pořadí prvků modelu nested set
« kdy: 23. 07. 2020, 18:06:30 »
Kód: [Vybrat]
name      lft rgt
 1          1   8 
 1.3        2   3
 1.2        4   5
 1.1        6   7

Prvek 1.3 budu chtit zobrazovat jako prvni. Je nutno ho dat za prvek 1.1. Prvky s vetsim intervalem maji vyssi hodnotu pri zobrazovani.
Prvek 1.3 chceš zobrazovat jako první, nebo za prvek 1.1? Nemůžeš chtít oboje. A nebo ti nerozumím. Jak by měl vypadat cílový stav?

6
Vývoj / Re:Změna pořadí prvků modelu nested set
« kdy: 23. 07. 2020, 17:22:30 »
Kód: [Vybrat]
Takže: nejdřív všechno, včetně těch prvků určených pro přesun přečísluješ nahoru. Ke každému lft a rgt přičteš šířku toho uzlu. Nebudeš tomu dávat záporné hodnoty ani nic podobného.
Pak vezmeš ten uzel a opět přečísluješ lft a rgt směrem dolu tak aby zapadl do připravené díry.
A pak (na to jsem v původním příspěvku zapomněl) zacelíš díru která vznikla po přesunu toho prvku a to tím, že opět přečísluješ lft a rgt dolu o velikost šířku posouvaného uzlu.

Pokud si to predstavuju spravne tak pri presnym postupu je vysledek nula. Nic se nemeni

To určitě ne. Proč si to myslíš?

7
Vývoj / Re:Změna pořadí prvků modelu nested set
« kdy: 23. 07. 2020, 16:23:23 »
Uz par dnu se snazim zmenit poradi prvku v nested set modelu, ale bez uspechu.
Interval <7;16> se snazim preradit v <6;23> na prvni misto

Když jsem tuto úlohu onehdá řešil, tak jsem si to srovnal na tyto čtyři scénáře:
1/ přidání prvku
2/ odebrání prvku
3/ přesun prvku dolů
4/ přesun prvku nahoru

Ve tvém případě to bude tedy přesun nahoru, jestli jsem to dobře pochopil (když tak mě oprav).

To znamená
- vytvořit místo, kam se přesunou prvku
- přesunout prvky

To znamená zjistit jak široký je uzel který přesouváš, to znamená rgt - lft, to znamená jeden SELECT = size.
To znamená zjistit offset přesouvaného uzlu, to znamená jeden SELECT = offset.
Následně UPDATE, které přečísluje všechny uzly, kterou jsou větší jak začátek umístění o size (včetně uzlu, který budeš přesouvat).
Následně UPDATE, které přečísluje přesouvaný uzel: původní lft = lft - offset. (Offset si můžeš vypočítat na začátku, nebo po přesunu - jde oboje.)


Plus samozřejmě by se to dalo různě optimalizovat.

Misto v cilovem rodici mam ale nevim jak tam ty prvky presunout. Prvky oznacene pro presun maji minusovou hodnotu (na zacatku prispevku je to videt) Prakticky provedu odebrani mnoziny a pak znovu pridani. Zadny delete ani insert, protoze id radku je primarni klic a ten se nesmi zmenit kvuli relacim.

Aha. Tak ten problém bude s těmi minusovými hodnotami.

Nene, já neříkám, že máš něco mazat. Budeš používat jen UPDATE. Také žádné odebrání z množiny a její přidání. Jen upravuješ hodnotu lft a rgt.

Takže: nejdřív všechno, včetně těch prvků určených pro přesun přečísluješ nahoru. Ke každému lft a rgt přičteš šířku toho uzlu. Nebudeš tomu dávat záporné hodnoty ani nic podobného.
Pak vezmeš ten uzel a opět přečísluješ lft a rgt směrem dolu tak aby zapadl do připravené díry.
A pak (na to jsem v původním příspěvku zapomněl) zacelíš díru která vznikla po přesunu toho prvku a to tím, že opět přečísluješ lft a rgt dolu o velikost šířku posouvaného uzlu.

Pracuješ s UPDATE a nejvíc řešíš správné WHERE, aby si přečísloval tu správnou množinu uzlů. V prvním případě počínaje prvním uzlem, který chceš stěhovat až do konce. V druhém případě jen uzly, které chceš stěhovat. A ve třetím případě jen uzly od původně posledního rgt stěhované prvku plus jedna až do konce.

8
Vývoj / Re:Zmena poradi prvku nested set modelu
« kdy: 23. 07. 2020, 15:23:30 »
Třeba jsem jen blbý a neznalý, ale mě to připadá už od začátku nějak divně navržené.
To co tam má navržené je takzvané Traverzování kolem stromu. Celkem úspěšná technika jak do ploché databáze uložit strom. Má spousta i výkonnostních výhod pro čtení. Horší je zápis, ale je to spíše náročné na hlavu. Po odlazení už to funguje moc pěkně.

PS: Nejsem si jist, zda v tomto případě je či není nutný znát rodiče, tedy parent_id.

9
Vývoj / Re:Změna pořadí prvků modelu nested set
« kdy: 23. 07. 2020, 15:19:50 »
Uz par dnu se snazim zmenit poradi prvku v nested set modelu, ale bez uspechu.
Interval <7;16> se snazim preradit v <6;23> na prvni misto

Když jsem tuto úlohu onehdá řešil, tak jsem si to srovnal na tyto čtyři scénáře:
1/ přidání prvku
2/ odebrání prvku
3/ přesun prvku dolů
4/ přesun prvku nahoru

Ve tvém případě to bude tedy přesun nahoru, jestli jsem to dobře pochopil (když tak mě oprav).

To znamená
- vytvořit místo, kam se přesunou prvku
- přesunout prvky

To znamená zjistit jak široký je uzel který přesouváš, to znamená rgt - lft, to znamená jeden SELECT = size.
To znamená zjistit offset přesouvaného uzlu, to znamená jeden SELECT = offset.
Následně UPDATE, které přečísluje všechny uzly, kterou jsou větší jak začátek umístění o size (včetně uzlu, který budeš přesouvat).
Následně UPDATE, které přečísluje přesouvaný uzel: původní lft = lft - offset. (Offset si můžeš vypočítat na začátku, nebo po přesunu - jde oboje.)


Plus samozřejmě by se to dalo různě optimalizovat.

10
Distribuce / Re:Docker v Fedoře 32
« kdy: 23. 07. 2020, 14:37:19 »
Druhá možnost je naučit se používat podman :)

Nejsem v zásadě proti. Ale jak tedy?

Můj momentální styl práce s dockerem (který mi teda maximálně vyhovuje), že si vytvořím kontainer s mysql, zjistím jakou má IP (172.17.0.2). Pak si vytvořím mariu, zjistí jako má IP (172.17.0.3), pak si vytvořím php5.6webserver IP (172.17.0.4), php7.2webserver IP (172.17.0.5). Následně různě přehazuju propojuju a tak. Zapamatoval jsem si, že když budu spouštět ty kontainery v tomto pořadí, tak budou dostávat v tomto pořadí IP adresy.

Ano, vím o Kubernets, a spol - ale k tomu jsem ještě nedozrál. Jde to bez nich, postaru způsobem, kterým jsem popsal?

Díky.

11
Distribuce / Re:Docker v Fedoře 32
« kdy: 23. 07. 2020, 14:31:43 »
1. podman-docker je jen docker alias pro Podman
2. Zkuste přidat k parametrům jádra
systemd.unified_cgroup_hierarchy=0
V souboru /etc/default/grub do GRUB_CMDLINE_LINUX

Poté stačí vygenerovat nastavení zavaděče
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

Nebo pro počítač bez UEFI:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

To by měl docker fungovat
OK, to je dost zběsilost ale ok. A tento návod se týká které varianty? Té s podman-docker? U něj jsem neměl problém s cgroup. U něj jsem měl problém že nerozumím těm IP adresám.

12
Software / Sdílení složek ve gnome-boxes Fedora32 -> Windows7
« kdy: 23. 07. 2020, 04:30:35 »
Mám Windows7 ve virtualizaci (gnome-boxes) běžící na Fedora32. Nainstaloval jsem si patřičné doplňky spice-webdavd, vdagent, spice-guest-tools - tam i tam. A po několika restartech se mi povedlo aby tam bylo sdílení složek. A tak jsem si spokojeně nasdílel složku. Ale v těch windows se to nechce nikde zobrazit. Ani jako disk, ani v síti.

Který nenápadný detail jsem prosim vás přehlédl?

díky

13
Distribuce / Docker v Fedoře 32
« kdy: 23. 07. 2020, 04:15:49 »
Aktualizoval jsem si na Fedoru 32 a teď bojuju s dockerem.

Když nainstaluju `docker-ce`, tak mi to chcípá na cgroups. Když nainstaluju `moby-engine`, tak je to podobné.

Když nainstaluju `podman-docker` tak to celkem funguje, ale pod rootem: mi to vytváří container s IP nějak 10.80.8.8. Dá se to nějak ovlivnit? Ale hlavní problém mám s tím, že pod obyč userem vytvořím container, ale není mu přiřazená žádná IP. A mě se nepovedlo vyzkoumat, kde se to nastavuje.

Můžete mi poradit? Kde se dá ovlivnit ta IP adresa?

14
Hardware / Re:Jak zachránit disk
« kdy: 22. 07. 2020, 19:05:49 »
kedze sa ti disk hlasi, tak
nic nepokazis ked sem das vystup z:
fdisk -lu /dev/sdx ...podla toho ako sa ti hlasi disk
Kód: [Vybrat]
# fdisk -lu /dev/sda
fdisk: /dev/sda nelze otevřít: Chyba vstupu/výstupu
Když dám fdisk -lu /dev/sdb což je druhý zdravý disk, tak to vypíše spoustu hlášek. Takže snad žádný překlep.

nasledne mozes spustit smartctl ... ak nemas instalovane, tak install smartmontools
smartctl --smart=on /dev/sdx .... podla disku
smartctl --info /dev/sdx ... dtto
smartctl --capabilities /dev/sdx  ...dtto
smartctl --attributes /dev/sdx .... dtto

staci urobit short test:
smartctl -t short  /dev/sdx ... dtto
vo finale
smartctl -H /dev/sdx ...dtto

a postupne pod kazdy command vloz vystup. Mozno to bude jednoducha vec s relokaciou blokov, alebo to bude fakt zlozita, ktoru si budes musiet zaplatit u odbornikov.

Kód: [Vybrat]
# smartctl --smart=on /dev/sda
smartctl 7.0 2019-03-31 r4903 [x86_64-linux-5.6.13-100.fc30.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enable failed: scsi error badly formed scsi parameters

A mandatory SMART command failed: exiting. To continue, add one or more '-T permissive' options.

Kód: [Vybrat]
# smartctl --info /dev/sda
smartctl 7.0 2019-03-31 r4903 [x86_64-linux-5.6.13-100.fc30.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     ST3000DM001
Serial Number:    Z503M6GX
LU WWN Device Id: 5 000c50 092985ae6
Firmware Version: CC26
User Capacity:    137 438 952 960 bytes [137 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    7200 rpm
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 3.0, 6.0 Gb/s
Local Time is:    Wed Jul 22 18:56:11 2020 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Kód: [Vybrat]
# smartctl --capabilities /dev/sda
smartctl 7.0 2019-03-31 r4903 [x86_64-linux-5.6.13-100.fc30.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

Read SMART Data failed: scsi error badly formed scsi parameters

=== START OF READ SMART DATA SECTION ===

Kód: [Vybrat]
smartctl --attributes /dev/sda
smartctl 7.0 2019-03-31 r4903 [x86_64-linux-5.6.13-100.fc30.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

Read SMART Data failed: scsi error badly formed scsi parameters

=== START OF READ SMART DATA SECTION ===

Kód: [Vybrat]
# smartctl -H /dev/sda
smartctl 7.0 2019-03-31 r4903 [x86_64-linux-5.6.13-100.fc30.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

Read SMART Data failed: scsi error badly formed scsi parameters

=== START OF READ SMART DATA SECTION ===
SMART Status command failed: scsi error badly formed scsi parameters
SMART overall-health self-assessment test result: UNKNOWN!
SMART Status, Attributes and Thresholds cannot be read.

hdparm -i /dev/DEVICE
Kód: [Vybrat]
# hdparm -i /dev/sda

/dev/sda:

 Model=ST3000DM001, FwRev=CC26, SerialNo=Z503M6GX
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=8089950
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: unknown:  ATA/ATAPI-4,5,6,7

 * signifies the current active mode


hdparm -N /dev/DEVICE
Kód: [Vybrat]
# hdparm -N /dev/sda

/dev/sda:
SG_IO: bad/missing sense data, sb[]:  70 00 05 00 00 00 00 0a 04 51 40 00 21 04 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
SG_IO: bad/missing sense data, sb[]:  70 00 05 00 00 00 00 0a 04 51 40 01 21 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 max sectors   = 8089950/1(1?), HPA setting seems invalid (buggy kernel device driver?)

Upřímně, moc se nechytám. Na první pohled mi přijde, že je po něm.

15
Hardware / Re:Jak zachránit disk
« kdy: 22. 07. 2020, 11:56:08 »
Možná by bylo lepší, kdyby jste nejdřív četl co zakladatel vlákna napsal, než začnete s vašimi radami. 3TB disk se nyní hlásí jako 4TB [..]
take se mozna podivej jeste jednou ;) tazatel psal ze ted se hlasi "jako 4.1GB"...

To je předpokládám jen překlep. Protože 3 TB disk, co se začne hlásit jako 4TB jsem už viděl (nebo i jiné kapacity) ale ne aby se hlásil o 3 řády menší (i když je to teoreticky možné, tak je ta pravděpodobnost, že to tak je nízká). Každopádně asi by pomohlo kdyby tazatel poslal jasné výstupy z nástrojů, které něco prozradí.

Není to překlep. Skutečně se mi to teď hlásí s kapacitou 4.1GB.

Nějaké další výstupy dám k dispozici, až tam ten disk zase vrátím. Smířil jsem se s myšlenkou, že jsem o ně přišel.

Stran: [1] 2 3 4