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.


Témata - Wasper

Stran: [1]
1
Server / Linuxový souborový systém s línou deduplikací
« kdy: 30. 05. 2023, 15:08:53 »
Zdravim vespolek
Nemate prosim nekdo zkusenost/doporuceni, jestli existuje pod Linuxem pouzitelny filesystem, ktery umi deduplikovat data na nem, a da se realne pouzit/nekdo ho pouzivate?

O co jde - hraju si s neuronkama, prakticky kazdy projekt ma jine requirementy (uz jsem rikal, ze nenavidim ekosystem kolem Pythonu?) a vysledkem je dost pres desitku venv-u, ktere jsou z vetsi casti hodne podobne, a jen mamuti jako pytorch uziraji tretinu disku, coz je dost nemile.

Jako last resort mam programek, co prochazi disk a kdyz se shoduje sha256 tak ze 2 fajlu udela pres hardlink jeden, ale jestli to jde nejak elegantneji, tak se rad priucim a zkusim neco noveho.

2
Software / iOS 16 a non-trusted intermediate CA
« kdy: 12. 05. 2023, 20:25:44 »
Zdravím,
rád bych se zeptal, jestli někdo nemáte zkušenost s následujícím problémem.
Mějme privátní CA, dejme tomu ca.moje.org - ta je importnuta do trust store, a je označena jako trusted root CA (Settings - General - About - Certificate trust setting).
Mějme web, podepsaný touhle CA - řekněme web.moje.org. Ten funguje v Safari perfektně.

A pak mějme nějakou proxy, která přebaluje SSLko. Proxy dostala vlastní CA certifikát, dejme tomu squid.moje.org. Když vlezu odkuďkoli na třeba root.cz, tak je vše v pořádku, trust path je následující:

ca.moje.org -> squid.moje.org -> root.cz

Problém je, že to funguje odevšuď, z Win, z Linuxu, dokonce včetně star39ho iPhone s iOS15, ale ne v iOS16, ten mě tvrdohlavě tvrdí, že "not trusted" a já nemůžu přijít na to proč (on to nepoví). Standardní hledání po netu nikam nevedlo, odpovědi jako "nastav tomu trusted" moc nepomáhají když to evidentně trusted je (viz ten test s web.moje.org).
Pokud ale vygeneruju pro squid samotnou self-signed CA a tu importnu, tak to ale začne fungovat.

Nemáte prosím někdo s tímhle zkušenost? Nějaký chybějící nebo přebývající attribut/extension?

3
Distribuce / Vhodná distribuce pro hrátky s AI (Real-ESRGAN)
« kdy: 18. 12. 2022, 11:44:49 »
Zdravíčko vespolek,
Po třech dnech částečných neúspěchů přicházím s prosíkem o vynadání do lam a radu, jak to dělat správně.

Začal jsem si hrát s $SUBJ - https://github.com/xinntao/Real-ESRGAN . To, že to nejde na CPU jsem zjistil poměrně rychle, vyřešil jsem to přidáním 250GB SSD do herního kompu, kde mám nVidii 1650, nainstaloval čistý Debian 11, a začal si hrát, a narážím na jeden problém za druhým.
Nainstalovat cuda nebyl problém, pak jsem postupoval přesně podle zadání - Python, Miniconda, Pytorch, git clone ... podle postupu, vše OK.
Tak se těším, že pustím podle návodu, a dostavilo se dependency hell v Pythoním provedení, změna API v TorchVision 0.13., pak bylo potřeba ještě opravit načítání monochromu. To jsem po složitém kachnění nakonec odignoroval (a pak i opravil), ale stejně jsem se dostal k tomu, že polovina "upscalnutých" obrázků byla černých.

Postupně jsem prošel několika reinstalacemi, různými downgrady PyTorch, Pythona i OpenCV, pak už i komplet reinstallem, downgrade na Debian 10 (Python 3.7), pokus na Slackware 15 - v jedné konkrétní konfiguraci s dowgradnutým TorchVision mi to fungovalo na všechny vzorové obrázky, ale už jsem nedokázal zreplikovat, jak se k ní dostat. A když jsem v ní zkusil síť trénovat, tak stejně se to vyhroutilo.

Co se týče černých obrázků, došel jsem až na opencv - Obrázek se na cv2.imread() načetl správně (byly vidět v print(img) nenulové pixely i rozměr), až na to, že na cv2.imshow(img) to opět ukázalo černé okno. Dokachněno že v opencv 4.3.xxx byla podobná chyba, tak jsem zkoušel několik různých verzí, bez jakéhokoli úspěchu, všude černo.

Tak bych se rád zeptal - poradíte linuxovou distribuci, na které Vám to funguje na první dobrou? Případně setkali jste se s podobnými chybami a podařilo se vám je nějak překonat?

4
Zdravím, rád bych se zeptal - je na Arduinu nějaká lepší možnost než zákaz interruptů, jak atomicky přečíst int16_t popř int32_t?
Konkrétní příklad
Kód: [Vybrat]
volatile int msec;

/* interrupt rutina */
msec++; if (msec > 999) msec = 0;

/* main loop */
while (1) {
    ledka(OFF);
    while (msec < 900) ;      // <---- nekonzistence
    ledka(ON);
    while (msec >= 900) ;
    Serial.printf("je cas %i\n", msec);
}
Tenhle fragment zobrazuje casy 0 0 0 768 0 0 0 768 0 768 0.
Důvod je nasnadě, prvně se načítá low byte, pak high, a když se doprostřed trefí interrupt, který (už načtený) lo změní z 255 na 0, ale ještě nenačtený high naincrementuje z 2 na 3, tak v podmínce se porovnává 1023 < 900 a projde to dál.
OK, ale co s tím? jedna možnost je samozřejmě to obalit nějakým
Kód: [Vybrat]
int my_msec;
cli();
my_msec = msec;
sei();
To samozřejmě fungovat bude, jen se mi to moc nelíbí, reálně chci používat interrupty v množství nemalém (na druhou stranu ty 2 takty navíc asi moc nebolí), ale přecejen, není nějaké čistší řešení? Konkrétně u timeru by se to ošklivě dalo řešit tak, že si ten low byte přečtu znova a porovnám, u složitějších věcí nějakým bytem navíc, kde se nastaví dirty apod.
Ale kam směřuju otázkou - neexistuje něco snadnějšího? Koukal jsem na instrukční set a nic použitelného jako load dvou registrů neobjevil, ale je možné, že jsem slepej/blbej/oboje ;-)

P.S. To výše je jenom nejjednodušší příklad na osvětlení. Že do toho while je dobré dát __asm__ __volatile__ ("sleep") vím, a že to problém omezí, ale úplně nevyřeší (když přiletí interrupt od seriáku a hned pak od timeru, tak se taky může trefit nedobře) vím taky. A že volatile v interruptu se má načíst do lokální proměnné a pak zase po inkrementaci zapsat zpět taky...

5
Software / 3D: OpenSCAD, seznam dílů
« kdy: 14. 09. 2022, 17:51:05 »
Zdravím,
před letu tu bylo dost pokročilých uživatelů, tak bych se rád zeptal, jestli z těch co zůstali někdo neřešil podobný problém.
Používám OpenSCAD na to si nakreslit nějaký budoucí projekt (reálně jsou to jednodušší konstrukce z kovu, ale pro popis problému to zjednoduším na příkladu).

Jednotlivé prvky jsou v samostatné knihovně jako moduly, např.
Kód: [Vybrat]
module spejle(delka, polomer) {
    cylinder(r=polomer, l=delka);
}
module prkynko(x,y,tloustka) {
    cube([x,y,tlousktka]);
}
....
a samotný projekt je pak nepřehledný mix difference-union--- v modulu (+funkční podcelky v dalších modulech) stylu
Kód: [Vybrat]
module jerab() {
    diference() {
        union() {
             prkynko(30,30,2);
             translate([...]) rotate([...]) spejle();
             ....
        }
        translate([...]) dira(4);     // cylinder
    }
}
No a teď k vlastnímu problému. Těch dílů je reálně víc, a je potřeba je objednat. To je celkem jednoduché, do modulu spejle() se prostě přihodí něco jako echo("Kup spejli ", r=r, l=l);, a v horším případě se to copypastne z console v GUI, v lepším se to spustí z command line s patřičným outputem.

Ale teď je tu problém druhý - potřeboval bych jednotlivé díly vidět (==hodit na papír a vzít do dílny). Fajn, přeparsovat ty echa do .scad je triviální, ale to problém neřeší. Co ve skutečnosti v našem modelovém případu je potřeba dostat "na papír" tu desku, ale včetně díry (opět, v reálu tomu odpovídají věci jako tady navrtat, tady vyříznout závit, tady vypálit do plechu díru, u složitějších tvarů via vytisknout na 3d šablonu, podle které se to objede plasmou). A pokud možno to nedělat ručně (těch dílů tam může být několik desítek. A každý díl může být v nějakém difference, takže prosté oremování by mělo dost nehezké následky).
Zpracovat to přímo z té knihovny nevím jak - tam vím, jak je prvek velkej, ale už nevidím, jak moc je otočený/posunutý, takže udělat intersekci jednoho prvku (který jsem získal tím echem) z celým modelem nepůjde.
Co bohužel taky nepůjde je v knihovně počítat, kolikátý prvek to je (ano, v procedurálním jazyce není nic snadnějšího než něco jako if (displej && displej != global_count++) return; a pouštět to postupně openscad -D displej=$n -output prvek$n.stl ale jak tohle udělat v funkcionálním opravdu netuším).
Napadá mě snad jedině každé součástce přihodit ID jako parametr a pak to projet nějakým preprocesorem, ale to už je čuňárna docela veliká i na mě, i když by to fungovalo.
Nemáte někdo vymyšlené něco jednoduššího?

Stran: [1]