Diskuze: Porovnání dvou polí
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 11 zpráv z 11.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Dá sa predpokladať že za položkou zo stylesForFind napr teda ".main" pôjde množinová zátvorka alebo medzera (čiže ".main " alebo ".main{")?
ne zde bude vždy jen buď .main nebo v případě id #main nikdy by se tam nemělo dostat nic jiného (bez mezer nebo jiných znaků)
Sorry zabudol som dopísať, som myslel že ak zo stylesForFind zoberem položku .main tak v allStyles bude treba nájsť také .main za ktorým ide množinová zátvorka či nie? Ak hej tak len z allStyles vyhodíš všetky medzery a budeš hľadať položky stylesForFind[i] + "{"
Nevím, ale myslím, že na takovýto druh příkladu by se ideálně hodila databáze nebo dobře nastylizovat .property file případně nějaké XMLko. Každopádně takto by ses za chvíli mohl dostat do situace, kdy místo obecného pole vytvoříš dvě naprosto specifické instance polí a už to nebude objektové. Tuším že děláš nějakou apku, kde budeš mít možnost vybrat styl z nějakého listu, ale kór když je to takhle specifické, tak bych to řešil spíš přes MySQL, to je v těchto případech mocnější. Java by to sice dokázala, ale musel bys fakt přemýšlet nad sebemenší odlišností, která by mohla nastat.
No to je otázka ...
Ve zkratce jde o app které řeknu chci tenhle prvek (tím se rozumí nějaký
blok html kodu)
Z kterého já vezmu všechny css třídy a id které pak vyhledam v stylech
dané stránky
Takže teď mám všechny třídy které chci
A mám celé css dane stránky
Výsledek by měl být jen css pro prvek který hledám to k tomu co by to
mělo být za app
Snad je to alespoň trochu srozumitelné
Nicméně rád mých si poradil s javou než to cpát do db tam bych mimochodem řešil asi podobný problém nicméně dik za názor popremyslim o tom ...
Ad omlouvám se za občasnou diakritiku jsem na mobilu
Myslím, že jádro problému je v tom, že řetězcová reprezentace
String[] allStyles= {".main { background: #fff; }", "#selection{ font-size:1em; }"," .main-footer{ width: 100%; } "};
není pro tvoji úlohu příliš vhodná.
Předpokládám, že už teď máš funkční kód, který z CSS souboru
vytvoří pole allStyles.
Zkusil bych jít ještě dál a napsat něco, co bude vracet nějakou
složitější strukturu.
Syntaxe CSS je popsána např. zde:
https://www.w3.org/…ss-syntax-3/
Pokud nechceš psát vlastní CSS parser, můžeš zkusit použít nějakou
knihovnu, např.
CSS Parser
http://cssparser.sourceforge.net/
Ahoj díky za reakci ... pole allstyles je pole vytvořené pomocí knihovny
cssparser kterou zminujes... možná jsem nečetl dost pozorně dokumentaci ale
nepodařilo se mi zjistit jak pomoci ní ne jen vytvořit pole z css stylu ale i
v něm nějakým způsobem vyhledávat ... očekával bych něco jako
.getClassName(string)
Nebo něco takového ale prostě se mi to nepodařilo v dokumentaci
najít...
Jestli s knihovnou máš nějaké zkušenosti budu rád když mě vyvedes z omylu ☺
Vyhledávání knihovna nepodporuje, ale k selektorům se dá dostat takto:
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import org.junit.Test;
import org.w3c.css.sac.InputSource;
import org.w3c.css.sac.Selector;
import org.w3c.css.sac.SelectorList;
import org.w3c.dom.css.CSSRule;
import org.w3c.dom.css.CSSRuleList;
import org.w3c.dom.css.CSSStyleSheet;
import com.steadystate.css.dom.CSSStyleRuleImpl;
import com.steadystate.css.parser.CSSOMParser;
import com.steadystate.css.parser.SACParserCSS3;
public class CssParserTest {
@Test
public void test() throws IOException {
InputStream in = getClass().getResourceAsStream("bootstrap.css");
InputStreamReader reader = new InputStreamReader(in, StandardCharsets.UTF_8);
InputSource source = new InputSource(reader);
CSSOMParser parser = new CSSOMParser(new SACParserCSS3());
CSSStyleSheet sheet = parser.parseStyleSheet(source, null, null);
CSSRuleList rules = sheet.getCssRules();
for (int ruleIndex = 0; ruleIndex < rules.getLength(); ruleIndex++) {
CSSRule rule = rules.item(ruleIndex);
if (rule.getType() == CSSRule.STYLE_RULE) {
CSSStyleRuleImpl styleRule = (CSSStyleRuleImpl) rule;
SelectorList selectors = styleRule.getSelectors();
for (int selectorIndex = 0; selectorIndex < selectors.getLength(); selectorIndex++) {
Selector selector = selectors.item(selectorIndex);
System.out.println(selector);
System.out.println(styleRule.getStyle().getCssText());
System.out.println();
}
}
}
}
}
Představoval jsem si to tak, že bych selektory vložil do nějaké datové struktury a vyhledával v ní.
Zobrazeno 11 zpráv z 11.