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 - fortran1986

Stran: 1 ... 4 5 [6] 7 8 ... 18
76
Hardware / Statická elektrina a elektronika
« kdy: 06. 04. 2021, 23:42:29 »
Začal som sa venovať hrátkam s elektronikou. Nakúpil som si kopu súčiastok, komponent, shieldov, microcontrollerov, processorov atď. Kúpil som si na to taký organizér zložený s malých plastových šuflíkov. Mno, ale vačšina tých komponent mi chodí zabalených v sáčkoch, ktoré tlmia elektrický výboj.

Rád by som tie súčaistky vybalil a vložil do šuflíka "len tak" nezabalené, ale mám strach či ich náhodoou nepoškodím. Aká je pravdepodobnosť, že statická elektrina niečo zničí? Celé detstvo som sa venoval pokusom s elektronikou.

Používal som rôzne čipy a tranzistory FET MOSFET riadené elektrickým poľom a nikdy sa mi nič nezničilo (zničilo ale nie statickou elektrinou), taktiež s počítačovými komponentami som X krát manipuloval, nikdy som nebol uzemnený a nikdy som nič nepoškodil. Takže mne príde, že toto je trošku prehnaná opatrnosť. Alebo ako tie súčiastky uskladniť a ako s nimi manipulovať?

Naozaj sa človek musí uzemniť keď chce manipulovať s elektronikou? keby som na tie šuflíčky z vnútra naniesol nejaký elektrovodivý lak, antistatický sprej, alebo kovovú fóliu nestačilo by to?

77
Vývoj / Re:Arduino inšpirácia
« kdy: 13. 03. 2021, 00:54:17 »
ďakuejm Vám za tipy chlapci... aj za odkaz.

78
Vývoj / Arduino inšpirácia
« kdy: 11. 03. 2021, 20:42:46 »
Keďže tu máme kovídek a s ním aj veľa volného času, rozhodol som sa, že sa niečo nové naučím. Práve sa zoznamujem s arduinom a som ním veľmi príjemne prekvapený. Neskôr plánujem vyskúšať aj iné microcontrollery ako: BBC Micro Bit alebo Raspberry Pi Pico

Kúpil som si k arduinu niekoľko stavebníc a starter packov. Mám rôzne a súčiastky od výmyslu sveta, senzory, displeje ledky, wifi modul mikrofóny vysielače prijímače atď. A skúšam si príklady čo boli na CD aby som vedel, čo všetko sa s tým dá vlastne robiť.

Rád by som si ale naprogramoval nejakú reálnu aplikáciu s využitím microcontrollera (a C++). Nemáte náhdou nejaké nápady? Alebo načo ste vy využili arduino?

Ja mám zatiaľ len jeden nápad:

Urobiť si hardwarovú crypto peňaženku s malým dotykovým displejopm. A podporou viacerých kryptomien.

PS ospravedlňujem sa za horšiu gramatiku, spal som len 2 hodiny

79
Vývoj / Re:Arduino a knihovny
« kdy: 05. 03. 2021, 14:58:58 »
Kua ja sa som sa tiež nechal ovplyvniť reklamou na facebooku na VisualMicro (nejaké Audrino IDE pre Visual Studio) a keďźe som na to pár krát zo zvedavosti klikol, google ad sense mi začal zobrazovať (na Amazone, Aliexpresse a Banggood) reklamu na rôzne zaujímavé súčiastky pre audrino a ja som na to všetko pažravo klikal a objednával. Nakoniec som si kúpil na Amazone Audrino Starter pack + ELEGOO Starter Pack + Sadu senzorov a ďalšie veci či už originál dosku tak aj pár lacných čínskych klonov. Dnes mi to doviezol kurie v takých plastových kufríkoch.

Natom predraženom originále (Audrino UNO R3) sa to plánujem učiť a pri reálnej aplikácii chcem potom používať tie lacné čínske dosky. Už som do toho zainvestoval cca 150 EURO (ak počítam profi spájkovačku, náradie do dielne a profi meracie prístroje (LCR meter, multimeter, osciloskop) tak možno aj 500 euro). Dnes mi priniesol kurier tú základnú sadu. A plánujem si večer začať tutorial.

Velice sa na to teším, kúpil som si to preto lebo sa chcem venovať C++ a low level programovaniu, ale ak som správne pochopil z podobných fór tak audrino je nakoniec v nejakom vlastnom jazyku? Čo je vlastne Cčko a nejaké makrá?

Dá sa pre audrino kódiť aj v normálnom C++? so všetkým čo k tomu patrí (templaty, classy, type traity atď)? lebo ešte som sa na to nepozeral (som v práci), ale už sa na to teším, ak sa to naučím, tak by som to mohol ponúkať ako službu.

Robiť rôzne riěšenia do domu, alebo do auta na zákazku (vrámci voľného času) A neskôr keby sa mi v tom darilo tak by som nahradil moj terajší zdroj obživy (FE development v ReactJS), tým čo ma baví naj-viac (elektronika a low level programovanie v C++).

80
Vývoj / Re:C++ downcast this v předkovi na potomka
« kdy: 15. 02. 2021, 22:02:10 »
Ďakujem Vám všetkým za odpovede. Aj za tipy a príklady idem ich vyskúšať.

Že derived je nullptr by som si ani nevšimol, keby ste ma na to neupozornili. Mal som si to najprv vydebugovať.  Ale najhoršia je tá logická chyba: snaha volať virtuálne metódy z predka, keď ešte ani ten nebol vykonštruovaný.

Predávať to cez konštruktor ma tiež napadlo, ale popravde hľadal som riešenie ako sa tomu vyhnúť.

81
Vývoj / C++ downcast this v předkovi na potomka
« kdy: 14. 02. 2021, 15:32:43 »
Ahojte akým spôsobom získam inštanciu potomka v predkovi? Reálny príklad by mal logovať exceptiony ale to sem nebudem dávať. Urobil som zjednodušený príklad toho čo potrebujem:

Kód: [Vybrat]
class Base
{
public:
Base()
{
std::cout << "type: " << typeName(); // tu chcem mat logovanie typu
}

virtual std::string typeName() const
{
return typeid(*this).name();
}
};

class Child : public Base
{
public:
using Base::Base;
};

auto child1 = Child(); // vypise sa "type: class Base"
auto child2 = std::make_shared<Child>(); // vypise sa "type: "type: class Base"

a ja potrebujem vypisat pre typ Child "type: class Child". Alebo teda kludne moze byt názov typu aj s pointerom.  Chápem že this v predkovi je upacstnué na predka. Dalo by sa to downcastnúť na Child... ale tam už potrebujem názov typu na, ktorý to downcastnem:

Kód: [Vybrat]
template<typename ChildType>
class Base
{
public:
Base()
{
std::cout << "type: " << typeName(); // tu chcem mat logovanie typu
}
virtual ~Base() = default;

virtual std::string typeName() const
{
const auto derived = dynamic_cast<ChildType *>(const_cast<Base *>(this));
return typeid(derived).name();
}
};

class Child : public Base<Child>
{
public:
using Base::Base;
};
auto child1 = Child(); // vypise sa "type: class Child * __ptr64"
auto child2 = std::make_shared<Child>(); // vypise sa "type: class Child * __ptr64"

Nedalo by sa to nejako downcastnúť aj bez toho aby som musel názov typu predať ako template parameter? Nejako použiť type inference alebo tak?

82
Vývoj / Typescript a Autocomplete
« kdy: 11. 02. 2021, 15:26:00 »
Dobrý deň...

dajme tomu že si vytvorím typový alias:

Kód: [Vybrat]
type Foo = { prop1: string, prop2: string };

A potom mám funkciu:

Kód: [Vybrat]
export function bar(value: Baz): Foo;

ale autocomplete mi zobrazuje ako návratovú hodnotu, názov typového aliasu teda Foo čo je fajn, ale ja by som chcel aby mi autocomplete v niektorých prípadoch miesto toho zobrazil celý literal, teda niečo takéto:

Kód: [Vybrat]
bar(value: Baz): { prop1: string, prop2: string };

Neviete mi poradiť ako na to? Existuje na to nejaké kľúčové slovo, ktoré by VScodu povedalo že tam nechcem zobraziť názov typu, ale typ samotný? Nechem tam použiť inline zápis.

83
Hardware / NVIDIA Jetson Nano
« kdy: 28. 01. 2021, 00:48:34 »
Kúpil som si NVIDIA jetson nano a keďže z iných arm dosiek viem že bootovanie z MicroSD karty je pomalé kúpil som si k nemu aj 250GB SSD a taký ten šuflík aby som to mohol pripojiť cez USB.

Nahodil som si systém na SSD a pre skúšku aj na MicroSD.

Z Micro SD karty to pohode bootuje ale z SSD cez USB vôbec, viete poradiť ako to spojazdniť z SSD? Chcel som sa s tou jetson mašinkou hrať a aj niečo na to naprogramovať ale robiť tieto veci na pomalej MicroSD karte sa mi nechce Micro SD má len 100 MB za sekundu nehovoriac o tom že Micro SD karty toho moc veľa nevydržia a časom môže prísť človek o dáta.

Ale prečo to nejde z toho USB? mám podozrenie že problém je v USB napájaní (aspoň podľa toho čo som teraz rýchlo pogooglil). Okrem toho keď pripojím ten SSD k PC tak na ňom svieti modrá ledka keď ho pripojím k Jetson Nano tak nič nesvieti.

žiaľ mám tu k dispozícii zatiaľ len UK Raspberry PI adaptér pre RPI3 ktorý mám pripojený do siete cez EU reduckiu. Má 2A. Kúpil som si aj dva ďalšie adaptéry ale kupoval som ich v UK takže chvíľu potrvá kým mi ich dovezú. Myslíte že ten 4A vyrieši môj problém? Alebo viete nejaký iný spôsob ako ten SSD rozhchodiť? Ďakujem.

84
Pro zajímavost, v Rustu se to dělá idiomaticky bez korutin i bez implementace vlastního iterátoru. Když už mám iterátor, a chci z něj jen vyfiltrovat některé položky, použiju prostě metodu filter, která vrací jiný iterátor. Ten má v sobě zabalený ten původní a predikát, při iteraci přeskakuje nevyhovující.

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=c93f0ee782a56a5e475f6e26c95229f3

fn filter_files(iter: impl Iterator<Item=String>) -> impl Iterator<Item=String> {
    iter.filter(|item| item.starts_with("Soubor"))
}

fn main() {
    let v = vec!["Soubor XXX".to_string(), "Adresar YYY".to_string()];
    for s in filter_files(v.into_iter()) {
        println!("{}", s)
    }
}


vypíše Soubor XXX.

Hej implementovať vlastný iterátor nemusíte, lebo ho už pred vami implemetovali programátri rustovského ekosystému. filter vracia špeciálny iterátor s názvom Filter ...

Jasně, vždyť přesně to můj příklad dělá :-) filter_files vrací Filter, akorát že ten Filter je tu maskovaný pod typem impl Iterator<Item=...>, abych se nemusel s tím typem vypisovat, a taky v budoucnu umožnil eventuelní změnu implementace bez narušení kompatibility typů funkce..

Jasné chápem

86
Pro zajímavost, v Rustu se to dělá idiomaticky bez korutin i bez implementace vlastního iterátoru. Když už mám iterátor, a chci z něj jen vyfiltrovat některé položky, použiju prostě metodu filter, která vrací jiný iterátor. Ten má v sobě zabalený ten původní a predikát, při iteraci přeskakuje nevyhovující.

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=c93f0ee782a56a5e475f6e26c95229f3

fn filter_files(iter: impl Iterator<Item=String>) -> impl Iterator<Item=String> {
    iter.filter(|item| item.starts_with("Soubor"))
}

fn main() {
    let v = vec!["Soubor XXX".to_string(), "Adresar YYY".to_string()];
    for s in filter_files(v.into_iter()) {
        println!("{}", s)
    }
}


vypíše Soubor XXX.

Hej implementovať vlastný iterátor nemusíte, lebo ho už pred vami implemetovali programátri rustovského ekosystému. filter vracia špeciálny iterátor s názvom Filter a ten je natoľko obecný (keďže obsahuje predikát) že sa dá použiť všade kde sa niečo filtruje, aspoň teda ak správne čítam zdroják:

url=https://doc.rust-lang.org/nightly/src/core/iter/adapters/filter.rs.html

Podobne to funguje aj v LINQ (v C# a F#) cca 15 rokov: Seq.filter a (F#)Enumerable.Where (C#) vracaju WhereEnumerableIterator a WhereIterator. Tu je zdroják... funkcia filter Where je hneď na začiatku:

Edit: nie filter ale Where pletie sa mi to lebo Seq.filter je vlastne alias pre Enumerable.Where a Seq.map je niečo ako alias pre Enumerable.Select

https://referencesource.microsoft.com/#system.core/system/linq/Enumerable.cs

Mimochodom aj v java to má podobne (odkedy tam pridali streamy)

Aj STL či boost má funkcie z rovnakého súdka napr std::copy_if je náhrada za filter a std::transform náhrada za map etc aj keď iterárátormi sa tam pracuje o niečo krkolomnejšie používajú sa tam insertery a podobne, ale zase sa to dá aj viac customizovať. Ja som pre C++ hľadal niečo viac sexy, čo funguje podobne ako váš príklad z Rustu. Akurát C++ je veľmi konzervatívny jazyk, ktorý pridáva nové vlastnosti pomaly a to až vtedy keď su poriadne odstestované naprieč ostatnými jazykmi. Nepozerá až tak veľmi na sexy zápis, ale skôr performance. A keď sa tam má dostať nejaká nová vlastnosť tak až vtedy keď sa navrhne nejaká veľmi efektívna a dokonale customizovateľná univerzálna implemetácia.

Ale inak ďakujem za vysvetlenie :) Rust je jeden z jazykov, ktorý má do budúcna potenciál možno raz aj nahradiť C/C++

87
Podľa toho čo vidím v zdrojáku directory_iteratora tak by som si asi musel napísať vlastný iterátor.

88
Mám funkciu filesystem::directory_iterator ktorá vracia všetky filesystem entries vrátane files, directories, symlinky a rôzne zariadenia etc.

a ja by som si chcel spraviť 2 helper funkcie:

jedna sa bude volať directory::contained_files vracajúca len súbory vo folderi a druhá directory::contained_directories  vracajúca len foldre.

Ale chcem aby to vracalo zase iterátor (nie kontainer ale iterátor)

viem že v directory_entry má funkcie ktoré vrátia boolean pri is_directory alebo is_regular_file ale ako vrátiť znovu iterátor? V iných jazykoch by som tam hodil cyklus a pri generátoroch a urobil yield alebo použil Seq.filter či LINQ where Ale C++ má korutiny až od verize 20 a tá ešte neni hotová. V mojej preview verzii C++ 20 zatiaľ neni ani typ generator<item_name> ani co_yield takže ako to by som to mal riešiť bez korutín?

89
Ad "bezne ukony" - kdyz mas DT precision nastavenej jinej nez sekundu (cca enum rok/mesic/den/hodina/minuta/sekunda/ms/us/ns), tak tva trida konverti na string (napr. dle ISO) jako kratsi, nebo s 00, nebo se zastupnym znakem? :)

Btw C++ neumi nic mezi private a public? Ja jedu tedy PHP a tam mame "protected", coz je pristupno pro blizke tridy, ale ne pro externi kod.

C++ Umi aj protected... A umí toho ešte oveľa viac. C++ podporuje aj viacnásobnú dedičnosť a dokonca máte k dispozícii aj rôzne typy dedenia https://www.programiz.com/cpp-programming/public-protected-private-inheritance , viete dediť nie len tak ako v iných jazykoch (public dedičnosť), ale môžete dediť aj maximálne do protected časti alebo maximálne do private časti. Akurát ja sa snažím dedičnosť používať podľa možnosti čo najmenej (ak nepotrebujem aby boli typy navzájom kompatibilné). Okrem toho v C++ sa dá kompatibilita medzi typmi zbezpečiť aj inak ako dedičnosťou (napr implicitnou prípadne explicitnou konverziou)

Pred c++20 bohuzel nic ve stl neni. A to co je ve 20 jsem tbh nezkousel(a ani si nebyl jisty, ze se to tam dostalo).

Nicmene, co se tyka praci s datumem. Je tady od toho knihovna: https://github.com/HowardHinnant/date
Ma u toho dokumentaci, ale i prednasku ze cppconu, na to se oplati kouknout.

Ďakujem za tip idem pozrieť. A asi ju aj použijem.

Ono to neni az tak uplne jednoduche, si to delat sam, kvuli vsech moznych prestupnych casovych useku(nejen obcas 29. unor. Je treba pocitat napriklad s prestupnyma sekundama).

Ja som to nechcel delat celé úplne sám, chcel som použiť štandartné C/C++ funkcie a obaliť ich do objektového wrapperu, aby bola práca s dátumom rovnako pohodlná ako práca so štruktúrou DateTime (ktorú poznám z .NETe). Z dátumom som robil už na viacerých platformách (v JSku používam moment, v PHP objekt DateTime) ale najviac mi vyhovuje DateTime z .NETu - ten sa blíži dokonalosti. Ale asi nakoniec použijem tú knižnicu od Howarda Hinnanta

Mimochodom keď už sme pri tých libkách ja som včera (pri hladaní formátovača) našiel zaujímavú formátovaciu libku pre C++ https://fmt.dev/ ktorá vyzerá byť inšpirovaná Rustom a mala by čiastočne nahradiť streamy. Žiaľ tá tiež využíva tm (pri formátovaní času a dátumu)

90
Robím si triedu, ktorá by mala zvládať všetky bežné úkony a konverzie dátumu a času. Pôvodne som si jednu triedu napísal, ale postavil som ju nad štruktúrou tm, ktorú som prasiacky podedil do public časti (urobil som to koli možnosti implicitnej konverzie) a rozšíril ju o helper metódy.

Dedenie premenných, tak aby boli prístupné z vonku nepovažujem za čisté riešenie (imho premenné do public časti nepatria (ak nejde o options objekt), lebo sa tým porušuje zapúzdrenie... takže som dedičnosť chcel nahradiť kompozíciou. A z tm urobiť private member.

narazil som, ale aj na vážnejší technický problém. štruktúra tm má najmenšiu jednotku sekunda. Takže ak DateTime postavím na tm s menším intervalom ako sekunda si neporadí. Rozhodol som s teda, že to celé prepíšem a postavím to nad:

std::chrono::system_clock::time_point a std::chrono::system_clock

ten  si pordí fakt s maličkými intervalmi, akurát nevidím spôsob ako čas naformátovať na string (okrem manuálnej konverzie). C++ 20 by malo obsahovať std::chrono::format akurát moja preview draft verzia C++ 20 std::chrono::format zatiaľ neobsahuje. Ako teda std::chrono::system_clock::time_point prekonvertovať na string ak nemám k dispozícii std::chrono::format? Vygooglil som si nejaké príklady ktoré ale používajú konverziu na tm tomu sa práve chcem vyhnúť. Lebo potom vlastne tým std::chrono::system_clock::time_point nič nezískam . Takže prosím o radu akým spôsobom naformátovať  std::chrono::system_clock::time_point (alebo v horšom prípade aspoň time_t) na string (alebo const char*)? Ale aby sa dala používať presnosť na milisekundy prípadne ešte menej?

Stran: 1 ... 4 5 [6] 7 8 ... 18