Rozdíl mezi klíčovými slovy intitle a allintitle při googlování

inititle
Hledájí se výrazy v titulku. Pokud je slov více, první výraz musí být v titulku, ostatní mohou být v textu.

allintitle
Hledají se výrazy v titulku, kdy všechny výrazy se v titulku musí nacházet.

Pokud použijeme intitle a allintitle s jedním hledaným výrazem, výsledek je stejný.

google_hacking_intitle_vs_allintitle

 

google_hacking_intitle_vs_allintitle02

Rozdíl nastává, když použijeme více výrazů. V případě intitle stačí, kdy první hledaný výraz je v titulku, ostatní se mohou nacházet jinde v textu. V připadě allintitle musí být všechny výrazy v titulku.

google_hacking_intitle_vs_allintitle03

 

google_hacking_intitle_vs_allintitle04

Prohlížení .jar souborů

Soubor .jar obsahuje zkomprimované soubory typu class a další zdroje. Používá se pro zabalení všech souborů potřebných pro běh Java aplikace. Tento soubor je zkomprimovaný a lze jej bez problémů otevřít například v nástroji 7-Zip. Obsahuje ale soubory .class, což jsou soubory obsahující bytecode.

java decompiler 01

Pokud si chcete takový soubor prohlédnout v čitelné (pro programátora) formě, můžete použít například Java Decompiler. Po jeho otevření stačí vybrat .jar (pro otevření celé Java aplikace) nebo .class soubor a Java Decompiler je dekompiluje a zobrazí jejich obsah. Na podtržení třídy se lze prokliknout.

java decompiler 02

Horor se Student Agency

Pro ty, kteří se společností Student Agency (nyní RegioJet) jezdí, se nejedná o nový film přístupný v multimediálních autobusech ve stylu Fun & Relax, ale o vyjádření kvality služeb na cestě z Prahy do Brna. Tento příspěvek popisuje cestu v pátek 5. srpna roku 2016 a je vyjádřením frustrace nad klesající úrovní služeb této, mnou kdysi velmi oblíbené, společnosti.

Představte si, že si v restauraci objednáte a zaplatíte řízek s bramborem. Číšník vám přinese suchý chleba. Když si dovolíte vyjádřit svoji nespokojenost a upozornit na to, že jste si zaplatili za něco jiného, je vám řečeno, že buď to pojíte, nebo nic nedostanete. Zdá se vám to v dnešní konkurenční době nemožné? Vítejte na palubě Student Agency.

RegioJet

Výše uvedený pátek jsme se ženou měli zarezervována sedadla v zadní části autobusu ve stylu Fun & Relax. To ve zkratce znamená, že takovém autobuse je internet, obrazovka pro každého cestujícího, roznáší se denní tisk a občerstvení. Žena potřebovala internetové připojení k tomu, aby mohla dodělat nějaké věci do práce a já se rád během cesty koukám na seriály. Když jsme přišli na autobusové nádraží Florenc, na prvním nástupišti, odkud jsme měli odjíždět, žádný žlutý autobus nestál. Zašli jsme tedy k nejbližšímu žlutému autobusu a slušně se zeptali stewarda, zda by nám mohl poradit. Steward nás dosti břitce odbyl, že toto není nástupiště jedna. Když jsem mu na to odvětil, že to vím, ale že na jedničce žádný žlutý bus není, opět nepříjemně ve stylu „neotravuj mě“ odpověděl, ať se tam jdeme zeptal.

Na prvním nástupišti jsme našli dvě stewardky. Na dotaz na náš spoj nás nasměrovali do běžného autobusu a na naši námitku odpověděli, že se omlouvají, ale nic lepšího není. Chvíli jsme v autobuse seděli, když k našemu místu přišel jiný pár, že mají stejná čísla sedadel. Zvedli jsme se a společně vyšli ven za stewardkou nastalou situaci řešit. Ta na mě s ženou vyštěkla, že máme jít na ta sedadla kam nás poslala a ne na ty, které jsme si zarezervovali. Na to žena odvětila, že nás poslala právě na ta sedadla. Stewardka se ani neomluvila, zadívala se do svých papírů a poslala nás na dvě nesousedící sedadla. Čeho je moc, toho je příliš. Milé slečně jsem řekl, že jsem si zaplatil za určitou kvalitu a tu požaduji a navíc se ženou chceme samozřejmě sedět spolu. Na to nám stewardka lehce hysterickým hlasem oznámila, že když se nám to nelíbí, tak nastoupit nemusíme a lístky nám propadnou. Požadoval jsem tedy kontakt na nějakou zodpovědnou osobu, načež jsem se dočkal opět odpovědi, když se vám to nelíbí nenastupujte, ale jízdné vám nevrátíme. Na toto téma jsme se přeli několik minut, než druhá stewardka navrhla, že se půjde zeptat k jinému autobusu, který také odjížděl do Brna. Odběhla a vrátila se s tím, že mají místo a vezmou nás. Jen to dopověděla, ten druhý autobus odjel. První, lehce hysterická stewardka, nakoukla do svého autobusu a zjistila, že se někdo nedostavil a dvě sedadla vedle sebe jsou volná. Tak jsme alespoň mohli sedět spolu. Pokud jste zvyklí na denní tisk, tak ani ten nebyl k dipozici. Pouze jsme dostali na výběr mezi tři týdny starým výtiskem Ženy a život a jiným ženským bulvárním časopisem.

Na závěr chci uvést, že chápu, že může dojít k závadě, kdy autobus vyšší úrovně je nahrazen něčím jiným. Co ale nechápu je výše popsané jednání personálu. Neochota, nepříjemnost, neprofesionalita. Dále mě šokovalo, že takováto společnost nemá zvládnuté a zažité postupy, jak v takovýchto případech postupovat. Omluva a občerstvení zdarma, popřípadě sleva či nějaká drobnost je zcela běžným řešením, se kterým jsem se setkal u jiných společností. Místo toho nám bylo oznámeno, že buď toto nebo máme smůlu.

Spring jednoduše 4. díl

Spring dokáže také vytvořit instanci anotované třídy a přiřadit ji do proměnné datového typu rozhraní. Více v následujícím príkladu. Máme rozhraní MyService a dvě třídy, které toto rozhraní implementují: MyOracleServiceImpl a MyMicrosoftServiceImpl. Podle toho, která třídu bude mít anotaci, ta se použije.

│   pom.xml
│
├───src
│   ├───main
│   │   └───java
│   │       └───cz
│   │           └───vitfo
│   │               └───spring02
│   │                   │   Main.java
│   │                   │   MyService.java
│   │                   │
│   │                   └───impl
│   │                           MyMicrosoftServiceImpl.java
│   │                           MyOracleServiceImpl.java
│   │
│   ├───resources
            beans.xml

Soubory pom.xml a beans.xml zůstávají stejné jako v předchozím příkladu.

MyService.java

public interface MyService {

	public String getServiceName();
}

MyOracleServiceImpl.java

import org.springframework.stereotype.Service;

import cz.vitfo.spring02.MyService;

@Service
public class MyOracleServiceImpl implements MyService {

	public String getServiceName() {
		return "ORACLE";
	}
}

MyMicrosoftServiceImpl.java

import cz.vitfo.spring02.MyService;

public class MyMicrosoftServiceImpl implements MyService {

	public String getServiceName() {
		return "MICROSOFT";
	}
}

Main.java

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main 
{
    public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
		
		MyService ms = context.getBean(MyService.class);
		
		System.out.println(ms.getServiceName());
	}
}

Pokud aplikaci spustíme, vypíše se řetězec ORACLE. Sice existují dvě implementace, ale pouze MyOracleServiceImpl má anotaci @Service. Proto se použije a přiřadí do proměnné MyService ms. V případě, že bychom anotovali třídu MyMicrosoftServiceImpl, vypsal by se řetězec MICROSOFT. Pozor, není možné mít anotace na obou třídách. V tom případě by došlo k výjimce.

Exception in thread "main" org.springframework.beans.factory.NoUniqueBeanDefinitionException: 
  No qualifying bean of type [cz.vitfo.spring02.MyService] is defined: expected single matching bean but found 2: myOracleServiceImpl,myMicrosoftServiceImpl

Enum: od jednoduchého po víceparametrický

Enum je výčtový typ. Představuje omezený výčet hodnot. Enum nemusí představovat pouze název, ale též hodnoty.

Jednoduchý bezparametrický enum.

public enum Country {	
  	CZ, SK, EN
}

Volání

System.out.println(Country.CZ.name());

Výsledek

CZ

Enum s jením parametrem

public enum Country {	
	CZ(1), 
	SK(2), 
	EN(3);
	
	private int code;
	
	Country(int code) {
		this.code = code;
	}
	
	public int getCode() {
		return code;
	}
}

Volání

Country sk = Country.SK;
System.out.println(sk.name());
System.out.println(sk.getCode());

Výsledek

SK
2

Enum s několika paramatery

public enum Country {	
	CZ(1, "Česko", "Česká republika"), 
	SK(2, "Slovensko", "Slovenská republika"), 
	EN(3, "Velká Britanie", "Spojené království Velké Británie a Severního Irska");
	
	private int code;
	private String popis;
	private String popisDlouhy;
	
	Country(int code, String popis, String popisDlouhy) {
		this.code = code;
		this.popis = popis;
		this.popisDlouhy = popisDlouhy;
	}
	
	public int getCode() {
		return code;
	}

	public String getPopis() {
		return popis;
	}

	public String getPopisDlouhy() {
		return popisDlouhy;
	}
}

Volání

Country en = Country.EN;
System.out.println(en.name());
System.out.println(en.getCode());
System.out.println(en.getPopis());
System.out.println(en.getPopisDlouhy());

Výsledek

EN
3
Velká Britanie
Spojené království Velké Británie a Severního Irska