Categories
Nezaradené

OrbTk (the RUST GUI)

OrbTk is run natively under REDOX.

After installing everything the examples can be run

cargo run --example widgets --release
Categories
Nezaradené

ReactJS s useContext a useReducer

Vzorec Reducer sa skladá z dvoch častí: z počiatočného stavu a z funkcie, ktorá sa najčastejšie volá dispatch, ale môže mať hocijaké meno.

const initialState = 0;
const reducer = (state, action) => {
  switch (action) {
    case 'increment': return state + 1;
    case 'decrement': return state - 1;
    case 'reset': return 0;
    default: throw new Error('Error message');
  }
};

Počiatočný stav môže byť jednoduchý typ alebo zložitý objekt.

Príklad použitia Reducer vo funkcii:

const Komponent1 = () => {
  const [count, dispatch] = useReducer(reducer, initialState);
  return (
    <div>
      {count}
      <button onClick={() => dispatch('increment')}>+1</button>
      <button onClick={() => dispatch('decrement')}>-1</button>
      <button onClick={() => dispatch('reset')}>reset</button>
    </div>
  );
};

V tomto prípade neprenášam stav do iných modulov, ale len využívam v rámci jednej funkcie, na čo by mi stačil aj useState.

Tu je príklad na reducer, ktorý modifikuje zložitejší objekt a zároveň aj spracovanie chyby:

const initialState = {
  counter1: 0,
  counter2: 0,
};
const reducer = (state, action) => {
  switch (action.type) {
    case 'increment1':
      return { ...state, counter1: state.counter1 + 1 };
    case 'decrement1':
      return { ...state, counter1: state.counter1 - 1 };
    case 'set1':
      return { ...state, counter1: action.count };
    case 'increment2':
      return { ...state, counter2: state.counter2 + 1 };
    case 'decrement2':
      return { ...state, counter2: state.counter2 - 1 };
    case 'set2':
      return { ...state, counter2: action.count };
    default:
      throw new Error('Error message');
  }
};

Tu je použitie vo funkčnom komponente:

const Komponent2 = () => {
  const [state, dispatch] = useReducer(reducer, initialState);
  return (
    <>
      <div>
        {state.count1}
        <button onClick={() => dispatch({ type: 'increment1' })}>+1</button>
        <button onClick={() => dispatch({ type: 'decrement1' })}>-1</button>
        <button onClick={() => dispatch({ type: 'set1', count: 0 })}>reset</button>
      </div>
      <div>
        {state.count2}
        <button onClick={() => dispatch({ type: 'increment2' })}>+1</button>
        <button onClick={() => dispatch({ type: 'decrement2' })}>-1</button>
        <button onClick={() => dispatch({ type: 'set2', count: 0 })}>reset</button>
      </div>
    </>
  );
};

Problém reducerov je, že sú tzv. čisté funkcie (pure functions) pretože nemajú vnútorný stav (stateless). Aby sme zapamätali stav, použijeme Context:

const CountContext = React.createContext();

const CountProvider = ({ children }) => {
  const contextValue = useReducer(reducer, initialState);
  return (
    <CountContext.Provider value={contextValue}>
      {children}
    </CountContext.Provider>
  );
};

const useCount = () => {
  const contextValue = useContext(CountContext);
  return contextValue;
};

V tomto kóde užívateľská funkcia vracia context a ten obsahuje dispatch funkciu aj stav.

Nasledujúci kód ukazuje, ako sa dá využiť Consumer.

const Counter = () => {
  const [count, dispatch] = useCount();
  return (
    <div>
      {count}
      <button onClick={() => dispatch({ type: 'increment' })}>+1</button>
      <button onClick={() => dispatch({ type: 'decrement' })}>-1</button>
      <button onClick={() => dispatch({ type: 'set', count: 0 })}>reset</button>
    </div>
  );
};

 

Pôvodný článok: https://medium.com/crowdbotics/how-to-use-usereducer-in-react-hooks-for-performance-optimization

Categories
Nezaradené

Jednoduché operácie v jazyku R

Po inštalácii prekladača jazyka R otvoríme terminál a spustíme prostredie príkazom R. Pre rozumnú prácu budeme potrebovať nejaké knižnice – na začiatok nainštalujeme:

> install.packages(“tidyverse”)
> install.packages(“readxl”)
> install.packages(“tidyr”)

Jazyk R obsahuje zopár tabuliek (data frames), ktoré nám poslúžia ako skúšobné údaje.  Príkaz data() zobrazí tabuľky a data (mtcars) načíta tabuľku mtcars

> data()

> data (mtcars)

pridajme do mtcars vypočítaný stĺpec

> mtcars$sucin <- mtcars$mpg * mtcars$carb

Ak chceme načítať súbory, buď použijeme kompletnú cestu, alebo nastavíme pracovný adresár:

> getwd()
[1] “/home/dusan”
> setwd(“/home/dusan/r/test”)

Vytlačme si prvých 6 riadkov tabuľky mtcars

> head(mtcars,6)

Stiahnime si z webu nejaký súbor typu csv. Nájdeme si ho tak, že vyhľadávaču Google zadáme ako vyhľadávací riadok:

cars filetype:csv

jeden zo súborov stiahneme a presunieme do adresára test, povedzme, že sa volá cars-null.csv. Natiahneme si ho takto:

> mojeAuta <- read.csv(file=”/home/dusan/r/test/cars-null.csv”, header=TRUE, sep=”,”)

Aby sme natiahli súbor typu Excel, potrebujem najprv stiahnuť a nainštalovať knižnicu readxl, ako sme urobili vyššie a potom ju aktivovať. Buď si nájdeme súbor typu Excel pomocou Googlu alebo si ho vytvoríme v Exceli.

library(“readxl”)

skuskaExcel <- read_excel(“skuska.xlsx”,1, skip=3)

Najmenej práce s čistením (tidy po anglicky; to slovo budeme potrebovať) budeme mať, keď preskočíme všetky riadky so záhlavím tabuľky – napríklad v tomto prípade sme preskočili prvé tri riadky v Exceli a natiahli sme prvý hárok. Že sme uspeli sa dozvieme tak, že sa objavia údaje z nášho súboru vo výpise na konzole. Knižnica xlsx je dosť inteligentná a keď máme dobre pomenované stĺpčeky, tak mená natiahne. Ak nie, tak mená zmeníme príkazom

> colnames(skuskaExcel)[3:4] <- c(“Peter”, “Anton”)

V tomto prípade sa správne natiahli prvé dve mená stĺpčekov, ale tretie a štvrté sme museli zmeniť.

 

 

Categories
Nezaradené

Zmena HDP v závislosti od klimatickej zmeny

Nová štúdia ukazuje na dopad rôznych scenárov vývoja teploty na HDP. Je dostupná na webe:

https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2018EF000922

Categories
Tipy, návody

Cibuľový šalát so sumachom

sumac-lever-1547812_960_720Sumach (anglicky sumac) je populárne populárne korenie na Blízkom a Strednom Východe. Sú to rozdrvené plody sumachu garbiarskeho, ktorý je príbuzný invezívnej rastline, ktorú poznáme z našich záhrad, sumachu pálkovitého. Na Slovensku sa s ním najčastejšie stretneme v kebabárňach, kde s ním stretneme v cibuľovom šaláte.

Categories
Nezaradené

Vitamín D

Facebook-01

 

 

 

 

 

Tablety vitamínu D doporučujú tisícky webových stránok, stovky lekárov a prevažná časť masmédií. Niekedy boli časy, keď som vitamín D jedol, potom nejedol a potom zase jedol. A potom som s tým prestal a asi už definitívne v roku 2016. Prečo?

Categories
Nezaradené

Výsledky krvi

Očakával som, že to bude lepšie. Po dva a pol roku vegánskej (WFPB) stravy som mal dnes nasledujúce hodnoty:

Testosterón celkový 12,37 7,96 – 27,3      nmoll-1
Estradiol ??? 0 – 181      pmoll-1
Vitamín D ???? nad 75      nmoll-1
CHOLESTEROL 6,12 3,20 – 5,17      mmoll-1
HDL 1,24 1,00 – 2,00      mmoll-1
LDL merané 3,34 1,00 – 3,00      mmoll-1
TRIACYLGLYCEROLY 2,94 0,40 – 1,7      mmoll-1
Fosfolipidy 2,82 <3,0      mmoll-1
Glukóza 4,6 <5,6      mmoll-1
HOMA-IR 0,77 <3      

 
 

Categories
Nezaradené

Burka, hidžáb, nikáb

Martin Konvička má pravdu. Chápal by som, keby osemročné dievčatko malo na hlave sito (cedník) alebo kvetináč. To by bol protest ZA SLOBODU nosiť na hlave, čo ma napadne. Nosenie šatky je vyhlásenie: “chcem svoje právo žiť celý život v útlaku a porobe”. Ak si dá žena na hlavu čelenku, je to známka slobody. Ale burka je známka možného násilia a nátlaku zo strany jej komunity. Príliš často je asociovaná s bigotnými názormi na vzdelanie žien, LGBT práva, samostatnosť a všetko to, čo si ženy (áno, aj slovenské) za posledných 150 rokov vydobili. Čítal som, videl som filmy a aj som chvíľu sledoval skupinu na Facebooku, kde ženy písali o tom, ako sú nútené nosiť burku náboženskou políciou. V tej skupine sa iránske ženy fotia prostovlaso a tak, aby ich nikto nevidel. Osobne cítim skôr empatiu s ženami, ktoré sa boja obvinení, že sú kurvy zo strany svojho spoločenstva (opľúvania, pokrikovania na verejnosti, znásilňovania v prípade, že ich nestráži muž) a PRETO tú burku nosiť MUSIA. A preto si myslím, že by sme mali skôr pomôcť ženám tým, že budeme VYNUCOVAŤ nenosenie burky, čo by oslobodilo tie utláčané chudery. Bol som niekoľkokrát v arabských krajinách a čítal som očité svedectvá o tom, ako sa celé lietadlo do Rijádu pár minút pred pristátím prezlečie z krásnych žien s makeupomv džínach do čiernych vriec. Z celej duše sú mi odporné názory “liberálov”, že nosenie burky je sloboda. Nie, nie je. Je to znak otroctva.
Martin Konvička:
Muslimska demonstrace v Rakousku proti zakazu noseni satku. Mala, tak osmileta divenka zahalena v satku drzi ceduli “Chci svou svobodu”. Muze byt neco perverznejsiho?
V Rakousku jiz oznamili planovany zakaz noseni burek na verejnosti (to je takovy to cely zahaleny) a planuje se i zakon, ktery bude zakazovat noseni satku pro divky do 18 let ve skolach. Za me palec nahoru (y) I kdyz opet se jedna o situaci pet minut po dvanacte… zeano.

Categories
Ekonómia

Ropa pohľadom z februára 2018

Hlavná debata ohľadom budúceho vývoja ťažby ropy sa točí okolo cenovej elasticity a EROEI na nekonvenčnej rope.

Categories
Nezaradené

Pokus s indickými egrešmi -aktualizované

Indický egreš, po anglicky Amla alebo Indian goosberry, podľa štúdií znižuje cukor v krvi, cholesterol a tryacyglyceroly. Rozhodol som sa podrobiť svoje telo pokusu s ním.