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 - Mirek Prýmek

Stran: 1 ... 83 84 [85] 86 87 ... 618
1261
Vývoj / Re:Jak funguje Call/CC?
« kdy: 09. 05. 2019, 15:58:50 »
...a ještě ilustrace toho, že kontinuace umožňuje se do jí reifikovaného stavu vrátit:
Kód: [Vybrat]
iex(28)> :mnesia.transaction(fn ->
...(28)>   {rec, cont1} = :mnesia.select(:test, [{:_,[],[:'$_']}], 1, :read)
...(28)>   IO.puts("rec1 = #{inspect rec}")
...(28)>   IO.puts("cont1 = #{inspect cont1}")
...(28)>   {rec, cont2} = :mnesia.select(cont1)
...(28)>   IO.puts("rec2 = #{inspect rec}")
...(28)>   IO.puts("cont2 = #{inspect cont2}")
...(28)>   {rec, cont3} = :mnesia.select(cont1)
...(28)>   IO.puts("rec3 = #{inspect rec}")
...(28)>   IO.puts("cont3 = #{inspect cont3}")
...(28)>   IO.puts("cont2 == cont3 = #{cont2 == cont3}")
...(28)> end)
rec1 = [{:test, :a, 1}]
cont1 = {:mnesia_select, :test, {:tid, 7, #PID<0.100.0>}, :nonode@nohost, :ram_copies, {#Reference<0.3882805345.2162294785.166659>, 161, 1, #Reference<0.3882805345.2162294787.167694>, [], 0}, [], :undefined, :undefined, [{:_, [], [:"$_"]}]}
rec2 = [{:test, :b, 2}]
cont2 = {:mnesia_select, :test, {:tid, 7, #PID<0.100.0>}, :nonode@nohost, :ram_copies, {#Reference<0.3882805345.2162294785.166659>, 162, 1, #Reference<0.3882805345.2162294787.167694>, [], 0}, [], :undefined, :undefined, [{:_, [], [:"$_"]}]}
rec3 = [{:test, :b, 2}]
cont3 = {:mnesia_select, :test, {:tid, 7, #PID<0.100.0>}, :nonode@nohost, :ram_copies, {#Reference<0.3882805345.2162294785.166659>, 162, 1, #Reference<0.3882805345.2162294787.167694>, [], 0}, [], :undefined, :undefined, [{:_, [], [:"$_"]}]}
cont2 == cont3 = true
Navíc protože je to procházení databáze deterministické, platí to cont2 == cont3. Pokud by to byl třeba generátor náhodných čísel v ne-pure jazyce, nemuselo by to nutně platit.

1262
Vývoj / Re:Jak funguje Call/CC?
« kdy: 09. 05. 2019, 15:48:47 »
Kontinuace je prostě funkce typu (A->R)->R, která “vrací” hodnotu zavoláním funkce.
Nejsem si úplně jistej, jestli je na tomhle významu všeobecná shoda (nebo jinak: jestli tohle není příliš úzký význam, někdo by mohl asi říct i "implementace").

Třeba tady http://erlang.org/doc/man/mnesia.html#select-4 se slovo "continuation" používá prostě pro nějakou (neznámou) strukturu (ne nutně funkci), která umožňuje pokračovat v činnosti kdykoli jindy - v tomhle případě pokračovat v paginaci záznamů z DB.

Důkaz, že to skutečně není funkce:
Kód: [Vybrat]
$ iex
Erlang/OTP 21 [erts-10.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]

Interactive Elixir (1.6.6) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> :mnesia.create_schema([Node.self])
:ok
iex(2)> :mnesia.start()
:ok
iex(3)> :mnesia.create_table(:test,[])
{:atomic, :ok}
iex(4)> :mnesia.dirty_write({:test, :a, 1})
:ok
iex(5)> :mnesia.dirty_write({:test, :b, 2})
:ok
iex(6)> :mnesia.dirty_match_object({:test, :_, :_})
[{:test, :b, 2}, {:test, :a, 1}]
iex(7)> :mnesia.transaction(fn ->
...(7)>   {rec, cont} = :mnesia.select(:test, [{:_,[],[:'$_']}], 1, :read)
...(7)>   IO.puts("rec1 = #{inspect rec}")
...(7)>   IO.puts("cont1 = #{inspect cont}")
...(7)>   {rec, cont} = :mnesia.select(cont)
...(7)>   IO.puts("rec2 = #{inspect rec}")
...(7)>   IO.puts("cont2 = #{inspect cont}")
...(7)> end)
rec1 = [{:test, :a, 1}]
cont1 = {:mnesia_select, :test, {:tid, 4, #PID<0.100.0>}, :nonode@nohost, :ram_copies, {#Reference<0.3882805345.2162294785.166659>, 161, 1, #Reference<0.3882805345.2162294785.166789>, [], 0}, [], :undefined, :undefined, [{:_, [], [:"$_"]}]}
rec2 = [{:test, :b, 2}]
cont2 = {:mnesia_select, :test, {:tid, 4, #PID<0.100.0>}, :nonode@nohost, :ram_copies, {#Reference<0.3882805345.2162294785.166659>, 162, 1, #Reference<0.3882805345.2162294785.166789>, [], 0}, [], :undefined, :undefined, [{:_, [], [:"$_"]}]}
{:atomic, :ok}

1263
Vývoj / Re:Jak funguje Call/CC?
« kdy: 09. 05. 2019, 14:54:33 »
V Ruby muzete Call/CC ignorovat. Je to prekonany koncept.
Ruby muzete ignorovat. Je to prekonany koncept.

1264
Bazar / Re:Prodám Odroid HC1
« kdy: 06. 05. 2019, 20:39:58 »
$87 = $49(HC1)+$12(zdroj 5V/6A)+$4(CaseVrsek)+$2.5(RTC)+$19.5(postovne)
Áha, tak to je vtipný teda, taková skládačka a vějička na zákazníky :)

Stejně ale, clo by se mělo platit až od ceny >EUR150, ne? To pořád není.

1265
Bazar / Re:Prodám Odroid HC1
« kdy: 06. 05. 2019, 19:19:08 »
Objednaval jsem primo od vyrobce za 2800,- se clem, dph a postovnym.
Jak se z $49 stalo 2800Kč?

Tady https://ebay.us/LdZfRa se dá koupit za nějakých 1500Kč i s poštovným. Clo se (AFAIK) z takové částky neplatí. DPH možná jo, možná ne, jak se celníkům zachce. S ním by to bylo cca 1800Kč.

1266
/dev/null / Re:Jak by se dalo koncipovat nové diskuzní forum?
« kdy: 04. 05. 2019, 00:11:58 »
A o cem je tady cely tento topic? O tom ze nam to vadi, jak to provozovatel dela. Tak snad se ti to kolecko spojilo konecne dohromady a nebudes uz argumentovat tim, ze "blogove prispevky" nepatri na diskuzni forum.
Nemám s tím sebemenší problém. forum.root.cz vypadá tak, jak ho root.cz chce mít, protože je na jeho doméně a platí jeho provoz. Nelíbí se ti to, založil sis vlastní forum na vlastní doméně. Jak toto forum bude vypadat, budeš určovat ty. To je naprosto v pořádku.  Bude-li SvobodnySw.cz fantastické forum, které nabídne přesně to, po čem lidi touží, forum.root.cz postupně zahyne a SvobodnySw.cz převezme jeho roli. Bezva. Není potřeba o ničem a proti ničemu argumentovat, volí se nohama (klikama).

1267
/dev/null / Re:Jak by se dalo koncipovat nové diskuzní forum?
« kdy: 03. 05. 2019, 20:15:15 »
Ja bych rekl, ze forum v zadnem pripade neni definovano tak, ze
Forum je definovano tak, jak ho definuje jeho provozovatel. A Root zjevne "blogove" prispevky nechce.

1268
/dev/null / Re:Jak by se dalo koncipovat nové diskuzní forum?
« kdy: 03. 05. 2019, 09:04:16 »
Root už se odkopal se svými úmysly, když např. smazal téma:
[...] Stackoverflow, které jsou na vemi vysoké úrovni
Moc tě nechápu. SO je moderované o několik řádů drsněji než Root. Dotazy bývají zamčené jenom proto, že na podobný dotaz už odpověď zazněla.

To téma, které ti vadí, že redakce zamkla, by se na SO ohřálo asi tak vteřinu :) Jeho hlavní problém je v tom, že má formu povzdechnutí si na blogísku, není to žádný dotaz do fóra. Přečti si třeba http://www.catb.org/~esr/faqs/smart-questions.html#before - to zmíněné téma je přesný opak všeho, co se tam píše, přesný opak smysluplného dotazu / námětu k diskusi.

1269
/dev/null / Re:Založení nového a svobodného diskuzního fora
« kdy: 02. 05. 2019, 14:53:49 »
Proto zakládám tuto diskuzi abych viděl, jaký názor na to komunita má, jak moc nové a tentokrát už svobodné forum chce, čeho se obává, zda-li věří v případný úspěch.

https://forum.root.cz/index.php?topic=20706.msg306635#msg306635

1270
Vývoj / Re:Výběr MCU ARM Cortex M0/0+/4? konkrétně
« kdy: 30. 04. 2019, 08:26:39 »
ATSAM21D - Atmel Studio a další  (ATSAM21L)
Jenom technická: SAMy se značí ATSAM<řada><model><varianta>, takže je to ATSAMD21[xx] a ATSAML21[xx]. Googlil bych ale spíš "SAM D21".

1271
Vývoj / Re:Výběr MCU ARM Cortex M0/0+/4? konkrétně
« kdy: 29. 04. 2019, 11:43:27 »
Nejlevnější blue pill stojí s dopravou jako nedávno zavedené zlevněné poštovné v TME - něco přes 40 Kč.
Případně pokud by se někomu nechtělo čekat, dá se i v ČR koupit za pořád ještě velice rozumnou cenu, třeba tady: https://laskarduino.cz/vyvojove-desky/230449-klon-bluepill-arm-stm32-stm32f103c8-vyvojova-deska.html (s tímhle obchodem nemám nic společného, ale občas tam nakupuju, můžu vřele doporučit, jsou skvělí)

1272
Software / Re:Vlastnoruční podepisování přes tablet
« kdy: 29. 04. 2019, 11:39:21 »
Je to osoba, která už je ztotožněná [...] v případě banky
Asi mi něco uniklo, ale kdo tady kdy mluvil o bance? O předkládání opisování údajů z dokladu totožnosti?

1273
Software / Re:Vlastnoruční podepisování přes tablet
« kdy: 28. 04. 2019, 20:50:47 »
K tomto tématu a žvástům o nulové právní váze "obrázku podpisu": po signpadu nešmrdlá anonymní bezďák přišedší z ulice. Podpis na něm píše osoba v rámci právního aktu podpisu dokumentu PO OVĚŘENÍ TOTOŽNOSTI pomocí průkazu totožnosti, a navíc, pokud jste ještě nikdy nebyli v posr# bance, většinou pod kamerou.
To mluvíš o čem? OP snad řeší situaci v bance!?

Rozčiluješ se, že diskuse tady stojí za prd a přispěješ k ní tímhle? Nechápu.

1274
Vývoj / Re:Výběr MCU ARM Cortex M0/0+/4? konkrétně
« kdy: 28. 04. 2019, 20:31:45 »
P.S. pro základní info o RTOSech bych celkem doporučil tenhle podcast: https://soundcloud.com/hwdevpodcast/7-rtosy-planovace-tasky Rozebírají to docela pěkně, srozumitelně a věcně.

1275
Vývoj / Re:Výběr MCU ARM Cortex M0/0+/4? konkrétně
« kdy: 28. 04. 2019, 20:25:21 »
Jak funguje abstrakce HW RTOS?
Abstrakce HW (HAL) a RTOS jsou principielně dvě různé věci i když jsou platformy, které poskytují oboje. HAL ti poskytuje nějakou abstrakci nad periferiemi (seriák, GPIO, ADC...) aby se snadněji přecházelo mezi různými hw platformami (ve světě Arduino třeba digitalWrite() ) a RTOS je spíš o procesech, alokaci paměti, předávání zpráv, synchronizačních primitivech apod.

Chápu, že pro multitasking může být výhodné než časovat každou věc přes millis() i když v mých projektech to zvládám a myslím že tím mám větší kontrolu.
Mně osobně RTOS-styl po zkušenostech s Arduinem docela hodně příjemně překvapil hlavně tím, že umožňuje kód dobře strukturovat do nezávislých/autonomních bloků (procesů), které spolu komunikují pomocí posílání dobře definovaných zpráv. To je styl programováním, kterej je mi hodně blízkej (můj oblíbenej jazyk je Elixir, kterej je přesně na tomhle založenej).

S millis si můžeš vystačit, ale jakmile těch nezávsilých entit máš víc a ještě třeba několik z nich jsou stavové automaty, ještě nedejmetkopřírodo volitelně zapínatelné, začne být kód postavený nad časovacím mainloopem těžko udržovatelný a člověk musí hodně dávat pozor, aby neskončil s neudržovatelným gulášem (v případě mainloopu) nebo callback peklem (v případě použití nějakého jednoduchého kooperativního plánovače).

Já třeba hodně dělám všelijaké bezdrátové serepetičky, kde čip má jedno rádio, ale můžou k němu být připojené různé sensory (volitelně) a jakmile jsem těch sensorů měl víc, začal být ten mainloop přístup nepřiměřeně náročný na údržbu a v podstatě jsem musel :) přejít na RTOS (na ARMech) nebo aspoň na callbackový plánovač (na Atmegách).

Chápu správně že rtos mívá nějaké gui pro rychlé nastavení, tím se vygeneruje vlastní kód který lze pak třeba ještě doupravit třeba co se týče taktovací frekvence?
Nějaké GUI nějaký RTOS možná má, ale bude to spíš výjimka (trochu zbytečný luxus). U FreeRTOSu si prostě v jednom .h souboru nastavíš volby pomocí proměnných a je to. Viz např. https://github.com/maniacbug/FreeRTOS/blob/master/FreeRTOSConfig.h

RTOS se v projektu použije jako knihovna, není potřeba generovat žádné stuby nebo tak něco.

Mělo by třeba smysl použít rtos jen s jednou úlohou (ta už by si pořešila svoje časování)?
Samo o sobě to smysl spíš nedává, ale já bych to tak udělal, protože je mi jasné, že projekt stejně časem nabobtná a mainloop přestane být cool. Než to pak přepisovat pro RTOS, což je dost pracné a otravné, je lepší to pro něj napsat rovnou :)

Chtěl bych naprogramovat spíš univerzální jádro (možná s možností přejít na různé MCU, ale hlavně řešící ty problémy co jsou třeba výdy řešit, WDT, ISR, startování, update FW), potom funkce obsluhující konkrétní hw (komunikační moduly, SDkartu, další periferie) a tím mít připraveno na konkrétní funkce pro daný projekt.
Velkou část z tohodle vůbec nemusíš řešit, to ti právě řeší ten HAL.

No možná rovnou koupit konkrétní MCU v TME a udělat odboku nějaký vývojový modul sám což asi vyjde po všech stránkách lépe.
Naopak to vyjde po všech stránkách hůř - je to naprosto zbytečná práce. A je to hodně práce. Pokud se vyloženě návrhem hw nekocháš, tak bych to rozhodně nedělal a šel bych na to přesně opačně: kup si za pár švestek třeba ten Blue Pill, k němu nějaký příklad s FreeRTOSem a naopak začni programovat okamžitě, nezdržuj se s hw.

Všude se píše jaký je odběr proudu MCU při různých sleep režimech, kde zjistit nebo podle čeho odhadnout odběr bez uspávání?
ARMy mívají power domains - tj. můžeš různé periferie, časovače, občas i speciální paměti apod. vypínat a zapínat. U některých čipů i s docela malou granularitou. Takže spotřeba se odvíjí od toho, co všechno můžeš vypnout a vypneš.

Stran: 1 ... 83 84 [85] 86 87 ... 618