úterý 26. října 2021

Web scraping | Těžíme data z webu

Publikoval jsem videokurz, celkem deset videí (česky) s názvem "Web scraping | Těžíme data z webu". Jedná se o praktický návod, jak získat data z webových stránek.

Všechny použité nástroje jsou zdarma a obejdeme se bez programování.

Pokud vás toto téma zajímá, videa najdete na Youtube, na mém kanálu, v playlistu webové a mobilní aplikace: http://jdem.cz/fgt673



pátek 6. srpna 2021

 PWA aplikace: uživatelské nastavení jména a ikony před instalací

To máte tak: mám rád webové/mobilní aplikace a obzvlášť ty PWA. Jak z pohledu uživatele tak i z pohledu vývojáře.

Jako uživatel již naprogramované PWA aplikace nemůžu nijak ovlivnit její název a ikonu, které se použijí při instalaci na tabletu/telefonu s Androidem a zobrazí se na ploše (domovské obrazovce).

Existuje dost dotazů na diskuzních fórech vývojářů, zda a jak je možné některé parametry (aspoň ikonu) nastavit dynamicky. Možné to je, a jde to slušně v případě generování souborů na webu.

Ovšem, pokud máme stránky na servru ve statické podobě, tj. již vygenerované, nejde to. Nebo velmi, velmi komplikovaně.

Podíval jsem se tomuhle problému na zoubek, vyšel jsem z práce a zkoumání předních vývojářů a hle: dal jsem dohromady funkční postup, jak toho docílit.

Postup je vlastně určen pro vývojáře, protože ten musí tyto kroky implementovat, aby následně nabídl tuto možnost uživateli.

Stačí tři kroky:
  • vytvořit formulář, ve kterém si uživatel nastaví hodnoty dle svých preferencí (jméno aplikace a její ikonu)
  • získání těchto hodnot JS skriptem a předání jako parametry v url adrese PWA aplikaci (na kterou se přesměruje)
  • v PWA aplikaci se nejprve tyto parametry použijí v JSON objektu a ten se pak injektuje jako manifest.json v PWA aplikaci
Zní to složitě? Možná, ale nic na tom není, implementace je opravdu jednoduchá. Publikoval jsem k tomuto tématu článek, kde je vše vysvětleno včetně odkazu na funkční řešení:

neděle 10. ledna 2021

3x rozšíření pro Google Chrome

Napsal jsem si tři jednoduchý rozšíření pro Google Chrome a to v HTML + CSS + JS. Rozšíření nabízím včetně zdrojových kódů, takže není problém si je upravit pro svoje potřeby.

1. Analog Time

Jak už název napoví, zobrazí čas na analogových ručičkových hodinách. Snadno se dá modifikovat zejména barevné podání hodin, vše je vysvětleno ve videu:


2. Digital Time

Tohle rozšíření zobrazí čas digitálně; opět je možné ho barevně modifikovat, je k dispozici zdrojový kód.



3. Battery

Jednoduché rozšíření, které zobrazí procento nabití baterie v notebooku.





úterý 8. srpna 2017

Mobilní aplikace: Chemické názvosloví

Měl jsem na Google Play aplikaci Chemické názvosloví. Tuto původní jsem odstranil a nahradil novou aplikací.

Je určena pro výuku a procvičení základního anorganického názvosloví. Obsahuje info o stavbě hmoty, tabulku přípon (-ný, -natý, -itý, ...) a obecná pravidla pro tvorbu českého anorganického názvosloví.

Z názvosloví zahrnuje: oxidy, halogenidy, nitridy, hydroxidy, sulfidy, bezkyslíkaté a kyslíkaté kyseliny. Kromě výukové části nabízí i procvičení formou přiřazení správné koncovky.

Aplikace je zdarma dostupná na Google Play: Chemické názvosloví

A taky vypadá líp než ta předchozí :-)



sobota 5. srpna 2017

Framework7 + VueJS: aplikace Bitcoin price

Jako malé cvičení jsem udělal jednoduchou aplikaci, která zjistí aktuální cenu bitcoinu v dolarech a kurz České národní banky USD/CZK a zobrazí cenu bitcoinu v dolarech a v korunách.

Vizuální část aplikace

Použil jsem aktuální (srpen 2017) verzi 1.6.4 knihovny Framework7. Zobrazí se jen informační pole a tlačítko pro aktualizaci ceny.

Datová část aplikace

Tu jsem napsal ve VueJS 2.4.2 s využitím knihovny vue-resource, která umožní volat API funkce přes http protokol.

Cenu bitcoinu beru z webu coindesk, konkrétně získávám tento JSON. Kurz dolaru beru ze stránek České národní banky, konkrétně tento TXT soubor.

Cenu bitcoinu v USD a CZK zobrazuji bez desetinných míst. Trochu mi dělala problém návaznost získání dat; proto jsem pozdržel volání funkce zjišťující kurz USD/CZK o 0.7 sekundy, aby se nejprve stihla načíst cena bitconu v dolarech. Občas to zazlobí (závisí na okolnostech), pak stačí jen stisknout tlačítko update a mělo by to být OK.

Aplikace

Po spuštění se cena načte automaticky, chyby při získání dat nejsou ošetřeny. Dělal jsem to jen jako lehké cvičení.

(!!!) Aby vám to fungovalo, musíte mít v prohlížeči vyřešeno CORS, např. rozšířením CORS Toggle pro Google Chrome. (!!!)

Zdrojový kód aplikace (HTML + CSS + JS) je k dispozici přes tyto odkazy (stejný obsah):
http://play.ionic.io/app/6cf2fa2867bc
http://play.ionic.io/app/b518c1217666

Pokud si chcete kód upravit, použijte nejprve odkaz Fork v pravém horním rohu - dostanete tak svoji vlastní kopii.

Android aplikace

Pokud z toho chcete udělat androidí aplikaci (a nevíte jak), může se inspirovat mým bezplatným videokurzem Vlastní mobilní aplikace.





sobota 24. června 2017

VueJS 2: píšeme komponentu - grafický přepínač (toggle) v SVG

Napsal jsem si a odladil komponentu sloužící jako přepínač (toggle). Mám pro ni použití ve své aplikaci, kterou píšu s využitím Framework7 a VueJS.

Pro přepínač má Framework7 implementovaný switch:

<div class="item-title label">Switch</div>
<div class="item-input">
  <label class="label-switch">
    <input type="checkbox">
    <div class="checkbox"></div>
  </label>
</div>

Nepodařilo se mi ho upravit podle mých potřeb, proto jsem se rozhodl ho nahradit vlastní komponentou. Pro zamýšlené použití se hodí SVG.

Vue.component("toggle-name", {
  props: {
    value: {
      type: Boolean,
      default: false
    },
    name: {
      type: String,
      default: ""
    },
    coloroff: {
      type: String,
      default: "white"
    },
    coloron: {
      type: String,
      default: "#886aea"
    },
  },
  methods: {
    toggleValue: function(){
      this.value = !this.value;
      this.$emit("update:value", this.value);
    },
  },
  computed: {
    cx: function(){
      return this.value ? 36 : 16
    },
    fill: function(){
      return this.value ? this.coloron : this.coloroff
    }
  },
  template: '<svg @click="toggleValue()" width="52" height="32"><g ><rect x="0" y="0" width="52" height="32" rx="16" ry="16" stroke="lightgray" :fill="fill" /><circle :cx="cx" cy="16" r="16" stroke="lightgray" fill="white"/><text :x="cx" y="22" text-anchor="middle" font-size="16">{{name}}</text></g></svg>'
})


V části props jsou definovány vlastnosti (properties), jako value (hodnota přepínače false/true = off/on), name (jednoznakové jméno, A, B, C, ...), coloron (barva v poloze true), coloroff (barva v poloze false).

V části methods se při přepnutí volá metoda toggleValue, která kromě změny hodnoty emituje událost se změnou (two-way-databinding), aby se změnila i hodnota proměnné, se kterou je přepínač svázán.

V části computed se vypočítá x-ová poloha jezdce - cx, a barva výplně přepínače podle hodnoty (false/true) - fill.

V části template je definován vzhled přepínače, jedná se o grafiku SVG. Přepínač se skládá z obdélníku se zaoblenými rohy a kružnice, která mění svoji polohu v závislosti na stavu přepínače (false/true). Dovnitř kružnice je vepsán název přepínače (jedno písmeno) - name.

V HTML kódu se komponenta použije např. takhle:
<toggle-name :value.sync="A" name="A" class="toggle"></toggle-name>



pondělí 19. června 2017

Framework7 - vlastní build

Nové aplikace už dělám v kombinaci Framework7 (HTML + CSS) a VueJS (JS). 

Framework7 umožňuje provést vlastní build, tj. stručně řečeno nepoužít kompletně celý framework, ale jen dílčí část.

Návod na vlastní sestavení je srozumitelný a snadný, najdete ho v dokumentaci

Vyzkoušel jsem to na malé aplikaci; po náhradě plného F7 za vlastní build obsahující jen základ a po odstranění spouštěcích obrazovek (splash screen) má výsledná aplikace (soubor .apk) jen 200 kB.

Paráda.